Discretization of the thermo-hydration problem ================================================ Choosing the resolution method --------------------------------- The method chosen consists in solving the non-linear equation [] globally by taking advantage of the non-linear thermal algorithm of*Code_Aster* and locally solving the equation [] which represents the law of evolution of a kind of internal variable representing the degree of hydration, this law being expressed by a function of the thermal state of the system. Indeed, there is no differential operator in space for the variable :math:`\xi` in the equations and therefore no need for a finite element. The relationship [] represents a local law as in plasticity. The same number of degrees of freedom as for conventional thermal engineering is then maintained. Such a decoupled process nevertheless involves the calculation of the same quantities several times. Indeed, let's say :math:`\xi` is discretized at element nodes. Let us consider the example schematized by the []. .. image:: images/100000000000037500000125E0A9AF2C56FBBF9C.png :width: 4.1335in :height: 1.3535in .. _RefImage_100000000000037500000125E0A9AF2C56FBBF9C.png: Figure 3.1-1 On the **1** node, the evolution equation [] will be integrated four times. A possible solution would have been for local calculations to be able to be done on fields at the nodes (concept Aster CHAM_NO) and not on fields of nodes by element (concept Aster CHAM_ELEM, option ELNO), which is currently impossible. The solution that was finally adopted consists in calculating :math:`\xi` at the gauss points of the element, which is all the more natural since for mechanical calculation the Young's modulus depends explicitly on :math:`\xi`. However, this generates a lot of local calculations except to greatly under-integrate the finite element. For example, if you consider a mesh with :math:`N` hexahedral elements with 20 knots, there are roughly :math:`\mathrm{4N}` nodes and :math:`\mathrm{27N}` Gauss points. Resolution algorithm ------------------------ The weak formulation of equation [] is written as follows: +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+ .. _RefEquation 3.2-1 |: |:math: `\ begin {array} {c} {c} {\ mathrm {\ int}} _ {\ omega}\ dot {\ beta} (T)\ mathrm {\ cdot} {T} ^ {\ text {*}} ^ {\ text {*}}} d\ omega + {\ mathrm {\ int}} _ {\ omega}\ lambda (T)\ mathrm {\nabla}} ^ {\ text {*}}} d\ omega + {\ mathrm {\ int}}} _ {\ omega}\ lambda (T)\ mathrm {\nabla} {*}} thrm {\ cdot}\ mathrm {\nabla} {T} {T} ^ {\ text {*}} d\ omega\ mathrm {\ int}} _ {\ omega} s\ mathrm {\ cdot} {T} {T} ^ {\ text {*}}} d\ omega + {\ mathrm {\ int}}} _ {\ omega}} s\ mathrm {\ int}} s\ mathrm {\ omega} s\ mathrm {\ cdot} {T} {T} ^ {\ text {*}}} d\ omega + {\ mathrm {\ int}}} _ {\ omega}} (\ xi) {e} ^ {\ mathrm {-}\ frac {{E}}\ frac {{E} _ {a}} {\ mathit {RT}}}\ mathrm {\ cdot} {T} ^ {\ text {*}} ^ {*}} d\ omega + {\ mathrm {*}}} d\ omega + {\ mathrm {\ int}} _ {\ gamma}\ Phi\ mathrm {\ cdot} {T} {T} {T}} ^ {*}} d\ Omega + {\ mathrm {\ int}}} {*}} d\ Gamma\\\\\ mathrm {\ forall} {\ forall} {T} ^ {\ text {*}}\ end {array}` | eq 3.2-1 | +--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+----------+ The development of thermohydration within the general nonlinear thermal algorithm in *Code_Aster* therefore consists in explicitly discretizing the term :math:`{\mathrm{\int }}_{\Omega }QA(\xi ){e}^{\mathrm{-}\frac{{E}_{a}}{\mathit{RT}}}\mathrm{\cdot }{T}^{\text{*}}d\Omega` in the second member. By noting :math:`{\xi }^{-},{T}^{-},{\xi }^{+},{T}^{+}` respectively, the hydration and temperature variables at the beginning and at the end of the time step, we calculate at each Gauss point the quantity: :math:`QA({\xi }^{\mathrm{-}}){e}^{\mathrm{-}\frac{{E}_{a}}{{\text{RT}}^{\mathrm{-}}}}` which is integrated directly into the second member. After each resolution of the current step, the variables are updated :math:`({\xi }^{+}={\xi }^{-},{T}^{+}={T}^{-})`. The convergence test is only active on temperature, the variable :math:`\xi` not entering into the iterative Newton process used in nonlinear thermics. Taking hydration into account is in fact just taking into account a known heat source at the beginning of the time step. This purely explicit discretization therefore requires the use of sufficiently small time steps.