### Table of Contents

# Shells

## Materials

The definition of shell finite elements follows the same logic as volume elements. First, a material is defined:

materialno = materialset.define (number, type) materialno = materialset(number) materialno.put(param, value) materialno.depend(param, fct, Key(Lock))) ...

`number` | material number (must be unique with respect to all elements in `materialset` , not to shells) |

`type` | shell type (for example `LinearShellMaterial` ) |

`param` | name of the shell parameter (for example `ELASTIC_MODULUS` ) |

`value` | value of the corresponding parameter `param` |

`fct` | function which characterizes the dependency of the property (optional: no fct if no dependency) |

`Lock` | Lock which defines the dependency variable of the property (compulsory if there is a dependency) |

### LinearShellMaterial

#### Description

Simple linear elastic law (small strains and displacements).

#### Parameters

Name | Metafor Code | Dependency |
---|---|---|

Density | `MASS_DENSITY` | |

Young modulus | `ELASTIC_MODULUS` | |

Poisson ratio | `POISSON_RATIO` |

## Elements

After defining the material, it must be associated to an `ElementProperties`

:

prp = ElementProperties(typeEl) prp.put(param1, value1) prp.depend(param1, fct1, Lock1)) #facultatif ...

where

`typeEl` | desired element (for example `LinearShellFirstDegreeElement` ) |

`param1` | name of the property associated to the element (for example `MATERIAL` to associate the desired material) |

`value1` | value of the corresponding property |

`fct1` | function which characterizes the dependency of the property (optional: no fct if no dependency) |

`Lock1` | Lock which defines the dependency variable of the property (compulsory if there is a dependency) |

### LinearShellFirstDegreeElement

Linear shell elements (small strains small displacements). 4-nodes linear quadrangles.

By default, stresses are integrated of `dim*2`

integration points.

A thickness must be defined, see table below.

### LinearShellSecondDegreeElement

Same as `LinearShellFirstDegreeElement`

but based on a second order mesh (2D Meshers (Surfaces)).

The membrane part can be integrated over `dim*3`

integration points, considering EAS modes, see table below.
The bending part can be integrated over `dim*3`

integration points, considering EAS modes, see table below.

### LinearShellNineNodeSecondDegreeElement

Same as `LinearShellSecondDegreeElement`

but based on a 9-nodes second order mesh (2D Meshers (Surfaces)).

The membrane part can be integrated over `dim*3`

integration points, considering EAS modes, see table below.
The bending part can be integrated over `dim*3`

integration points, considering EAS modes, see table below.

### LinearShellSixteenNodeThirdDegreeElement

Same as `LinearShellNineNodeSecondDegreeElement`

but based on a 16-nodes third order mesh (2D Meshers (Surfaces)).

The membrane part can be integrated over `dim*4`

integration points, without EAS modes (no locking), see table below.
The bending part can be integrated over `dim*4`

integration points, without EAS modes (no locking), see table below.

#### Parameters

Name | Metafor Code | Dependency |
---|---|---|

`MATERIAL` | Number of the shell material to consider | - |

`STIFFMETHOD` | Method used to compute the stiffness matrix = `STIFF_ANALYTIC` : analytic matrix (default) = `STIFF_NUMERIC` : numerical matrix | - |

`GRAVITY_X` / `GRAVITY_Y` / `GRAVITY_Z` | gravity | time |

`THICKNESS` | initial thickness | - |

`MEMBRANE_NPG` | Number of integration points along one direction for membrane solving = 2 classical solving (second order) = 3 EAS solving with 11 or 13 added modes (8 or 9-nodes second order) = 4 solving without EAS (16-nodes third order) | - |

`BENDING_NPG` | Number of integration points along one direction for membrane solving = 2 classical solving (second order) = 3 EAS solving with 22 or 7 added modes (8 or 9-nodes second order) = 4 solving without EAS (16-nodes third order) | - |

## Interactions

Shell elements are then generated as volume elements, using a `FieldApplicator`

interaction. Then, they must be completed with a DG interface element to be consistent.

app = FieldApplicator(no) app.push(gObject1) app.push(gObject2) ... app.addProperty(prp) # association of an ElementProperties interactionset.add(app) # the interaction is added in InteractionSet

or

app = interactionset.add(FieldApplicator(no)) #add returns a reference app.push(gObject1) app.push(gObject2) ... app.addProperty(prp) # association of an ElementProperties

where

`no` | number of the `Interaction` (which is to say the `FieldApplicator` ) |

`gObject1` | mesh geometric entity where the finite elements are applied |

`prp` | Properties of shell elements to generate. |