manual
manual
1)
Reference Manual
July 2024
2
Copyright Notice and Disclaimers
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
Proper acknowledgment should be given in publications resulting from the use
of these software.
3
4
Acknowledgments
We would like to thank all the code users through the years, in particular to María Castro, María
José Orjuela, Francisco González, Carlos Romero, and especially to Ángel Gabriel Vega, who is giving
momentum to the project and it is the author of the tutorials. Their experience have been very valuable
for debugging and developing the software. We would like to make a special mention to Luis Alberto
Padrón for pushing and supporting this open source enterprise from many angles.
This software has been developed with the support of research projects:
• PID2020-120102RB-I00, funded by the Agencial Estatal de Investigación of Spain,
MCIN/AEI/10.13039/501100011033.
5
6
Contents
1 Overview 9
1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.2 How to download . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.3 How to install the binaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.1 GNU/Linux *.deb installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.2 GNU/Linux *.sh installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.4 How to compile the source code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.5 How to use . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2 Input file 15
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 General sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.1 Section problem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.2 Section frequencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.2.3 Section settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.2.4 Section export . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.2.5 Section bem formulation over boundaries . . . . . . . . . . . . . . . . . . . . . 20
2.3 Low-level entities of the model (mesh – geometric entities) . . . . . . . . . . . . . . . . . . 23
2.3.1 Section nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.2 Section elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.3.3 Section parts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4 High-level entities of the model (physical entities) . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.1 Section materials . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.4.2 Section cross sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.4.3 Section regions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
2.4.4 Section fe subregions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4.5 Section boundaries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
2.4.6 Section be bodyloads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
2.5 Auxiliary entities of the model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.5.1 Internal points . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.5.2 Internal elements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.5.3 Groups . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.6 Model conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.6.1 Section symmetry planes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
2.6.2 Section conditions over be boundaries . . . . . . . . . . . . . . . . . . . . . . 44
2.6.3 Section conditions over fe elements . . . . . . . . . . . . . . . . . . . . . . . . 45
2.6.4 Section conditions over nodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
2.6.5 Section incident waves . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3 Output files 49
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.2 Nodal solutions file (*.nso) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.3 Element solutions file (*.eso) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
3.4 Gmsh results file (*.pos) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
7
8 CONTENTS
Overview
In this chapter, a brief overview of MultiFEBE download, install and usage is given. Since MultiFEBE
is open source (GPLv2 license), it can also be compiled by you, see Appendix A.
1.1 Introduction
MultiFEBE is a solver for performing linear elastic static and time harmonic analyses of continuum and
structural mechanics problems comprising multiple interacting regions. It is based on the Finite Element
Method (FEM) and the Boundary Element Method (BEM), which are combined in order to offer many
advanced features not found elsewhere. These distinctive features have been published in many scientific
papers, from which [1, 2, 3, 4, 5] can be highlighted. No doubt, this program is heir to boundary element
codes published by Professor Jose Domínguez [6].
Linear elastic solid materials are available for regions modeled by finite elements or boundary elements
in static and time harmonic analysis, whereas linear poroelastic (Biot’s theory) and inviscid fluid materials
are available only for regions modeled by boundary elements in time harmonic analysis (wave propagation
problems).
It has a full set of linear elastic finite elements:
• Solid (or continuum) finite elements:
– For two-dimensional plane strain / plane stress problems:
∗ 3 or 6 nodes triangular element.
∗ 4, 8 or 9 nodes quadrilateral element.
• Structural finite elements:
– 2D/3D bar element (2 nodes).
– 2D/3D beam elements (doubly symmetric cross-section):
∗ 2 and 3 nodes Euler-Bernoulli and Timoshenko straight element [7, 8].
∗ 2, 3 and 4 nodes curved element based on the degeneration from solid (Timoshenko theory)
[9].
– 3D shell elements (Reissner-Mindlin theory):
∗ 3 and 6 nodes triangular shell element based on the degeneration from solid (full/selec-
tive/reduced integration) [7].
∗ 4, 8 and 6 nodes quadrilateral shell element based on the degeneration from solid (full/s-
elective/reduced integration) [7].
∗ 3 and 6 nodes triangular MITC element (locking-free): MITC3 [10], MITC6a [10].
∗ 4, 8 and 9 nodes quadrilateral MITC element (locking-free): MITC4 [11], MITC8 [12],
MITC9 [13].
• Discrete finite elements:
– 2D/3D discrete translational and translational-rotational spring-dashpot 2 node elements.
– 2D/3D mass elements.
It also has a full set of boundary elements for linear elastic solids, poroelastic media and inviscid
fluids:
9
10 CHAPTER 1. OVERVIEW
$ chmod +x multifebe-x.x.x-Linux.sh
$ ./multifebe-x.x.x-Linux.sh
5. The program files are decompressed by default in the same directory as the installer. The executable
file is placed inside the subfolder bin. You may copy or move the binary multifebe to any folder
where you want to use it, and execute as ./multifebe ... or, if you have administrator privileges
in your system, you might move the binary multifebe to /usr/bin, or create a simbolic link, so
that it is available directly in the terminal as any other command.
For details about options and usage, see below section How to use 1.5.
$ multifebe --help
it will then print a brief help about how to run it and the available options:
$ multifebe --help
Usage:
multifebe [options]
Options:
-i, --input STRING Input file name [required]
-o, --output STRING Output files basename [default: input file name]
-m, --memory INTEGER Max. memory allowed (GB) [default: 0 (unlimited)]
-b, --verbose INTEGER Verbose level: 0-10 [default: 1]
-v, --version Program version
-h, --help This help
12 CHAPTER 1. OVERVIEW
Note that each option can start with one or two hyphens, followed by respectively the short or long
name of the option. In the previous case, we could request help from the program by writing either -h
or --help. Some options does not require a value like -h or -v, but other options require a string or a
number, which are written after each of them. Options are self-descriptive from the program help, but
more details are given in Table 1.1.
Option name
Short Long Argument Description
MultiFEBE uses OpenMP in order to take full advantage of multi-core shared-memory computers.
By default, the program uses all the available cores, but it is possible to control the number of cores used
by previously defining the environment variable OMP_NUM_THREADS. Imagine you would like to only use 4
cores, then in GNU/Linux you would have to execute:
$ export OMP_NUM_THREADS=4
$ set OMP_NUM_THREADS=4
Figure 1.2 shows a MultiFEBE usage flowchart. It operates mainly through plain text files. The
program reads the input file in order to define the case (type of analysis, geometry topology, mesh,
materials, boundary conditions, results to be calculated, etc). Results are written into a set of output
files which depends on the type of results requested in the input file.
Most of the user effort is usually spent in preparing the geometry, mesh and then post-processing
the results. In order to facilitate these tasks, we have included the possibility of reading and writing
Gmsh files. Gmsh is a powerful free and open-source pre- and post-processor. The only Gmsh file
format that MultiFEBE can read is MSH file format version 2.2, which is the default file format up to
Gmsh 3.0.6. Newer Gmsh versions save mesh files in newer mesh file formats by default. However, you
can also export meshes in older file format versions by doing File>Export>Format: Mesh - Gmsh MSH
(*.msh)>Format: Version 2 ASCII when using the GUI, or including the option -format msh2 when
using the command-line. This integration enables the user to perform, for example, extensive parametric
1.5. HOW TO USE 13
Figure 1.2: MultiFEBE usage flowchart. Orange blocks corresponds to MultiFEBE solver files and
processes. Blue blocks corresponds to Gmsh pre- and post-processor files and processes. MultiFEBE is
able to read Gmsh mesh files and write Gmsh postprocessing results files. Green blocks corresponds to
the possibility of generating the mesh in MultiFEBE native format from GiD and a *.bas template file.
studies with relatively little extra effort, and effective visualization of results. We have also created a
GiD *.bas template file which allows exporting the mesh file in the MultiFEBE native format (located in
the bin/ folder). We intend to improve the integration of MultiFEBE solver in GiD and others pre- and
post-processors in the near future. In the same vein as PILEDYN, we have also created some problem-
specific https://www.mathworks.com/MATLAB pre- and post-processors that will be available in our
research group webpage.
The proposed workflow to perform an analysis is:
1. Decide the modelling approach, which will lead to the required topology and geometry. We suggest
using Gmsh for creating the geometry, which allows defining the geometry parametrically through
simple .geo files.
2. Generate the mesh with appropriate element sizes. In Gmsh, this can be easily done by defining
element sizes all over the geometry using variables. Then you can set their value in order to generate
a mesh. Once you have your solver results, you may have to return to this step to generate additional
refined meshes in order to check results convergence.
3. Open your favourite plain text text editor, and write the case input file according to the required
data, as shown in Chapter 2. If you use Gmsh for generating the mesh file, then you will have to
define the path to it in section [settings].
14 CHAPTER 1. OVERVIEW
4. Run the solver. Copy the solver executable to the folder where the case input file is located. Then,
open a terminal in this folder and execute:
$ multifebe -i case.dat
where it has been assumed that the case input file is named case.dat. BEM models may require
a huge amount of memory. We recommend that if the model is relatively big, or you are running
the solver on a laptop, then you have to limit the available RAM for the program by including the
following option:
$ multifebe -i case.dat -m 4
which will stop the solver if the predicted required memory is greater that 4 GB (or any other
quantity smaller than the available memory in the computer). This will prevent the computer from
swapping and halting if such amount of memory is required.
5. Once the solver ends, the results are exported to one or more output files, see Chapter 3. If you
used a Gmsh mesh file (*.msh), Gmsh post-processing files *.pos will be generated. If that is
the case, you can visualize the results in the Gmsh GUI. Other text files containing node-by-node,
element-by-element, or other results can be generated (depending on how you set the case input
file). This text files can be easily processed by spreadsheet programs, MATLAB/Octave, GNU
utilities such as awk, etcetera. We recommend the latter, as it is particularly fast once you learn
how to use it. They can also be plotted through GNU/Linux utilities such as GNUPlot.
Chapter 2
Input file
2.1 Introduction
The input file is a plain text file which contains the case data. In the following, we will assume that
the name of the input file name is input.dat, but any other name and extension will also be valid. The
important fact is that the file must be a plain text file, and thus it must be edited as such in plain text
editors such as Notepad, Notepad++ or others in Windows (but not Word or LibreOffice!), and emacs,
gedit, vim or others in GNU/Linux environments.
The case data is divided into sections. Each section is a block of data related to an aspect of the case
or the solver settings. Each section begins with a line exclusively containing a header with the section
name between brackets, i.e. [section name], and it ends when all the required data has been introduced
or when another section header appears. It is important to note that its location within the file is not
relevant. The data required for a section is defined by one or more lines after the header line. Each section
has its own section format, which can be in the form of simple statements (keyword = values, entity
id: values), or a sequence of numbers and strings. Only the recognized sections are read. Therefore,
comments can be introduced outside the recognized ones (see example below). Recognized sections are
shown in Table 2.1. Some sections are required (mandatory), some sections are required depending on
the data introduced in other sections (dependant), and others are completely optional.
input.dat
[case description] <-- this is an unrecognized section used as a comment section
analysis of soil stresses around a 3x3 pile group
[problem]
n = 3D
type = mechanics
analysis = harmonic
[frequencies]
Hz
lin
100
0.01
10.
[symmetry planes]
plane_zx: symmetry
plane_yz: antisymmetry
...
All the identifiers of model entities (regions, boundaries, elements, nodes, etc) must be integers greater
than 0. Floating point numbers can be expressed as 125. (simple precision), 1.25e2 (simple precision)
or 1.25d2 (double precision). Complex numbers are expressed as (2.d3,1.d1).
15
16 CHAPTER 2. INPUT FILE
General sections
Model conditions
type mandatory laplace Laplace problem (unmaintained, it may not work properly)
mechanics Mechanics problem
[problem]
n = 2D
type = mechanics
subtype = plane_strain
analysis = static
...
• list - Frequencies are defined by a given list of frequencies. The list can be unordered.
• lin - Frequencies are defined by a given number of uniformly (linearly) distributed frequencies
between a minimum and a maximum.
• log - Frequencies are defined by a given number of logarithmically distributed frequencies between
a minimum and a maximum.
The third line defines the number of frequencies. If the frequencies are defined by a list, these are
defined in the fourth and the following lines (as much as the number of frequencies). If the frequencies
are defined by a lin or log distribution of frequencies, the fourth and fifth lines respectively contains
the minimum and maximum frequency. The general format of the section depending on how frequencies
are defined (list, lin or log) can be illustrated as:
18 CHAPTER 2. INPUT FILE
input.dat input.dat input.dat
... ... ...
In the following, we are going the show three example of each way of defining the frequencies. In the
first place, we show how to define an analysis at frequencies 9 Hz, 2 Hz, 5 Hz and 4 Hz. Secondly, we
show how to define an analysis at 10 frequencies linearly distributed between 10 and 100 rad/s, i.e. 10
rad/s, 20 rad/s, ..., 100 rad/s. Last, we show how to define an analysis at 4 frequencies logarithmically
distributed between 10 and 10000 Hz, i.e. 10 Hz, 100 Hz, 1000 Hz and 10000 Hz.
input.dat (example of list) input.dat (example of lin) input.dat (example of log)
... ... ...
Geometrical parameters
Auxiliary files
formats: native or Gmsh (MSH version 2.2). The native format is a very easy to manually generate, but
it is also the file format which GiD generates after using the template file multifebe.bas (see Appendix
C). The Gmsh mesh file format 2.2 is the default file format generated by Gmsh from Gmsh version 2.0.0
up until 3.0.6. Newer versions (Gmsh 4.0.0 onwards) generate by default a new file format version 4.
However, you can still export meshes in this older file format versions by doing File>Export>Format:
Mesh - Gmsh MSH (*.msh)>Format: Version 2 ASCII when using the GUI, or including the option
-format msh2 when using the command-line. You could also read from another file the frequencies, for
example, if you save some standard set of frequencies in a file you can use in several cases, e.g. one-third
octave middle frequencies for sound analysis.
Most of the times, you would only need to define the path to a mesh file and its format. For example,
a Gmsh mesh file located in the same directory as the input file input.dat:
input.dat
...
[settings]
mesh_file_mode = 2 "pilegroup.msh"
...
[export]
real_format = eng_simple
complex_notation = cartesian
...
BE boundaries and BE body loads kinematic and stress resultants output file
Integer Iw Iw.m
Decimal Fw.d
Exponential Ew.d Ew.dEe
Real
Scientific ESw.d ESw.dEe
Engineering ENw.d ENw.dEe
Singular BIE (SBIE) It is also called the displacement or pressure BIE, since this equation relates
the primary field variable (displacements in elasticity, pressure in acoustics, ...) at the collocation
point with the the primary and secondary (tractions in elasticity, fluxes, ...) field variables over the
boundaries and the body loads. This BIE can be collocated everywhere (the collocation point is
the location of the Dirac delta of the Green’s function). However, the nodal collocation (collocation
at the boundary element nodes) is the ideal since it leads to the best conditioning of the system.
Non-nodal collocation is also possible, but it should be used only where nodal collocation turns
problematic.
Hypersingular BIE (HBIE) It is also called the traction or flux BIE, since it relates the secondary
field variable with the the primary and secondary field variables over the boundaries and body
loads. This BIE can be collocated only where the discretization has C 1 displacement continuity.
Since MultiFEBE only considers C 0 continuous elements, this means that HBIE must have non-
nodal collocation (except at element interior nodes).
The non-nodal collocation strategy implemented here is the so-called Multiple Collocation Approach1
(MCA). When building the BIE associated with a given node, the MCA consists on building the equation
by adding up as many BIEs as the number of elements sharing the node, being each BIE collocated near
the node but shifted towards inside the element. For a given element, the local coordinates of the
collocation point (ξki , ηki ) contributing to the node k located at (ξk , ηk ) is controlled by the dimensionless
distance δ, which is a measure of the separation between the collocation point and the corresponding
node such that:
Line elements: ξki = (1 − δ) ξk , ξk ∈ [−1, 1] (2.1)
Quadrilateral elements: ξki = (1 − δ) ξk , ξk ∈ [−1, 1] (2.2)
ηki = (1 − δ) ηk , ηk ∈ [−1, 1] (2.3)
Triangular elements: ξki = (1 − δ) ξk + δ/3, ξk ∈ [0, 1] (2.4)
ηki = (1 − δ) ηk + δ/3, ηk ∈ [0, 1] , ξk + ηk ≤ 1 (2.5)
This way δ → 0 means that the collocation point is approaching the node, and δ → 1 means that the
collocation point is approaching the element’s centroid in local coordinates. Formally 0 < δ < 1, but in
practice it should be 0.01 < δ < 0.6. By default, we use is δ = 0.42 for linear elements, δ = 0.23 for
quadratic elements and δ = 0.14 for cubic elements.
The general format for this data section is:
general format of section [bem formulation over boundaries]
[bem formulation over boundaries]
boundary <boundary id>: <keyword: type of formulation> <values>
where the available formulations and their options are given in Table 2.6.
For instance, in a problem with six boundaries, where the collocation strategy in all boundaries must
be nodal, with the exception of boundary 6, where a non-nodal collocation strategy is prefered for all
the nodes along its boundaries, with a displacement towards inside each element of 10% the width of the
element, one should write:
1 J. Domínguez & M.P. Ariza. A direct traction BIE for three-dimensional crack problems. Engng Anal Bound Elem
2000;24:727–38.
2.3. LOW-LEVEL ENTITIES OF THE MODEL (MESH – GEOMETRIC ENTITIES) 23
Ordinary boundaries
SBIE with nodal collocation strategy for all nodes of the boundary. This is
unsafe since at doubled nodes, depending on the boundary conditions, it can
sbie none
lead to a singular linear system of equations. This option can not be used in
truncated boundaries, such as those for surfaces of unbounded regions.
This is the default formulation for ordinary boundaries. SBIE with
nodal collocation strategy for all nodes of the boundary except for the nodes
sbie_boundary_mca δ
at the boundary of the boundary, where MCA is used. The default value is
δ = 0.05.
SBIE with MCA for all nodes of the boundary. The default value is
sbie_mca δ
indicated by Note 1.
HBIE with MCA for all nodes. For using default values (see Note 1), the
hbie δ
user must write a value δ ≤ 0. Other values
Burton and Miller formulation (SBIE+i/kHBIE) for eliminating spurious
dual_bm_same δ frequencies when solving some exterior problems. SBIE and HBIE with
MCA (same δ) for all nodes. The default value is indicated by Note 1.
Burton and Miller formulation (SBIE+i/kHBIE) for eliminating spurious
frequencies when solving some exterior problems. SBIE with nodal
collocation for all nodes of the boundary except for the nodes at the
dual_bm_mixed δS δH
boundary of the boundary where MCA is used (δS ), and HBIE with MCA
(δH ) for all nodes. For SBIE, the default value δS = 0.05. For HBIE, the
default value δH is indicated by Note 1.
Crack-like boundaries
• General note 1: Formally 0 < δ < 1, but in practice it should be 0.01 < δ < 0.6.
• General note 2: If the user assigns a value δ ≤ 0, default values are considered.
• Note 1: By default, δ = 0.42 for linear elements, δ = 0.23 for quadratic elements, and δ = 0.14 for cubic elements.
Table 2.6: List of options and values in section bem formulation boundaries
input.dat
...
The program can read directly a mesh file from the Gmsh pre- and post-processor (MSH file format
version 2.2), by using the mesh_file_mode = 2 "filepath" option in [settings] to indicate the format
and path to the file. Each “physical” entity in their Gmsh jargon corresponds to our concept of “part”.
Let’s show an example of a mesh with 10 elements of the type line3 (quadratic line element), where
elements 1 to 5 belongs to part 1, and elements 6 to 10 belongs to part 2:
input.dat
...
[elements]
10
3 line3 1 1 1 3 2
2 line3 1 1 3 5 4
1 line3 1 1 5 7 6
4 line3 1 1 7 9 8
5 line3 1 1 9 11 10
6 line3 1 2 12 14 13
10 line3 1 2 14 16 15
2.4. HIGH-LEVEL ENTITIES OF THE MODEL (PHYSICAL ENTITIES) 25
8 line3 1 2 16 18 17
9 line3 1 2 18 20 19
7 line3 1 2 20 22 21
...
Note that given that we use an identifier for each element, the order is unimportant. The same happens
with other model entities such as nodes and parts.
where <part name> is a string which allows labelling the part for easy identification. However, this is
not used in the rest of the case input file.
The first line must contain the number of materials to be considered. Next, there must be as many
lines as the number of materials defined. Each line starts with the material identifier (a integer greater
than 0). Then, it follows with a string indicating the type of material to be defined in that line: fluid,
elastic_solid, or biot_poroelastic_medium. After defining the type of material, if follows several
pairs of string (property symbol) and real value (property value), which depends on the type of material.
If the type of material is fluid (which can be used only for time harmonic analysis), then it is
necessary to define two between the three following properties: bulk modulus K, density ρ and wave
propagation speed c. Optionally, you can define an articial hysteretic damping ratio ξ, which is zero by
default. See Table 2.7 for more details.
26 CHAPTER 2. INPUT FILE
Bulk modulus K K
Density ρ rho
√
Wave propagation speed c = K/ρ c
Artificial hysteretic damping ratio ξ xi
Table 2.7: Properties of an inviscid fluid (fluid). Only usable for time harmonic analysis. At least two
between K, ρ and c must be defined. ξ is optional (ξ = 0 by default).
If the type of material is elastic_solid, then it is necessary to define two of the five following
properties: Young’s modulus E, bulk modulus K, Lamé’s first parameter, λ, shear modulus µ and
Poisson’s ratio ν. If a time harmonic analysis is going to be performed, it is mandatory to define the
density. Optionally, you can define the hysteretic damping ratio ξ, which is zero by default. See Table
2.8 for more details.
Table 2.8: Properties of an elastic solid (elastic_solid). At least two between E, K, λ, µ and ν must
be defined. ρ is mandatory for time harmonic analysis. ξ is optional (ξ = 0 by default).
If the type of material is biot_poroelastic_medium, then it is necessary to define two of the five
following properties of the solid phase: Young’s modulus E, bulk modulus K, Lamé’s first parameter, λ,
shear modulus µ and Poisson’s ratio ν. It is mandatory to define the solid and fluid phases densities, as
well as the porosity, coupling parameters, additional density and dissipation constant. Optionally, you
can define the solid phase hysteretic damping ratio ξ, which is zero by default. See Table 2.9 for more
details.
Let’s show a very simple example where we have two materials: water (c = 1480 m/s, ρ = 1000
kg/m3 ) and soil modelled as an elastic solid (E = 60 MPa, ν = 0.4, ρ = 2000 kg/m3 , ξ = 5%). In such a
case, the section should be written as:
input.dat
...
[materials]
2
1 fluid c 1480. rho 1000.
2 elastic_solid E 60.d6 nu 0.4 rho 2000. xi 0.05
...
1. Material properties. It defines the constitutive law, density, and other intrinsic material proper-
ties. When needed by the structural element, these properties are taken from the material assigned
to the region where the element belongs.
2. Reference geometry. It defines the mid-line for beams, mid-surface for plates/shells, etcetera.
This information is provided by the defined mesh.
2.4. HIGH-LEVEL ENTITIES OF THE MODEL (PHYSICAL ENTITIES) 27
Solid phase
Table 2.9: Properties of a Biot’s poroelastic medium (biot_poroelastic_medium). At least two between
E, K, λ, µ and ν must be defined. ξ is optional (ξ = 0 by default). The other properties are mandatory.
3. Structural element type. It defines the physical behaviour of the element. A given line element
could be a simple bar element with only axial tension/compression stiffness, or a spring-dashpot or
a beam.
4. Cross section properties. It complements the information provided by the mesh, allowing a
full description of the structural element. The cross section properties could be given in a detailed
manner (cross section dimensions), or by providing effective geometrical properties (area, inertias,
...), or by providing effective mechanical properties (stiffnesses, masses, ...).
In this section, both the structural element type and the cross section properties are defined. Both aspects
are globally denoted as a “cross section”.
The first line of this data section defines the number of different cross sections to be defined. Next,
there must be as many lines as the number of cross sections defined. Each of these lines start with the
type of structural element to be defined, then the number of FE subregions where this type of structural
element is assigned, followed by the list of FE subregions. Next, depending on the type of structural
element, different cross section properties are defined. Therefore, the general format of this section is:
general format of section [cross sections]
[cross sections]
<# cross sections>
<type of structural element 1> <# FE subregions> <list of FE subregions ids.> <cross section properties>
<type of structural element 2> <# FE subregions> <list of FE subregions ids.> <cross section properties>
...
In the following subsections, the previous data format will be condensed to:
general format of section [cross sections]
[cross sections]
<# cross sections>
<type of structural element 1> <FE subregions> <cross section properties>
<type of structural element 2> <FE subregions> <cross section properties>
...
where <FE subregions> in reality denotes <# FE subregions> <list of FE subregions ids.>.
The list of available types of structural elements are:
• Discrete element:
– Discrete axial spring-dashpot (spring-dashpot).
28 CHAPTER 2. INPUT FILE
When considering a 3D analysis, most of the structural elements require orienting their cross section,
which leads to a particular cartesian local basis (local axes x′ y ′ z ′ ) where the relevant dimensions and the
internal stress resultants are defined. In the case of one-dimensional structural elements, such as discrete
general springs-dashpots or beams, the orientation of the y ′ axis is defined with the help of an auxiliary
′
reference vector yref , see Figure 2.1, where the final y ′ axis is located on the plane defined by yref ′
and
′ ′
the x axis. Note that the x axis is defined by the tangent direction of the element mid-line. In the case
of two-dimensional structural elements, i.e. plates and shells, the procedure is similar, see Figure 2.2, but
in this case the x′ axis is defined by using an auxiliary reference vector x′ref , being the final x′ axis on
the tangent plane defined by the z ′ axis (coincident with the normal vector at the point) and the plane
defined by x′ref and the z ′ axis.
This type of structural finite element is a conventional axial spring-dashpot element between two nodes,
and it is denoted as spring-dashpot in the data section. It is a particular case of distra element
type, and much more common. The data introduction is also simpler. Taking into account that <#
FE subregions> <list of FE subregions ids.> is here denoted as <FE subregions>, the syntax to
describe this type of elements is:
• In time harmonic analysis, the stiffness kx′ must be introduced as a complex number to take into
account a possible hysteretic damping, and cx′ is the viscous damping coefficient:
format of section [cross sections] for spring-dashpot elements
[cross sections]
...
spring-dashpot <FE subregions> <kx'> <cx'>
...
This type of structural finite element introduces a generalized translational spring-dashpot between two
nodes, and it is denoted as distra in the data section. It requires defining a 2-node line element. Each
element node has 2 or 3 translational degrees of freedom respectively for two- and three-dimensional
analyses, see Figure 2.3. For static analysis, stiffnesses in global or local axes are required. For time har-
monic analysis, it is required to use complex stiffnesses to introduce stiffnesses (real part) and hysteretic
damping (imaginary part), and also viscous damping coefficients.
Mechanical properties can be defined in local or global axes:
• Local axes. It allows to establish the stiffnesses and viscous damping coefficients in local axes,
i.e. axial spring-dashpot in x′ direction (kx′ , cx′ ) and lateral spring-dashpots in y ′ and z ′ directions
2.4. HIGH-LEVEL ENTITIES OF THE MODEL (PHYSICAL ENTITIES) 29
′
yref (free vector) y ′ , e′2 = e′3 × e′1
node j
e′ × yref
′ z ′ , e′3
Cross-section y ′ z ′ plane z, ′
e′3 = 1′ ′ |
|e1 × yref
defined by unit normal e′1
z, e3 z, e3 z, e3
y, e2 y, e2 y, e2
x, e1 x, e1 x, e1
Figure 2.1: Steps for constructing the local cartesian basis x′ y ′ z ′ of one-dimensional structural elements
from a y ′ axis reference vector yref
′
ξ2
z ′ , e′3 z ′ , e′3 z ′ , e′3
ξ1 y′ , y ′ , e′2
e′3 × x′ref
e′2 =
|e′3 × x′ref | x′ , e′1 = e′2 × e′3
z z z
y y y
x x x
(a) e′3 from element (b) e′2 from e′3 × x′ref (c) e′1 from e′2 × e′3
Figure 2.2: Steps for constructing the local cartesian basis x′ y ′ z ′ of two-dimensional structural elements
from a x′ axis reference vector x′ref
30 CHAPTER 2. INPUT FILE
(j)
(j) uz (j)
uy uy
y′ ′ (j)
′ (j) x ux
y′ x ux
node j z′
′(e)
′(e) ,C
node i
)
K
e
,C ′(
e)
K ′(
′
yref : y ′ axis reference vector
(i)
y uy z
node i
(i)
ux y x′ axis points from node i to node j
x x y ′ is on the x′ –yref
′
plane.
Figure 2.3: Degrees of freedom and local axis definition of discrete translational springs/dashpots (distra)
(ky′ , cy′ , kz′ , cz′ ). In two-dimensional analysis, the local stiffness and damping coefficient matrices
are:
kx′ 0 −kx′ 0 cx′ 0 −cx′ 0
0 k ′ 0 −k ′ 0 c ′ 0 −c y ′
K′ = , C′ =
y y y
(2.6)
−kx′ 0 kx′ 0 −cx′ 0 cx′ 0
0 −ky′ 0 ky ′ 0 −cy′ 0 cy ′
In three-dimensional analysis:
kx′ 0 0 −kx′ 0 0 cx ′ 0 0 −cx′ 0 0
0 ky ′ 0 0 −ky′ 0 0 cy′ 0 0 −cy′ 0
0 0 kz ′ 0 0 −kz′ 0 0 cz ′ 0 0 −cz′
K =
′
,
C =
′
−kx′ 0 0 kx′ 0 0 −cx′ 0 0 cx ′ 0 0
0 −ky′ 0 0 ky ′ 0 0 −cy′ 0 0 cy′ 0
0 0 −kz′ 0 0 kz′ 0 0 −cz′ 0 0 cz ′
(2.7)
′
In this latter case, in order to uniquely define the local axis, a reference vector yref is required for
′
establishing the local y axis, see Figures 2.2 and 2.3 for more details.
• Global axes. It allows to establish the stiffnesses and viscous damping coeficients directly in global
axes, i.e. springs and dashpots in x, y and z directions: kx , cx , ky , cy , kz and, cz . Therefore, the
relative position of element nodes are unimportant.
Taking into account that <# FE subregions> <list of FE subregions ids.> is here denoted as
<FE subregions>, the syntax to describe this type of elements is:
• In a 2D static analysis, this type of elements can be introduced in local or in global axes as follows:
format of section [cross sections] for distra elements
[cross sections]
...
distra <FE subregions> local <kx'> <ky'>
distra <FE subregions> global <kx> <ky>
...
′
• In a 3D static analysis, this type of elements can be introduced in local (requires yref ) or in global
axes as follows:
format of section [cross sections] for distra elements
[cross sections]
...
2.4. HIGH-LEVEL ENTITIES OF THE MODEL (PHYSICAL ENTITIES) 31
distra <FE subregions> local <kx'> <ky'> <kz'> <y'refx> <y'refy> <y'refz>
distra <FE subregions> global <kx> <ky> <kz>
...
• In a 2D time harmonic analysis, this type of elements can be introduced in local or in global axes
as follows (note that kx′ and ky′ must be complex numbers):
format of section [cross sections] for distra elements
[cross sections]
...
distra <FE subregions> local <kx'> <ky'> <cx'> <cy'>
distra <FE subregions> global <kx> <ky> <cx> <cy>
...
• In a 3D time harmonic analysis, this type of elements elements can be introduced in local (requires
′
yref ) or in global axes as follows (note that kx′ , ky′ and kz′ must be complex numbers):
format of section [cross sections] for distra elements
[cross sections]
...
distra <FE subregions> local <kx'> <ky'> <kz'> <cx'> <cy'> <cz'> <y'refx> <y'refy> <y'refz>
distra <FE subregions> global <kx> <ky> <kz> <cx> <cy> <cz>
...
K
,C ′(
e)
K ′(
′
yref : y ′ axis reference vector
(i)
y uy z
node i ux
(i)
y x′ axis points from node i to node j
y ′ is on the x′ –yref
′
(i)
x θz x plane.
Figure 2.4: Degrees of freedom and local axis definition of discrete translational/rotational springs/dash-
pots (disrotra)
• Local axes. It allows to establish the stiffnesses and viscous damping coefficients in local axes:
In two-dimensional analysis, the local stiffness and damping coefficient matrices are:
kx′ 0 0 −kx′ 0 0
0 −ky′
ky′ ky′ rz′ 0 ky′ rz′
ky2′ rz′
0 ky′ rz krz′ 0 −ky′ rz 2 − krz′
ky ′
K′ =
(2.8)
−kx′ 0 0 kx′ 0 0
0 −ky′ −ky′ rz′ 0 ky′ −ky′ rz′
2
ky′ rz′
0 ky′ rz′ 2 − krz′ 0 −ky′ rz′ krz′
ky ′
cx′ 0 0 −cx′ 0 0
0 −cy′
cy′ cy′ rz′ 0 cy′ rz′
c2y′ rz′
0 cy′ rz crz′ 0 −cy′ rz 2 − crz′
cy ′
C =
′
(2.9)
−cx′ 0 0 cx′ 0 0
0 −cy′ −cy′ rz′ 0 cy′ −cy′ rz′
c2y′ rz′
0 cy′ rz′ 2 − crz′ 0 −cy′ rz′ crz′
cy ′
In three-dimensional analysis:
k x′ 0 0 0 0 0 −kx′ 0 0 0 0 0
ky′ 0 0 0 ky′ rz′ 0 −ky′ 0 0 0 ky′ rz′
kz′ 0 kz′ ry′ 0 0 0 −kz′ 0 −kz′ ry′ 0
−krx′
krx′ 0 0 0 0 0 0 0
kz2′ ry′
sym kry′ 0 0 0 kz′ ry′ 0 2 − kry′ 0
kz ′
ky2′ rz′
′ −ky′ rz′ − krz′
K = krz′ 0 0 0 0 2
ky ′
kx′ 0 0 0 0 0
ky ′ 0 0 0 ky′ rz′
kz′ 0 kz′ ry′ 0
krx′ 0 0
sym sym kry′ 0
krz′
(2.10)
An similarly for C′ .
′
In order to uniquely define the local axis, for three-dimensional analysis a reference vector yref is
′
required for establishing the local y axis, see Figures 2.2 and 2.3 for more details.
• Global axes. It allows to establish the stiffnesses and viscous damping coeficients directly in global
axes, and thus the relative position of element nodes are unimportant.
Taking into account that <# FE subregions> <list of FE subregions ids.> is here denoted as
<FE subregions>, the syntax to describe this type of elements is:
• In a 2D static analysis, this type of elements can be introduced in local or in global axes as follows:
format of section [cross sections] for disrotra elements
[cross sections]
...
distra <FE subregions> local <kx'> <ky'> <krz'> <ky'rz'>
distra <FE subregions> global <kx> <ky> <krz> <kyrz>
...
2.4. HIGH-LEVEL ENTITIES OF THE MODEL (PHYSICAL ENTITIES) 33
′
• In a 3D static analysis, this type of elements can be introduced in local (requires yref ) or in global
axes as follows:
format of section [cross sections] for disrotra elements
[cross sections]
...
distra <FE subregions> local <kx'> <ky'> <kz'> <krx'> <kry'> <krz'> <ky'rz'> <kz'ry'>
(continuation of previous line) <y'refx> <y'refy> <y'refz>
distra <FE subregions> global <kx> <ky> <kz> <krx> <kry> <krz> <kyrz> <kzry>
...
• In a 2D time harmonic analysis, this type of elements can be introduced in local or in global axes
as follows (note that all stiffnesses k□ must be complex numbers):
format of section [cross sections] for disrotra elements
[cross sections]
...
distra <FE subregions> local <kx'> <ky'> <krz'> <ky'rz'> <cx'> <cy'> <crz'> <cy'rz'>
distra <FE subregions> global <kx> <ky> <krz> <kyrz> <cx> <cy> <crz> <cyrz>
...
• In a 3D time harmonic analysis, this type of elements elements can be introduced in local (requires
x′ref ) or in global axes as follows (note that all stiffnesses k□ must be complex numbers):
format of section [cross sections] for disrotra elements
[cross sections]
...
distra <FE subregions> local <kx'> <ky'> <kz'> <krx'> <kry'> <krz'> <ky'rz'> <kz'ry'>
(continuation of previous line) <cx'> <cy'> <cz'> <crx'> <cry'> <crz'> <cy'rz'> <cz'ry'>
(continuation of previous line) <y'refx> <y'refy> <y'refz>
distra <FE subregions> global <kx> <ky> <kz> <krx> <kry> <krz> <kyrz> <kzry>
(continuation of previous line) <cx> <cy> <cz> <crx> <cry> <crz> <cyrz> <czry>
...
where M(e) is the generalized mass matrix, which can be divided into three matrices:
(e)
∫ M 0 0
(e)
M0 = I ρ dΩ = 0 M (e) 0 (2.12)
Ω
0 0 M (e)
(e) (e)
∫ 0 r3 −r2 0 Bxy −Bxz
(e) (e)
M1 = ρ −r3 0 r1 dΩ = −Bxy
(e)
0 Byz (2.13)
(e) (e)
Ω
r2 −r1 0 Bxz −Byz 0
(e) (e) (e)
∫ 2 r 2
+ r 2
−r r −r r J −J −J
3 1 2 1 3
xx xy xz
(e) (e)
M2 = ρ −r2 r1 r12 + r32 −r2 r3 dΩ = −Jxy (e) (e)
Jyy −Jyz (2.14)
(e) (e) (e)
Ω
−r3 r1 −r3 r2 r12 + r22 −Jxz −Jyz Jzz
(i)
where Ω is the domain of the body e, ρ is its the density distribution, and rj = xj − xj is the position
vector of each body point with respect to the reduction point/node i. M0 is the translational inertia
34 CHAPTER 2. INPUT FILE
(zero moment of mass), M1 represents the inertia forces and moments due to the mass imbalance (first
moments of mass), and M2 represents the rotational inertia (second moments of mass). If the node i
(e)
coincides with the center of mass of the body, then M1 is a zero matrix. If additionally the body has
(e)
three symmetry planes or if its principal axes coincides with the global axes, then M2 is a diagonal
iωt
matrix. For time harmonic analyses with time factor e , the generalized displacements acceleration
becomes:
(e)
Finertial = −M(e) · ä(i) = ω 2 M(e) · a(i) (2.15)
In the data input, each mass matrix term Mjk have to be defined. In 2D analysis, the mass matrix is
a 3 × 3 matrix because of the degrees of freedom involved:
(i)
M11 M12 M13 ux
(e)
Finertial = ω 2 M(e) · a(i) = ω 2 M21 M22 M23 · (i)
uy (2.16)
(i)
M31 M32 M33 θz
In order to simplify the data introduction, when a balanced condition can be assumed only the Mkk
non-zero entries have to be defined. Otherwise, a general nonbalanced condition requires defining all
matrix entries. Therefore, the data introduction can be summarized as follows:
• In a 2D analysis, you can introduce only the 3 non-zero diagonal terms for a balanced mass
condition, or the full 3 × 3 matrix for a general unbalanced condition:
format of section [cross sections] for pmass elements
[cross sections]
...
pmass <FE subregions> unbalanced <M11> <M21> <M31> <M21> <M22> <M23> <M13> <M23> <M33>
pmass <FE subregions> balanced <M11> <M22> <M33>
...
• In a 3D analysis, you can introduce only the 6 non-zero diagonal terms for a balanced mass
condition, or the full 6 × 6 matrix for a general unbalanced condition:
format of section [cross sections] for pmass elements
[cross sections]
...
pmass <FE subregions> unbalanced <M11> <M21> <M31> <M41> <M51> <M61> <M12> <M22> ... <M66>
pmass <FE subregions> balanced <M11> <M22> <M33> <M44> <M55> <M66>
...
(j)
uy
(j)
node j ux (j)
uz (j)
uy
x′ node j (j) (e)
ux
(i)
uz (i) x′ Nx′
uy
node i ux
(i) x′
(i)
uy
(e)
node i (i)
ux Nx′
y z
y
x x
The formulation is based on locking-free Timoshenko beam finite element of Friedman & Kostmatka
[8], and Euler-Bernoulli assumptions are simply obtained by nullifying the transverse shear strain factor
(ϕ = 0). The element is built by superposition of axial, torsional and bending behaviour. Line elements
of 2 or 3 nodes can be used in the mesh. For time harmonic analysis, a consistent mass matrix including
rotational inertia is used, and its density is taken from the material defined for the corresponding fe
subregion and region.
A symmetric cross section is assumed, and the required cross section parameters are:
• Area: A.
• Shear correction factors: κx′ , κy′ , κz′ . They are used to calculate the effective shear stiffnesses by
correcting the cross section parameters: κx′ Ix′ (torsional constant), κy′ A (y ′ transverse shear area),
κz′ A (z ′ transverse shear area).
In two-dimensional analysis, each node has 3 DOFs (ux , uy , θz ), whereas in three-dimensional analysis
each node has 6 DOFs (ux , uy , uz , θx , θy , and θz ), see Figure 2.6.
The data introduction can be summarized as follows:
• In a 2D analysis under plane strain, a beam can be used to model an infinitely long (hz′ = 1)
wall/plate/shell of thickness hy′ , or an equivalent structural system. It is required the cross section
area A (usual application requires A = hy′ · 1), the inertia Iz′ (usual application requires Iz′ =
1 · h3y′ /12), and the shear correction factor κy′ (usual application requires κy′ = 5/6):
36 CHAPTER 2. INPUT FILE
Figure 2.6: Degrees of freedom and local axis definition of straight beam finite elements (strbeam).
Element with 2 node shown.
• In a 3D analysis, you can introduce a generic cross section, or a pre-defined cross section shape
′
via its dimensions. The reference vector yref for defining the y ′ axis is required (see Figure 2.1 for
more details). Therefore, it can be introduced as follows:
format of section [cross sections] for strbeam elements
[cross sections]
...
strbeam <FE subregions> generic <A> <Ix'> <Iy'> <Iz'> <kax'> <kay'> <kaz'> <y'refx> <y'refy> <y'refz>
strbeam <FE subregions> circle <diameter> <y'refx> <y'refy> <y'refz>
strbeam <FE subregions> hollow_circle <outer diam> <inner diam> <y'refx> <y'refy> <y'refz>
strbeam <FE subregions> rectangle <width y'> <height z'> <y'refx> <y'refy> <y'refz>
...
For stress resultants definition, see Figure 2.8 and section about degbeam.
2.4.2.7 Beam finite element obtained from the degeneration of the solid (degbeam)
This type of structural finite element is a beam finite element obtained from the degeneration of the
solid via Timoshenko kinematic assumption (plane cross section after deformation), and it is denoted as
degbeam in the data section. A rectangular cross section of hy′ × hz′ is assumed. It requires using a 2, 3
or 4 node line element in the mesh. In order to avoid locking, a selective integration is used by default,
but it can be changed in element options data section. For time harmonic analysis, a consistent mass
matrix is used, and its density is taken from the material defined for the corresponding fe subregion
and region.
Similarly to strbeam, in two-dimensional analysis each node has 3 DOFs (ux , uy , θz ), and in three-
dimensional analysis each node has 6 DOFs (ux , uy , uz , θx , θy , and θz ), see Figure 2.7.
The data introduction can be summarized as follows:
• In a 2D analysis, a plain strain condition is assumed (width is unitary), being the x′ and y ′ axes
contained in the plane and only the cross section height hy′ is required:
format of section [cross sections] for degbeam elements
[cross sections]
...
degbeam <FE subregions> <hy'>
...
• In a 3D analysis, the cross section dimensions hy′ and hz′ are required together with the reference
′
vector yref for the y ′ axis (see Figure 2.1 for more details):
2.4. HIGH-LEVEL ENTITIES OF THE MODEL (PHYSICAL ENTITIES) 37
z′
(2)
uy
(2) hz′ y′
θz (2)
ux hy′
y ′ x′
(3) z′ y′
(3)
uy x′
θz (3)
ux
z′
hy′ ′
yref : y ′ axis reference vector
(1)
y uy z
(1)
ux y x′ axis points from node i to node j
y ′ is on the x′ –yref
′
(1)
x θz x plane.
Figure 2.7: Degrees of freedom and local axis definition of beam finite elements degenerated from solid
(degbeam). Element with 3 node shown.
2.4.2.8 Shell finite element obtained from the degeneration of the solid (degshell)
This type of structural finite element is a shell finite element obtained from the degeneration of the
solid via Reissner-Mindlin kinematic assumption, and it is denoted as degshell in the data section. It
requires using a triangular element (3 or 6 nodes) or a quadrilateral element (4, 8 or 9 nodes) in the
mesh. By default, the locking-free MITC family of elements of Bathe and co-workers [11, 12, 13, 10] with
full integration is used: MITC3, MITC4, MITC6a, MITC8*, MITC9.
(i) (i) (i)
Each element node i has 3 translational DOF (ux , uy , uz ), and 2 local rotational DOFs (α(i)
(i) (i) (i)
and β (i) local rotations related to shell bending) or 3 global rotational DOFs (θx , θy and θz global
rotations). This shell model does not have rotational stiffness in the normal direction, the so called
“drilling” stiffness, thus an artificial stiffness is added when using 6 DOF [9] in order to avoid any
singularity. There are three situations where 6 DOFs are mandatory:
1. When imposing certain boundary conditions (for example symmetry conditions).
2. Along edges or joints between two shells with incompatible orientations.
3. Along joints between more than two shells, at beam-shell joints, and similar singular joints.
Therefore, in practical problems most element nodes can be 5 DOFs. Although we could have implemented
only 6 DOFs element nodes (more homogeneous treatment), we have decided to reduce as much as possible
the number of DOF since we do not use a sparse solver (it is not appropriate for boundary element matrices
which are dense). Internally, an automatic procedure for selecting 5 DOFs or 6 DOFs is implemented
based on the conditions stated above. For time harmonic analysis, a consistent mass matrix is used, and
its density is taken from the material defined for the corresponding fe subregion and region.
38 CHAPTER 2. INPUT FILE
y′
′
z x′ y′
z′
x′
local cartesian axes
z
y curved beam Infinitesimal beam segment
x
global cartesian axes
Vy ′
y′ y′ y′
Nx ′ z′ Nx′ z′ z′
Vz ′ Vz ′
x′ x′ x′
Vy′
Tx′ y′ Tx′ y′ y′
z′ z′ z′
x′ x′ x′
My ′ My ′ Mz ′ Mz ′
Figure 2.8: Beam stress resultants: Nx′ , Vy′ , Vz′ , Tx′ , My′ , Mz′
2.4. HIGH-LEVEL ENTITIES OF THE MODEL (PHYSICAL ENTITIES) 39
When defining degshell FE subregions, the data format of the cross section definition only requires
the shell thickness and the x′ref reference vector for establising the x′ local axis (see Figure 2.2 for more
details):
format of section [cross sections] for degshell elements
[cross sections]
...
degshell <FE subregions> <thickness> <x'ref x> <x'ref y> <x'ref z>
...
• BEM (BE region). The region is treated by the BEM. Its discretization is defined by its boundary
∂Ω, which in general is built using a set of boundaries, which in turn is associated with mesh parts
and hence with boundary elements.
• FEM (FE region). The region is treated by the FEM. Its discretization is defined by a set of FE
subregions, which in turn is associated with parts and hence with finite elements. FE region can
only be made of elastic solid materials, i.e. finite elements for fluid or poroelastic medium are not
availabe.
The interaction (coupling) between BE regions is done through their shared boundaries, which must have
opposite orientation for each region, see Figure 2.11. The interaction between FE regions is done through
their shared nodes as usual. The interaction between BE boundaries and FE regions is done through
the BE boundaries and the boundary of the FE elements that shares the same position. The interaction
between BE and FE elements is automatically detected.
The format of this section is explained in the following. The first line indicates the number of regions.
Then, for each region there must be a block of data consisting of several lines of data. The first one is the
region identifier and the region class (discretization method: “fe” or “be”). If the region is a BE region,
then the second line indicates the number of boundaries and a list of boundaries (with their orientation
signs). If the region is a FE region, then the second line indicates the number of FE subregions and a
list of fe subregions. The third line defines the material. Then, only if the region is a BE region, the
fourth line defines the number and a list of BE body loads. Also, only if the region is a BE region and
the analysis is time harmonic, the fifth line defines the number and a list of incident fields. The general
format of the section is:
general format of section [regions]
[regions]
<n = number of regions>
z′
n
x′ y′
local cartesian axes
z
y
x
global cartesian axes
Nx′ Vx ′
Mx′
My ′
Ny ′ z′ z′ z′
x′ y′ x′ y′ x′ y′
Ny′
My ′
Nx′ M x′ Vx′
Nx′ y′ M x′ y ′
z′ M x′ y ′ z′ Vy′ z′
Nx′ y′ N x′ y ′
x′ y′ x′ y′ M x′ y ′ x′ y′
Vy ′
Nx′ y′
Mx′ y′
Figure 2.9: Shell stress resultants: Nx′ , Ny′ , Nx′ y′ , Mx′ , My′ , Mx′ y′ , Vx′ , Vy′
2.4. HIGH-LEVEL ENTITIES OF THE MODEL (PHYSICAL ENTITIES) 41
...
where the last two zeros at the end of the each line are mandatory, and they are going to be used in the
future for additional features.
∂Ω = {. . . , Γj , . . .} (2.20)
whose orientation must be outwards from the BE region. A minus sign before Γj can be used to indicate
the reversion of the orientation of Γj in order to get a compatible ∂Ω.
There are two main classes of boundaries:
• Ordinary. An ordinary boundary is a boundary in the classical sense. It can be connected with
one or two BE regions. In both cases, the boundary can be connected with FE elements.
Ω1
Ω1
n n ∂Ω1 = {. . . , −Γ, . . .} −t −Γ
t Γ t Γ −n
n
∂Ω2 = {. . . , Γ, . . .} t Γ
Ω Ω2
Ω2
Figure 2.10: Ordinary Figure 2.11: Ordinary boundary connected with two regions. Right:
boundary connected with exploded view.
one region
• Crack-like. A special boundary that lies inside a BE region and is composed by two crack-like
sub-boundaries (Γ+ and Γ− ) of opposite orientations. Thus, a crack-like boundary can be connected
only with one BE region. Generally speaking, it is the condensed geometric description of a null
thickness inclusion or void. Its orientation defines the orientation of the positive sub-boundary Γ+ ,
i.e. it defines which face is Γ+ and which face is Γ− .
42 CHAPTER 2. INPUT FILE
n t− = −t Γ−
t Γ n− = −n
w→0
n+ = n
t+ = t Γ+
Ω Ω
Each boundary is build up with unique boundary elements and nodes, which are defined by a “part”
of the mesh. Thus, all boundaries must be connected with one and only one mesh part. The orientation
of all boundary elements in that part must be the same, i.e. be compatible, which defines the orientation
of the boundary.
The first line indicates the number of boundaries. Then, one line per boundary indicating the bound-
ary identifier, the identifier of the part that discretize it, and finally the boundary class (ordinary or
crack-like). The general format of the section is:
general format of section [boundaries]
[boundaries]
<n = number of boundaries>
<boundary 1 identifier> <part identifier> <boundary class: ordinary or crack-like>
<boundary 2 identifier> <part identifier> <boundary class: ordinary or crack-like>
...
<boundary n identifier> <part identifier> <boundary class: ordinary or crack-like>
Next, it is shown an example with 4 boundaries, where boundary 1 is the part 1 of the mesh and is an
ordinary boundary, boundary 3 is the part 6 of the mesh and is an ordinary boundary, boundary 4 is
the part 2 of the mesh and is a crack-like boundary, and boundary 2 is the part 3 of the mesh and is an
ordinary boundary:
input.dat
...
[boundaries]
4
1 1 ordinary
3 6 ordinary
4 2 crack-like
2 3 ordinary
...
It is important to highlight that, in case of adjacent boundaries with different boundary conditions
or with geometries such that a discontinuity in tractions will arrive, it is necessary to double (duplicate)
the nodes in the boundaries of such BEM boundaries. A non-nodal collocation strategy is followed by
default in all these boundary nodes.
where the last two zeros at the end of the each line are mandatory, and they are going to be used in the
future for additional features.
• From the nodes defined in a mesh (see 2.2.3 for details about mesh file format):
general format of section [internal points from mesh]
[internal points from mesh]
mesh_file = <mesh file format> <path to mesh files>
region_association : <# selected mesh parts>
<selected mesh part id> <region id>
...
The program does not check if each internal point is indeed inside the specified region, so the user is
responsible of the coherence between these data.
2.5.3 Groups
To be documented.
For example, if the plane with normal n = e1 = (1, 0, 0) (plane yz) is a symmetry plane, i.e. fields at
(x1 , x2 , x3 ) are symmetric to fields at (−x1 , x2 , x3 ), then:
44 CHAPTER 2. INPUT FILE
0 displacement U uk = U
1 traction T tk = T
global
4 infinitesimal rotation field center c, axis a, angle θ uk = θ [a × (x − c)] · ek
10 normal pressure P tk = P nk
2 displacement U u · lk = U
local
3 traction T t · lk = T
0 displacement U+ u+
k =U
+
Γ+
1 traction T+ t+
k =T
+
0 displacement U− u−
k =U
−
Γ−
1 traction T− t−
k =T
−
input.dat
...
[symmetry planes]
plane_n1: symmetry
...
where note that for two-dimensional problems, the z lines must be removed. An example of a two-
dimensional problem with two boundaries with identifiers 1 and 3, being the first an ordinary boundary
with null displacements and the second a crack-like boundary with traction-free faces:
2.6. MODEL CONDITIONS 45
input.dat
...
...
...
Note that if the analysis is time harmonic, the values of the boundary conditions must be introduced as
complex numbers, e.g.(0.,0.).
For a two-dimensional problem, example of a clamped beam FE node with identifier 67, and a pin
beam FE node with identifier 41:
input.dat
...
y z
incidence direction
incidence direction P
P
θ y
SH
θ x φ
SV
x
SV
2D 3D
The incident waves can be defined in terms of displacements (unitary displacements), in terms of
stresses (unitary stresses) or in terms of the potentials (unitary potentials). The general format for the
section is:
general format of section [incident waves]
[incident waves]
<number of incident waves>
...
[incident waves]
1
1
plane
full-space
0 1. 0. 0. 90.
0. 0. 0. 0.
viscoelastic p
...
[incident waves]
1
1
plane
half-space 2 0. 1
0 1. 0. 0. 90.
2.6. MODEL CONDITIONS 47
0. 0. 0. 0.
viscoelastic sv
...
48 CHAPTER 2. INPUT FILE
Chapter 3
Output files
3.1 Introduction
Output files are written according to the type of analysis and model, as well as the input file export
section. By default the path and name of the output files is equal to the input file but with an additional
extension. The path and name can be changed when calling the solver from the terminal as explained
in 1.5. There are three main native output files with the following additional extensions: nodal solutions
(*.nso), element solutions (*.eso) and stress resultant solutions (*.tot). The specific file format is
different for static and time harmonic analysis. There is one Gmsh output file (*.pos) which contains
the case mesh and results (MSH file format version 2.2).
$1 integer Analysis step index. For linear elastic static analysis it is always 0. For
time harmonic analysis it is the frequency index. In future releases,
it will receive the natural frequency index (for modal analysis), or the
time step index (for transient analysis), or the loading step index (for
non-linear static analysis).
$2 float Analysis step value. For linear elastic static analysis it is always 0.0.
For time harmonic analysis it is the frequency value (in Hz or rad/s
depending on the units used in the frequencies section of the input file).
In future releases, it will receive the natural frequency value (for modal
analysis), or the time step value (for transient analysis), or the loading
step value (for non-linear static analysis).
$3 integer Identifier of the region to which the node result belongs. In the case of
finite element nodes, this has no significance since results does not de-
pend on the region. However, in the case of boundary elements belonging
to two regions (interface boundary elements) this allows selecting which
result is required.
$4 integer Region class: 1 (BE region) or 2 (FE region).
$5 integer Region type: 1 (inviscid fluid) or 2 (elastic solid) or 3 (poroelastic
medium).
49
50 CHAPTER 3. OUTPUT FILES
From column $10 onwards, the meaning of each column differs depending on the problem dimension
(2D or 3D), on the type of analysis (static or time harmonic), on the region class (BE or FE), on the
region type (inviscid fluid, elastic solid, poroelastic medium), and on the number of DOF (if a FE region).
For 2D problems in a static analysis (all regions are only of the elastic solid type):
BE region node
$12,$13 float Node displacements (u1 , u2 ).
$14,$15 float Node tractions (t1 , t2 ).
For 3D problems in a static analysis (all regions are only of the elastic solid type):
BE region node
$13-$15 float Node displacements (u1 , u2 , u3 ).
$16-$18 float Node tractions (t1 , t2 , t3 ).
FE region node with 5 DOFs (shell element nodes with local rotations)
$13-$17 float Node displacements/local rotations (u1 , u2 , u3 , α, β).
$18-$22 float Node forces/local moments (f1 , f2 , f3 , mα , mβ ).
3.2. NODAL SOLUTIONS FILE (*.NSO) 51
For 2D problems in a time harmonic analysis, where each node variable is written by two consecu-
tive columns containing its real and imaginary parts (if complex_notation = cartesian in [export]
section) or absolute value and argument (if complex_notation = polar in [export] section):
For 3D problems in a time harmonic analysis, where as in the 2D case each node variable is written by
two consecutive columns containing its real and imaginary parts (if complex_notation = cartesian in
52 CHAPTER 3. OUTPUT FILES
[export] section) or absolute value and argument (if complex_notation = polar in [export] section):
FE region node (only of elastic solid type) with 5 DOFs (shell element nodes with local rotations)
$13-$22 float Node displacements/local rotations (u1 , u2 , u3 , α, β).
$23-$32 float Node forces/local moments (f1 , f2 , f3 , mα , mβ ).
comment line in GNU/Linux environments), describing the file and the meaning of the main data columns.
The first 13 columns are always present, and indicates the following:
$1 integer Analysis step index. For linear elastic static analysis it is always 0. For
time harmonic analysis it is the frequency index. In future releases,
it will receive the natural frequency index (for modal analysis), or the
time step index (for transient analysis), or the loading step index (for
non-linear static analysis).
$2 float Analysis step value. For linear elastic static analysis it is always 0.0.
For time harmonic analysis it is the frequency value (in Hz or rad/s
depending on the units used in the frequencies section of the input file).
In future releases, it will receive the natural frequency value (for modal
analysis), or the time step value (for transient analysis), or the loading
step value (for non-linear static analysis).
$3 integer Identifier of the region to which the element node result belongs. In the
case of finite element nodes, this has no significance since results does
not depend on the region. However, in the case of boundary elements
belonging to two regions (interface boundary elements) this allows se-
lecting which result is required.
$4 integer Region class: 1 (BE region) or 2 (FE region).
$5 integer Region type: 1 (inviscid fluid) or 2 (elastic solid) or 3 (poroelastic
medium).
$6 integer Identifier of the BE boundary (if $4==1) or FE subregion (if $4==2) to
which the element result belongs. In the case of boundary elements be-
longing to two regions (interface boundary elements) this allows selecting
which result is required.
$7 integer If $4==1, then it indicates the boundary class: 1 (ordinary) or 2 (crack-
like). If $4==2, then it indicates the finite element dimension.
$8 integer If $4==1, then it indicates the boundary face: 1 (positive normal) or 2
(negative normal). If $4==2, then it indicates the finite element type.
$9-$11 integer Element identifier, dimension and type.
$12,$13 integer Element node index and number of degrees of freedom.
$14 integer Node identifier.
For 2D problems in a time harmonic analysis, where each node variable is written by two consecu-
tive columns containing its real and imaginary parts (if complex_notation = cartesian in [export]
section) or absolute value and argument (if complex_notation = polar in [export] section):
For 3D problems in a time harmonic analysis, where each node variable is written by two consecu-
tive columns containing its real and imaginary parts (if complex_notation = cartesian in [export]
section) or absolute value and argument (if complex_notation = polar in [export] section):
The definition of the local cartesian basis and the stress resultants sign criteria for beams and shells
are established according to Section 2.4.2 (see Figures 2.1, 2.2, 2.8 and 2.9).
Go to MultiFEBE’s GitHub webpage, and download the source code. Then, decompress the *.tar.gz
or *.zip file.
A.1 GNU/Linux
The steps to compile the source code are the usual on GNU/Linux projects using CMake. The particular
commands shown below are for Debian distributions (e.g. Ubuntu), but it should be very similar for
others.
1. First, you have to install the pre-requisites if not already installed, so you have to open a terminal
and execute:
• Install OpenBLAS:
$ sudo apt-get install libopenblas-base libopenblas-dev
2. Once you have all the pre-requisites, navigate at the source code main folder. Then create a
temporary folder (e.g. build) where making the compilation, and navigate inside it:
$ mkdir -p build
$ cd build
3. Execute cmake taking into account that the CMake configuration file is in the parent folder:
or
for compilation for debugging. During the process, if any tool or dependency is missing, then CMake
is going to notify you.
4. Once CMake correctly finishes, you can now execute GNU Make:
$ make
5. If all this process ends correctly, you will have the executable multifebe there. However, it is still
not available system-wide in the terminal. You have at this point several options:
57
58 APPENDIX A. HOW TO COMPILE THE SOURCE CODE
(b) The cleaner one is making a *.deb installer which will manage not only this, but it will
also copy the documentation to the corresponding folders (/usr/share/doc/multifebe), and
create a package registry so that it can also be completely uninstalled or updated in the future.
In order to do so, you have to execute CPack as:
$ cpack
At the end of the process, you will have at your disposal your own *.deb installer. Then, you
can follow the step described above in section 1.3.1.
A.2 Windows
The compilation in Windows requires much more steps than in GNU/Linux, but basically because it is
required to install and to configure MSYS2. MSYS2 is a collection of tools and libraries providing you with
an easy-to-use environment for building, installing and running native Windows software. Furthermore,
it is very similar to GNU/Linux environments, so most of the programming work is shared when building
for GNU/Linux and Windows.
1. Download and install MSYS2 from the webpage.
2. After the installation, the ”MSYS2 MSYS” terminal is automatically opened. Close it.
3. We recommend to follow the post-installation instructions given at the webpage.
4. MSYS2 installs the so called Mintty terminal, but it provides separate launchers for different envi-
ronments, such as the already opened “MSYS2 MSYS”, but also “MinGW x64”, which is the one
used for compiling, and others. See Figure A.1.
5. We will reproduce the post-installation instructions given by MSYS2 at the date of this writing.
First, open the “MSYS2 MSYS” terminal. See Figure A.1.
6. Update the packages by typing and executing the command pacman -Syu as shown in Figure A.3.
7. Proceed with the installation by typing Y and executing as shown in Figure A.3.
8. After updating, the terminal ask permission for closing. Type Y and execute.
9. Open again the “MSYS2 MSYS” terminal, and type and execute again the update command pacman
-Syu.
10. Proceed with the installation by typing and executing Y.
11. Install typical tools for compiling by typing and executing:
A.2. WINDOWS 59
$ pacman -S mingw-w64-x86_64-toolchain
14. Install additional tools and libraries required by typing and executing the following sequence of
commands:
(a) Install GNU C Compiler and GNU Fortran for MinGW 64 bits:
$ pacman -S gcc mingw-w64-x86_64-gcc gcc-fortran mingw-w64-x86_64-gcc-fortran
15. In the “MSYS2 MinGW x64” terminal, navigate to the source code main folder. In the case
illustrated in the following figures D:\multifebe.
16. Create a folder where all compilation build files are generated. In the case illustrated in the following
figures it is named build. This can be done by executing:
$ mkdir -p build
$ cd build
60 APPENDIX A. HOW TO COMPILE THE SOURCE CODE
18. Execute cmake taking into account that we want to use make as the compilation tool (thus using the
option -G ``Unix Makefiles'') and that the configuration file CMakeLists.txt is in the parent
folder:
$ make
20. After this is correctly done, multifebe.exe should be ready to be used in the current folder.
21. You can manually install this program in the system by creating a new folder inside C:\Files
(x86) called for example multifebe, and copy multifebe.exe inside it. Then you have to add
this directory to the system or user PATH environment variable. To do so, follow the instructions
in this link, or do a search on the web about “How to set the path and environment variables
in Windows”. After this is done, you can run the program on a system terminal, like cmd or
PowerShell.
22. It is also possible to build an installer which do all this for you, and furthermore integrates the
program into your system with a uninstaller, etc. You have to be in a “MSYS2 MinGW x64”
terminal, and the current working directory in the folder where we are compilating.
A.2. WINDOWS 61
23. Then you can build the installer by executing in the terminal:
$ cpack
24. This will create and installer called multifebe-x.x.x-w64.exe, which is the installer we release
for Windows. Then you can execute it and follow the instructions above in section ??.
62 APPENDIX A. HOW TO COMPILE THE SOURCE CODE
Appendix B
In Gmsh newer than version 3.0.6, the default Gmsh mesh file format is not MSH file format version 2.2.
Therefore, you will have to save the mesh from an alternative workflow.
When using the Gmsh GUI, you have to follow the steps shown in Fig. B.1. When using the
command-line interface, you have to include the option -format msh2, for example:
63
64 APPENDIX B. GMSH - HOW TO EXPORT A MESH IN MSH FILE FORMAT VERSION 2.2
(a) Step 1: File > Export (b) Step 2: Format: Mesh - Gmsh MSH (*.msh)
We have implemented a *.bas template file for writing mesh files in the MultiFEBE native format from
GiD pre- and post-processor. It is a simple plain text file containing a script in GiD language. Two
versions of the template file are included in the package, one with carriage return of the Windows type
(multifebe_win.bas), and another with the Unix type (multifebe_unix.bas). Note that the shown
blank lines are necessary. Conceptually, each GiD “layer” is a “part” in MultiFEBE jargon.
multifebe_win.bas & multifebe_unix.bas
1
2 *IntFormat "%12i"
3 *RealFormat "%25.16e"
4 [parts]
5 *Set var nLayer=0
6 *loop layers
7 *Set var nLayer=LayerNum
8 *end layers
9 *nLayer
10 *loop layers
11 *LayerNum *LayerName
12 *end layers
13 [nodes]
14 *nPoin
15 *set elems(all)
16 *loop nodes
17 *NodesNum *NodesCoord
18 *end nodes
19 [elements]
20 *set Elems(All)
21 *nElem
22 *set Elems(Linear)
23 *loop elems
24 *if(ElemsNnode==2)
25 *ElemsNum line2 1 *ElemsLayerNum *ElemsConec
26 *endif
27 *if(ElemsNnode==3)
28 *ElemsNum line3 1 *ElemsLayerNum *ElemsConec
29 *endif
30 *end elems
31 *set Elems(Triangle)
32 *loop elems
33 *if(ElemsNnode==3)
34 *ElemsNum tri3 1 *ElemsLayerNum *ElemsConec
35 *endif
36 *if(ElemsNnode==6)
37 *ElemsNum tri6 1 *ElemsLayerNum *ElemsConec
38 *endif
39 *end elems
40 *set Elems(Quadrilateral)
41 *loop elems
42 *if(ElemsNnode==4)
43 *ElemsNum quad4 1 *ElemsLayerNum *ElemsConec
44 *endif
65
66 APPENDIX C. GID *.BAS TEMPLATE FILE
45 *if(ElemsNnode==8)
46 *ElemsNum quad8 1 *ElemsLayerNum *ElemsConec
47 *endif
48 *if(ElemsNnode==9)
49 *ElemsNum quad9 1 *ElemsLayerNum *ElemsConec
50 *endif
51 *end elems
52
Bibliography
[1] O. Maeso, J. J. Aznárez, and J. Domínguez. Threeâ��dimensional models of reservoir sediment and
effects on the seismic response of arch dams. Earthquake Engineering and Structural Dynamics,
33(10):1103–1123, 2004.
[2] J. J. Aznárez, O. Maeso, and J. Domínguez. BE analysis of bottom sediments in dynamic fluid-
structure interaction problems. Engineering Analysis with Boundary Elements, 30:124–136, 2006.
[3] L.A. Padrón, J.J. Aznárez, and O. Maeso. BEM–��FEM coupling model for the dynamic analysis of
piles and pile groups. Engineering Analysis with Boundary Elements, 31(6):473 – 484, 2007.
[4] Guillermo M. Álamo, Alejandro E. Martínez-Castro, Luis A. Padrón, Juan J. Aznárez, Rafael Gal-
lego, and Orlando Maeso. Efficient numerical model for the computation of impedance functions of
inclined pile groups in layered soils. Engineering Structures, 126:379–390, 2016.
[5] J. D. R. Bordón, J. J. Aznárez, and O. Maeso. Dynamic model of open shell structures buried in
poroelastic soils. Computational Mechanics, 60(2):269–288, 2017.
[6] J. Domínguez. Boundary Elements in Dynamics. WIT Press, 1993.
[7] E. Oñate. Structural Analysis with the Finite Element Method. Linear Statics., volume Volume
2: Beams, Plates and Shells of Lecture Notes on Numerical Methods in Engineering and Sciences.
Springer Dordrecht, 1 edition, 2013.
[8] Z. Friedman and J.B. Kosmatka. An improved two-node timoshenko beam finite element. Computers
& Structures, 47(3):473–481, 1993.
[12] Klaus-Jürgen Bathe and Eduardo N. Dvorkin. A formulation of general shell elements—the use
of mixed interpolation of tensorial components. International Journal for Numerical Methods in
Engineering, 22(3):697–722, 1986.
[13] Miguel Luiz Bucalem and Klaus-Jüen Bathe. Higher-order mitc general shell elements. International
Journal for Numerical Methods in Engineering, 36(21):3729–3754, 1993.
[14] M.A. Biot. Theory of propagation of elastic waves in a fluid�saturated porous solid I.
low�frequency range. The Journal of the Acoustical Society of America, 28(168), 1956.
67