|
| | DensityDrivenFlowFV (const char *functions, const char *subsets) |
| | Constructor.
|
| |
| virtual void | prepare_setting (const std::vector< LFEID > &vLfeID, bool bNonRegularGrid) |
| | type of trial space for each function used
|
| |
| virtual bool | use_hanging () const |
| | returns if hanging nodes are needed
|
| |
|
| virtual void | set_porosity (SmartPtr< CplUserData< number, dim > > user) |
| |
| virtual void | set_gravity (SmartPtr< CplUserData< MathVector< dim >, dim > > user) |
| |
| virtual void | set_molecular_diffusion (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user) |
| |
| virtual void | set_permeability (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user) |
| |
| virtual void | set_viscosity (SmartPtr< CplUserData< number, dim > > user) |
| |
| virtual void | set_density (SmartPtr< CplUserData< number, dim > > data) |
| |
| virtual void | set_dispersion (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > data) |
| |
| SmartPtr< CplUserData< number, dim > > | brine () |
| | returns the export of brine mass fracture
|
| |
| SmartPtr< CplUserData< MathVector< dim >, dim > > | brine_grad () |
| | returns the export of brine mass fracture
|
| |
| SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > | brine_tensor () |
| | returns the export of brine tensor
|
| |
| SmartPtr< CplUserData< MathVector< dim >, dim > > | darcy_velocity () |
| | returns the export of the darcy velocity
|
| |
| | DensityDrivenFlowBase (const char *functions, const char *subsets) |
| | Constructor.
|
| |
| | DensityDrivenFlowBase (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) |
| |
| SmartPtr< CplUserData< number, dim > > | pressure () |
| | returns the export of pressure
|
| |
| SmartPtr< CplUserData< MathVector< dim >, dim > > | pressure_grad () |
| | returns the export of brine mass fracture
|
| |
| SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > | pressure_tensor () |
| | returns the export of brine tensor
|
| |
| void | set_boussinesq_flow (bool bUse) |
| | sets usage of boussinesq approximation for flow equation
|
| |
| void | set_boussinesq_transport (bool bUse) |
| | sets usage of boussinesq approximation for transport equation
|
| |
| void | set_porosity (number val) |
| | sets the porosity
|
| |
| void | set_gravity (const std::vector< number > &vVel) |
| | sets the gravity vector
|
| |
| void | set_molecular_diffusion (number val) |
| | sets the molecular diffusion tensor
|
| |
| void | set_permeability (number val) |
| | sets the permeability tensor
|
| |
| void | set_viscosity (number val) |
| | sets the viscosity tensor
|
| |
| void | set_density (number val) |
| | sets the density
|
| |
| void | add_elem_modifier (SmartPtr< IElemDiscModifier< TDomain > > elemModifier) |
| |
| std::vector< SmartPtr< IElemDiscModifier< TDomain > > > & | get_elem_modifier () |
| |
| | IElemDisc (const char *functions, const char *subsets) |
| |
| | IElemDisc (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) |
| |
| virtual void | add_def_A_expl_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| TLeaf & | asLeaf () |
| |
| void | check_roid (ReferenceObjectID roid, int discType) |
| |
| void | do_add_def_A_elem (LocalVector &d, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| void | do_add_def_A_expl_elem (LocalVector &d, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| void | do_add_def_M_elem (LocalVector &d, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| void | do_add_jac_A_elem (LocalMatrix &J, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| void | do_add_jac_M_elem (LocalMatrix &J, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| void | do_add_rhs_elem (LocalVector &rhs, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| void | do_fsh_elem_loop () |
| |
| void | do_fsh_timestep (const number time, VectorProxyBase *u, size_t algebra_id) |
| |
| void | do_fsh_timestep_elem (const number time, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| void | do_prep_elem (LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const MathVector< dim > vCornerCoords[]) |
| |
| void | do_prep_elem_loop (const ReferenceObjectID roid, const int si) |
| |
| void | do_prep_timestep (number future_time, const number time, VectorProxyBase *u, size_t algebra_id) |
| |
| void | do_prep_timestep_elem (const number time, LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| virtual void | fsh_timestep (number time, VectorProxyBase *u) |
| |
| virtual void | fsh_timestep_elem (const number time, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| | IElemAssembleFuncs () |
| |
| virtual void | post_assemble_loop () |
| |
| virtual void | prep_assemble_loop () |
| |
| virtual void | prep_timestep (number future_time, number time, VectorProxyBase *u) |
| |
| virtual void | prep_timestep_elem (const number time, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| void | set_roid (ReferenceObjectID id, int discType) |
| |
| virtual | ~IElemAssembleFuncs () |
| |
| | IElemError (const char *functions, const char *subsets) |
| |
| | IElemError (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) |
| |
| SmartPtr< ApproximationSpace< TDomain > > | approx_space () |
| |
| ConstSmartPtr< ApproximationSpace< TDomain > > | approx_space () const |
| |
| void | check_setup (bool bNonRegularGrid) |
| |
| void | clear_imports () |
| |
| SmartPtr< TDomain > | domain () |
| |
| ConstSmartPtr< TDomain > | domain () const |
| |
| const FunctionGroup & | function_group () const |
| |
| ConstSmartPtr< FunctionPattern > | function_pattern () const |
| |
| IDataImport< dim > & | get_import (size_t i) |
| |
| | IElemDiscBase (const char *functions="", const char *subsets="") |
| |
| | IElemDiscBase (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) |
| |
| bool | is_time_dependent () const |
| |
| bool | local_time_series_needed () |
| |
| const LocalVectorTimeSeries * | local_time_solutions () const |
| |
| const FunctionIndexMapping & | map () const |
| |
| number | mass_scale () const |
| |
| number | mass_scale () const |
| |
| number | mass_scale (const size_t timePoint) const |
| |
| number | mass_scale (const size_t timePoint) const |
| |
| const std::vector< number > & | mass_scales () const |
| |
| const std::vector< number > & | mass_scales () const |
| |
| size_t | num_fct () const |
| |
| size_t | num_imports () const |
| |
| size_t | num_subsets () const |
| |
| void | register_import (IDataImport< dim > &Imp) |
| |
| void | set_approximation_space (SmartPtr< ApproximationSpace< TDomain > > approxSpace) |
| |
| void | set_functions (const std::string &functions) |
| |
| void | set_functions (const std::vector< std::string > &functions) |
| |
| void | set_stationary () |
| |
| void | set_stationary (bool bStationaryForced=true) |
| |
| void | set_subsets (const std::string &subsets) |
| |
| void | set_subsets (const std::vector< std::string > &subsets) |
| |
| void | set_time_dependent (LocalVectorTimeSeries &locTimeSeries, const std::vector< number > &vScaleMass, const std::vector< number > &vScaleStiff) |
| |
| void | set_time_independent () |
| |
| void | set_time_point (const size_t timePoint) |
| |
| number | stiff_scale () const |
| |
| number | stiff_scale () const |
| |
| number | stiff_scale (const size_t timePoint) const |
| |
| number | stiff_scale (const size_t timePoint) const |
| |
| const std::vector< number > & | stiff_scales () const |
| |
| const std::vector< number > & | stiff_scales () const |
| |
| TDomain::subset_handler_type & | subset_handler () |
| |
| const TDomain::subset_handler_type & | subset_handler () const |
| |
| const std::vector< std::string > & | symb_fcts () const |
| |
| const std::vector< std::string > & | symb_subsets () const |
| |
| number | time () const |
| |
| size_t | time_point () const |
| |
| virtual int | type () const |
| |
| virtual | ~IElemDiscBase () |
| |
| TLeaf & | asLeaf () |
| |
| void | check_roid (ReferenceObjectID roid, int discType) |
| |
| virtual void | compute_err_est_A_elem (const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
| |
| virtual void | compute_err_est_M_elem (const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
| |
| virtual void | compute_err_est_rhs_elem (GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
| |
| void | do_compute_err_est_A_elem (LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
| |
| void | do_compute_err_est_M_elem (LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
| |
| void | do_compute_err_est_rhs_elem (GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
| |
| void | do_fsh_err_est_elem_loop () |
| |
| void | do_prep_err_est_elem (LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| void | do_prep_err_est_elem_loop (const ReferenceObjectID roid, const int si) |
| |
| virtual SmartPtr< IErrEstData< TDomain > > | err_est_data () |
| |
| bool | err_est_enabled () const |
| |
| virtual void | fsh_err_est_elem_loop () |
| |
| | IElemEstimatorFuncs () |
| |
| virtual void | prep_err_est_elem (const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| virtual void | prep_err_est_elem_loop (const ReferenceObjectID roid, const int si) |
| |
| void | set_error_estimator (SmartPtr< IErrEstData< TDomain > > ee) |
| |
| void | set_roid (ReferenceObjectID id, int discType) |
| |
| virtual | ~IElemEstimatorFuncs () |
| |
|
| template<typename TElem , typename CGeom , typename PGeom > |
| void | add_def_A_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| template<typename TElem , typename CGeom , typename PGeom > |
| void | add_def_M_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| template<typename TElem , typename CGeom , typename PGeom > |
| void | add_jac_A_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| template<typename TElem , typename CGeom , typename PGeom > |
| void | add_jac_M_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| template<typename TElem , typename CGeom , typename PGeom > |
| void | add_rhs_elem (LocalVector &d, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
| |
| void | compute_ip_darcy_velocity_std (MathVector< dim > &DarcyVel, const MathMatrix< dim, dim > &Permeability, number Viscosity, const MathVector< dim > &DensityTimesGravity, const MathVector< dim > &PressureGrad, bool compDeriv=false, MathVector< dim > *DarcyVel_c=NULL, MathVector< dim > *DarcyVel_p=NULL, const MathVector< dim > *DensityTimesGravity_c=NULL, const number *Viscosity_c=NULL, const MathVector< dim > *PressureGrad_p=NULL, size_t numSh=0) |
| | compute darcy velocity at one ip
|
| |
| template<typename TElem , typename CGeom , typename PGeom > |
| void | ex_brine (number vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< CGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< number > > vvvDeriv[]) |
| | computes the value of the brine mass fraction
|
| |
| template<typename TElem , typename CGeom , typename PGeom > |
| void | ex_brine_grad (MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< CGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[]) |
| | computes the value of the gradient of the brine mass fraction
|
| |
| template<typename TElem , typename CGeom , typename PGeom > |
| void | ex_darcy_std (MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< CGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[]) |
| | computes the darcy velocity using consistent gravity
|
| |
| template<typename TElem , typename CGeom , typename PGeom > |
| void | ex_pressure_grad (MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< CGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[]) |
| | computes the value of the gradient of the pressure
|
| |
| template<typename TElem , typename CGeom , typename PGeom > |
| void | fsh_elem_loop () |
| |
| template<typename TElem , typename CGeom , typename PGeom > |
| void | prep_elem (const LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const MathVector< dim > vCornerCoords[]) |
| |
| template<typename TElem , typename CGeom , typename PGeom > |
| void | prep_elem_loop (const ReferenceObjectID roid, const int si) |
| |
|
| void | register_all_funcs (const LFEID &vLfeID, const LFEID &pLfeID) |
| |
| template<typename TElem , typename CGeom , typename PGeom > |
| void | register_func () |
| |
| void | compute_ip_darcy_velocity_std (MathVector< dim > &DarcyVel, const MathMatrix< dim, dim > &Permeability, number Viscosity, const MathVector< dim > &DensityTimesGravity, const MathVector< dim > &PressureGrad, bool compDeriv=false, MathVector< dim > *DarcyVel_c=NULL, MathVector< dim > *DarcyVel_p=NULL, const MathVector< dim > *DensityTimesGravity_c=NULL, const number *Viscosity_c=NULL, const MathVector< dim > *PressureGrad_p=NULL, size_t numSh=0) |
| | compute darcy velocity at one ip
|
| |
| void | init (const char *functions) |
| | standard initialization
|
| |
| virtual bool | requests_local_time_series () |
| | returns if local time series is needed
|
| |
| void | clear_add_fct () |
| |
| void | clear_add_fct (ReferenceObjectID id) |
| |
| void | set_default_add_fct () |
| |
| void | clear_add_fct () |
| |
| void | clear_add_fct (ReferenceObjectID id) |
| |
| void | remove_add_def_A_elem_fct (ReferenceObjectID id) |
| |
| void | remove_add_def_A_expl_elem_fct (ReferenceObjectID id) |
| |
| void | remove_add_def_M_elem_fct (ReferenceObjectID id) |
| |
| void | remove_add_jac_A_elem_fct (ReferenceObjectID id) |
| |
| void | remove_add_jac_M_elem_fct (ReferenceObjectID id) |
| |
| void | remove_add_rhs_elem_fct (ReferenceObjectID id) |
| |
| void | remove_fsh_elem_loop_fct (ReferenceObjectID id) |
| |
| void | remove_fsh_timestep_elem_fct (ReferenceObjectID id) |
| |
| void | remove_fsh_timestep_fct (size_t algebra_id) |
| |
| void | remove_prep_elem_fct (ReferenceObjectID id) |
| |
| void | remove_prep_elem_loop_fct (ReferenceObjectID id) |
| |
| void | remove_prep_timestep_elem_fct (ReferenceObjectID id) |
| |
| void | remove_prep_timestep_fct (size_t algebra_id) |
| |
| void | set_add_def_A_elem_fct (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_add_def_A_expl_elem_fct (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_add_def_M_elem_fct (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_add_jac_A_elem_fct (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_add_jac_M_elem_fct (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_add_rhs_elem_fct (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_default_add_fct () |
| |
| void | set_fsh_elem_loop_fct (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_fsh_timestep_elem_fct (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_fsh_timestep_fct (size_t algebra_id, TAssFunc func) |
| |
| void | set_prep_elem_fct (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_prep_elem_loop_fct (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_prep_timestep_elem_fct (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_prep_timestep_fct (size_t algebra_id, TAssFunc func) |
| |
| void | clear_add_fct () |
| |
| void | clear_add_fct (ReferenceObjectID id) |
| |
| virtual void | approximation_space_changed () |
| |
| void | set_function_pattern (ConstSmartPtr< FunctionPattern > fctPatt) |
| |
| void | update_function_index_mapping () |
| |
| void | clear_add_fct () |
| |
| void | clear_add_fct (ReferenceObjectID id) |
| |
| void | remove_compute_err_est_A_elem (ReferenceObjectID id) |
| |
| void | remove_compute_err_est_M_elem (ReferenceObjectID id) |
| |
| void | remove_compute_err_est_rhs_elem (ReferenceObjectID id) |
| |
| void | remove_fsh_err_est_elem_loop (ReferenceObjectID id) |
| |
| void | remove_prep_err_est_elem (ReferenceObjectID id) |
| |
| void | remove_prep_err_est_elem_loop (ReferenceObjectID id) |
| |
| void | set_compute_err_est_A_elem (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_compute_err_est_M_elem (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_compute_err_est_rhs_elem (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_default_add_fct () |
| |
| void | set_fsh_err_est_elem_loop (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_prep_err_est_elem (ReferenceObjectID id, TAssFunc func) |
| |
| void | set_prep_err_est_elem_loop (ReferenceObjectID id, TAssFunc func) |
| |
|
| bool | m_BoussinesqFlow |
| | flag if using boussinesq flow
|
| |
| bool | m_BoussinesqTransport |
| | flag if using boussinesq transport
|
| |
| LFEID | m_c_lfeID |
| | current shape function set
|
| |
| SmartPtr< DataExport< number, dim > > | m_exBrine |
| | Export for the brine mass fraction.
|
| |
| SmartPtr< DataExport< MathVector< dim >, dim > > | m_exBrineGrad |
| | Export for the gradient of brine mass fraction.
|
| |
| SmartPtr< DataExport< MathVector< dim >, dim > > | m_exDarcyVel |
| | Export for the Darcy velocity.
|
| |
| SmartPtr< DataExport< MathVector< dim >, dim > > | m_exPressureGrad |
| | Export for the gradient of brine mass fraction.
|
| |
| MathVector< dim > | m_Gravity |
| | constant Gravity, read in once
|
| |
| LFEID | m_p_lfeID |
| |
| bool | m_BoussinesqFlow |
| | flag if using boussinesq flow
|
| |
| bool | m_BoussinesqTransport |
| | flag if using boussinesq transport
|
| |
| SmartPtr< DataExport< number, dim > > | m_exBrine |
| | Export for the brine mass fraction.
|
| |
| SmartPtr< DataExport< MathVector< dim >, dim > > | m_exBrineGrad |
| | Export for the gradient of brine mass fraction.
|
| |
| SmartPtr< DataExport< MathMatrix< dim, dim >, dim > > | m_exBrineTensor |
| | Export for the brine related tensor.
|
| |
| SmartPtr< DataExport< MathVector< dim >, dim > > | m_exDarcyVel |
| | Export for the Darcy velocity.
|
| |
| SmartPtr< DataExport< number, dim > > | m_exPressure |
| | Export for the brine mass fraction.
|
| |
| SmartPtr< DataExport< MathVector< dim >, dim > > | m_exPressureGrad |
| | Export for the gradient of brine mass fraction.
|
| |
| SmartPtr< DataExport< MathMatrix< dim, dim >, dim > > | m_exPressureTensor |
| | Export for the pressure related tensor.
|
| |
| MathVector< dim > | m_Gravity |
| | constant Gravity, read in once
|
| |
| std::vector< SmartPtr< IElemDiscModifier< TDomain > > > | m_spElemModifier |
| |
| ReferenceObjectID | m_roid |
| |
| bool | m_bStationaryForced |
| |
| FunctionGroup | m_fctGrp |
| |
| FunctionIndexMapping | m_fctIndexMap |
| |
| LocalVectorTimeSeries * | m_pLocalVectorTimeSeries |
| |
| SmartPtr< ApproximationSpace< TDomain > > | m_spApproxSpace |
| |
| ConstSmartPtr< FunctionPattern > | m_spFctPattern |
| |
| size_t | m_timePoint |
| |
| std::vector< std::string > | m_vFct |
| |
| std::vector< IDataImport< dim > * > | m_vIImport |
| |
| std::vector< number > | m_vScaleMass |
| |
| std::vector< number > | m_vScaleStiff |
| |
| std::vector< std::string > | m_vSubset |
| |
| ReferenceObjectID | m_roid |
| |
| SmartPtr< IErrEstData< TDomain > > | m_spErrEstData |
| |
template<typename TDomain>
class ug::d3f::DensityDrivenFlowFV< TDomain >
Finite Volume Element Discretization for Density Driven Flow.
This class implements the IElemDisc interface for the density driven flow equations. It is a system of two coupled equations of the form.
\begin{align*}
\partial_t (\phi \rho) + \nabla(\rho \vec{q}) &= 0\\
\partial_t (\phi \rho c) - \nabla(\rho D \nabla c -\rho c \vec{q}) &= 0\\
\vec{q} &:= - \frac{K}{\mu}(\nabla p - \rho \vec{g})
\end{align*}
with
-
\( c \) unknown brine mass fraction
-
\( p \) unknown pressure
and given data
-
\( \phi(\vec{x}, t) \) Porosity
-
\( K(\vec{x}, t) \) Permeability tensor
-
\( \vec{g} \) constant Gravity field
-
\( D(\vec{q}, \vec{x}, t) := \phi(\vec{x}, t) D_d(\vec{x}, t) + D_m(\vec{q}) \) Diffusion-Dispersion tensor
-
\( D_m(\vec{q}) \) mechanical Dispersion tensor
-
\( D_d(\vec{x}, t) \) molecular Diffusion tensor (prop. to Tortuosity)
-
\( \mu(c) \) Viscosity
-
\( \rho(c)\) Density
as well as the abbreviation
-
\( \vec{q} \) Darcy velocity
The first equation is usually referred to as the flow equation. The second equation is known as the transport equation.
- Template Parameters
-