diff --git a/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/ConstraintDirichletBoundaryCondition.cpp index acce3726620c45b75644b929f8c681063e7d7717..33567c6e25e44812d3e77c65358d1685b02d91c2 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 253abfceb7fddd23c46f41ad64de4d8e63e7b1f8..04d3b4095d6906f3ecb0b7d30441e6df668ad92a 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 a81977cdc17c99b7ca976249843cd510cdf8b6f3..38a7e6d08c23e77390792e9855f37e2348c72aac 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 721ea5d3ad1d3d4daa67782a1386c2e8720de25a..f00681518cfe05cd57d18b8f6ed1f3e1c7c6ec41 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 b164ed2b8c0f9bb12760060be1aa709f9322b2b2..4da13051714b8404c9380b8f25c46baf3e280c4c 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 f68304dc2f85a46f3d314637f961cf812d25d9f8..90b0d164f9ade9ccea7a830c2359d6803c5dbf62 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 219085cfc062f1d2a36ed66822919d96fc5f4128..1721ef2589d6f2632c401fce3fda976076932bc0 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 a7b50d8957aa117cd9f5483c814f4947151d8775..bf3e122f78bd1fa56384a69dc6b8e4ddf8d6a45a 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 d6753d967192bde3de7360f2cb11c9db3b74e56c..37249a52c5a904032091b7f21a64d75602997445 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 72929d11a5e3fb97a71905bb7c08464627d09230..3cf49814d088bfa59c0da7b0b6c4665d72293ddf 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 cface4f4cdb2dfa365e8caccaa5e57ea4e10d080..a88661d70cd8166e41f262d197d3fa9d788e203e 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 693993742036af5cce389794849d4931638f251c..49ae3aacf7ee8206f61547129c18eece09e785ab 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 d995082e418215755cbd3a3d3e1e46631eb19339..3666afdcd39006e608152b6ecf6d9d5bcfbfadc7 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 c0c26e40d9987eaeac43adf617884de960498eed..ab5fad4556ba652be1e860f72df549005efaac1f 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 9f849aadc890b10fc0c6a523f5a6008d778eb761..14cb196809e7b29dd583e604364f9b1655f1213d 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 e296fa1071d80b2852adfbbc4f6a750fd32ea4a4..cfe97bbc449dd8988a1fdf16e79ab8efae58ae1f 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 bc72d5b47334e51860f4ee502c9b6b6797c7312e..c9c70288dba6c3fc4262a6b48e6012eca0e70910 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 9afa9f2426c3ceeb3016736c3ea7f5538cf87788..c14b17452717727fa872ee37070568b68ebbd8b6 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 f3bdc6181ee504e003ce2cc2167b42aab914b438..1b780d40b04476d9d28ab1be117f40181e11a6bd 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();