MOM6
|
Simulates CFCs using the OCMIP2 protocols.
By Robert Hallberg, 2007
This module contains the code that is needed to set up and use CFC-11 and CFC-12 in a fully coupled or ice-ocean model context using the OCMIP2 protocols
Data Types | |
type | ocmip2_cfc_cs |
The control structure for the OCMPI2_CFC tracer package. More... | |
Functions/Subroutines | |
logical function, public | register_ocmip2_cfc (HI, GV, param_file, CS, tr_Reg, restart_CS) |
Register the OCMIP2 CFC tracers to be used with MOM and read the parameters that are used with this tracer package. More... | |
subroutine, public | flux_init_ocmip2_cfc (CS, verbosity) |
This subroutine initializes the air-sea CFC fluxes, and optionally returns the indicies of these fluxes. It can safely be called multiple times. More... | |
subroutine, public | initialize_ocmip2_cfc (restart, day, G, GV, US, h, diag, OBC, CS, sponge_CSp) |
Initialize the OCMP2 CFC tracer fields and set up the tracer output. More... | |
subroutine | init_tracer_cfc (h, tr, name, land_val, IC_val, G, US, CS) |
This subroutine initializes a tracer array. More... | |
subroutine, public | ocmip2_cfc_column_physics (h_old, h_new, ea, eb, fluxes, dt, G, GV, US, CS, evap_CFL_limit, minimum_forcing_depth) |
This subroutine applies diapycnal diffusion, souces and sinks and any other column tracer physics or chemistry to the OCMIP2 CFC tracers. CFCs are relatively simple, as they are passive tracers with only a surface flux as a source. More... | |
integer function, public | ocmip2_cfc_stock (h, stocks, G, GV, CS, names, units, stock_index) |
This function calculates the mass-weighted integral of all tracer stocks, returning the number of stocks it has calculated. If the stock_index is present, only the stock corresponding to that coded index is returned. More... | |
subroutine, public | ocmip2_cfc_surface_state (state, h, G, CS) |
This subroutine extracts the surface CFC concentrations and other fields that are shared with the atmosphere to calculate CFC fluxes. More... | |
subroutine, public | ocmip2_cfc_end (CS) |
Deallocate any memory associated with the OCMIP2 CFC tracer package. More... | |
Variables | |
integer, parameter | ntr = 2 |
the number of tracers in this module. More... | |
subroutine, public mom_ocmip2_cfc::flux_init_ocmip2_cfc | ( | type(ocmip2_cfc_cs), optional, pointer | CS, |
integer, intent(in), optional | verbosity | ||
) |
This subroutine initializes the air-sea CFC fluxes, and optionally returns the indicies of these fluxes. It can safely be called multiple times.
cs | An optional pointer to the control structure for this module; if not present, the flux indicies are not stored. | |
[in] | verbosity | A 0-9 integer indicating a level of verbosity. |
Definition at line 282 of file MOM_OCMIP2_CFC.F90.
References atmos_ocean_fluxes_mod::aof_set_coupler_flux().
Referenced by register_ocmip2_cfc().
|
private |
This subroutine initializes a tracer array.
[in] | g | The ocean's grid structure |
[in] | us | A dimensional unit scaling type |
[in] | h | Layer thicknesses [H ~> m or kg m-2] |
[out] | tr | The tracer concentration array |
[in] | name | The tracer name |
[in] | land_val | A value the tracer takes over land |
[in] | ic_val | The initial condition value for the tracer |
cs | The control structure returned by a previous call to register_OCMIP2_CFC. |
Definition at line 363 of file MOM_OCMIP2_CFC.F90.
References mom_error_handler::mom_error(), and mom_tracer_z_init::tracer_z_init().
Referenced by initialize_ocmip2_cfc().
subroutine, public mom_ocmip2_cfc::initialize_ocmip2_cfc | ( | logical, intent(in) | restart, |
type(time_type), intent(in), target | day, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h, | ||
type(diag_ctrl), intent(in), target | diag, | ||
type(ocean_obc_type), pointer | OBC, | ||
type(ocmip2_cfc_cs), pointer | CS, | ||
type(sponge_cs), pointer | sponge_CSp | ||
) |
Initialize the OCMP2 CFC tracer fields and set up the tracer output.
[in] | restart | .true. if the fields have already been read from a restart file. |
[in] | day | Time of the start of the run. |
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | us | A dimensional unit scaling type |
[in] | h | Layer thicknesses [H ~> m or kg m-2]. |
[in] | diag | A structure that is used to regulate diagnostic output. |
obc | This open boundary condition type specifies whether, where, and what open boundary conditions are used. | |
cs | The control structure returned by a previous call to register_OCMIP2_CFC. | |
sponge_csp | A pointer to the control structure for the sponges, if they are in use. Otherwise this may be unassociated. |
Definition at line 317 of file MOM_OCMIP2_CFC.F90.
References init_tracer_cfc().
subroutine, public mom_ocmip2_cfc::ocmip2_cfc_column_physics | ( | real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(in) | h_old, |
real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(in) | h_new, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(in) | ea, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(in) | eb, | ||
type(forcing), intent(in) | fluxes, | ||
real, intent(in) | dt, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(ocmip2_cfc_cs), pointer | CS, | ||
real, intent(in), optional | evap_CFL_limit, | ||
real, intent(in), optional | minimum_forcing_depth | ||
) |
This subroutine applies diapycnal diffusion, souces and sinks and any other column tracer physics or chemistry to the OCMIP2 CFC tracers. CFCs are relatively simple, as they are passive tracers with only a surface flux as a source.
[in] | g | The ocean's grid structure |
[in] | gv | The ocean's vertical grid structure |
[in] | h_old | Layer thickness before entrainment [H ~> m or kg m-2]. |
[in] | h_new | Layer thickness after entrainment [H ~> m or kg m-2]. |
[in] | ea | an array to which the amount of fluid entrained |
[in] | eb | an array to which the amount of fluid entrained |
[in] | fluxes | A structure containing pointers to thermodynamic and tracer forcing fields. Unused fields have NULL ptrs. |
[in] | dt | The amount of time covered by this call [T ~> s] |
[in] | us | A dimensional unit scaling type |
cs | The control structure returned by a previous call to register_OCMIP2_CFC. | |
[in] | evap_cfl_limit | Limit on the fraction of the water that can be fluxed out of the top layer in a timestep [nondim] |
[in] | minimum_forcing_depth | The smallest depth over which fluxes can be applied [H ~> m or kg m-2] |
Definition at line 411 of file MOM_OCMIP2_CFC.F90.
References mom_tracer_diabatic::applytracerboundaryfluxesinout(), and mom_tracer_diabatic::tracer_vertdiff().
subroutine, public mom_ocmip2_cfc::ocmip2_cfc_end | ( | type(ocmip2_cfc_cs), pointer | CS | ) |
Deallocate any memory associated with the OCMIP2 CFC tracer package.
cs | The control structure returned by a previous call to register_OCMIP2_CFC. |
Definition at line 618 of file MOM_OCMIP2_CFC.F90.
integer function, public mom_ocmip2_cfc::ocmip2_cfc_stock | ( | real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(in) | h, |
real, dimension(:), intent(out) | stocks, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(ocmip2_cfc_cs), pointer | CS, | ||
character(len=*), dimension(:), intent(out) | names, | ||
character(len=*), dimension(:), intent(out) | units, | ||
integer, intent(in), optional | stock_index | ||
) |
This function calculates the mass-weighted integral of all tracer stocks, returning the number of stocks it has calculated. If the stock_index is present, only the stock corresponding to that coded index is returned.
[in] | g | The ocean's grid structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | h | Layer thicknesses [H ~> m or kg m-2]. |
[out] | stocks | the mass-weighted integrated amount of each tracer, in kg times concentration units [kg conc]. |
cs | The control structure returned by a previous call to register_OCMIP2_CFC. | |
[out] | names | The names of the stocks calculated. |
[out] | units | The units of the stocks calculated. |
[in] | stock_index | The coded index of a specific stock being sought. |
Definition at line 497 of file MOM_OCMIP2_CFC.F90.
References mom_io::query_vardesc().
Referenced by mom_tracer_flow_control::call_tracer_stocks().
subroutine, public mom_ocmip2_cfc::ocmip2_cfc_surface_state | ( | type(surface), intent(inout) | state, |
real, dimension(szi_(g),szj_(g),szk_(g)), intent(in) | h, | ||
type(ocean_grid_type), intent(in) | G, | ||
type(ocmip2_cfc_cs), pointer | CS | ||
) |
This subroutine extracts the surface CFC concentrations and other fields that are shared with the atmosphere to calculate CFC fluxes.
[in] | g | The ocean's grid structure. |
[in,out] | state | A structure containing fields that describe the surface state of the ocean. |
[in] | h | Layer thickness [H ~> m or kg m-2]. |
cs | The control structure returned by a previous call to register_OCMIP2_CFC. |
Definition at line 546 of file MOM_OCMIP2_CFC.F90.
logical function, public mom_ocmip2_cfc::register_ocmip2_cfc | ( | type(hor_index_type), intent(in) | HI, |
type(verticalgrid_type), intent(in) | GV, | ||
type(param_file_type), intent(in) | param_file, | ||
type(ocmip2_cfc_cs), pointer | CS, | ||
type(tracer_registry_type), pointer | tr_Reg, | ||
type(mom_restart_cs), pointer | restart_CS | ||
) |
Register the OCMIP2 CFC tracers to be used with MOM and read the parameters that are used with this tracer package.
[in] | hi | A horizontal index type structure. |
[in] | gv | The ocean's vertical grid structure. |
[in] | param_file | A structure to parse for run-time parameters. |
cs | A pointer that is set to point to the control structure for this module. | |
tr_reg | A pointer to the tracer registry. | |
restart_cs | A pointer to the restart control structure. |
Definition at line 93 of file MOM_OCMIP2_CFC.F90.
References flux_init_ocmip2_cfc(), mom_error_handler::mom_error(), mom_tracer_registry::register_tracer(), and mom_io::var_desc().
|
private |
the number of tracers in this module.
Definition at line 37 of file MOM_OCMIP2_CFC.F90.