# Metafor

ULiege - Aerospace & Mechanical Engineering

### Sidebar

doc:user:elements:specials:spring

# Spring

## Materials

A spring (linear or not, with or without failure criterion) is defined is the same way as volume materials:

materialno = materialset.define (number, type)
materialno = materialset(number)
materialno.put(param, value)
materialno.depend(param, fct, Key(Lock)))
...
 number spring number (must be unique for all element in materialset, not just for springs) type type of spring (for example ConstantSpringMaterial) param name of the spring parameter (for example SPRING_FK) value value of the corresponding parameter 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)

### ConstantSpringMaterial

Linear spring

#### Parameters

Name Metafor Code Dependency
Stiffness SPRING_FK -
Damping coefficient SPRING_FC -

### NonLinearSpringMaterial

#### Description

Nonlinear spring.

#### Parameters

Name Metafor Code Dependency
Amplitude of the associated stiffness force as a function of the elongation. This force is described by the associated nf function. Careful, this function must also be described for negative elongation (compression) SPRING_FK GD
Amplitude of the associated damping force as a function of the elongation rate. This force is described by the associated nf function. Careful, this function must also be described for negative elongation rates SPRING_FC GV

Remarks :

• SPRING_FK et SPRING_FC are forces and not stiffness/damping coefficient (unlike ConstantSpringMaterial)
• the dependency is written as :

materialset(no).depend(SPRING_FK,fct1,Field1D(TX,RE))
materialset(no).depend(SPRING_FC,fct2,Field1D(TX,GV))

### BreakingSpringMaterial

#### Description

Nonlinear spring with failure criterion.

#### Parameters

Name Metafor Code Dependency
Stiffness SPRING_FK -
Damping coefficient SPRING_FC -
Maximal length of the spring. Above, failure appears and forces are equal to zero. This length can depend on time though nf SPRING_LMAX TM

## Element

Once the material is defined, 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 Spring[2|3]DElement) 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)

### Spring[2|3]DElement

Nonlinear spring element. Associates two nodes with a stiffness. No axisymmetric correction is implemented. They must be associated with a FieldApplicator interaction.

#### Parameters

Name Metafor Code Dependency
MATERIAL Number of the spring material to consider -
STIFFMETHOD Method used to compute the stiffness matrix
= STIFF_ANALYTIC : analytic matrix (default)
= STIFF_NUMERIC : numerical matrix
Not applicable, only the numerical one exists !
-
SPRING_LI Defines the spring length “at rest” (relevant or not depending on the value of SPRING_CLI)
SPRING_CLI Defines the way the “length at rest” (lengthIni ) will be computed
assume L0 is the measured length at the end of the preprocessing (geometrical length)
= 0 : lengthIni = L0 (default - do not require SPRING_LI)
= 1 : lengthIni = SPRING_LI
= 2 : lengthIni = L0 * SPRING_LI
= 3 : lengthIni = L0 + SPRING_LI
-

## Interaction

Finally, once the Spring[2|3]DElement ElementProperties is defined, the corresponding interaction is generated with the FieldApplicator. To do so, the corresponding geometric mesh element must be generated using 1D Meshers (Curves). Once done, the interaction can be defined and included in the interactionset:

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 spring elements to generate.