OGS
ProcessLib::LocalAssemblerInterface Class Reference

Detailed Description

Common interface for local assemblers NumLib::ODESystemTag::FirstOrderImplicitQuasilinear ODE systems.

Todo
Generalize to other NumLib::ODESystemTag's.

Definition at line 23 of file LocalAssemblerInterface.h.

#include <LocalAssemblerInterface.h>

Inheritance diagram for ProcessLib::LocalAssemblerInterface:
[legend]

Public Member Functions

virtual ~LocalAssemblerInterface ()=default
virtual void setInitialConditions (std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x, double const t, int const process_id)
virtual void initialize (std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table)
virtual void preAssemble (double const, double const, std::vector< double > const &)
virtual void assemble (double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_x_prev, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data)
virtual void assembleForStaggeredScheme (double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, int const process_id, std::vector< double > &local_M_data, std::vector< double > &local_K_data, std::vector< double > &local_b_data)
virtual void assembleWithJacobian (double const t, double const dt, std::vector< double > const &local_x, std::vector< double > const &local_x_prev, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data)
virtual void assembleWithJacobianForStaggeredScheme (double const t, double const dt, Eigen::VectorXd const &local_x, Eigen::VectorXd const &local_x_prev, int const process_id, std::vector< double > &local_b_data, std::vector< double > &local_Jac_data)
virtual void computeSecondaryVariable (std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, double const t, double const dt, std::vector< GlobalVector * > const &x, GlobalVector const &x_prev, int const process_id)
virtual void preTimestep (std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table, GlobalVector const &x, double const t, double const delta_t)
virtual void postTimestep (std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, double const t, double const dt, int const process_id)
void postNonLinearSolver (std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x, std::vector< GlobalVector * > const &x_prev, double const t, double const dt, int const process_id)
virtual Eigen::Vector3d getFlux (MathLib::Point3d const &, double const, std::vector< double > const &) const
virtual Eigen::Vector3d getFlux (MathLib::Point3d const &, double const, std::vector< std::vector< double > > const &) const
 Fits to staggered scheme.
virtual int getNumberOfVectorElementsForDeformation () const

Private Member Functions

virtual void setInitialConditionsConcrete (Eigen::VectorXd const, double const, int const)
virtual void initializeConcrete ()
virtual void preTimestepConcrete (std::vector< double > const &, double const, double const)
virtual void postTimestepConcrete (Eigen::VectorXd const &, Eigen::VectorXd const &, double const, double const, int const)
virtual void postNonLinearSolverConcrete (Eigen::VectorXd const &, Eigen::VectorXd const &, double const, double const, int const)
virtual void computeSecondaryVariableConcrete (double const, double const, Eigen::VectorXd const &, Eigen::VectorXd const &)

Constructor & Destructor Documentation

◆ ~LocalAssemblerInterface()

virtual ProcessLib::LocalAssemblerInterface::~LocalAssemblerInterface ( )
virtualdefault

Member Function Documentation

◆ assemble()

void ProcessLib::LocalAssemblerInterface::assemble ( double const t,
double const dt,
std::vector< double > const & local_x,
std::vector< double > const & local_x_prev,
std::vector< double > & local_M_data,
std::vector< double > & local_K_data,
std::vector< double > & local_b_data )
virtual

