Table of Contents
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
Description
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_FKetSPRING_FCare 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 | - |
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. |
