MeridionalAdvectionDiffusion¶
digraph inheritance56ee71c0cd { bgcolor=transparent; rankdir=LR; ratio=expand; size=""; "AdvectionDiffusion" [URL="climlab.dynamics.AdvectionDiffusion.html#climlab.dynamics.advection_diffusion.AdvectionDiffusion",dirType=back,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=14,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="A parent class for one dimensional implicit advection-diffusion modules."]; "ImplicitProcess" -> "AdvectionDiffusion" [arrowsize=0.5,dirType=back,style="setlinewidth(0.5)"]; "ImplicitProcess" [URL="climlab.process.implicit.html#climlab.process.implicit.ImplicitProcess",dirType=back,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=14,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="A parent class for modules that use implicit time discretization."]; "TimeDependentProcess" -> "ImplicitProcess" [arrowsize=0.5,dirType=back,style="setlinewidth(0.5)"]; "MeridionalAdvectionDiffusion" [URL="#climlab.dynamics.meridional_advection_diffusion.MeridionalAdvectionDiffusion",dirType=back,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=14,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="A parent class for meridional advection-diffusion processes."]; "AdvectionDiffusion" -> "MeridionalAdvectionDiffusion" [arrowsize=0.5,dirType=back,style="setlinewidth(0.5)"]; "Process" [URL="climlab.process.process.html#climlab.process.process.Process",dirType=back,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=14,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="A generic parent class for all climlab process objects."]; "TimeDependentProcess" [URL="climlab.process.time_dependent_process.html#climlab.process.time_dependent_process.TimeDependentProcess",dirType=back,fillcolor=white,fontname="Vera Sans, DejaVu Sans, Liberation Sans, Arial, Helvetica, sans",fontsize=14,height=0.25,shape=box,style="setlinewidth(0.5),filled",target="_top",tooltip="A generic parent class for all time-dependent processes."]; "Process" -> "TimeDependentProcess" [arrowsize=0.5,dirType=back,style="setlinewidth(0.5)"]; }General solver of the 1D meridional advection-diffusion equation on the sphere:
for a state variable \(\psi(\phi,t)\), arbitrary diffusivity \(K(\phi)\) in units of \(x^2 ~ t^{-1}\), and advecting velocity \(U(\phi)\). \(\phi\) is latitude and \(a\) is the Earth’s radius (in meters).
\(K\) and \(U\) can be scalars, or optionally vector specified at grid cell boundaries (so their lengths must be exactly 1 greater than the length of \(\phi\)).
\(K\) and \(U\) can be modified by the user at any time (e.g., after each timestep, if they depend on other state variables).
A fully implicit timestep is used for computational efficiency. Thus the computed tendency \(\frac{\partial \psi}{\partial t}\) will depend on the timestep.
In addition to the tendency over the implicit timestep, the solver also calculates several diagnostics from the updated state:
diffusive_flux
given by \(-\frac{K(\phi)}{a} ~ \frac{\partial \psi}{\partial \phi}\) in units of \([\psi]~[x]\)/sadvective_flux
given by \(U(\phi) \psi(\phi)\) (same units)total_flux
, the sum of advective, diffusive and prescribed fluxesflux_convergence
(or instantanous scalar tendency) given by the right hand side of the first equation above, in units of \([\psi]\)/s
Non-uniform grid spacing is supported.
The state variable \(\psi\) may be multi-dimensional, but the diffusion will operate along the latitude dimension only.
- class climlab.dynamics.meridional_advection_diffusion.MeridionalAdvectionDiffusion(K=0.0, U=0.0, use_banded_solver=False, prescribed_flux=0.0, **kwargs)[source]¶
Bases:
AdvectionDiffusion
A parent class for meridional advection-diffusion processes.
- Attributes:
- K
- U
depth
Depth at grid centers (m)
depth_bounds
Depth at grid interfaces (m)
diagnostics
Dictionary access to all diagnostic variables
input
Dictionary access to all input variables
lat
Latitude of grid centers (degrees North)
lat_bounds
Latitude of grid interfaces (degrees North)
lev
Pressure levels at grid centers (hPa or mb)
lev_bounds
Pressure levels at grid interfaces (hPa or mb)
lon
Longitude of grid centers (degrees)
lon_bounds
Longitude of grid interfaces (degrees)
- prescribed_flux
timestep
The amount of time over which
step_forward()
is integrating in unit seconds.
Methods
add_diagnostic
(name[, value])Create a new diagnostic variable called
name
for this process and initialize it with the givenvalue
.add_input
(name[, value])Create a new input variable called
name
for this process and initialize it with the givenvalue
.add_subprocess
(name, proc)Adds a single subprocess to this process.
add_subprocesses
(procdict)Adds a dictionary of subproceses to this process.
compute
()Computes the tendencies for all state variables given current state and specified input.
compute_diagnostics
([num_iter])Compute all tendencies and diagnostics, but don't update model state.
declare_diagnostics
(diaglist)Add the variable names in
inputlist
to the list of diagnostics.declare_input
(inputlist)Add the variable names in
inputlist
to the list of necessary inputs.integrate_converge
([crit, verbose])Integrates the model until model states are converging.
integrate_days
([days, verbose])Integrates the model forward for a specified number of days.
integrate_years
([years, verbose])Integrates the model by a given number of years.
remove_diagnostic
(name)Removes a diagnostic from the
process.diagnostic
dictionary and also delete the associated process attribute.remove_subprocess
(name[, verbose])Removes a single subprocess from this process.
set_state
(name, value)Sets the variable
name
to a new statevalue
.set_timestep
([timestep, num_steps_per_year])Calculates the timestep in unit seconds and calls the setter function of
timestep()
step_forward
()Updates state variables with computed tendencies.
to_xarray
([diagnostics])Convert process variables to
xarray.Dataset
format.
- class climlab.dynamics.meridional_advection_diffusion.MeridionalDiffusion(K=0.0, use_banded_solver=False, prescribed_flux=0.0, **kwargs)[source]¶
Bases:
MeridionalAdvectionDiffusion
A parent class for meridional diffusion-only processes, with advection set to zero.
Otherwise identical to the parent class.
- Attributes:
- K
- U
depth
Depth at grid centers (m)
depth_bounds
Depth at grid interfaces (m)
diagnostics
Dictionary access to all diagnostic variables
input
Dictionary access to all input variables
lat
Latitude of grid centers (degrees North)
lat_bounds
Latitude of grid interfaces (degrees North)
lev
Pressure levels at grid centers (hPa or mb)
lev_bounds
Pressure levels at grid interfaces (hPa or mb)
lon
Longitude of grid centers (degrees)
lon_bounds
Longitude of grid interfaces (degrees)
- prescribed_flux
timestep
The amount of time over which
step_forward()
is integrating in unit seconds.
Methods
add_diagnostic
(name[, value])Create a new diagnostic variable called
name
for this process and initialize it with the givenvalue
.add_input
(name[, value])Create a new input variable called
name
for this process and initialize it with the givenvalue
.add_subprocess
(name, proc)Adds a single subprocess to this process.
add_subprocesses
(procdict)Adds a dictionary of subproceses to this process.
compute
()Computes the tendencies for all state variables given current state and specified input.
compute_diagnostics
([num_iter])Compute all tendencies and diagnostics, but don't update model state.
declare_diagnostics
(diaglist)Add the variable names in
inputlist
to the list of diagnostics.declare_input
(inputlist)Add the variable names in
inputlist
to the list of necessary inputs.integrate_converge
([crit, verbose])Integrates the model until model states are converging.
integrate_days
([days, verbose])Integrates the model forward for a specified number of days.
integrate_years
([years, verbose])Integrates the model by a given number of years.
remove_diagnostic
(name)Removes a diagnostic from the
process.diagnostic
dictionary and also delete the associated process attribute.remove_subprocess
(name[, verbose])Removes a single subprocess from this process.
set_state
(name, value)Sets the variable
name
to a new statevalue
.set_timestep
([timestep, num_steps_per_year])Calculates the timestep in unit seconds and calls the setter function of
timestep()
step_forward
()Updates state variables with computed tendencies.
to_xarray
([diagnostics])Convert process variables to
xarray.Dataset
format.