diff --git a/README.md b/README.md
index 007c943e63140013dd58bda46e740f09e529ea9e..9ba6ebb33443e5952b16788d33381ffde96b1e4e 100644
--- a/README.md
+++ b/README.md
@@ -22,56 +22,64 @@ To build the independent BEM solver:
 
 ## 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> 
+To create a .geo file compatible with the program, some rules must be respected:  
+- For the elastic FEM part:    
+  1. The FEM domain should be defined as a `Physical Surface` with the precise name `FEM_domain`.
+        First, a `Curve Loop` gathering the lines representing the boundary of the FEM domain must be created.
+        Then, a `Plane Surface` containing the corresponding curve loop must be created.
+        Finally, if the plane surface is the first of the .geo file, the physical surface must be created as: 
+        <pre><code>Physical Surface("FEM_domain", x) = {1};.<code><pre> 
+        where x is the tag of the physical surface.
+        Multiple sub domains can be included in the FEM domain. For example, if plane surfaces have been created for
+        five sub domains, the physical surface must be created as:
+        <pre><code>Physical Surface("FEM_domain", x) = {1, 2, 3, 4, 5};.<code><pre> 
     
-  2. The boundary conditions, material properties and volumic forces must then be specified to the FEM domain:  
+  2. The mechanical boundary conditions, material properties and volumic forces must be specified for 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)`: 
+      1. The edges on which the user wants to impose a boundary condition must be defined as `Physical Curve`.
+                As an example, if the user want to impose a condition on the 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.
+      2. All boundary conditions must be written as `SetNumber("Boundary Conditions/name_of_the_physical_curve/...")` 
+                with `name_of_the_physical_curve` the physical curve 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`.
+                must be written as `Setnumber("Boundary Conditions/name_of_the_physical_curve/ux", desired_value);`, same applies for `u_y`. Note that the horizontal displacement can be imposed on a physical curve without imposing the vertical
+                displacement, and vice-versa.
+                As an example, if the user wants the left edge to be clamped: 
+                    <pre><code>SetNumber("Boundary Conditions/left_edge/ux", 0.);
+                        SetNumber("Boundary Conditions/left_edge/uy", 0.);<code><pre>
+      4. The Neumann boundary conditions, i.e surface traction in the horizontal (`t_x`) or vertical (`t_y`) direction imposed on
+                an edge, must be written as `SetNumber("Boundary Conditions/name_of_the_physical_curve/tx", desired_value)`, 
+                same applies for `t_y`. Note that on a specific edge, both horizontal and vertical surface tractions must be 
+                prescribed. If the user only wants to prescribe `t_x`, `t_y` must also be set to zero.
+      5. Dirichlet boundary conditions can also be imposed on a specific point of the domain. In this case, a `Physical Point`
+                must be created.
     - **MATERIAL PROPERTIES**:
-                All the material properties must be written as `SetNumber("Materials/domain/name_of_property", value_of_property);`.
+                All the material properties must be written as `SetNumber("Materials/FEM_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's modulus, named `Young`.
+      - Poisson's ratio, named `Poisson`.
+      - Mass 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: 
+                Volumic forces, 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 electrostatic BEM part:
+  1. The lines corresponding to the boundary of the BEM surfaces must be created in such a way that the area of the BEM surface is located on the left of the Curve Loop.
+  2. Multiple BEM domains can be defined. One BEM domain should be defined as a `Physical Surface` with the precise name `BEM_domain_X`, with `X` the identifier of the BEM domain (`X=1` if it is the first domain, `X=2` if it is the second one, ...).
+  3. Boundary conditions and material 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. 
+      1. Dirichlet boundary conditions, corresponding to imposing an electric potential, can be imposed on a physical curve as:
+       `SetNumber("Boundary Conditions/name_of_the_physical_curve/BEM_domain_X/dirichlet", value_of_potential);`.
+      2. Neumann boundary conditions, corresponding to imposing the normal component of the electric field, can be imposed on a physical curve as: `SetNumber("Boundary Conditions/name_of_the_physical_curve/BEM_domain_X/neumann", value_of_field);`.
+    - **MATERIAL PROPERTIES**: The dielectric permittivity of the material inside the BEM domain must be specified. It is done writing `SetNumber("Materials/BEM_domain_X/Epsilon", value_of_Epsilon);`.
+
+  **Note**: These operations must be done for each BEM domain the user wants to create, replacing `X` by the given identifier of the BEM domain. 
+- For the coupling between the FEM and BEM domains:
+  1. All the lines belonging to the interface between the FEM domain and the different BEM domains must be specified as a single `Physical Curve("BEM_FEM_boundary, x)={List_of_the_interface_lines}`. As an example, if `Line(1)`, `Line(4)` and `Line(5)` belong to the intersection of the BEM domains and the FEM domain: 
+        <pre><code> Physical Curve("BEM_FEM_boundary", x) = {1, 4, 5};<code><pre>
+- For the mechanical or the coupled solver, the user can choose between the linear or non-linear iterative solver, by setting 
+  <pre><code> SetNumber("Non_linear_solver",0);<code><pre>
+  for the linear solver, or
+  <pre><code> SetNumber("Non_linear_solver",1);<code><pre>
+  for the non-linear solver.