Skip to content

Commit 0b99c1f

Browse files
committed
make stochastics optional
1 parent 85023f8 commit 0b99c1f

8 files changed

Lines changed: 145 additions & 103 deletions

File tree

config_src/coupled_driver/ocean_model_MOM.F90

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ module ocean_model_mod
4444
use MOM_tracer_flow_control, only : call_tracer_register, tracer_flow_control_init
4545
use MOM_tracer_flow_control, only : call_tracer_flux_init
4646
use MOM_unit_scaling, only : unit_scale_type
47-
use MOM_variables, only : surface, stochastic_pattern
47+
use MOM_variables, only : surface
4848
use MOM_verticalGrid, only : verticalGrid_type
4949
use MOM_ice_shelf, only : initialize_ice_shelf, shelf_calc_flux, ice_shelf_CS
5050
use MOM_ice_shelf, only : add_shelf_forces, ice_shelf_end, ice_shelf_save_restart
@@ -187,7 +187,6 @@ module ocean_model_mod
187187
!! timesteps are taken per thermodynamic step.
188188
type(surface) :: sfc_state !< A structure containing pointers to
189189
!! the ocean surface state fields.
190-
type(stochastic_pattern) :: stochastics !< A structure containing pointers to
191190
type(ocean_grid_type), pointer :: &
192191
grid => NULL() !< A pointer to a grid structure containing metrics
193192
!! and related information.
@@ -566,7 +565,7 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, time_start_upda
566565
! For now, the waves are only updated on the thermodynamics steps, because that is where
567566
! the wave intensities are actually used to drive mixing. At some point, the wave updates
568567
! might also need to become a part of the ocean dynamics, according to B. Reichl.
569-
call Update_Surface_Waves(OS%grid, OS%GV, OS%US, OS%time, ocean_coupling_time_step, OS%waves)
568+
call Update_Surface_Waves(OS%grid, OS%GV, OS%US, OS%time, ocean_coupling_time_step, OS%waves, OS%forces)
570569
endif
571570

572571
if ((OS%nstep==0) .and. (OS%nstep_thermo==0)) then ! This is the first call to update_ocean_model.
@@ -581,12 +580,12 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, time_start_upda
581580
call step_offline(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp)
582581
elseif ((.not.do_thermo) .or. (.not.do_dyn)) then
583582
! The call sequence is being orchestrated from outside of update_ocean_model.
584-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_coupling, OS%MOM_CSp, &
583+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp, &
585584
Waves=OS%Waves, do_dynamics=do_dyn, do_thermodynamics=do_thermo, &
586585
start_cycle=start_cycle, end_cycle=end_cycle, cycle_length=cycle_length, &
587586
reset_therm=Ocn_fluxes_used)
588587
elseif (OS%single_step_call) then
589-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_coupling, OS%MOM_CSp, Waves=OS%Waves)
588+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp, Waves=OS%Waves)
590589
else ! Step both the dynamics and thermodynamics with separate calls.
591590
n_max = 1 ; if (dt_coupling > OS%dt) n_max = ceiling(dt_coupling/OS%dt - 0.001)
592591
dt_dyn = dt_coupling / real(n_max)
@@ -608,16 +607,16 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, time_start_upda
608607
"THERMO_SPANS_COUPLING and DIABATIC_FIRST.")
609608
if (modulo(n-1,nts)==0) then
610609
dtdia = dt_dyn*min(nts,n_max-(n-1))
611-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dtdia, OS%MOM_CSp, &
610+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dtdia, OS%MOM_CSp, &
612611
Waves=OS%Waves, do_dynamics=.false., do_thermodynamics=.true., &
613612
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
614613
endif
615614

616-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_dyn, OS%MOM_CSp, &
615+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_dyn, OS%MOM_CSp, &
617616
Waves=OS%Waves, do_dynamics=.true., do_thermodynamics=.false., &
618617
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_coupling)
619618
else
620-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_dyn, OS%MOM_CSp, &
619+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_dyn, OS%MOM_CSp, &
621620
Waves=OS%Waves, do_dynamics=.true., do_thermodynamics=.false., &
622621
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
623622

