Skip to content

Commit 1727d9a

Browse files
committed
re-write of stochastic code to remove CPP directives
1 parent 600ebf9 commit 1727d9a

9 files changed

Lines changed: 127 additions & 131 deletions

File tree

config_src/coupled_driver/ocean_model_MOM.F90

Lines changed: 8 additions & 7 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
47+
use MOM_variables, only : surface, stochastic_pattern
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,6 +187,7 @@ 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
190191
type(ocean_grid_type), pointer :: &
191192
grid => NULL() !< A pointer to a grid structure containing metrics
192193
!! and related information.
@@ -580,12 +581,12 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, time_start_upda
580581
call step_offline(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp)
581582
elseif ((.not.do_thermo) .or. (.not.do_dyn)) then
582583
! The call sequence is being orchestrated from outside of update_ocean_model.
583-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp, &
584+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_coupling, OS%MOM_CSp, &
584585
Waves=OS%Waves, do_dynamics=do_dyn, do_thermodynamics=do_thermo, &
585586
start_cycle=start_cycle, end_cycle=end_cycle, cycle_length=cycle_length, &
586587
reset_therm=Ocn_fluxes_used)
587588
elseif (OS%single_step_call) then
588-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp, Waves=OS%Waves)
589+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_coupling, OS%MOM_CSp, Waves=OS%Waves)
589590
else ! Step both the dynamics and thermodynamics with separate calls.
590591
n_max = 1 ; if (dt_coupling > OS%dt) n_max = ceiling(dt_coupling/OS%dt - 0.001)
591592
dt_dyn = dt_coupling / real(n_max)
@@ -607,16 +608,16 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, time_start_upda
607608
"THERMO_SPANS_COUPLING and DIABATIC_FIRST.")
608609
if (modulo(n-1,nts)==0) then
609610
dtdia = dt_dyn*min(nts,n_max-(n-1))
610-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dtdia, OS%MOM_CSp, &
611+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dtdia, OS%MOM_CSp, &
611612
Waves=OS%Waves, do_dynamics=.false., do_thermodynamics=.true., &
612613
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
613614
endif
614615

615-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_dyn, OS%MOM_CSp, &
616+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_dyn, OS%MOM_CSp, &
616617
Waves=OS%Waves, do_dynamics=.true., do_thermodynamics=.false., &
617618
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_coupling)
618619
else
619-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_dyn, OS%MOM_CSp, &
620+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_dyn, OS%MOM_CSp, &
620621
Waves=OS%Waves, do_dynamics=.true., do_thermodynamics=.false., &
621622
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
622623

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

config_src/mct_driver/mom_ocean_model_mct.F90

Lines changed: 8 additions & 7 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
49+
use MOM_variables, only : surface, stochastic_pattern
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,6 +185,7 @@ 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
188189
type(ocean_grid_type), pointer :: &
189190
grid => NULL() !< A pointer to a grid structure containing metrics
190191
!! and related information.
@@ -586,12 +587,12 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
586587

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

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

596597
else
597598
n_max = 1 ; if (dt_coupling > OS%dt) n_max = ceiling(dt_coupling/OS%dt - 0.001)
@@ -615,16 +616,16 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
615616
"THERMO_SPANS_COUPLING and DIABATIC_FIRST.")
616617
if (modulo(n-1,nts)==0) then
617618
dtdia = dt_dyn*min(nts,n_max-(n-1))
618-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dtdia, OS%MOM_CSp, &
619+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dtdia, OS%MOM_CSp, &
619620
Waves=OS%Waves, do_dynamics=.false., do_thermodynamics=.true., &
620621
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
621622
endif
622623

623-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dt_dyn, OS%MOM_CSp, &
624+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dt_dyn, OS%MOM_CSp, &
624625
Waves=OS%Waves, do_dynamics=.true., do_thermodynamics=.false., &
625626
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_coupling)
626627
else
627-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dt_dyn, OS%MOM_CSp, &
628+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dt_dyn, OS%MOM_CSp, &
628629
Waves=OS%Waves, do_dynamics=.true., do_thermodynamics=.false., &
629630
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
630631

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

config_src/nuopc_driver/mom_cap.F90

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,7 @@ module MOM_cap_mod
9191
use NUOPC_Model, only: model_label_SetRunClock => label_SetRunClock
9292
use NUOPC_Model, only: model_label_Finalize => label_Finalize
9393
use NUOPC_Model, only: SetVM
94-
#ifdef UFS
9594
use get_stochy_pattern_mod, only: write_stoch_restart_ocn
96-
#endif
9795

9896
implicit none; private
9997

