Plugins
|
FV Discretization for the Convection-Diffusion Equation. More...
#include <convection_diffusion_fv1.h>
Classes | |
struct | RegisterLocalDiscr |
struct | ShapeValues |
struct holding values of shape functions in IPs More... | |
Public Member Functions | |
bool | condensed_FV () |
returns the 'condensed scvf ip' flag | |
ConvectionDiffusionFV1 (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 | |
void | set_condensed_FV (bool condensed) |
activates/deactivates the condensed scvf ip's for the FV scheme | |
void | set_sss_manager (SmartPtr< CDSingularSourcesAndSinks< dim > > sss_mngr) |
set singular sources and sinks | |
void | set_upwind (SmartPtr< IConvectionShapes< dim > > shapes) |
set the upwind method | |
SmartPtr< CDSingularSourcesAndSinks< dim > > | sss_manager () |
get singular sources and sinks | |
virtual bool | use_hanging () const |
returns if hanging nodes are needed | |
![]() | |
ConvectionDiffusionBase (const char *functions, const char *subsets) | |
Constructor. | |
virtual SmartPtr< CplUserData< MathVector< dim >, dim > > | gradient () |
returns the export of the gradient of associated unknown function | |
void | set_reaction_explicit (number val) |
void | set_reaction_explicit (SmartPtr< CplUserData< number, dim > > user) |
void | set_reaction_rate_explicit (number val) |
void | set_reaction_rate_explicit (SmartPtr< CplUserData< number, dim > > user) |
void | set_source_explicit (number val) |
void | set_source_explicit (SmartPtr< CplUserData< number, dim > > user) |
virtual SmartPtr< CplUserData< number, dim > > | value () |
returns the export of the value of associated unknown function | |
void | set_diffusion (SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user) |
sets the diffusion tensor | |
void | set_diffusion (number val) |
sets the diffusion tensor | |
void | set_velocity (SmartPtr< CplUserData< MathVector< dim >, dim > > user) |
sets the velocity field | |
void | set_velocity (const std::vector< number > &vVel) |
sets the velocity field | |
void | set_flux (SmartPtr< CplUserData< MathVector< dim >, dim > > user) |
sets the flux | |
void | set_flux (const std::vector< number > &vVel) |
sets the flux | |
void | set_reaction_rate (SmartPtr< CplUserData< number, dim > > user) |
sets the reaction rate | |
void | set_reaction_rate (number val) |
sets the reaction rate | |
void | set_reaction (SmartPtr< CplUserData< number, dim > > user) |
sets the reaction | |
void | set_reaction (number val) |
sets the reaction | |
void | set_source (SmartPtr< CplUserData< number, dim > > user) |
sets the source / sink term | |
void | set_source (number val) |
sets the source / sink term | |
void | set_vector_source (SmartPtr< CplUserData< MathVector< dim >, dim > > user) |
sets the vector source term | |
void | set_vector_source (const std::vector< number > &vVel) |
sets the vector source term | |
void | set_mass_scale (SmartPtr< CplUserData< number, dim > > user) |
sets mass scale | |
void | set_mass_scale (number val) |
sets mass scale | |
void | set_mass (SmartPtr< CplUserData< number, dim > > user) |
sets mass | |
void | set_mass (number val) |
sets mass | |
![]() | |
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) | |
![]() | |
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_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) |
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 |
IElemEstimatorFuncs () | |
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. | |
![]() | |
static const int | dim = base_type::dim |
World dimension. | |
![]() | |
static const int | dim |
![]() | |
static const int | dim |
![]() | |
static const int | dim |
![]() | |
static const int | dim |
![]() | |
static const int | dim |
Protected Types | |
typedef IConvectionShapes< dim > | conv_shape_type |
returns the updated convection shapes | |
Protected Member Functions | |
template<typename TElem , typename TFVGeom > | |
void | ex_grad (MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< TFVGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[]) |
computes the gradient of the concentration | |
template<typename TElem , typename TFVGeom > | |
void | ex_value (number vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< TFVGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< number > > vvvDeriv[]) |
computes the concentration | |
const IConvectionShapes< dim > & | get_updated_conv_shapes (const FVGeometryBase &geo, bool compute_deriv) |
template<typename TElem , typename TFVGeom > | |
void | lin_def_diffusion (const LocalVector &u, std::vector< std::vector< MathMatrix< dim, dim > > > vvvLinDef[], const size_t nip) |
computes the linearized defect w.r.t to the diffusion | |
template<typename TElem , typename TFVGeom > | |
void | lin_def_flux (const LocalVector &u, std::vector< std::vector< MathVector< dim > > > vvvLinDef[], const size_t nip) |
computes the linearized defect w.r.t to the flux | |
template<typename TElem , typename TFVGeom > | |
void | lin_def_mass (const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip) |
computes the linearized defect w.r.t to the mass scale term | |
template<typename TElem , typename TFVGeom > | |
void | lin_def_mass_scale (const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip) |
computes the linearized defect w.r.t to the mass scale term | |
template<typename TElem , typename TFVGeom > | |
void | lin_def_reaction (const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip) |
computes the linearized defect w.r.t to the reaction | |
template<typename TElem , typename TFVGeom > | |
void | lin_def_reaction_rate (const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip) |
computes the linearized defect w.r.t to the reaction | |
template<typename TElem , typename TFVGeom > | |
void | lin_def_source (const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip) |
computes the linearized defect w.r.t to the source term | |
template<typename TElem , typename TFVGeom > | |
void | lin_def_vector_source (const LocalVector &u, std::vector< std::vector< MathVector< dim > > > vvvLinDef[], const size_t nip) |
computes the linearized defect w.r.t to the vector source term | |
template<typename TElem , typename TFVGeom > | |
void | lin_def_velocity (const LocalVector &u, std::vector< std::vector< MathVector< dim > > > vvvLinDef[], const size_t nip) |
computes the linearized defect w.r.t to the velocity | |
void | register_all_funcs (bool bHang) |
template<typename TElem > | |
void | register_func_for_ (bool bHang) |
template<typename TElem , typename TFVGeom > | |
void | register_func () |
![]() | |
void | init_imports () |
![]() | |
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) |
Private Types | |
typedef ConvectionDiffusionBase< TDomain > | base_type |
Base class type. | |
typedef SideAndElemErrEstData< TDomain > | err_est_type |
error estimator type | |
typedef ConvectionDiffusionFV1< TDomain > | this_type |
Own type. | |
Private Member Functions | |
template<typename TElem , typename TFVGeom > | |
void | add_def_A_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
assembles the stiffness part of the local defect | |
template<typename TElem , typename TFVGeom > | |
void | add_def_A_expl_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
assembles the stiffness part of the local defect explicit reaction, reaction_rate and source | |
template<typename TElem , typename TFVGeom > | |
void | add_def_M_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
assembles the mass part of the local defect | |
template<typename TElem , typename TFVGeom > | |
void | add_jac_A_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
assembles the local stiffness matrix using a finite volume scheme | |
template<typename TElem , typename TFVGeom > | |
void | add_jac_M_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
assembles the local mass matrix using a finite volume scheme | |
template<typename TElem , typename TFVGeom > | |
void | add_rhs_elem (LocalVector &d, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
assembles the local right hand side | |
template<typename TElem , typename TFVGeom > | |
void | add_sss_def_elem (LocalVector &d, const LocalVector &u, GridObject *elem, const TFVGeom &geo, size_t i, number flux) |
adds contributions of a singular source or sink to the defect | |
template<typename TElem , typename TFVGeom > | |
void | add_sss_jac_elem (LocalMatrix &J, const LocalVector &u, GridObject *elem, const TFVGeom &geo, size_t i, number flux) |
adds contributions of a singular source or sink to the matrix | |
template<typename TElem , typename TFVGeom > | |
void | compute_err_est_A_elem (const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
computes the error estimator contribution for one element | |
template<typename TElem , typename TFVGeom > | |
void | compute_err_est_M_elem (const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
computes the error estimator contribution for one element | |
template<typename TElem , typename TFVGeom > | |
void | compute_err_est_rhs_elem (GridObject *elem, const MathVector< dim > vCornerCoords[], const number &scale) |
computes the error estimator contribution for one element | |
template<typename TElem , typename TFVGeom > | |
void | fsh_elem_loop () |
finishes the loop over all elements | |
template<typename TElem , typename TFVGeom > | |
void | fsh_err_est_elem_loop () |
postprocesses the loop over all elements of one type in the computation of the error estimator | |
virtual void | prep_assemble_loop () |
prepares assembling | |
template<typename TElem , typename TFVGeom > | |
void | prep_elem (const LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const MathVector< dim > vCornerCoords[]) |
prepares the element for assembling | |
template<typename TElem , typename TFVGeom > | |
void | prep_elem_loop (const ReferenceObjectID roid, const int si) |
prepares the loop over all elements | |
template<typename TElem , typename TFVGeom > | |
void | prep_err_est_elem (const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[]) |
prepares the element for assembling the error estimator | |
template<typename TElem , typename TFVGeom > | |
void | prep_err_est_elem_loop (const ReferenceObjectID roid, const int si) |
prepares the loop over all elements of one type for the computation of the error estimator | |
Private Attributes | |
SmartPtr< DataExport< MathVector< dim >, dim > > | m_exGrad |
Export for the gradient of concentration. | |
SmartPtr< DataExport< number, dim > > | m_exValue |
Export for the concentration. | |
DataImport< MathMatrix< dim, dim >, dim > | m_imDiffusion |
Data import for Diffusion. | |
DataImport< MathVector< dim >, dim > | m_imFlux |
Data import for the Flux. | |
DataImport< number, dim > | m_imMass |
Data import for the mass scale. | |
DataImport< number, dim > | m_imMassScale |
Data import for the mass scale. | |
DataImport< number, dim > | m_imReaction |
Data import for the reaction term. | |
DataImport< number, dim > | m_imReactionExpl |
Data import for the reaction term explicit. | |
DataImport< number, dim > | m_imReactionRate |
Data import for the reaction term. | |
DataImport< number, dim > | m_imReactionRateExpl |
Data import for the reaction_rate term explicit. | |
DataImport< number, dim > | m_imSource |
Data import for the right-hand side (volume) | |
DataImport< number, dim > | m_imSourceExpl |
Data import for the source term explicit. | |
DataImport< MathVector< dim >, dim > | m_imVectorSource |
Data import for the right-hand side (vector) | |
DataImport< MathVector< dim >, dim > | m_imVelocity |
Data import for the Velocity field. | |
struct ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1::ShapeValues | m_shapeValues |
SmartPtr< CDSingularSourcesAndSinks< dim > > | m_sss_mngr |
singular sources and sinks manager | |
Static Private Attributes | |
static const size_t | _C_ = 0 |
abbreviation for the local solution | |
FV Discretization for the Convection-Diffusion Equation.
This is the simple (upwinded) FV discretization of the convection-diffusion equation. Cf. ConvectionDiffusionBase base class for the problem setting.
TDomain | Domain |
|
private |
Base class type.
|
protected |
returns the updated convection shapes
|
private |
error estimator type
|
private |
Own type.
ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::ConvectionDiffusionFV1 | ( | const char * | functions, |
const char * | subsets | ||
) |
|
privatevirtual |
assembles the stiffness part of the local defect
Reimplemented from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >.
References ug::GeomProvider< typename TGeom >::get(), grid(), ug::MatVecMult(), ug::IConvectionShapes< int dim >::num_sh(), ug::FVPointSourceOrSink< int dim, typename TData >::position(), ug::VecDistance(), ug::VecDot(), ug::VecScaleAppend(), and ug::VecSet().
|
privatevirtual |
assembles the stiffness part of the local defect explicit reaction, reaction_rate and source
Reimplemented from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >.
References ug::GeomProvider< typename TGeom >::get().
|
privatevirtual |
assembles the mass part of the local defect
Reimplemented from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >.
References ug::GeomProvider< typename TGeom >::get().
|
privatevirtual |
assembles the local stiffness matrix using a finite volume scheme
Reimplemented from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >.
References ug::GridObject::base_object_id(), ug::ConvectionDiffusionPlugin::CalculateCenter(), ug::ConvectionDiffusionPlugin::DID_CONV_DIFF_FV1, ug::GeomProvider< typename TGeom >::get(), grid(), ug::MatVecMult(), ug::LocalMatrix::num_col_dof(), ug::LocalMatrix::num_row_dof(), ug::IConvectionShapes< int dim >::num_sh(), ug::FVPointSourceOrSink< int dim, typename TData >::position(), UG_ASSERT, UG_DLOG, ug::VecDistance(), ug::VecDot(), and ug::VecLength().
|
privatevirtual |
assembles the local mass matrix using a finite volume scheme
Reimplemented from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >.
References ug::GeomProvider< typename TGeom >::get().
|
privatevirtual |
assembles the local right hand side
Reimplemented from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >.
References ug::GeomProvider< typename TGeom >::get(), and ug::VecDot().
|
private |
adds contributions of a singular source or sink to the defect
d | the defect to update |
u | current solution |
elem | the element |
geo | the FV geometry for that element |
i | index of the SCV |
flux | flux through source/sink (premultiplied by the length for lines) |
|
private |
adds contributions of a singular source or sink to the matrix
J | the matrix to update |
u | current solution |
elem | the element |
geo | the FV geometry for that element |
i | index of the SCV |
flux | flux through source/sink (premultiplied by the length for lines) |
|
privatevirtual |
computes the error estimator contribution for one element
Reimplemented from ug::IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >.
References ug::Grid::associated_elements_sorted(), ug::GeomProvider< typename TGeom >::get(), ug::MatVecScaleMultAppend(), ug::SideAndElemErrEstData< typename TDomain >::num_elem_ips(), ug::SideAndElemErrEstData< typename TDomain >::num_side_ips(), ug::GridObject::reference_object_id(), ug::SideAndElemErrEstData< typename TDomain >::surface_view(), UG_CATCH_THROW, UG_THROW, ug::VecAppend(), ug::VecDot(), ug::VecNormalize(), ug::VecScale(), ug::VecScaleAppend(), and ug::VecSet().
|
privatevirtual |
computes the error estimator contribution for one element
Reimplemented from ug::IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >.
References ug::Grid::associated_elements_sorted(), ug::GeomProvider< typename TGeom >::get(), ug::SideAndElemErrEstData< typename TDomain >::num_elem_ips(), ug::GridObject::reference_object_id(), ug::SideAndElemErrEstData< typename TDomain >::surface_view(), UG_CATCH_THROW, and UG_THROW.
|
privatevirtual |
computes the error estimator contribution for one element
Reimplemented from ug::IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >.
References ug::Grid::associated_elements_sorted(), ug::SideAndElemErrEstData< typename TDomain >::num_elem_ips(), ug::SideAndElemErrEstData< typename TDomain >::num_side_ips(), ug::GridObject::reference_object_id(), ug::SideAndElemErrEstData< typename TDomain >::surface_view(), UG_CATCH_THROW, UG_THROW, ug::VecDot(), and ug::VecNormalize().
|
inline |
returns the 'condensed scvf ip' flag
References ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::m_bCondensedFV.
|
protected |
computes the gradient of the concentration
References ug::GeomProvider< typename TGeom >::get(), ug::BaseLSFS< typename TImpl, int TDim, typename TShape, typename TGrad >::grads(), ug::ReferenceMapping< typename TRefElem, int TWorldDim >::jacobian_transposed_inverse(), ug::MatVecMult(), ug::VecScaleAppend(), and ug::VecSet().
|
protected |
computes the concentration
References ug::GeomProvider< typename TGeom >::get(), and ug::BaseLSFS< typename TImpl, int TDim, typename TShape, typename TGrad >::shapes().
|
privatevirtual |
finishes the loop over all elements
Reimplemented from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >.
|
privatevirtual |
postprocesses the loop over all elements of one type in the computation of the error estimator
Reimplemented from ug::IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >.
|
protected |
References UG_LOG.
|
protected |
computes the linearized defect w.r.t to the diffusion
References ug::IConvectionShapes< int dim >::D_diffusion(), ug::GeomProvider< typename TGeom >::get(), ug::MatAdd(), ug::IConvectionShapes< int dim >::non_zero_deriv_diffusion(), ug::VecScaleAppend(), and ug::VecSet().
|
protected |
computes the linearized defect w.r.t to the flux
References ug::GeomProvider< typename TGeom >::get().
|
protected |
computes the linearized defect w.r.t to the mass scale term
References ug::GeomProvider< typename TGeom >::get(), and UG_ASSERT.
|
protected |
computes the linearized defect w.r.t to the mass scale term
References ug::GeomProvider< typename TGeom >::get(), and UG_ASSERT.
|
protected |
computes the linearized defect w.r.t to the reaction
References ug::GeomProvider< typename TGeom >::get().
|
protected |
computes the linearized defect w.r.t to the reaction
References ug::GeomProvider< typename TGeom >::get().
|
protected |
computes the linearized defect w.r.t to the source term
References ug::GeomProvider< typename TGeom >::get().
|
protected |
computes the linearized defect w.r.t to the vector source term
References ug::GeomProvider< typename TGeom >::get().
|
protected |
computes the linearized defect w.r.t to the velocity
References ug::IConvectionShapes< int dim >::D_vel(), ug::GeomProvider< typename TGeom >::get(), ug::VecScaleAppend(), and ug::VecSet().
|
privatevirtual |
prepares assembling
Reimplemented from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >.
|
privatevirtual |
prepares the element for assembling
This methods prepares an element for the assembling. The Positions of the Element Corners are read and the Finite Volume Geometry is updated. The global ip positions are scheduled at the data imports.
Reimplemented from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >.
References ug::ConvectionDiffusionPlugin::DID_CONV_DIFF_FV1, ug::GeomProvider< typename TGeom >::get(), subset_handler(), UG_CATCH_THROW, UG_DLOG, and UG_THROW.
|
privatevirtual |
prepares the loop over all elements
This method prepares the loop over all elements. It resizes the Position array for the corner coordinates and schedules the local ip positions at the data imports.
Reimplemented from ug::IElemAssembleFuncs< IElemDisc< TDomain >, TDomain >.
References ug::GeomProvider< typename TGeom >::get(), and UG_THROW.
|
privatevirtual |
prepares the element for assembling the error estimator
Reimplemented from ug::IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >.
References ug::SideAndElemErrEstData< typename TDomain >::all_side_global_ips(), ug::SideAndElemErrEstData< typename TDomain >::elem_global_ips(), ug::GeomProvider< typename TGeom >::get(), ug::SideAndElemErrEstData< typename TDomain >::num_all_side_ips(), ug::SideAndElemErrEstData< typename TDomain >::num_elem_ips(), ug::LagrangeP1< typename TRefElem >::num_sh(), ug::GridObject::reference_object_id(), ug::BaseLSFS< typename TImpl, int TDim, typename TShape, typename TGrad >::shapes(), subset_handler(), UG_CATCH_THROW, and UG_THROW.
|
privatevirtual |
prepares the loop over all elements of one type for the computation of the error estimator
Reimplemented from ug::IElemEstimatorFuncs< IElemDisc< TDomain >, TDomain >.
References ug::GeomProvider< typename TGeom >::get(), ug::SideAndElemErrEstData< typename TDomain >::num_all_side_ips(), ug::SideAndElemErrEstData< typename TDomain >::num_elem_ips(), ug::LagrangeP1< typename TRefElem >::num_sh(), ug::BaseLSFS< typename TImpl, int TDim, typename TShape, typename TGrad >::shapes(), UG_CATCH_THROW, and UG_THROW.
|
virtual |
type of trial space for each function used
Implements ug::IElemDiscBase< typename TDomain >.
References ug::LFEID::LAGRANGE, type(), and UG_THROW.
|
protected |
register utils
Registers the assembling functions for all the element types
Referenced by ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::ConvectionDiffusionFV1().
|
protected |
register utils
Registers the assembling functions for all the element types
|
protected |
Registers the assembling functions for an element type.
References UG_THROW.
Referenced by ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::RegisterLocalDiscr::operator()().
|
inline |
activates/deactivates the condensed scvf ip's for the FV scheme
References ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::m_bCondensedFV.
|
inline |
set singular sources and sinks
References ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::m_sss_mngr.
void ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::set_upwind | ( | SmartPtr< IConvectionShapes< dim > > | shapes | ) |
set the upwind method
This method sets the upwind method used to upwind the convection.
shapes | upwind method |
|
inline |
get singular sources and sinks
References ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::m_sss_mngr.
|
virtual |
returns if hanging nodes are needed
Reimplemented from ug::IElemDiscBase< typename TDomain >.
|
staticprivate |
abbreviation for the local solution
|
static |
World dimension.
|
protected |
if to use the 'condensed' FV scvf ip's
Referenced by ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::condensed_FV(), and ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::set_condensed_FV().
|
protected |
current regular grid flag
Referenced by ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::ConvectionDiffusionFV1().
|
private |
Export for the gradient of concentration.
|
private |
Export for the concentration.
|
private |
Data import for Diffusion.
|
private |
Data import for the Flux.
|
private |
Data import for the mass scale.
|
private |
Data import for the mass scale.
|
private |
Data import for the reaction term.
|
private |
Data import for the reaction term explicit.
|
private |
Data import for the reaction term.
|
private |
Data import for the reaction_rate term explicit.
|
private |
Data import for the right-hand side (volume)
|
private |
Data import for the source term explicit.
|
private |
Data import for the right-hand side (vector)
|
private |
Data import for the Velocity field.
|
private |
|
protected |
method to compute the upwind shapes
|
private |
singular sources and sinks manager
Referenced by ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::set_sss_manager(), and ug::ConvectionDiffusionPlugin::ConvectionDiffusionFV1< TDomain >::sss_manager().