|
| 1 | +--- |
| 2 | +title: Non-linear Elasticity with Multiple Material Definition |
| 3 | +permalink: /tutorials/Multiple_Material/ |
| 4 | +--- |
| 5 | + |
| 6 | +| Written by | for Version | Revised by | Revision date | Revised version | |
| 7 | +| --- | --- | --- | --- | --- | |
| 8 | +| [@rsanfer](https://github.com/rsanfer) | 7.0.1 | [@rsanfer](https://github.com/rsanfer) | Jan 30, 2020 | 7.0.1 | |
| 9 | + |
| 10 | +###### **At one glance** |
| 11 | + |
| 12 | +###### Solver: ```ELASTICITY``` |
| 13 | +###### Uses: ```SU2_CFD``` |
| 14 | +###### Complexity: <span style="color: orange;">**Intermediate**</span> |
| 15 | +###### Prerequisites: [**Nonlinear Elasticity**](../Nonlinear_Elasticity/) |
| 16 | + |
| 17 | + |
| 18 | +### Goals |
| 19 | + |
| 20 | +Once completed the tutorial on [Nonlinear Elasticity](../Nonlinear_Elasticity/), we can move on to more advanced features. This document will guide you through the setup of a non-linear problem with multiple material definitions. |
| 21 | + |
| 22 | +In this tutorial, we use the same problem definition as for the nonlinear elasticity tutorial: a vertical, slender cantilever, clamped in its base, and subject to a horizontal, follower load $$P$$ on its left boundary. However, in this section, we will discretize the cantilever into four regions, R0, R1, R2 and R3, |
| 23 | + |
| 24 | + |
| 25 | + |
| 26 | +### Resources |
| 27 | + |
| 28 | +You can find the resources for this tutorial in the same [structural_mechanics/cantilever](https://github.com/rsanfer/Tutorials/blob/master/structural_mechanics/cantilever) folder in the [Tutorials repository](https://github.com/rsanfer/Tutorials). You can reuse the mesh file [mesh_cantilever.su2](https://github.com/su2code/Tutorials/blob/master/structural_mechanics/cantilever/mesh_cantilever.su2) |
| 29 | +from the Non-linear Elasticity tutorial, but you will need a new config file, [config_nonlinear_multimaterial.cfg](https://github.com/su2code/Tutorials/blob/master/structural_mechanics/cantilever/config_nonlinear_multimaterial.cfg), and an element properties file, [element_properties.dat](https://github.com/su2code/Tutorials/blob/master/structural_mechanics/cantilever/element_properties.dat) |
| 30 | + |
| 31 | +### Background |
| 32 | + |
| 33 | +SU2 has been designed using a finite-deformation framework$$^1$$ to account for geometrical and material non-linearities. We can write the non-linear structural problem via the residual equation |
| 34 | + |
| 35 | +$$\mathscr{S}(\mathbf{u}) = \mathbf{T}(\mathbf{u}) - \mathbf{F}_b - \mathbf{F}_{\Gamma}(\mathbf{u})$$ |
| 36 | + |
| 37 | +which has been obtained from the weak formulation of the structural problem defined using the principle of virtual work and discretized using FEM. |
| 38 | + |
| 39 | +In a Finite Element framework, it is normally possible to define different properties for each element. In this tutorial, we will exemplify the ability of SU2 to deal with this kind of problems. |
| 40 | + |
| 41 | + |
| 42 | +#### Configuration File Options |
| 43 | + |
| 44 | +The first thing required to deal with multiple materials, is to add the command |
| 45 | + |
| 46 | +``` |
| 47 | +FEA_FILENAME = element_properties.dat |
| 48 | +``` |
| 49 | + |
| 50 | +that defines the name of the element-based input file for material definition. This file has the format |
| 51 | + |
| 52 | +``` |
| 53 | +INDEX MPROP |
| 54 | +0 0 |
| 55 | +1 0 |
| 56 | +... |
| 57 | +249 0 |
| 58 | +250 1 |
| 59 | +... |
| 60 | +499 1 |
| 61 | +500 2 |
| 62 | +... |
| 63 | +749 2 |
| 64 | +750 3 |
| 65 | +... |
| 66 | +999 3 |
| 67 | +``` |
| 68 | + |
| 69 | +where the fields, that must be separated by tabs, are: |
| 70 | +- `INDEX` corresponds to the element ID number from the mesh file. |
| 71 | +- `MPROP` sets the material properties. In this case, the Young's modulus and the Poisson ratio are: |
| 72 | + - `0`: $$E$$ = 80 GPa, $$\nu$$ = 0.4 |
| 73 | + - `1`: $$E$$ = 10 MPa, $$\nu$$ = 0.35 |
| 74 | + - `2`: $$E$$ = 50 GPa, $$\nu$$ = 0.4 |
| 75 | + - `3`: $$E$$ = 0.5 MPa, $$\nu$$ = 0.35 |
| 76 | + |
| 77 | +The regions R0, R1, R2 and R3 are assigned the `MPROP` `0`, `1`, `2` and `3` respectively, using the config options |
| 78 | + |
| 79 | +``` |
| 80 | +ELASTICITY_MODULUS = (8.0E10, 1.0E7, 5.0E10, 5.0E5) |
| 81 | +POISSON_RATIO = (0.4, 0.35, 0.4, 0.35) |
| 82 | +``` |
| 83 | + |
| 84 | +Finally, given the flexibility of the regions R1 and R3, an incremental approach with 10 increments is adopted. |
| 85 | + |
| 86 | +### Running SU2 |
| 87 | + |
| 88 | +Follow the links provided to download the [config](https://github.com/rsanfer/Tutorials/blob/master/structural_mechanics/cantilever/config_nonlinear_multimaterial.cfg), [mesh](https://github.com/rsanfer/Tutorials/blob/master/structural_mechanics/cantilever/mesh_cantilever.su2) and [element_properties](https://github.com/su2code/Tutorials/blob/master/structural_mechanics/cantilever/element_properties.dat) files. Execute the code with the standard command |
| 89 | + |
| 90 | +``` |
| 91 | +SU2_CFD config_nonlinear_multimaterial.cfg |
| 92 | +``` |
| 93 | + |
| 94 | +which will show the following convergence history: |
| 95 | + |
| 96 | +``` |
| 97 | ++-----------------------------------------------------------------------------+ |
| 98 | +| Inner_Iter| Load[%]| rms[U]| rms[R]| rms[E]| VonMises| |
| 99 | ++-----------------------------------------------------------------------------+ |
| 100 | +| 0| 100.00%| -1.331677| -0.001635| -2.028421| 1.0799e+06| |
| 101 | +| 1| 100.00%| -1.913135| 6.972674| 3.447084| 1.0925e+06| |
| 102 | +
|
| 103 | +Incremental load: increment 1 |
| 104 | ++-----------------------------------------------------------------------------+ |
| 105 | +| Inner_Iter| Load[%]| rms[U]| rms[R]| rms[E]| VonMises| |
| 106 | ++-----------------------------------------------------------------------------+ |
| 107 | +| 0| 10.00%| -2.331677| -1.001635| -4.028421| 1.0799e+05| |
| 108 | +| 1| 10.00%| -3.953012| 5.031711| -0.519843| 1.0811e+05| |
| 109 | +| 2| 10.00%| -5.865271| 2.061363| -6.461089| 1.0801e+05| |
| 110 | +| 3| 10.00%| -4.917638| -1.802157| -9.113119| 1.0815e+05| |
| 111 | +| 4| 10.00%| -7.297420| 0.015521| -10.552833| 1.0815e+05| |
| 112 | +| 5| 10.00%| -8.662326| -5.220135| -16.527473| 1.0815e+05| |
| 113 | +| 6| 10.00%| -10.815817| -6.023510| -20.970444| 1.0815e+05| |
| 114 | +
|
| 115 | +... |
| 116 | +
|
| 117 | +Incremental load: increment 10 |
| 118 | ++-----------------------------------------------------------------------------+ |
| 119 | +| Inner_Iter| Load[%]| rms[U]| rms[R]| rms[E]| VonMises| |
| 120 | ++-----------------------------------------------------------------------------+ |
| 121 | +| 0| 100.00%| -2.283509| -0.993242| -3.982743| 1.0465e+06| |
| 122 | +| 1| 100.00%| -3.756525| 5.121588| -0.339856| 1.0346e+06| |
| 123 | +| 2| 100.00%| -3.896361| 2.241346| -6.029630| 1.0345e+06| |
| 124 | +| 3| 100.00%| -3.627203| 1.451203| -6.004211| 1.0324e+06| |
| 125 | +| 4| 100.00%| -4.983506| 2.651319| -5.278535| 1.0327e+06| |
| 126 | +| 5| 100.00%| -3.331444| 0.181474| -5.953341| 1.0275e+06| |
| 127 | +| 6| 100.00%| -4.756347| 3.176148| -4.231894| 1.0285e+06| |
| 128 | +| 7| 100.00%| -5.265075| -1.650930| -9.520310| 1.0285e+06| |
| 129 | +| 8| 100.00%| -6.374912| -0.472377| -11.419412| 1.0285e+06| |
| 130 | +| 9| 100.00%| -7.163173| -2.954409| -13.740312| 1.0285e+06| |
| 131 | +| 10| 100.00%| -7.779284| -4.698500| -14.967597| 1.0285e+06| |
| 132 | +| 11| 100.00%| -8.401311| -5.725573| -16.209560| 1.0285e+06| |
| 133 | +| 12| 100.00%| -9.025030| -5.856932| -17.456694| 1.0285e+06| |
| 134 | +| 13| 100.00%| -9.649048| -5.830228| -18.704672| 1.0285e+06| |
| 135 | +| 14| 100.00%| -10.273113| -5.868586| -19.952520| 1.0285e+06| |
| 136 | +| 15| 100.00%| -10.897181| -5.857269| -21.195730| 1.0285e+06| |
| 137 | +| 16| 100.00%| -11.521238| -5.879621| -22.365896| 1.0285e+06| |
| 138 | +| 17| 100.00%| -12.145524| -5.909298| -23.057966| 1.0285e+06| |
| 139 | +| 18| 100.00%| -12.769967| -5.910878| -23.152629| 1.0285e+06| |
| 140 | +| 19| 100.00%| -13.393813| -5.839072| -23.069515| 1.0285e+06| |
| 141 | +``` |
| 142 | + |
| 143 | +The code is stopped as soon as the values of ```rms[U]```, ```rms[R]``` and ```rms[E]``` are below the convergence criteria set in the config file, although for some increments it reaches the maximum number of iterations (20). This is due to the ill conditioning of the matrix of the problem because of the large differences in stiffness between regions. |
| 144 | + |
| 145 | +The displacement field obtained in _nonlinear_multimaterial.vtk_ is shown below: |
| 146 | + |
| 147 | + |
| 148 | + |
| 149 | +where it can be observed how the flexible regions undergo large deformations, while the regions R0 and R2 remain virtually unaltered due to their high stiffness. The highlighted elements correspond to the interfaces between R1, R2, R3 and R4. |
0 commit comments