@@ -1589,7 +1587,6 @@ subroutine ModelAdvance(gcomp, rc)
15891587
call ocean_model_restart(ocean_state, restartname=restartname)
15901588

15911589
! write stochastic physics restart file if active
1592-
#ifdef UFS
15931590
if (ESMF_AlarmIsRinging(stop_alarm, rc=rc)) then
15941591
write(restartname,'(A)')"ocn_stoch.res.nc"
15951592
else
@@ -1598,7 +1595,6 @@ subroutine ModelAdvance(gcomp, rc)
15981595
endif
15991596
call ESMF_LogWrite("MOM_cap: Writing restart : "//trim(restartname), ESMF_LOGMSG_INFO)
16001597
call write_stoch_restart_ocn('RESTART/'//trim(restartname))
1601-
#endif
16021598
endif
16031599

16041600
if (is_root_pe()) then

config_src/nuopc_driver/mom_ocean_model_nuopc.F90

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ module MOM_ocean_model_nuopc
4343
use MOM_tracer_flow_control, only : call_tracer_register, tracer_flow_control_init
4444
use MOM_tracer_flow_control, only : call_tracer_flux_init
4545
use MOM_unit_scaling, only : unit_scale_type
46-
use MOM_variables, only : surface
46+
use MOM_variables, only : surface, stochastic_pattern
4747
use MOM_verticalGrid, only : verticalGrid_type
4848
use MOM_ice_shelf, only : initialize_ice_shelf, shelf_calc_flux, ice_shelf_CS
4949
use MOM_ice_shelf, only : add_shelf_forces, ice_shelf_end, ice_shelf_save_restart
@@ -62,6 +62,8 @@ module MOM_ocean_model_nuopc
6262
use MOM_surface_forcing_nuopc, only : convert_IOB_to_forces, ice_ocn_bnd_type_chksum
6363
use MOM_surface_forcing_nuopc, only : ice_ocean_boundary_type, surface_forcing_CS
6464
use MOM_surface_forcing_nuopc, only : forcing_save_restart
65+
use MOM_domains, only : root_PE,PE_here,Get_PElist,num_PEs
66+
use stochastic_physics, only : init_stochastic_physics_ocn, run_stochastic_physics_ocn
6567

6668
#include <MOM_memory.h>
6769

@@ -187,6 +189,7 @@ module MOM_ocean_model_nuopc
187189
!! timesteps are taken per thermodynamic step.
188190
type(surface) :: sfc_state !< A structure containing pointers to
189191
!! the ocean surface state fields.
192+
type(stochastic_pattern) :: stochastics !< A structure containing pointers to
190193
type(ocean_grid_type), pointer :: &
191194
grid => NULL() !< A pointer to a grid structure containing metrics
192195
!! and related information.
@@ -248,6 +251,13 @@ subroutine ocean_model_init(Ocean_sfc, OS, Time_init, Time_in, gas_fields_ocn, i
248251
!! min(HFrz, OBLD), where OBLD is the boundary layer depth.
249252
!! If HFrz <= 0 (default), melt potential will not be computed.
250253
logical :: use_melt_pot!< If true, allocate melt_potential array
254+
! stochastic physics
255+
integer,allocatable :: pelist(:) ! list of pes for this instance of the ocean
256+
integer :: mom_comm ! list of pes for this instance of the ocean
257+
integer :: num_procs ! number of processors to pass to stochastic physics
258+
integer :: iret ! return code from stochastic physics
259+
integer :: me ! my pe
260+
integer :: master ! root pe
251261

252262
! This include declares and sets the variable "version".
253263
#include "version_variable.h"
@@ -416,6 +426,21 @@ subroutine ocean_model_init(Ocean_sfc, OS, Time_init, Time_in, gas_fields_ocn, i
416426

417427
endif
418428

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))
443+
endif
419444
call close_param_file(param_file)
420445
call diag_mediator_close_registration(OS%diag)
421446

@@ -585,17 +610,23 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
585610
call disable_averaging(OS%diag)
586611
Master_time = OS%Time ; Time1 = OS%Time
587612

613+
! 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
616+
call run_stochastic_physics_ocn(OS%stochastics%sppt_wts,OS%stochastics%t_rp1,OS%stochastics%t_rp2)
617+
endif
618+
588619
if (OS%offline_tracer_mode) then
589620
call step_offline(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp)
590621
elseif ((.not.do_thermo) .or. (.not.do_dyn)) then
591622
! The call sequence is being orchestrated from outside of update_ocean_model.
592-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp, &
623+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_coupling, OS%MOM_CSp, &
593624
Waves=OS%Waves, do_dynamics=do_thermo, do_thermodynamics=do_dyn, &
594625
reset_therm=Ocn_fluxes_used)
595626
!### What to do with these? , start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
596627

597628
elseif (OS%single_step_call) then
598-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time1, dt_coupling, OS%MOM_CSp, Waves=OS%Waves)
629+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time1, dt_coupling, OS%MOM_CSp, Waves=OS%Waves)
599630
else
600631
n_max = 1 ; if (dt_coupling > OS%dt) n_max = ceiling(dt_coupling/OS%dt - 0.001)
601632
dt_dyn = dt_coupling / real(n_max)
@@ -618,16 +649,16 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
618649
"THERMO_SPANS_COUPLING and DIABATIC_FIRST.")
619650
if (modulo(n-1,nts)==0) then
620651
dtdia = dt_dyn*min(nts,n_max-(n-1))
621-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dtdia, OS%MOM_CSp, &
652+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dtdia, OS%MOM_CSp, &
622653
Waves=OS%Waves, do_dynamics=.false., do_thermodynamics=.true., &
623654
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
624655
endif
625656