Reimplemented in ProcessLib::ComponentTransport::LocalAssemblerData< ShapeFunction, GlobalDim >, ProcessLib::HeatConduction::LocalAssemblerData< ShapeFunction, GlobalDim >, ProcessLib::HeatTransportBHE::HeatTransportBHELocalAssemblerBHE< ShapeFunction, BHEType >, ProcessLib::HeatTransportBHE::HeatTransportBHELocalAssemblerSoil< ShapeFunction >, ProcessLib::HT::MonolithicHTFEM< ShapeFunction, GlobalDim >, ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >, ProcessLib::LargeDeformation::LargeDeformationLocalAssembler< ShapeFunction, DisplacementDim >, ProcessLib::LIE::HydroMechanics::HydroMechanicsLocalAssemblerInterface, ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerFracture< ShapeFunction, DisplacementDim >, ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerMatrix< ShapeFunction, DisplacementDim >, ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerMatrixNearFracture< ShapeFunction, DisplacementDim >, ProcessLib::LiquidFlow::LiquidFlowLocalAssembler< ShapeFunction, GlobalDim >, ProcessLib::PhaseField::PhaseFieldLocalAssembler< ShapeFunction, DisplacementDim >, ProcessLib::RichardsComponentTransport::LocalAssemblerData< ShapeFunction, GlobalDim >, ProcessLib::RichardsFlow::LocalAssemblerData< ShapeFunction, GlobalDim >, ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >, ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >, ProcessLib::SteadyStateDiffusion::LocalAssemblerData< ShapeFunction, GlobalDim >, ProcessLib::TH2M::TH2MLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >, ProcessLib::ThermalTwoPhaseFlowWithPP::ThermalTwoPhaseFlowWithPPLocalAssembler< ShapeFunction, GlobalDim >, ProcessLib::ThermoHydroMechanics::ThermoHydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >, ProcessLib::ThermoMechanics::ThermoMechanicsLocalAssembler< ShapeFunction, DisplacementDim >, ProcessLib::ThermoRichardsFlow::ThermoRichardsFlowLocalAssembler< ShapeFunction, GlobalDim >, ProcessLib::TwoPhaseFlowWithPP::TwoPhaseFlowWithPPLocalAssembler< ShapeFunction, GlobalDim >, and ProcessLib::WellboreSimulator::WellboreSimulatorFEM< ShapeFunction, GlobalDim >.

Definition at line 13 of file LocalAssemblerInterface.cpp.

21{
23 "The assemble() function is not implemented in the local assembler.");
24}
#define OGS_FATAL(...)
Definition Error.h:19

References OGS_FATAL.

Referenced by ProcessLib::VectorMatrixAssembler::assemble(), anonymous_namespace{ParallelVectorMatrixAssembler.cpp}::assembleOneElement(), ProcessLib::CentralDifferencesJacobianAssembler::assembleWithJacobian(), and ProcessLib::ForwardDifferencesJacobianAssembler::assembleWithJacobian().

◆ assembleForStaggeredScheme()

void ProcessLib::LocalAssemblerInterface::assembleForStaggeredScheme ( double const t,
double const dt,
Eigen::VectorXd const & local_x,
Eigen::VectorXd const & local_x_prev,
int const process_id,
std::vector< double > & local_M_data,
std::vector< double > & local_K_data,
std::vector< double > & local_b_data )
virtual

◆ assembleWithJacobian()

void ProcessLib::LocalAssemblerInterface::assembleWithJacobian ( double const t,
double const dt,
std::vector< double > const & local_x,
std::vector< double > const & local_x_prev,
std::vector< double > & local_b_data,
std::vector< double > & local_Jac_data )
virtual

Reimplemented in ProcessLib::HeatConduction::LocalAssemblerData< ShapeFunction, GlobalDim >, ProcessLib::HeatTransportBHE::HeatTransportBHELocalAssemblerBHE< ShapeFunction, BHEType >, ProcessLib::HeatTransportBHE::HeatTransportBHELocalAssemblerSoil< ShapeFunction >, ProcessLib::HydroMechanics::HydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >, ProcessLib::LargeDeformation::LargeDeformationLocalAssembler< ShapeFunction, DisplacementDim >, ProcessLib::LIE::HydroMechanics::HydroMechanicsLocalAssemblerInterface, ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerInterface, ProcessLib::LIE::SmallDeformation::SmallDeformationLocalAssemblerMatrix< ShapeFunction, DisplacementDim >, ProcessLib::RichardsMechanics::RichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >, ProcessLib::SmallDeformation::SmallDeformationLocalAssembler< ShapeFunction, DisplacementDim >, ProcessLib::TH2M::TH2MLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >, ProcessLib::ThermoHydroMechanics::ThermoHydroMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunctionPressure, DisplacementDim >, ProcessLib::ThermoMechanics::ThermoMechanicsLocalAssembler< ShapeFunction, DisplacementDim >, ProcessLib::ThermoRichardsFlow::ThermoRichardsFlowLocalAssembler< ShapeFunction, GlobalDim >, and ProcessLib::ThermoRichardsMechanics::ThermoRichardsMechanicsLocalAssembler< ShapeFunctionDisplacement, ShapeFunction, DisplacementDim, ConstitutiveTraits >.

Definition at line 38 of file LocalAssemblerInterface.cpp.

44{
46 "The assembleWithJacobian() function is not implemented in the local "
47 "assembler.");
48}

References OGS_FATAL.