@@ -634,7 +633,7 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, time_start_upda
634633
if (step_thermo) then
635634
! Back up Time1 to the start of the thermodynamic segment.
636635
Time1 = Time1 - real_to_time(dtdia - dt_dyn)
637-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dtdia, OS%MOM_CSp, &
636+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dtdia, OS%MOM_CSp, &
638637
Waves=OS%Waves, do_dynamics=.false., do_thermodynamics=.true., &
639638
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_coupling)
640639
endif

config_src/mct_driver/mom_ocean_model_mct.F90

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ module MOM_ocean_model_mct
4646
use MOM_tracer_flow_control, only : call_tracer_register, tracer_flow_control_init
4747
use MOM_tracer_flow_control, only : call_tracer_flux_init
4848
use MOM_unit_scaling, only : unit_scale_type
49-
use MOM_variables, only : surface, stochastic_pattern
49+
use MOM_variables, only : surface
5050
use MOM_verticalGrid, only : verticalGrid_type
5151
use MOM_ice_shelf, only : initialize_ice_shelf, shelf_calc_flux, ice_shelf_CS
5252
use MOM_ice_shelf, only : add_shelf_forces, ice_shelf_end, ice_shelf_save_restart
@@ -185,7 +185,6 @@ module MOM_ocean_model_mct
185185
!! timesteps are taken per thermodynamic step.
186186
type(surface) :: sfc_state !< A structure containing pointers to
187187
!! the ocean surface state fields.
188-
type(stochastic_pattern) :: stochastics !< A structure containing pointers to
189188
type(ocean_grid_type), pointer :: &
190189
grid => NULL() !< A pointer to a grid structure containing metrics
191190
!! and related information.
@@ -587,12 +586,12 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
587586

588587
elseif ((.not.do_thermo) .or. (.not.do_dyn)) then
589588
! The call sequence is being orchestrated from outside of update_ocean_model.
590-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_coupling, OS%MOM_CSp, &
589+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp, &
591590
Waves=OS%Waves, do_dynamics=do_thermo, do_thermodynamics=do_dyn, &
592591
reset_therm=Ocn_fluxes_used)
593592

594593
elseif (OS%single_step_call) then
595-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_coupling, OS%MOM_CSp, Waves=OS%Waves)
594+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp, Waves=OS%Waves)
596595

597596
else
598597
n_max = 1 ; if (dt_coupling > OS%dt) n_max = ceiling(dt_coupling/OS%dt - 0.001)
@@ -616,16 +615,16 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
616615
"THERMO_SPANS_COUPLING and DIABATIC_FIRST.")
617616
if (modulo(n-1,nts)==0) then
618617
dtdia = dt_dyn*min(nts,n_max-(n-1))
619-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dtdia, OS%MOM_CSp, &
618+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dtdia, OS%MOM_CSp, &
620619
Waves=OS%Waves, do_dynamics=.false., do_thermodynamics=.true., &
621620
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
622621
endif
623622

624-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dt_dyn, OS%MOM_CSp, &
623+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dt_dyn, OS%MOM_CSp, &
625624
Waves=OS%Waves, do_dynamics=.true., do_thermodynamics=.false., &
626625
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_coupling)
627626
else
628-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dt_dyn, OS%MOM_CSp, &
627+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dt_dyn, OS%MOM_CSp, &
629628
Waves=OS%Waves, do_dynamics=.true., do_thermodynamics=.false., &
630629
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
631630

@@ -642,7 +641,7 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
642641
if (step_thermo) then
643642
! Back up Time2 to the start of the thermodynamic segment.
644643
Time2 = Time2 - set_time(int(floor((dtdia - dt_dyn) + 0.5)))
645-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dtdia, OS%MOM_CSp, &
644+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dtdia, OS%MOM_CSp, &
646645
Waves=OS%Waves, do_dynamics=.false., do_thermodynamics=.true., &
647646
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_coupling)
648647
endif

