From d4bf623403987325b85616edb0e759c8a4591f58 Mon Sep 17 00:00:00 2001 From: Thomas Fischer <thomas.fischer@ufz.de> Date: Wed, 15 Jul 2020 11:32:43 +0200 Subject: [PATCH] [PL/BC] Set coordinates in spatial positions. --- .../DirichletBoundaryConditionAuxiliaryFunctions.cpp | 1 + ...ryVariableConstraintDirichletBoundaryCondition.cpp | 1 + .../RobinBoundaryConditionLocalAssembler.h | 11 +++++++---- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp index 9b8ea42968d..6a6c69ee43f 100644 --- a/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp +++ b/ProcessLib/BoundaryCondition/DirichletBoundaryConditionAuxiliaryFunctions.cpp @@ -94,6 +94,7 @@ void getEssentialBCValuesLocal( if (global_index >= 0) { pos.setNodeID(id); + pos.setCoordinates(*node); bc_values.ids.emplace_back(global_index); bc_values.values.emplace_back(parameter(t, pos).front()); } diff --git a/ProcessLib/BoundaryCondition/PrimaryVariableConstraintDirichletBoundaryCondition.cpp b/ProcessLib/BoundaryCondition/PrimaryVariableConstraintDirichletBoundaryCondition.cpp index 683f0ece125..b10ad967323 100644 --- a/ProcessLib/BoundaryCondition/PrimaryVariableConstraintDirichletBoundaryCondition.cpp +++ b/ProcessLib/BoundaryCondition/PrimaryVariableConstraintDirichletBoundaryCondition.cpp @@ -87,6 +87,7 @@ void PrimaryVariableConstraintDirichletBoundaryCondition::getEssentialBCValues( // fetch the value of the primary variable auto const local_x = x.get(std::vector{global_index}); pos.setNodeID(id); + pos.setCoordinates(*node); if (_less && local_x[0] < _threshold_parameter(t, pos).front()) { bc_values.ids.emplace_back(global_index); diff --git a/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h b/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h index bd41dd5fd3c..d7b6c7af557 100644 --- a/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h +++ b/ProcessLib/BoundaryCondition/RobinBoundaryConditionLocalAssembler.h @@ -31,6 +31,7 @@ class RobinBoundaryConditionLocalAssembler final { using Base = GenericNaturalBoundaryConditionLocalAssembler< ShapeFunction, IntegrationMethod, GlobalDim>; + using ShapeMatricesType = ShapeMatrixPolicyType<ShapeFunction, GlobalDim>; public: RobinBoundaryConditionLocalAssembler(MeshLib::Element const& e, @@ -65,16 +66,18 @@ public: _data.u_0.getNodalValuesOnElement(Base::_element, t) .template topRows<ShapeFunction::MeshElement::n_all_nodes>(); - ParameterLib::SpatialPosition position; - position.setElementID(Base::_element.getID()); - for (unsigned ip = 0; ip < n_integration_points; ++ip) { - position.setIntegrationPoint(ip); auto const& ip_data = Base::_ns_and_weights[ip]; auto const& N = ip_data.N; auto const& w = ip_data.weight; + ParameterLib::SpatialPosition const position{ + boost::none, Base::_element.getID(), ip, + MathLib::Point3d( + interpolateCoordinates<ShapeFunction, ShapeMatricesType>( + Base::_element, N))}; + double integral_measure = 1.0; if (_data.integral_measure) { -- GitLab