Referenced by ProcessLib::AnalyticalJacobianAssembler::assembleWithJacobian().

◆ assembleWithJacobianForStaggeredScheme()

void ProcessLib::LocalAssemblerInterface::assembleWithJacobianForStaggeredScheme ( double const t,
double const dt,
Eigen::VectorXd const & local_x,
Eigen::VectorXd const & local_x_prev,
int const process_id,
std::vector< double > & local_b_data,
std::vector< double > & local_Jac_data )
virtual

◆ computeSecondaryVariable()

void ProcessLib::LocalAssemblerInterface::computeSecondaryVariable ( std::size_t const mesh_item_id,
std::vector< NumLib::LocalToGlobalIndexMap const * > const & dof_tables,
double const t,
double const dt,
std::vector< GlobalVector * > const & x,
GlobalVector const & x_prev,
int const process_id )
virtual

Definition at line 61 of file LocalAssemblerInterface.cpp.

66{
67 auto const local_x = NumLib::getLocalX(mesh_item_id, dof_tables, x);
68
69 // Todo: A more decent way is to directly pass x_prevs as done for x
70 auto const indices =
71 NumLib::getIndices(mesh_item_id, *dof_tables[process_id]);
72 auto const local_x_prev_vec = x_prev.get(indices);
73 auto const local_x_prev = MathLib::toVector(local_x_prev_vec);
74
75 computeSecondaryVariableConcrete(t, dt, local_x, local_x_prev);
76}
virtual void computeSecondaryVariableConcrete(double const, double const, Eigen::VectorXd const &, Eigen::VectorXd const &)
Eigen::Map< const Vector > toVector(std::vector< double > const &data, Eigen::VectorXd::Index size)
Creates an Eigen mapped vector from the given data vector.
std::vector< GlobalIndexType > getIndices(std::size_t const mesh_item_id, NumLib::LocalToGlobalIndexMap const &dof_table)
Eigen::VectorXd getLocalX(std::size_t const mesh_item_id, std::vector< NumLib::LocalToGlobalIndexMap const * > const &dof_tables, std::vector< GlobalVector * > const &x)

References computeSecondaryVariableConcrete(), MathLib::EigenVector::get(), NumLib::getIndices(), NumLib::getLocalX(), and MathLib::toVector().

Referenced by ProcessLib::ComponentTransport::ComponentTransportProcess::computeSecondaryVariableConcrete(), ProcessLib::HeatConduction::HeatConductionProcess::computeSecondaryVariableConcrete(), ProcessLib::HeatTransportBHE::HeatTransportBHEProcess::computeSecondaryVariableConcrete(), ProcessLib::HydroMechanics::HydroMechanicsProcess< DisplacementDim >::computeSecondaryVariableConcrete(), ProcessLib::LargeDeformation::LargeDeformationProcess< DisplacementDim >::computeSecondaryVariableConcrete(), ProcessLib::LIE::SmallDeformation::SmallDeformationProcess< DisplacementDim >::computeSecondaryVariableConcrete(), ProcessLib::LiquidFlow::LiquidFlowProcess::computeSecondaryVariableConcrete(), ProcessLib::RichardsMechanics::RichardsMechanicsProcess< DisplacementDim >::computeSecondaryVariableConcrete(), ProcessLib::SmallDeformation::SmallDeformationProcess< DisplacementDim >::computeSecondaryVariableConcrete(), ProcessLib::TH2M::TH2MProcess< DisplacementDim >::computeSecondaryVariableConcrete(), ProcessLib::ThermoHydroMechanics::ThermoHydroMechanicsProcess< DisplacementDim >::computeSecondaryVariableConcrete(), ProcessLib::ThermoRichardsFlow::ThermoRichardsFlowProcess::computeSecondaryVariableConcrete(), ProcessLib::ThermoRichardsMechanics::ThermoRichardsMechanicsProcess< DisplacementDim, ConstitutiveTraits >::computeSecondaryVariableConcrete(), and ProcessLib::WellboreSimulator::WellboreSimulatorProcess::computeSecondaryVariableConcrete().

◆ computeSecondaryVariableConcrete()

◆ getFlux() [1/2]

virtual Eigen::Vector3d ProcessLib::LocalAssemblerInterface::getFlux ( MathLib::Point3d const & ,
double const ,
std::vector< double > const &  ) const
inlinevirtual

