OGS
ProcessLib::NodalSourceTerm Class Referencefinal

Detailed Description

Definition at line 10 of file NodalSourceTerm.h.

#include <NodalSourceTerm.h>

Inheritance diagram for ProcessLib::NodalSourceTerm:
[legend]
Collaboration diagram for ProcessLib::NodalSourceTerm:
[legend]

Public Member Functions

 NodalSourceTerm (std::unique_ptr< NumLib::LocalToGlobalIndexMap > source_term_dof_table, std::size_t const source_term_mesh_id, MeshLib::Mesh const &st_mesh, const int variable_id, const int component_id, ParameterLib::Parameter< double > const &parameter)
void integrate (const double t, GlobalVector const &x, GlobalVector &b, GlobalMatrix *jac) const override
Public Member Functions inherited from ProcessLib::SourceTerm
 SourceTerm (std::unique_ptr< NumLib::LocalToGlobalIndexMap > source_term_dof_table)
Public Member Functions inherited from ProcessLib::SourceTermBase
virtual ~SourceTermBase ()=default

Private Attributes

std::size_t const _source_term_mesh_id
MeshLib::Mesh const & _st_mesh
int const _variable_id
int const _component_id
ParameterLib::Parameter< double > const & _parameter

Additional Inherited Members

Protected Attributes inherited from ProcessLib::SourceTerm
std::unique_ptr< NumLib::LocalToGlobalIndexMap > const _source_term_dof_table

Constructor & Destructor Documentation

◆ NodalSourceTerm()

ProcessLib::NodalSourceTerm::NodalSourceTerm ( std::unique_ptr< NumLib::LocalToGlobalIndexMap > source_term_dof_table,
std::size_t const source_term_mesh_id,
MeshLib::Mesh const & st_mesh,
const int variable_id,
const int component_id,
ParameterLib::Parameter< double > const & parameter )
explicit

Definition at line 10 of file NodalSourceTerm.cpp.

17 : SourceTerm(std::move(source_term_dof_table)),
18 _source_term_mesh_id(source_term_mesh_id),
19 _st_mesh(st_mesh),
20 _variable_id(variable_id),
21 _component_id(component_id),
22 _parameter(parameter)
23{
24 DBUG("Create NodalSourceTerm.");
25}
void DBUG(fmt::format_string< Args... > fmt, Args &&... args)
Definition Logging.h:22
std::size_t const _source_term_mesh_id
ParameterLib::Parameter< double > const & _parameter
MeshLib::Mesh const & _st_mesh
SourceTerm(std::unique_ptr< NumLib::LocalToGlobalIndexMap > source_term_dof_table)

References ProcessLib::SourceTerm::SourceTerm(), _component_id, _parameter, _source_term_mesh_id, _st_mesh, _variable_id, and DBUG().

Member Function Documentation

◆ integrate()

void ProcessLib::NodalSourceTerm::integrate ( const double t,
GlobalVector const & x,
GlobalVector & b,
GlobalMatrix * jac ) const
overridevirtual

Implements ProcessLib::SourceTermBase.

Definition at line 27 of file NodalSourceTerm.cpp.

29{
30 DBUG("Assemble NodalSourceTerm.");
31
32 for (MeshLib::Node const* const node : _st_mesh.getNodes())
33 {
34 auto const node_id = node->getID();
35 MeshLib::Location const l{_source_term_mesh_id,
37 auto const global_index = _source_term_dof_table->getGlobalIndex(
39
40 if (global_index == NumLib::MeshComponentMap::nop)
41 {
42 continue;
43 }
44 // For the DDC approach (e.g. with PETSc option), the negative
45 // index of global_index means that the entry by that index is a ghost
46 // one, which should be dropped. Especially for PETSc routines
47 // MatZeroRows and MatZeroRowsColumns, which are called to apply the
48 // Dirichlet BC, the negative index is not accepted like other matrix or
49 // vector PETSc routines. Therefore, the following if-condition is
50 // applied.
51 if (global_index >= 0)
52 {
53 ParameterLib::SpatialPosition pos;
54 pos.setNodeID(node_id);
55 pos.setCoordinates(*node);
56
57 b.add(global_index, _parameter(t, pos).front());
58 }
59 }
60}
void add(IndexType rowId, double v)
add entry
Definition EigenVector.h:70
static constexpr NUMLIB_EXPORT GlobalIndexType const nop
void setNodeID(std::size_t node_id)
void setCoordinates(MathLib::Point3d const &coordinates)
std::unique_ptr< NumLib::LocalToGlobalIndexMap > const _source_term_dof_table

References _component_id, _parameter, ProcessLib::SourceTerm::_source_term_dof_table, _source_term_mesh_id, _st_mesh, _variable_id, MathLib::EigenVector::add(), DBUG(), MeshLib::Node, NumLib::MeshComponentMap::nop, ParameterLib::SpatialPosition::setCoordinates(), and ParameterLib::SpatialPosition::setNodeID().

Member Data Documentation

◆ _component_id

int const ProcessLib::NodalSourceTerm::_component_id
private

Definition at line 26 of file NodalSourceTerm.h.

Referenced by NodalSourceTerm(), and integrate().

◆ _parameter

ParameterLib::Parameter<double> const& ProcessLib::NodalSourceTerm::_parameter
private

Definition at line 27 of file NodalSourceTerm.h.

Referenced by NodalSourceTerm(), and integrate().

◆ _source_term_mesh_id

std::size_t const ProcessLib::NodalSourceTerm::_source_term_mesh_id
private

Definition at line 23 of file NodalSourceTerm.h.

Referenced by NodalSourceTerm(), and integrate().

◆ _st_mesh

MeshLib::Mesh const& ProcessLib::NodalSourceTerm::_st_mesh
private

Definition at line 24 of file NodalSourceTerm.h.

Referenced by NodalSourceTerm(), and integrate().

◆ _variable_id

int const ProcessLib::NodalSourceTerm::_variable_id
private

Definition at line 25 of file NodalSourceTerm.h.

Referenced by NodalSourceTerm(), and integrate().


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