diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp index 054015bfee0c402ad31b85dd7e783f4c453c46f7..e9d3bc5bc60df6b5df9fe465cbd3291db93cb33f 100644 --- a/Applications/ApplicationsLib/ProjectData.cpp +++ b/Applications/ApplicationsLib/ProjectData.cpp @@ -519,7 +519,7 @@ void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config, process = ProcessLib::LiquidFlow::createLiquidFlowProcess( name, *_mesh_vec[0], std::move(jacobian_assembler), _process_variables, _parameters, integration_order, - process_config); + process_config, _mesh_vec, output_directory); } else #endif diff --git a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp index e35096b916406af1f647e0b2094c1a27d9be0949..4ae75493d11566131ffbaa2284c62d7eb01ea1c5 100644 --- a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp +++ b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.cpp @@ -31,7 +31,9 @@ std::unique_ptr<Process> createLiquidFlowProcess( std::vector<ProcessVariable> const& variables, std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters, unsigned const integration_order, - BaseLib::ConfigTree const& config) + BaseLib::ConfigTree const& config, + std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes, + std::string const& output_directory) { //! \ogs_file_param{prj__processes__process__type} config.checkConfigParameter("type", "LIQUID_FLOW"); @@ -99,11 +101,21 @@ std::unique_ptr<Process> createLiquidFlowProcess( INFO("The liquid flow is in homogeneous porous media."); } + std::unique_ptr<ProcessLib::SurfaceFluxData> surfaceflux; + auto calculatesurfaceflux_config = + //! \ogs_file_param{prj__processes__process__calculatesurfaceflux} + config.getConfigSubtreeOptional("calculatesurfaceflux"); + if (calculatesurfaceflux_config) + { + surfaceflux = ProcessLib::SurfaceFluxData::createSurfaceFluxData( + *calculatesurfaceflux_config, meshes, output_directory); + } + return std::make_unique<LiquidFlowProcess>( std::move(name), mesh, std::move(jacobian_assembler), parameters, integration_order, std::move(process_variables), std::move(secondary_variables), material_ids, gravity_axis_id, g, - reference_temperature, mat_config); + reference_temperature, mat_config, std::move(surfaceflux)); } } // namespace LiquidFlow diff --git a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.h b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.h index 18adc164b64fded253b6e76ab645959ac68f9102..db1ff098a5d8b13d0ad6eb17ff8d7d615a190f5b 100644 --- a/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.h +++ b/ProcessLib/LiquidFlow/CreateLiquidFlowProcess.h @@ -26,6 +26,8 @@ std::unique_ptr<Process> createLiquidFlowProcess( std::vector<ProcessVariable> const& variables, std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters, unsigned const integration_order, - BaseLib::ConfigTree const& config); + BaseLib::ConfigTree const& config, + std::vector<std::unique_ptr<MeshLib::Mesh>> const& meshes, + std::string const& output_directory); } // namespace LiquidFlow } // namespace ProcessLib diff --git a/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp b/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp index bc76bfd561e33acafc85352f224b087d041f089c..2f83c129e76744946d6d0d1ed4c152d42593d4ae 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp +++ b/ProcessLib/LiquidFlow/LiquidFlowProcess.cpp @@ -18,6 +18,8 @@ #include "LiquidFlowLocalAssembler.h" #include "LiquidFlowMaterialProperties.h" #include "MeshLib/PropertyVector.h" +// TODO(TF) used for output of flux, if output classes are ready this has to be changed +#include "MeshLib/IO/writeMeshToFile.h" #include "ProcessLib/Utils/CreateLocalAssemblers.h" namespace ProcessLib @@ -37,7 +39,8 @@ LiquidFlowProcess::LiquidFlowProcess( int const gravitational_axis_id, double const gravitational_acceleration, double const reference_temperature, - BaseLib::ConfigTree const& config) + BaseLib::ConfigTree const& config, + std::unique_ptr<ProcessLib::SurfaceFluxData>&& surfaceflux) : Process(std::move(name), mesh, std::move(jacobian_assembler), parameters, integration_order, std::move(process_variables), std::move(secondary_variables)), @@ -45,7 +48,8 @@ LiquidFlowProcess::LiquidFlowProcess( _gravitational_acceleration(gravitational_acceleration), _reference_temperature(reference_temperature), _material_properties( - createLiquidFlowMaterialProperties(config, parameters, material_ids)) + createLiquidFlowMaterialProperties(config, parameters, material_ids)), + _surfaceflux(std::move(surfaceflux)) { DBUG("Create Liquid flow process."); } diff --git a/ProcessLib/LiquidFlow/LiquidFlowProcess.h b/ProcessLib/LiquidFlow/LiquidFlowProcess.h index 719791cc43c70244d9f2bacf08853f163890549e..5501699f56c924200efc08c182e970c7881d4765 100644 --- a/ProcessLib/LiquidFlow/LiquidFlowProcess.h +++ b/ProcessLib/LiquidFlow/LiquidFlowProcess.h @@ -19,6 +19,7 @@ #include "MaterialLib/Fluid/FluidProperties/FluidProperties.h" #include "NumLib/DOF/LocalToGlobalIndexMap.h" #include "ProcessLib/Process.h" +#include "ProcessLib/SurfaceFlux/SurfaceFluxData.h" namespace MeshLib { @@ -69,7 +70,8 @@ public: int const gravitational_axis_id, double const gravitational_acceleration, double const reference_temperature, - BaseLib::ConfigTree const& config); + BaseLib::ConfigTree const& config, + std::unique_ptr<ProcessLib::SurfaceFluxData>&& surfaceflux); void computeSecondaryVariableConcrete(double const t, GlobalVector const& x, @@ -105,6 +107,8 @@ private: std::vector<std::unique_ptr<LiquidFlowLocalAssemblerInterface>> _local_assemblers; + + std::unique_ptr<ProcessLib::SurfaceFluxData> _surfaceflux; }; } // namespace LiquidFlow