config_src/nuopc_driver/mom_ocean_model_nuopc.F90

Lines changed: 51 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,8 @@ module MOM_ocean_model_nuopc
176176
!! steps can span multiple coupled time steps.
177177
logical :: diabatic_first !< If true, apply diabatic and thermodynamic
178178
!! processes before time stepping the dynamics.
179+
logical :: do_sppt !< If true, allocate array for SPPT
180+
logical :: pert_epbl !< If true, allocate arrays for energetic PBL perturbations
179181

180182
real :: eps_omesh !< Max allowable difference between ESMF mesh and MOM6
181183
!! domain coordinates
@@ -426,20 +428,38 @@ subroutine ocean_model_init(Ocean_sfc, OS, Time_init, Time_in, gas_fields_ocn, i
426428

427429
endif
428430

429-
num_procs=num_PEs()
430-
allocate(pelist(num_procs))
431-
call Get_PElist(pelist,commID = mom_comm)
432-
me=PE_here()
433-
master=root_PE()
434-
435-
call init_stochastic_physics_ocn(OS%dt_therm,OS%grid%geoLonT,OS%grid%geoLatT,OS%grid%ied-OS%grid%isd+1,OS%grid%jed-OS%grid%jsd+1,OS%grid%ke,&
436-
OS%stochastics%pert_epbl,OS%stochastics%do_sppt,master,mom_comm,iret)
437-
print*,'after init_stochastic_physics_ocn',OS%stochastics%pert_epbl,OS%stochastics%do_sppt
438-
439-
if (OS%stochastics%do_sppt) allocate(OS%stochastics%sppt_wts(OS%grid%isd:OS%grid%ied,OS%grid%jsd:OS%grid%jed))
440-
if (OS%stochastics%pert_epbl) then
441-
allocate(OS%stochastics%t_rp1(OS%grid%isd:OS%grid%ied,OS%grid%jsd:OS%grid%jed))
442-
allocate(OS%stochastics%t_rp2(OS%grid%isd:OS%grid%ied,OS%grid%jsd:OS%grid%jed))
431+
! get number of processors and PE list for stocasthci physics initialization
432+
call get_param(param_file, mdl, "DO_SPPT", OS%do_sppt, &
433+
"If true, then stochastically perturb the thermodynamic "//&
434+
"tendemcies of T,S, amd h. Amplitude and correlations are "//&
435+
"controlled by the nam_stoch namelist in the UFS model only.", &
436+
default=.false.)
437+
call get_param(param_file, mdl, "PERT_EPBL", OS%pert_epbl, &
438+
"If true, then stochastically perturb the kinetic energy "//&
439+
"production and dissipation terms. Amplitude and correlations are "//&
440+
"controlled by the nam_stoch namelist in the UFS model only.", &
441+
default=.false.)
442+
if (OS%do_sppt .OR. OS%pert_epbl) then
443+
num_procs=num_PEs()
444+
allocate(pelist(num_procs))
445+
call Get_PElist(pelist,commID = mom_comm)
446+
me=PE_here()
447+
master=root_PE()
448+
449+
call init_stochastic_physics_ocn(OS%dt_therm,OS%grid%geoLonT,OS%grid%geoLatT,OS%grid%ied-OS%grid%isd+1,OS%grid%jed-OS%grid%jsd+1,OS%grid%ke,&
450+
OS%pert_epbl,OS%do_sppt,master,mom_comm,iret)
451+
if (iret/=0) then
452+
write(6,*) 'call to init_stochastic_physics_ocn failed'
453+
call MOM_error(FATAL, "stochastic physics in enambled in MOM6 but "// &
454+
"not activated in stochastic_physics namelist ")
455+
return
456+
endif
457+
458+
if (OS%do_sppt) allocate(OS%stochastics%sppt_wts(OS%grid%isd:OS%grid%ied,OS%grid%jsd:OS%grid%jed))
459+
if (OS%pert_epbl) then
460+
allocate(OS%stochastics%t_rp1(OS%grid%isd:OS%grid%ied,OS%grid%jsd:OS%grid%jed))
461+
allocate(OS%stochastics%t_rp2(OS%grid%isd:OS%grid%ied,OS%grid%jsd:OS%grid%jed))
462+
endif
443463
endif
444464
call close_param_file(param_file)
445465
call diag_mediator_close_registration(OS%diag)
@@ -611,22 +631,22 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
611631
Master_time = OS%Time ; Time1 = OS%Time
612632

613633
! update stochastic physics patterns before running next time-step
614-
print*,'before call to stoch',OS%stochastics%do_sppt .OR. OS%stochastics%pert_epbl
615-
if (OS%stochastics%do_sppt .OR. OS%stochastics%pert_epbl ) then
634+
if (OS%do_sppt .OR. OS%pert_epbl ) then
616635
call run_stochastic_physics_ocn(OS%stochastics%sppt_wts,OS%stochastics%t_rp1,OS%stochastics%t_rp2)
617636
endif
618637

619638
if (OS%offline_tracer_mode) then
620639
call step_offline(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp)
621640
elseif ((.not.do_thermo) .or. (.not.do_dyn)) then
622641
! The call sequence is being orchestrated from outside of update_ocean_model.
623-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_coupling, OS%MOM_CSp, &
642+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp, &
624643
Waves=OS%Waves, do_dynamics=do_thermo, do_thermodynamics=do_dyn, &
625-
reset_therm=Ocn_fluxes_used)
644+
reset_therm=Ocn_fluxes_used, stochastics=OS%stochastics)
626645
!### What to do with these? , start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
627646

