Propagation of a cohesive crack ================================== In this method, cohesive zone models are introduced over extended potential crack surfaces. Thus, the cohesive law will naturally separate the adherent and open domains, which requires a formulation for the cohesive law that allows a faithful representation of large adherent areas. The issue was discussed in § :ref:`3 `. An implicit updating of the propagation front can then be carried out, which is the originality of the method proposed here. For the propagation algorithms, we use a mixed cohesive law with linear elements CZM_LIN_MIX, which is introduced into the model by the DEFI_CONTACT command, with the key words ZONE/RELATION. Assume a structure with a cracked surface, described by a cohesive law, for which the cohesive front separating the effective cohesive zone from the potential cracking surface is known, i.e. the surface within which the crack can propagate at the next loading step (see fig.). Carrying out an iteration of the propagation calculation then includes, in order, the following steps (see FIG.): 1. carrying out the mechanical calculation at the following time step (command STAT_NON_LINE), 2. the detection of the new cohesive front (command PROPA_FISS, operation DETECT_COHESIF), 3. the determination of the direction of propagation along this new front (command CALC_G), 4. the construction of a new potential cracking zone clear of this front, from the directions determined in c), according to a fixed length extension (command PROPA_FISS, operation PROPA_COHESIF), 5. the updating of the model according to this new zone (command MODI_MODELE_XFEM), and if necessary, the projection of the current cohesive state on this new model (keyword ETAT_INIT/COHE in STAT_NON_LINE). This state will serve as the initial state for the mechanical calculation of step a) of the next iteration. .. image:: images/1000020000000269000001B2E3CC5249FD4407A8.png :width: 6.4303in :height: 4.5252in .. _RefImage_1000020000000269000001B2E3CC5249FD4407A8.png: .. _Ref2142724371: Figure 6-a: Propagation of a crack on an unknown path: steps for carrying out a propagation step. Description of a cohesive crack ---------------------------------- In order to be able to locate the cohesive front, a discontinuity of the type 'COHESIF' is defined in DEFI_FISS_XFEM. Compared to a 'INTERFACE' discontinuity, it must contain additional information to *locate the cohesive front:* the data structures relating to the description of a front (coordinates of the points, covariant base...) and an additional level-set. Indeed, knowing that the position of the potential cracking surface is described with a normal level-set by :math:`[{\varphi }_{n}=0]`, the cohesive front is classically located by an additional "tangent" level-set, such as :math:`[{\varphi }_{n}=0]\cap [:ref:`{\varphi }_{t}=0 <{\varphi }_{t}=0>`] `(see fig.). For a detailed description of using level-sets with XFEM, see documentation [:ref:`R7.02.12 `], §2. .. image:: images/1000020000000114000000A494AB07EB4D08C1EE.png :width: 2.8748in :height: 1.7059in .. _RefImage_1000020000000114000000A494AB07EB4D08C1EE.png: .. _Ref21427243711: Figure 6.1-a: Description of the cohesive front using level-sets. Unlike the 'FISSURE' type, the 'COHESIF' type has no singular point enrichment, due to the regularity of the cohesive fields. The potential cracking zone therefore stops on the faces (in 3D) or the edges (in 2D, see fig.) of the elements. .. image:: images/10000200000002B5000000FF9ADBA184225CA773.png :width: 5.0039in :height: 1.8307in .. _RefImage_10000200000002B5000000FF9ADBA184225CA773.png: .. _Ref214272437111: Figure 6.1-b: Characteristics of a crack of type COHESIF, at the end of an operation DETECT_COHESIF of PROPA_FISS **Note:** *In fact, for type* COHESIF *, the propagation front does not necessarily always coincide with the tangent level-set iso-zero. In fact, during the mechanical calculation phases (step a in FIG.), the tangent level-set iso-zero is used to locate the end of the potential cracking zone, and therefore of the enrichment (see fig.), while the propagation front always locates the cohesive front (from which the interface is actually open, see fig.) .* .. image:: images/10000200000002B5000000FFF22CD786FA8110EB.png :width: 5.2307in :height: 1.9134in .. _RefImage_10000200000002B5000000FFF22CD786FA8110EB.png: .. _Ref2142724371111: Figure 6.1-c: Characteristics of a crack of type COHESIF, at the end of an operation PROPA_COHESIF of PROPA_FISS **Note — initializing the procedure:** *The initialization of a propagation study (by step a in fig.) is done by giving a potential cracking zone and an initial propagation front (see fig.). The latter may correspond to a corner of the structure, a simple line on a free edge, or a pre-existing crack background (in the latter case, it must be meshed). In practice, an initial discontinuity of type* * *COHESIFpar* * *DEFI_FISS_XFEM* *is defined (see fig.). The initial front is indicated by the keyword* *GROUP_MA_BORD.* .. image:: images/10000200000002A7000000F79E3A04D61CBD747A.png :width: 4.8323in :height: 1.7488in .. _RefImage_10000200000002A7000000F79E3A04D61CBD747A.png: .. _Ref21427243711111: Figure 6.1-d: Characteristics of a crack of type COHESIF, at the output of a DEFI_FISS_XFEM command Carrying out the mechanical calculation ------------------------------- The CZM_LIN_MIX law and the wording used were detailed in the first five parts of this documentation. The length of the cohesive zone is estimated by :math:`{l}_{c}=\frac{E{G}_{c}}{(1-{\nu }^{2}){\sigma }_{c}^{2}}`. It is advisable to choose a :math:`h` mesh size such as :math:`{l}_{c}\sim \text{quelques}h` so that the cohesive zone is well resolved. It is recommended to use load control, which makes it possible to control the crack advance at each propagation step. In fact, in general, when load control is used, the displacement increment :math:`\Delta u` is linked to the time step :math:`\Delta t` by the relationship (see documentation [:ref:`R5.03.80 `]): :math:`f(\Delta u)=\frac{\Delta t}{\text{COEF\_MULT}}` where: * :math:`f` is the control function, which depends on the quantity you want to control, * COEF_MULT is the value entered under the keyword of the same name, under the PILOTAGE factor keyword of the STAT_NON_LINE command. More particularly for the cohesive law CZM_LIN_MIX, the steering function is: :math:`f(\Delta u)=\frac{⟦\Delta u⟧}{{w}_{c}}` where :math:`{w}_{c}=\frac{2{G}_{c}}{{\sigma }_{c}}` is the critical displacement jump. The length of the crack created on a propagation step is therefore approximately :math:`\Delta l=\frac{{l}_{c}}{2}\frac{\Delta t}{\text{COEF\_MULT}}`. Once again, it is advisable to choose :math:`\Delta l\sim \text{quelques}h`. If possible, :math:`\Delta l` should be much less than the expected radius of curvature for the cracked surface (in order to accurately capture the geometry of the crack). Otherwise, this criterion must be verified at a later date. .. _RefNumPara__5608_739441520: Forehead detection ------------------ In order to determine the crack front from the cohesive calculation result, we will assign the mesh nodes a status to know if they are healthy or already damaged. This status should be a scalar and should not be changed in discharge situations. Therefore, it seems natural to use the internal variable :math:`\alpha` of the cohesive law. However, like any internal variable measuring an irreversible process, :math:`\alpha` does not evolve during the adherent phases (:math:`\alpha =0`, see § :ref:`2.2.3 `). As it is, it therefore does not make it possible to determine a scalar field whose iso-zero would define the crack front. On the other hand, it is possible to use the quantity :math:`\stackrel{̃}{\alpha }\text{}` for this purpose, such as :math:`\alpha ={P}_{[\mathrm{0,1}]}(\stackrel{̃}{\alpha })`. As a reminder (see § :ref:`2.2.3 `), we have :math:`\stackrel{̃}{\alpha }(t)=\underset{[\mathrm{0,}t]}{\text{max}}\phi \left({\left(\lambda +rw\right)}_{\mathit{eq}}\right)` with :math:`\phi \left({\left(\lambda +rw\right)}_{\mathit{eq}}\right)\mathrm{:}=\frac{{\left(\lambda +rw\right)}_{\mathit{eq}}-{\sigma }_{c}}{r{w}_{c}-{\sigma }_{c}}`. Therefore, :math:`\stackrel{̃}{\alpha }\le 0` corresponds to healthy material, and :math:`\stackrel{̃}{\alpha }\ge 0` to cracked material. The construction of a crack front from the previous relevant field is done by assimilating :math:`\stackrel{̃}{\alpha }\text{}` to a tangent level-set :math:`{\varphi }_{t}`. The procedure then consists in: 1. retrieve field :math:`\stackrel{̃}{\alpha }\text{}`, already defined as a field at the nodes for mixed formulation with linear elements; 2. identify the intersected elements (see fig., steps a and b) by the iso-zero of :math:`\stackrel{̃}{\alpha }\text{}`. For details, see documentation [:ref:`R7.02.12 `], §3.2.5.1 and §3.2.5.2; 3. determine the intersection points of the iso-zero of the field with the faces (see fig.c). For details of the procedure, see the Code_Aster documentation [:ref:`R7.02.12 `], §2.4.1. As highlighted with the references to the Code_Aster documentation, all the routines that perform these operations already exist, as the field acts as a tangent level-set, which makes the implementation particularly fast. .. image:: images/Cadre24.gif .. _RefSchema_Cadre24.gif: **Figure** 6.3-a **: Calculation of the level sets at the nodes projected on the crack background.** A prerequisite for the detection phase is the production of a regular :math:`{\varphi }_{t}` tangent level-set: it must be able to be used sufficiently to be used by crack propagation algorithms at the following propagation steps. Field :math:`{\varphi }_{t}=\stackrel{̃}{\alpha }\text{}` and the resulting front are still too irregular for this use. In order to erase these irregularities, a smoothing procedure should be applied to the forehead. To do this, we use the knowledge of the old front, which is supposed to be more regular. The crack advance that produces the newly detected front from the old one is determined afterwards (fig.a-b). Since the direction is known from the previous propagation, an algorithm for updating level-sets is applied to produce a more regular tangent level-set (fig.c-d). In detail, the steps in this procedure are given below. 1. For each point :math:`P` of the *old* front, a propagation distance is determined by calculating the distance separating :math:`P` from the intersection point between the plane :math:`\left(P,{n}_{P},{t}_{P}\right)` and the newly detected "raw" edge (see FIG., step a). Given an influence length :math:`d`, this distance is calculated as follows: :math:`{A}_{P}=\frac{\sum _{i}\omega ({d}_{i}){A}_{i}}{\sum _{i}\omega ({d}_{i})}` with :math:`\omega ({d}_{i})=\left\{\begin{array}{c}\mathrm{exp}\left(\frac{-{d}_{i}^{2}}{2{d}^{2}}\right)\text{si}{d}_{i}\le \mathrm{2d}\\ 0\text{sinon}\end{array}\right\}` *Warning.* Attention, this is to be distinguished from a 3D projection of :math:`P` on the new front, which would not provide the same result. In our case, we are looking for progress in the normal plan at the old front via :math:`P`. 2. The field of speed standards thus obtained is smoothed (see FIG., step b). *Notes.* If the field is regular enough, this step may be omitted. The direction of propagation having been determined at the previous time step (see part :ref:`6.4 `), the speed of propagation on the old front is completely known (see fig., step c), which allows: 3. The implementation of an algorithm for updating level-sets (see part :ref:`6.5 `), for which only the operations concerning the tangent level-set are performed (see fig., step d). *Conclusion.* The updated tangent level-set provides the position of a regular front and the associated covariant basis. .. image:: images/10000200000002B50000020B3156618CFA39E80B.png :width: 7.2213in :height: 5.4461in .. _RefImage_10000200000002B50000020B3156618CFA39E80B.png: **Figure** 6.3-b **: Smoothing the crack front.** **Note — about the crack growth at the end points:** .. image:: images/1000020000000137000000CF605E95D810917DB7.png :width: 3.2398in :height: 2.1559in .. _RefImage_1000020000000137000000CF605E95D810917DB7.png: **Figure** 6.3-c **: Crack advance at the end points.** *When determining the advance of the crack afterwards, the values for the end points of the old front are not taken into account. Indeed, the covariant basis* :math:`\left({n}_{P},{t}_{P}\right)` *y is corrected to be tangent to the free surface (see §* :ref:`6.5 ` *). Following this operation, the value of the advance may be significantly different from the values at the neighboring points (see FIG.), which has the effect of**falsifying the following propagation algorithm (fig.* *, step d). Instead of doing the advance calculation for these points, they are given the value of the point whose spread remains within the closest.* **Note — choice of influence length** :math:`d` **:** *In order to limit the number of parameters that must be set by the user,* :math:`d` * *is automatically derived from the parameter* NB_POINT_FOND *given as an argument to the procedure* PROPA_FISS and to the command CALC_G *, by* :math:`d=\frac{\mid T\mid }{\text{NB\_POINT\_FOND}}` * ** where*:math:`\mid T\mid`* is the length of the crack front. * *You can use a parameter* NB_POINT_FOND *that is different from one propagation step to another (for example if the edge gets bigger), but this setting remains at the discretion of the user, it is not automatic. Once again, it is advisable to choose* :math:`d\sim \text{quelques}h`. If possible, :math:`d` should be much less than the expected radii of curvature both for the cracked surface and for the front (in order to accurately capture their respective geometries). Otherwise, this criterion must be verified at a later date. .. _RefNumPara__4499_739441520: Determining the direction of propagation -------------------------------------------- In the literature, the direction of propagation can be deduced from two types of information: either the stress fields in the vicinity of the peak, or the equivalent stress intensity factors. The reuse of directional criteria based on stress intensity factors even for cohesive calculations was suggested by [:ref:`bib4, bib5 `]. In it, the authors explain that this is a reasonable assumption for concrete, since experiments show that the crack path, unlike the force/displacement response curve, is almost not sensitive to the size of the cohesive zone. We could calculate these stress intensity factors from an additional free crack elastic calculation — we remove the cohesive forces from the model — as in [:ref:`bib6, bib7 `]. However, one can do without this additional step: for example, Moës and Belytschko [:ref:`bib8 `] calculate them directly from the result with cohesive forces. The argument justifying this simplification is as follows (Planas and Elices [:ref:`bib9 `]): far from the cohesive zone, the mechanical fields are close to those of an "equivalent" free crack. *equivalent* stress intensity factors can then be defined by contour integrals that surround the entire cohesive zone. We define a virtual field of extension of crack :math:`\theta`, such as :math:`\parallel \theta \parallel =1`, tangent to the cracked surface at each point of the crack and directed along :math:`t` along the front (see figures and). Let :math:`C` be an outline that surrounds the entire cohesive zone, and :math:`{\Gamma }_{C}` the part of :math:`\Gamma` that lies between the crack front and the ends of :math:`C` (see fig.), so that :math:`C\cup {\Gamma }_{C}^{\text{+}}\cup {\Gamma }_{C}^{\text{-}}` is a closed outline (fig.). As detailed in [:ref:`bib8 `], an integral J can be defined on this closed contour as :math:`J={J}_{\text{coh}}+{J}_{\text{ext}}` with :math:`{J}_{\text{ext}}\mathrm{:}=-{\int }_{C}\theta \cdot E\cdot nd\Gamma` and :math:`{J}_{\text{coh}}={\int }_{{\Gamma }_{C}}\theta \cdot ⟦E⟧\cdot nd\Gamma`, the Eshelby tensor being noted :math:`E={\nabla u}^{T}\cdot \sigma -\frac{1}{2}\left(\sigma \mathrm{:}ϵ\right)1` and :math:`⟦E⟧={E}^{\text{+}}-{E}^{\text{-}}`. Because :math:`{\sigma }^{\text{+}}\cdot n={\sigma }^{\text{-}}\cdot n={t}_{c}` and :math:`\theta \cdot n=0` (as a reminder, :math:`n` is oriented from :math:`\text{-}` to :math:`\text{+}`), the expression of :math:`{J}_{\text{coh}}` is reduced to: :math:`{J}_{\text{coh}}={\int }_{{\Gamma }_{C}}{t}_{c}\cdot \nabla ⟦u⟧\cdot \theta d\Gamma` The integrand of :math:`{J}_{\text{coh}}` cancels out outside the cohesive zone, since :math:`{t}_{c}=0` on the *open area* and :math:`⟦u⟧=0` on the *adherent area*. Thus, :math:`{J}_{\text{coh}}` is independent of the :math:`C` outline as long as the latter surrounds the cohesive zone, and is written as: :math:`{J}_{\text{coh}}={\int }_{\Gamma }{t}_{c}\cdot \nabla ⟦u⟧\cdot \theta d\Gamma` In addition, since there is no singularity in the vicinity of the front in the presence of cohesive forces, we have :math:`J=0`, which confirms that :math:`{J}_{\text{ext}}` does not depend on :math:`C` as long as the latter includes the cohesive zone. By Irwin's formula, we also have :math:`{J}_{\text{ext}}=-{J}_{\text{coh}}=\frac{1-{\nu }^{2}}{E}\left({K}_{I,\mathit{eq}}^{2}+{K}_{\mathit{II},\mathit{eq}}^{2}\right)+\frac{1}{2\mu }{K}_{\mathit{III},\mathit{eq}}^{2}`. By breaking down cohesive force by :math:`{t}_{c}={t}_{c,n}n+{t}_{c,t}t+{t}_{c,b}b` and using the :math:`⟦\nabla u⟧\cdot \theta =\frac{\partial {⟦u⟧}_{n}}{\partial \theta }n+\frac{\partial {⟦u⟧}_{t}}{\partial \theta }t+\frac{\partial {⟦u⟧}_{b}}{\partial \theta }b` notation, equivalent stress intensity factors can be written as: :math:`{K}_{I,\mathit{eq}}^{2}=-\frac{E}{1-{\nu }^{2}}{\int }_{\Gamma }\frac{\partial {⟦u⟧}_{n}}{\partial \theta }{t}_{c,n}d\Gamma` :math:`{K}_{\mathit{II},\mathit{eq}}^{2}=-\frac{E}{1-{\nu }^{2}}{\int }_{\Gamma }\frac{\partial ⟦{u}_{t}⟧}{\partial \theta }{t}_{c,t}d\Gamma` :math:`{K}_{\mathit{III},\mathit{eq}}^{2}=-2\mu {\int }_{\Gamma }\frac{\partial ⟦{u}_{b}⟧}{\partial \theta }{t}_{c,b}d\Gamma` Physically, these expressions quantify the expression of the energy dissipated according to each of the three modes of rupture, if we assume a homothetic propagation, in the :math:`\theta` direction, and *that the size of the cohesive zone remains small compared to that of the sample*. .. image:: images/100002000000015F000000D495F4FDF4012A4654.png :width: 3.6571in :height: 2.2087in .. _RefImage_100002000000015F000000D495F4FDF4012A4654.png: **Figure** 6.4-a **: Definitions of invariant integrals in the presence of a cohesive zone.** The criterion then adopted is the criterion of maximum circumferential constraint of Erdogan and Sih [:ref:`bib12 `] (see also [:ref:`R7.02.13 `], §2.1): :math:`\beta =2\mathrm{arctan}\left[\frac{1}{4}\left({K}_{I}^{\mathit{èq}}/{K}_{\mathit{II}}^{\mathit{èq}}-\mathit{sign}({K}_{\mathit{II}}^{\mathit{èq}})\sqrt{{\left({K}_{I}^{\mathit{èq}}/{K}_{\mathit{II}}^{\mathit{èq}}\right)}^{2}+8}\right)\right]` **Note — correcting the field** :math:`\theta` **to make it tangent to the cracked surface:** *In order to insure :math:`\theta \cdot \nabla {\varphi }_{n}=0`*at all point*:math:`M`*of the cracked surface (see figures* *and* *), the field* :math:`\theta` *is corrected as follows (see fig.) :* *- Initialization* :math:`\theta \leftarrow \nabla {\varphi }_{t}` *;* *- Vector* :math:`\theta` *normal to the propagation plane:* :math:`b\leftarrow \nabla {\varphi }_{n}\times \nabla {\varphi }_{t}` *, then* :math:`b\leftarrow b/\parallel b\parallel` *;* *- Correction to ensure* :math:`\theta` *tangent to the crack surface:* :math:`\theta =\nabla {\varphi }_{n}\times b` *, then* :math:`\theta \leftarrow \theta /\parallel \theta \parallel`\ *.* .. image:: images/Cadre28.gif .. _RefSchema_Cadre28.gif: **Figure** 6.4-b **: Correcting the field** θ to make it tangent to the cracked surface *\* . ** **Note —** **field** :math:`\theta` **at the ends of the forehead:** *In a conventional method* :math:`\left(G,\theta \right)` *, a correction is applied to the values of* :math:`\theta` *on the free surfaces, to ensure* :math:`\theta \cdot \nu =0` *, where* :math:`\nu` *is the normal to the free surface (see fig.), in order to avoid negative G values. This correction is no longer applied in the case of a cohesive calculation (see fig.), because this risk is excluded due to the nature of the calculation (surface dissipation integrals) .* .. image:: images/Cadre36.gif .. _RefSchema_Cadre36.gif: **Figure** 6.4-c **: Field** θ on the cracked surface for a classical (G, θ) calculation, and for a cohesive calculation. **Note —** **base choice** :math:`\theta` **for the breakdown of modes:** *If the cohesive zone is large, it is spread over a curved surface. The choice of the basis for the decomposition of the modes is then not obvious: you can choose:* *-be the base at the crack front (figure* *, solution a),* *-be the base at the point in question (fig., solution b),* *-or the base linked to the polar coordinates at the crack front (fig., solution c) .* *While the first solution underestimates the bifurcation angle and the second overestimates it, the third solution c) is the one that produces the most balanced results, and therefore the one that has been implemented. The calculation of the base is therefore as follows:* - *Vector position in the coordinate system at the bottom of the crack:* :math:`\mathit{PM}=x(M)-x(P)` *;* *-Projection in the plane:* :math:`t\leftarrow \mathit{PM}-(\mathit{PM}\cdot b)b` *, then* :math:`t\leftarrow t/\parallel t\parallel` *;* *-Construction of a vector* :math:`n` *normal:* :math:`n\leftarrow t\times b` *, then* :math:`n\leftarrow n/\parallel n\parallel` *.* .. image:: images/Cadre27.gif .. _RefSchema_Cadre27.gif: **Figure** 6.4-d **:** Choice of possible bases for the decomposition of modes. .. _RefNumPara__4501_739441520: Extension of the potential cracking surface -------------------------------------------------- To update the cracked surface, we use the 'GEOMETRIQUE' algorithm described in [:ref:`R7.02.13 `], §6. In the detection phase described in § :ref:`6.3 `, only the tangent level-set is updated (OPERATION =' DETECT_COHESIF 'in PROPA_FISS). In the phase of extending the potential cracking surface detailed here (OPERATION =' PROPA_COHESIF 'in PROPA_FISS), the normal level-set is also updated, and the extension takes place according to a fixed length DA_MAX, which must be chosen to be much greater than :math:`\Delta l`. The various methods for updating level-sets are listed in the documentation [:ref:`R7.02.13 `]. While classical methods are based on discretization by centered differences of Hamilton-Jacobi equations (METHODE_PROPA =' SIMPLEXE '/' UPWIND 'in PROPA_FISS), simpler methods have since appeared (METHODE_PROPA =' GEOMETRIQUE' in PROPA_FISS), for which the only remaining step is the update itself. This technique takes advantage of the fact that the crack surface created at the previous moment is frozen: the problem of surface propagation is therefore reduced to the propagation of a front from which distances can be directly evaluated. .. image:: images/100002000000028E0000009FF3F02F5CAE01451A.png :width: 6.8161in :height: 1.6516in .. _RefImage_100002000000028E0000009FF3F02F5CAE01451A.png: **Figure** 6.5-a **:**: ** Direct calculation, plane by plane, of the new level-sets by the geometric propagation algorithm. From the evolution equations, we can show that for each node :math:`M`, *as long as we manage to project* :math:`M` *onto a point* :math:`P` *on the front such as* :math:`M\in (P,{n}_{P},{t}_{P})` *,* *the update comes down to a problem in this plan :math:`(P,{t}_{P},{n}_{P})`. We therefore calculate the new values,*plane by plane*, by plane translations and rotations, as follows: For each point M in the parent mesh: * This point is projected onto the old crack bottom (fig., step a). * The projection on the new front is deduced (fig., step b). * The corresponding level-sets are calculated. If we had :math:`{\varphi }_{t}\left(M\right)\le 0`, we did not modify :math:`{\varphi }_{n}\left(M\right)\le 0`, in order to "freeze" the existing cracked surface (fig., step c). **Note — base correction** :math:`({n}_{p},{t}_{p})` **at the end points of the forehead:** *An important hypothesis of the geometric propagation method is that the point* :math:`M` *belongs to the plane* :math:`(P,{n}_{p},{t}_{p})` *(as a reminder,* :math:`M` * *is the point in space where we want to update the level-sets, and* :math:`P` *is its projection on the crack background). If this is not the case, you must correct the base* :math:`({n}_{p},{t}_{p})` *to ensure this property before applying the propagation algorithm.* *There are three scenarios for which this property is not verified, which have in common the fact that the point* :math:`M` *projects onto one end of the crack bottom. By* **chronological order of treatment:* *1. The case of a curved crack front* *In this case, it is necessary to replace* :math:`{t}_{P}` *with a* :math:`{t\text{'}}_{P}` *tangent to the edge of the structure:* :math:`{t\text{'}}_{P}\cdot \nu =0` *where* :math:`\nu` *is the normal one at the edge of the structure.* .. image:: images/Cadre30.gif .. _RefSchema_Cadre30.gif: **Figure** 6.5-b **:** Case of a curved crack front. *We will consider that* :math:`{t}_{P}` *has been corrected using this procedure later:* :math:`{t\text{'}}_{P}` *will simply be noted* :math:`{t}_{P}` *.* *2. The case of a cracked surface inclined in relation to the edge of the structure* *In this case, it is necessary to correct* :math:`{n}_{P}` *by a* :math:`{n}_{P}^{\text{*}}`*, so that*:math:`M\in (P,{n}_{P}^{\text{*}},{t}_{P})`\ *. There is no need to correct* :math:`{t}_{P}` *. This correction is written as:* :math:`{n}_{P}^{\text{*}}\leftarrow \left(1-{t}_{P}\otimes {t}_{P}\right)\cdot \mathit{PM}`*, and*:math:`{n}_{P}^{\text{*}}\leftarrow \frac{{n}_{P}^{\text{*}}}{\parallel {n}_{P}^{\text{*}}\parallel }` *.* *For a crack that would open perpendicularly, we find* :math:`{n}_{P}^{\text{*}}={n}_{P}`* . * .. image:: images/Cadre31.gif .. _RefSchema_Cadre31.gif: **Figure** 6.5-c **:** Case of a surface inclined with respect to the edge of the structure. *We will consider that* :math:`{n}_{P}` *has been corrected using this procedure later:* :math:`{n}_{P}^{\text{*}}`*will simply be noted*:math:`{n}_{P}`* . * *3. The case of an edge with a concave structure* *In this case, it is necessary to correct* :math:`{t}_{P}` *by a* :math:`{t}_{P}^{\text{*}}`*, so that*:math:`M\in (P,{n}_{P},{t}_{P}^{\text{*}})`\ *. There is no need to correct* :math:`{n}_{P}` *. This correction is written as:* :math:`{t}_{P}^{\text{*}}\leftarrow \left(1-{n}_{P}\otimes {n}_{P}\right)\cdot \mathit{PM}`*, and*:math:`{t}_{P}^{\text{*}}\leftarrow \frac{{t}_{P}^{\text{*}}}{\parallel {t}_{P}^{\text{*}}\parallel }` .. image:: images/100002000000010900000084BC3D646614F59204.png :width: 2.7539in :height: 1.3657in .. _RefImage_100002000000010900000084BC3D646614F59204.png: **Figure** 6.5-d **:** Case of an edge with a concave structure. Expansion of the space of multipliers and initial internal variables -------------------------------------------------------- As illustrated in the figure, steps a-b, updating the cracked surface implies that the cracked surface has rotated upstream of the front. Consequently, the edges that are intersected by the new cracked surface are not the same as those that were intersected by the old one, in particular upstream of the front (see fig., steps a-b). In fig., step d, we note :math:`Q` the set of edges intersected by the *new* cracked surface, :math:`V` the subset of vital edges (the edges that have an equal relationship), and :math:`K` the set of enriched nodes. We note :math:`{Q}_{0}`, :math:`{V}_{0}` and :math:`{K}_{0}` these different sets if the *previous* cracked surface is considered (fig., step a). The set of vital edges :math:`V` — which defines the new reduced space of multipliers :math:`{M}_{h}` — is not a subset of :math:`{Q}_{0}` but of :math:`Q`. Reconstructing :math:`V` from scratch will likely lead to very different groups of vital edges. As the internal variables are defined on the previous :math:`{M}_{h}` space, they should be projected between two quite different spaces, which would lead to poorer energy conservation. It is therefore preferable to build the new space while respecting the existing combinations below the front, and to extend it by new groups only in the zone not intersected previously, located beyond the crack front (see fig., steps a-c). The set of edges given to the restriction algorithm is initialized to the set :math:`Q` of edges intersected by the *new* cracked surface. Next, we remove from this set (see fig., step b) the edges of :math:`{Q}_{0}\setminus {V}_{0}` whose ends :math:`n` are both such that: * for any :math:`v\in {V}_{0}` edge where :math:`n` is an end, :math:`v\in Q`. The algorithm for selecting vital edges detailed in the documentation [:external:ref:`R5.03.54, §6 `] is then implemented: by construction, it will produce a :math:`V` set that preserves the previous node groups (see fig., step c). The new reduced space involves nodes in :math:`K\setminus {K}_{0}` that did not have values assigned for the internal variables (empty circles in fig., step c). For such a node :math:`n`, the initial value is determined as follows (see FIG., steps c-d): * If there is an edge of :math:`V` connecting :math:`n` to a node :math:`m\in {K}_{0}`, the value of :math:`m` is assigned to :math:`n`. * Otherwise, the initial internal variable is set to 0 (healthy material). .. image:: images/100002000000025F000002A8F600597A80072A87.png :width: 6.324in :height: 7.0862in .. _RefImage_100002000000025F000002A8F600597A80072A87.png: **Figure** 6.6-a **: Extension of the space of multipliers and initial internal variables**. There are also a few :math:`{K}_{0}` nodes whose value needs to be changed, as they are connected to a different group between :math:`V` and :math:`{V}_{0}` (gray circles in fig., step c). Again, if there is an edge connecting it to a node :math:`m\in {K}_{0}`, the value of :math:`m` is assigned to :math:`n`. Note that the presence of non-zero, although low, internal variable values upstream of the edge (such as :math:`{\alpha }_{5}` and :math:`{\alpha }_{6}` in the figure, step a) comes from the fact that the propagation front was smoothed during its detection (see § :ref:`6.3 `).