[Getdp] Axisymmetric linear elasticity problem

Yves DUPUIS yves.dupuis at S2M.FR
Fri Dec 18 16:08:25 CET 2015


Hello everyone,

Based on the Wiki example '2D linear elasticity' I would like to define an axisymmetric problem for a cylinder under external pressure.
The geometry is simple : a rectangular shape. Pressure is applied on outer surface. Upper and lower edges are clamped along Y direction (Y is axis of symmetry for geometry). I use Jacobian VolAxi and SurAxi. The result is a global displacement of geometry as if it was just a 2D square and not a symmetry of revolution around Y axis. So my question is rather simple : is VolAxi and SurAxi are suited for axisymmetric linear elasticty problems? If so, could you help me to understand the results.
Below is the code for .geo and .pro files :

AxiElasticity.geo file

r0 = 10e-3;
r1 = 80e-3;
L  = 100e-3;
lc = 5e-3;
Point(1) = {r0,0.0,0.0,lc};
Point(2) = {r1-1e-6,0.0,0.0,lc};
Point(3) = {r1-1e-6,L,0.0,lc};
Point(4) = {r0,L,0.0,lc};
Line(1)  = {1,2};
Line(2)  = {2,3};
Line(3)  = {3,4};
Line(4)  = {4,1};
Line Loop(5) = {1,2,3,4};
Plane Surface(6) = {5};
Physical Surface(100) = {6};        // Cyl
Physical Line(101)    = {2};        // ForceCyl
Physical Line(102)    = {1,3};      // Edges
Transfinite Line{4,2} = 150;

AxiElasticity.pro file

Group {
  Domain_Disp      = Region[100];
  Domain_Force     = Region[101];
  Edges            = Region[102] ;
  DomainTot        = Region[ {Domain_Disp, Domain_Force} ];
  DefineGroup[ DomainInf ] ;
  DefineVariable[ Val_Rint, Val_Rext ] ;
}

Function {
  E = 2e11;
  v = 0.3;
  Lambda = E*v/((1+v)*(1-2*v));
  Mu = E/(2*(1+v));
  Pression = 10e6;
  r0 = 10e-3;
  r1 = 80e-3;
  L  = 100e-3;

  C_m[ Domain_Disp ] = Tensor[Lambda+2*Mu,Lambda,0,Lambda,Lambda+2*Mu,0,0,0,Mu];

  F[Domain_Force] = Pression*Vector[-1,0,0];

}

Constraint {
  { Name DeplacementX ; Type Assign ;
    Case {
    }
  }
  { Name DeplacementY ; Type Assign ;
    Case {
       { Region Edges; Value 0.0 ; }
    }
  }
  { Name DeplacementZ ; Type Assign ;
    Case {

    }
  }
}

Jacobian {
  { Name MyJac ;
    Case {
      { Region DomainInf ; Jacobian VolAxiSphShell {Val_Rint, Val_Rext} ; }
      { Region Domain_Force ; Jacobian SurAxi ; }
      { Region All ; Jacobian VolAxi ; }
    }
  }
}

Integration {
  { Name GradGrad ;
    Case {
      { Type Gauss ;
                Case {
                 { GeoElement Point       ; NumberOfPoints  1 ; }
                 { GeoElement Line        ; NumberOfPoints  2 ; }
                 { GeoElement Triangle    ; NumberOfPoints  4 ; }
                 { GeoElement Quadrangle  ; NumberOfPoints  4 ; }
                }
      }
    }
  }
}

/* --------------------------------------------------------------------------*/

/* Mechanics - Displacement ux, uy, uz formulations */

