Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:conditions:displacements

This is an old revision of the document!


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 imposed
field Field1D variable to be fixed
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 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.

doc/user/conditions/displacements.1420714338.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki