Skip to content
Snippets Groups Projects
Denis Louis's avatar
Denis Louis authored
README.md: How to create .geo

See merge request !13
f94a649c
History

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:
    1. FEM domain should be defined as Physical Curve with the precise name FEM_domain. For example, if the user want the Curve Loop(1) to be a FEM domain, where xis the tag:

      Physical Curve("FEM_domain", x) = {1};. 
      
    2. The boundary conditions, material properties and volumic forces must then be specified to the FEM domain:

    • BOUNDARY CONDITIONS:
      1. 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 the Line(1):
        Physical Curve("bottom_edge", x) = {1};
      2. All boundary conditions must be written as SetNumber("Boundary Conditions/name_of_the_edge/...") with name_of_the_edge the edge on which the condition is imposed.
      3. The Dirichlet boundary conditions, i.e the imposed horizontal and vertical displacement u_x and u_y of an edge, must be written as Setnumber("Boundary Conditions/name_of_the_edge/ux", desired_value);, same applies for u_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.);
      4. 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 as SetNumber("Boundary Conditions/name_of_edge/tx", desired_value);, same applies for t_y.
    • 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.
    • 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 as SetNumber("Volumic Forces/FEM_domain/b_x",0);, same applies for b_y.
  • For the BEM domains:
    1. 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.

    2. BEM domain should be defined as Physical Curve with the precise name BEM_domain_X, with X 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 the Curve Loop(1) to be a FEM domain:

      Physical Curve("FEM_domain", x) = {1};
    3. 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, if Line(1), Line(4) and Line(5) belong to the intersection of the BEM domain and the FEM domain:

       Physical Curve("BEM_FEM_boundary_1", x) = {1, 4, 5};
      
    4. 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}.

    5. 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};

    6. Boundary conditions and materials properties must then be specified for the Bem domain:

    • BOUNDARY CONDITIONS:
      • Two Dirichlet boundary conditions need to be imposed:
        1. The electric potential of the electrode, specified as SetNumber("Boundary Conditions/electrode_X/BEM_domain_X/dirichlet", value_of_potential);.
        2. 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);.
      • 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);.
    • 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.