diff --git a/Documentation/ProjectFile/prj/process_variables/process_variable/source_terms/source_term/Nodal/t_parameter.md b/Documentation/ProjectFile/prj/process_variables/process_variable/source_terms/source_term/Nodal/t_parameter.md new file mode 100644 index 0000000000000000000000000000000000000000..d5819404d6fa143be1bebd851a9996a825900b3b --- /dev/null +++ b/Documentation/ProjectFile/prj/process_variables/process_variable/source_terms/source_term/Nodal/t_parameter.md @@ -0,0 +1,2 @@ +The name of the parameter that defines value that should be used for the source +term. diff --git a/Documentation/ProjectFile/prj/process_variables/process_variable/source_terms/source_term/Nodal/t_value.md b/Documentation/ProjectFile/prj/process_variables/process_variable/source_terms/source_term/Nodal/t_value.md deleted file mode 100644 index c27bd71e47f57aed6873e4416247e165e63564d7..0000000000000000000000000000000000000000 --- a/Documentation/ProjectFile/prj/process_variables/process_variable/source_terms/source_term/Nodal/t_value.md +++ /dev/null @@ -1 +0,0 @@ -The value for the nodal source term. diff --git a/ProcessLib/Process.cpp b/ProcessLib/Process.cpp index 8e2e0875f2812320d55c33d8a83ae8130be8435c..4647714e169eeeb86e119c127b63cbc16e60408a 100644 --- a/ProcessLib/Process.cpp +++ b/ProcessLib/Process.cpp @@ -47,6 +47,16 @@ Process::Process( pcs_BCs.emplace_back(BoundaryConditionCollection(parameters)); } return pcs_BCs; + }(_process_variables.size())), + _source_term_collections([&](const std::size_t number_of_processes) + -> std::vector<SourceTermCollection> { + std::vector<SourceTermCollection> pcs_sts; + pcs_sts.reserve(number_of_processes); + for (std::size_t i = 0; i < number_of_processes; i++) + { + pcs_sts.emplace_back(SourceTermCollection(parameters)); + } + return pcs_sts; }(_process_variables.size())) { } @@ -60,15 +70,9 @@ void Process::initializeProcessBoundaryConditionsAndSourceTerms( per_process_BCs.addBCsForProcessVariables(per_process_variables, dof_table, _integration_order); - std::vector<std::unique_ptr<NodalSourceTerm>> per_process_source_terms; - for (auto& pv : per_process_variables) - { - auto sts = pv.get().createSourceTerms(dof_table, 0, _integration_order); - - std::move(sts.begin(), sts.end(), - std::back_inserter(per_process_source_terms)); - } - _source_terms.push_back(std::move(per_process_source_terms)); + auto& per_process_sts = _source_term_collections[process_id]; + per_process_sts.addSourceTermsForProcessVariables( + per_process_variables, dof_table, _integration_order); } void Process::initializeBoundaryConditions() @@ -188,11 +192,7 @@ void Process::assemble(const double t, GlobalVector const& x, GlobalMatrix& M, (_coupled_solutions) != nullptr ? _coupled_solutions->process_id : 0; _boundary_conditions[pcs_id].applyNaturalBC(t, x, K, b); - auto& source_terms_per_pcs = _source_terms[pcs_id]; - for (auto& st : source_terms_per_pcs) - { - st->integrateNodalSourceTerm(t, b); - } + _source_term_collections[pcs_id].integrateNodalSourceTerms(t, b); } void Process::assembleWithJacobian(const double t, GlobalVector const& x, diff --git a/ProcessLib/Process.h b/ProcessLib/Process.h index 1ffb253dc710e58595214f79f77b4c1e9ca04904..467a04085e63c1e51cb069886de43ecda42d5525 100644 --- a/ProcessLib/Process.h +++ b/ProcessLib/Process.h @@ -16,6 +16,7 @@ #include "NumLib/ODESolver/ODESystem.h" #include "NumLib/ODESolver/TimeDiscretization.h" #include "ProcessLib/BoundaryCondition/BoundaryConditionCollection.h" +#include "ProcessLib/SourceTerms/SourceTermCollection.h" #include "ProcessLib/Output/CachedSecondaryVariable.h" #include "ProcessLib/Output/ExtrapolatorData.h" #include "ProcessLib/Output/SecondaryVariable.h" @@ -278,9 +279,10 @@ private: /// scheme, the size of vector is the number of the coupled processes. std::vector<BoundaryConditionCollection> _boundary_conditions; - /// Vector for nodal source terms. The outer vector is for processes, - /// which has the same size as that for boundary conditions. - std::vector<std::vector<std::unique_ptr<NodalSourceTerm>>> _source_terms; + /// Vector for nodal source term collections. For the monolithic scheme + /// or a single process, the size of the vector is one. For the staggered + /// scheme, the size of vector is the number of the coupled processes. + std::vector<SourceTermCollection> _source_term_collections; ExtrapolatorData _extrapolator_data; }; diff --git a/ProcessLib/ProcessVariable.cpp b/ProcessLib/ProcessVariable.cpp index e29350aad2fc781aadff545da72721b7f6c0678c..93474a224f8c1238941233ec4bb69fb3ee696933 100644 --- a/ProcessLib/ProcessVariable.cpp +++ b/ProcessLib/ProcessVariable.cpp @@ -178,14 +178,15 @@ std::vector<std::unique_ptr<NodalSourceTerm>> ProcessVariable::createSourceTerms( const NumLib::LocalToGlobalIndexMap& dof_table, const int variable_id, - unsigned const integration_order) + unsigned const integration_order, + std::vector<std::unique_ptr<ParameterBase>> const& parameters) { std::vector<std::unique_ptr<NodalSourceTerm>> source_terms; for (auto& config : _source_term_configs) source_terms.emplace_back(_source_term_builder->createSourceTerm( config, dof_table, _mesh, variable_id, integration_order, - _shapefunction_order)); + _shapefunction_order, parameters)); return source_terms; } diff --git a/ProcessLib/ProcessVariable.h b/ProcessLib/ProcessVariable.h index 63dfb1ca3cd196eee098a93b451fbbaa956aacd6..4a33f59bb18346915eea1cf62369e8ce6a4541eb 100644 --- a/ProcessLib/ProcessVariable.h +++ b/ProcessLib/ProcessVariable.h @@ -57,7 +57,8 @@ public: std::vector<std::unique_ptr<NodalSourceTerm>> createSourceTerms( const NumLib::LocalToGlobalIndexMap& dof_table, const int variable_id, - unsigned const integration_order); + unsigned const integration_order, + std::vector<std::unique_ptr<ParameterBase>> const& parameters); Parameter<double> const& getInitialCondition() const { diff --git a/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp b/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp index 9a561ed74b4e232c3ed306e3b5321582dd62df04..635d1d430d2c75fa8ba8bcef866d7f2fd4f8438b 100644 --- a/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp +++ b/ProcessLib/SourceTerms/CreateNodalSourceTerm.cpp @@ -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__Nodal__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 diff --git a/ProcessLib/SourceTerms/CreateNodalSourceTerm.h b/ProcessLib/SourceTerms/CreateNodalSourceTerm.h index d779a933c30bfa78e53c35cd648956d0db8717ac..7a8bfa7adc64aac4b579861fc4c95f2d11c8ae58 100644 --- a/ProcessLib/SourceTerms/CreateNodalSourceTerm.h +++ b/ProcessLib/SourceTerms/CreateNodalSourceTerm.h @@ -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 diff --git a/ProcessLib/SourceTerms/NodalSourceTerm.cpp b/ProcessLib/SourceTerms/NodalSourceTerm.cpp index aa358ac21b5c0141bfb8c410051a6ba10cf6a22e..6811bf8c952e6d80f9fa82deaa5fffd0fb0d92a2 100644 --- a/ProcessLib/SourceTerms/NodalSourceTerm.cpp +++ b/ProcessLib/SourceTerms/NodalSourceTerm.cpp @@ -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 diff --git a/ProcessLib/SourceTerms/NodalSourceTerm.h b/ProcessLib/SourceTerms/NodalSourceTerm.h index 65b85a1c4610803c75bc85d931daf0c6ac65d67d..9ee08a61e01e6d8e62bc26d029f8457671694d65 100644 --- a/ProcessLib/SourceTerms/NodalSourceTerm.h +++ b/ProcessLib/SourceTerms/NodalSourceTerm.h @@ -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 diff --git a/ProcessLib/SourceTerms/SourceTermBuilder.cpp b/ProcessLib/SourceTerms/SourceTermBuilder.cpp index 762ccb1ba821cceef6ff6357ce9fd5f5caa6f637..156bb4c9ecad7c74771126ae23099856f2233047 100644 --- a/ProcessLib/SourceTerms/SourceTermBuilder.cpp +++ b/ProcessLib/SourceTerms/SourceTermBuilder.cpp @@ -22,7 +22,8 @@ std::unique_ptr<NodalSourceTerm> SourceTermBuilder::createSourceTerm( const SourceTermConfig& config, const NumLib::LocalToGlobalIndexMap& dof_table, const MeshLib::Mesh& mesh, const int variable_id, const unsigned integration_order, - const unsigned shapefunction_order) + const unsigned shapefunction_order, + std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters) { //! \ogs_file_param{prj__process_variables__process_variable__source_terms__source_term__type} auto const type = config.config.peekConfigParameter<std::string>("type"); @@ -30,7 +31,8 @@ std::unique_ptr<NodalSourceTerm> SourceTermBuilder::createSourceTerm( if (type == "Nodal") { return createNodalSourceTerm(config, dof_table, mesh, variable_id, - integration_order, shapefunction_order); + integration_order, shapefunction_order, + parameters); } OGS_FATAL("Unknown source term type: `%s'.", type.c_str()); @@ -40,7 +42,8 @@ std::unique_ptr<NodalSourceTerm> SourceTermBuilder::createNodalSourceTerm( const SourceTermConfig& config, const NumLib::LocalToGlobalIndexMap& dof_table, const MeshLib::Mesh& mesh, const int variable_id, const unsigned /*integration_order*/, - const unsigned /*shapefunction_order*/) + const unsigned /*shapefunction_order*/, + std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& parameters) { std::unique_ptr<MeshGeoToolsLib::SearchLength> search_length_algorithm = MeshGeoToolsLib::createSearchLengthAlgorithm(config.config, mesh); @@ -88,11 +91,11 @@ std::unique_ptr<NodalSourceTerm> SourceTermBuilder::createNodalSourceTerm( if (ids.size() != 1) OGS_FATAL( "Found %d nodes for nodal source term, but exactly one node is " - "required."); + "required.", ids.size()); return ProcessLib::createNodalSourceTerm( config.config, dof_table, mesh.getID(), ids[0], variable_id, - *config.component_id); + *config.component_id, parameters); } } // ProcessLib diff --git a/ProcessLib/SourceTerms/SourceTermBuilder.h b/ProcessLib/SourceTerms/SourceTermBuilder.h index f3240cc68fd1b90fd3d0490b6c5f3b77c1a284be..ba060dd534067ca3e5e583253a673ba9794ca79f 100644 --- a/ProcessLib/SourceTerms/SourceTermBuilder.h +++ b/ProcessLib/SourceTerms/SourceTermBuilder.h @@ -10,6 +10,7 @@ #pragma once #include "NodalSourceTerm.h" +#include "ProcessLib/Parameter/Parameter.h" namespace GeoLib { @@ -47,14 +48,18 @@ public: const SourceTermConfig& config, const NumLib::LocalToGlobalIndexMap& dof_table, const MeshLib::Mesh& mesh, const int variable_id, - const unsigned integration_order, const unsigned shapefunction_order); + const unsigned integration_order, const unsigned shapefunction_order, + std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& + parameters); protected: virtual std::unique_ptr<NodalSourceTerm> createNodalSourceTerm( const SourceTermConfig& config, const NumLib::LocalToGlobalIndexMap& dof_table, const MeshLib::Mesh& mesh, const int variable_id, - const unsigned integration_order, const unsigned shapefunction_order); + const unsigned integration_order, const unsigned shapefunction_order, + std::vector<std::unique_ptr<ProcessLib::ParameterBase>> const& + parameters); }; } // ProcessLib diff --git a/ProcessLib/SourceTerms/SourceTermCollection.cpp b/ProcessLib/SourceTerms/SourceTermCollection.cpp new file mode 100644 index 0000000000000000000000000000000000000000..f0dc7ba5f978af2efc56d50845392cbde6509e38 --- /dev/null +++ b/ProcessLib/SourceTerms/SourceTermCollection.cpp @@ -0,0 +1,39 @@ +/** + * \copyright + * Copyright (c) 2012-2018, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + */ + +#include "SourceTermCollection.h" + +namespace ProcessLib +{ +void SourceTermCollection::addSourceTermsForProcessVariables( + std::vector<std::reference_wrapper<ProcessVariable>> const& + process_variables, + NumLib::LocalToGlobalIndexMap const& dof_table, + unsigned const 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(dof_table, variable_id, + integration_order, _parameters); + + std::move(sts.begin(), sts.end(), std::back_inserter(_source_terms)); + } +} + +void SourceTermCollection::integrateNodalSourceTerms(const double t, + GlobalVector& b) const +{ + for (auto const& st : _source_terms) + st->integrateNodalSourceTerm(t, b); +} + +} diff --git a/ProcessLib/SourceTerms/SourceTermCollection.h b/ProcessLib/SourceTerms/SourceTermCollection.h new file mode 100644 index 0000000000000000000000000000000000000000..bfa7f5a3478fa6e6d69867f143b05356ccae487c --- /dev/null +++ b/ProcessLib/SourceTerms/SourceTermCollection.h @@ -0,0 +1,39 @@ +/** + * \copyright + * Copyright (c) 2012-2018, OpenGeoSys Community (http://www.opengeosys.org) + * Distributed under a Modified BSD License. + * See accompanying file LICENSE.txt or + * http://www.opengeosys.org/project/license + * + */ + +#pragma once + +#include "ProcessLib/ProcessVariable.h" +#include "ProcessLib/SourceTerms/NodalSourceTerm.h" + +namespace ProcessLib +{ +class SourceTermCollection final +{ +public: + SourceTermCollection( + std::vector<std::unique_ptr<ParameterBase>> const& parameters) + : _parameters(parameters) + { + } + + void integrateNodalSourceTerms(const double t, GlobalVector& b) const; + + void addSourceTermsForProcessVariables( + std::vector<std::reference_wrapper<ProcessVariable>> const& + process_variables, + NumLib::LocalToGlobalIndexMap const& dof_table, + unsigned const integration_order); + +private: + std::vector<std::unique_ptr<NodalSourceTerm>> _source_terms; + std::vector<std::unique_ptr<ParameterBase>> const& _parameters; +}; + +} // ProcessLib diff --git a/Tests/Data/Elliptic/circle_radius_1/circle_1e1_axi.prj b/Tests/Data/Elliptic/circle_radius_1/circle_1e1_axi.prj index d34028d67a67a0a45760dac0256bdb9180bcebf1..99d8d7b71c087bad3c8a18da36ab72082d10efa7 100644 --- a/Tests/Data/Elliptic/circle_radius_1/circle_1e1_axi.prj +++ b/Tests/Data/Elliptic/circle_radius_1/circle_1e1_axi.prj @@ -84,6 +84,11 @@ <type>Constant</type> <value>0</value> </parameter> + <parameter> + <name>pressure_source_term</name> + <type>Constant</type> + <value>1</value> + </parameter> </parameters> <process_variables> <process_variable> @@ -104,7 +109,7 @@ <geometrical_set>geometry</geometrical_set> <geometry>inner</geometry> <type>Nodal</type> - <value>1</value> + <parameter>pressure_source_term</parameter> </source_term> </source_terms> </process_variable> diff --git a/Tests/Data/Elliptic/circle_radius_1/circle_1e2_axi.prj b/Tests/Data/Elliptic/circle_radius_1/circle_1e2_axi.prj index 77b9d2c4e7f97f408695b52e66da16dcc663e5d4..1927850dbfb2950eee440412197c180a5d258968 100644 --- a/Tests/Data/Elliptic/circle_radius_1/circle_1e2_axi.prj +++ b/Tests/Data/Elliptic/circle_radius_1/circle_1e2_axi.prj @@ -84,6 +84,11 @@ <type>Constant</type> <value>0</value> </parameter> + <parameter> + <name>pressure_source_term</name> + <type>Constant</type> + <value>1</value> + </parameter> </parameters> <process_variables> <process_variable> @@ -104,7 +109,7 @@ <geometrical_set>geometry</geometrical_set> <geometry>inner</geometry> <type>Nodal</type> - <value>1</value> + <parameter>pressure_source_term</parameter> </source_term> </source_terms> </process_variable> diff --git a/Tests/Data/Elliptic/circle_radius_1/circle_1e3_axi.prj b/Tests/Data/Elliptic/circle_radius_1/circle_1e3_axi.prj index 89c7ddc6b473046ea101b5e55758948b9194e16e..1db7377709f19de8c7a8d1db4760d3253256d062 100644 --- a/Tests/Data/Elliptic/circle_radius_1/circle_1e3_axi.prj +++ b/Tests/Data/Elliptic/circle_radius_1/circle_1e3_axi.prj @@ -84,6 +84,11 @@ <type>Constant</type> <value>0</value> </parameter> + <parameter> + <name>pressure_source_term</name> + <type>Constant</type> + <value>1</value> + </parameter> </parameters> <process_variables> <process_variable> @@ -104,7 +109,7 @@ <geometrical_set>geometry</geometrical_set> <geometry>inner</geometry> <type>Nodal</type> - <value>1</value> + <parameter>pressure_source_term</parameter> </source_term> </source_terms> </process_variable> diff --git a/Tests/Data/Elliptic/circle_radius_1/circle_1e4_axi.prj b/Tests/Data/Elliptic/circle_radius_1/circle_1e4_axi.prj index 2ef9e67c9d9a6ba8876d82abd519f694ed68e942..ec83cb0489b1e0516b699e455fd8d6835f9e6813 100644 --- a/Tests/Data/Elliptic/circle_radius_1/circle_1e4_axi.prj +++ b/Tests/Data/Elliptic/circle_radius_1/circle_1e4_axi.prj @@ -84,6 +84,11 @@ <type>Constant</type> <value>0</value> </parameter> + <parameter> + <name>pressure_source_term</name> + <type>Constant</type> + <value>1</value> + </parameter> </parameters> <process_variables> <process_variable> @@ -104,7 +109,7 @@ <geometrical_set>geometry</geometrical_set> <geometry>inner</geometry> <type>Nodal</type> - <value>1</value> + <parameter>pressure_source_term</parameter> </source_term> </source_terms> </process_variable> diff --git a/Tests/Data/Elliptic/circle_radius_1/circle_1e5_axi.prj b/Tests/Data/Elliptic/circle_radius_1/circle_1e5_axi.prj index 436391d00c192f63916919435c04998faca7326f..9df67ae0db1e69f21fd9d2066bc6da54626283de 100644 --- a/Tests/Data/Elliptic/circle_radius_1/circle_1e5_axi.prj +++ b/Tests/Data/Elliptic/circle_radius_1/circle_1e5_axi.prj @@ -84,6 +84,11 @@ <type>Constant</type> <value>0</value> </parameter> + <parameter> + <name>pressure_source_term</name> + <type>Constant</type> + <value>1</value> + </parameter> </parameters> <process_variables> <process_variable> @@ -104,7 +109,7 @@ <geometrical_set>geometry</geometrical_set> <geometry>inner</geometry> <type>Nodal</type> - <value>1</value> + <parameter>pressure_source_term</parameter> </source_term> </source_terms> </process_variable> diff --git a/Tests/Data/Elliptic/circle_radius_1/circle_1e6_axi.prj b/Tests/Data/Elliptic/circle_radius_1/circle_1e6_axi.prj index 86470dd0ef918fdfcf28e6ccf9ee4c75eda7afb9..411c1c9052404785f6b6ee752723b7450ee3cb36 100644 --- a/Tests/Data/Elliptic/circle_radius_1/circle_1e6_axi.prj +++ b/Tests/Data/Elliptic/circle_radius_1/circle_1e6_axi.prj @@ -81,6 +81,11 @@ <type>Constant</type> <value>0</value> </parameter> + <parameter> + <name>pressure_source_term</name> + <type>Constant</type> + <value>1</value> + </parameter> </parameters> <process_variables> <process_variable> @@ -101,7 +106,7 @@ <geometrical_set>geometry</geometrical_set> <geometry>inner</geometry> <type>Nodal</type> - <value>1</value> + <parameter>pressure_source_term</parameter> </source_term> </source_terms> </process_variable> diff --git a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6_with_nodal_sources.prj b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6_with_nodal_sources.prj index fc58c74366310608744fbb6f68bdf6c4977a6052..3ab93dd092fa89781c88cfe961f76e0690578205 100644 --- a/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6_with_nodal_sources.prj +++ b/Tests/Data/Elliptic/square_1x1_GroundWaterFlow/square_1e6_with_nodal_sources.prj @@ -65,6 +65,11 @@ <type>Constant</type> <value>0</value> </parameter> + <parameter> + <name>pressure_source_term</name> + <type>Constant</type> + <value>1</value> + </parameter> </parameters> <process_variables> <process_variable> @@ -91,7 +96,7 @@ <geometrical_set>square_1x1_geometry</geometrical_set> <geometry>middle_point</geometry> <type>Nodal</type> - <value>1</value> + <parameter>pressure_source_term</parameter> </source_term> </source_terms> </process_variable>