Multiphysics 0471
Multiphysics Integrated Computational Project
FOR WINDOWS:
To build the coupled FEM/BEM solver:
- go to the srcs folder (cd srcs)
- create a build folder (mkdir build)
- go to this build folder (cd build)
- cmake ..
- make
To execute the solver:
- in build folder: solver.exe ..\hybrid_geo.geo (or any other .geo file present at the root of the srcs folder)
To build the independent FEM solver:
- similar procedure but to be done in the srcs/FEM folder
To build the independent BEM solver:
- similar procedure but to be done in the srcs/BEM folder
Creation of a .geo file
To create a .geo file that will work with the program, some rules must be respected:
- For the FEM domain:
-
FEM domain should be defined as
Physical Curve
with the precise nameFEM_domain
. For example, if the user want the Curve Loop(1) to be a FEM domain, wherex
is the tag:Physical Curve("FEM_domain", x) = {1};.
-
The boundary conditions, material properties and volumic forces must then be specified to the FEM domain:
-
BOUNDARY CONDITIONS:
- The edges on which the user want to imposed a boundary condition must be defined as
Physical Curve
. For example, if the user want to impose a condition on a bottom edge related to theLine(1)
:Physical Curve("bottom_edge", x) = {1};
- All boundary conditions must be written as
SetNumber("Boundary Conditions/name_of_the_edge/...")
withname_of_the_edge
the edge on which the condition is imposed. - The Dirichlet boundary conditions, i.e the imposed horizontal and vertical displacement
u_x
andu_y
of an edge, must be written asSetnumber("Boundary Conditions/name_of_the_edge/ux", desired_value);
, same applies foru_y
. For example, if the user want to imposed an embedding on an the bottom edge:SetNumber("Boundary Conditions/bottom_left/ux", 0.); SetNumber("Boundary Conditions/bottom_left/uy", 0.);
- The Neumann boundary conditions, i.e surface traction (or compression) in the horizontal (
t_x
) or vertical (t_y
) direction imposed on an edge, must be written asSetNumber("Boundary Conditions/name_of_edge/tx", desired_value);
, same applies fort_y
.
- The edges on which the user want to imposed a boundary condition must be defined as
-
MATERIAL PROPERTIES:
All the material properties must be written as
SetNumber("Materials/domain/name_of_property", value_of_property);
. The different properties that must be specified are:- Young modulus, named
Young
. - Poisson ration, named
Poisson
. - Volumic density, named
rho
.
- Young modulus, named
-
VOLUMIC FORCES:
Volumic forces, i.e forces applied on all the volume in the horizontal (
b_x
) or vertical (b_y
) direction must be written asSetNumber("Volumic Forces/FEM_domain/b_x",0);
, same applies forb_y
.
-
- For the BEM domains:
-
The lines of the BEM surfaces must be created in such a way that the air of the surface is located to the left of the Curve Loop.
-
BEM domain should be defined as
Physical Curve
with the precise nameBEM_domain_X
, withX
the number of the BEM domain (X=1
if it is the first one,X=2
if it is the seconde one, ...). For example, if the user want theCurve Loop(1)
to be a FEM domain:Physical Curve("FEM_domain", x) = {1};
-
Lines belonging to the BEM and FEM domains must be specified as
Physical Curve("BEM_FEM_boundary_X, x)={Lines_of_the_two_domains}
. For example, ifLine(1)
,Line(4)
andLine(5)
belong to the intersection of the BEM domain and the FEM domain:Physical Curve("BEM_FEM_boundary_1", x) = {1, 4, 5};
-
The electrode on line defining the electrode on wich the electric potential is imposed must be defined as
Physical Curve("electrode_X", x)={Lines_corresponding_to_electrode}
. -
The line which are not defined as an electrode or as a an intersection between the two types of domain must be specified as
Physical Curve("outside_X", x) = {Lines_of_outside};
-
Boundary conditions and materials properties must then be specified for the Bem domain:
-
BOUNDARY CONDITIONS:
- Two Dirichlet boundary conditions need to be imposed:
- The electric potential of the electrode, specified as
SetNumber("Boundary Conditions/electrode_X/BEM_domain_X/dirichlet", value_of_potential);
. - A condition on the boundary between the FEM and the BEM domain. It is often considered as the place where the electric potential is equal to 0, defined as
SetNumber("Boundary Conditions/BEM_FEM_boundary_X/BEM_domain_X/dirichlet", value_of_potential);
.
- The electric potential of the electrode, specified as
- One Neumann boundary condition on the line which are not defined as an electrode or as a an intersection between the two types of domain, written as
SetNumber("Boundary Conditions/outside_X/BEM_domain_X/neumann", 0);
.
- Two Dirichlet boundary conditions need to be imposed:
-
MATERIAL PROPERTIES: The dielectric permittivity of the BEM domain must be specified, it is done writing
SetNumber("Materials/BEM_domain_X/Epsilon", value_Epsilon);
.
-
Note: These operations must be done for each BEM domains the user want to create, replacing X
by the number of the BEM domain.