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.