27 const unsigned integration_order,
const unsigned shapefunction_order,
28 std::vector<std::unique_ptr<ParameterLib::ParameterBase>>
const& parameters)
40 "Variable id or component id too high. Actual values: ({:d}, "
41 "{:d}), maximum values: ({:d}, {:d}).",
48 .template existsPropertyVector<std::size_t>(
"bulk_node_ids"))
51 "The required bulk node ids map does not exist in the source term "
55 std::vector<MeshLib::Node*>
const& source_term_nodes =
58 "Found {:d} nodes for source term at mesh '{:s}' for the variable {:d} "
60 source_term_nodes.size(), source_term_mesh.
getName(), variable_id,
68 std::unique_ptr<NumLib::LocalToGlobalIndexMap> dof_table_source_term(
70 variable_id, {*config.component_id},
71 std::move(source_term_mesh_subset)));
73 config.
config, config.
mesh, std::move(dof_table_source_term),
78 if (type ==
"Line" || type ==
"Volumetric")
80 std::unique_ptr<NumLib::LocalToGlobalIndexMap> dof_table_source_term(
82 variable_id, {*config.component_id},
83 std::move(source_term_mesh_subset)));
84 auto const& bulk_mesh_dimension =
89 config.
config, bulk_mesh_dimension, config.
mesh,
90 std::move(dof_table_source_term), parameters, integration_order,
97 std::unique_ptr<NumLib::LocalToGlobalIndexMap> dof_table_source_term(
99 std::move(source_term_mesh_subset)));
102 config.
config, config.
mesh, std::move(dof_table_source_term),
106 OGS_FATAL(
"OpenGeoSys has not been built with Python support.");
110 OGS_FATAL(
"Unknown source term type: `{:s}'.", type);
void DBUG(char const *fmt, Args const &... args)
T peekConfigParameter(std::string const ¶m) const
A subset of nodes on a single mesh.
Mesh const & getMesh() const
std::vector< Node * > const & getNodes() const
Get the nodes-vector for the mesh.
unsigned getDimension() const
Returns the dimension of the mesh (determined by the maximum dimension over all elements).
std::size_t getID() const
Get id of the mesh.
const std::string getName() const
Get name of the mesh.
Properties & getProperties()
int getNumberOfVariables() const
int getNumberOfVariableComponents(int variable_id) const
MeshLib::MeshSubset const & getMeshSubset(int const variable_id, int const component_id) const
LocalToGlobalIndexMap * deriveBoundaryConstrainedMap(int const variable_id, std::vector< int > const &component_ids, MeshLib::MeshSubset &&new_mesh_subset) const
std::unique_ptr< SourceTerm > createPythonSourceTerm(BaseLib::ConfigTree const &config, MeshLib::Mesh const &source_term_mesh, std::unique_ptr< NumLib::LocalToGlobalIndexMap > dof_table, int const variable_id, int const component_id, unsigned const integration_order, unsigned const shapefunction_order, unsigned const global_dim)
std::unique_ptr< SourceTerm > createVolumetricSourceTerm(BaseLib::ConfigTree const &config, unsigned const bulk_mesh_dimension, MeshLib::Mesh const &source_term_mesh, std::unique_ptr< NumLib::LocalToGlobalIndexMap > source_term_dof_table, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters, unsigned const integration_order, unsigned const shapefunction_order)
std::unique_ptr< SourceTerm > createNodalSourceTerm(BaseLib::ConfigTree const &config, MeshLib::Mesh const &st_mesh, std::unique_ptr< NumLib::LocalToGlobalIndexMap > dof_table, std::size_t const source_term_mesh_id, const int variable_id, const int component_id, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)
std::unique_ptr< SourceTerm > createSourceTerm(const SourceTermConfig &config, const NumLib::LocalToGlobalIndexMap &dof_table_bulk, const MeshLib::Mesh &source_term_mesh, const int variable_id, const unsigned integration_order, const unsigned shapefunction_order, std::vector< std::unique_ptr< ParameterLib::ParameterBase >> const ¶meters)
BaseLib::ConfigTree config
MeshLib::Mesh const & mesh
std::optional< int > const component_id