628647
elseif (OS%single_step_call) then
629-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_coupling, OS%MOM_CSp, Waves=OS%Waves)
648+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp, Waves=OS%Waves, &
649+
stochastics=OS%stochastics)
630650
else
631651
n_max = 1 ; if (dt_coupling > OS%dt) n_max = ceiling(dt_coupling/OS%dt - 0.001)
632652
dt_dyn = dt_coupling / real(n_max)
@@ -649,18 +669,21 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
649669
"THERMO_SPANS_COUPLING and DIABATIC_FIRST.")
650670
if (modulo(n-1,nts)==0) then
651671
dtdia = dt_dyn*min(nts,n_max-(n-1))
652-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dtdia, OS%MOM_CSp, &
672+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dtdia, OS%MOM_CSp, &
653673
Waves=OS%Waves, do_dynamics=.false., do_thermodynamics=.true., &
654-
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
674+
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling, &
675+
stochastics=OS%stochastics)
655676
endif
656677

657-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dt_dyn, OS%MOM_CSp, &
678+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dt_dyn, OS%MOM_CSp, &
658679
Waves=OS%Waves, do_dynamics=.true., do_thermodynamics=.false., &
659-
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_coupling)
680+
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_coupling, &
681+
stochastics=OS%stochastics)
660682
else
661-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dt_dyn, OS%MOM_CSp, &
683+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dt_dyn, OS%MOM_CSp, &
662684
Waves=OS%Waves, do_dynamics=.true., do_thermodynamics=.false., &
663-
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
685+
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling, &
686+
stochastics=OS%stochastics)
664687

665688
step_thermo = .false.
666689
if (thermo_does_span_coupling) then
@@ -675,9 +698,10 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
675698
if (step_thermo) then
676699
! Back up Time2 to the start of the thermodynamic segment.
677700
Time2 = Time2 - set_time(int(floor((dtdia - dt_dyn) + 0.5)))
678-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dtdia, OS%MOM_CSp, &
701+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dtdia, OS%MOM_CSp, &
679702
Waves=OS%Waves, do_dynamics=.false., do_thermodynamics=.true., &
680-
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_coupling)
703+
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_coupling, &
704+
stochastics=OS%stochastics)
681705
endif
682706
endif
683707