FunctionSpace {
  { Name H_u_Mec2D ; Type Vector ;
    BasisFunction {
      { Name sxn ; NameOfCoef uxn ; Function BF_NodeX ;
                dFunction {BF_NodeX_D12, BF_Zero} ;
        Support DomainTot ; Entity NodesOf[ All ] ; }
      { Name syn ; NameOfCoef uyn ; Function BF_NodeY ;
                dFunction {BF_NodeY_D12, BF_Zero} ;
        Support DomainTot ; Entity NodesOf[ All ] ; }
    }
    Constraint {
      { NameOfCoef uxn ;
        EntityType NodesOf ; NameOfConstraint DeplacementX ; }
      { NameOfCoef uyn ;
        EntityType NodesOf ; NameOfConstraint DeplacementY ; }
    }
  }
}

/*------------------------------------------------------------------------*/

Formulation {
  { Name Mec2D_u ; Type FemEquation ;
    Quantity {
      { Name u ; Type Local ; NameOfSpace H_u_Mec2D ; }
    }
    Equation {
      Galerkin { [ C_m[] * Dof{D1 u}, {D1 u} ] ;
                 In Domain_Disp ; Jacobian MyJac ; Integration GradGrad ; }
      Galerkin { [ -F[] , {u} ] ;
                 In Domain_Force; Jacobian MyJac; Integration GradGrad; }
    }
  }
}

/*------------------------------------------------------------------------*/

Resolution {
  { Name Mec2D_u ;
    System {
      { Name Sys_Mec ; NameOfFormulation Mec2D_u ; }
    }
    Operation { Generate Sys_Mec ; Solve Sys_Mec ; SaveSolution Sys_Mec ; }
  }
}

/*------------------------------------------------------------------------*/

PostProcessing {
  { Name Mec2D_u ; NameOfFormulation Mec2D_u ;
    PostQuantity {
        { Name u ; Value { Term { [ {u} ]   ; In Domain_Disp ; Jacobian MyJac ; Integration GradGrad ;} } }
        { Name um ; Value { Term { [Norm[{u}]] ; In Domain_Disp ; Jacobian MyJac ; Integration GradGrad ;} } }
        { Name Sx ; Value { Term { [CompX[C_m[]*{D1 u}]] ; In Domain_Disp ; Jacobian MyJac ; Integration GradGrad ;} } }
        { Name Sy ; Value { Term { [CompY[C_m[]*{D1 u}]] ; In Domain_Disp ; Jacobian MyJac ; Integration GradGrad ;} } }
        { Name Sz ; Value { Term { [CompZ[C_m[]*{D1 u}]] ; In Domain_Disp ; Jacobian MyJac ; Integration GradGrad ;} } }
        { Name F ; Value { Term { [F[]]   ; In Domain_Force ; Jacobian MyJac ; Integration GradGrad ;} } }
        { Name Vm ; Value { Term {
                  [Sqrt[ CompX[C_m[]*{D1 u}]#1^2 + CompY[C_m[]*{D1 u}]#2^2 - #1*#2
                +  3*(CompZ[C_m[]*{D1 u}])^2   ] ] ; In Domain_Disp ; Jacobian MyJac ; Integration GradGrad ;} } }
    }
  }
}

PostOperation Map_u UsingPost Mec2D_u {
  Print [ u,  OnElementsOf Domain_Disp, File "u.pos"] ;
  Print [ um, OnElementsOf Domain_Disp,  File "um.pos"] ;
  Print [ Sx, OnElementsOf Domain_Disp,  File "Sx.pos"] ;
  Print [ Sy, OnElementsOf Domain_Disp,  File "Sy.pos"] ;
  Print [ Sz, OnElementsOf Domain_Disp,  File "Sz.pos"] ;
  Print [ F,  OnElementsOf Domain_Force,  File "F.pos"] ;
  Print [ Vm , OnElementsOf Domain_Disp, File "Vm.pos"] ;
}


Best regards,


Yves DUPUIS
Doctor / Engineer in Mechatronics
2, rue des champs
F-27950 St-Marcel - France
Tél : +33 2 76 48 51 25
Yves.dupuis at s2m.fr<mailto:Yves.dupuis at s2m.fr>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.geuz.org/pipermail/getdp/attachments/20151218/1316d8bb/attachment-0001.html>