diff --git a/README.md b/README.md index b2530e512740968d92d0fafadf377df718ec1ebc..007c943e63140013dd58bda46e740f09e529ea9e 100644 --- a/README.md +++ b/README.md @@ -18,4 +18,65 @@ 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 \ No newline at end of file +- 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 `x`is the tag: + <pre><code>Physical Curve("FEM_domain", x) = {1};.<code><pre> + + 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)`: + <pre><code>`Physical Curve("bottom_edge", x) = {1};`<code><pre> + 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: + <pre><code>SetNumber("Boundary Conditions/bottom_left/ux", 0.); + SetNumber("Boundary Conditions/bottom_left/uy", 0.);<code><pre> + 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: + <pre><code>Physical Curve("FEM_domain", x) = {1};<code><pre> + 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: + <pre><code> Physical Curve("BEM_FEM_boundary_1", x) = {1, 4, 5};<code><pre> + + 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. + + + + + + + +