Skip to content
Snippets Groups Projects
Commit d68db85f authored by Tom Fischer's avatar Tom Fischer
Browse files

[PL/LF] Create surface flux data in LiquidFlow.

- Forward the output folder and mesh vector from ProjectData to CreateLiquidFlow.
- Create an optional SurfaceFluxData object.
parent d43fd16b
No related branches found
No related tags found
No related merge requests found
...@@ -519,7 +519,7 @@ void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config, ...@@ -519,7 +519,7 @@ void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config,
process = ProcessLib::LiquidFlow::createLiquidFlowProcess( process = ProcessLib::LiquidFlow::createLiquidFlowProcess(
name, *_mesh_vec[0], std::move(jacobian_assembler), name, *_mesh_vec[0], std::move(jacobian_assembler),
_process_variables, _parameters, integration_order, _process_variables, _parameters, integration_order,
process_config); process_config, _mesh_vec, output_directory);
} }
else else
#endif #endif
......
...@@ -31,7 +31,9 @@ std::unique_ptr<Process> createLiquidFlowProcess( ...@@ -31,7 +31,9 @@ std::unique_ptr<Process> createLiquidFlowProcess(
std::vector<ProcessVariable> const& variables, std::vector<ProcessVariable> const& variables,
std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters, std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
unsigned const integration_order, 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} //! \ogs_file_param{prj__processes__process__type}
config.checkConfigParameter("type", "LIQUID_FLOW"); config.checkConfigParameter("type", "LIQUID_FLOW");
...@@ -99,11 +101,21 @@ std::unique_ptr<Process> createLiquidFlowProcess( ...@@ -99,11 +101,21 @@ std::unique_ptr<Process> createLiquidFlowProcess(
INFO("The liquid flow is in homogeneous porous media."); 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>( return std::make_unique<LiquidFlowProcess>(
std::move(name), mesh, std::move(jacobian_assembler), parameters, std::move(name), mesh, std::move(jacobian_assembler), parameters,
integration_order, std::move(process_variables), integration_order, std::move(process_variables),
std::move(secondary_variables), material_ids, gravity_axis_id, g, std::move(secondary_variables), material_ids, gravity_axis_id, g,
reference_temperature, mat_config); reference_temperature, mat_config, std::move(surfaceflux));
} }
} // namespace LiquidFlow } // namespace LiquidFlow
......
...@@ -26,6 +26,8 @@ std::unique_ptr<Process> createLiquidFlowProcess( ...@@ -26,6 +26,8 @@ std::unique_ptr<Process> createLiquidFlowProcess(
std::vector<ProcessVariable> const& variables, std::vector<ProcessVariable> const& variables,
std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters, std::vector<std::unique_ptr<ParameterLib::ParameterBase>> const& parameters,
unsigned const integration_order, 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 LiquidFlow
} // namespace ProcessLib } // namespace ProcessLib
...@@ -18,6 +18,8 @@ ...@@ -18,6 +18,8 @@
#include "LiquidFlowLocalAssembler.h" #include "LiquidFlowLocalAssembler.h"
#include "LiquidFlowMaterialProperties.h" #include "LiquidFlowMaterialProperties.h"
#include "MeshLib/PropertyVector.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" #include "ProcessLib/Utils/CreateLocalAssemblers.h"
namespace ProcessLib namespace ProcessLib
...@@ -37,7 +39,8 @@ LiquidFlowProcess::LiquidFlowProcess( ...@@ -37,7 +39,8 @@ LiquidFlowProcess::LiquidFlowProcess(
int const gravitational_axis_id, int const gravitational_axis_id,
double const gravitational_acceleration, double const gravitational_acceleration,
double const reference_temperature, 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, : Process(std::move(name), mesh, std::move(jacobian_assembler), parameters,
integration_order, std::move(process_variables), integration_order, std::move(process_variables),
std::move(secondary_variables)), std::move(secondary_variables)),
...@@ -45,7 +48,8 @@ LiquidFlowProcess::LiquidFlowProcess( ...@@ -45,7 +48,8 @@ LiquidFlowProcess::LiquidFlowProcess(
_gravitational_acceleration(gravitational_acceleration), _gravitational_acceleration(gravitational_acceleration),
_reference_temperature(reference_temperature), _reference_temperature(reference_temperature),
_material_properties( _material_properties(
createLiquidFlowMaterialProperties(config, parameters, material_ids)) createLiquidFlowMaterialProperties(config, parameters, material_ids)),
_surfaceflux(std::move(surfaceflux))
{ {
DBUG("Create Liquid flow process."); DBUG("Create Liquid flow process.");
} }
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "MaterialLib/Fluid/FluidProperties/FluidProperties.h" #include "MaterialLib/Fluid/FluidProperties/FluidProperties.h"
#include "NumLib/DOF/LocalToGlobalIndexMap.h" #include "NumLib/DOF/LocalToGlobalIndexMap.h"
#include "ProcessLib/Process.h" #include "ProcessLib/Process.h"
#include "ProcessLib/SurfaceFlux/SurfaceFluxData.h"
namespace MeshLib namespace MeshLib
{ {
...@@ -69,7 +70,8 @@ public: ...@@ -69,7 +70,8 @@ public:
int const gravitational_axis_id, int const gravitational_axis_id,
double const gravitational_acceleration, double const gravitational_acceleration,
double const reference_temperature, double const reference_temperature,
BaseLib::ConfigTree const& config); BaseLib::ConfigTree const& config,
std::unique_ptr<ProcessLib::SurfaceFluxData>&& surfaceflux);
void computeSecondaryVariableConcrete(double const t, void computeSecondaryVariableConcrete(double const t,
GlobalVector const& x, GlobalVector const& x,
...@@ -105,6 +107,8 @@ private: ...@@ -105,6 +107,8 @@ private:
std::vector<std::unique_ptr<LiquidFlowLocalAssemblerInterface>> std::vector<std::unique_ptr<LiquidFlowLocalAssemblerInterface>>
_local_assemblers; _local_assemblers;
std::unique_ptr<ProcessLib::SurfaceFluxData> _surfaceflux;
}; };
} // namespace LiquidFlow } // namespace LiquidFlow
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment