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) | 
Simple linear elastic law (small strains and displacements).
| Name | Metafor Code | Dependency | 
|---|---|---|
| Density |    MASS_DENSITY     | |
| Young modulus |   ELASTIC_MODULUS   | |
| Poisson ratio |    POISSON_RATIO    | 
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) | 
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.
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.
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.
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.
| 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)  | - | 
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. |