FMS Coupler  2022.03
Data Types | Modules | Functions/Subroutines | Variables
full_coupler_mod.F90 File Reference

(f306ac155bd99a9741acab4c7fcdcacd0f526ea4)

#include <file_version.fh>

Data Types

type  full_coupler_mod::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  full_coupler_mod::coupler_components_type
 
type  full_coupler_mod::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...
 

Modules

module  full_coupler_mod
 

Functions/Subroutines

subroutine, public full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::get_components_obj (this, components_obj)
 This subroutine retrieves coupler_chksum_objcomponents_obj. More...
 
subroutine, public full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::get_coupler_chksums (this, id, timestep)
 Print out checksums for several atm, land and ice variables. More...
 
subroutine full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::coupler_generate_sfc_xgrid (Land, Ice, coupler_clocks)
 This subroutine calls generate_sfc_xgrid. Clocks are set and before the call. More...
 
subroutine, public full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::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 full_coupler_mod::restart_interval = (/ 0, 0, 0, 0, 0, 0/)
 namelist interface More...
 
integer, dimension(6) full_coupler_mod::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) full_coupler_mod::calendar = ' '
 
logical full_coupler_mod::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 full_coupler_mod::months =0
 Number of months the current integration will be run. More...
 
integer, public full_coupler_mod::days =0
 Number of days the current integration will be run. More...
 
integer, public full_coupler_mod::hours =0
 Number of hours the current integration will be run. More...
 
integer, public full_coupler_mod::minutes =0
 Number of minutes the current integration will be run. More...
 
integer, public full_coupler_mod::seconds =0
 Number of seconds the current integration will be run. More...
 
integer, public full_coupler_mod::dt_atmos = 0
 Atmospheric model time step in seconds, including the fast coupling with land and sea ice. More...
 
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. More...
 
integer, public full_coupler_mod::atmos_npes =0
 The number of MPI tasks to use for the atmosphere. More...
 
integer, public full_coupler_mod::ocean_npes =0
 The number of MPI tasks to use for the ocean. More...
 
integer, public full_coupler_mod::ice_npes =0
 The number of MPI tasks to use for the ice. More...
 
integer, public full_coupler_mod::land_npes =0
 The number of MPI tasks to use for the land. More...
 
integer, public full_coupler_mod::atmos_nthreads =1
 Number of OpenMP threads to use in the atmosphere. More...
 
integer, public full_coupler_mod::ocean_nthreads =1
 Number of OpenMP threads to use in the ocean. More...
 
integer, public full_coupler_mod::radiation_nthreads =1
 Number of threads to use for the radiation. More...
 
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. More...
 
logical, public full_coupler_mod::do_land =.true.
 See do_atmos. More...
 
logical, public full_coupler_mod::do_ice =.true.
 See do_atmos. More...
 
logical, public full_coupler_mod::do_ocean =.true.
 See do_atmos. More...
 
logical, public full_coupler_mod::do_flux =.true.
 See do_atmos. More...
 
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... More...
 
logical, public full_coupler_mod::do_concurrent_radiation =.FALSE.
 If .TRUE. then radiation is done concurrently. More...
 
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. More...
 
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. More...
 
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. More...
 
logical, public full_coupler_mod::combined_ice_and_ocean =.FALSE.
 
logical, public full_coupler_mod::do_chksum =.FALSE.
 If .TRUE., do multiple checksums throughout the execution of the model. More...
 
logical, public full_coupler_mod::do_endpoint_chksum =.TRUE.
 If .TRUE., do checksums of the initial and final states. More...
 
logical, public full_coupler_mod::do_debug =.FALSE.
 If .TRUE. print additional debugging messages. More...
 
integer, public full_coupler_mod::check_stocks = 0
 -1: never 0: at end of run only n>0: every n coupled steps More...
 
logical, public full_coupler_mod::use_hyper_thread = .false.
 
character(len=80) full_coupler_mod::text
 
character(len=48), parameter full_coupler_mod::mod_name = 'coupler_main_mod'
 
integer full_coupler_mod::calendar_type = INVALID_CALENDAR
 
integer, dimension(6) full_coupler_mod::date_init = (/ 0, 0, 0, 0, 0, 0 /)
 coupled model initial date More...