This is an old revision of the document!
−Table of Contents
Prescribed Displacements
Basic usage
A displacement is imposed to a set of nodes with an evolution function and the object
LoadingSet
:
loadingset.define(gObject, field, ampl, fct , incr) loadingset.define(gObject, field, ampl, fctMultiChamps , fieldList, incr)
gObject | meshed geometric entity where the displacement is imposed |
field | variable to be fixed |
ampl | amplitude |
fct | Functions y=f(t) (temporal dependency) |
fctMultiChamps | Functions y=f(t) (spatiotemporal dependency) |
fieldList | list of dependency fields |
incr (optional) | = INCREMENTAL_LOAD : incremental (default)= TOTAL_LOAD : total (useful to apply initial displacement or for unreliable integration schemes) |
The displacement is then given by
- INCREMENTAL_LOAD:
u(t1) = u(t0) + ampl * (fct(t1)-fct(t0))
- TOTAL_LOAD:
u(t) = ampl * fct(t)
loadingset.define(gObject, field, ampl, incr)
gObject | meshed geometric entity where the displacement is imposed |
field | variable to be fixed |
ampl | amplitude = 0 by default |
incr (optional) | = INCREMENTAL_LOAD : incremental (default) |
= TOTAL_LOAD : total (to set a non zero value or to set a remeshed configuration with respect to the origin) |
Careful, it is not allowed to have a non zero amplitude in incremental. It would lead to a FATAL_ERROR
.
Default value are used to fix nodes quite easily :
loadingset.define(gObject, field)
Activation/Deactivation of boundary conditions
Fixed displacements can be added or removed during the computation. It is useful to avoid numerical vibrations or rigid body modes.
Time is divided into stages using setNextTime
(see TimeStepManager). Then it is possible to activate (activate
) and deactivate (deactivate
) loads for each stage.
All these stages can be retrieved using (commands on the TimeStepManager must be done already):
stages = metafor.getStageManager()
Example : definition of a load on curve #4 and deactivation during stage #1 (corresponding to the second stage since numbers starts with 0):
load1 = loadingset.define(curveset(4), Field1D(TY,RE), 1.0, fct2) load1.deactivate(stages[1])
Definition of a load on curve #1, deactivated during stage #1 and activated for the next ones:
load2 = loadingset.define(curveset(1), Field1D(TY,RE), -0.1, fct1) load2.deactivate(stages[0]) load2.activate(stages[1])
These two loads are represented schematically as :
load1 | load2 | |
---|---|---|
phase #0 | ACTIVE | INACTIVE |
phase #1 | INACTIVE | ACTIVE |
phase #2 | INACTIVE | ACTIVE |
Order of operations :
"Activation surpasses deactivation"
A node can indeed be part of two entities, one activated, one deactivated. But the operation of deactivation will be done first, then the activation, so such a node will be activated.