Skip to content
Snippets Groups Projects
Commit f9918d2a authored by Tom Fischer's avatar Tom Fischer
Browse files

[PL] SourceTerms: Forward and use the parameter.

parent 671ea990
No related branches found
No related tags found
No related merge requests found
......@@ -18,18 +18,21 @@ namespace ProcessLib
std::unique_ptr<NodalSourceTerm> createNodalSourceTerm(
BaseLib::ConfigTree const& config,
const NumLib::LocalToGlobalIndexMap& dof_table, std::size_t const mesh_id,
std::size_t const node_id, const int variable_id, const int component_id)
std::size_t const node_id, const int variable_id, const int component_id,
std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters)
{
DBUG("Constructing NodalSourceTerm from config.");
//! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__type}
config.checkConfigParameter("type", "Nodal");
//! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__Nodal__value}
auto const nodal_value = config.getConfigParameter<double>("value");
DBUG("Using value %f as nodal source term", nodal_value);
//! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__parameter}
auto const param_name = config.getConfigParameter<std::string>("parameter");
DBUG("Using parameter %s as nodal source term.", param_name.c_str());
auto& param = findParameter<double>(param_name, parameters, 1);
return std::make_unique<NodalSourceTerm>(
dof_table, mesh_id, node_id, variable_id, component_id, nodal_value);
dof_table, mesh_id, node_id, variable_id, component_id, param);
}
} // namespace ProcessLib
......@@ -17,6 +17,7 @@ namespace ProcessLib
std::unique_ptr<NodalSourceTerm> createNodalSourceTerm(
BaseLib::ConfigTree const& config,
const NumLib::LocalToGlobalIndexMap& dof_table, std::size_t mesh_id,
std::size_t const node_id, const int variable_id, const int component_id);
std::size_t const node_id, const int variable_id, const int component_id,
std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters);
} // namespace ProcessLib
......@@ -17,18 +17,18 @@ NodalSourceTerm::NodalSourceTerm(const NumLib::LocalToGlobalIndexMap& dof_table,
std::size_t const mesh_id,
std::size_t const node_id,
const int variable_id, const int component_id,
double value)
Parameter<double> const& parameter)
: _dof_table(dof_table),
_mesh_id(mesh_id),
_node_id(node_id),
_variable_id(variable_id),
_component_id(component_id),
_value(value)
_parameter(parameter)
{
DBUG("Create NodalSourceTerm.");
}
void NodalSourceTerm::integrateNodalSourceTerm(const double /*t*/,
void NodalSourceTerm::integrateNodalSourceTerm(const double t,
GlobalVector& b) const
{
DBUG("Assemble NodalSourceTerm.");
......@@ -36,7 +36,11 @@ void NodalSourceTerm::integrateNodalSourceTerm(const double /*t*/,
MeshLib::Location const l{_mesh_id, MeshLib::MeshItemType::Node, _node_id};
auto const index =
_dof_table.getGlobalIndex(l, _variable_id, _component_id);
b.add(index, _value);
SpatialPosition pos;
pos.setNodeID(_node_id);
b.add(index, _parameter(t, pos).front());
}
} // namespace ProcessLib
......@@ -10,6 +10,7 @@
#pragma once
#include "NumLib/DOF/LocalToGlobalIndexMap.h"
#include "ProcessLib/Parameter/Parameter.h"
namespace ProcessLib
{
......@@ -19,7 +20,7 @@ public:
NodalSourceTerm(const NumLib::LocalToGlobalIndexMap& dof_table,
std::size_t const mesh_id, std::size_t const node_id,
const int variable_id, const int component_id,
double value);
Parameter<double> const& parameter);
void integrateNodalSourceTerm(
const double t,
......@@ -31,7 +32,7 @@ private:
std::size_t const _node_id;
int const _variable_id;
int const _component_id;
double const _value;
Parameter<double> const& _parameter;
};
} // namespace ProcessLib
......@@ -95,7 +95,7 @@ std::unique_ptr<NodalSourceTerm> SourceTermBuilder::createNodalSourceTerm(
return ProcessLib::createNodalSourceTerm(
config.config, dof_table, mesh.getID(), ids[0], variable_id,
*config.component_id);
*config.component_id, parameters);
}
} // ProcessLib
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment