1The `Hooke` brick describes the linear elastic part of 2the behaviour of an isotropic or orthotropic material. 3 4## Evolution of the elastic strain 5 6This bricks relies on the fact that the behaviour is based on the 7strain split hypothesis. 8 9The elastic strain must be defined as the first integration 10variable. The associated variable must be called `eel` and its 11glossary name must be `ElasticStrain`. This is automatically the case 12with the `@Implicit` dsl. 13 14The total strain increment `deto` is automatically substracted to the 15equation associated with the elastic (`feel`), which is equivalent to 16the following statement: 17\[ 18feel -= deto 19\] 20 21## Computation of the stress 22 23If the elastic behaviour is orthotropic, the stiffness tensor must be 24available available (using the keyword `@RequireStiffnessTensor`) or 25computed by the behaviour (using the keyword 26`@ComputeStiffnessTensor`). If those keywords are not explicitly 27used, the brick will automatically sets the attribute 28`requireStiffnessTensor` to `true` which has the same effect than the 29`@RequireStiffnessTensor` keyword. 30 31Thus, two cases arise: 32 33- the stiffness tensor is available (using keyword 34 `@RequireStiffnessTensor`) or computed by the behaviour 35 (`@ComputeStiffnessTensor`). 36- the behaviour has is an isotropic elastic behaviour and the 37 stiffness tensor is not available. 38 39### First case: the stiffness tensor is available 40 41#### Computation of the stress at \(t+\theta\,dt\) 42 43At \(t+\theta\,dt\), the stress are computed using: 44 45\[ 46\mts{\sigma}=\tenseurq{D}\,\colon\,\mts{\tepsilonel} 47\] 48 49#### Computation of the final stress at \(t+dt\) 50 51If the stiffness tensor is avaible using the 52`@RequireStiffnessTensor`, the final stress \(\ets{\sigma}\) is 53computed using the following formula : 54 55\[ 56\ets{\sigma}=\tenseurq{D}\,\colon\,\ets{\tepsilonel} 57\] 58 59If the stiffness tensor is computed using `@ComputeStiffnessTensor`, 60the final \(\ets{\sigma}\) stress is computed using: 61 62\[ 63\ets{\sigma}=\ets{\tenseurq{D}}\,\colon\,\ets{\tepsilonel} 64\] 65 66### Second case: the stiffness tensor is not available 67 68In this case, the elastic behaviour of the material is isotropic. The 69computation of the stress requires the definition of the first Lamé 70coefficient and the shear modulus (second Lamé coefficient). 71 72The Lamé coefficients are derived from the Young modulus and Poisson 73ratio. They can be defined using: 74 75- the `@ElasticMaterialProperties` keyword. In this case, the 76 `Implicit` dsl already automatically computes the following 77 variables (See the documentation of the `@ElasticMaterialProperties` 78 keyword): 79 - `young`: the Young modulus at \(t+\theta\,dt\) 80 - `nu`: the Poisson ratio modulus at \(t+\theta\,dt\) 81 - `lambda`: the first Lamé coefficient at \(t+\theta\,dt\) 82 - `mu`: the second Lamé coefficient at \(t+\theta\,dt\) 83 - `young_tdt`: the Young modulus at \(t+dt\) 84 - `nu_tdt`: the Poisson ratio modulus at \(t+dt\) 85 - `lambda_tdt`: the first Lamé coefficient at \(t+dt\) 86 - `mu_tdt`: the second Lamé coefficient at \(t+dt\) 87- the Young modulus and Poisson ratio has been defined as material 88 properties or parameters. In this case, the names of those variables 89 must be `young` and the `nu` and the glossary names associated with 90 those variables must be respectively `YoungModulus` and 91 `PoissonRatio`. The Lamé coefficients will be computed and stored in 92 a data structure used internally by the brick. 93 94If the material properties are not defined using one of those two 95ways, the appropriate material properties will be automatically 96defined by the brick. 97 98#### Computation of the stress at \(t+\theta\,dt\) 99 100At \(t+\theta\,dt\), the stress are computed using the following 101formula: 102\[ 103\mts{\sigma}=\lambda\,\trace{\mts{\tepsilonel}}+2\,\mu\,\mts{\tepsilonel} 104\] 105where \(\lambda\) and \(\mu\) are respectively the values of the first 106and second Lamé coefficients at \(t+\theta\,dt\) 107 108#### Computation of the final stress at \(t+dt\) 109 110The final stress \(\ets{\sigma}\) is computed using the following 111formula : 112 113\[ 114\ets{\sigma}=\ets{\lambda}\,\trace{\ets{\tepsilonel}}+2\,\ets{\mu}\,\ets{\tepsilonel} 115\] 116 117## Enforcement of the plane stress conditions: computation of the axial strain 118 119If the user has explicitly specified that the axisymmetric generalised 120plane stress modelling hypothesis must be supported by the behaviour 121using the `@ModellingHypothesis` keyword or the `@ModellingHypotheses` 122keyword, this support is performed by automatically introducing an 123additional state variable: the axial strain. The associated variable 124is `etozz`, although this variable shall not be used by the end 125user. The glossary name of this variable is `AxialStrain`. 126 127The introduction of the variable modify the strain split equation like 128this: 129\[ 130feel(2) += detozz; 131\] 132where \(detozz\) is the increment of the axial strain. The associated 133jacobian term is added if necessary. 134 135The plane stress condition is enforced by adding an additional 136equation to the implicit system ensuring that: 137\[ 138\ets{\sigma_{zz}}=0 139\] 140 141This equation is appropriately normalised using one of the elastic 142properties. The associated jacobian term are added if necessary. 143 144## Enforcement of the generalised plane stress conditions: computation of the axial strain 145 146If the user has explicitly specified that the axisymmetric generalised 147plane stress modelling hypothesis must be supported by the behaviour 148using the `@ModellingHypothesis` keyword or the `@ModellingHypotheses` 149keyword, this support is performed by automatically introducing an 150additional state variable, the axial strain and an additional external 151state variable, the axial stress. 152 153The variable associated to the axial strain is `etozz`, although this 154variable shall not be used by the end user. The glossary name of this 155variable is `AxialStrain`. 156 157The variable associated to the axial stress is `sigzz`, although this 158variable shall not be used by the end user. The glossary name of this 159variable is `AxialStress`. 160 161The introduction of the variable modify the strain split equation like 162this: 163\[ 164feel(1) += detozz; 165\] 166where \(detozz\) is the increment of the axial strain. The associated 167jacobian term is added if necessary. 168 169The plane stress condition is enforced by adding an additional 170equation to the implicit system ensuring that: 171\[ 172\ets{\sigma_{zz}}-\sigma^{zz}-d\sigma^{zz}=0 173\] 174 175where \(\sigma^{zz}\) is the value of the axial stress at the 176beginning of the time step and \(d\sigma^{zz}\) is the value of the 177increment of the axial stress. 178 179This equation is appropriately normalised using one of the elastic 180properties. The associated jacobian terms are added if necessary. 181 182## Generic computation of the tangent operator 183 184The elastic and secant operator are equal to the elastic stiffness 185matrix at the end of the time step. How this elastic stiffness matrix 186is obtained depends on the many cases described before. 187 188The consistent tangent operator is computed by multiplying the elastic 189stiffness matrix at the end of the time step by a partial invert of 190the jacobian matrix. This procedure is discussed in depth in the 191MFront manuals. 192 193## Options of the brick 194 195The `Hooke` brick supports the following options: 196 197- `Isotropic`: the elastic part of the behaviour will be assumed 198 isotropic. This is the default for an isotropic material. This is 199 usefull if the material is declared orthotropic. 200- `Orthotropic`: the elastic part of the behaviour will be assumed 201 isotropic. This is the default for an isotropic material. 202- `NoPlaneStressSupport`: plane stress and axisymmetrical generalised 203 plane stress hypotheses support will not be added. 204- `NoGenericTangentOperator`: generic computation of the consistent 205 tangent operator will not be added. 206- `NoGenericPredictionOperator`: generic computation of the prediction 207 operator will not be added. 208