MOM6
|
This module contains the subroutines that advect tracers along coordinate surfaces.
This program contains the subroutines that advect tracers horizontally (i.e. along layers).
Data Types | |
type | tracer_advect_cs |
Control structure for this module. More... | |
integer | id_clock_advect |
CPU time clocks. More... | |
integer | id_clock_pass |
CPU time clocks. More... | |
integer | id_clock_sync |
CPU time clocks. More... | |
subroutine, public | advect_tracer (h_end, uhtr, vhtr, OBC, dt, G, GV, US, CS, Reg, h_prev_opt, max_iter_in, x_first_in, uhr_out, vhr_out, h_out) |
This routine time steps the tracer concentration using a monotonic, conservative, weakly diffusive scheme. More... | |
subroutine | advect_x (Tr, hprev, uhr, uh_neglect, OBC, domore_u, ntr, Idt, is, ie, js, je, k, G, GV, US, usePPM, useHuynh) |
This subroutine does 1-d flux-form advection in the zonal direction using a monotonic piecewise linear scheme. More... | |
subroutine | advect_y (Tr, hprev, vhr, vh_neglect, OBC, domore_v, ntr, Idt, is, ie, js, je, k, G, GV, US, usePPM, useHuynh) |
This subroutine does 1-d flux-form advection using a monotonic piecewise linear scheme. More... | |
subroutine, public | tracer_advect_init (Time, G, US, param_file, diag, CS) |
Initialize lateral tracer advection module. More... | |
subroutine, public | tracer_advect_end (CS) |
Close the tracer advection module. More... | |
subroutine, public mom_tracer_advect::advect_tracer | ( | real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(in) | h_end, |
real, dimension( g %isdb: g %iedb, g %jsd: g %jed, g %ke), intent(in) | uhtr, | ||
real, dimension( g %isd: g %ied, g %jsdb: g %jedb, g %ke), intent(in) | vhtr, | ||
type(ocean_obc_type), pointer | OBC, | ||
real, intent(in) | dt, | ||
type(ocean_grid_type), intent(inout) | G, | ||
type(verticalgrid_type), intent(in) | GV, | ||
type(unit_scale_type), intent(in) | US, | ||
type(tracer_advect_cs), pointer | CS, | ||
type(tracer_registry_type), pointer | Reg, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(in), optional | h_prev_opt, | ||
integer, intent(in), optional | max_iter_in, | ||
logical, intent(in), optional | x_first_in, | ||
real, dimension( g %isdb: g %iedb, g %jsd: g %jed, g %ke), intent(out), optional | uhr_out, | ||
real, dimension( g %isd: g %ied, g %jsdb: g %jedb, g %ke), intent(out), optional | vhr_out, | ||
real, dimension( g %isd: g %ied, g %jsd: g %jed, g %ke), intent(out), optional | h_out | ||
) |
This routine time steps the tracer concentration using a monotonic, conservative, weakly diffusive scheme.
[in,out] | g | ocean grid structure |
[in] | gv | ocean vertical grid structure |
[in] | h_end | layer thickness after advection [H ~> m or kg m-2] |
[in] | uhtr | accumulated volume/mass flux through zonal face [H L2 ~> m3 or kg] |
[in] | vhtr | accumulated volume/mass flux through merid face [H L2 ~> m3 or kg] |
obc | specifies whether, where, and what OBCs are used | |
[in] | dt | time increment [T ~> s] |
[in] | us | A dimensional unit scaling type |
cs | control structure for module | |
reg | pointer to tracer registry | |
[in] | h_prev_opt | layer thickness before advection [H ~> m or kg m-2] |
[in] | max_iter_in | The maximum number of iterations |
[in] | x_first_in | If present, indicate whether to update first in the x- or y-direction. |
[out] | uhr_out | accumulated volume/mass flux through zonal face |
[out] | vhr_out | accumulated volume/mass flux through merid face |
[out] | h_out | layer thickness before advection [H ~> m or kg m-2] |
Definition at line 52 of file MOM_tracer_advect.F90.
References advect_x(), advect_y(), mom_domains::do_group_pass(), id_clock_advect, id_clock_pass, id_clock_sync, and mom_error_handler::mom_error().
Referenced by mom_offline_main::offline_advection_ale(), mom_offline_main::offline_advection_layer(), and mom_offline_main::offline_redistribute_residual().
|
private |
This subroutine does 1-d flux-form advection in the zonal direction using a monotonic piecewise linear scheme.
[in,out] | g | The ocean's grid structure |
[in] | gv | The ocean's vertical grid structure |
[in,out] | tr | The array of registered tracers to work on |
[in,out] | hprev | cell volume at the end of previous tracer change [H L2 ~> m3 or kg] |
[in,out] | uhr | accumulated volume/mass flux through the zonal face [H L2 ~> m3 or kg] |
[in,out] | uh_neglect | A tiny zonal mass flux that can be neglected [H L2 ~> m3 or kg] |
obc | specifies whether, where, and what OBCs are used | |
[in,out] | domore_u | If true, there is more advection to be done in this u-row |
[in] | idt | The inverse of dt [T-1 ~> s-1] |
[in] | ntr | The number of tracers |
[in] | is | The starting tracer i-index to work on |
[in] | ie | The ending tracer i-index to work on |
[in] | js | The starting tracer j-index to work on |
[in] | je | The ending tracer j-index to work on |
[in] | k | The k-level to work on |
[in] | us | A dimensional unit scaling type |
[in] | useppm | If true, use PPM instead of PLM |
[in] | usehuynh | If true, use the Huynh scheme for PPM interface values |
Definition at line 330 of file MOM_tracer_advect.F90.
Referenced by advect_tracer().
|
private |
This subroutine does 1-d flux-form advection using a monotonic piecewise linear scheme.
[in,out] | g | The ocean's grid structure |
[in] | gv | The ocean's vertical grid structure |
[in,out] | tr | The array of registered tracers to work on |
[in,out] | hprev | cell volume at the end of previous tracer change [H L2 ~> m3 or kg] |
[in,out] | vhr | accumulated volume/mass flux through the meridional face [H L2 ~> m3 or kg] |
[in,out] | vh_neglect | A tiny meridional mass flux that can be neglected [H L2 ~> m3 or kg] |
obc | specifies whether, where, and what OBCs are used | |
[in,out] | domore_v | If true, there is more advection to be done in this v-row |
[in] | idt | The inverse of dt [T-1 ~> s-1] |
[in] | ntr | The number of tracers |
[in] | is | The starting tracer i-index to work on |
[in] | ie | The ending tracer i-index to work on |
[in] | js | The starting tracer j-index to work on |
[in] | je | The ending tracer j-index to work on |
[in] | k | The k-level to work on |
[in] | us | A dimensional unit scaling type |
[in] | useppm | If true, use PPM instead of PLM |
[in] | usehuynh | If true, use the Huynh scheme for PPM interface values |
Definition at line 689 of file MOM_tracer_advect.F90.
Referenced by advect_tracer().
subroutine, public mom_tracer_advect::tracer_advect_end | ( | type(tracer_advect_cs), pointer | CS | ) |
Close the tracer advection module.
cs | module control structure |
Definition at line 1110 of file MOM_tracer_advect.F90.
Referenced by mom::mom_end().
subroutine, public mom_tracer_advect::tracer_advect_init | ( | type(time_type), intent(in), target | Time, |
type(ocean_grid_type), intent(in) | G, | ||
type(unit_scale_type), intent(in) | US, | ||
type(param_file_type), intent(in) | param_file, | ||
type(diag_ctrl), intent(inout), target | diag, | ||
type(tracer_advect_cs), pointer | CS | ||
) |
Initialize lateral tracer advection module.
[in] | time | current model time |
[in] | g | ocean grid structure |
[in] | us | A dimensional unit scaling type |
[in] | param_file | open file to parse for model parameters |
[in,out] | diag | regulates diagnostic output |
cs | module control structure |
Definition at line 1055 of file MOM_tracer_advect.F90.
References id_clock_advect, id_clock_pass, id_clock_sync, and mom_error_handler::mom_error().
integer mom_tracer_advect::id_clock_advect |
CPU time clocks.
Definition at line 41 of file MOM_tracer_advect.F90.
Referenced by advect_tracer(), and tracer_advect_init().
|
private |
CPU time clocks.
Definition at line 42 of file MOM_tracer_advect.F90.
Referenced by advect_tracer(), and tracer_advect_init().
|
private |
CPU time clocks.
Definition at line 43 of file MOM_tracer_advect.F90.
Referenced by advect_tracer(), and tracer_advect_init().