diff --git a/dG3D/benchmarks/impactSphere/impactSphere.geo b/dG3D/benchmarks/impactSphere/impactSphere.geo new file mode 100644 index 0000000000000000000000000000000000000000..dd866554f984630d4508a4234c0f5d007639b325 --- /dev/null +++ b/dG3D/benchmarks/impactSphere/impactSphere.geo @@ -0,0 +1,122 @@ +SetFactory("OpenCASCADE"); + +Mesh.Optimize = 1; +Mesh.SecondOrderLinear = 1; +mm = 1.; // Unit +//Geometry.AutoCoherence = 0.000000001*mm; +Geometry.Tolerance = 0.000000001*mm; // adjust value here for correct merge result +Mesh.CharacteristicLengthMin = 1.*mm; +Mesh.CharacteristicLengthMax = 25.*mm; + + + + + + +RextLattice = 100*mm; +HLattice = 4.*7.5*mm; +LLattice = 7.5*mm; //mesh size + + +LowerPlate = 2.*mm; +UpperPlate = 2.*mm; +LPlate = 7.5*mm; //mesh size + +RextImpactor = 100*mm; +RintImpactor = 75.*mm; +LImpactor = 25*mm; //mesh size + + +// lower plate +plate()+=newv; Cylinder(newv) = {0,0,0, 0,0,LowerPlate, RextLattice, Pi/2.}; +surflowerplate[] = Abs(Boundary{ Volume{plate(0)}; }); +Printf("surf lower plate ",surflowerplate()); +// upper plate +plate()+=newv; Cylinder(newv) = {0,0,LowerPlate+HLattice, 0,0,UpperPlate, RextLattice, Pi/2.}; +surfupperplate[] = Abs(Boundary{ Volume{plate(1)}; }); +Printf("surf upper plate ",surfupperplate()); + +Characteristic Length { PointsOf{ Volume{ plate[] }; } } = LPlate; + +// lattice part +lattice()+=newv; Cylinder(newv) = {0,0,LowerPlate, 0,0,HLattice, RextLattice, Pi/2.}; +surflattice[] = Abs(Boundary{ Volume{lattice(0)}; }); +Printf("surf lattice ",surflattice()); +Characteristic Length { PointsOf{ Volume{ lattice[] }; } } = LLattice; + + + + +//impactor +//+ +impactortmp()+=newv; Sphere(newv) = {0.-0.0001*mm, 0.-0.0001*mm, LowerPlate+HLattice+UpperPlate+RextImpactor+0.0001*mm, RextImpactor, -Pi/2, 0., Pi/2.}; +//+ +impactortmp()+=newv; Sphere(newv) = {0.-0.0001*mm, 0.-0.0001*mm, LowerPlate+HLattice+UpperPlate+RextImpactor+0.0001*mm, RintImpactor, -Pi/2, 0., Pi/2.}; + +impactor()+=newv; BooleanDifference(newv) = { Volume{impactortmp(0)}; Delete; }{ Volume{impactortmp(1)}; Delete; }; +surfimpactor[] = Abs(Boundary{ Volume{impactor(0)}; }); +Printf("surf impactor ",surfimpactor()); + +Characteristic Length { PointsOf{ Volume{ impactor[] }; } } = LImpactor; + + + + +OXZ=101; +Physical Surface(OXZ) = {surflowerplate(3), surflattice(3),surfupperplate(3)}; +OYZ=100; +Physical Surface(OYZ) = {surflowerplate(4), surflattice(4),surfupperplate(4)}; + +OXYLOW=200; +Physical Surface(OXYLOW) = {surflowerplate(2)}; +OXYUP=201; +Physical Surface(OXYUP) = {surfupperplate(1)}; + +LOWERPLATE=51; +Physical Volume(LOWERPLATE) = {plate(0)}; +UPPERPLATE=52; +Physical Volume(UPPERPLATE) = {plate(1)}; + +LATTICE=53; +Physical Volume(LATTICE) = {lattice(0)}; + + +OXZIMPACTOR=1001; +Physical Surface(OXZIMPACTOR) = {surfimpactor(3)}; +OYZIMPACTOR=1000; +Physical Surface(OYZIMPACTOR) = {surfimpactor(2)}; + +OXYIMPACTORLOW=2000; +Physical Surface(OXYIMPACTORLOW) ={surfimpactor(0)}; +OXYIMPACTORUP=2001; +Physical Surface(OXYIMPACTORUP) = {surfimpactor(1)}; + +IMPACTOR=1001; +Physical Volume(IMPACTOR) = {impactor(0)}; + + +//rigid contact +X_contact=-0.1*mm; +Y_contact=-0.1*mm; +Z_contact=-0.0000001*mm; +L_contact=RextLattice+2.*mm; +Point(11001) = {X_contact,Y_contact,Z_contact}; +Point(11002) = {X_contact,Y_contact+L_contact,Z_contact}; +Point(11003) = {X_contact+L_contact,Y_contact+L_contact,Z_contact}; +Point(11004) = {X_contact+L_contact,Y_contact,Z_contact}; +Line(10001) = {11001, 11002}; +Line(10002) = {11002, 11003}; +Line(10003) = {11003, 11004}; +Line(10004) = {11004, 11001}; +Line Loop(10001) = {10004, 10001, 10002, 10003}; +Physical Point(11001) = {11001}; +Plane Surface(10001) = {10001}; +Transfinite Line {10001,10002,10003,10004} = 2 Using Progression 1; +Transfinite Surface {10001}; +Recombine Surface {10001}; +RIGIDCONTACT=10001; +Physical Surface(RIGIDCONTACT) = {10001}; + + + +