ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools




Metafor ElementProperties are used to associate physical properties to the meshed structure (whether with volume or shell elements). Each ElementProperties has a few properties which are associated to the corresponding type of element (see ElementProperties definition). for example, the associated material number, the integration method chosen 1), … They are also used to apply boundary conditions (pressure, thermal flux, …) or to impose contact between two parts.


  • In Bacon, an ElementProperties number is similar to an attribute number.
  • The use of an ElementProperties is really similar to the use of a material (internally, in Metafor, a material is an adapter towards a MaterialProperties) or a material law (MaterialLawProperties). For those who know about C++, these three classes are instances of a single template. They have the same member functions: a put() to define a new entry, and a depend() to associate this value to some parameters


Initially, in Metafor, “Interaction” were objects managing boundary conditions are contact only. The concept was extended to the generation of any type of element, including volume elements. They respect the following scheme:



Two Interactions cannot have the same user number, even if they are associated to different types of elements. For example, a FieldApplicator (volume interaction) cannot have the same number as a ContactInteraction.

In practice, an ElementProperties must be associated to each Interaction. Then, Metafor transmits internally the ElementProperties of each element created by this Interaction. In addition, the Interaction reads the type of element to generate from the associated ElementProperties. Interactions are different depending on this type of element, leading to volume interactions, contact interactions, boundary conditions interactions…

This association of an ElementProperties and an Interaction is done by the command addProperty:


which adds the ElementProperties prp to the interaction number no.

In the data set, the best way to write this is a follow (example given for volume elements):

  #1. Definition of the properties of finite volume element
  prp1 = ElementProperties (Volume2DElement)    #Creates a property prp1 for finite volume elements
                                                #and defines the type of element ''Volume2DElement'' 
  prp1.put (MATERIAL, 1)                        #Number of the associated material
  prp1.put (OMEGA_PT1, 101)                     #Number of the first point which defines the rotation axis
  prp1.put (OMEGA_PT2, 102)                     #Number of the second point which defines the rotation axis
  prp1.put (OMEGA, Omega)                       #Sets a value to the rotational speed (in degree/s)
  fct1 = PieceWiseLinearFunction()              #Defines a ramp function for the evolution 
  fct1.setData(0.,0.)                           #of the rotational speed
  prp1.depend (OMEGA, fct1, Field1D(TM,RE))     #The effective rotational speed is equal to Omega*fct1 
                                                #(and depends on the time)
  prp1.put (STIFFMETHOD,STIFF_ANALYTIC)         #Sets the calculation method of the stiffness matrix to analytic
  prp1.put (CAUCHYMECHVOLINTMETH,VES_CMVIM_STD) #Sets the method of integration of stresses in the element 
                                                #to standard (integrate deviatoric stresses and 
                                                #pressure for each integration point, careful to locking!)
  #2. Generation of volume finite elements on the mesh
  app = FieldApplicator(1)                      #Creates a generator (number 1) of volume elements (interaction)  
  app.push(sideset(1))                          #Sets the side 1 (supposed meshed) as support
  app.addProperty(prp1)                         #Assign the property prp1 to the future volume elements of the side 1 
  interactionset.add(app)                       #Adds the generator number 1 (interaction) to the interaction set

Careful: the command addProperty adds a reference to the ElementProperties in the Interaction and increments its number of references. consequently, modifying the 'p' after using this command will also modify the behavior of the Interaction!

Another way to do this is with the commands:

prp = ElementProperties(typeEl)
prp.put(param1, valeur1)
prp.depend(param1, fct1, lock1)  # optional
prp.put(param2, valeur2)
prp.depend(param2, fct2, lock2)  # optional

However, to this day addProperty does not return a reference toward the object. The following line is therefore NOT valid:

prp = interactionset(no).addProperty( ElementProperties(typeEl) )
doc/user/elements/general/start.txt · Last modified: 2016/03/30 15:23 (external edit)