Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:conditions:displacements

Prescribed Displacements

Basic usage

Beginner A displacement can be prescribed to a set of nodes with an evolution function and the object LoadingSet:

loadingset.define(target, field, ampl=0.0, fct=None, 
                  incr=INCREMENTAL_LOAD)  
loadingset.define(target, field, ampl, fctMulti, fieldList, 
                  incr=INCREMENTAL_LOAD)

with

target GObject meshed geometric entity where the displacement is prescribed
field Field1D variable to be prescribed
ampl float amplitude
fct Function function for time dependence
fctMulti Advanced Function (spatiotemporal dependency)
fieldList Advanced list of dependency fields
incr Advanced enum = 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)

Example: FIXME


Activation/Deactivation of boundary conditions

Advanced Prescribed displacements can be added or removed during the computation.

It is useful to add some prescribed displacements for example when we want to avoid numerical vibrations or rigid body modes. Conversely, it is sometimes useful to drive a workpiece to a desired position, then to remove the prescribed displacements and let the workpiece deform freely.

For any calculation, the simulation time is automatically divided into several stages (Stage objects) using the setNextTime() method of the TimeStepManager.

For each stage, it is possible to activate (activate()) and deactivate (deactivate()) any Loading (including prescribed displacements).

After the configuration of the TimeStepManager, all the defined stages can be retrieved using:

stages = metafor.getStageManager()

Example

Definition of a prescribed displacement on Curve #4 and deactivation during stage #1 (corresponding to the second stage since numbering 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
stage #0 ACTIVE INACTIVE
stage #1 INACTIVE ACTIVE
stage #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.
doc/user/conditions/displacements.txt · Last modified: 2016/03/30 15:23 (external edit)