New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

TM process #1800

Closed
wants to merge 17 commits into
base: master
from

Conversation

Projects
None yet
5 participants
@xingyuanmiao
Contributor

xingyuanmiao commented May 9, 2017

The thermo-mechanical process was implemented. Currently, the implementation has a 3D test for thermo-elastic stress analysis. Next step will be adding two longer tests: IGLU 2D (plane strain); IGLU Axisymmetric (plane strain).

@endJunction endJunction added the WIP 🏗 label May 9, 2017

@xingyuanmiao xingyuanmiao force-pushed the xingyuanmiao:thermomechanics_wip branch 8 times, most recently from d383692 to d1daec9 May 9, 2017

@endJunction endJunction requested a review from nagelt May 10, 2017

@endJunction endJunction removed the WIP 🏗 label May 10, 2017

@nagelt

Minor revisions ;-)
Good from my side once IGLU tests are included.

@@ -0,0 +1 @@
The constitutive relation for the mechanical part. Only linear elasticity is available in the moment.

This comment has been minimized.

@nagelt

nagelt May 11, 2017

Member

why is that? If we pass mechanical strain into compute constitutive, it should work for all material models.

MaterialLib::Solids::createLinearElasticIsotropic<DisplacementDim>(
parameters, constitutive_relation_config);
}
else

This comment has been minimized.

@nagelt

nagelt May 11, 2017

Member

all constitutive formulations should be available here. Maybe the selection routine used in SmallDeformation can be extracted and re-used here (and later in similar processes).

}
// Solid density
auto& solid_density = findParameter<double>(

This comment has been minimized.

@nagelt

nagelt May 11, 2017

Member

note that this is the reference solid density. It changes due to thermal expansion. Make a note that this is neglected so far.

double const thermal_strain)
{
eps.noalias() = b_matrices * u;
eps_m.noalias() = eps - thermal_strain * Invariants::identity2;

This comment has been minimized.

@nagelt

nagelt May 11, 2017

Member

Make a comment that this assumes isotropic thermal expansion tensor ... this will need to be generalized to anisotropy later (not now)

auto const alpha =
_process_data.linear_thermal_expansion_coefficient(
t, x_position)[0];
double const thermal_strain = alpha * delta_T;

This comment has been minimized.

@nagelt

nagelt May 11, 2017

Member

call this (here and where you pass it) "linear_thermal_strain". Again, a comment "assuming isotropic alpha"

// calculate real density
auto const rho_sr = _process_data.solid_density(t, x_position)[0];
double const rho_s = rho_sr * (1 - 3 * thermal_strain);

This comment has been minimized.

@nagelt

nagelt May 11, 2017

Member

exactly. good.

ThermoMechanicsProcessData(ThermoMechanicsProcessData&& other)
: material{std::move(other.material)},
solid_density(other.solid_density),

This comment has been minimized.

@nagelt

nagelt May 11, 2017

Member

I say this here, but it refers to all instances: solid_reference_density (see previous comments)

This comment has been minimized.

@endJunction

endJunction May 23, 2017

Member

Is this change incorporated in the code?

{{< img src="../temperature.png" >}}
{{< img src="../stress.png" >}}

This comment has been minimized.

@nagelt

nagelt May 11, 2017

Member

use a log-scale (on x) for the images or something similar ... right now, the scaling makes a comparison difficult.

This comment has been minimized.

@nagelt

nagelt May 13, 2017

Member

@xingyuanmiao can you also add some brief model description (the two governing equations and the type of implementation, i.e. monolithic). The basic equations can be taken from your paper, only the FE part is different here.

This comment has been minimized.

@xingyuanmiao

xingyuanmiao May 15, 2017

Contributor

The detailed model description and governing equations were described in the previous benchmark book which I referred in the documentation. I considered that the readers can refer that book, so I didn't put this part into the documentation.

solid_material.computeConstitutiveRelation(
t, x_position, dt, eps_m_prev, eps_m, sigma_prev, sigma, C,
*material_state_variables);
}

This comment has been minimized.

@nagelt

nagelt May 11, 2017

Member

This call is correct. So this should work for all solid models.

@xingyuanmiao xingyuanmiao force-pushed the xingyuanmiao:thermomechanics_wip branch 3 times, most recently from b1611e4 to b301ae8 May 11, 2017

