diff --git a/ProcessLib/BoundaryCondition/BHEBottomDirichletBoundaryCondition.cpp b/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEBottomDirichletBoundaryCondition.cpp similarity index 95% rename from ProcessLib/BoundaryCondition/BHEBottomDirichletBoundaryCondition.cpp rename to ProcessLib/HeatTransportBHE/BoundaryConditions/BHEBottomDirichletBoundaryCondition.cpp index 591a3fe5d50caa703e7fcd966a8abd4c205ecba1..a5fe40e840bf3093a0ac2960ed1f27b3b4d547e7 100644 --- a/ProcessLib/BoundaryCondition/BHEBottomDirichletBoundaryCondition.cpp +++ b/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEBottomDirichletBoundaryCondition.cpp @@ -1,4 +1,5 @@ /** + * \file * \copyright * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org) * Distributed under a Modified BSD License. @@ -10,7 +11,7 @@ #include "BHEBottomDirichletBoundaryCondition.h" #include "BaseLib/Error.h" -namespace ProcessLib +namespace ProcessLib::HeatTransportBHE { void BHEBottomDirichletBoundaryCondition::getEssentialBCValues( const double /*t*/, GlobalVector const& x, @@ -54,4 +55,4 @@ createBHEBottomDirichletBoundaryCondition( return std::make_unique<BHEBottomDirichletBoundaryCondition>( std::move(in_out_global_indices)); } -} // namespace ProcessLib +} // namespace ProcessLib::HeatTransportBHE diff --git a/ProcessLib/BoundaryCondition/BHEBottomDirichletBoundaryCondition.h b/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEBottomDirichletBoundaryCondition.h similarity index 87% rename from ProcessLib/BoundaryCondition/BHEBottomDirichletBoundaryCondition.h rename to ProcessLib/HeatTransportBHE/BoundaryConditions/BHEBottomDirichletBoundaryCondition.h index 73c8edde3a53cde50073ed1a5365a52b17ad11cc..ec4667f225652e8182dec3297a384ae391d04754 100644 --- a/ProcessLib/BoundaryCondition/BHEBottomDirichletBoundaryCondition.h +++ b/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEBottomDirichletBoundaryCondition.h @@ -1,4 +1,5 @@ /** + * \file * \copyright * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org) * Distributed under a Modified BSD License. @@ -9,10 +10,10 @@ #pragma once -#include "BoundaryCondition.h" #include "NumLib/IndexValueVector.h" +#include "ProcessLib/BoundaryCondition/BoundaryCondition.h" -namespace ProcessLib +namespace ProcessLib::HeatTransportBHE { class BHEBottomDirichletBoundaryCondition final : public BoundaryCondition { @@ -34,4 +35,4 @@ private: std::unique_ptr<BHEBottomDirichletBoundaryCondition> createBHEBottomDirichletBoundaryCondition( std::pair<GlobalIndexType, GlobalIndexType>&& in_out_global_indices); -} // namespace ProcessLib +} // namespace ProcessLib::HeatTransportBHE diff --git a/ProcessLib/BoundaryCondition/BHEInflowDirichletBoundaryCondition.h b/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEInflowDirichletBoundaryCondition.h similarity index 73% rename from ProcessLib/BoundaryCondition/BHEInflowDirichletBoundaryCondition.h rename to ProcessLib/HeatTransportBHE/BoundaryConditions/BHEInflowDirichletBoundaryCondition.h index 8a2a1bffe4af339ce9f7f76e7f2c50089cffc41b..a45bc0b9e38acf32d288cabde27d0fc2dbaa7db4 100644 --- a/ProcessLib/BoundaryCondition/BHEInflowDirichletBoundaryCondition.h +++ b/ProcessLib/HeatTransportBHE/BoundaryConditions/BHEInflowDirichletBoundaryCondition.h @@ -1,4 +1,5 @@ /** + * \file * \copyright * Copyright (c) 2012-2019, OpenGeoSys Community (http://www.opengeosys.org) * Distributed under a Modified BSD License. @@ -9,20 +10,20 @@ #pragma once -#include "BoundaryCondition.h" #include "NumLib/IndexValueVector.h" -#include "ProcessLib/HeatTransportBHE/BHE/BHETypes.h" +#include "ProcessLib/BoundaryCondition/BoundaryCondition.h" -namespace ProcessLib +namespace ProcessLib::HeatTransportBHE { -template <typename BHEType> +template <typename BHEUpdateCallback> class BHEInflowDirichletBoundaryCondition final : public BoundaryCondition { public: BHEInflowDirichletBoundaryCondition( std::pair<GlobalIndexType, GlobalIndexType>&& in_out_global_indices, - BHEType& bhe) - : _in_out_global_indices(std::move(in_out_global_indices)), _bhe(bhe) + BHEUpdateCallback bhe_update_callback) + : _in_out_global_indices(std::move(in_out_global_indices)), + _bhe_update_callback(bhe_update_callback) { } @@ -36,19 +37,19 @@ public: bc_values.ids[0] = _in_out_global_indices.first; // here call the corresponding BHE functions auto const T_out = x[_in_out_global_indices.second]; - bc_values.values[0] = _bhe.updateFlowRateAndTemperature(T_out, t); + bc_values.values[0] = _bhe_update_callback(T_out, t); } private: std::pair<GlobalIndexType, GlobalIndexType> const _in_out_global_indices; - BHEType& _bhe; + BHEUpdateCallback _bhe_update_callback; }; -template <typename BHEType> -std::unique_ptr<BHEInflowDirichletBoundaryCondition<BHEType>> +template <typename BHEUpdateCallback> +std::unique_ptr<BHEInflowDirichletBoundaryCondition<BHEUpdateCallback>> createBHEInflowDirichletBoundaryCondition( std::pair<GlobalIndexType, GlobalIndexType>&& in_out_global_indices, - BHEType& bhe) + BHEUpdateCallback bhe_update_callback) { DBUG("Constructing BHEInflowDirichletBoundaryCondition."); @@ -71,7 +72,8 @@ createBHEInflowDirichletBoundaryCondition( } #endif // USE_PETSC - return std::make_unique<BHEInflowDirichletBoundaryCondition<BHEType>>( - std::move(in_out_global_indices), bhe); + return std::make_unique< + BHEInflowDirichletBoundaryCondition<BHEUpdateCallback>>( + std::move(in_out_global_indices), bhe_update_callback); } -} // namespace ProcessLib +} // namespace ProcessLib::HeatTransportBHE diff --git a/ProcessLib/HeatTransportBHE/CMakeLists.txt b/ProcessLib/HeatTransportBHE/CMakeLists.txt index 76f61d448c91b312dccc5c228465d434d5938611..b9501a6007a31edcd395b0d12684469f30141ee9 100644 --- a/ProcessLib/HeatTransportBHE/CMakeLists.txt +++ b/ProcessLib/HeatTransportBHE/CMakeLists.txt @@ -1,5 +1,6 @@ APPEND_SOURCE_FILES(SOURCES) APPEND_SOURCE_FILES(SOURCES BHE) +APPEND_SOURCE_FILES(SOURCES BoundaryConditions) APPEND_SOURCE_FILES(SOURCES LocalAssemblers) add_library(HeatTransportBHE ${SOURCES}) diff --git a/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp b/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp index c1269c7d28e485112b28a8bc44cd580627b37246..c5ec1b9ef0e71656b0ebe3ae64447af069d39e8b 100644 --- a/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp +++ b/ProcessLib/HeatTransportBHE/HeatTransportBHEProcess.cpp @@ -16,8 +16,8 @@ #include "ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerBHE.h" #include "ProcessLib/HeatTransportBHE/LocalAssemblers/HeatTransportBHELocalAssemblerSoil.h" -#include "ProcessLib/BoundaryCondition/BHEBottomDirichletBoundaryCondition.h" -#include "ProcessLib/BoundaryCondition/BHEInflowDirichletBoundaryCondition.h" +#include "BoundaryConditions/BHEBottomDirichletBoundaryCondition.h" +#include "BoundaryConditions/BHEInflowDirichletBoundaryCondition.h" namespace ProcessLib { @@ -241,14 +241,16 @@ void HeatTransportBHEProcess::createBHEBoundaryConditionTopBottom( { // Top, inflow. bcs.addBoundaryCondition( - ProcessLib::createBHEInflowDirichletBoundaryCondition( + createBHEInflowDirichletBoundaryCondition( get_global_bhe_bc_indices(bc_top_node_id, in_out_component_id), - bhe)); + [&bhe](double const T, double const t) { + return bhe.updateFlowRateAndTemperature(T, t); + })); // Bottom, outflow. bcs.addBoundaryCondition( - ProcessLib::createBHEBottomDirichletBoundaryCondition( + createBHEBottomDirichletBoundaryCondition( get_global_bhe_bc_indices(bc_bottom_node_id, in_out_component_id))); }