Plugins
|
Finite Volume Element Discretization for the compressible Navier-Stokes Equation. More...
#include <compressible_navier_stokes_base.h>
Public Member Functions | |
CompressibleNavierStokesBase (const char *functions, const char *subsets) | |
CompressibleNavierStokesBase (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) | |
Public Member Functions inherited from ug::NavierStokes::NavierStokesBase< TDomain > | |
void | set_exact_jacobian (bool bExactJacobian) |
sets if the exact jacobian is computed (fixpoint approximation else) More... | |
void | set_exact_jacobian (number fullNewtonFactor) |
NavierStokesBase (const char *functions, const char *subsets) | |
NavierStokesBase (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) | |
void | set_kinematic_viscosity (number val) |
sets the kinematic viscosity More... | |
void | set_source (const std::vector< number > &vSource) |
sets the source function More... | |
Public Member Functions inherited from ug::IElemDisc< TDomain > | |
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) | |
Public Member Functions inherited from IElemAssembleFuncs< IElemDisc< TDomain >, TDomain > | |
virtual void | add_def_A_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
virtual void | add_def_A_expl_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
virtual void | add_def_M_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
virtual void | add_jac_A_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
virtual void | add_jac_M_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
virtual void | add_rhs_elem (LocalVector &rhs, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
IElemDisc< TDomain > & | 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_elem_loop () |
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_elem (const LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const MathVector< dim > vCornerCoords[]) |
virtual void | prep_elem_loop (const ReferenceObjectID roid, const int si) |
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 () |
Public Member Functions inherited from ug::IElemError< class > | |
IElemError (const char *functions, const char *subsets) | |
IElemError (const std::vector< std::string > &vFct, const std::vector< std::string > &vSubset) | |
Public Member Functions inherited from ug::IElemDiscBase< class > | |
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 |
virtual void | prepare_setting (const std::vector< LFEID > &vLfeID, bool bNonRegularGrid)=0 |
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 bool | use_hanging () const |
virtual | ~IElemDiscBase () |
Public Member Functions inherited from IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain > | |
IElemDisc< TDomain > & | 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 () |
Static Public Attributes | |
static const int | dim = base_type::dim |
World dimension. More... | |
Static Public Attributes inherited from ug::NavierStokes::NavierStokesBase< TDomain > | |
static const int | dim = base_type::dim |
World dimension. More... | |
Static Public Attributes inherited from ug::IElemDisc< TDomain > | |
static const int | dim |
Static Public Attributes inherited from IElemAssembleFuncs< IElemDisc< TDomain >, TDomain > | |
static const int | dim |
Static Public Attributes inherited from ug::IElemError< class > | |
static const int | dim |
Static Public Attributes inherited from ug::IElemDiscBase< class > | |
static const int | dim |
Static Public Attributes inherited from IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain > | |
static const int | dim |
Protected Types | |
typedef NavierStokesBase< TDomain > | base_type |
Base class type. More... | |
typedef CompressibleNavierStokesBase< TDomain > | this_type |
own type More... | |
Protected Types inherited from ug::NavierStokes::NavierStokesBase< TDomain > | |
typedef IElemDisc< TDomain > | base_type |
Base class type. More... | |
typedef NavierStokesBase< TDomain > | this_type |
own type More... | |
bool | m_bMachNrBlend |
flag if using Mach-number Blending More... | |
number | m_bFullNewtonFactor |
factor for exact jacobian, (1 for exact jacobian, 0 for fix point) More... | |
virtual void | set_kinematic_viscosity (SmartPtr< CplUserData< number, dim > > user)=0 |
sets the kinematic viscosity More... | |
virtual SmartPtr< CplUserData< number, dim > > | kinematic_viscosity ()=0 |
returns kinematic viscosity More... | |
virtual void | set_adiabatic_index (SmartPtr< CplUserData< number, dim > > user)=0 |
sets the adiabatic index (also known as 'heat capacity ratio' or 'ratio of specific heats') More... | |
void | set_adiabatic_index (number val) |
flag if using Mach-number Blending More... | |
virtual SmartPtr< CplUserData< number, dim > > | adiabatic_index ()=0 |
returns adiabatic index More... | |
virtual void | set_source (SmartPtr< CplUserData< MathVector< dim >, dim > > user)=0 |
sets the source function More... | |
void | set_mach_number_blend (bool machNrBlend) |
sets if Mach-number blending is used in momentum equation More... | |
virtual bool | requests_local_time_series () |
returns if local time series is needed More... | |
virtual std::string | disc_type () const =0 |
returns string identifying disc type More... | |
Finite Volume Element Discretization for the compressible Navier-Stokes Equation.
This class implements the IElemDisc interface to provide element local assemblings for the compressible Navier-Stokes equation for an thermical and caloric ideal gas.
The unknowns of the equation are:
The equation takes the form
\begin{align*} \frac{\partial \rho \vec{u}}{\partial t} - \nabla \left( \rho \nu (\nabla \vec{u} + (\nabla \vec{u})^T) - \frac{2}{3} Id * \nabla \vec{u} \right) + \nabla \cdot \left( \rho \vec{u} \vec{u}^T \right) + \nabla p &= \vec{f}_m\\ \frac{\partial \rho}{\partial t} + \nabla \cdot (\rho \vec{u}) &= f_c \\ \frac{1}{\gamma - 1}\frac{\partial \rho}{\partial t} + \frac{1}{2} \frac{\partial \rho \vec{u}^2}{\partial t} + \frac{\gamma}{\gamma - 1} \nabla \cdot (\rho \vec{u}^T) + \frac{1}{2} \nabla \cdot (\rho \vec{u}^2 \vec{u}^T) - \nabla \left( \vec{u}^T \cdot \tau \right) &= f_e \\ \end{align*}
with
The first equation models the conservation of momentum and is therefore referred to as the Momentum equation. The second equation models the conservation of mass and is known as the Mass continuity equation or simply Continuity equation. The third equation models the conservation of energy and is therefore referred to as the Energy equation.
These three equations are normalized by reference quantities (c.f. A. Gordner 'Numerische Simulation nichtlinearer Aeroakustik bei kleinen Machzahlen'),
with
TDomain | Domain |
TAlgebra | Algebra |
|
protected |
Base class type.
|
protected |
own type
ug::NavierStokes::CompressibleNavierStokesBase< TDomain >::CompressibleNavierStokesBase | ( | const char * | functions, |
const char * | subsets | ||
) |
Constructor (setting default values)
ug::NavierStokes::CompressibleNavierStokesBase< TDomain >::CompressibleNavierStokesBase | ( | const std::vector< std::string > & | vFct, |
const std::vector< std::string > & | vSubset | ||
) |
Constructor (setting default values)
|
pure virtual |
returns adiabatic index
Implemented in ug::NavierStokes::CompressibleNavierStokesFV1< TDomain >.
|
pure virtual |
returns string identifying disc type
Implements ug::NavierStokes::NavierStokesBase< TDomain >.
Implemented in ug::NavierStokes::CompressibleNavierStokesFV1< TDomain >.
|
pure virtual |
returns kinematic viscosity
Implements ug::NavierStokes::NavierStokesBase< TDomain >.
Implemented in ug::NavierStokes::CompressibleNavierStokesFV1< TDomain >.
|
inlinevirtual |
returns if local time series is needed
Reimplemented from ug::NavierStokes::NavierStokesBase< TDomain >.
void ug::NavierStokes::CompressibleNavierStokesBase< TDomain >::set_adiabatic_index | ( | number | val | ) |
flag if using Mach-number Blending
References make_sp().
|
pure virtual |
sets the adiabatic index (also known as 'heat capacity ratio' or 'ratio of specific heats')
Implemented in ug::NavierStokes::CompressibleNavierStokesFV1< TDomain >.
|
pure virtual |
sets the kinematic viscosity
This method sets the kinematic viscosity value.
[in] | data | kinematic Viscosity |
Implements ug::NavierStokes::NavierStokesBase< TDomain >.
Implemented in ug::NavierStokes::CompressibleNavierStokesFV1< TDomain >.
|
inline |
sets if Mach-number blending is used in momentum equation
References ug::NavierStokes::CompressibleNavierStokesBase< TDomain >::m_bMachNrBlend.
|
pure virtual |
sets the source function
This method sets the source value. A zero value is assumed as default.
[in] | data | source data |
Implements ug::NavierStokes::NavierStokesBase< TDomain >.
Implemented in ug::NavierStokes::CompressibleNavierStokesFV1< TDomain >.
|
static |
World dimension.
|
protected |
factor for exact jacobian, (1 for exact jacobian, 0 for fix point)
|
protected |
flag if using Mach-number Blending
Referenced by ug::NavierStokes::CompressibleNavierStokesBase< TDomain >::set_mach_number_blend().