//! \ogs_file_param_special{prj__processes__process__THERMO_MECHANICS__process_variables__displacement}
"displacement"});
DBUG("Associate displacement with process variable \'%s\'.",

This comment has been minimized.

@TomFischer

TomFischer May 17, 2017

Member

Why only debug output for the displacement variable and not for the temperature? Just saw it below.

// displacement (subscript u)
_ip_data.emplace_back(*_process_data.material);
auto& ip_data = _ip_data[ip];
_ip_data[ip].integration_weight =

This comment has been minimized.

@TomFischer

TomFischer May 18, 2017

Member

In line 205 the abbreviation ip_data for _ip_data[ip] is defined. In the following lines this abbreviation is used. Why is it not used here, in line 206?

$$
\begin{equation}
\sigma_{xx} = \sigma_{yy} = sigma_{zz} = - \frac{\alpha \Delta T E}{1 - 2 \nu}\end{equation} = - 3.260869 \mathrm{MPa}
$$

This comment has been minimized.

@TomFischer

TomFischer May 18, 2017

Member

Is this documentation correct typesetted, i.e., \begin{equation} ... \end{equation} = - 3.260869 \mathrm{MPa}?

\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}.

This comment has been minimized.

@TomFischer

TomFischer May 18, 2017

Member

The part 9.2 \cdot 10^{-13} is not in a latex environment. Is this correct?

@TomFischer

Looks technical good.

@xingyuanmiao xingyuanmiao force-pushed the xingyuanmiao:thermomechanics_wip branch from 4810f41 to e5070ad May 18, 2017

@endJunction

This comment has been minimized.

Member

endJunction commented May 18, 2017

@xingyuanmiao We have to wait a little, until #1809 is merged. There are unexpected errors with a jenkins test server.

@xingyuanmiao xingyuanmiao force-pushed the xingyuanmiao:thermomechanics_wip branch 2 times, most recently from a7f385e to 9c7bb36 May 19, 2017

DBUG("Use \'%s\' as specific heat capacity parameter.",
specific_heat_capacity.name.c_str());
// Thermal conductivity
auto& thermal_conductivity = findParameter<double>(

This comment has been minimized.

@wenqing

wenqing May 22, 2017

Member

Added a TODO comment here as:
Change it as tensor input.

Parameter<double> const& solid_density;
Parameter<double> const& linear_thermal_expansion_coefficient;
Parameter<double> const& specific_heat_capacity;
Parameter<double> const& thermal_conductivity;

This comment has been minimized.

@wenqing

wenqing May 22, 2017

Member

Add a TODO comment as
To be changed as a matrix type variable.

@xingyuanmiao xingyuanmiao force-pushed the xingyuanmiao:thermomechanics_wip branch 3 times, most recently from 068e514 to a5b95de May 22, 2017

for (auto const& ip_data : _ip_data)
{
cache.push_back(ip_data.eps[component]);

This comment has been minimized.

@nagelt

nagelt May 22, 2017

Member

Kelvin mapping missing. See stresses.

@@ -0,0 +1 @@
Reference solid density. It changes with temperature difference.

This comment has been minimized.

@endJunction

endJunction May 23, 2017

Member

I'm not sure if I understand this correctly: the reference density is temperature dependent, is it?
Then please add the law describing the change.
Also I'm not sure if the @nagelt 's comment below was answered.

This comment has been minimized.

@nagelt

nagelt May 23, 2017

Member

reference density is constant. The density then changes from this reference value.

This comment has been minimized.

@endJunction

endJunction May 23, 2017

Member

@xingyuanmiao please clarify the documentation.

@xingyuanmiao xingyuanmiao force-pushed the xingyuanmiao:thermomechanics_wip branch 4 times, most recently from 4275c45 to e3d5126 Jun 1, 2017

@xingyuanmiao xingyuanmiao force-pushed the xingyuanmiao:thermomechanics_wip branch from e3d5126 to 28e646b Jun 12, 2017

@xingyuanmiao xingyuanmiao force-pushed the xingyuanmiao:thermomechanics_wip branch from 28e646b to 1ebeac4 Jun 13, 2017

xingyuanmiao added some commits Jun 13, 2017

endJunction added a commit that referenced this pull request Jun 19, 2017

Merge pull request #1800.
With additional changes fixing some bugs and formatting. Especially the
commit messages.
@endJunction

This comment has been minimized.

Member

endJunction commented Jun 19, 2017

Merged in c637589.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment