diff --git a/contrib/arc/conge.dat b/contrib/arc/conge.dat new file mode 100644 index 0000000000000000000000000000000000000000..5c25851a90b1347ac05e3f72480023bc618bf7f4 --- /dev/null +++ b/contrib/arc/conge.dat @@ -0,0 +1,7 @@ +MeshFile conge.msh +ElasticDomain 7 200.e9 0.3 +EdgeDisplacement 8 0 0 +EdgeDisplacement 8 1 0 +EdgeDisplacement 8 2 0 +LineForce 9 100e6 0 0 +VolumeForce 7 0 -100.e-3 0 diff --git a/contrib/arc/conge.geo b/contrib/arc/conge.geo new file mode 100644 index 0000000000000000000000000000000000000000..22491247af9e207d07f37843bb53175d67964d97 --- /dev/null +++ b/contrib/arc/conge.geo @@ -0,0 +1,88 @@ +unit = 1.0e-02 ; + +e1 = 4.5 * unit ; +e2 = 6.0 * unit / 2.0 ; +e3 = 5.0 * unit / 2.0 ; +h1 = 5.0 * unit ; +h2 = 10.0 * unit ; +h3 = 5.0 * unit ; +//h4 = 1.0 * unit ; +h4 = 2.0 * unit ; +h5 = 4.5 * unit ; +R1 = 1.0 * unit ; +R2 = 1.5 * unit ; +//R2 = 1.5 * unit ; +r = 2 * unit ; +ccos = (-h5*R1+e2* (h5*h5+e2*e2-R1*R1)^0.5) / (h5*h5+e2*e2) ; +ssin = ( 1.0 - ccos*ccos )^0.5 ; + +eps = 0.01 * unit; + +Lc1 = 0.001 ; +Lc2 = 0.001 ; + +Point(1) = { -e1-e2, 0.0 , 0.0 , Lc1}; +Point(2) = { -e1-e2, h1 , 0.0 , Lc1}; +Point(3) = { -e3-r , h1 , 0.0 , Lc2}; +Point(4) = { -e3-r , h1+r , 0.0 , Lc2}; +Point(5) = { -e3 , h1+r , 0.0 , Lc2}; +Point(6) = { -e3 , h1+h2-eps, 0.0 , Lc1}; +Point(7) = { e3 , h1+h2, 0.0 , Lc1}; +Point(8) = { e3 , h1+r , 0.0 , Lc2}; +Point(9) = { e3+r , h1+r , 0.0 , Lc2}; +Point(10)= { e3+r , h1 , 0.0 , Lc2}; +Point(11)= { e1+e2, h1 , 0.0 , Lc1}; +Point(12)= { e1+e2, 0.0 , 0.0 , Lc1}; +Point(13)= { e2 , 0.0 , 0.0 , Lc1}; + +Point(14)= { R1 / ssin , h5+R1*ccos, 0.0 , Lc2}; +Point(15)= { 0.0 , h5 , 0.0 , Lc2}; +Point(16)= { -R1 / ssin , h5+R1*ccos, 0.0 , Lc2}; +Point(17)= { -e2 , 0.0 , 0.0 , Lc1}; + +Point(18)= { -R2 , h1+h3 , 0.0 , Lc2}; +Point(19)= { -R2 , h1+h3+h4, 0.0 , Lc2}; +Point(20)= { 0.0 , h1+h3+h4, 0.0 , Lc2}; +Point(21)= { R2 , h1+h3+h4, 0.0 , Lc2}; +Point(22)= { R2 , h1+h3 , 0.0 , Lc2}; +Point(23)= { 0.0 , h1+h3 , 0.0 , Lc2}; + +Point(24)= { 0 , h1+h3+h4+R2, 0.0 , Lc2}; +Point(25)= { 0 , h1+h3-R2, 0.0 , Lc2}; + +Line(1) = {1 ,17}; /* ux=uy=0 */ +Line(2) = {17,16}; +Circle(3) = {14,15,16}; +Line(4) = {14,13}; +Line(5) = {13,12}; /* ux=uy=0 */ +Line(6) = {12,11}; +Line(7) = {11,10}; +Circle(8) = { 8, 9,10}; +Line(9) = { 8, 7}; +Line(10) = { 7, 6}; /* T=10000 N */ +Line(11) = { 6, 5}; +Circle(12) = { 3, 4, 5}; +Line(13) = { 3, 2}; +Line(14) = { 2, 1}; + +Line(15) = {18,19}; +Circle(16) = {21,20,24}; +Circle(17) = {24,20,19}; +Circle(18) = {18,23,25}; +Circle(19) = {25,23,22}; +Line(20) = {21,22}; + +Line Loop(21) = {17,-15,18,19,-20,16}; +//Plane Surface(22) = {21}; +Line Loop(23) = {11,-12,13,14,1,2,-3,4,5,6,7,-8,9,10}; +Plane Surface(24) = {23,21}; + +//Physical Line(25) = {9,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,19,20,10}; +//Physical Surface(26) = {22,24}; +Physical Line(9) = {11}; +Physical Line(10) = {10}; +Physical Line(8) = {1, 5}; +Physical Surface(7) = {24}; + +// Physical Line(25) = {11, 12, 13, 14}; + diff --git a/contrib/arc/conge3D.dat b/contrib/arc/conge3D.dat new file mode 100644 index 0000000000000000000000000000000000000000..3c5b68c94499d5cbea495e85f825dcf653bed045 --- /dev/null +++ b/contrib/arc/conge3D.dat @@ -0,0 +1,7 @@ +MeshFile conge3D.msh +ElasticDomain 7 200.e9 0.3 +FaceDisplacement 8 0 0 +FaceDisplacement 8 1 0 +FaceDisplacement 8 2 0 +FaceForce 9 100e6 0 0 +VolumeForce 7 0 -100.e-3 0 diff --git a/contrib/arc/conge3D.geo b/contrib/arc/conge3D.geo new file mode 100644 index 0000000000000000000000000000000000000000..4769bb030b1e121477c88d3cea1e7bb6b80bfb92 --- /dev/null +++ b/contrib/arc/conge3D.geo @@ -0,0 +1,88 @@ +unit = 1.0e-02 ; + +e1 = 4.5 * unit ; +e2 = 6.0 * unit / 2.0 ; +e3 = 5.0 * unit / 2.0 ; +h1 = 5.0 * unit ; +h2 = 10.0 * unit ; +h3 = 5.0 * unit ; +//h4 = 1.0 * unit ; +h4 = 2.0 * unit ; +h5 = 4.5 * unit ; +R1 = 1.0 * unit ; +R2 = 1.5 * unit ; +//R2 = 1.5 * unit ; +r = 2 * unit ; +ccos = (-h5*R1+e2* (h5*h5+e2*e2-R1*R1)^0.5) / (h5*h5+e2*e2) ; +ssin = ( 1.0 - ccos*ccos )^0.5 ; + +eps = 0.01 * unit; + +Lc1 = 0.0025 ; +Lc2 = 0.0025 ; + +Point(1) = { -e1-e2, 0.0 , 0.0 , Lc1}; +Point(2) = { -e1-e2, h1 , 0.0 , Lc1}; +Point(3) = { -e3-r , h1 , 0.0 , Lc2}; +Point(4) = { -e3-r , h1+r , 0.0 , Lc2}; +Point(5) = { -e3 , h1+r , 0.0 , Lc2}; +Point(6) = { -e3 , h1+h2-eps, 0.0 , Lc1}; +Point(7) = { e3 , h1+h2, 0.0 , Lc1}; +Point(8) = { e3 , h1+r , 0.0 , Lc2}; +Point(9) = { e3+r , h1+r , 0.0 , Lc2}; +Point(10)= { e3+r , h1 , 0.0 , Lc2}; +Point(11)= { e1+e2, h1 , 0.0 , Lc1}; +Point(12)= { e1+e2, 0.0 , 0.0 , Lc1}; +Point(13)= { e2 , 0.0 , 0.0 , Lc1}; + +Point(14)= { R1 / ssin , h5+R1*ccos, 0.0 , Lc2}; +Point(15)= { 0.0 , h5 , 0.0 , Lc2}; +Point(16)= { -R1 / ssin , h5+R1*ccos, 0.0 , Lc2}; +Point(17)= { -e2 , 0.0 , 0.0 , Lc1}; + +Point(18)= { -R2 , h1+h3 , 0.0 , Lc2}; +Point(19)= { -R2 , h1+h3+h4, 0.0 , Lc2}; +Point(20)= { 0.0 , h1+h3+h4, 0.0 , Lc2}; +Point(21)= { R2 , h1+h3+h4, 0.0 , Lc2}; +Point(22)= { R2 , h1+h3 , 0.0 , Lc2}; +Point(23)= { 0.0 , h1+h3 , 0.0 , Lc2}; + +Point(24)= { 0 , h1+h3+h4+R2, 0.0 , Lc2}; +Point(25)= { 0 , h1+h3-R2, 0.0 , Lc2}; + +Line(1) = {1 ,17}; /* ux=uy=0 */ +Line(2) = {17,16}; +Circle(3) = {14,15,16}; +Line(4) = {14,13}; +Line(5) = {13,12}; /* ux=uy=0 */ +Line(6) = {12,11}; +Line(7) = {11,10}; +Circle(8) = { 8, 9,10}; +Line(9) = { 8, 7}; +Line(10) = { 7, 6}; /* T=10000 N */ +Line(11) = { 6, 5}; +Circle(12) = { 3, 4, 5}; +Line(13) = { 3, 2}; +Line(14) = { 2, 1}; + +Line(15) = {18,19}; +Circle(16) = {21,20,24}; +Circle(17) = {24,20,19}; +Circle(18) = {18,23,25}; +Circle(19) = {25,23,22}; +Line(20) = {21,22}; + +Line Loop(21) = {17,-15,18,19,-20,16}; +//Plane Surface(22) = {21}; +Line Loop(23) = {11,-12,13,14,1,2,-3,4,5,6,7,-8,9,10}; +Plane Surface(24) = {23,21}; +Extrude {0, 0, 0.01} { + Surface{24}; +} + + +Physical Volume(7) = {1}; +Physical Surface(10) = {101}; +Physical Surface(9) = {49}; +Physical Surface(8) = {65, 81}; + diff --git a/contrib/arc/mainElasticity.cpp b/contrib/arc/mainElasticity.cpp new file mode 100644 index 0000000000000000000000000000000000000000..543a73b312c25f72341345e9d3334171356c7524 --- /dev/null +++ b/contrib/arc/mainElasticity.cpp @@ -0,0 +1,32 @@ +#include <gmsh/Gmsh.h> +#include <gmsh/elasticitySolver.h> +#include <gmsh/PView.h> +#include <gmsh/PViewData.h> + +int main (int argc, char* argv[]){ + + if (argc != 2){ + printf("usage : elasticity input_file_name\n"); + return -1; + } + + // globals are still present in Gmsh + GmshInitialize(argc, argv); + + // instanciate a solver + elasticitySolver mySolver (1000); + + // read some input file + mySolver.readInputFile(argv[1]); + + // solve the problem + mySolver.solve(); + + PView *pv = mySolver.buildDisplacementView("displacement"); + pv->getData()->writeMSH("disp.msh", false); + delete pv; + + // stop gmsh + GmshFinalize(); + +}