From 4c3bc22376dcac5383dab52434193d18a116ea67 Mon Sep 17 00:00:00 2001 From: Wenqing Wang <wenqing.wang@ufz.de> Date: Mon, 16 Oct 2017 14:10:26 +0200 Subject: [PATCH] [HT] Added two parameters of the solid thermal expansion in the flow process --- .../i_solid_thermal_expansion.md | 2 + .../t_biot_constant.md | 1 + .../t_thermal_expansion.md | 1 + ProcessLib/HT/CreateHTProcess.cpp | 62 ++++++++++++++++--- ProcessLib/HT/HTMaterialProperties.h | 8 +++ 5 files changed, 64 insertions(+), 10 deletions(-) create mode 100644 Documentation/ProjectFile/prj/processes/process/HT/solid_thermal_expansion/i_solid_thermal_expansion.md create mode 100644 Documentation/ProjectFile/prj/processes/process/HT/solid_thermal_expansion/t_biot_constant.md create mode 100644 Documentation/ProjectFile/prj/processes/process/HT/solid_thermal_expansion/t_thermal_expansion.md diff --git a/Documentation/ProjectFile/prj/processes/process/HT/solid_thermal_expansion/i_solid_thermal_expansion.md b/Documentation/ProjectFile/prj/processes/process/HT/solid_thermal_expansion/i_solid_thermal_expansion.md new file mode 100644 index 00000000000..70cabb8294b --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/HT/solid_thermal_expansion/i_solid_thermal_expansion.md @@ -0,0 +1,2 @@ +Parameters of solid thermal expansion in flow process. + diff --git a/Documentation/ProjectFile/prj/processes/process/HT/solid_thermal_expansion/t_biot_constant.md b/Documentation/ProjectFile/prj/processes/process/HT/solid_thermal_expansion/t_biot_constant.md new file mode 100644 index 00000000000..38343bfd1f5 --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/HT/solid_thermal_expansion/t_biot_constant.md @@ -0,0 +1 @@ +Biot's constant for the liquid thermal expansion computation. diff --git a/Documentation/ProjectFile/prj/processes/process/HT/solid_thermal_expansion/t_thermal_expansion.md b/Documentation/ProjectFile/prj/processes/process/HT/solid_thermal_expansion/t_thermal_expansion.md new file mode 100644 index 00000000000..8dbed74f077 --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/HT/solid_thermal_expansion/t_thermal_expansion.md @@ -0,0 +1 @@ +Line thermal expansion of solid. diff --git a/ProcessLib/HT/CreateHTProcess.cpp b/ProcessLib/HT/CreateHTProcess.cpp index f5124f3ea67..e6e12aeccec 100644 --- a/ProcessLib/HT/CreateHTProcess.cpp +++ b/ProcessLib/HT/CreateHTProcess.cpp @@ -50,8 +50,8 @@ std::unique_ptr<Process> createHTProcess( "pressure"}); MaterialLib::PorousMedium::PorousMediaProperties porous_media_properties{ - MaterialLib::PorousMedium::createPorousMediaProperties( - mesh, config, parameters)}; + MaterialLib::PorousMedium::createPorousMediaProperties(mesh, config, + parameters)}; //! \ogs_file_param{prj__processes__process__HT__fluid} auto const& fluid_config = config.getConfigSubtree("fluid"); @@ -134,6 +134,54 @@ std::unique_ptr<Process> createHTProcess( std::copy_n(b.data(), b.size(), specific_body_force.data()); } + SecondaryVariableCollection secondary_variables; + + NumLib::NamedFunctionCaller named_function_caller( + {"HT_temperature_pressure"}); + + ProcessLib::parseSecondaryVariables(config, secondary_variables, + named_function_caller); + + //! \ogs_file_param{prj__processes__process__HT__solid_thermal_expansion} + auto const solid_config = + config.getConfigSubtreeOptional("solid_thermal_expansion"); + if (solid_config) + { + auto& solid_thermal_expansion = findParameter<double>( + //! \ogs_file_param_special{prj__processes__process__HT__solid_thermal_expansion__thermal_expansion} + *solid_config, "thermal_expansion", parameters, 1); + DBUG("Use \'%s\' as solid thermal expansion.", + solid_thermal_expansion.name.c_str()); + auto& biot_constant = findParameter<double>( + //! \ogs_file_param_special{prj__processes__process__HT__solid_thermal_expansion__biot_constant} + *solid_config, "biot_constant", parameters, 1); + + std::unique_ptr<HTMaterialProperties> material_properties = + std::make_unique<HTMaterialProperties>( + std::move(porous_media_properties), + density_solid, + fluid_reference_density, + std::move(fluid_properties), + thermal_dispersivity_longitudinal, + thermal_dispersivity_transversal, + specific_heat_capacity_solid, + thermal_conductivity_solid, + thermal_conductivity_fluid, + solid_thermal_expansion, + biot_constant, + specific_body_force, + has_gravity); + + return std::make_unique<HTProcess>( + mesh, std::move(jacobian_assembler), parameters, integration_order, + std::move(process_variables), std::move(material_properties), + std::move(secondary_variables), std::move(named_function_caller)); + } + + ConstantParameter<double> default_solid_thermal_expansion( + "default solid thermal expansion", 0.); + ConstantParameter<double> default_biot_constant("default_biot constant", + 0.); std::unique_ptr<HTMaterialProperties> material_properties = std::make_unique<HTMaterialProperties>( std::move(porous_media_properties), @@ -145,17 +193,11 @@ std::unique_ptr<Process> createHTProcess( specific_heat_capacity_solid, thermal_conductivity_solid, thermal_conductivity_fluid, + default_solid_thermal_expansion, + default_biot_constant, specific_body_force, has_gravity); - SecondaryVariableCollection secondary_variables; - - NumLib::NamedFunctionCaller named_function_caller( - {"HT_temperature_pressure"}); - - ProcessLib::parseSecondaryVariables(config, secondary_variables, - named_function_caller); - return std::make_unique<HTProcess>( mesh, std::move(jacobian_assembler), parameters, integration_order, std::move(process_variables), std::move(material_properties), diff --git a/ProcessLib/HT/HTMaterialProperties.h b/ProcessLib/HT/HTMaterialProperties.h index fb056efbd8d..9f71a1ddb15 100644 --- a/ProcessLib/HT/HTMaterialProperties.h +++ b/ProcessLib/HT/HTMaterialProperties.h @@ -36,6 +36,8 @@ struct HTMaterialProperties ProcessLib::Parameter<double> const& specific_heat_capacity_solid_, ProcessLib::Parameter<double> const& thermal_conductivity_solid_, ProcessLib::Parameter<double> const& thermal_conductivity_fluid_, + Parameter<double> const& solid_thermal_expansion_, + Parameter<double> const& biot_constant_, Eigen::VectorXd specific_body_force_, bool const has_gravity_) : porous_media_properties(std::move(porous_media_properties_)), @@ -47,6 +49,8 @@ struct HTMaterialProperties thermal_dispersivity_transversal(thermal_dispersivity_transversal_), thermal_conductivity_solid(thermal_conductivity_solid_), thermal_conductivity_fluid(thermal_conductivity_fluid_), + solid_thermal_expansion(solid_thermal_expansion_), + biot_constant(biot_constant), specific_body_force(std::move(specific_body_force_)), has_gravity(has_gravity_) { @@ -87,6 +91,10 @@ struct HTMaterialProperties Parameter<double> const& thermal_dispersivity_transversal; Parameter<double> const& thermal_conductivity_solid; Parameter<double> const& thermal_conductivity_fluid; + + Parameter<double> const& solid_thermal_expansion; + Parameter<double> const& biot_constant; + Eigen::VectorXd const specific_body_force; bool const has_gravity; }; -- GitLab