Computes the flux in the point p_local_coords that is given in local coordinates using the values from local_x. Fits to monolithic scheme.

Reimplemented in ProcessLib::ComponentTransport::LocalAssemblerData< ShapeFunction, GlobalDim >, ProcessLib::HT::HTFEM< ShapeFunction, GlobalDim >, ProcessLib::HT::HTLocalAssemblerInterface, ProcessLib::LiquidFlow::LiquidFlowLocalAssembler< ShapeFunction, GlobalDim >, and ProcessLib::SteadyStateDiffusion::LocalAssemblerData< ShapeFunction, GlobalDim >.

Definition at line 94 of file LocalAssemblerInterface.h.

98 {
99 return Eigen::Vector3d{};
100 }

◆ getFlux() [2/2]

virtual Eigen::Vector3d ProcessLib::LocalAssemblerInterface::getFlux ( MathLib::Point3d const & ,
double const ,
std::vector< std::vector< double > > const &  ) const
inlinevirtual

Fits to staggered scheme.

Definition at line 103 of file LocalAssemblerInterface.h.

107 {
108 return Eigen::Vector3d{};
109 }

◆ getNumberOfVectorElementsForDeformation()

◆ initialize()

void ProcessLib::LocalAssemblerInterface::initialize ( std::size_t const mesh_item_id,
NumLib::LocalToGlobalIndexMap const & dof_table )
virtual

◆ initializeConcrete()

◆ postNonLinearSolver()

void ProcessLib::LocalAssemblerInterface::postNonLinearSolver ( std::size_t const mesh_item_id,
std::vector< NumLib::LocalToGlobalIndexMap const * > const & dof_tables,
std::vector< GlobalVector * > const & x,
std::vector< GlobalVector * > const & x_prev,
double const t,
double const dt,
int const process_id )

Definition at line 120 of file LocalAssemblerInterface.cpp.

126{
127 auto const local_x = NumLib::getLocalX(mesh_item_id, dof_tables, x);
128 auto const local_x_prev =
129 NumLib::getLocalX(mesh_item_id, dof_tables, x_prev);
130
131 postNonLinearSolverConcrete(local_x, local_x_prev, t, dt, process_id);
132}
virtual void postNonLinearSolverConcrete(Eigen::VectorXd const &, Eigen::VectorXd const &, double const, double const, int const)

References NumLib::getLocalX(), and postNonLinearSolverConcrete().

Referenced by ProcessLib::HMPhaseField::HMPhaseFieldProcess< DisplacementDim >::postNonLinearSolverConcreteProcess(), and ProcessLib::HydroMechanics::HydroMechanicsProcess< DisplacementDim >::postNonLinearSolverConcreteProcess().

◆ postNonLinearSolverConcrete()

virtual void ProcessLib::LocalAssemblerInterface::postNonLinearSolverConcrete ( Eigen::VectorXd const & ,
Eigen::VectorXd const & ,
double const ,
double const ,
int const  )
inlineprivatevirtual

◆ postTimestep()

void ProcessLib::LocalAssemblerInterface::postTimestep ( std::size_t const mesh_item_id,
std::vector< NumLib::LocalToGlobalIndexMap const * > const & dof_tables,
std::vector< GlobalVector * > const & x,
std::vector< GlobalVector * > const & x_prev,
double const t,
double const dt,
int const process_id )
virtual

Definition at line 106 of file LocalAssemblerInterface.cpp.

112{
113 auto const local_x = NumLib::getLocalX(mesh_item_id, dof_tables, x);
114 auto const local_x_prev =
115 NumLib::getLocalX(mesh_item_id, dof_tables, x_prev);
116
117 postTimestepConcrete(local_x, local_x_prev, t, dt, process_id);
118}
virtual void postTimestepConcrete(Eigen::VectorXd const &, Eigen::VectorXd const &, double const, double const, int const)

References NumLib::getLocalX(), and postTimestepConcrete().

