diff --git a/README.md b/README.md index ae94909629b33953ad17c02389d8c63533c68bf6..032b488f310bece60979e8553ec36ac2bd4fd760 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # Multiphysics 0471 +The code has been written by Louis Denis, Pierre-Yves Goffin, Kévin Maltez and Valentin Vanraes in the context of the Multiphysics Integrated Computational Project (Spring 2022), as part of the Master of Science in Engineering Physics of the Faculty of Applied Sciences at University of Liège, Belgium. -Multiphysics Integrated Computational Project +## Building the solver FOR WINDOWS: @@ -67,7 +68,7 @@ To create a .geo file compatible with the program, some rules must be respected: - **BOUNDARY CONDITIONS**: 1. Dirichlet boundary conditions, corresponding to imposing an electric potential expressed in [V], 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 expressed in [V/m], can be imposed on a physical curve as: `SetNumber("Boundary Conditions/name_of_the_physical_curve/BEM_domain_X/neumann", value_of_field);`. + 2. Neumann boundary conditions, corresponding to imposing the opposite of the exterior normal component of the electric field expressed in [V/m], 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. diff --git a/srcs/FoldedFlexureBeam.geo b/srcs/FoldedFlexureBeam.geo index 1d71824d2c4a7997b4f1c1ae6c3182f5c3a7636b..551c0048db565e2db38ea9148df45ac1dfe5254c 100644 --- a/srcs/FoldedFlexureBeam.geo +++ b/srcs/FoldedFlexureBeam.geo @@ -1,10 +1,10 @@ scale = 1e-6; -nBEM = 10; // BEM element density (mettre ça dans quatrième coordonnée) +nFEM = 4; // FEM element density -nFEM = 0.5; // FEM element density +nBEM = 5/nFEM; // BEM element density (mettre ça dans quatrième coordonnée) -phi = 100; +phi = 110; SetNumber("Boundary Conditions/BEM_FEM_boundary/BEM_domain_1/dirichlet", 0); SetNumber("Boundary Conditions/top_electrode/BEM_domain_1/dirichlet", phi); SetNumber("Boundary Conditions/rest_of_outside/BEM_domain_1/neumann", 0); @@ -16,7 +16,7 @@ SetNumber("Boundary Conditions/anchor/uy", 0); SetNumber("Boundary Conditions/left_edge/ux", 0); SetNumber("Materials/FEM_domain/Young", 160e9); // A DETERMINER PRECISEMENT SetNumber("Materials/FEM_domain/Poisson", 0.22); -SetNumber("Materials/FEM_domain/rho",7800); //MODIF +SetNumber("Materials/FEM_domain/rho",2300); SetNumber("Volumic Forces/FEM_domain/bx",0); SetNumber("Volumic Forces/FEM_domain/by",0); SetNumber("Non_linear_solver",1); @@ -53,12 +53,12 @@ Ncombs = 4; // ne pas changer, pas généralisé // fixed bottom anchor y = -(Lg-2-4)*scale; x = (5*g + 4.5*Wc)*scale; -Point(1) = {x, y-Wss-2*scale, 0, nBEM*scale}; // limite avec suite -Point(2) = {x, y-Wts, 0, nBEM*scale}; -Point(3) = {x-Wts, y-Wts, 0, nBEM*scale}; -Point(4) = {x-Wts, y, 0, nBEM*scale}; -Point(5) = {x, y, 0, nBEM*scale}; -Point(6) = {x, y-2*scale, 0, nBEM*scale}; // limite avec suite +Point(1) = {x, y-Wss-2*scale, 0, 10*scale}; // limite avec suite +Point(2) = {x, y-Wts, 0, 10*scale}; +Point(3) = {x-Wts, y-Wts, 0, 10*scale}; +Point(4) = {x-Wts, y, 0, 10*scale}; +Point(5) = {x, y, 0, 10*scale}; +Point(6) = {x, y-2*scale, 0, 10*scale}; // limite avec suite Line(1) = {1, 2}; Line(2) = {2, 3}; Line(3) = {3, 4}; @@ -75,8 +75,8 @@ Transfinite Surface{1} = {2:5}; Recombine Surface{1}; // bottom long beam -Point(7) = {x+Lss, y-2*scale, 0, nBEM*scale}; // limite avec suite -Point(8) = {x+Lss, y-Wss-2*scale, 0, nBEM*scale}; // limite avec suite +Point(7) = {x+Lss, y-2*scale, 0, 10*scale}; // limite avec suite +Point(8) = {x+Lss, y-Wss-2*scale, 0, 10*scale}; // limite avec suite Line(7) = {6, 7}; Line(8) = {7, 8}; // limite avec suite Line(9) = {8, 1}; @@ -90,12 +90,12 @@ Recombine Surface{2}; //truss x = x + Lss; y = y - 10*scale - Wss; -Point(9) = {x, y + 8*scale + Wss + Lgs, 0 , nBEM*scale}; // limite avec suite -Point(10) = {x, y + 8*scale + 2*Wss + Lgs, 0 , nBEM*scale}; // limite avec suite -Point(11) = {x, y + 16*scale + 2*Wss + Lgs, 0 , nBEM*scale}; -Point(12) = {x + Wts, y + 16*scale + 2*Wss + Lgs, 0 , nBEM*scale}; -Point(13) = {x + Wts, y, 0 , nBEM*scale}; -Point(14) = {x, y, 0 , nBEM*scale}; +Point(9) = {x, y + 8*scale + Wss + Lgs, 0 , 10*scale}; // limite avec suite +Point(10) = {x, y + 8*scale + 2*Wss + Lgs, 0 , 10*scale}; // limite avec suite +Point(11) = {x, y + 16*scale + 2*Wss + Lgs, 0 , 10*scale}; +Point(12) = {x + Wts, y + 16*scale + 2*Wss + Lgs, 0 , 10*scale}; +Point(13) = {x + Wts, y, 0 , 10*scale}; +Point(14) = {x, y, 0 , 10*scale}; Line(10) = {7, 9}; Line(11) = {9, 10}; // limite avec suite Line(12) = {10, 11}; @@ -115,8 +115,8 @@ Recombine Surface{3}; //top long beam x = (5*g + 4.5*Wc)*scale; -Point(15) = {x, 4*scale, 0 , nBEM*scale}; // limite avec suite -Point(16) = {x, 4*scale + Wss, 0 , nBEM*scale}; // limite avec suite +Point(15) = {x, 4*scale, 0 , 10*scale}; // limite avec suite +Point(16) = {x, 4*scale + Wss, 0 , 10*scale}; // limite avec suite Line(17) = {9, 15}; Line(18) = {15, 16}; // limite avec suite Line(19) = {16, 10}; @@ -128,10 +128,10 @@ Transfinite Surface{4}; Recombine Surface{4}; //bottom base moveable combs -Point(17) = {x, 0, 0 , nBEM*scale}; -Point(18) = {0, 0, 0 , nBEM*scale}; // roulements -Point(19) = {0, 14*scale + Wss, 0 , nBEM*scale}; // roulements + limite avec suite -Point(20) = {x, 14*scale + Wss, 0 , nBEM*scale}; // limite avec suite +Point(17) = {x, 0, 0 , 10*scale}; +Point(18) = {0, 0, 0 , 10*scale}; // roulements +Point(19) = {0, 14*scale + Wss, 0 , 10*scale}; // roulements + limite avec suite +Point(20) = {x, 14*scale + Wss, 0 , 10*scale}; // limite avec suite Line(20) = {15, 17}; Line(21) = {17, 18}; Line(22) = {18, 19}; // roulements @@ -245,14 +245,14 @@ Recombine Surface{7:10}; Physical Curve("anchor", 1) = {1:6}; Physical Surface("FEM_domain", 2) = {1:10}; -Physical Curve("BEM_FEM_boundary", 3) = {1:5, 7, 10, 17, 20, 21, 26:nbLines2, 24, 19, 12:16, 9}; +Physical Curve("BEM_FEM_boundary", 3) = {26:nbLines2, 24, 19, 12:13}; Physical Curve("left_edge", 4) = {22,25}; //top electrode y = y + Lcs + (Lcs-y0s) + 12*scale; xtot = Ncombs*(2*gs+2*Wcs) + Wcs/2; -Point(nbPts2 + 1) = {0, y, 0, nBEM*scale}; -Point(nbPts2 + 2) = {xtot, y, 0, nBEM*scale}; +Point(nbPts2 + 1) = {0, y, 0, 10*scale}; +Point(nbPts2 + 2) = {xtot, y, 0, 10*scale}; For i In {1:Ncombs} Point(nbPts2 + 2 + 4*i - 3) = {xtot-(i-1)*(2*Wcs+2*gs), y-12*scale-Lcs, 0, 0.2*nBEM*scale}; Point(nbPts2 + 2 + 4*i - 2) = {xtot-(i-1)*(2*Wcs+2*gs) - Wcs, y-12*scale - Lcs, 0, 0.2*nBEM*scale}; @@ -260,8 +260,8 @@ For i In {1:Ncombs} Point(nbPts2 + 2 + 4*i) = {xtot-i*(2*Wcs+2*gs), y-12*scale, 0, 0.2*nBEM*scale}; EndFor nbPts3 = nbPts2 + 2 + 4*Ncombs; -Point(nbPts3 + 1) = {Wcs/2, y-12*scale-Lcs, 0, nBEM*scale}; -Point(nbPts3 + 2) = {0, y-12*scale-Lcs, 0, nBEM*scale}; +Point(nbPts3 + 1) = {Wcs/2, y-12*scale-Lcs, 0, 0.2*nBEM*scale}; +Point(nbPts3 + 2) = {0, y-12*scale-Lcs, 0, 0.2*nBEM*scale}; nbPts4 = nbPts3 + 2; For i In {nbPts2+1:nbPts4-1} @@ -274,20 +274,18 @@ Physical Curve("top_electrode", 5) = {nbLines3+1:nbLines4-1}; // rest of outside Line(nbLines4 + 1) = {nbPts4, 21}; +y = -(Lg-2-4)*scale - 10*scale - Wss + 16*scale + 2*Wss + Lgs; +Point(nbPts4 + 1) = {Wtots, y, 0, 20*scale}; +Point(nbPts4 + 2) = {Wtots, Htops, 0, 20*scale}; +Point(nbPts4 + 3) = {0, Htops, 0, 20*scale}; -Point(nbPts4 + 1) = {0, -Hbottoms, 0, 2*nBEM*scale}; -Point(nbPts4 + 2) = {Wtots, -Hbottoms, 0, 2*nBEM*scale}; -Point(nbPts4 + 3) = {Wtots, Htops, 0, 2*nBEM*scale}; -Point(nbPts4 + 4) = {0, Htops, 0, 2*nBEM*scale}; - -Line(nbLines4 + 2) = {18, nbPts4 + 1}; +Line(nbLines4 + 2) = {12, nbPts4 + 1}; Line(nbLines4 + 3) = {nbPts4 + 1, nbPts4 + 2}; Line(nbLines4 + 4) = {nbPts4 + 2, nbPts4 + 3}; -Line(nbLines4 + 5) = {nbPts4 + 3, nbPts4 + 4}; -Line(nbLines4 + 6) = {nbPts4 + 4, nbPts2 + 1}; +Line(nbLines4 + 5) = {nbPts4 + 3, nbPts2 + 1}; -Curve Loop(11) = {nbLines4 + 2: nbLines4 + 6, nbLines3 + 1: nbLines4 - 1, nbLines4 + 1, 26:nbLines2, 24, 19, 12:16, 9, 1:5, 7, 10, 17, 20, 21}; +Curve Loop(11) = {nbLines4 + 2: nbLines4 + 5, nbLines3 + 1: nbLines4 - 1, nbLines4 + 1, 26:nbLines2, 24, 19, 12:13}; Plane Surface(11) = {11}; Physical Surface("BEM_domain_1", 6) = {11}; -Physical Curve("rest_of_outside", 7) = {nbLines4+1: nbLines4+6}; \ No newline at end of file +Physical Curve("rest_of_outside", 7) = {nbLines4+1: nbLines4+5}; \ No newline at end of file