FMS Coupler
2022.03
|
Data Types | |
type | coupler_clock_type |
coupler_clock_type derived type consist of all clock ids that will be set and used in full coupler_main. More... | |
type | coupler_components_type |
type | coupler_chksum_type |
The purpose of objects of coupler_chksum_type is to simplify the list of arguments required for chksum related subroutines in full_coupler_mod. The members of this type point to the model components. More... | |
Functions/Subroutines | |
subroutine, public | coupler_init (Atm, Ocean, Land, Ice, Ocean_state, Atmos_land_boundary, Atmos_ice_boundary, Ocean_ice_boundary, Ice_ocean_boundary, Land_ice_atmos_boundary, Land_ice_boundary, Ice_ocean_driver_CS, Ice_bc_restart, Ocn_bc_restart, ensemble_pelist, slow_ice_ocean_pelist, conc_nthreads, coupler_clocks, coupler_components_obj, coupler_chksum_obj, Time_step_cpld, Time_step_atmos, Time_atmos, Time_ocean, num_cpld_calls, num_atmos_calls, Time, Time_start, Time_end, Time_restart, Time_restart_current) |
Initialize all defined exchange grids and all boundary maps. More... | |
subroutine | initialize_coupler_components_obj (this, Atm, Land, Ice, Ocean, Land_ice_atmos_boundary, Atmos_land_boundary, Atmos_ice_boundary, Land_ice_boundary, Ice_ocean_boundary, Ocean_ice_boundary) |
This subroutine associates the pointer in an object of coupler_components_type to the model components. More... | |
subroutine | get_component (this, retrieve_component) |
Function get_component returns the requested component in the coupler_components_type object Users are required to provide the component to be retrieved as an input argument. For example, coupler_components_objget_component(Atm) will return Atm = coupler_components_objAtm. More... | |
subroutine | initialize_coupler_chksum_obj (this, components_obj) |
This subroutine associates the pointer in an object of coupler_chksum_type to the component models. More... | |
subroutine | get_components_obj (this, components_obj) |
This subroutine retrieves coupler_chksum_objcomponents_obj. More... | |
subroutine, public | coupler_end (Atm, Land, Ice, Ocean, Ocean_state, Land_ice_atmos_boundary, Atmos_ice_boundary, Atmos_land_boundary, Ice_ocean_boundary, Ocean_ice_boundary, Ocn_bc_restart, Ice_bc_restart, current_timestep, Time_current, Time_start, Time_end, Time_restart_current, coupler_chksum_obj, coupler_clocks) |
This subroutine finalizes the run including a final call to get_coupler_chksums if do_chksum = .True. Coupler_restart is called for the final time. More... | |
subroutine | add_domain_dimension_data (fileobj) |
Register the axis data as a variable in the netcdf file and add some dummy data. This is needed so the combiner can work correctly when the io_layout is not 1,1. More... | |
subroutine, public | coupler_restart (Atm, Ice, Ocean, Ocn_bc_restart, Ice_bc_restart, Time_current, Time_restart_current, Time_start, time_stamp) |
Writing restart file that contains running time and restart file writing time. More... | |
subroutine | get_coupler_chksums (this, id, timestep) |
Print out checksums for several atm, land and ice variables. More... | |
subroutine | get_atmos_ice_land_ocean_chksums (this, id, timestep) |
This subroutine calls coupler_chksum as well as atmos_ice_land_chksum and ocean_chksum. More... | |
subroutine | get_atmos_ice_land_chksums (this, id, timestep) |
This subroutine calls subroutine that will print out checksums of the elements of the appropriate type. For coupled models typically these types are not defined on all processors. It is assumed that the appropriate pelist has been set before entering this routine. This can be achieved in the following way. More... | |
subroutine | get_slow_ice_chksums (this, id, timestep) |
This subroutine calls subroutine that will print out checksums of the elements of the appropriate type. For coupled models typically these types are not defined on all processors. It is assumed that the appropriate pelist has been set before entering this routine. This can be achieved in the following way. More... | |
subroutine | get_ocean_chksums (this, id, timestep) |
This subroutine calls subroutine that will print out checksums of the elements of the appropriate type. For coupled models typically these types are not defined on all processors. It is assumed that the appropriate pelist has been set before entering this routine. This can be achieved in the following way. More... | |
subroutine | coupler_set_clock_ids (coupler_clocks, Atm, Land, Ice, Ocean, ensemble_pelist, slow_ice_ocean_pelist, ensemble_id) |
This subroutine sets the ID for clocks used in coupler_main. More... | |
subroutine, public | coupler_flux_init_finish_stocks (Time, Atm, Land, Ice, Ocean_state, coupler_clocks, init_stocks, finish_stocks) |
This subroutine calls flux_init_stocks or does the final call to flux_check_stocks. More... | |
subroutine, public | coupler_flux_check_stocks (nc, Time, Atm, Land, Ice, Ocean_state, coupler_clocks) |
This subroutine calls flux_check_stocks. Clocks and pelists are set before and after call to flux_check_stocks. More... | |
subroutine, public | coupler_flux_ocean_to_ice (Ocean, Ice, Ocean_ice_boundary, coupler_clocks, slow_ice_ocean_pelist) |
This subroutine calls flux_ocean_to_ice. Clocks and pelists are set before and after call flux_ocean_to_ice. More... | |
subroutine, public | coupler_flux_ice_to_ocean (Ice, Ocean, Ice_ocean_boundary, coupler_clocks, slow_ice_ocean_pelist, set_current_slow_ice_ocean_pelist) |
This subroutine calls flux_ocean_to_ice Clocks are set before and after call flux_ice_to_ocean. Current pelist is set when optional arguments are present and set_current_slow_ice_ocean_pelist=.True. More... | |
subroutine, public | coupler_unpack_ocean_ice_boundary (nc, Time_flux_ocean_to_ice, Ice, Ocean_ice_boundary, coupler_clocks, coupler_chksum_obj) |
This subroutine calls flux_ocean_to_ice_finish and unpack_ocean_ice_boundary. Clocks and pelists are set before/after the calls. Checksum is computed if do_chksum=.True. More... | |
subroutine, public | coupler_exchange_slow_to_fast_ice (Ice, coupler_clocks) |
This subroutine calls exchange_slow_to_fast_ice Clocks and pelists are set before/after the calls. More... | |
subroutine, public | coupler_exchange_fast_to_slow_ice (Ice, coupler_clocks, set_ice_current_pelist) |
This subroutine calls exchange_fast_to_slow_ice. Clocks are set before and after the call. The current pelist is set if the optional argument set_ice_current_pelist is set to true. More... | |
subroutine, public | coupler_set_ice_surface_fields (Ice, coupler_clocks) |
This subroutine calls set_ice_surface_fields. Clocks and pelist are set before/after the call. More... | |
subroutine, public | coupler_generate_sfc_xgrid (Land, Ice, coupler_clocks) |
This subroutine calls generate_sfc_xgrid. Clocks are set and before the call. More... | |
subroutine, public | coupler_atmos_tracer_driver_gather_data (Atm, coupler_clocks) |
This subroutine calls atmo_tracer_driver_gather_data. Clocks are set before and after the call. More... | |
subroutine, public | coupler_sfc_boundary_layer (Atm, Land, Ice, Land_ice_atmos_boundary, Time_atmos, current_timestep, coupler_chksum_obj, coupler_clocks) |
This subroutine calls coupler_sfc_boundary_layer. Chksums are computed if do_chksum = .True. Clocks are set for runtime statistics. More... | |
subroutine, public | coupler_update_atmos_model_dynamics (Atm, current_timestep, coupler_chksum_obj, coupler_clocks) |
This subroutine calls update_atmos_model_dynamics. Clocks are set for runtime statistics. Chksums and memory usage are computed if do_chksum and do_debug are .True. More... | |
subroutine, public | coupler_update_atmos_model_radiation (Atm, Land_ice_atmos_boundary, coupler_clocks, current_timestep, coupler_chksum_obj) |
This subroutine calls update_atmos_model_radiation. Clocks are set for runtime statistics. Chksums are computed if do_chksum is .True. and do_concurrent_radiation is .False.. Memory usage is computed if do_debug is .True. More... | |
subroutine, public | coupler_update_atmos_model_down (Atm, Land_ice_atmos_boundary, current_timestep, coupler_chksum_obj, coupler_clocks) |
This subroutine calls update_atmos_model_down. Clocks are set for runtime statistics. Chksums and memory usage are computed if do_chksum and do_debug are .True. More... | |
subroutine, public | coupler_flux_down_from_atmos (Atm, Land, Ice, Land_ice_atmos_boundary, Atmos_land_boundary, Atmos_ice_boundary, Time_atmos, current_timestep, coupler_clocks, coupler_chksum_obj) |
This subroutine calls flux_down_from_atmos. Clocks are set for runtime statistics. Chksums are computed if do_chksum = .True. More... | |
subroutine, public | coupler_update_land_model_fast (Land, Atmos_land_boundary, atm_pelist, current_timestep, coupler_chksum_obj, coupler_clocks) |
This subroutine calls update_land_model_fast. Clocks are set for runtime statistics. Chksums and memory usage are computed if do_chksum and do_debug are .True. More... | |
subroutine, public | coupler_update_ice_model_fast (Ice, Atmos_ice_boundary, atm_pelist, current_timestep, coupler_chksum_obj, coupler_clocks) |
This subroutine calls update_ice_model_fast. Clocks are set for runtime statistics. Chksums and memory usage are computed if do_chksum and do_debug are .True. More... | |
subroutine, public | coupler_flux_up_to_atmos (Land, Ice, Land_ice_atmos_boundary, Atmos_land_boundary, Atmos_ice_boundary, Time_atmos, current_timestep, coupler_chksum_obj, coupler_clocks) |
This subroutine calls flux_up_to_atmos. Clocks are set for runtime statistics. Chksums are computed if do_chksum is .True. More... | |
subroutine, public | coupler_update_atmos_model_up (Atm, Land_ice_atmos_boundary, current_timestep, coupler_chksum_obj, coupler_clocks) |
This subroutine calls update_atmos_model_up. Clocks are set for runtime statistics. Chksums and memory usage are computed if do_chksum and do_debug are .True. More... | |
subroutine, public | coupler_flux_atmos_to_ocean (Atm, Atmos_ice_boundary, Ice, Time_atmos) |
This subroutine calls flux_atmos_to_ocean and calls flux_ex_arrays_dealloc. More... | |
subroutine, public | coupler_update_atmos_model_state (Atm, current_timestep, coupler_chksum_obj, coupler_clocks) |
This subroutine calls update_atmos_model_state. Chksums are mem usage are computed if do_chksum and do_debug are .True. respectively. More... | |
subroutine, public | coupler_update_land_model_slow (Land, Atmos_land_boundary, atm_pelist, current_timestep, coupler_chksum_obj, coupler_clocks) |
In this subroutine, update_land model_slow is called by the Landpes. The atm_pelist are only required to set the clocks. Chksums are computed if do_chksum = .True. More... | |
subroutine, public | coupler_flux_land_to_ice (Land, Ice, Land_ice_boundary, Time, current_timestep, coupler_chksum_obj, coupler_clocks) |
This subroutine calls flux_land_to_ice. Chksums are computed if do_chksum = .True. More... | |
subroutine, public | coupler_unpack_land_ice_boundary (Ice, Land_ice_boundary, coupler_clocks) |
This subroutine calls ice_model_fast_cleanup and unpack_land_ice_boundary. More... | |
subroutine, public | coupler_update_ice_model_slow_and_stocks (Ice, coupler_clocks) |
This subroutine calls update_ice_model_slow and flux_ice_to_ocean_stocks. More... | |
subroutine, public | coupler_update_ocean_model (Ocean, Ocean_state, Ice_ocean_boundary, Time_ocean, Time_step_cpld, current_timestep, coupler_chksum_obj) |
This subroutine calls update_ocean_model. Chksums are computed if do_chksum = .True. More... | |
subroutine, public | coupler_intermediate_restart (Atm, Ice, Ocean, Ocean_state, Ocn_bc_restart, Ice_bc_restart, Time_current, Time_restart, Time_restart_current, Time_start) |
Thie subroutine calls component restarts and coupler_restart where the intermediate restart files is produced in the latter calls. Time_restart is the next timestep where the intermediate restart file will be written out. Time_restart_current records the current restart time. More... | |
subroutine, public | coupler_summarize_timestep (current_timestep, num_cpld_calls, coupler_chksum_obj, is_atmos_pe, omp_sec, imb_sec) |
This subroutine mainly prints out the current timestep in the stdout. Chksum is computed if do_chksum = .True. More... | |
Variables | |
integer, dimension(6), public | restart_interval = (/ 0, 0, 0, 0, 0, 0/) |
namelist interface More... | |
integer, dimension(6) | current_date = (/ 0, 0, 0, 0, 0, 0 /) |
The date that the current integration starts with. (See force_date_from_namelist.) More... | |
character(len=17) | calendar = ' ' |
logical | force_date_from_namelist = .false. |
Flag that determines whether the namelist variable current_date should override the date in the restart file INPUT/coupler.res . If the restart file does not exist then force_date_from_namelist has no effect, the value of current_date will be used. More... | |
integer, public | months =0 |
Number of months the current integration will be run. More... | |
integer, public | days =0 |
Number of days the current integration will be run. More... | |
integer, public | hours =0 |
Number of hours the current integration will be run. More... | |
integer, public | minutes =0 |
Number of minutes the current integration will be run. More... | |
integer, public | seconds =0 |
Number of seconds the current integration will be run. More... | |
integer, public | dt_atmos = 0 |
Atmospheric model time step in seconds, including the fast coupling with land and sea ice. More... | |
integer, public | dt_cpld = 0 |
Time step in seconds for coupling between ocean and atmospheric models. This must be an integral multiple of dt_atmos and dt_ocean. This is the "slow" timestep. More... | |
integer, public | atmos_npes =0 |
The number of MPI tasks to use for the atmosphere. More... | |
integer, public | ocean_npes =0 |
The number of MPI tasks to use for the ocean. More... | |
integer, public | ice_npes =0 |
The number of MPI tasks to use for the ice. More... | |
integer, public | land_npes =0 |
The number of MPI tasks to use for the land. More... | |
integer, public | atmos_nthreads =1 |
Number of OpenMP threads to use in the atmosphere. More... | |
integer, public | ocean_nthreads =1 |
Number of OpenMP threads to use in the ocean. More... | |
integer, public | radiation_nthreads =1 |
Number of threads to use for the radiation. More... | |
logical, public | do_atmos =.true. |
Indicates if this component should be executed. If .FALSE., then execution is skipped. This is used when ALL the output fields sent by this component to the coupler have been overridden using the data_override feature. This is for advanced users only. More... | |
logical, public | do_land =.true. |
See do_atmos. More... | |
logical, public | do_ice =.true. |
See do_atmos. More... | |
logical, public | do_ocean =.true. |
See do_atmos. More... | |
logical, public | do_flux =.true. |
See do_atmos. More... | |
logical, public | concurrent =.FALSE. |
If .TRUE., the ocean executes concurrently with the atmosphere-land-ice on a separate set of PEs. Concurrent should be .TRUE. if concurrent_ice is .TRUE. If .FALSE., the execution is serial: call atmos... followed by call ocean... More... | |
logical, public | do_concurrent_radiation =.FALSE. |
If .TRUE. then radiation is done concurrently. More... | |
logical, public | use_lag_fluxes =.TRUE. |
If .TRUE., the ocean is forced with SBCs from one coupling timestep ago. If .FALSE., the ocean is forced with most recent SBCs. For an old leapfrog MOM4 coupling with dt_cpld=dt_ocean, lag fluxes can be shown to be stable and current fluxes to be unconditionally unstable. For dt_cpld>dt_ocean there is probably sufficient damping for MOM4. For more modern ocean models (such as MOM5, GOLD or MOM6) that do not use leapfrog timestepping, use_lag_fluxes=.False. should be much more stable. More... | |
logical, public | concurrent_ice =.FALSE. |
If .TRUE., the slow sea-ice is forced with the fluxes that were used for the fast ice processes one timestep before. When used in conjuction with setting slow_ice_with_ocean=.TRUE., this approach allows the atmosphere and ocean to run concurrently even if use_lag_fluxes=.FALSE., and it can be shown to ameliorate or eliminate several ice-ocean coupled instabilities. More... | |
logical, public | slow_ice_with_ocean =.FALSE. |
If true, the slow sea-ice is advanced on the ocean processors. Otherwise the slow sea-ice processes are on the same PEs as the fast sea-ice. More... | |
logical, public | combined_ice_and_ocean =.FALSE. |
logical, public | do_chksum =.FALSE. |
If .TRUE., do multiple checksums throughout the execution of the model. More... | |
logical, public | do_endpoint_chksum =.TRUE. |
If .TRUE., do checksums of the initial and final states. More... | |
logical, public | do_debug =.FALSE. |
If .TRUE. print additional debugging messages. More... | |
integer, public | check_stocks = 0 |
-1: never 0: at end of run only n>0: every n coupled steps More... | |
logical, public | use_hyper_thread = .false. |
character(len=80) | text |
character(len=48), parameter | mod_name = 'coupler_main_mod' |
integer | calendar_type = INVALID_CALENDAR |
integer, dimension(6) | date_init = (/ 0, 0, 0, 0, 0, 0 /) |
coupled model initial date More... | |
|
private |
Register the axis data as a variable in the netcdf file and add some dummy data. This is needed so the combiner can work correctly when the io_layout is not 1,1.
fileobj | Fms2io domain decomposed fileobj |
subroutine, public full_coupler_mod::coupler_atmos_tracer_driver_gather_data | ( | type(atmos_data_type), intent(inout) | Atm, |
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls atmo_tracer_driver_gather_data. Clocks are set before and after the call.
subroutine, public full_coupler_mod::coupler_end | ( | type(atmos_data_type), intent(inout) | Atm, |
type(land_data_type), intent(inout) | Land, | ||
type(ice_data_type), intent(inout) | Ice, | ||
type(ocean_public_type), intent(inout) | Ocean, | ||
type(ocean_state_type), intent(inout), pointer | Ocean_state, | ||
type(land_ice_atmos_boundary_type), intent(inout) | Land_ice_atmos_boundary, | ||
type(atmos_ice_boundary_type), intent(inout) | Atmos_ice_boundary, | ||
type(atmos_land_boundary_type), intent(inout) | Atmos_land_boundary, | ||
type(ice_ocean_boundary_type), intent(inout) | Ice_ocean_boundary, | ||
type(ocean_ice_boundary_type), intent(inout) | Ocean_ice_boundary, | ||
type(fmsnetcdfdomainfile_t), dimension(:), intent(inout), pointer | Ocn_bc_restart, | ||
type(fmsnetcdfdomainfile_t), dimension(:), intent(inout), pointer | Ice_bc_restart, | ||
integer, intent(in) | current_timestep, | ||
type(fmstime_type), intent(in) | Time_current, | ||
type(fmstime_type), intent(in) | Time_start, | ||
type(fmstime_type), intent(in) | Time_end, | ||
type(fmstime_type), intent(in) | Time_restart_current, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj, | ||
type(coupler_clock_type), intent(in) | coupler_clocks | ||
) |
This subroutine finalizes the run including a final call to get_coupler_chksums if do_chksum = .True. Coupler_restart is called for the final time.
[in,out] | land_ice_atmos_boundary | Land_ice_boundary |
[in,out] | ocn_bc_restart | required for coupler_restart |
[in,out] | ice_bc_restart | required for coupler_restart |
[in] | current_timestep | current_timestep (nc) |
[in] | coupler_chksum_obj | required for chksum computations |
[in] | time_current | Current timestep |
[in] | time_start | model starting time |
[in] | time_end | model run time |
[in] | time_restart_current | Time corresponding to last restart time |
subroutine, public full_coupler_mod::coupler_exchange_fast_to_slow_ice | ( | type(ice_data_type), intent(inout) | Ice, |
type(coupler_clock_type), intent(inout) | coupler_clocks, | ||
logical, intent(in), optional | set_ice_current_pelist | ||
) |
This subroutine calls exchange_fast_to_slow_ice. Clocks are set before and after the call. The current pelist is set if the optional argument set_ice_current_pelist is set to true.
[in] | set_ice_current_pelist | If true, call mpp_set_current_pelist(Icepelist) |
subroutine, public full_coupler_mod::coupler_exchange_slow_to_fast_ice | ( | type(ice_data_type), intent(inout) | Ice, |
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls exchange_slow_to_fast_ice Clocks and pelists are set before/after the calls.
subroutine, public full_coupler_mod::coupler_flux_atmos_to_ocean | ( | type(atmos_data_type), intent(inout) | Atm, |
type(atmos_ice_boundary_type), intent(inout) | Atmos_ice_boundary, | ||
type(ice_data_type), intent(inout) | Ice, | ||
type(fmstime_type), intent(in) | Time_atmos | ||
) |
This subroutine calls flux_atmos_to_ocean and calls flux_ex_arrays_dealloc.
[in] | time_atmos | Time in seconds |
subroutine, public full_coupler_mod::coupler_flux_check_stocks | ( | integer, intent(in) | nc, |
type(fmstime_type), intent(in) | Time, | ||
type(atmos_data_type), intent(inout) | Atm, | ||
type(land_data_type), intent(inout) | Land, | ||
type(ice_data_type), intent(inout) | Ice, | ||
type(ocean_state_type), intent(inout), pointer | Ocean_state, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls flux_check_stocks. Clocks and pelists are set before and after call to flux_check_stocks.
[in] | nc | current outerloop timestep |
subroutine, public full_coupler_mod::coupler_flux_down_from_atmos | ( | type(atmos_data_type), intent(inout) | Atm, |
type(land_data_type), intent(inout) | Land, | ||
type(ice_data_type), intent(inout) | Ice, | ||
type(land_ice_atmos_boundary_type), intent(inout) | Land_ice_atmos_boundary, | ||
type(atmos_land_boundary_type), intent(inout) | Atmos_land_boundary, | ||
type(atmos_ice_boundary_type), intent(inout) | Atmos_ice_boundary, | ||
type(fmstime_type), intent(in) | Time_atmos, | ||
integer, intent(in) | current_timestep, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj | ||
) |
This subroutine calls flux_down_from_atmos. Clocks are set for runtime statistics. Chksums are computed if do_chksum = .True.
[in] | time_atmos | Time_atmos FmsTime_type containing time in seconds |
[in] | coupler_chksum_obj | used to compute chksum |
subroutine, public full_coupler_mod::coupler_flux_ice_to_ocean | ( | type(ice_data_type), intent(inout) | Ice, |
type(ocean_public_type), intent(inout) | Ocean, | ||
type(ice_ocean_boundary_type), intent(inout) | Ice_ocean_boundary, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks, | ||
integer, dimension(:), intent(in), optional | slow_ice_ocean_pelist, | ||
logical, intent(in), optional | set_current_slow_ice_ocean_pelist | ||
) |
This subroutine calls flux_ocean_to_ice Clocks are set before and after call flux_ice_to_ocean. Current pelist is set when optional arguments are present and set_current_slow_ice_ocean_pelist=.True.
[in] | set_current_slow_ice_ocean_pelist | if true, will call mpp_set_current_pelist(slow_ice_ocean_pelist) |
mpp_set_current_pelist(slow_ice_ocean_pelist) is not required if coupler_flux_ice_to_ocean is being called after coupler_flux_ocean_to_ice: mpp_set_current_pelist(slow_ice_ocean_pelist) is called in coupler_flux_ocean_to_ice
subroutine, public full_coupler_mod::coupler_flux_init_finish_stocks | ( | type(fmstime_type), intent(in) | Time, |
type(atmos_data_type), intent(inout) | Atm, | ||
type(land_data_type), intent(inout) | Land, | ||
type(ice_data_type), intent(inout) | Ice, | ||
type(ocean_state_type), intent(inout), pointer | Ocean_state, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks, | ||
logical, intent(in), optional | init_stocks, | ||
logical, intent(in), optional | finish_stocks | ||
) |
This subroutine calls flux_init_stocks or does the final call to flux_check_stocks.
[in] | time | current Time |
[in] | finish_stocks | control flags to either call flux_init_stocks or the final flux_check_stocks |
subroutine, public full_coupler_mod::coupler_flux_land_to_ice | ( | type(land_data_type), intent(inout) | Land, |
type(ice_data_type), intent(inout) | Ice, | ||
type(land_ice_boundary_type), intent(inout) | Land_ice_boundary, | ||
type(fmstime_type), intent(in) | Time, | ||
integer, intent(in) | current_timestep, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls flux_land_to_ice. Chksums are computed if do_chksum = .True.
[in] | time | Time (in seconds) |
[in] | current_timestep | current timestep |
[in] | coupler_chksum_obj | coupler_chksum_obj to compute chksums |
subroutine, public full_coupler_mod::coupler_flux_ocean_to_ice | ( | type(ocean_public_type), intent(inout) | Ocean, |
type(ice_data_type), intent(in) | Ice, | ||
type(ocean_ice_boundary_type), intent(inout) | Ocean_ice_boundary, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks, | ||
integer, dimension(:), intent(in) | slow_ice_ocean_pelist | ||
) |
This subroutine calls flux_ocean_to_ice. Clocks and pelists are set before and after call flux_ocean_to_ice.
subroutine, public full_coupler_mod::coupler_flux_up_to_atmos | ( | type(land_data_type), intent(inout) | Land, |
type(ice_data_type), intent(inout) | Ice, | ||
type(land_ice_atmos_boundary_type), intent(inout) | Land_ice_atmos_boundary, | ||
type(atmos_land_boundary_type), intent(inout) | Atmos_land_boundary, | ||
type(atmos_ice_boundary_type), intent(inout) | Atmos_ice_boundary, | ||
type(fmstime_type), intent(in) | Time_atmos, | ||
integer, intent(in) | current_timestep, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj, | ||
type(coupler_clock_type), intent(in) | coupler_clocks | ||
) |
This subroutine calls flux_up_to_atmos. Clocks are set for runtime statistics. Chksums are computed if do_chksum is .True.
[in] | time_atmos | Time_atmos, time in seconds |
[in] | current_timestep | current timestep |
[in] | coupler_chksum_obj | points to component types |
subroutine, public full_coupler_mod::coupler_generate_sfc_xgrid | ( | type(land_data_type), intent(inout) | Land, |
type(ice_data_type), intent(inout) | Ice, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls generate_sfc_xgrid. Clocks are set and before the call.
subroutine, public full_coupler_mod::coupler_init | ( | type(atmos_data_type), intent(inout) | Atm, |
type(ocean_public_type), intent(inout) | Ocean, | ||
type(land_data_type), intent(inout) | Land, | ||
type(ice_data_type), intent(inout) | Ice, | ||
type(ocean_state_type), intent(inout), pointer | Ocean_state, | ||
type(atmos_land_boundary_type), intent(inout) | Atmos_land_boundary, | ||
type(atmos_ice_boundary_type), intent(inout) | Atmos_ice_boundary, | ||
type(ocean_ice_boundary_type), intent(inout) | Ocean_ice_boundary, | ||
type(ice_ocean_boundary_type), intent(inout) | Ice_ocean_boundary, | ||
type(land_ice_atmos_boundary_type), intent(inout) | Land_ice_atmos_boundary, | ||
type(land_ice_boundary_type), intent(inout) | Land_ice_boundary, | ||
type(ice_ocean_driver_type), intent(inout), pointer | Ice_ocean_driver_CS, | ||
type(fmsnetcdfdomainfile_t), dimension(:), intent(inout), pointer | Ice_bc_restart, | ||
type(fmsnetcdfdomainfile_t), dimension(:), intent(inout), pointer | Ocn_bc_restart, | ||
integer, dimension(:,:), intent(inout), allocatable | ensemble_pelist, | ||
integer, dimension(:), intent(inout), allocatable | slow_ice_ocean_pelist, | ||
integer, intent(inout) | conc_nthreads, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks, | ||
type(coupler_components_type), intent(inout) | coupler_components_obj, | ||
type(coupler_chksum_type), intent(inout) | coupler_chksum_obj, | ||
type(fmstime_type), intent(inout) | Time_step_cpld, | ||
type(fmstime_type), intent(inout) | Time_step_atmos, | ||
type(fmstime_type), intent(inout) | Time_atmos, | ||
type(fmstime_type), intent(inout) | Time_ocean, | ||
integer, intent(inout) | num_cpld_calls, | ||
integer, intent(inout) | num_atmos_calls, | ||
type(fmstime_type), intent(inout) | Time, | ||
type(fmstime_type), intent(inout) | Time_start, | ||
type(fmstime_type), intent(inout) | Time_end, | ||
type(fmstime_type), intent(inout) | Time_restart, | ||
type(fmstime_type), intent(inout) | Time_restart_current | ||
) |
Initialize all defined exchange grids and all boundary maps.
The pelists need to be set before initializing the clocks
Initialize coupler_components_obj memebers to point to model components
Initialize coupler_chksum_obj
subroutine, public full_coupler_mod::coupler_intermediate_restart | ( | type(atmos_data_type), intent(inout) | Atm, |
type(ice_data_type), intent(inout) | Ice, | ||
type(ocean_public_type), intent(inout) | Ocean, | ||
type(ocean_state_type), intent(inout), pointer | Ocean_state, | ||
type(fmsnetcdfdomainfile_t), dimension(:), intent(inout), pointer | Ocn_bc_restart, | ||
type(fmsnetcdfdomainfile_t), dimension(:), intent(inout), pointer | Ice_bc_restart, | ||
type(fmstime_type), intent(in) | Time_current, | ||
type(fmstime_type), intent(inout) | Time_restart, | ||
type(fmstime_type), intent(inout) | Time_restart_current, | ||
type(fmstime_type), intent(in) | Time_start | ||
) |
Thie subroutine calls component restarts and coupler_restart where the intermediate restart files is produced in the latter calls. Time_restart is the next timestep where the intermediate restart file will be written out. Time_restart_current records the current restart time.
[in,out] | ocn_bc_restart | used for coupler type restarts |
[in,out] | ice_bc_restart | used for coupler type restarts |
[in] | time_start | current Timestep and model start time |
[in,out] | time_restart | Restart files will be written when Time=>Time_restart. Time_restart is incremented by restart_interval Time_restart_current records the current timestep the restart file is being written. Time_restart_current does not necessary = Time_restart. |
[in,out] | time_restart_current | Restart files will be written when Time=>Time_restart. Time_restart is incremented by restart_interval Time_restart_current records the current timestep the restart file is being written. Time_restart_current does not necessary = Time_restart. |
subroutine, public full_coupler_mod::coupler_restart | ( | type(atmos_data_type), intent(inout) | Atm, |
type(ice_data_type), intent(inout) | Ice, | ||
type(ocean_public_type), intent(inout) | Ocean, | ||
type(fmsnetcdfdomainfile_t), dimension(:), intent(inout), pointer | Ocn_bc_restart, | ||
type(fmsnetcdfdomainfile_t), dimension(:), intent(inout), pointer | Ice_bc_restart, | ||
type(fmstime_type), intent(in) | Time_current, | ||
type(fmstime_type), intent(in) | Time_restart_current, | ||
type(fmstime_type), intent(in) | Time_start, | ||
character(len=*), intent(in), optional | time_stamp | ||
) |
Writing restart file that contains running time and restart file writing time.
[in,out] | ocn_bc_restart | required for restarts |
[in,out] | ice_bc_restart | required for restarts |
[in] | time_current | current model runtime (Time) |
[in] | time_restart_current | current restart time |
[in] | time_start | model start time |
[in] | time_stamp | time_stamp for restart |
|
private |
This subroutine sets the ID for clocks used in coupler_main.
[in] | atm | Atm, required to retrieve pe information |
[in] | land | Land, required to retrieve pe information |
[in] | ocean | Ocean, required to retrieve pe information |
[in] | ice | Ice, required to retrieve pe information |
[in] | slow_ice_ocean_pelist | slow_ice_oean_pelist |
[in] | ensemble_id | ensemble_id used as index in ensemble_pelist |
initialization clock
subroutine, public full_coupler_mod::coupler_set_ice_surface_fields | ( | type(ice_data_type), intent(inout) | Ice, |
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls set_ice_surface_fields. Clocks and pelist are set before/after the call.
subroutine, public full_coupler_mod::coupler_sfc_boundary_layer | ( | type(atmos_data_type), intent(inout) | Atm, |
type(land_data_type), intent(inout) | Land, | ||
type(ice_data_type), intent(inout) | Ice, | ||
type(land_ice_atmos_boundary_type), intent(inout) | Land_ice_atmos_boundary, | ||
type(fmstime_type), intent(in) | Time_atmos, | ||
integer, intent(in) | current_timestep, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls coupler_sfc_boundary_layer. Chksums are computed if do_chksum = .True. Clocks are set for runtime statistics.
[in] | time_atmos | Atmos time |
[in] | current_timestep | (nc-1)*num_atmos_cal + na |
subroutine, public full_coupler_mod::coupler_summarize_timestep | ( | integer, intent(in) | current_timestep, |
integer, intent(in) | num_cpld_calls, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj, | ||
logical, intent(in) | is_atmos_pe, | ||
real, dimension(:), intent(inout) | omp_sec, | ||
real, dimension(:), intent(inout) | imb_sec | ||
) |
This subroutine mainly prints out the current timestep in the stdout. Chksum is computed if do_chksum = .True.
[in] | current_timestep | current_timestep, nc |
[in] | num_cpld_calls | total number of outerloop timestep |
[in] | is_atmos_pe | Atmpe |
[in,out] | imb_sec | from omp computation |
subroutine, public full_coupler_mod::coupler_unpack_land_ice_boundary | ( | type(ice_data_type), intent(inout) | Ice, |
type(land_ice_boundary_type), intent(inout) | Land_ice_boundary, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls ice_model_fast_cleanup and unpack_land_ice_boundary.
These two calls occur on whichever PEs handle the fast ice processess.
subroutine, public full_coupler_mod::coupler_unpack_ocean_ice_boundary | ( | integer, intent(in) | nc, |
type(fmstime_type), intent(inout) | Time_flux_ocean_to_ice, | ||
type(ice_data_type), intent(inout) | Ice, | ||
type(ocean_ice_boundary_type), intent(inout) | Ocean_ice_boundary, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj | ||
) |
This subroutine calls flux_ocean_to_ice_finish and unpack_ocean_ice_boundary. Clocks and pelists are set before/after the calls. Checksum is computed if do_chksum=.True.
[in] | nc | Current outer loop timestep |
[in,out] | time_flux_ocean_to_ice | Time flux_ocean_to_ice |
subroutine, public full_coupler_mod::coupler_update_atmos_model_down | ( | type(atmos_data_type), intent(inout) | Atm, |
type(land_ice_atmos_boundary_type), intent(inout) | Land_ice_atmos_boundary, | ||
integer, intent(in) | current_timestep, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls update_atmos_model_down. Clocks are set for runtime statistics. Chksums and memory usage are computed if do_chksum and do_debug are .True.
[in,out] | land_ice_atmos_boundary | Land ice_atmos_boundary |
[in] | current_timestep | Current timestep |
[in] | coupler_chksum_obj | coupler_chksum_obj pointing to component types |
subroutine, public full_coupler_mod::coupler_update_atmos_model_dynamics | ( | type(atmos_data_type), intent(inout) | Atm, |
integer, intent(in) | current_timestep, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls update_atmos_model_dynamics. Clocks are set for runtime statistics. Chksums and memory usage are computed if do_chksum and do_debug are .True.
[in] | current_timestep | Current timestep |
[in] | coupler_chksum_obj | coupler_chksum_obj pointing to component types |
subroutine, public full_coupler_mod::coupler_update_atmos_model_radiation | ( | type(atmos_data_type), intent(inout) | Atm, |
type(land_ice_atmos_boundary_type), intent(inout) | Land_ice_atmos_boundary, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks, | ||
integer, intent(in), optional | current_timestep, | ||
type(coupler_chksum_type), intent(in), optional | coupler_chksum_obj | ||
) |
This subroutine calls update_atmos_model_radiation. Clocks are set for runtime statistics. Chksums are computed if do_chksum is .True. and do_concurrent_radiation is .False.. Memory usage is computed if do_debug is .True.
[in] | current_timestep | Current timestep |
[in] | coupler_chksum_obj | points to component types |
cannot put mpp_chksum for concurrent_radiation as it requires the ability to have two different OpenMP threads inside of MPI at the same time which is not currently allowed
subroutine, public full_coupler_mod::coupler_update_atmos_model_state | ( | type(atmos_data_type), intent(inout) | Atm, |
integer, intent(in) | current_timestep, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls update_atmos_model_state. Chksums are mem usage are computed if do_chksum and do_debug are .True. respectively.
[in] | coupler_chksum_obj | used to compute chksums |
subroutine, public full_coupler_mod::coupler_update_atmos_model_up | ( | type(atmos_data_type), intent(inout) | Atm, |
type(land_ice_atmos_boundary_type), intent(inout) | Land_ice_atmos_boundary, | ||
integer, intent(in) | current_timestep, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls update_atmos_model_up. Clocks are set for runtime statistics. Chksums and memory usage are computed if do_chksum and do_debug are .True.
[in] | coupler_chksum_obj | points to component types |
subroutine, public full_coupler_mod::coupler_update_ice_model_fast | ( | type(ice_data_type), intent(inout) | Ice, |
type(atmos_ice_boundary_type), intent(inout) | Atmos_ice_boundary, | ||
integer, dimension(:), intent(in) | atm_pelist, | ||
integer, intent(in) | current_timestep, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls update_ice_model_fast. Clocks are set for runtime statistics. Chksums and memory usage are computed if do_chksum and do_debug are .True.
[in] | atm_pelist | Atmpelist to reset the pelist to Atmpelist |
[in] | coupler_chksum_obj | points to component types |
[in,out] | coupler_clocks | current pelist = Atmpelist |
subroutine, public full_coupler_mod::coupler_update_ice_model_slow_and_stocks | ( | type(ice_data_type), intent(inout) | Ice, |
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls update_ice_model_slow and flux_ice_to_ocean_stocks.
subroutine, public full_coupler_mod::coupler_update_land_model_fast | ( | type(land_data_type), intent(inout) | Land, |
type(atmos_land_boundary_type), intent(inout) | Atmos_land_boundary, | ||
integer, dimension(:), intent(in) | atm_pelist, | ||
integer, intent(in) | current_timestep, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
This subroutine calls update_land_model_fast. Clocks are set for runtime statistics. Chksums and memory usage are computed if do_chksum and do_debug are .True.
[in] | atm_pelist | Atmpelist to reset the pelist to Atmpelist |
[in] | current_timestep | current timestep |
[in] | coupler_chksum_obj | points to component types |
[in,out] | coupler_clocks | current pelist=Atmpelist |
subroutine, public full_coupler_mod::coupler_update_land_model_slow | ( | type(land_data_type), intent(inout) | Land, |
type(atmos_land_boundary_type), intent(inout) | Atmos_land_boundary, | ||
integer, dimension(:), intent(in) | atm_pelist, | ||
integer, intent(in) | current_timestep, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj, | ||
type(coupler_clock_type), intent(inout) | coupler_clocks | ||
) |
In this subroutine, update_land model_slow is called by the Landpes. The atm_pelist are only required to set the clocks. Chksums are computed if do_chksum = .True.
[in] | atm_pelist | atm_pelist used for clocks |
[in] | current_timestep | current timestep |
[in] | coupler_chksum_obj | coupler_chksum_obj for chksum computation |
subroutine, public full_coupler_mod::coupler_update_ocean_model | ( | type(ocean_public_type), intent(inout) | Ocean, |
type(ocean_state_type), intent(inout), pointer | Ocean_state, | ||
type(ice_ocean_boundary_type), intent(inout) | Ice_ocean_boundary, | ||
type(fmstime_type), intent(inout) | Time_ocean, | ||
type(fmstime_type), intent(in) | Time_step_cpld, | ||
integer, intent(in) | current_timestep, | ||
type(coupler_chksum_type), intent(in) | coupler_chksum_obj | ||
) |
This subroutine calls update_ocean_model. Chksums are computed if do_chksum = .True.
[in] | time_step_cpld | total number of timesteps |
[in] | current_timestep | current timestep |
[in] | coupler_chksum_obj | used for checksum computation |
|
private |
This subroutine calls subroutine that will print out checksums of the elements of the appropriate type. For coupled models typically these types are not defined on all processors. It is assumed that the appropriate pelist has been set before entering this routine. This can be achieved in the following way.
If you are on the global pelist before you enter this routine using the above call, you can return to the global pelist by invoking
after you exit. This is only necessary if you need to return to the global pelist.
[in] | this | self |
[in] | id | id to label CHECKSUMS in stdout |
|
private |
This subroutine calls coupler_chksum as well as atmos_ice_land_chksum and ocean_chksum.
[in] | this | self |
[in] | id | ID labelling the set of checksums |
|
private |
Function get_component returns the requested component in the coupler_components_type object Users are required to provide the component to be retrieved as an input argument. For example, coupler_components_objget_component(Atm) will return Atm = coupler_components_objAtm.
[in] | this | the coupler_components_type object |
[out] | retrieve_component | requested component to be retrieve. retrieve_component can be of type atmos_data_type, land_data_type, ice_data_type, ocean_public_type, land_ice_atmos_boundary_type, atmos_land_boundary_type, atmos_ice_boundary_type, land_ice_boundary_type, ice_ocean_boundary_type, ocean_ice_boundary_type |
|
private |
This subroutine retrieves coupler_chksum_objcomponents_obj.
[in] | this | coupler_chksum_type |
[out] | components_obj | coupler_components_type to be returned |
|
private |
Print out checksums for several atm, land and ice variables.
[in] | this | self |
[in] | id | id to label CHECKSUMS in stdout |
|
private |
This subroutine calls subroutine that will print out checksums of the elements of the appropriate type. For coupled models typically these types are not defined on all processors. It is assumed that the appropriate pelist has been set before entering this routine. This can be achieved in the following way.
If you are on the global pelist before you enter this routine using the above call, you can return to the global pelist by invoking
after you exit. This is only necessary if you need to return to the global pelist.
[in] | this | self |
[in] | id | ID labelling the set of CHECKSUMS |
|
private |
This subroutine calls subroutine that will print out checksums of the elements of the appropriate type. For coupled models typically these types are not defined on all processors. It is assumed that the appropriate pelist has been set before entering this routine. This can be achieved in the following way.
If you are on the global pelist before you enter this routine using the above call, you can return to the global pelist by invoking
after you exit. This is only necessary if you need to return to the global pelist.
[in] | this | self |
[in] | id | id to label CHECKSUMS in stdout |
|
private |
This subroutine associates the pointer in an object of coupler_chksum_type to the component models.
|
private |
This subroutine associates the pointer in an object of coupler_components_type to the model components.
[in,out] | this | self |
integer, public full_coupler_mod::atmos_npes =0 |
The number of MPI tasks to use for the atmosphere.
integer, public full_coupler_mod::atmos_nthreads =1 |
Number of OpenMP threads to use in the atmosphere.
|
private |
|
private |
integer, public full_coupler_mod::check_stocks = 0 |
-1: never 0: at end of run only n>0: every n coupled steps
logical, public full_coupler_mod::combined_ice_and_ocean =.FALSE. |
logical, public full_coupler_mod::concurrent =.FALSE. |
If .TRUE., the ocean executes concurrently with the atmosphere-land-ice on a separate set of PEs. Concurrent should be .TRUE. if concurrent_ice is .TRUE. If .FALSE., the execution is serial: call atmos... followed by call ocean...
logical, public full_coupler_mod::concurrent_ice =.FALSE. |
If .TRUE., the slow sea-ice is forced with the fluxes that were used for the fast ice processes one timestep before. When used in conjuction with setting slow_ice_with_ocean=.TRUE., this approach allows the atmosphere and ocean to run concurrently even if use_lag_fluxes=.FALSE., and it can be shown to ameliorate or eliminate several ice-ocean coupled instabilities.
|
private |
The date that the current integration starts with. (See force_date_from_namelist.)
The calendar type used by the current integration. Valid values are consistent with the time_manager module: 'gregorian', 'julian', 'noleap', or 'thirty_day'. The value 'no_calendar' cannot be used because the time_manager's date functions are used. All values must be lower case.
|
private |
coupled model initial date
integer, public full_coupler_mod::days =0 |
Number of days the current integration will be run.
logical, public full_coupler_mod::do_atmos =.true. |
Indicates if this component should be executed. If .FALSE., then execution is skipped. This is used when ALL the output fields sent by this component to the coupler have been overridden using the data_override feature. This is for advanced users only.
logical, public full_coupler_mod::do_chksum =.FALSE. |
If .TRUE., do multiple checksums throughout the execution of the model.
logical, public full_coupler_mod::do_concurrent_radiation =.FALSE. |
If .TRUE. then radiation is done concurrently.
logical, public full_coupler_mod::do_debug =.FALSE. |
If .TRUE. print additional debugging messages.
logical, public full_coupler_mod::do_endpoint_chksum =.TRUE. |
If .TRUE., do checksums of the initial and final states.
logical, public full_coupler_mod::do_flux =.true. |
See do_atmos.
logical, public full_coupler_mod::do_ice =.true. |
See do_atmos.
logical, public full_coupler_mod::do_land =.true. |
See do_atmos.
logical, public full_coupler_mod::do_ocean =.true. |
See do_atmos.
integer, public full_coupler_mod::dt_atmos = 0 |
Atmospheric model time step in seconds, including the fast coupling with land and sea ice.
integer, public full_coupler_mod::dt_cpld = 0 |
Time step in seconds for coupling between ocean and atmospheric models. This must be an integral multiple of dt_atmos and dt_ocean. This is the "slow" timestep.
|
private |
Flag that determines whether the namelist variable current_date should override the date in the restart file INPUT/coupler.res
. If the restart file does not exist then force_date_from_namelist has no effect, the value of current_date will be used.
integer, public full_coupler_mod::hours =0 |
Number of hours the current integration will be run.
integer, public full_coupler_mod::ice_npes =0 |
The number of MPI tasks to use for the ice.
integer, public full_coupler_mod::land_npes =0 |
The number of MPI tasks to use for the land.
integer, public full_coupler_mod::minutes =0 |
Number of minutes the current integration will be run.
|
private |
integer, public full_coupler_mod::months =0 |
Number of months the current integration will be run.
integer, public full_coupler_mod::ocean_npes =0 |
The number of MPI tasks to use for the ocean.
integer, public full_coupler_mod::ocean_nthreads =1 |
Number of OpenMP threads to use in the ocean.
integer, public full_coupler_mod::radiation_nthreads =1 |
Number of threads to use for the radiation.
integer, dimension(6), public full_coupler_mod::restart_interval = (/ 0, 0, 0, 0, 0, 0/) |
namelist interface
The time interval that write out intermediate restart file. The format is (yr,mo,day,hr,min,sec). When restart_interval is all zero, no intermediate restart file will be written out
integer, public full_coupler_mod::seconds =0 |
Number of seconds the current integration will be run.
logical, public full_coupler_mod::slow_ice_with_ocean =.FALSE. |
If true, the slow sea-ice is advanced on the ocean processors. Otherwise the slow sea-ice processes are on the same PEs as the fast sea-ice.
If true, there is a single call from the coupler to advance both the slow sea-ice and the ocean. slow_ice_with_ocean and concurrent_ice must both be true if combined_ice_and_ocean is true.
|
private |
logical, public full_coupler_mod::use_hyper_thread = .false. |
logical, public full_coupler_mod::use_lag_fluxes =.TRUE. |
If .TRUE., the ocean is forced with SBCs from one coupling timestep ago. If .FALSE., the ocean is forced with most recent SBCs. For an old leapfrog MOM4 coupling with dt_cpld=dt_ocean, lag fluxes can be shown to be stable and current fluxes to be unconditionally unstable. For dt_cpld>dt_ocean there is probably sufficient damping for MOM4. For more modern ocean models (such as MOM5, GOLD or MOM6) that do not use leapfrog timestepping, use_lag_fluxes=.False. should be much more stable.