diff --git a/Applications/ApplicationsLib/ProjectData.cpp b/Applications/ApplicationsLib/ProjectData.cpp index 765fd9cebb41c73b0d69ef54f56c1dcfa60f3b04..c8ca72b8b383adc721b3e37f4ae7c88b5de546f3 100644 --- a/Applications/ApplicationsLib/ProjectData.cpp +++ b/Applications/ApplicationsLib/ProjectData.cpp @@ -435,8 +435,9 @@ void ProjectData::parseProcesses(BaseLib::ConfigTree const& processes_config, "given dimension"); } } - else if (type == "THERMOMECHANICS") + else if (type == "THERMO_MECHANICS") { + //! \ogs_file_param{prj__processes__process__THERMO_MECHANICS__dimension} switch (process_config.getConfigParameter<int>("dimension")) { case 2: diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/c_THERMO_MECHANICS.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/c_THERMO_MECHANICS.md new file mode 100644 index 0000000000000000000000000000000000000000..ecf39dc2ba6aa0d0f201af57cf1e00a57367109f --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/c_THERMO_MECHANICS.md @@ -0,0 +1 @@ +Coupled thermo-mechanical process. It is implemented monolithically. \ No newline at end of file diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/constitutive_relation/i_constitutive_relation.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/constitutive_relation/i_constitutive_relation.md new file mode 100644 index 0000000000000000000000000000000000000000..b2ad0ba5cf36292eea4d0e90d489b352f9319d6f --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/constitutive_relation/i_constitutive_relation.md @@ -0,0 +1 @@ +The constitutive relation for the mechanical part. Only linear elasticity is available in the moment. \ No newline at end of file diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/constitutive_relation/t_type.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/constitutive_relation/t_type.md new file mode 100644 index 0000000000000000000000000000000000000000..c5e8e713a68891443d07719b5eb1b0ff49fc126d --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/constitutive_relation/t_type.md @@ -0,0 +1,3 @@ +The type of constitutive relation. See +ProcessLib::ThermoMechanics::createThermoMechanicsProcess() +for available implementations. diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/process_variables/i_process_variables.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/process_variables/i_process_variables.md new file mode 100644 index 0000000000000000000000000000000000000000..021139c02f825773ec567b985a8024b81b522c80 --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/process_variables/i_process_variables.md @@ -0,0 +1 @@ +The process variables for displacement and temperature. diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/process_variables/t_displacement.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/process_variables/t_displacement.md new file mode 100644 index 0000000000000000000000000000000000000000..b6d5f29924d468888547d4a5f9eef957f496c26c --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/process_variables/t_displacement.md @@ -0,0 +1 @@ +Process variable name for displacement. diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/process_variables/t_temperature.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/process_variables/t_temperature.md new file mode 100644 index 0000000000000000000000000000000000000000..f6efd419ab89f60030e6f044c02c53fd9cc44763 --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/process_variables/t_temperature.md @@ -0,0 +1 @@ +Process variable name for temperature. diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_dimension.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_dimension.md new file mode 100644 index 0000000000000000000000000000000000000000..fe666ef74ad120b10ddadd3f2ee29a0b6b8f8dbc --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_dimension.md @@ -0,0 +1 @@ +Displacement vector dimension. The displacement dimension must be equal to the mesh dimension. diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_linear_thermal_expansion_coefficient.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_linear_thermal_expansion_coefficient.md new file mode 100644 index 0000000000000000000000000000000000000000..4d563968a3893f24413542e22bc418f5ea556ad2 --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_linear_thermal_expansion_coefficient.md @@ -0,0 +1 @@ +Linear expansion changes in one dimension. \ No newline at end of file diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_reference_temperature.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_reference_temperature.md new file mode 100644 index 0000000000000000000000000000000000000000..4024d69e98356ee7ebe4f5a70a5c3ad8829281ca --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_reference_temperature.md @@ -0,0 +1 @@ +Reference temperature for the thermo-mechanical process. diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_solid_density.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_solid_density.md new file mode 100644 index 0000000000000000000000000000000000000000..3a6dd634e2304b29405895758785fda257b82e84 --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_solid_density.md @@ -0,0 +1 @@ +Reference solid density. It changes with temperature difference. diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_specific_body_force.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_specific_body_force.md new file mode 100644 index 0000000000000000000000000000000000000000..dd77e37995b3f3628c82ccd1f99f6315167028f8 --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_specific_body_force.md @@ -0,0 +1 @@ +Specific body forces that are used to apply gravitational forces. A vector of displacement dimension's length. diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_specific_heat_capacity.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_specific_heat_capacity.md new file mode 100644 index 0000000000000000000000000000000000000000..497b550f955f7aac7e0cf2172c2009e095b3089f --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_specific_heat_capacity.md @@ -0,0 +1 @@ +Specific heat capacity is the heat capacity per unit mass of a material. \ No newline at end of file diff --git a/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_thermal_conductivity.md b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_thermal_conductivity.md new file mode 100644 index 0000000000000000000000000000000000000000..f0250dff442183f18614da45694e6ba9b3f70c3c --- /dev/null +++ b/Documentation/ProjectFile/prj/processes/process/THERMO_MECHANICS/t_thermal_conductivity.md @@ -0,0 +1 @@ +Thermal conductivity is the property of a material to conduct heat. \ No newline at end of file diff --git a/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.cpp b/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.cpp index 12320a2d4f9f6911dc7b66499a1f765c9771f45a..681152c7f56959c1f90e3c1d6c9761655fe81192 100644 --- a/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.cpp +++ b/ProcessLib/ThermoMechanics/CreateThermoMechanicsProcess.cpp @@ -36,20 +36,20 @@ std::unique_ptr<Process> createThermoMechanicsProcess( unsigned const integration_order, BaseLib::ConfigTree const& config) { - //! \ogs_file_param{process__type} - config.checkConfigParameter("type", "THERMOMECHANICS"); + //! \ogs_file_param{prj__processes__process__type} + config.checkConfigParameter("type", "THERMO_MECHANICS"); DBUG("Create ThermoMechanicsProcess."); // Process variable. - //! \ogs_file_param{prj__processes__process__THERMOMECHANICS__process_variables} + //! \ogs_file_param{prj__processes__process__THERMO_MECHANICS__process_variables} auto const pv_config = config.getConfigSubtree("process_variables"); auto process_variables = findProcessVariables( variables, pv_config, - {//! \ogs_file_param_special{prj__processes__process__THERMOMECHANICS__process_variables__temperature} + {//! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICS__process_variables__temperature} "temperature", - //! \ogs_file_param_special{prj__processes__process__THERMOMECHANICS__process_variables__displacement} + //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICS__process_variables__displacement} "displacement"}); DBUG("Associate displacement with process variable \'%s\'.", @@ -80,11 +80,11 @@ std::unique_ptr<Process> createThermoMechanicsProcess( // Constitutive relation. // read type; auto const constitutive_relation_config = - //! \ogs_file_param{process__THERMOMECHANICS_constitutive_relation} + //! \ogs_file_param{prj__processes__process__THERMO_MECHANICS__constitutive_relation} config.getConfigSubtree("constitutive_relation"); auto const type = - //! \ogs_file_param{prj__processes__process__THERMOMECHANICS__constitutive_relation__type} + //! \ogs_file_param{prj__processes__process__THERMO_MECHANICS__constitutive_relation__type} constitutive_relation_config.peekConfigParameter<std::string>("type"); std::unique_ptr<MaterialLib::Solids::MechanicsBase<DisplacementDim>> @@ -105,41 +105,41 @@ std::unique_ptr<Process> createThermoMechanicsProcess( // Solid density auto& solid_density = findParameter<double>( config, - //! \ogs_file_param_special{process__THERMOMECHANICS_solid_density} + //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICS__solid_density} "solid_density", parameters, 1); DBUG("Use \'%s\' as solid density parameter.", solid_density.name.c_str()); // Linear thermal expansion coefficient auto& linear_thermal_expansion_coefficient = findParameter<double>( config, - //! \ogs_file_param_special{process__THERMOMECHANICS_linear_thermal_expansion_coefficient} + //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICS__linear_thermal_expansion_coefficient} "linear_thermal_expansion_coefficient", parameters, 1); DBUG("Use \'%s\' as linear thermal expansion coefficient.", linear_thermal_expansion_coefficient.name.c_str()); // Specific heat capacity auto& specific_heat_capacity = findParameter<double>( config, - //! \ogs_file_param_special{process__THERMOMECHANICS_specific_heat_capacity} + //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICS__specific_heat_capacity} "specific_heat_capacity", parameters, 1); DBUG("Use \'%s\' as specific heat capacity parameter.", specific_heat_capacity.name.c_str()); // Thermal conductivity auto& thermal_conductivity = findParameter<double>( config, - //! \ogs_file_param_special{process__THERMOMECHANICS_thermal_conductivity} + //! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICS__thermal_conductivity} "thermal_conductivity", parameters, 1); DBUG("Use \'%s\' as thermal conductivity parameter.", thermal_conductivity.name.c_str()); // Reference temperature const double reference_temperature = - //! \ogs_file_param_special{process__THERMOMECHANICS_reference_temperature} + //! \ogs_file_param{prj__processes__process__THERMO_MECHANICS__reference_temperature} config.getConfigParameter<double>("reference_temperature"); // Specific body force Eigen::Matrix<double, DisplacementDim, 1> specific_body_force; { std::vector<double> const b = - //! \ogs_file_param{prj__processes__process__HYDRO_MECHANICS__specific_body_force} + //! \ogs_file_param{prj__processes__process__THERMO_MECHANICS__specific_body_force} config.getConfigParameter<std::vector<double>>( "specific_body_force"); if (specific_body_force.size() != DisplacementDim) diff --git a/web/content/docs/benchmarks/thermo-mechanics/stress.png b/web/content/docs/benchmarks/thermo-mechanics/stress.png new file mode 100644 index 0000000000000000000000000000000000000000..4404fc539a06412e60b084e572e99585606ac837 Binary files /dev/null and b/web/content/docs/benchmarks/thermo-mechanics/stress.png differ diff --git a/web/content/docs/benchmarks/thermo-mechanics/temperature.png b/web/content/docs/benchmarks/thermo-mechanics/temperature.png new file mode 100644 index 0000000000000000000000000000000000000000..a1fc991498b25e3e59b5313216096a3645eb0ebd Binary files /dev/null and b/web/content/docs/benchmarks/thermo-mechanics/temperature.png differ diff --git a/web/content/docs/benchmarks/thermo-mechanics/thermomechanics.md b/web/content/docs/benchmarks/thermo-mechanics/thermomechanics.md new file mode 100644 index 0000000000000000000000000000000000000000..e03337d96b03a891952b404ae207f9c0a844c5f8 --- /dev/null +++ b/web/content/docs/benchmarks/thermo-mechanics/thermomechanics.md @@ -0,0 +1,38 @@ ++++ +project = "https://github.com/ufz/ogs-data/blob/master/ThermoMechanics/cube_1e3.prj" +author = "Xing-Yuan Miao" +date = "2017-05-08T15:10:33+01:00" +title = "Thermoelastic Stress" +weight = 156 + +[menu] + [menu.benchmarks] + parent = "thermo-mechanics" + ++++ + +{{< project-link >}} + +## Problem description + +We solve a thermo-mechanical homogeneous model in cube domain. The dimensions of this cube model are 1\,m in all directions. The boundary conditions and temperature loadings, as well as the material can refer Chapter 14 in Kolditz et al. for detailed problem description. + +## Results and evaluation + +Result showing temperature and stresses development with time in the centre node of the model: + +{{< img src="../temperature.png" >}} +{{< img src="../stress.png" >}} + +The analytical solution of stresses after heating is: +$$ +\begin{equation} +\sigma_{xx} = \sigma_{yy} = sigma_{zz} = - \frac{\alpha \Delta T E}{1 - 2 \nu}\end{equation} = - 3.260869 \mathrm{MPa} +$$ + +The relative error between the numerical simulation and the analytical solution is 9.2 \cdot 10^{-13}. + +Kolditz, Olaf, Uwe-Jens Görke, Hua Shao, and Wenqing Wang, eds. Thermo-hydro-mechanical-chemical processes in porous media: benchmarks and examples. Vol. 86. Springer Science & Business Media, 2012. + + +