Digital integration ===================== Implicit solving behavior equations in MFront -------------------------------------------------------------- The Barcelona model is integrated implicitly via the tool MFront [bib5] __. This integration intervenes on the increment of the total deformation tensor :math:`\Delta \boldsymbol{\varepsilon}` at the current time :math:`t_{n+1}` at each integration point, knowing the state of the internal variables and the effective stress tensor at the previous moment :math:`t_n`, as well as the value current capillary pressure :math:`p_{c,n+1}`. Indeed, it plays the role of an external variable when solving the mechanical equations of the model. of behavior. The vector of numerical unknowns is noted :math:`\boldsymbol{x}`. Its components are: .. math:: \ begin {Bmatrix}\ boldsymbol {x} _1\\ x_2\\ x_3\ end {Bmatrix} = \ begin {Bmatrix}\ Delta\ boldsymbol {\ varepsilon} ^e\\ \ Delta\ lambda_1\\ Delta\ xi_1\ end {Bmatrix},\ quad\ text {with}\ quad\ Delta x_i = x_ {i, n+1} -x_ {i, n+1} -x_ {i, n} :label: numeric_unknowns where we set :math:`\xi_1=\varepsilon_{1,v}^p` the volume plastic deformation associated with the first plasticity criterion :eq:`domaine_elasticite` -a. It should be observed above that only the plastic multiplier increment :math:`\Delta\lambda_1` intervenes and not :math:`\Delta\lambda_2`. Indeed, the latter is not a numerical unknown, since its value can be explicitly obtained based on increment :math:`\Delta\xi_1` using the following formula, using :eq:`domaine_elasticite` -b: .. math:: \ Delta\ Lambda_2 =\ Delta\ Lambda_2 (p_ {c, n+1},\ Delta\ xi_1) = (\ lambda_s-\ kappa_s)\ ln\ left (1+\ frac {\ frac {\ lambda_2 (p_ {c, n+1})\ ln\ left (1+\ frac {\ frac {\ Lambda_S-\ kappa_s) (1+\ frac {\ frac {\ Lambda_2} f_2 (p_ {c, n+1}},\ varepsilon_ {v, n} ^p+\ Delta\ xi_1)\ Big {\ rangle}} {\ tilde {s} _0 (\ varepsilon_ {v, n} ^p+\ Delta\ xi_1) -K_s\ tilde\ kappa_s}\ right), \ quad\ text {with}\ quad\ langle x\ rangle =\ frac {x+|x|} {2} :label: expression_delta_lambda2 where we note :math:`\varepsilon_{v,n}^p` the volume plastic deformation at the previous moment. System to be solved in the case of elastic loading ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Elastic prediction assumes the increment of the total elastic deformation tensor, which means :math:`\Delta\boldsymbol{\varepsilon}^e=\Delta\boldsymbol{\varepsilon}`. If this prediction meets plasticity criterion :math:`f_1`, the residue of the system of equations to be solved, denoted :math:`\boldsymbol{r}`, is: .. math:: \ begin {Bmatrix}\ boldsymbol {r} _1\\ r_2\\ r_3\ end {Bmatrix} = \ begin {Bmatrix} \ Delta\ boldsymbol {\ varepsilon} ^e -\ Delta\ boldsymbol {\ varepsilon} - \ Delta\ lambda_2\ cfrac {\ boldsymbol {I}} {3}\\ \ Delta\ lambda_1\\ \ Delta\ xi_1\\ \ end {Bmatrix} :label: elastic_residue Above, the first line reports on the decomposition of the tensor of the total deformations between elastics and plastics in the case where only the surface of the second plasticity criterion :math:`f_2` is possibly reached (:math:`\Delta\lambda_2>0`). The second and third lines are consistent with the elastic prediction if it is verified (no increment of the internal variables including the evolution is relative to the plasticity criterion :math:`f_1`). System to be solved in the case of a plastic load ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ If plasticity criterion :math:`f_1` is not met after elastic prediction, the residue of the system of equations to be solved during integration is given by: .. math:: \ begin {Bmatrix}\ boldsymbol {r} _1\\ r_2\\ r_3\ end {Bmatrix} = \ begin {Bmatrix} \ Delta\ boldsymbol {\ varepsilon} ^e -\ Delta\ boldsymbol {\ varepsilon} +\ Delta\ lambda_1\ cfrac {\ partial g_1} {\ partial\ boldsymbol {\ sigma} "}\ Bigg {\ sigma}"}\ Bigg {|} _ {n+1} -\ Delta\ lambda_1\ cfrac {\ partial g_1}} {\ partial\ boldsymbol {\ sigma} "}"}\ Bigg {|} _ {n+1} -\ Delta\ lambda_2\ cfrac {\ boldsymbol {I}} {3}\\ \ cfrac {f_ {1, n+1}} {\ mu}\\ \ Delta\ xi_1-\ Delta\ lambda_1\ boldsymbol {I}:\ cfrac {\ partial g_1} {\ partial\ boldsymbol {\ sigma} "}\ Bigg {|}\ Bigg {|} |} _ {n+1}\\ \ end {Bmatrix} :label: plastic_residue In the previous system, the first line describes the decomposition of the tensor of total deformations between elastics and plastics in the case where the two increments :math:`\Delta\lambda_1` and :math:`\Delta\lambda_2` are*a priori* not zero. The third expresses that the area relative to the second plasticity criterion :math:`f_2` is reached (the equation is dimensioned by the shear modulus). The last one reports on the evolution of the scalar hardening variable :math:`\xi_1` (volume plastic deformation) relative to the first. plasticity criterion). The Newton-Raphson iterative method is used to solve the system of equations :math:`\boldsymbol{r}=\boldsymbol{0}`. To do this, we use the calculation of the Jacobian matrix :math:`J` at each iteration of the schema, expressed as the following block matrix: .. math:: J =\ begin {Bmatrix} \ cfrac {\ partial\ boldsymbol {r} _1} {\ partial\ Delta\ boldsymbol {\ varepsilon} ^e}} & \ cfrac {\ partial\ boldsymbol {r} _1} {\ partial\ Delta\ lambda_1}} & \ cfrac {\ partial\ boldsymbol {r} _1} {\ partial\ Delta\ xi_1}\\ \ cfrac {\ partial r_2} {\ partial\ Delta\ Delta\ boldsymbol {\ varepsilon} ^e}} & \ cfrac {\ partial r_2} {\ partial\ Delta\ lambda_1}} & \ cfrac {\ partial r_2} {\ partial\ Delta\ xi_1}\\ \ cfrac {\ partial r_3} {\ partial\ Delta\ Delta\ boldsymbol {\ varepsilon} ^e}} & \ cfrac {\ partial r_3} {\ partial\ Delta\ lambda_1}} & \ cfrac {\ partial r_3} {\ partial\ Delta\ xi_1} \ end {Bmatrix} :label: Jacobian Each block is obtained through analytical calculations detailed in :numref:`r7.01.17-jacobien`. The value of the Newton-Raphson stopping criterion is taken to :math:`10^{-14}` (value specified in the :math:`\texttt{@Epsilon}` directive). Calculation of the algorithmic tangent operator -------------------------------------------- The algorithmic tangent operator, calculated once the behavioral equations have been solved, is obtained by a chain rule of derivatives: .. math:: \ frac {d\ Delta\ boldsymbol {\ sigma} "}"} {d\ Delta\ boldsymbol {\ varepsilon}} =\ mathbb {C} _ {n+1}:\ frac {\ partial\ partial\ partial\ Delta\ boldsymbol {\ delta\ boldsymbol} "} {\ varepsilon}} {\ partial\ delta\ boldsymbol {\ varepsilon}} :label: derivee_string The first term :math:`\mathbb{C}_{n+1}` refers to the isotropic elasticity tensor. This results from the relationship between the net stress tensor and elastic deformations :eq:`expression_contrainte` like: .. math:: \ mathbb {C} _ {n+1} = 3K\ exp\ left (-\ frac {\ varepsilon^e_ {v, n+1}} {\ tilde\ kappa} -\ frac {\ tilde\ kappa_s} {\ tilde\ kappa_s} {\ tilde\ kappa_s}} {\ tilde\ kappa} {\ tilde\ kappa}} {K_s\ tilde\ kappa_s}\ right)\ right)\ right)\ right)\ mathbb {J} +2\ mu\ mathbb {K} :label: elastic_tensor The second term :math:`\cfrac{\partial \Delta\boldsymbol{\varepsilon}^e}{\partial \Delta\boldsymbol{\varepsilon}}` is written as: .. math:: \ cfrac {\ partial\ Delta\ boldsymbol {\ varepsilon} ^e} {\ partial\ Delta\ boldsymbol {\ varepsilon}} = J^ {-1}} _ {eel} :label: inverse_elastic_jacobian where :math:`J^{-1}_{eel}` represents the first upper-left block of the inverse of the Jacobian matrix in :eq:`jacobienne`. The proof of this calculation can be found in reference ([bib5] __, [biB6] __). **Note:** The calculation of the previous tangent operator only takes into account the derivative of the increment of the net stress tensor in relation to the increment of the total strain tensor, and not in relation to the increment of the capillary pressure. However, we can indicate the possibility of automatically calculating the derivative with respect to this derivative, in general with respect to any external variable (e.g. temperature) in MFront, using DSL **@GenericImplicitBehaviour**, by the following formula [biB6] __: .. math: \ frac {d\ Delta\ boldsymbol {\ sigma} "}"} {d\ Delta p_c}} =\ frac {\ partial\ Delta\ boldsymbol {\ sigma} "} {\ partial\ Delta p_c}} +\ mathbb {C} _ {n+1}"} {\ mathbb {C} _ {n+1}:\ frac {\ partial\ Delta p_c} =\ frac {\ partial\ boldsymbol {\ sigma} "} {\ partial\ Delta p_c} +\ mathbb {C} _ {n+1}:\ frac {\ partial\ Delta p_c}},\ quad\ text {with}\ quad\ frac {\ partial\ frac {\ partial\ Delta\ boldsymbol {\ epsilon} ^e} {\ partial\ Delta p_c} = -J^ {-1}\ frac {\ frac {\ partial\ boldsymbol {r}}} {\ partial\ Delta p_ {c}} :label: derivee_external_variable_ Internal variables ------------------ The internal variables are summarized in :numref:`r7.01.49-table_variables_internes`. .. _r7.01.49-table_variables_internes: .. list-table:: Variables internes du modèle. *-**Appellation** - **Definition** - **Symbol** - **2D components** - **3D components** *-*ElasticStrain* - Tensor of elastic deformations - :math:`\boldsymbol{\varepsilon}^e` - V1-V4 - V1-V6 *-*CumPlastStrain1* - Cumulative plastic deformation linked to the first plasticity criterion - :math:`\lambda_1` - V5 - V7 *-*VolPlastStrain1* - Volume plastic deformation linked to the first plasticity criterion - :math:`\xi_1` - V6 - V8 The additional auxiliary variables in the internal variables field in the sense of Code_Aster are shown in The :numref:`r7.01.49-table_variables_auxiliaires`. .. _r7.01.49-table_variables_auxiliaires: .. list-table:: Variables auxiliaires du modèle. *-**Appellation** - **Definition** - **Symbol** - **2D components** - **3D components** *-*oldVolPlastStrain* - Volume plastic deformation at the moment :math:`t_n` - :math:`\varepsilon_{v,n}^p` - V7 - V9 *-*inisigTime* - Time - *Inst* - V8 - V10 *-*Inisuccion* - Capillary pressure at the initial moment - :math:`p_{c,0}` - V9 - V11 *-*PlasticIndex* - 0 if :math:`f_1<0` and :math:`f_2<0`, 1 if :math:`f_1=0` and :math:`f_2<0`, 2 if :math:`f_1<0` and :math:`f_2=0`, 3 if :math:`f_1=0` and :math:`f_2=0` - :math:`I_p` - V10 - V12 In particular, *iniSigTime* allows you to initialize the value of the capillary pressure *iniSuccion* at time :math:`Inst=0`, when the loading starts from a state in unsaturated condition.