From c3c3bb053c70df45dc2c8afaa5dd51bf8d2f8a50 Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Thu, 2 Nov 2017 10:28:27 +0100 Subject: [PATCH] [PL/SourceTerms] Process vars.: Create source terms. --- ProcessLib/Process.cpp | 18 ++++++++++++++++++ ProcessLib/Process.h | 2 ++ 2 files changed, 20 insertions(+) diff --git a/ProcessLib/Process.cpp b/ProcessLib/Process.cpp index afe758b7ebb..9d066191a12 100644 --- a/ProcessLib/Process.cpp +++ b/ProcessLib/Process.cpp @@ -59,6 +59,19 @@ void Process::initialize() DBUG("Initialize boundary conditions."); _boundary_conditions.addBCsForProcessVariables( _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) @@ -128,6 +141,11 @@ void Process::assemble(const double t, GlobalVector const& x, GlobalMatrix& M, assembleConcreteProcess(t, x, M, 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, diff --git a/ProcessLib/Process.h b/ProcessLib/Process.h index 88ef33bf5ee..b9fba6a81f6 100644 --- a/ProcessLib/Process.h +++ b/ProcessLib/Process.h @@ -14,6 +14,7 @@ #include "NumLib/ODESolver/TimeDiscretization.h" #include "NumLib/NamedFunctionCaller.h" #include "ProcessLib/BoundaryCondition/BoundaryConditionCollection.h" +#include "ProcessLib/SourceTerms/NodalSourceTerm.h" #include "ProcessLib/Parameter/Parameter.h" #include "ExtrapolatorData.h" @@ -218,6 +219,7 @@ private: std::vector<std::reference_wrapper<ProcessVariable>> _process_variables; BoundaryConditionCollection _boundary_conditions; + std::vector<std::unique_ptr<NodalSourceTerm>> _source_terms; ExtrapolatorData _extrapolator_data; }; -- GitLab