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

[PL/SourceTerms] Process vars.: Create source terms.

parent fc36bb51
No related branches found
No related tags found
No related merge requests found
...@@ -59,6 +59,19 @@ void Process::initialize() ...@@ -59,6 +59,19 @@ void Process::initialize()
DBUG("Initialize boundary conditions."); DBUG("Initialize boundary conditions.");
_boundary_conditions.addBCsForProcessVariables( _boundary_conditions.addBCsForProcessVariables(
_process_variables, *_local_to_global_index_map, _integration_order); _process_variables, *_local_to_global_index_map, _integration_order);
for (int variable_id = 0;
variable_id < static_cast<int>(_process_variables.size());
++variable_id)
{
ProcessVariable& pv = _process_variables[variable_id];
auto sts =
pv.createSourceTerms(*_local_to_global_index_map, variable_id,
_integration_order);
std::move(sts.begin(), sts.end(),
std::back_inserter(_source_terms));
}
} }
void Process::setInitialConditions(double const t, GlobalVector& x) void Process::setInitialConditions(double const t, GlobalVector& x)
...@@ -128,6 +141,11 @@ void Process::assemble(const double t, GlobalVector const& x, GlobalMatrix& M, ...@@ -128,6 +141,11 @@ void Process::assemble(const double t, GlobalVector const& x, GlobalMatrix& M,
assembleConcreteProcess(t, x, M, K, b); assembleConcreteProcess(t, x, M, K, b);
_boundary_conditions.applyNaturalBC(t, x, K, b); _boundary_conditions.applyNaturalBC(t, x, K, b);
for (auto const& st : _source_terms)
{
st->integrateNodalSourceTerm(t, b);
}
} }
void Process::assembleWithJacobian(const double t, GlobalVector const& x, void Process::assembleWithJacobian(const double t, GlobalVector const& x,
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "NumLib/ODESolver/TimeDiscretization.h" #include "NumLib/ODESolver/TimeDiscretization.h"
#include "NumLib/NamedFunctionCaller.h" #include "NumLib/NamedFunctionCaller.h"
#include "ProcessLib/BoundaryCondition/BoundaryConditionCollection.h" #include "ProcessLib/BoundaryCondition/BoundaryConditionCollection.h"
#include "ProcessLib/SourceTerms/NodalSourceTerm.h"
#include "ProcessLib/Parameter/Parameter.h" #include "ProcessLib/Parameter/Parameter.h"
#include "ExtrapolatorData.h" #include "ExtrapolatorData.h"
...@@ -218,6 +219,7 @@ private: ...@@ -218,6 +219,7 @@ private:
std::vector<std::reference_wrapper<ProcessVariable>> _process_variables; std::vector<std::reference_wrapper<ProcessVariable>> _process_variables;
BoundaryConditionCollection _boundary_conditions; BoundaryConditionCollection _boundary_conditions;
std::vector<std::unique_ptr<NodalSourceTerm>> _source_terms;
ExtrapolatorData _extrapolator_data; ExtrapolatorData _extrapolator_data;
}; };
......
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