config_src/solo_driver/MOM_driver.F90

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ program MOM_main
5757
use MOM_time_manager, only : NO_CALENDAR
5858
use MOM_tracer_flow_control, only : tracer_flow_control_CS
5959
use MOM_unit_scaling, only : unit_scale_type
60-
use MOM_variables, only : surface, stochastic_pattern
60+
use MOM_variables, only : surface
6161
use MOM_verticalGrid, only : verticalGrid_type
6262
use MOM_write_cputime, only : write_cputime, MOM_write_cputime_init
6363
use MOM_write_cputime, only : write_cputime_start_clock, write_cputime_CS
@@ -84,7 +84,6 @@ program MOM_main
8484
! A structure containing pointers to the thermodynamic forcing fields
8585
! at the ocean surface.
8686
type(forcing) :: fluxes
87-
type(stochastic_pattern) :: stochastics !< A structure containing pointers to
8887

8988
! A structure containing pointers to the ocean surface state fields.
9089
type(surface) :: sfc_state
@@ -501,7 +500,7 @@ program MOM_main
501500
if (offline_tracer_mode) then
502501
call step_offline(forces, fluxes, sfc_state, Time1, dt_forcing, MOM_CSp)
503502
elseif (single_step_call) then
504-
call step_MOM(forces, fluxes, sfc_state, stochastics, Time1, dt_forcing, MOM_CSp, Waves=Waves_CSP)
503+
call step_MOM(forces, fluxes, sfc_state, Time1, dt_forcing, MOM_CSp, Waves=Waves_CSP)
505504
else
506505
n_max = 1 ; if (dt_forcing > dt) n_max = ceiling(dt_forcing/dt - 0.001)
507506
dt_dyn = dt_forcing / real(n_max)
@@ -514,16 +513,16 @@ program MOM_main
514513
if (diabatic_first) then
515514
if (modulo(n-1,nts)==0) then
516515
dtdia = dt_dyn*min(ntstep,n_max-(n-1))
517-
call step_MOM(forces, fluxes, sfc_state, stochastics, Time2, dtdia, MOM_CSp, &
516+
call step_MOM(forces, fluxes, sfc_state, Time2, dtdia, MOM_CSp, &
518517
do_dynamics=.false., do_thermodynamics=.true., &
519518
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_forcing)
520519
endif
521520

522-
call step_MOM(forces, fluxes, sfc_state, stochastics, Time2, dt_dyn, MOM_CSp, &
521+
call step_MOM(forces, fluxes, sfc_state, Time2, dt_dyn, MOM_CSp, &
523522
do_dynamics=.true., do_thermodynamics=.false., &
524523
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_forcing)
525524
else
526-
call step_MOM(forces, fluxes, sfc_state, stochastics, Time2, dt_dyn, MOM_CSp, &
525+
call step_MOM(forces, fluxes, sfc_state, Time2, dt_dyn, MOM_CSp, &
527526
do_dynamics=.true., do_thermodynamics=.false., &
528527
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_forcing)
529528

@@ -532,7 +531,7 @@ program MOM_main
532531
! Back up Time2 to the start of the thermodynamic segment.
533532
if (n > n_last_thermo+1) &
534533
Time2 = Time2 - real_to_time(dtdia - dt_dyn)
535-
call step_MOM(forces, fluxes, sfc_state, stochastics, Time2, dtdia, MOM_CSp, &
534+
call step_MOM(forces, fluxes, sfc_state, Time2, dtdia, MOM_CSp, &
536535
do_dynamics=.false., do_thermodynamics=.true., &
537536
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_forcing)
538537
n_last_thermo = n

0 commit comments

Comments
 (0)