From 5ece8757250527e8981055cd542c7ce71a8ded9c Mon Sep 17 00:00:00 2001 From: Christoph Lehmann <christoph.lehmann@ufz.de> Date: Tue, 31 Jul 2018 15:16:24 +0200 Subject: [PATCH] [PL] applied interface changes to existing BCs --- .../ConstraintDirichletBoundaryCondition.cpp | 3 ++- .../ConstraintDirichletBoundaryCondition.h | 2 +- .../BoundaryCondition/DirichletBoundaryCondition.cpp | 8 +++++--- .../BoundaryCondition/DirichletBoundaryCondition.h | 2 +- .../GenericNaturalBoundaryCondition-impl.h | 5 +++-- .../GenericNaturalBoundaryCondition.h | 10 ++++------ .../GenericNaturalBoundaryConditionLocalAssembler.h | 5 +++-- .../GenericNonuniformNaturalBoundaryCondition-impl.h | 7 ++++--- .../GenericNonuniformNaturalBoundaryCondition.h | 6 ++---- ...cNonuniformNaturalBoundaryConditionLocalAssembler.h | 5 +++-- .../NeumannBoundaryConditionLocalAssembler.h | 7 ++++--- .../NonuniformDirichletBoundaryCondition.h | 4 +--- .../NonuniformNeumannBoundaryConditionLocalAssembler.h | 3 ++- .../NormalTractionBoundaryCondition-impl.h | 7 ++++--- .../NormalTractionBoundaryCondition.h | 6 ++---- .../NormalTractionBoundaryConditionLocalAssembler.h | 8 +++++--- ...eFieldIrreversibleDamageOracleBoundaryCondition.cpp | 2 +- ...aseFieldIrreversibleDamageOracleBoundaryCondition.h | 2 +- .../RobinBoundaryConditionLocalAssembler.h | 2 +- 19 files changed, 49 insertions(+), 45 deletions(-) diff --git a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp index acce3726620..33567c6e25e 100644 --- a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp @@ -139,7 +139,8 @@ void ConstraintDirichletBoundaryCondition::preTimestep(double t, } void ConstraintDirichletBoundaryCondition::getEssentialBCValues( - const double t, NumLib::IndexValueVector<GlobalIndexType>& bc_values) const + const double t, const GlobalVector& /*x*/, + NumLib::IndexValueVector<GlobalIndexType>& bc_values) const { SpatialPosition pos; diff --git a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.h b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.h index 253abfceb7f..04d3b4095d6 100644 --- a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.h +++ b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.h @@ -63,7 +63,7 @@ public: void preTimestep(double t, GlobalVector const& x) override; void getEssentialBCValues( - const double t, + const double t, const GlobalVector& x, NumLib::IndexValueVector<GlobalIndexType>& bc_values) const override; private: diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp index a81977cdc17..38a7e6d08c2 100644 --- a/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.cpp @@ -10,14 +10,15 @@ #include "DirichletBoundaryCondition.h" #include <algorithm> -#include <vector> #include <logog/include/logog.hpp> +#include <vector> #include "ProcessLib/Utils/ProcessUtils.h" namespace ProcessLib { void DirichletBoundaryCondition::getEssentialBCValues( - const double t, NumLib::IndexValueVector<GlobalIndexType>& bc_values) const + const double t, GlobalVector const& /*x*/, + NumLib::IndexValueVector<GlobalIndexType>& bc_values) const { SpatialPosition pos; @@ -48,7 +49,8 @@ void DirichletBoundaryCondition::getEssentialBCValues( // and MatZeroRowsColumns, which are called to apply the Dirichlet BC, // the negative index is not accepted like other matrix or vector // PETSc routines. Therefore, the following if-condition is applied. - if (g_idx >= 0) { + if (g_idx >= 0) + { bc_values.ids.emplace_back(g_idx); bc_values.values.emplace_back(_parameter(t, pos).front()); } diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.h b/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.h index 721ea5d3ad1..f00681518cf 100644 --- a/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.h +++ b/ProcessLib/BoundaryCondition/DirichletBoundaryCondition.h @@ -58,7 +58,7 @@ public: } void getEssentialBCValues( - const double t, + const double t, GlobalVector const& x, NumLib::IndexValueVector<GlobalIndexType>& bc_values) const override; private: diff --git a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h index b164ed2b8c0..4da13051714 100644 --- a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h +++ b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition-impl.h @@ -70,11 +70,12 @@ void GenericNaturalBoundaryCondition< LocalAssemblerImplementation>::applyNaturalBC(const double t, const GlobalVector& x, GlobalMatrix& K, - GlobalVector& b) + GlobalVector& b, + GlobalMatrix* Jac) { GlobalExecutor::executeMemberOnDereferenced( &GenericNaturalBoundaryConditionLocalAssemblerInterface::assemble, - _local_assemblers, *_dof_table_boundary, t, x, K, b); + _local_assemblers, *_dof_table_boundary, t, x, K, b, Jac); } } // ProcessLib diff --git a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition.h b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition.h index f68304dc2f8..90b0d164f9a 100644 --- a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition.h +++ b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryCondition.h @@ -9,8 +9,8 @@ #pragma once -#include "MeshLib/MeshSubset.h" #include "BoundaryCondition.h" +#include "MeshLib/MeshSubset.h" namespace ProcessLib { @@ -38,10 +38,8 @@ public: /// Calls local assemblers which calculate their contributions to the global /// matrix and the right-hand-side. - void applyNaturalBC(const double t, - GlobalVector const& x, - GlobalMatrix& K, - GlobalVector& b) override; + void applyNaturalBC(const double t, GlobalVector const& x, GlobalMatrix& K, + GlobalVector& b, GlobalMatrix* Jac) override; private: /// Data used in the assembly of the specific boundary condition. @@ -63,6 +61,6 @@ private: _local_assemblers; }; -} // ProcessLib +} // namespace ProcessLib #include "GenericNaturalBoundaryCondition-impl.h" diff --git a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h index 219085cfc06..1721ef2589d 100644 --- a/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h +++ b/ProcessLib/BoundaryCondition/GenericNaturalBoundaryConditionLocalAssembler.h @@ -23,7 +23,8 @@ public: virtual void assemble( std::size_t const id, NumLib::LocalToGlobalIndexMap const& dof_table_boundary, double const t, - const GlobalVector& x, GlobalMatrix& K, GlobalVector& b) = 0; + const GlobalVector& x, GlobalMatrix& K, GlobalVector& b, + GlobalMatrix* Jac) = 0; }; template <typename ShapeFunction, typename IntegrationMethod, @@ -55,4 +56,4 @@ protected: _shape_matrices; }; -} // ProcessLib +} // namespace ProcessLib diff --git a/ProcessLib/BoundaryCondition/GenericNonuniformNaturalBoundaryCondition-impl.h b/ProcessLib/BoundaryCondition/GenericNonuniformNaturalBoundaryCondition-impl.h index a7b50d8957a..bf3e122f78b 100644 --- a/ProcessLib/BoundaryCondition/GenericNonuniformNaturalBoundaryCondition-impl.h +++ b/ProcessLib/BoundaryCondition/GenericNonuniformNaturalBoundaryCondition-impl.h @@ -89,12 +89,13 @@ void GenericNonuniformNaturalBoundaryCondition< LocalAssemblerImplementation>::applyNaturalBC(const double t, const GlobalVector& x, GlobalMatrix& K, - GlobalVector& b) + GlobalVector& b, + GlobalMatrix* Jac) { GlobalExecutor::executeMemberOnDereferenced( &GenericNonuniformNaturalBoundaryConditionLocalAssemblerInterface:: assemble, - _local_assemblers, *_dof_table_boundary, t, x, K, b); + _local_assemblers, *_dof_table_boundary, t, x, K, b, Jac); } -} // ProcessLib +} // namespace ProcessLib diff --git a/ProcessLib/BoundaryCondition/GenericNonuniformNaturalBoundaryCondition.h b/ProcessLib/BoundaryCondition/GenericNonuniformNaturalBoundaryCondition.h index d6753d96719..37249a52c5a 100644 --- a/ProcessLib/BoundaryCondition/GenericNonuniformNaturalBoundaryCondition.h +++ b/ProcessLib/BoundaryCondition/GenericNonuniformNaturalBoundaryCondition.h @@ -33,10 +33,8 @@ public: /// Calls local assemblers which calculate their contributions to the global /// matrix and the right-hand-side. - void applyNaturalBC(const double t, - GlobalVector const& x, - GlobalMatrix& K, - GlobalVector& b) override; + void applyNaturalBC(const double t, GlobalVector const& x, GlobalMatrix& K, + GlobalVector& b, GlobalMatrix* Jac) override; private: void constructDofTable(); diff --git a/ProcessLib/BoundaryCondition/GenericNonuniformNaturalBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/GenericNonuniformNaturalBoundaryConditionLocalAssembler.h index 72929d11a5e..3cf49814d08 100644 --- a/ProcessLib/BoundaryCondition/GenericNonuniformNaturalBoundaryConditionLocalAssembler.h +++ b/ProcessLib/BoundaryCondition/GenericNonuniformNaturalBoundaryConditionLocalAssembler.h @@ -24,7 +24,8 @@ public: virtual void assemble( std::size_t const id, NumLib::LocalToGlobalIndexMap const& dof_table_boundary, double const t, - const GlobalVector& x, GlobalMatrix& K, GlobalVector& b) = 0; + const GlobalVector& x, GlobalMatrix& K, GlobalVector& b, + GlobalMatrix* Jac) = 0; }; template <typename ShapeFunction, typename IntegrationMethod, @@ -88,4 +89,4 @@ protected: _ns_and_weights; }; -} // ProcessLib +} // namespace ProcessLib diff --git a/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h index cface4f4cdb..a88661d70cd 100644 --- a/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h +++ b/ProcessLib/BoundaryCondition/NeumannBoundaryConditionLocalAssembler.h @@ -9,9 +9,9 @@ #pragma once +#include "GenericNaturalBoundaryConditionLocalAssembler.h" #include "NumLib/DOF/DOFTableUtil.h" #include "ProcessLib/Parameter/Parameter.h" -#include "GenericNaturalBoundaryConditionLocalAssembler.h" namespace ProcessLib { @@ -42,7 +42,8 @@ public: void assemble(std::size_t const id, NumLib::LocalToGlobalIndexMap const& dof_table_boundary, double const t, const GlobalVector& /*x*/, - GlobalMatrix& /*K*/, GlobalVector& b) override + GlobalMatrix& /*K*/, GlobalVector& b, + GlobalMatrix* /*Jac*/) override { _local_rhs.setZero(); @@ -74,4 +75,4 @@ public: EIGEN_MAKE_ALIGNED_OPERATOR_NEW; }; -} // namespace ProcessLib +} // namespace ProcessLib diff --git a/ProcessLib/BoundaryCondition/NonuniformDirichletBoundaryCondition.h b/ProcessLib/BoundaryCondition/NonuniformDirichletBoundaryCondition.h index 69399374203..49ae3aacf7e 100644 --- a/ProcessLib/BoundaryCondition/NonuniformDirichletBoundaryCondition.h +++ b/ProcessLib/BoundaryCondition/NonuniformDirichletBoundaryCondition.h @@ -60,11 +60,9 @@ public: } void getEssentialBCValues( - const double /*t*/, + const double /*t*/, GlobalVector const& /*x*/, NumLib::IndexValueVector<GlobalIndexType>& bc_values) const override { - SpatialPosition pos; - bc_values.ids.clear(); bc_values.values.clear(); diff --git a/ProcessLib/BoundaryCondition/NonuniformNeumannBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/NonuniformNeumannBoundaryConditionLocalAssembler.h index d995082e418..3666afdcd39 100644 --- a/ProcessLib/BoundaryCondition/NonuniformNeumannBoundaryConditionLocalAssembler.h +++ b/ProcessLib/BoundaryCondition/NonuniformNeumannBoundaryConditionLocalAssembler.h @@ -57,7 +57,8 @@ public: void assemble(std::size_t const id, NumLib::LocalToGlobalIndexMap const& dof_table_boundary, double const /*t*/, const GlobalVector& /*x*/, - GlobalMatrix& /*K*/, GlobalVector& b) override + GlobalMatrix& /*K*/, GlobalVector& b, + GlobalMatrix* /*Jac*/) override { _local_rhs.setZero(); diff --git a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h b/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h index c0c26e40d99..ab5fad4556b 100644 --- a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h +++ b/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition-impl.h @@ -65,11 +65,12 @@ void NormalTractionBoundaryCondition< LocalAssemblerImplementation>::applyNaturalBC(const double t, const GlobalVector& x, GlobalMatrix& K, - GlobalVector& b) + GlobalVector& b, + GlobalMatrix* Jac) { GlobalExecutor::executeMemberOnDereferenced( &NormalTractionBoundaryConditionLocalAssemblerInterface::assemble, - _local_assemblers, *_dof_table_boundary, t, x, K, b); + _local_assemblers, *_dof_table_boundary, t, x, K, b, Jac); } std::unique_ptr<NormalTractionBoundaryCondition< @@ -98,4 +99,4 @@ createNormalTractionBoundaryCondition( } } // namespace NormalTractionBoundaryCondition -} // ProcessLib +} // namespace ProcessLib diff --git a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition.h b/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition.h index 9f849aadc89..14cb196809e 100644 --- a/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition.h +++ b/ProcessLib/BoundaryCondition/NormalTractionBoundaryCondition.h @@ -44,10 +44,8 @@ public: /// Calls local assemblers which calculate their contributions to the global /// matrix and the right-hand-side. - void applyNaturalBC(const double t, - GlobalVector const& x, - GlobalMatrix& K, - GlobalVector& b) override; + void applyNaturalBC(const double t, GlobalVector const& x, GlobalMatrix& K, + GlobalVector& b, GlobalMatrix* Jac) override; private: MeshLib::Mesh const& _bc_mesh; diff --git a/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h index e296fa1071d..cfe97bbc449 100644 --- a/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h +++ b/ProcessLib/BoundaryCondition/NormalTractionBoundaryConditionLocalAssembler.h @@ -10,8 +10,8 @@ #pragma once -#include "MeshLib/Elements/FaceRule.h" #include "MathLib/LinAlg/Eigen/EigenMapTools.h" +#include "MeshLib/Elements/FaceRule.h" #include "NumLib/DOF/DOFTableUtil.h" #include "ProcessLib/Parameter/Parameter.h" @@ -45,7 +45,8 @@ public: virtual void assemble( std::size_t const id, NumLib::LocalToGlobalIndexMap const& dof_table_boundary, double const t, - const GlobalVector& /*x*/, GlobalMatrix& /*K*/, GlobalVector& b) = 0; + const GlobalVector& /*x*/, GlobalMatrix& /*K*/, GlobalVector& b, + GlobalMatrix* /*Jac*/) = 0; virtual ~NormalTractionBoundaryConditionLocalAssemblerInterface() = default; }; @@ -126,7 +127,8 @@ public: void assemble(std::size_t const id, NumLib::LocalToGlobalIndexMap const& dof_table_boundary, double const t, const GlobalVector& /*x*/, - GlobalMatrix& /*K*/, GlobalVector& local_rhs) + GlobalMatrix& /*K*/, GlobalVector& local_rhs, + GlobalMatrix* /*Jac*/) override { _local_rhs.setZero(); diff --git a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp index bc72d5b4733..c9c70288dba 100644 --- a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.cpp @@ -17,7 +17,7 @@ namespace ProcessLib { void PhaseFieldIrreversibleDamageOracleBoundaryCondition::getEssentialBCValues( - const double /*t*/, + const double /*t*/, GlobalVector const& /*x*/, NumLib::IndexValueVector<GlobalIndexType>& bc_values) const { SpatialPosition pos; diff --git a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h index 9afa9f2426c..c14b1745271 100644 --- a/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h +++ b/ProcessLib/BoundaryCondition/PhaseFieldIrreversibleDamageOracleBoundaryCondition.h @@ -43,7 +43,7 @@ public: } void getEssentialBCValues( - const double t, + const double t, const GlobalVector& x, NumLib::IndexValueVector<GlobalIndexType>& bc_values) const override; void preTimestep(const double t, const GlobalVector& x) override; diff --git a/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h index f3bdc6181ee..1b780d40b04 100644 --- a/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h +++ b/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h @@ -46,7 +46,7 @@ public: void assemble(std::size_t const id, NumLib::LocalToGlobalIndexMap const& dof_table_boundary, double const t, const GlobalVector& /*x*/, GlobalMatrix& K, - GlobalVector& b) override + GlobalVector& b, GlobalMatrix* /*Jac*/) override { _local_K.setZero(); _local_rhs.setZero(); -- GitLab