626-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dt_dyn, OS%MOM_CSp, &
657+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dt_dyn, OS%MOM_CSp, &
627658
Waves=OS%Waves, do_dynamics=.true., do_thermodynamics=.false., &
628659
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_coupling)
629660
else
630-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dt_dyn, OS%MOM_CSp, &
661+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dt_dyn, OS%MOM_CSp, &
631662
Waves=OS%Waves, do_dynamics=.true., do_thermodynamics=.false., &
632663
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_coupling)
633664

@@ -644,7 +675,7 @@ subroutine update_ocean_model(Ice_ocean_boundary, OS, Ocean_sfc, &
644675
if (step_thermo) then
645676
! Back up Time2 to the start of the thermodynamic segment.
646677
Time2 = Time2 - set_time(int(floor((dtdia - dt_dyn) + 0.5)))
647-
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, Time2, dtdia, OS%MOM_CSp, &
678+
call step_MOM(OS%forces, OS%fluxes, OS%sfc_state, OS%stochastics, Time2, dtdia, OS%MOM_CSp, &
648679
Waves=OS%Waves, do_dynamics=.false., do_thermodynamics=.true., &
649680
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_coupling)
650681
endif

config_src/solo_driver/MOM_driver.F90

Lines changed: 7 additions & 6 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
60+
use MOM_variables, only : surface, stochastic_pattern
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,6 +84,7 @@ 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
8788

8889
! A structure containing pointers to the ocean surface state fields.
8990
type(surface) :: sfc_state
@@ -500,7 +501,7 @@ program MOM_main
500501
if (offline_tracer_mode) then
501502
call step_offline(forces, fluxes, sfc_state, Time1, dt_forcing, MOM_CSp)
502503
elseif (single_step_call) then
503-
call step_MOM(forces, fluxes, sfc_state, Time1, dt_forcing, MOM_CSp, Waves=Waves_CSP)
504+
call step_MOM(forces, fluxes, sfc_state, stochastics, Time1, dt_forcing, MOM_CSp, Waves=Waves_CSP)
504505
else
505506
n_max = 1 ; if (dt_forcing > dt) n_max = ceiling(dt_forcing/dt - 0.001)
506507
dt_dyn = dt_forcing / real(n_max)
@@ -513,16 +514,16 @@ program MOM_main
513514
if (diabatic_first) then
514515
if (modulo(n-1,nts)==0) then
515516
dtdia = dt_dyn*min(ntstep,n_max-(n-1))
516-
call step_MOM(forces, fluxes, sfc_state, Time2, dtdia, MOM_CSp, &
517+
call step_MOM(forces, fluxes, sfc_state, stochastics, Time2, dtdia, MOM_CSp, &
517518
do_dynamics=.false., do_thermodynamics=.true., &
518519
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_forcing)
519520
endif
520521

521-
call step_MOM(forces, fluxes, sfc_state, Time2, dt_dyn, MOM_CSp, &
522+
call step_MOM(forces, fluxes, sfc_state, stochastics, Time2, dt_dyn, MOM_CSp, &
522523
do_dynamics=.true., do_thermodynamics=.false., &
523524
start_cycle=.false., end_cycle=(n==n_max), cycle_length=dt_forcing)
524525
else
525-
call step_MOM(forces, fluxes, sfc_state, Time2, dt_dyn, MOM_CSp, &
526+
call step_MOM(forces, fluxes, sfc_state, stochastics, Time2, dt_dyn, MOM_CSp, &
526527
do_dynamics=.true., do_thermodynamics=.false., &
527528
start_cycle=(n==1), end_cycle=.false., cycle_length=dt_forcing)
528529

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

0 commit comments

Comments
 (0)