Referenced by ProcessLib::ComponentTransport::ComponentTransportProcess::postTimestepConcreteProcess(), ProcessLib::HMPhaseField::HMPhaseFieldProcess< DisplacementDim >::postTimestepConcreteProcess(), ProcessLib::HydroMechanics::HydroMechanicsProcess< DisplacementDim >::postTimestepConcreteProcess(), ProcessLib::LargeDeformation::LargeDeformationProcess< DisplacementDim >::postTimestepConcreteProcess(), ProcessLib::LIE::HydroMechanics::HydroMechanicsProcess< DisplacementDim >::postTimestepConcreteProcess(), ProcessLib::RichardsMechanics::RichardsMechanicsProcess< DisplacementDim >::postTimestepConcreteProcess(), ProcessLib::SmallDeformation::SmallDeformationProcess< DisplacementDim >::postTimestepConcreteProcess(), ProcessLib::TH2M::TH2MProcess< DisplacementDim >::postTimestepConcreteProcess(), ProcessLib::ThermoHydroMechanics::ThermoHydroMechanicsProcess< DisplacementDim >::postTimestepConcreteProcess(), ProcessLib::ThermoMechanics::ThermoMechanicsProcess< DisplacementDim >::postTimestepConcreteProcess(), ProcessLib::ThermoRichardsFlow::ThermoRichardsFlowProcess::postTimestepConcreteProcess(), ProcessLib::ThermoRichardsMechanics::ThermoRichardsMechanicsProcess< DisplacementDim, ConstitutiveTraits >::postTimestepConcreteProcess(), and ProcessLib::WellboreSimulator::WellboreSimulatorProcess::postTimestepConcreteProcess().

◆ postTimestepConcrete()

virtual void ProcessLib::LocalAssemblerInterface::postTimestepConcrete ( Eigen::VectorXd const & ,
Eigen::VectorXd const & ,
double const ,
double const ,
int const  )
inlineprivatevirtual

◆ preAssemble()

virtual void ProcessLib::LocalAssemblerInterface::preAssemble ( double const ,
double const ,
std::vector< double > const &  )
inlinevirtual

Definition at line 37 of file LocalAssemblerInterface.h.

38 {};

Referenced by ProcessLib::VectorMatrixAssembler::preAssemble().

◆ preTimestep()

void ProcessLib::LocalAssemblerInterface::preTimestep ( std::size_t const mesh_item_id,
NumLib::LocalToGlobalIndexMap const & dof_table,
GlobalVector const & x,
double const t,
double const delta_t )
virtual

Definition at line 95 of file LocalAssemblerInterface.cpp.

99{
100 auto const indices = NumLib::getIndices(mesh_item_id, dof_table);
101 auto const local_x = x.get(indices);
102
103 preTimestepConcrete(local_x, t, delta_t);
104}
virtual void preTimestepConcrete(std::vector< double > const &, double const, double const)

References MathLib::EigenVector::get(), NumLib::getIndices(), and preTimestepConcrete().

Referenced by ProcessLib::HMPhaseField::HMPhaseFieldProcess< DisplacementDim >::preTimestepConcreteProcess(), ProcessLib::HydroMechanics::HydroMechanicsProcess< DisplacementDim >::preTimestepConcreteProcess(), ProcessLib::LIE::HydroMechanics::HydroMechanicsProcess< DisplacementDim >::preTimestepConcreteProcess(), ProcessLib::LIE::SmallDeformation::SmallDeformationProcess< DisplacementDim >::preTimestepConcreteProcess(), ProcessLib::PhaseField::PhaseFieldProcess< DisplacementDim >::preTimestepConcreteProcess(), ProcessLib::RichardsMechanics::RichardsMechanicsProcess< DisplacementDim >::preTimestepConcreteProcess(), ProcessLib::SmallDeformation::SmallDeformationProcess< DisplacementDim >::preTimestepConcreteProcess(), ProcessLib::TH2M::TH2MProcess< DisplacementDim >::preTimestepConcreteProcess(), ProcessLib::ThermalTwoPhaseFlowWithPP::ThermalTwoPhaseFlowWithPPProcess::preTimestepConcreteProcess(), ProcessLib::ThermoHydroMechanics::ThermoHydroMechanicsProcess< DisplacementDim >::preTimestepConcreteProcess(), and ProcessLib::ThermoMechanics::ThermoMechanicsProcess< DisplacementDim >::preTimestepConcreteProcess().

◆ preTimestepConcrete()

◆ setInitialConditions()

void ProcessLib::LocalAssemblerInterface::setInitialConditions ( std::size_t const mesh_item_id,
std::vector< NumLib::LocalToGlobalIndexMap const * > const & dof_tables,
std::vector< GlobalVector * > const & x,
double const t,
int const process_id )
virtual

◆ setInitialConditionsConcrete()


The documentation for this class was generated from the following files: