5. General organization of calculations and definitions#

5.1. Construction of the global model#

The principle of implementing static substructuring in*Code_Aster* is that of a bottom-up approach:

a model having been defined, it is condensed (operator MACR_ELEM_STAT) on some of its nodes. We then obtain a macro-element which, functionally, is very similar to a new « bigger » finite element. This macro element can then be integrated into a higher-level model (operators DEFI_MAILLAGE and AFFE_MODELE). This new model can then be condensed in turn and so on without a prima facie limitation of the number of levels.

Definition:

the nodes on which a macroelement is condensed are called « **external* » (the others are « internal « ),

  • level: this is a concept useful for understanding command text; any level describes the structuring relationships between the various models and the various macroelements. For us, it’s an integer. The condensation operation increases the level of \(+1\): a model of level \(n\) gives by condensation a macro-element of level \(n+1\) which will be integrated into a model of level \(n+1\),

  • the MACR_ELEM_STAT operator is the only operator that allows you to create a macro-element in static substructuring,

  • operator DEFI_MAILLAGE is the only operator using macroelements in static substructure.

For our example:

  • MO_1 {line 22} is the lowest level model (-2),

  • S_1 {lines 45, 59} is the mid-level macro element (-1),

  • MA_123 and MO_123 {lines 68, 87} represent the mesh and the intermediate level model (-1),

  • S_123 {line 104} is the highest level macro element (0),

  • MAG0, MAG and MOG {lines 120, 125, 129} represent meshes and a higher-level model (0): the distinction between meshes MAG0 and MAG will be explained in [§6.6] and [§6.7].

The structuring of the top-level model MOG can be presented graphically by a tree, the distinction between macro-element and substructure being explained in the following paragraph.

_images/Object_1.svg

5.2. macroelement and substructure#

We call macroelement the result of the operator MACR_ELEM_STAT: it is a model condensed on its external nodes.

We call substructure a occurence of a macroelement in a model of the same level. A substructure is a macroelement placed in position in physical space. The position of a substructure is given by the coordinates of the nodes of the supermesh associated with it.

The same macro-element can give rise to several substructures by defining several positions: in our example, the macro-element S_1 generates 3 substructures S_1, S_2 and S_3 by appropriate rotations.

A substructure is in a sense a new « finite element ». The macroelement is the « type » of this element: a macroelement is assigned to a supermesh to form a substructure.

We call super-mesh, the geometric support of a substructure. It’s a named object included in a mesh. A supermesh, like a regular mesh, is just an ordered list of node names.

Like an ordinary finite element, a substructure has:

  • an « elementary » stiffness matrix (and/or mass, damping, etc.),

  • « elementary » loading vectors,

  • a support mesh (we will talk about a super-mesh),

  • knots with degrees of freedom.

Unlike an ordinary finite element, a substructure has several limitations:

  • the support mesh is not a simple type: TRIA3,…, HEXA20: some post-treatments are therefore not possible,

  • it has no element_type, no shape functions,…

  • the only calculation options available are RIGI_MECA, MASS_MECA, and CHAR_MECA,

  • the nodes can be LAGRANGE nodes resulting from the dualization of internal kinematic conditions.

Identification of substructures and macroelements:

Macro elements are concepts named by the user.

Substructures (such as ordinary finite elements) are identified by the names of the supermeshes that support them.

In our example:

  • S_1 and S_123 are the two macro elements defined by the user {lines 45 and 104},

  • S_1, S_2, S_3, S_123 are the names of the supermeshes (and therefore substructures) that the user gives when constructing meshes MA_123 and MAG0.

Note:

There is no possible confusion (by the program) between a substructure and a macro-element of the same name (here S_1 and S_123although this does not make it easy to read the command file!).

5.3. Descent into the substructures#

The bottom-up approach, which we have just detailed, makes it possible to build the global, or final, model (mog) on which the resolution is carried out:

  • CALC_MATR_ELEM

  • CALC_VECT_ELEM

  • ASSE_MATRICE

{lines 151-184}

*

  • RESOUDRE

This resolution results in the displacement field of the nodes of the global model. These knots are:

  • the nodes of the ordinary finite elements of the model (here the quadrilateral IJBA),

the**external* nodes of the model’s substructures: (here only one substructure: S_123).

To find the displacement field on the internal nodes of the substructures, you must then « descend » the substructure tree using the operator DEPL_INTERNE.

This operator calculates the displacement field on all the nodes of the substructure from the data of the displacement field on its external nodes.

For our example and for load case 1:

  • U1S_123

{line 193}

is the displacement on the substructure

S_123

  • U1S_1

{line 197}

is the displacement on the substructure

S_1

  • U1S_2

{line 199}

is the displacement on the substructure

S_2

  • U1S_3

{line 201}

is the displacement on the substructure

S_3

5.4. Post-treatments#

The usual post-treatments: calculation of deformations, stresses,… can only be done by ordinary finite elements, which alone know the concept of interpolation function.

It is therefore possible to calculate the stresses at a given point of the structure only with the model containing the ordinary finite element containing this point. Before that, it was necessary to calculate the travel field on this model:

Example:

  • to calculate the constraints on quadrilateral IJBA we will use the model: MOG and the displacements: U1

  • to calculate the constraints on polygon DCEF we will use the model: MO_1 and the displacements: U1S_2

Note:

You have to use CALC_CHAMP but to do so, you have to create an SD evol_elaswith the command CREA_RESU.