24.10. [V6.04.112] : SSNV112 - Incompressible hollow cylinder (large strains)

Contents

24.10.1. Summary

This test verifies the implementation of Code_Aster quasi-incompressible elements in quasistatic large strains for a three-dimensional, axisymmetric, or two-dimensional problem (plane strains). We consider a hollow cylinder subjected to an internal radial displacement. The material has a Poisson’s ratio equal to 0.4999 and we use the quasi-incompressible elements INCO_UPG/INCO_UPGB with SIMO_MIEHE and GDEF_LOG strains, and INCO_UP elements with GDEF_LOG strains.

24.10.2. Reference problem

24.10.2.1. Geometry

../../_images/fig1_v6.04.112.png

Fig. 24.10.1 Schematic of hollow incompressible cylinder

Geometry of cylinder:

  • Inner radius \(a\) = 0.1 m

  • Outer radius \(b\) = 0.2 m

Coordinates of the points:

A

B

E

F

C

D

\(x\)

0.1

0.2

\(0.1\times\cos(45)\)

\(0.2\times\cos(45)\)

\(0.1\times\cos(22.5)\)

\(0.2\times\cos(22.5)\)

\(y\)

0

0

\(0.1\times\sin(45)\)

\(0.1\times\sin(45)\)

\(0.1\times\sin(22.5)\)

\(0.1\times\sin(22.5)\)

\(z\)

0

0

0

0

0

0

24.10.2.2. Material properties

  • \(E = 2.0 \times 10^5\) MPa

  • \(\nu = 0.4999\)

24.10.2.3. Boundary conditions and loads

  • Radial displacement: \(U_0 = 6.0 \times 10^{-5}\) m (expansion)

24.10.3. Reference solution

24.10.3.1. Method of calculation

For the problem studied here, the displacement \(\mathbf{u}\) is radial and thus of the form \(\mathbf{u} =[ u ,0 ,0]\).

Therefore, one can deduce the general form of the strain tensor in large strains:

\[\begin{split}\boldsymbol{b} = \boldsymbol{F}\boldsymbol{F}^T = \begin{bmatrix} (1+ u^{'})^2 & 0 & 0 \\ 0 & \left( 1+ \cfrac{u}{r} \right)^2 & 0 \\ 0 & 0 & 1 \end{bmatrix}\end{split}\]

as well as the form of the stress tensor, which is written easily if one takes into account the fact that \(J = \det\boldsymbol{F} =1\) for an incompressible material: \(\boldsymbol{\sigma} = - p \boldsymbol{I} +\mu \boldsymbol{b}_d\) , that is:

\[\begin{split}& \sigma_{rr} = - p +\mu \left( \tfrac{2}{3}(1+ u^{'} )^2-\tfrac{1}{3} \left( 1+\frac{u}{r} \right)^2-\tfrac{1}{3} \right) \\ & \sigma_{\theta\theta} = - p +\mu \left( - \tfrac{1}{3}(1+ u^{'} )^2+\tfrac{2}{3} \left( 1+\frac{u}{r} \right)^2 -\tfrac{1}{3} \right) \\ & \sigma_{zz} = - p +\mu \left( - \tfrac{1}{3}(1+ u^{'} )^2-\tfrac{1}{3} \left( 1+\frac{u}{r} \right)^2+ \tfrac{2}{3} \right) \\ & \sigma_{r \theta} = \sigma_{rz} = \sigma_{\theta z} = 0\end{split}\]

The expressions of the equilibrium equations reduce to the satisfaction of only one equation:

\[\sigma^{'}_{rr} + \frac{\sigma_{rr} - \sigma_{\theta\theta}}{r} =0\]

which allows us to determine the pressure \(p\) knowing the radial displacement field \(u\) :

\[p^{'} = \mu \left(\tfrac{4}{3}(1+ u^{'} ) u^{''} - \tfrac{2}{3} \left( 1+\frac{u}{r} \right) \left( \frac{u^{'}}{r} - \frac{u}{r^2} \right) + \frac{(1+ u^{'} )^2}{r} - \frac{\left( 1+ \frac{u}{r} \right)^2}{r} \right)\]

24.10.3.2. Specialization of the solution

The condition of incompressibility is written \(\det\boldsymbol{F}=1\) with

\[\begin{split}\boldsymbol{F} = \begin{bmatrix} 1+ u^{'} & 0 & 0 \\ 0 & 1+\frac{1}{r} & 0 \\ 0 & 0 & 1 \end{bmatrix} .\end{split}\]

The displacement \(u\) thus satisfies the following differential equation:

(24.10.1)\[ru^{'} + u + u^{'}u =0\]

The imposed load is the following

\[u = U_0 \quad \text{at} \quad r = a .\]

The displacement solution is thus:

\[\begin{split}& u_r = - r + r \sqrt{r^2 + U_0( U_0+2a )} \\ & u_{\theta} = u_z = 0\end{split}\]

The strain tensor thus has as the expression:

\[\begin{split}& b_{rr} = \frac{r^2}{r^2 + U_0( U_0+2a )} \\ & b_{\theta\theta} = \frac{r^2 + U_0( U_0+2a )}{r^2} \\ & b_{zz} = 1 \\ & b_{r \theta} = b_{z\theta} = b_{\theta z} = 0\end{split}\]

and the stresses are :

\[\begin{split}& \sigma_{rr} = - p +\mu \left( \tfrac{2}{3} \frac{r^2}{ r^2 + U_0( U_0+2a )} -\tfrac{1}{3} \frac{r^2 + U_0( U_0+2a )}{r^2} -\tfrac{1}{3} \right) \\ & \sigma_{\theta\theta} =- p +\mu \left( -\tfrac{1}{3} \frac{r^2}{r^2 + U_0( U_0+2a )} +\tfrac{2}{3} \frac{r^2 + U_0( U_0+2a )}{r^2} -\tfrac{1}{3} \right) \\ & \sigma_{zz} = - p +\mu \left( -\tfrac{1}{3} \frac{r^2}{ r^2 + U_0( U_0+2a )} -\tfrac{1}{3} \frac{r^2 + U_0( U_0+2a )}{r^2} +\tfrac{2}{3} \right) \\ & \sigma_{r\theta} = \sigma_{z\theta} =\sigma_{\theta z} = 0\end{split}\]

with p obtained by integration of (24.10.1) which gives :

\[p = \mu \left( \frac{U_0( U_0+2a )}{6r^2} - \frac{2 U_0( U_0+2a )}{3 ( U_0( U_0+2a ) + r^2 )} - \log( r ) + \tfrac{1}{2} \log ( U_0( U_0+2a ) + r^2 ) \right) + C\]

where \(C\) is a constant.

One finally obtains the following numerical values:

at \(r =0.1\) :

at \(r =0.2\) :

\(u_r = 6 \times 10^{-5}\)

\(u_r = 3.0067 \times 10^{-5}\)

\(\sigma_{rr} = -59.9955\)

\(\sigma_{rr} = 0.\)

\(\sigma_{\theta\theta} = 99.9566\)

\(\sigma_{\theta\theta} = 40.006\)

\(\sigma_{zz} = 19.9326\)

\(\sigma_{zz} = 20.\)

\(E_{rr} = 0.0005994604316761909\)

\(E_{\theta\theta} = -0.0006001799999999502\)

The transformation to the Cartesian system is done using the following relations:

\[\begin{split}& \sigma_{xx} = \sigma_{rr} \cos^2\theta+\sigma_{\theta\theta} \sin^2\theta-2\sigma_{r\theta} \sin{\theta}\cos\theta \\ & \sigma_{\theta\theta} = \sigma_{rr} \sin^2\theta+\sigma_{\theta\theta} \cos^2\theta+2\sigma_{r \theta} \sin\theta\cos\theta \\ & \sigma_{zz} = \sigma_{rr} \sin\theta\cos\theta-\sigma_{\theta\theta} \sin\theta\cos\theta- 2\sigma_{r \theta} (\cos^2\theta-\sin^2\theta)\end{split}\]

24.10.3.3. Reference quantities and results

We compare the following reference values:

  • displacements \(( u,v )\) at the points A and F ,

  • stresses \((\sigma_{xx} , \sigma_{yy} , \sigma_{zz} , \sigma_{xy} )\) at the points A and F ,

  • Von Mises and Tresca stresses, as well as the eigenvalues the stress tensor, at the point A .

24.10.4. Model A : 20-node hexahedra, SIMO_MIEHE strains, 3D_INCO_UPG elements

24.10.4.1. Characteristics of model

Mesh with incompressible elements 3D_INCO_UPG (DEFORMATION=’SIMO_MIEHE’) of type HEXA20 only.

../../_images/fig2_v6.04.112.svg

Along the \(z\)-axis:

  • cylinder thickness \(e =0.01\)

  • 2 layers of elements

Boundary conditions:

  • faces AEFB (\(z =0\) and \(z =0.01\))

    DDL_IMPO = GROUP_NO = 'FACSUP' DZ = 0.
               GROUP_NO = 'FACINF' DZ = 0.
    
  • face AB

    DDL_IMPO = GROUP_NO = 'FACEAB' DX = 0.
    
  • face EF

    FACE_IMPO = GROUP_MA = 'FACEEF' DNOR = 0.
    
  • face AE

    FACE_IMPO = GROUP_MA = 'FACEAE' DNOR = -6.0e-5
    

The Python command file for running this model is listed below. The file can be downloaded from ssnv112a_upd.comm.

# SSNV112A

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED')

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = ('A', 'E', 'F'))))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M1',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.005)))
                
# Set up correct face normal orientation
mesh = MODI_MAILLAGE(reuse = mesh,
                     MAILLAGE = mesh,
                     ORIE_PEAU_3D = _F(GROUP_MA = ('FACEAB','FACSUP','FACINF','FACEEF','FACEAE')))

# Set up model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(GROUP_MA = ('VOLUME','FACEEF','FACEAE','FACEAB','FACSUP','FACINF'),
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = '3D_INCO_UPG'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.,
                                   NU = 0.49999,
                                   ALPHA = 0.),
                         ECRO_LINE = _F(D_SIGM_EPSI = 1000.,
                                        SY = 1.E9))

# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Assign BCs
bcs = AFFE_CHAR_MECA(MODELE = model,
                     DDL_IMPO = (_F(GROUP_MA = 'FACEAB',
                                    DX = 0.),
                                 _F(GROUP_MA = 'FACSUP',
                                    DZ = 0.),
                                 _F(GROUP_MA = 'FACINF',
                                    DZ = 0.)),
                     FACE_IMPO = (_F(GROUP_MA = 'FACEEF',
                                     DNOR = 0.),
                                  _F(GROUP_MA = 'FACEAE',
                                     DNOR = -6.E-5)))

# Set up timesteps
l_times = DEFI_LIST_REEL(DEBUT = 0.,
                         INTERVALLE = _F(JUSQU_A = 1.,
                                         NOMBRE = 1))

# Set up ramp function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0., 0.,
                             1., 1.))

#--------------------------------------------------------------------------------
# Solve system (singularity detection on, Newton process corrects any errors)
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = _F(CHARGE = bcs,
                                  FONC_MULT = ramp),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION = 'SIMO_MIEHE'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1))

# Compute stresses
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CRITERES = ('SIEQ_ELNO', 'SIEQ_NOEU'),
                    CONTRAINTE = ('SIGM_ELNO', 'SIGM_NOEU'))

# Compute strains
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    DEFORMATION = ('EPSG_NOEU'))

# Compute error  
result2 = CALC_ERREUR(RESULTAT = result,
                      OPTION = 'ERME_ELEM')

result = CALC_ERREUR(reuse = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))

#--------------------------------------------------------------------------------
# Verification (comparison with results for nu = 0.5)
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = 0.0E+00,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 1.0E-05),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  6.0E-05,
                     VALE_REFE = 6.0E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = -2.12187959E-05,
                     VALE_REFE = -2.1217941000000001E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  2.12187959E-05,
                     VALE_REFE = 2.1217941000000001E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3)))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 99.921827837246,
                     VALE_REFE = 99.956599999999995,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = -59.870704709366,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 19.977818919888,
                     VALE_REFE = 19.932600000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.035000000000000003),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 0.028688762356273,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 1.2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 20.027385715412,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 19.978641342286,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 19.999585994625,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 20.023903515086,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3)))

TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 138.38440967732,
                     VALE_REFE = 138.52260000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 159.79254284803,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -59.870709860076,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 19.977818919888,
                     VALE_REFE = 19.932600000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.035000000000000003,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 99.921832987956,
                     VALE_REFE = 99.956599999999995,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-2,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 138.38440967732,
                     VALE_REFE = 138.52260000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02,
                     GROUP_MA = 'M1')))

#--------------------------------------------------------------------------------
# Check error estimate in residual
TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 0.14875374567466,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M1'))

TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result2,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 0.14875374567466,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M1'))

TEST_RESU(RESU = _F(GROUP_NO = 'A',
                    INST = 1.0,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELNO',
                    NOM_CMP = 'ERREST',
                    VALE_CALC = 9.5255088723924E-05,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M1'))

#--------------------------------------------------------------------------------
# Test EPSG_ELGA
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSG_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 0.000599576100401,
                     VALE_REFE = 0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-4),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSG_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -0.00059885996551,
                     VALE_REFE = -0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.2E-3)))

# End
FIN()

24.10.4.2. Characteristics of the mesh

../../_images/ssnv112a_upd_mesh.png

Code_Aster mesh

gmsh mesh

Nodes

1501

1502

HEXA20 elements

240

240

The mesh was recreated with gmsh. The annotated Python file for generating this model is listed below. The file can be downloaded from ssnv112a_upd.py.

#!/usr/bin/env python
# coding: utf-8

import gmsh
import sys
import math

gmsh.initialize()

# Use OpenCASCADE kernel
model = gmsh.model
occ = model.occ
mesh = model.mesh
model.add("ssnv112a")

# Default element size
el_size = 0.01

# Geometry
RI = 0.1
RE = 0.2
NR = 12
NT = 10
NZ = 2
H = 0.01

# Add points
PO = occ.addPoint(0.,  0.,  0., el_size)
POP = occ.addPoint(0.,  0.,  H, el_size)
A = occ.addPoint(0.,  RI,  0., el_size)
B = occ.addPoint(0.,  RE,  0., el_size)
E = occ.addPoint((RI*(2.**0.5)/(-2.)), (RI*(2.**0.5)/2.),  0., el_size)
F = occ.addPoint((RE*(2.**0.5)/(-2.)), (RE*(2.**0.5)/2.),  0., el_size)
node_mid = occ.addPoint(0., RI, (H/NZ/2.), el_size)

# Add lines and arcs
LAB = occ.addLine(A, B)
LBF = occ.addCircleArc(B, PO, F)
LFE = occ.addLine(F, E)
LEA = occ.addCircleArc(E, PO, A)

# Add curve loop and plane surface
FACINF_loop = occ.addCurveLoop([LAB, LBF, LFE, LEA])
FACINF = occ.addPlaneSurface([FACINF_loop])

# Create volume by extrusion
VOLUME = occ.extrude([(2, FACINF)], 0., 0., H, [2], recombine=True)

occ.synchronize()

print(VOLUME)

# Physical groups for the points
A_g = model.addPhysicalGroup(0, [A])
model.setPhysicalName(0, A_g, 'A')
B_g = model.addPhysicalGroup(0, [B])
model.setPhysicalName(0, B_g, 'B')
E_g = model.addPhysicalGroup(0, [E])
model.setPhysicalName(0, E_g, 'E')
F_g = model.addPhysicalGroup(0, [F])
model.setPhysicalName(0, F_g, 'F')
AP_g = model.addPhysicalGroup(0, [7])
model.setPhysicalName(0, AP_g, 'AP')
EP_g = model.addPhysicalGroup(0, [10])
model.setPhysicalName(0, EP_g, 'EP')
nodemid_g = model.addPhysicalGroup(0, [node_mid])
model.setPhysicalName(0, nodemid_g, 'NOEUMI')

# Physical groups for the edges
LAB_g = model.addPhysicalGroup(1, [LAB])
model.setPhysicalName(1, LAB_g, 'LAB')
LBF_g = model.addPhysicalGroup(1, [LBF])
model.setPhysicalName(1, LBF_g, 'LBF')
LFE_g = model.addPhysicalGroup(1, [LFE])
model.setPhysicalName(1, LFE_g, 'LFE')
LEA_g = model.addPhysicalGroup(1, [LEA])
model.setPhysicalName(1, LEA_g, 'LEA')

# Physical groups for the faces
FACEAB_g = model.addPhysicalGroup(2, [2])
model.setPhysicalName(2, FACEAB_g, 'FACEAB')
FACEAE_g = model.addPhysicalGroup(2, [5])
model.setPhysicalName(2, FACEAE_g, 'FACEAE')
FACSUP_g = model.addPhysicalGroup(2, [6])
model.setPhysicalName(2, FACSUP_g, 'FACSUP')
FACEEF_g = model.addPhysicalGroup(2, [4])
model.setPhysicalName(2, FACEEF_g, 'FACEEF')
FACINF_g = model.addPhysicalGroup(2, [FACINF])
model.setPhysicalName(2, FACINF_g, 'FACINF')

# Physical group for the volume
VOLUME_g = model.addPhysicalGroup(3, [1])
model.setPhysicalName(3, VOLUME_g, 'VOLUME')

num_nodes = NT+1
for curve in [2, 4, 9, 12]:
    #print(curve)
    mesh.setTransfiniteCurve(curve, num_nodes)
num_nodes = NR+1
for curve in [1, 3, 7, 11]:
    #print(curve)
    mesh.setTransfiniteCurve(curve, num_nodes)
num_node = NZ+1
for curve in [5, 6, 8, 10]:
    mesh.setTransfiniteCurve(curve, num_nodes)

for surf in occ.getEntities(2):
    mesh.setTransfiniteSurface(surf[1])

for vol in occ.getEntities(3):
    mesh.setTransfiniteVolume(vol[1])

#gmsh.option.setNumber('Mesh.Algorithm', 8)
gmsh.option.setNumber('Mesh.RecombineAll', 1)
gmsh.option.setNumber('Mesh.RecombinationAlgorithm', 1)
gmsh.option.setNumber('Mesh.Recombine3DLevel', 2)
gmsh.option.setNumber('Mesh.ElementOrder', 2)
gmsh.option.setNumber('Mesh.MshFileVersion', 2.2)
gmsh.option.setNumber('Mesh.MedFileMinorVersion', 0)
gmsh.option.setNumber('Mesh.SaveAll', 0)
gmsh.option.setNumber('Mesh.SaveGroupsOfNodes', 1)
gmsh.option.setNumber('Mesh.SecondOrderIncomplete', 1)

# Generate mesh
mesh.generate(3)
mesh.recombine()

# Save mesh
gmsh.write("ssnv112a_upd.med")

gmsh.fltk.run()

gmsh.finalize()


24.10.4.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(u\)

ANALYTICAL

\(1.0\times 10^{-5}\)

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

99.9566

0.01

\(\sigma_{yy}\)

ANALYTICAL

-59.9955

0.02

\(\sigma_{zz}\)

ANALYTICAL

19.9326

0.035

\(\sigma_{xy}\)

ANALYTICAL

0.012

VMIS

ANALYTICAL

138.5226

0.02

TRESCA

ANALYTICAL

159.9521

0.02

PRIN_1

ANALYTICAL

-59.9955

0.02

PRIN_2

ANALYTICAL

19.9326

0.035

PRIN_3

ANALYTICAL

99.9566

0.01

VMIS_SG

ANALYTICAL

138.5226

0.02

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(-2.1217\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(v\)

ANALYTICAL

\(2.1217\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

20.003

0.005

\(\sigma_{yy}\)

ANALYTICAL

20.003

0.005

\(\sigma_{zz}\)

ANALYTICAL

20.003

0.005

\(\sigma_{xy}\)

ANALYTICAL

20.003

0.005

For the Green-Lagrange strains:

Identification

Type of reference

Reference value

Tolerance

A

\(E_{xx}\)

ANALYTICAL

0.00059946

2.E-4

\(E_{yy}\)

ANALYTICAL

-0.00060018

2.3E-3

24.10.4.4. Remarks

We obtains very good results since for all the examined quantities, the difference between the numerical solution obtained with the code and the analytical solution is lower than 0.1% for displacements, lower than 3.5% for the stresses, and lower than 0.03% for the strains.

24.10.5. Model B : 10-node tetrahedra, SIMO_MIEHE strains, 3D_INCO_UPG elements

24.10.5.1. Characteristics of model

../../_images/fig3_v6.04.112.svg

Mesh with 3D_INCO_UPG incompressible elements (DEFORMATION=’ SIMO_MIEHE’) of type TETRA10

AB is on the axis OX (contrary to Lgreen:Model A).

The original Code_Aster mesh was obtained with GMSH using a density of 0.01.

Boundary conditions:

  • faces AEFB (\(z =0\) and \(z =0.01\))

    DDL_IMPO = GROUP_NO = 'FACSUP' DZ = 0.
               GROUP_NO = 'FACINF' DZ = 0.
    
  • face AB

    DDL_IMPO = GROUP_NO = 'FACEAB' DY = 0.
    
  • face EF

    FACE_IMPO = GROUP_MA = 'FACEEF'  DNOR = 0.
    
  • face AE

    FACE_IMPO = GROUP_MA = 'FACEAE'  DNOR = -6.0E-5
    

The Python command file for running this model is listed below. The file can be downloaded from ssnv112b_upd.comm.

# SSNV112B

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED',
                     UNITE = 20)

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = 'A',
                                      NOM = 'A'),
                                   _F(GROUP_MA = 'F',
                                      NOM = 'F'),
                                   _F(NOM = 'N48',
                                      OPTION = 'ENV_SPHERE',
                                      POINT = (9.93712209893243E-02,  1.11964476103304E-02,  0.00000000000000E+00),
                                      RAYON = 0.002,
                                      PRECISION = 0.001),
                                   _F(NOM = 'N84',
                                      OPTION = 'ENV_SPHERE',
                                      POINT = (9.93712209893243E-02,  1.11964476103307E-02,  1.00000000000000E-02),
                                      RAYON = 0.002,
                                      PRECISION = 0.001),
                                   _F(NOM = 'N362',
                                      OPTION = 'ENV_SPHERE',
                                      POINT = (1.03360166268687E-01,  5.80458243110394E-03,  5.00000000000017E-03),
                                      RAYON = 0.002,
                                      PRECISION = 0.001)))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M1',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.005),
                                   _F(NOM = 'M2',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'N48',
                                      RAYON = 0.005),
                                   _F(NOM = 'M3',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'N84',
                                      RAYON = 0.005),
                                   _F(NOM = 'M4',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'N362',
                                      RAYON = 0.005)))

# Define element group from intersection
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M537',
                                      INTERSEC = ('M1', 'M2', 'M3', 'M4'))))

# Change normal orientation
mesh = MODI_MAILLAGE(reuse = mesh,
                     MAILLAGE = mesh,
                     ORIE_PEAU_3D = _F(GROUP_MA = ('FACEEF','FACEAE','FACEAB','FACSUP','FACINF')))

# Assign model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(GROUP_MA = ('VOLUME','FACEEF','FACEAE'),
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = '3D_INCO_UPG'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.,
                                   NU = 0.49999,
                                   ALPHA = 0.),
                         ECRO_LINE = _F(D_SIGM_EPSI = 0.,
                                        SY = 1.E10))

# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Define BCs
bcs = AFFE_CHAR_MECA(MODELE = model,
                     DDL_IMPO = (_F(GROUP_MA = 'FACEAB',
                                    DY = 0.),
                                 _F(GROUP_MA = 'FACSUP',
                                    DZ = 0.),
                                 _F(GROUP_MA = 'FACINF',
                                    DZ = 0.)),
                     FACE_IMPO = (_F(GROUP_MA = 'FACEEF',
                                     DNOR = 0.),
                                  _F(GROUP_MA = 'FACEAE',
                                     DNOR = -6.E-5)))

# DXF  =  DEFI_FONCTION (NOM_PARA  =  'X',
#                      VALE  =  (0.1, 0., 0.2, 6.E-4 ))
# DYF  =  DEFI_FONCTION (NOM_PARA  =  'Y',
#                      VALE  =  (0.1, 0., 0.2, 6.E-4 ))
# DX0  =  DEFI_FONCTION (NOM_PARA  =  'X',
#                      VALE  =  (0.0, 0., 0.2, 0. ))
# DY0  =  DEFI_FONCTION (NOM_PARA  =  'Y',
#                      VALE  =  (0.0, 0., 0.1, 0. ))
# CH2 = AFFE_CHAR_MECA_F(MODELE = MO,
#                      FACE_IMPO = (_F(GROUP_MA = 'FACEAE', DX  =  DXF , DY =  DYF ),
#                                 _F( GROUP_MA  =  'FACEEF',DNOR  =  DX0),
#                                 _F( GROUP_MA  =  'FACEAB', DNOR  =  DX0)))

# Set up list of times
l_vals = DEFI_LIST_REEL(DEBUT = 0.,
                        INTERVALLE = _F(JUSQU_A = 1.,
                                        NOMBRE = 1))

# Define ramp function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0.,0.,
                             1.,1.))

# Set up time stepping
l_times = DEFI_LIST_INST(DEFI_LIST = _F(LIST_INST = l_vals))

# Run
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = _F(CHARGE = bcs,
                                FONC_MULT = ramp),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION = 'SIMO_MIEHE'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1))

# Compute stresses
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CRITERES = ('SIEQ_ELNO', 'SIEQ_NOEU'),
                    CONTRAINTE = ('SIGM_ELNO', 'SIGM_NOEU'))

# Compute error estimate
result = CALC_ERREUR(reuse = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))


# Verify displacements
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  0.00000000E+00,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 1.0000000000000001E-05),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC =  6.0094539827568E-05,
                     VALE_REFE = 6.0000000000000002E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  2.1197556565684E-05,
                     VALE_REFE = 2.1217941000000001E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC =  2.1197556565684E-05,
                     VALE_REFE = 2.1217941000000001E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3)))
  
# Verify stresses
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 98.623366354791,
                     VALE_REFE = 99.956599999999995,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = -60.91424635705,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.025000000000000001),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 19.381219776458,
                     VALE_REFE = 19.932600000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.03),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = -2.7595554661147,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.0),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 19.94684342592,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 19.905535502833,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.027764049269,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = -19.897022342612,
                     VALE_REFE = -20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-2)))
  
# Verify equivalent stresses
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 138.26650657864,
                     VALE_REFE = 138.52260000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-2,
                     GROUP_MA = 'A'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 159.65159713885,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-2,
                     GROUP_MA = 'A'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -60.969978765801,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.025000000000000001,
                     GROUP_MA = 'A'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 19.37870016695,
                     VALE_REFE = 19.932600000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.03,
                     GROUP_MA = 'A'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 98.68161837305,
                     VALE_REFE = 99.956599999999995,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.5E-2,
                     GROUP_MA = 'A'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 138.26650657864,
                     VALE_REFE = 138.52260000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-2,
                     GROUP_MA = 'A')))
  
#--------------------------------------------------------------------------------
#  Verify error estimate
TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 1.4250089686782,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M537'))
  
TEST_RESU(RESU = _F(GROUP_NO = 'A',
                    INST = 1.0,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELNO',
                    NOM_CMP = 'ERREST',
                    VALE_CALC = 4.3238401812636E-04,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M537'))
  
# End
FIN()
  

24.10.5.2. Characteristics of the mesh

../../_images/ssnv112b_upd_mesh.png

Code_Aster mesh

gmsh mesh

Nodes

2064

1502

TETRA10 elements

1730

1387

The mesh was recreated with gmsh. The annotated Python file for generating this model is listed below. The file can be downloaded from ssnv112b_upd.py.

#!/usr/bin/env python
# coding: utf-8

# %load ssnv112b_upd.py

import gmsh
import sys
import math

gmsh.initialize()

# Use OpenCASCADE kernel
model = gmsh.model
occ = model.occ
mesh = model.mesh
model.add("ssnv112b")

# Geometry
ri=0.1
re=0.2
h=0.01

# Default element size
dens = 0.01;

# Points of construction
PO = occ.addPoint(0, 0, 0,  dens)
POP = occ.addPoint(0, 0, h,  dens)

# Points of the plane of the base z=0
A = occ.addPoint(ri, 0., 0,  dens)
B = occ.addPoint(re, 0., 0,  dens)
E = occ.addPoint((ri/(2**0.5)) , (ri/(2**0.5)), 0.,  dens)
F = occ.addPoint(re/(2**0.5) , re/(2**0.5) , 0.,  dens)

# Points of the plane supérieur z=h
PC = occ.addPoint(ri, 0., h,  dens)
PD = occ.addPoint(re, 0., h,  dens)
PG = occ.addPoint(ri*(2**0.5)/2 , ri*(2**0.5)/2 , h,  dens)
PH = occ.addPoint(re*(2**0.5)/2 , re*(2**0.5)/2 , h,  dens)

# Lines
LAB = occ.addLine(A, B)
LBF = occ.addCircleArc(B, PO, F)
LFE = occ.addLine(F, E)
LEA = occ.addCircleArc(E, PO, A)

LCD = occ.addLine(PC, PD)
LDH = occ.addCircleArc(PD, POP, PH)
LHG = occ.addLine(PH, PG)
LGC = occ.addCircleArc(PG, POP, PC)

LAC = occ.addLine(A, PC)
LBD = occ.addLine(B, PD)
LEG = occ.addLine(E, PG)
LFH = occ.addLine(F, PH)

# Surfaces
FACINF_loop = occ.addCurveLoop([LAB, LBF, LFE, LEA])
FACINF = occ.addPlaneSurface([FACINF_loop])
FACSUP_loop = occ.addCurveLoop([LCD, LDH, LHG, LGC])
FACSUP = occ.addPlaneSurface([FACSUP_loop])
FACEAB_loop = occ.addCurveLoop([-LBD, -LAB, LAC, LCD])
FACEAB = occ.addPlaneSurface([FACEAB_loop])
FACEAE_loop = occ.addCurveLoop([LGC, -LAC, -LEA, LEG])
FACEAE = occ.addSurfaceFilling(FACEAE_loop)
FACEEF_loop = occ.addCurveLoop([-LEG, -LFE, LFH, LHG])
FACEEF = occ.addPlaneSurface([FACEEF_loop])
extrados_loop = occ.addCurveLoop([-LDH, -LBD, LBF, LFH])
extrados = occ.addSurfaceFilling(extrados_loop)

# Volume
surf_loop = occ.addSurfaceLoop([FACSUP, FACEAB, extrados, FACINF, FACEEF, FACEAE])
VOLUME = occ.addVolume([surf_loop])

occ.synchronize()

# Physical groups for the points
A_g = model.addPhysicalGroup(0, [A])
model.setPhysicalName(0, A_g, 'A')
F_g = model.addPhysicalGroup(0, [F])
model.setPhysicalName(0, F_g, 'F')

# Physical groups for the faces
FACEAB_g = model.addPhysicalGroup(2, [FACEAB])
model.setPhysicalName(2, FACEAB_g, 'FACEAB')
FACEAE_g = model.addPhysicalGroup(2, [FACEAE])
model.setPhysicalName(2, FACEAE_g, 'FACEAE')
FACSUP_g = model.addPhysicalGroup(2, [FACSUP])
model.setPhysicalName(2, FACSUP_g, 'FACSUP')
FACEEF_g = model.addPhysicalGroup(2, [FACEEF])
model.setPhysicalName(2, FACEEF_g, 'FACEEF')
FACINF_g = model.addPhysicalGroup(2, [FACINF])
model.setPhysicalName(2, FACINF_g, 'FACINF')

# Physical group for the volume
VOLUME_g = model.addPhysicalGroup(3, [1])
model.setPhysicalName(3, VOLUME_g, 'VOLUME')

gmsh.option.setNumber('Mesh.Algorithm', 8)
gmsh.option.setNumber('Mesh.ElementOrder', 2)
gmsh.option.setNumber('Mesh.MshFileVersion', 2.2)
gmsh.option.setNumber('Mesh.MedFileMinorVersion', 0)
gmsh.option.setNumber('Mesh.SaveAll', 0)
gmsh.option.setNumber('Mesh.SaveGroupsOfNodes', 1)
gmsh.option.setNumber('Mesh.SecondOrderIncomplete', 1)

# Generate mesh
mesh.generate(3)

# Save mesh
gmsh.write("ssnv112b_upd.med")

gmsh.fltk.run()

gmsh.finalize()


24.10.5.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(u\)

ANALYTICAL

\(2.0\times 10^{-5}\)

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

-59.9955

0.025

\(\sigma_{yy}\)

ANALYTICAL

99.9566

0.02

\(\sigma_{zz}\)

ANALYTICAL

19.9326

0.03

\(\sigma_{xy}\)

ANALYTICAL

0.03

VMIS

ANALYTICAL

138.5226

0.01

TRESCA

ANALYTICAL

159.9521

0.01

PRIN_1

ANALYTICAL

-59.9955

0.025

PRIN_2

ANALYTICAL

19.9326

0.03

PRIN_3

ANALYTICAL

99.9566

0.015

VMIS_SG

ANALYTICAL

138.5226

0.01

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(-2.1217\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(v\)

ANALYTICAL

\(2.1217\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

20.003

0.005

\(\sigma_{yy}\)

ANALYTICAL

20.003

0.005

\(\sigma_{zz}\)

ANALYTICAL

20.003

0.005

\(\sigma_{xy}\)

ANALYTICAL

-20.003

0.01

24.10.5.4. Remarks

The results are accurate since the stresses are obtained with a precision lower than 3% (1% at the point F). The variation is a little more pronounced here than for HEXA20, but can be explained by the fact that the loading is imposed is less precise since displacement \(u\) at point A, is defined only with a precision of 0.158% against 0.077% (considering the factor 2 that one finds on the stresses).

24.10.6. Model C : 8-node quads, 6-node triangles, SIMO_MIEHE strains, D_PLAN_INCO_UPG elements

24.10.6.1. Characteristics of model

../../_images/fig4_v6.04.112.svg

Mesh with D_PLAN_INCO_UPG incompressible elements (DEFORMATION=’SIMO_MIEHE’) of type TRIA6 and QUAD8

Boundary conditions:

  • edge AB

    DDL_IMPO = GROUP_NO = 'LAB' DX = 0.
    
  • edge EF

    FACE_IMPO = GROUP_MA = 'LFE' DNOR = 0.
    
  • edge AE

    FACE_IMPO = GROUP_MA = 'LEA' DNOR = -6.0E-5
    

The Python command file for running this model is listed below. The file can be downloaded from ssnv112c_upd.comm.

# SSNV112C

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED')

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = ('A', 'F'))))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M1',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.005),
                                   _F(NOM = 'M223',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'F',
                                      RAYON = 0.005)))

# Assign model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(TOUT = 'OUI',
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = 'D_PLAN_INCO_UPG'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.0,
                                   NU = 0.4999,
                                   ALPHA = 0.),
                         ECRO_LINE = _F(D_SIGM_EPSI = 0.,
                                        SY = 1.E6))

# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Define BCs
bcs = AFFE_CHAR_MECA(MODELE = model,
                     DDL_IMPO = _F(GROUP_MA = 'AB',
                                   DX = 0.0),
                     FACE_IMPO = (_F(GROUP_MA = 'EF',
                                     DNOR = 0.0),
                                  _F(GROUP_MA = 'AE',
                                     DNOR = -6.E-5)))

# Define time steps
l_times = DEFI_LIST_REEL(DEBUT = 0.0,
                         INTERVALLE = _F(JUSQU_A = 1.0,
                                         NOMBRE = 1))

# Define ram function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0.0,0.0,
                             1.0,1.0),
                     PROL_DROITE = 'CONSTANT')

# Solve system
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = _F(CHARGE = bcs,
                                  FONC_MULT = ramp),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION = 'SIMO_MIEHE'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1))

# Compute stress
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CRITERES = ('SIEQ_ELNO', 'SIEQ_NOEU'),
                    CONTRAINTE = ('SIGM_ELNO', 'SIGM_NOEU'))

# Compute strain
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    DEFORMATION = ('EPSG_NOEU'))

# Compute error estimate
result = CALC_ERREUR(reuse = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))

#---------------------------------------------------------------
# Verification
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = -3.0998433584051E-25,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 1.0000000000000001E-05),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  6.0046297648992E-05,
                     VALE_REFE = 6.0000000000000002E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = -2.1211691767724E-05,
                     VALE_REFE = -2.1217941000000001E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  2.1211691767724E-05,
                     VALE_REFE = 2.1217941000000001E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3)))

TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 99.71016789128,
                     VALE_REFE = 99.956599999999995,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3,
                     GROUP_MA = 'M1'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = -61.046950765023,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.029999999999999999,
                     GROUP_MA = 'M1'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 19.523492136168,
                     VALE_REFE = 19.932600000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.029999999999999999,
                     GROUP_MA = 'M1'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 1.9020940979494,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.0,
                     GROUP_MA = 'M1'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 20.045606101941,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3,
                     GROUP_MA = 'M223'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 19.988332686642,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3,
                     GROUP_MA = 'M223'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.004784026711,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3,
                     GROUP_MA = 'M223'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 20.025166375832,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3,
                     GROUP_MA = 'M223')))

TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 139.26448073906,
                     VALE_REFE = 138.52260000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 160.80752773106,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -61.072155302402,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.029999999999999999,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 19.523492136168,
                     VALE_REFE = 19.932600000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.029999999999999999,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 99.735372428659 ,
                     VALE_REFE = 99.956599999999995,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 139.26448073906,
                     VALE_REFE = 138.52260000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02,
                     GROUP_MA = 'M1')))
  
TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 5.4288251112322E-04,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M1'))
  
TEST_RESU(RESU = _F(GROUP_NO = 'A',
                    INST = 1.0,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELNO',
                    NOM_CMP = 'ERREST',
                    VALE_CALC = 2.7480133846961E-06,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M1'))

TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSG_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 0.000601357472911,
                     VALE_REFE = 0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 4.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSG_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -0.000604235469839,
                     VALE_REFE = -0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 7.0E-3)))
  
# End
FIN()

24.10.6.2. Characteristics of the mesh

../../_images/ssnv112c_upd_mesh.png

Code_Aster mesh

gmsh mesh

Nodes

591

391

TRIA6 elements

200

100

QUAD8 elements

50

50

The mesh was recreated with gmsh. The annotated Python file for generating this model is listed below. The file can be downloaded from ssnv112c_upd.py.

#!/usr/bin/env python
# coding: utf-8

import gmsh
import sys
import math
import numpy as np

gmsh.initialize()

# Use OpenCASCADE kernel
model = gmsh.model
occ = model.occ
mesh = model.mesh
model.add("ssnv112c")

# Geometry
ri=0.1
re=0.2
c225 = np.cos(22.5*math.pi/180)
s225 = np.sin(22.5*math.pi/180)
NR = 10
NT = 5

# Default element size
dens = 0.01;

# Points of construction
PO = occ.addPoint(0, 0, 0,  dens)

# Points of the plane of the base z=0
A = occ.addPoint(0, ri, 0., dens)
B = occ.addPoint(0, re, 0., dens)
C = occ.addPoint(-ri*s225, ri*c225, 0, dens)
D = occ.addPoint(-re*s225, re*c225, 0, dens)
E = occ.addPoint(-(ri/(2**0.5)) , (ri/(2**0.5)), 0.,  dens)
F = occ.addPoint(-re/(2**0.5) , re/(2**0.5) , 0.,  dens)

# Lines
LAB = occ.addLine(A, B)
LBD = occ.addCircleArc(B, PO, D)
LDC = occ.addLine(D, C)
LCA = occ.addCircleArc(C, PO, A)

LDF = occ.addCircleArc(D, PO, F)
LFE = occ.addLine(F, E)
LEC = occ.addCircleArc(E, PO, C)

# Surfaces
tri_loop = occ.addCurveLoop([LAB, LBD, LDC, LCA])
tri = occ.addPlaneSurface([tri_loop])
quad_loop = occ.addCurveLoop([-LDC, LDF, LFE, LEC])
quad = occ.addPlaneSurface([quad_loop])

occ.synchronize()

# Physical groups for the points
A_g = model.addPhysicalGroup(0, [A])
model.setPhysicalName(0, A_g, 'A')
B_g = model.addPhysicalGroup(0, [B])
model.setPhysicalName(0, B_g, 'B')
C_g = model.addPhysicalGroup(0, [C])
model.setPhysicalName(0, C_g, 'C')
D_g = model.addPhysicalGroup(0, [D])
model.setPhysicalName(0, D_g, 'D')
E_g = model.addPhysicalGroup(0, [E])
model.setPhysicalName(0, E_g, 'E')
F_g = model.addPhysicalGroup(0, [F])
model.setPhysicalName(0, F_g, 'F')

# Physical groups for the edges
AB_g = model.addPhysicalGroup(1, [LAB])
model.setPhysicalName(1, AB_g, 'AB')
EF_g = model.addPhysicalGroup(1, [LFE])
model.setPhysicalName(1, EF_g, 'EF')
AE_g = model.addPhysicalGroup(1, [LCA, LEC])
model.setPhysicalName(1, AE_g, 'AE')
BF_g = model.addPhysicalGroup(1, [LBD, LDF])
model.setPhysicalName(1, BF_g, 'DF')

# Physical group for the faces
VOLUME_g = model.addPhysicalGroup(2, [tri, quad])
model.setPhysicalName(2, VOLUME_g, 'VOLUME')

num_nodes = NT+1
for curve in [LCA, LEC, LBD, LDF]:
    #print(curve)
    mesh.setTransfiniteCurve(curve, num_nodes)
num_nodes = NR+1
for curve in [LAB, LFE]:
    #print(curve)
    mesh.setTransfiniteCurve(curve, num_nodes)

for surf in occ.getEntities(2):
    mesh.setTransfiniteSurface(surf[1], arrangement='AlternateRight')

mesh.setRecombine(2, quad)

#gmsh.option.setNumber('Mesh.Algorithm', 7)
gmsh.option.setNumber('Mesh.ElementOrder', 2)
gmsh.option.setNumber('Mesh.MshFileVersion', 2.2)
gmsh.option.setNumber('Mesh.MedFileMinorVersion', 0)
gmsh.option.setNumber('Mesh.SaveAll', 0)
gmsh.option.setNumber('Mesh.SaveGroupsOfNodes', 1)
gmsh.option.setNumber('Mesh.SecondOrderIncomplete', 1)
gmsh.option.setNumber('Mesh.AnisoMax', 0)

# Generate mesh
mesh.generate(2)

# Save mesh
gmsh.write("ssnv112c_upd.med")

gmsh.fltk.run()

gmsh.finalize()


24.10.6.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(u\)

ANALYTICAL

\(1.0\times 10^{-5}\)

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(5.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

99.9566

0.005

\(\sigma_{yy}\)

ANALYTICAL

-59.9955

0.03

\(\sigma_{zz}\)

ANALYTICAL

19.9326

0.03

\(\sigma_{xy}\)

ANALYTICAL

0.03

VMIS

ANALYTICAL

138.5226

0.02

TRESCA

ANALYTICAL

159.9521

0.02

PRIN_1

ANALYTICAL

-59.9955

0.03

PRIN_2

ANALYTICAL

19.9326

0.03

PRIN_3

ANALYTICAL

99.9566

0.02

VMIS_SG

ANALYTICAL

138.5226

0.02

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(-2.1217\times 10^{-5}\)

\(5.0\times 10^{-3}\)

\(v\)

ANALYTICAL

\(2.1217\times 10^{-5}\)

\(5.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

20.003

0.005

\(\sigma_{yy}\)

ANALYTICAL

20.003

0.005

\(\sigma_{zz}\)

ANALYTICAL

20.003

0.005

\(\sigma_{xy}\)

ANALYTICAL

20.003

0.005

For the Green-Lagrange strains:

Identification

Type of reference

Reference value

Tolerance

A

\(E_{xx}\)

ANALYTICAL

0.000601357472911

4%

\(E_{yy}\)

ANALYTICAL

-0.000604235469839

0.7%

24.10.6.4. Remarks

As for the 3D model, the results obtained are completely satisfactory.

24.10.7. Model D : 8-node quads, 6-node triangles, SIMO_MIEHE strains, AXIS_INCO_UPG elements

24.10.7.1. Characteristics of model

../../_images/fig5_v6.04.112.svg

Mesh with AXIS_INCO_UPG incompressible elements (DEFORMATION=’SIMO_MIEHE’) of type TRIA6 and QUAD8.

Boundary conditions:

  • edge EF

    DDL_IMPO = GROUP_NO = 'FACSUP'    DY = 0.
    
  • edge AB

    DDL_IMPO = GROUP_NO = 'FACINF'    DY = 0.
    
  • edge AE

    FACE_IMPO = GROUP_MA = 'FACEAE'    DX = 6.0E-5
    

The Python command file for running this model is listed below. The file can be downloaded from ssnv112d_upd.comm.

#SSNV112D

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED')

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = ('A', 'E', 'F'))))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M1',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'E',
                                      RAYON = 0.002),
                                   _F(NOM = 'M2',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.002)))

# Assign model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(TOUT = 'OUI',
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = 'AXIS_INCO_UPG'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.0,
                                   NU = 0.4999,
                                   ALPHA = 0.),
                           ECRO_LINE = _F(D_SIGM_EPSI = 0.,
                                          SY = 1.E10))

# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Define BCs
bc_fix = AFFE_CHAR_MECA(MODELE = model,
                        DDL_IMPO = (_F(GROUP_MA = 'AB',
                                       DY = 0.0),
                                    _F(GROUP_MA = 'EF',
                                       DY = 0.0)))

bc_u = AFFE_CHAR_MECA(MODELE = model,
                      FACE_IMPO = _F(GROUP_MA = 'AE',
                                     DX = 6.E-5))

# Define time steps
l_times = DEFI_LIST_REEL(DEBUT = 0.0,
                         INTERVALLE = _F(JUSQU_A = 1.0,
                                         NOMBRE = 1))

# Define ramp function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0.0,0.0,
                             1.0,1.0),
                     PROL_DROITE = 'CONSTANT')

# Solve
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = (_F(CHARGE = bc_fix),
                                _F(CHARGE = bc_u,
                                   FONC_MULT = ramp)),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION = 'SIMO_MIEHE'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1,
                                    PCENT_PIVOT = 100))

# Compute stress
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CRITERES = ('SIEQ_ELNO', 'SIEQ_NOEU'),
                    CONTRAINTE = ('SIGM_ELNO', 'SIGM_NOEU'))

# Compute strain
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    DEFORMATION = ('EPSG_NOEU'))

# Compute error estimate
result = CALC_ERREUR(reuse  = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))

#---------------------------------------------------------------
# Verification
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC =  6.00000000E-05,
                     VALE_REFE = 6.0000000000000002E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC = 1.4655466658221E-25,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 1.0000000000000001E-05),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC =  3.0011319811218E-05,
                     VALE_REFE = 3.0000000000000001E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC = -6.1173649200553E-25,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 1.0000000000000001E-05)))
  
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = -59.861900272764,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 19.970735419254,
                     VALE_REFE = 19.932600000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 99.917097685929,
                     VALE_REFE = 99.956599999999995,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = -4.0727349939754E-13,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 1.0000000000000001E-05),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 0.025863092384066,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 0.029999999999999999),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 19.99747001123,
                     VALE_REFE = 20.0,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 39.996498606827,
                     VALE_REFE = 40.006,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = -4.8703761316557E-03,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 5.0000000000000001E-3)))

TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 138.37268290724,
                     VALE_REFE = 138.52260000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 159.77899795869,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -59.861900272764,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 19.970735419254,
                     VALE_REFE = 19.932600000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 99.917097685929,
                     VALE_REFE = 99.956599999999995,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 138.37268290724,
                     VALE_REFE = 138.52260000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.0000000000000001E-3,
                     GROUP_MA = 'M1')))

TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 6.3345205276007E-05,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M2'))

TEST_RESU(RESU = _F(GROUP_NO = 'A',
                    INST = 1.0,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELNO',
                    NOM_CMP = 'ERREST',
                    VALE_CALC = 1.1475160713679E-07,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M2'))

TEST_RESU(RESU = _F(NUME_ORDRE = 1,
                    GROUP_NO = 'A',
                    REFERENCE = 'ANALYTIQUE',
                    RESULTAT = result,
                    NOM_CHAM = 'EPSG_NOEU',
                    NOM_CMP = 'EPXX',
                    VALE_CALC = -0.000598704996172,
                    VALE_REFE = -0.0005994604316761909,
                    CRITERE = 'RELATIF',
                    PRECISION = 2.E-3))
 
# End
FIN()

24.10.7.2. Characteristics of the mesh

../../_images/ssnv112d_upd_mesh.png

Code_Aster mesh

gmsh mesh

Nodes

175

329

TRIA6 elements

40

80

QUAD8 elements

20

40

The mesh was recreated with gmsh. The annotated Python file for generating this model is listed below. The file can be downloaded from ssnv112d_upd.py.

#!/usr/bin/env python
# coding: utf-8

import gmsh
import sys
import math
import numpy as np

gmsh.initialize()

# Use OpenCASCADE kernel
model = gmsh.model
occ = model.occ
mesh = model.mesh
model.add("ssnv112d")

# Geometry
ri=0.1
re=0.2
rmid = 0.5*(ri+re)
h = 0.01
hmid = 0.5*h
NR = 10
NZ = 2

# Default element size
dens = 0.01;

# Points of construction
PO = occ.addPoint(0, 0, 0,  dens)

# Points of the plane of the base z=0
A = occ.addPoint(ri, 0., 0., dens)
B = occ.addPoint(re, 0., 0., dens)
C = occ.addPoint(ri, hmid, 0., dens)
D = occ.addPoint(re, hmid, 0., dens)
E = occ.addPoint(ri, h, 0.,  dens)
F = occ.addPoint(re, h, 0.,  dens)
G = occ.addPoint(rmid, 0., 0., dens)
H = occ.addPoint(rmid, h, 0., dens)
K = occ.addPoint(rmid, hmid, 0., dens)

# Lines
LAG = occ.addLine(A, G)
LGK = occ.addLine(G, K)
LKH = occ.addLine(K, H)
LKC = occ.addLine(K, C)
LHE = occ.addLine(H, E)
LEC = occ.addLine(E, C)
LCA = occ.addLine(C, A)

LGB = occ.addLine(G, B)
LBD = occ.addLine(B, D)
LDF = occ.addLine(D, F)
LDK = occ.addLine(D, K)
LFH = occ.addLine(F, H)

# Surfaces
quad_loop_1 = occ.addCurveLoop([LAG, LGK, LKC, LCA])
quad_1 = occ.addPlaneSurface([quad_loop_1])
quad_loop_2 = occ.addCurveLoop([-LKC, LKH, LHE, LEC])
quad_2 = occ.addPlaneSurface([quad_loop_2])
tri_loop_1 = occ.addCurveLoop([LGB, LBD, LDK, -LGK])
tri_1 = occ.addPlaneSurface([tri_loop_1])
tri_loop_2 = occ.addCurveLoop([-LDK, LDF, LFH, -LKH])
tri_2 = occ.addPlaneSurface([tri_loop_2])

occ.removeAllDuplicates()

occ.synchronize()

# Physical groups for the points
A_g = model.addPhysicalGroup(0, [A])
model.setPhysicalName(0, A_g, 'A')
B_g = model.addPhysicalGroup(0, [B])
model.setPhysicalName(0, B_g, 'B')
C_g = model.addPhysicalGroup(0, [C])
model.setPhysicalName(0, C_g, 'C')
D_g = model.addPhysicalGroup(0, [D])
model.setPhysicalName(0, D_g, 'D')
E_g = model.addPhysicalGroup(0, [E])
model.setPhysicalName(0, E_g, 'E')
F_g = model.addPhysicalGroup(0, [F])
model.setPhysicalName(0, F_g, 'F')
G_g = model.addPhysicalGroup(0, [G])
model.setPhysicalName(0, G_g, 'G')
H_g = model.addPhysicalGroup(0, [H])
model.setPhysicalName(0, H_g, 'H')
K_g = model.addPhysicalGroup(0, [K])
model.setPhysicalName(0, K_g, 'K')

# Physical groups for the edges
AB_g = model.addPhysicalGroup(1, [LAG, LGB])
model.setPhysicalName(1, AB_g, 'AB')
EF_g = model.addPhysicalGroup(1, [LFH, LHE])
model.setPhysicalName(1, EF_g, 'EF')
AE_g = model.addPhysicalGroup(1, [LEC, LCA])
model.setPhysicalName(1, AE_g, 'AE')
BF_g = model.addPhysicalGroup(1, [LBD, LDF])
model.setPhysicalName(1, BF_g, 'BF')
# CD_g = model.addPhysicalGroup(1, [LKC, LDK])
# model.setPhysicalName(1, CD_g, 'CD')

# Physical group for the faces
VOLUME_g = model.addPhysicalGroup(2, [tri_1, tri_2, quad_1, quad_2])
model.setPhysicalName(2, VOLUME_g, 'VOLUME')

num_nodes = NZ+1
for curve in [LGK, LKH, LBD, LDF, LEC, LCA]:
    #print(curve)
    mesh.setTransfiniteCurve(curve, num_nodes)
num_nodes = NR+1
for curve in [LAG, LGB, LFH, LHE, LDK, LKC]:
    #print(curve)
    mesh.setTransfiniteCurve(curve, num_nodes)

for surf in occ.getEntities(2):
    mesh.setTransfiniteSurface(surf[1], arrangement='AlternateRight')

mesh.setRecombine(2, quad_1)
mesh.setRecombine(2, quad_2)

#gmsh.option.setNumber('Mesh.Algorithm', 7)
gmsh.option.setNumber('Mesh.ElementOrder', 2)
gmsh.option.setNumber('Mesh.MshFileVersion', 2.2)
gmsh.option.setNumber('Mesh.MedFileMinorVersion', 0)
gmsh.option.setNumber('Mesh.SaveAll', 0)
gmsh.option.setNumber('Mesh.SaveGroupsOfNodes', 1)
gmsh.option.setNumber('Mesh.SecondOrderIncomplete', 1)
gmsh.option.setNumber('Mesh.AnisoMax', 0)

# Generate mesh
mesh.generate(2)
mesh.removeDuplicateNodes()

# Save mesh
gmsh.write("ssnv112d_upd.med")

gmsh.fltk.run()

gmsh.finalize()


24.10.7.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(u\)

ANALYTICAL

\(1.0\times 10^{-5}\)

\(\sigma_{xx}\)

ANALYTICAL

-59.9955

0.005

\(\sigma_{yy}\)

ANALYTICAL

19.9326

0.005

\(\sigma_{zz}\)

ANALYTICAL

99.9566

0.005

\(\sigma_{xy}\)

ANALYTICAL

0.00001

VMIS

ANALYTICAL

138.5226

0.005

TRESCA

ANALYTICAL

159.9521

0.005

PRIN_1

ANALYTICAL

-59.9955

0.005

PRIN_2

ANALYTICAL

19.9326

0.005

PRIN_3

ANALYTICAL

99.9566

0.005

VMIS_SG

ANALYTICAL

138.5226

0.005

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(3.0\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(v\)

ANALYTICAL

0

\(1.0\times 10^{-5}\)

\(\sigma_{xx}\)

ANALYTICAL

0.0

0.03

\(\sigma_{yy}\)

ANALYTICAL

20.0

0.005

\(\sigma_{zz}\)

ANALYTICAL

40.006

0.005

\(\sigma_{xy}\)

ANALYTICAL

0.0

0.005

For the Green-Lagrange strains:

Identification

Type of reference

Reference value

Tolerance

A

\(E_{xx}\)

ANALYTICAL

0.000598704996172

2.E-4

24.10.7.4. Remarks

The precision obtained is very good since all the stresses are obtained with a precision lower than 0.5% .

24.10.8. Model E : 15-node prisms, SIMO_MIEHE strains, 3D_INCO_UPG elements

24.10.8.1. Characteristics of model

../../_images/fig6_v6.04.112.svg

Mesh with 3D_INCO_UPG incompressible elements (DEFORMATION=’SIMO_MIEHE’) of type PENTA15 only.

Boundary conditions:

  • faces AEFB (\(z =0\) and \(z =0.01\))

    DDL_IMPO = GROUP_NO = 'FACSUP' DZ = 0.
               GROUP_NO = 'FACINF' DZ = 0.
    
  • face AB

    DDL_IMPO = GROUP_NO = 'FACEAB' DX = 0.
    
  • face EF

    FACE_IMPO = GROUP_MA = 'FACEEF' DNOR = 0.
    
  • face AE

    FACE_IMPO = GROUP_MA = 'FACEAE' DNOR = -6.0e-5
    

The Python command file for running this model is listed below. The file can be downloaded from ssnv112e_upd.comm.

#SSNV112E

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED')

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = 'A',
                                      NOM = 'A'),
                                   _F(GROUP_MA = 'F',
                                      NOM = 'F')))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M543',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.005)))

# Orient faces
mesh = MODI_MAILLAGE(reuse = mesh,
                     MAILLAGE = mesh,
                     ORIE_PEAU_3D = _F(GROUP_MA = ('FACEAB','FACSUP','FACINF','FACEEF','FACEAE')))

# Assign model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(GROUP_MA = ('VOLUME','FACEEF','FACEAE','FACEAB','FACSUP','FACINF'),
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = '3D_INCO_UPG'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.,
                                   NU = 0.49999,
                                   ALPHA = 0.),
                         ECRO_LINE = _F(D_SIGM_EPSI = 1000.,
                                        SY = 1.E9))
          
# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Define BCs
bcs = AFFE_CHAR_MECA(MODELE = model,
                     DDL_IMPO = (_F(GROUP_MA = 'FACEAB',
                                    DX = 0.),
                                 _F(GROUP_MA = 'FACSUP',
                                    DZ = 0.),
                                 _F(GROUP_MA = 'FACINF',
                                    DZ = 0.)),
                     FACE_IMPO = (_F(GROUP_MA = 'FACEEF',
                                     DNOR = 0.),
                                  _F(GROUP_MA = 'FACEAE',
                                     DNOR = -6.E-5)))

# Define time steps
l_times = DEFI_LIST_REEL(DEBUT = 0.,
                         INTERVALLE = _F(JUSQU_A = 1.,
                                         NOMBRE = 1))

# Define ramp function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0.,0.,
                             1.,1.))

# Solve
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = _F(CHARGE = bcs,
                                  FONC_MULT = ramp),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION = 'SIMO_MIEHE'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1))

# Compute stress
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CONTRAINTE = ('SIGM_ELNO','SIGM_NOEU'),
                    CRITERES = ('SIEQ_ELNO','SIEQ_NOEU'))

# Compute error
result = CALC_ERREUR(reuse = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))

#---------------------------------------------------------------
# Verification
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC =  0.00000000E+00,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 1.E-05),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  6.00000000E-05,
                     VALE_REFE = 6.E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-5),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = -2.1217875874389E-05,
                     VALE_REFE = -2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC = 2.1217875874389E-05,
                     VALE_REFE = 2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3)))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 99.971193612672,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.03),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = -59.82211342025,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.09),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.010316175799,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.08),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 0.076138755857272,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 0.5),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 19.99006825713,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.04),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 20.014677132881,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.17),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 19.999565494195,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.07),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 20.009756520627,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 8.E-3)))

TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 138.38514098497,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.05,
                     GROUP_MA = 'M543'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 159.79337959051,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.05,
                     GROUP_MA = 'M543'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -59.822149699046,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.09,
                     GROUP_MA = 'M543'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 20.010316175799,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.08,
                     GROUP_MA = 'M543'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 99.971229891469,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.03,
                     GROUP_MA = 'M543'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 138.38514098497,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.05,
                     GROUP_MA = 'M543')))

# End
FIN()

24.10.8.2. Characteristics of the mesh

../../_images/ssnv112e_upd_mesh.png

Code_Aster mesh

gmsh mesh

Nodes

1861

1565

PENTA15 elements

400

400

The mesh was recreated with gmsh. The annotated Python file for generating this model is listed below. The file can be downloaded from ssnv112e_upd.py.

#!/usr/bin/env python
# coding: utf-8

import gmsh
import sys
import math
import numpy as np

gmsh.initialize()

# Use OpenCASCADE kernel
model = gmsh.model
occ = model.occ
mesh = model.mesh
model.add("ssnv112e")

# Geometry
ri=0.1
re=0.2
h = 0.01
NR = 10
NT = 10

# Default element size
dens = 0.01;

# Points of construction
PO = occ.addPoint(0, 0, 0,  dens)

# Points of the plane of the base z=0
A = occ.addPoint(0, ri, 0., dens)
B = occ.addPoint(0, re, 0., dens)
E = occ.addPoint(-(ri/(2**0.5)) , (ri/(2**0.5)), 0.,  dens)
F = occ.addPoint(-re/(2**0.5) , re/(2**0.5) , 0.,  dens)

# Lines
LAB = occ.addLine(A, B)
LBF = occ.addCircleArc(B, PO, F)
LFE = occ.addLine(F, E)
LEA = occ.addCircleArc(E, PO, A)

# Surfaces
tri_loop = occ.addCurveLoop([LAB, LBF, LFE, LEA])
tri = occ.addPlaneSurface([tri_loop])

# Volume
vol = occ.extrude([(2, tri)], 0, 0, h, [2], recombine = True)

print(vol)

occ.synchronize()

# Physical groups for the points
A_g = model.addPhysicalGroup(0, [A])
model.setPhysicalName(0, A_g, 'A')
B_g = model.addPhysicalGroup(0, [B])
model.setPhysicalName(0, B_g, 'B')
E_g = model.addPhysicalGroup(0, [E])
model.setPhysicalName(0, E_g, 'E')
F_g = model.addPhysicalGroup(0, [F])
model.setPhysicalName(0, F_g, 'F')

# Physical groups for the edges
AB_g = model.addPhysicalGroup(1, [LAB])
model.setPhysicalName(1, AB_g, 'AB')
BF_g = model.addPhysicalGroup(1, [LBF])
model.setPhysicalName(1, BF_g, 'BF')
FE_g = model.addPhysicalGroup(1, [LFE])
model.setPhysicalName(1, FE_g, 'FE')
EA_g = model.addPhysicalGroup(1, [LEA])
model.setPhysicalName(1, EA_g, 'EA')

# Physical group for the faces
ABEF_g = model.addPhysicalGroup(2, [tri])
model.setPhysicalName(2, ABEF_g, 'ABEF')
# Physical groups for the faces
FACINF_g = model.addPhysicalGroup(2, [tri])
model.setPhysicalName(2, FACINF_g, 'FACINF')
FACSUP_g = model.addPhysicalGroup(2, [6])
model.setPhysicalName(2, FACSUP_g, 'FACSUP')
FACEAB_g = model.addPhysicalGroup(2, [2])
model.setPhysicalName(2, FACEAB_g, 'FACEAB')
FACEAE_g = model.addPhysicalGroup(2, [5])
model.setPhysicalName(2, FACEAE_g, 'FACEAE')
FACEEF_g = model.addPhysicalGroup(2, [4])
model.setPhysicalName(2, FACEEF_g, 'FACEEF')

# Physical group for the volume
VOLUME_g = model.addPhysicalGroup(3, [1])
model.setPhysicalName(3, VOLUME_g, 'VOLUME')

num_nodes = NT+1
for curve in [LBF, LEA]:
    #print(curve)
    mesh.setTransfiniteCurve(curve, num_nodes)
num_nodes = NR+1
for curve in [LAB, LFE]:
    #print(curve)
    mesh.setTransfiniteCurve(curve, num_nodes)

mesh.setTransfiniteSurface(tri)

#gmsh.option.setNumber('Mesh.Algorithm', 7)
gmsh.option.setNumber('Mesh.ElementOrder', 2)
gmsh.option.setNumber('Mesh.MshFileVersion', 2.2)
gmsh.option.setNumber('Mesh.MedFileMinorVersion', 0)
gmsh.option.setNumber('Mesh.SaveAll', 0)
gmsh.option.setNumber('Mesh.SaveGroupsOfNodes', 1)
gmsh.option.setNumber('Mesh.SecondOrderIncomplete', 1)
gmsh.option.setNumber('Mesh.AnisoMax', 0)

# Generate mesh
mesh.generate(3)

# Save mesh
gmsh.write("ssnv112e_upd.med")

gmsh.fltk.run()

gmsh.finalize()


24.10.8.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(u\)

ANALYTICAL

\(1.0\times 10^{-5}\)

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

99.9566

0.03

\(\sigma_{yy}\)

ANALYTICAL

-59.9955

0.09

\(\sigma_{zz}\)

ANALYTICAL

19.9326

0.08

\(\sigma_{xy}\)

ANALYTICAL

0.005

VMIS

ANALYTICAL

138.5226

0.05

TRESCA

ANALYTICAL

159.9521

0.05

PRIN_1

ANALYTICAL

-59.9955

0.09

PRIN_2

ANALYTICAL

19.9326

0.08

PRIN_3

ANALYTICAL

99.9566

0.03

VMIS_SG

ANALYTICAL

138.5226

0.05

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(-2.1217\times 10^{-5}\)

\(3.0\times 10^{-3}\)

\(v\)

ANALYTICAL

\(2.1217\times 10^{-5}\)

\(3.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

20.003

0.04

\(\sigma_{yy}\)

ANALYTICAL

20.003

0.17

\(\sigma_{zz}\)

ANALYTICAL

20.003

0.07

\(\sigma_{xy}\)

ANALYTICAL

20.003

0.008

24.10.9. Model F : 20-node hexahedra, GDEF_LOG strains, 3D_INCO_UPG elements

24.10.9.1. Characteristics of model

Mesh with 3D_INCO_UPG incompressible elements (DEFORMATION=’GDEF_LOG’) of type HEXA20 only.

This model uses the boundary conditions for Model A (see Section 24.10.4.1).

The Python command file for running this model is listed below. The file can be downloaded from ssnv112f_upd.comm.

# SSNV112F (uses mesh from SSNV112A)

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED')

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = ('A', 'F'))))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M1',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.002)))
                
# Set up correct face normal orientation
mesh = MODI_MAILLAGE(reuse = mesh,
                     MAILLAGE = mesh,
                     ORIE_PEAU_3D = _F(GROUP_MA = ('FACEAB','FACSUP','FACINF','FACEEF','FACEAE')))

# Set up model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(GROUP_MA = ('VOLUME','FACEEF','FACEAE','FACEAB','FACSUP','FACINF'),
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = '3D_INCO_UPG'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.,
                                   NU = 0.49999,
                                   ALPHA = 0.),
                         ECRO_LINE = _F(D_SIGM_EPSI = 1000.,
                                        SY = 1.E9))

# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Assign BCs
bcs = AFFE_CHAR_MECA(MODELE = model,
                     DDL_IMPO = (_F(GROUP_MA = 'FACEAB',
                                    DX = 0.),
                                 _F(GROUP_MA = 'FACSUP',
                                    DZ = 0.),
                                 _F(GROUP_MA = 'FACINF',
                                    DZ = 0.)),
                     FACE_IMPO = (_F(GROUP_MA = 'FACEEF',
                                     DNOR = 0.),
                                  _F(GROUP_MA = 'FACEAE',
                                     DNOR = -6.E-5)))

# Set up timesteps
l_times = DEFI_LIST_REEL(DEBUT = 0.,
                         INTERVALLE = _F(JUSQU_A = 1.,
                                         NOMBRE = 1))

# Set up ramp function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0., 0.,
                             1., 1.))

# Run
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = _F(CHARGE = bcs,
                                  FONC_MULT = ramp),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION = 'GDEF_LOG'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1,
                                    PCENT_PIVOT = 30),
                       INFO = 1)

# Compute stresses
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CRITERES = ('SIEQ_ELNO', 'SIEQ_NOEU'),
                    CONTRAINTE = ('SIGM_ELNO', 'SIGM_NOEU'))

# Compute strains
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    DEFORMATION = ('EPSL_NOEU'))

# Compute error  
result = CALC_ERREUR(reuse = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))

#--------------------------------------------------------------
# Verification
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC =  0.0,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  6.E-05,
                     VALE_REFE = 6.E-05,
                     CRITERE = 'RELATIF'),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = -2.121879590824E-05,
                     VALE_REFE = -2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-5),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  2.121879590824E-05,
                     VALE_REFE = 2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-5)))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 0.000599219647915,
                     VALE_REFE = 0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -0.000599216034459,
                     VALE_REFE = -0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 0.,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     ORDRE_GRANDEUR = 1e-4,
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = 2.14648025493E-07,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 1.86056475958E-07,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -1.79511662822E-07,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 0.,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     ORDRE_GRANDEUR = 1e-4,
                     PRECISION = 2.5E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = 0.000150178274784,
                     VALE_REFE = 0.0001500224932519667,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.5E-3)))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 99.921782376869,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = -59.87069940984,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.025300584903,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 0.028688635683437,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 20.027385557247,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 19.978641179865,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.002577044751,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.5E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 20.023903289353,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.5E-3)))
  
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 138.38435748248,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 159.79249208804,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -59.870704560507,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.5E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 20.025300584903,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 99.921787527536,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-4,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 138.38435748248,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3,
                     GROUP_MA = 'M1')))

TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 0.14874364284922,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M1'))

TEST_RESU(RESU = _F(GROUP_NO = 'A',
                    INST = 1.0,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELNO',
                    NOM_CMP = 'ERREST',
                    VALE_CALC = 9.5255036916692E-05,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M1'))

# End
FIN()

#

24.10.9.2. Characteristics of the mesh

This model uses the mesh for Model A (see Section 24.10.4.2).

24.10.9.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(u\)

ANALYTICAL

\(1.0\times 10^{-5}\)

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

99.9566

0.01

\(\sigma_{yy}\)

ANALYTICAL

-59.9955

0.03

\(\sigma_{zz}\)

ANALYTICAL

19.9326

0.05

\(\sigma_{xy}\)

ANALYTICAL

0.03

VMIS

ANALYTICAL

138.5226

0.0015

TRESCA

ANALYTICAL

159.9521

0.0015

PRIN_1

ANALYTICAL

-59.9955

0.0025

PRIN_2

ANALYTICAL

19.9326

0.005

PRIN_3

ANALYTICAL

99.9566

0.0005

VMIS_SG

ANALYTICAL

138.5226

0.0015

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(-2.1217\times 10^{-5}\)

\(5.0\times 10^{-3}\)

\(v\)

ANALYTICAL

\(2.1217\times 10^{-5}\)

\(5.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

20.003

0.002

\(\sigma_{yy}\)

ANALYTICAL

20.003

0.002

\(\sigma_{zz}\)

ANALYTICAL

20.003

0.0025

\(\sigma_{xy}\)

ANALYTICAL

20.003

0.0015

24.10.9.4. Remarks

One obtains very good performances since for all the examined quantities, the difference between the solution obtained with the code and the analytical solution is lower than 0.5% for displacements and lower than 5% for the stresses.

24.10.10. Model G : 10-node tetrahedra, GDEF_LOG strains, 3D_INCO_UPG elements

24.10.10.1. Characteristics of model

Mesh with 3D_INCO_UPG incompressible elements (DEFORMATION=’GDEF_LOG’) of type TETRA10.

This model uses the boundary conditions for Model B (see Section 24.10.5.1).

The Python command file for running this model is listed below. The file can be downloaded from ssnv112g_upd.comm.

# SSNV112G (uses mesh from SSNV112B)

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED',
                     UNITE = 20)

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = 'A',
                                      NOM = 'A'),
                                   _F(GROUP_MA = 'F',
                                      NOM = 'F'),
                                   _F(NOM = 'N48',
                                      OPTION = 'ENV_SPHERE',
                                      POINT = (9.93712209893243E-02,  1.11964476103304E-02,  0.00000000000000E+00),
                                      RAYON = 0.002,
                                      PRECISION = 0.001),
                                   _F(NOM = 'N84',
                                      OPTION = 'ENV_SPHERE',
                                      POINT = (9.93712209893243E-02,  1.11964476103307E-02,  1.00000000000000E-02),
                                      RAYON = 0.002,
                                      PRECISION = 0.001),
                                   _F(NOM = 'N362',
                                      OPTION = 'ENV_SPHERE',
                                      POINT = (1.03360166268687E-01,  5.80458243110394E-03,  5.00000000000017E-03),
                                      RAYON = 0.002,
                                      PRECISION = 0.001)))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M1',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.005),
                                   _F(NOM = 'M2',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'N48',
                                      RAYON = 0.005),
                                   _F(NOM = 'M3',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'N84',
                                      RAYON = 0.005),
                                   _F(NOM = 'M4',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'N362',
                                      RAYON = 0.005)))

# Define element group from intersection
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M537',
                                      INTERSEC = ('M1', 'M2', 'M3', 'M4'))))

# Change normal orientation
mesh = MODI_MAILLAGE(reuse = mesh,
                     MAILLAGE = mesh,
                     ORIE_PEAU_3D = _F(GROUP_MA = ('FACEEF','FACEAE','FACEAB','FACSUP','FACINF')))

# Assign model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(GROUP_MA = ('VOLUME','FACEEF','FACEAE'),
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = '3D_INCO_UPG'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.,
                                   NU = 0.49999,
                                   ALPHA = 0.),
                         ECRO_LINE = _F(D_SIGM_EPSI = 0.,
                                        SY = 1.E10))

# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Define BCs
bcs = AFFE_CHAR_MECA(MODELE = model,
                     DDL_IMPO = (_F(GROUP_MA = 'FACEAB',
                                    DY = 0.),
                                 _F(GROUP_MA = 'FACSUP',
                                    DZ = 0.),
                                 _F(GROUP_MA = 'FACINF',
                                    DZ = 0.)),
                     FACE_IMPO = (_F(GROUP_MA = 'FACEEF',
                                     DNOR = 0.),
                                  _F(GROUP_MA = 'FACEAE',
                                     DNOR = -6.E-5)))


# Set up list of times
l_vals = DEFI_LIST_REEL(DEBUT = 0.,
                        INTERVALLE = _F(JUSQU_A = 1.,
                                        NOMBRE = 1))

# Define ramp function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0.,0.,
                             1.,1.))

# Set up time stepping
l_times = DEFI_LIST_INST(DEFI_LIST = _F(LIST_INST = l_vals))

# Run
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = _F(CHARGE = bcs,
                                FONC_MULT = ramp),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION='GDEF_LOG'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1))

# Compute stresses
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CRITERES = ('SIEQ_ELNO', 'SIEQ_NOEU'),
                    CONTRAINTE = ('SIGM_ELNO', 'SIGM_NOEU'))

# Compute strains
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    DEFORMATION = ('EPSL_NOEU'))

# Compute error estimate
result = CALC_ERREUR(reuse = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))


#--------------------------------------------------------------
# Verification

# Displacements
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  0.0,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC =  6.0094539827568E-05,
                     VALE_REFE = 6.E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  2.1197556491377E-05,
                     VALE_REFE = 2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC =  2.1197556491377E-05,
                     VALE_REFE = 2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3)))

# Strains
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = -0.000601875797515,
                     VALE_REFE = -0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = 0.000594644124527,
                     VALE_REFE = 0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 6.92584026841E-07,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = -2.06659214482E-05,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = -3.16616085397E-07,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -6.26231651455E-07,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 3.12812740484E-07,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.5E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = -0.000149226519473,
                     VALE_REFE = -0.0001500224932519667,
                     CRITERE = 'RELATIF',
                     PRECISION = 6.E-3)))
  
# Stresses
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 98.623244333022,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = -60.914206684139,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 19.428976745101,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.03),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = -2.7596032161718,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.0),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 19.946852804727,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 19.905532647678,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.030758280362,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = -19.89701508614,
                     VALE_REFE = -20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-2)))
  
# Equivalent stresses
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 138.26656386354,
                     VALE_REFE = 138.52260000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 159.65144212962,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -60.969941833089,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-2,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 19.426455930538,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-2,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 98.681500296535,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.5E-2,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 138.26656386354,
                     VALE_REFE = 138.52260000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M1')))
  
# Error estimates
TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 1.4249232999413,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M537'))

TEST_RESU(RESU = _F(GROUP_NO = 'A',
                    INST = 1.0,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELNO',
                    NOM_CMP = 'ERREST',
                    VALE_CALC = 4.3238533434483E-4,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M537'))
  
# End
FIN()
  

24.10.10.2. Characteristics of the mesh

This model uses the mesh for Model B (see Section 24.10.5.2).

24.10.10.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(u\)

ANALYTICAL

\(2.0\times 10^{-5}\)

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

-59.9955

0.02

\(\sigma_{yy}\)

ANALYTICAL

99.9566

0.02

\(\sigma_{zz}\)

ANALYTICAL

19.9326

0.03

\(\sigma_{xy}\)

ANALYTICAL

0.03

VMIS

ANALYTICAL

138.5226

0.0045

TRESCA

ANALYTICAL

159.9521

0.0045

PRIN_1

ANALYTICAL

-59.9955

0.02

PRIN_2

ANALYTICAL

19.9326

0.03

PRIN_3

ANALYTICAL

99.9566

0.015

VMIS_SG

ANALYTICAL

138.5226

0.0045

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(-2.1217\times 10^{-5}\)

\(1.0\times 10^{-4}\)

\(v\)

ANALYTICAL

\(2.1217\times 10^{-5}\)

\(1.0\times 10^{-4}\)

\(\sigma_{xx}\)

ANALYTICAL

20.003

0.003

\(\sigma_{yy}\)

ANALYTICAL

20.003

0.005

\(\sigma_{zz}\)

ANALYTICAL

20.003

0.0025

\(\sigma_{xy}\)

ANALYTICAL

-20.003

0.01

24.10.10.4. Remarks

The results obtained are accurate since the stresses are obtained with a precision lower than 3% (1% at the point F). The variation is a little more pronounced here than for HEXA20, but can be explained by the fact that the loading is imposed here is less precise since displacement \(u\) at point A, is defined only with a precision of 0.158% against 0.077%.

24.10.11. Model H : 8-node quads, 6-node triangles, GDEF_LOG strains, D_PLAN_INCO_UPG elements

24.10.11.1. Characteristics of model

Mesh with D_PLAN_INCO_UPG incompressible elements (DEFORMATION=’GDEF_LOG’) of type TRIA6 and QUAD8.

This model uses the boundary conditions for Model C (see Section 24.10.6.1).

The Python command file for running this model is listed below. The file can be downloaded from ssnv112h_upd.comm.

# SSNV112H (same mesh as SSNV112C)

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED')

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = ('A', 'F'))))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M1',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.005),
                                   _F(NOM = 'M223',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'F',
                                      RAYON = 0.005)))

# Assign model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(TOUT = 'OUI',
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = 'D_PLAN_INCO_UPG'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.0,
                                   NU = 0.4999,
                                   ALPHA = 0.),
                         ECRO_LINE = _F(D_SIGM_EPSI = 0.,
                                        SY = 1.E6))

# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Define BCs
bcs = AFFE_CHAR_MECA(MODELE = model,
                     DDL_IMPO = _F(GROUP_MA = 'AB',
                                   DX = 0.0),
                     FACE_IMPO = (_F(GROUP_MA = 'EF',
                                     DNOR = 0.0),
                                  _F(GROUP_MA = 'AE',
                                     DNOR = -6.E-5)))

# Define time steps
l_times = DEFI_LIST_REEL(DEBUT = 0.0,
                         INTERVALLE = _F(JUSQU_A = 1.0,
                                         NOMBRE = 1))

# Define ram function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0.0,0.0,
                             1.0,1.0),
                     PROL_DROITE = 'CONSTANT')

# Solve system
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = _F(CHARGE = bcs,
                                  FONC_MULT = ramp),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION = 'GDEF_LOG'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1))

# Compute stress
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CRITERES = ('SIEQ_ELNO', 'SIEQ_NOEU'),
                    CONTRAINTE = ('SIGM_ELNO', 'SIGM_NOEU'))

# Compute strain
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    DEFORMATION = ('EPSG_NOEU'))

# Compute strains
result = CALC_CHAMP(reuse = result,
                   RESULTAT = result,
                   DEFORMATION = ('EPSL_NOEU'))

# Compute error estimate
result = CALC_ERREUR(reuse = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))

#---------------------------------------------------------------
# Verification
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = -1.9106739769111E-24,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  6.0046297648992E-05,
                     VALE_REFE = 6.E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = -2.121169249588E-05,
                     VALE_REFE = -2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-4),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  2.121169249588E-05,
                     VALE_REFE = 2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-4)))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 0.000600996402314,
                     VALE_REFE = 0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -0.000604598686513,
                     VALE_REFE = -0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 0.,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     ORDRE_GRANDEUR = 1e-4,
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = 1.42464889254E-05,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 2.83677451545E-07,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -1.45771580439E-07,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 0.,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     ORDRE_GRANDEUR = 1e-4,
                     PRECISION = 2.5E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = 0.000150178752127,
                     VALE_REFE = 0.0001500224932519667,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.5E-3)))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 99.709991247555,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3,
                     GROUP_MA = 'M1'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = -61.047050935634,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-2,
                     GROUP_MA = 'M1'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 19.571641192828,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-2,
                     GROUP_MA = 'M1'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 1.902109000303,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.0,
                     GROUP_MA = 'M1'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 20.045607509038,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3,
                     GROUP_MA = 'M223'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 19.988327492234,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.5E-3,
                     GROUP_MA = 'M223'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.007773168726,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-4,
                     GROUP_MA = 'M223'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 20.025165548232,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M223')))
  
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 139.26449064058,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 6.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 160.80745141887,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 6.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -61.072255553472,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-2,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 19.571641192828,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-2,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 99.735195865393,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 139.26449064058,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 6.E-3,
                     GROUP_MA = 'M1')))
  
TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 5.4286281770815E-04,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M1'))

TEST_RESU(RESU = _F(GROUP_NO = 'A',
                    INST = 1.0,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELNO',
                    NOM_CMP = 'ERREST',
                    VALE_CALC = 2.7480945282574E-06,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M1'))

# End
FIN()

24.10.11.2. Characteristics of the mesh

This model uses the mesh for Model C (see Section 24.10.6.2).

24.10.11.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(u\)

ANALYTICAL

\(1.0\times 10^{-5}\)

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(1.0\times 10^{-4}\)

\(\sigma_{xx}\)

ANALYTICAL

99.9566

0.005

\(\sigma_{yy}\)

ANALYTICAL

-59.9955

0.02

\(\sigma_{zz}\)

ANALYTICAL

19.9326

0.025

\(\sigma_{xy}\)

ANALYTICAL

0.02

VMIS

ANALYTICAL

138.5226

0.006

TRESCA

ANALYTICAL

159.9521

0.006

PRIN_1

ANALYTICAL

-59.9955

0.02

PRIN_2

ANALYTICAL

19.9326

0.025

PRIN_3

ANALYTICAL

99.9566

0.003

VMIS_SG

ANALYTICAL

138.5226

0.006

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(-2.1217\times 10^{-5}\)

\(3.0\times 10^{-4}\)

\(v\)

ANALYTICAL

\(2.1217\times 10^{-5}\)

\(3.0\times 10^{-4}\)

\(\sigma_{xx}\)

ANALYTICAL

20.003

0.005

\(\sigma_{yy}\)

ANALYTICAL

20.003

0.0025

\(\sigma_{zz}\)

ANALYTICAL

20.003

0.0005

\(\sigma_{xy}\)

ANALYTICAL

20.003

0.002

24.10.11.4. Remarks

As for the 3D models, the results obtained are completely satisfactory.

24.10.12. Model I : 8-node quads, 6-node triangles, GDEF_LOG strains, AXIS_INCO_UPG elements

24.10.12.1. Characteristics of model

Mesh with AXIS_INCO_UPG incompressible elements (DEFORMATION=’GDEF_LOG’) of type TRIA6 and QUAD8.

This model uses the boundary conditions for Model D (see Section 24.10.7.1).

The Python command file for running this model is listed below. The file can be downloaded from ssnv112i_upd.comm.

#SSNV112I (same mesh as SSNV112D)

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED')

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = ('A', 'E', 'F'))))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M1',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'E',
                                      RAYON = 0.002),
                                   _F(NOM = 'M2',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.002)))

# Assign model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(TOUT = 'OUI',
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = 'AXIS_INCO_UPG'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.0,
                                   NU = 0.4999,
                                   ALPHA = 0.),
                           ECRO_LINE = _F(D_SIGM_EPSI = 0.,
                                          SY = 1.E10))

# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Define zero fixed BCs
bc_fix = AFFE_CHAR_MECA(MODELE = model,
                        DDL_IMPO = (_F(GROUP_MA = 'AB',
                                       DY = 0.0),
                                    _F(GROUP_MA = 'EF',
                                       DY = 0.0)))

# Define non-zero BCs
#pres  =  FORMULE(VALE = '60.',
#                 NOM_PARA = ['X', 'Y'])
pres_0  =  0.0

bc_u = AFFE_CHAR_MECA(MODELE = model,
                      FACE_IMPO = _F(GROUP_MA = 'AE',
                                     DX = 6e-05),
                      PRES_REP = _F(GROUP_MA = 'BF',
                                    PRES = pres_0))
                      # PRES_REP = _F(GROUP_MA = 'AE',  
                      #               PRES = pres))

# Define time steps
l_times = DEFI_LIST_REEL(DEBUT = 0.0,
                         INTERVALLE = _F(JUSQU_A = 1.0,
                                         NOMBRE = 1))

# Define ramp function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0.0,0.0,
                             1.0,1.0),
                     PROL_DROITE = 'CONSTANT')

# Solve
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = (_F(CHARGE = bc_fix),
                                _F(CHARGE = bc_u,
                                   FONC_MULT = ramp)),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION = 'GDEF_LOG'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1))

# Compute stress
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CRITERES = ('SIEQ_ELNO', 'SIEQ_NOEU'),
                    CONTRAINTE = ('SIGM_ELNO', 'SIGM_NOEU'))

# Compute strain
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    DEFORMATION = ('EPSL_NOEU'))

# Compute error estimate
result = CALC_ERREUR(reuse  = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))

#---------------------------------------------------------------
# Verification
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                       NOM_CMP = 'DX',
                     VALE_CALC =  6.E-05,
                     VALE_REFE = 6.E-05,
                     CRITERE = 'RELATIF'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC = -4.050914978826E-25,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU'),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC =  3.0011320684654E-05,
                     VALE_REFE = 3.E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-4),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC = -1.1360526418136E-24,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU')))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = -0.000599063194846,
                     VALE_REFE = -0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -2.82890480554E-16,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 1.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 0.000599199160856,
                     VALE_REFE = 0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = 3.36319504328E-18,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     ORDRE_GRANDEUR = 1e-4,
                     PRECISION = 3.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = -0.000149831509287,
                     VALE_REFE = -0.00014999998650400137,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -3.20220765496E-08,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 0.000149928267271,
                     VALE_REFE = 0.00015004499999993204,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.5E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = -3.65274266717E-08,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 1.5E-3)))
  
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = -59.861896650784,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 20.018509758844,
                     VALE_REFE = 19.932600000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 99.917046164512,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-4),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = -1.8326005394983E-13,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU'),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 0.025864546016021,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.E-2),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 20.000459848715,
                     VALE_REFE = 20.0,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-5),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 39.996496866391,
                     VALE_REFE = 40.006,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-4),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = -4.8710898913488E-03,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 5.E-3)))
  
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 138.3726237648,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 159.7789428153,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -59.861896650784,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 20.018509758844,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 99.917046164512,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-4,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 138.3726237648,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M1')))
  
TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 6.3340844317443E-05,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M2'))
  
TEST_RESU(RESU = _F(GROUP_NO = 'A',
                    INST = 1.0,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELNO',
                    NOM_CMP = 'ERREST',
                    VALE_CALC = 1.1475146409726E-07,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M2'))
   
# End
FIN()

24.10.12.2. Characteristics of the mesh

This model uses the mesh for Model D (see Section 24.10.7.2).

24.10.12.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(u\)

ANALYTICAL

\(1.0\times 10^{-5}\)

\(\sigma_{xx}\)

ANALYTICAL

-59.9955

0.005

\(\sigma_{yy}\)

ANALYTICAL

19.9326

0.005

\(\sigma_{zz}\)

ANALYTICAL

99.9566

0.005

\(\sigma_{xy}\)

ANALYTICAL

0.00001

VMIS

ANALYTICAL

138.5226

0.002

TRESCA

ANALYTICAL

159.9521

0.002

PRIN_1

ANALYTICAL

-59.9955

0.003

PRIN_2

ANALYTICAL

19.9326

0.005

PRIN_3

ANALYTICAL

99.9566

0.005

VMIS_SG

ANALYTICAL

138.5226

0.002

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(3.0\times 10^{-5}\)

\(5.0\times 10^{-4}\)

\(v\)

ANALYTICAL

0

\(1.0\times 10^{-5}\)

\(\sigma_{xx}\)

ANALYTICAL

0.0

0.03

\(\sigma_{yy}\)

ANALYTICAL

20.0

0.006

\(\sigma_{zz}\)

ANALYTICAL

40.006

0.003

\(\sigma_{xy}\)

ANALYTICAL

0.0

0.005

24.10.12.4. Remarks

The precision obtained is very good since all the stresses are obtained with a precision lower than 0.5% .

24.10.13. Model J : 15-node prisms, GDEF_LOG strains, 3D_INCO_UPG elements

24.10.13.1. Characteristics of model

Mesh with 3D_INCO_UPG incompressible elements (DEFORMATION=’GDEF_LOG’) of type PENTA15 only.

This model uses the boundary conditions for Model E (see Section 24.10.8.1).

The Python command file for running this model is listed below. The file can be downloaded from ssnv112j_upd.comm.

#SSNV112J (same mesh as SSNV112E)

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED')

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = 'A',
                                      NOM = 'A'),
                                   _F(GROUP_MA = 'F',
                                      NOM = 'F')))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M543',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.005)))

# Orient faces
mesh = MODI_MAILLAGE(reuse = mesh,
                     MAILLAGE = mesh,
                     ORIE_PEAU_3D = _F(GROUP_MA = ('FACEAB','FACSUP','FACINF','FACEEF','FACEAE')))

# Assign model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(GROUP_MA = ('VOLUME','FACEEF','FACEAE','FACEAB','FACSUP','FACINF'),
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = '3D_INCO_UPG'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.,
                                   NU = 0.49999,
                                   ALPHA = 0.),
                         ECRO_LINE = _F(D_SIGM_EPSI = 1000.,
                                        SY = 1.E9))
          
# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Define BCs
bcs = AFFE_CHAR_MECA(MODELE = model,
                     DDL_IMPO = (_F(GROUP_MA = 'FACEAB',
                                    DX = 0.),
                                 _F(GROUP_MA = 'FACSUP',
                                    DZ = 0.),
                                 _F(GROUP_MA = 'FACINF',
                                    DZ = 0.)),
                     FACE_IMPO = (_F(GROUP_MA = 'FACEEF',
                                     DNOR = 0.),
                                  _F(GROUP_MA = 'FACEAE',
                                     DNOR = -6.E-5)))

# Define time steps
l_times = DEFI_LIST_REEL(DEBUT = 0.,
                         INTERVALLE = _F(JUSQU_A = 1.,
                                         NOMBRE = 1))

# Define ramp function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0.,0.,
                             1.,1.))

# Solve
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = _F(CHARGE = bcs,
                                  FONC_MULT = ramp),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION = 'GDEF_LOG'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1))

# Compute stress
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CONTRAINTE = ('SIGM_ELNO','SIGM_NOEU'),
                    CRITERES = ('SIEQ_ELNO','SIEQ_NOEU'))

# Compute strain
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    DEFORMATION = ('EPSL_NOEU'))

# Compute error
result = CALC_ERREUR(reuse = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))

#---------------------------------------------------------------
# Verification
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC =  0.0,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  6.E-05,
                     VALE_REFE = 6.E-05,
                     CRITERE = 'RELATIF'),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = -2.1217875935136E-05,
                     VALE_REFE = -2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 4.E-5),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC = 2.1217875935136E-05,
                     VALE_REFE = 2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 4.E-5)))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 0.000599344860155,
                     VALE_REFE = 0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -0.000599096270263,
                     VALE_REFE = -0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = -2.29064830311E-19,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     ORDRE_GRANDEUR = 1e-4,
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = 5.70454187141E-07,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = -9.36134278544E-08,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = 9.08210503305E-08,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 5.20583387464E-30,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     ORDRE_GRANDEUR = 1e-4,
                     PRECISION = 2.5E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = 0.000150072167594,
                     VALE_REFE = 0.0001500224932519667,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.5E-3)))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 99.971087775754,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-4),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = -59.822082078216,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.057930086165,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 7.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 0.076136980700258,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 8.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 19.990067948405,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 7.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 20.014676234347,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 6.E-4),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.002558250692,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-5),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 20.009756160608,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 4.E-4)))
  
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 138.38500827099,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3,
                     GROUP_MA = 'M543'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 159.79324240824,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3,
                     GROUP_MA = 'M543'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -59.822118355352,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3,
                     GROUP_MA = 'M543'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 20.057930086165,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 8.E-3,
                     GROUP_MA = 'M543'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 99.97112405289,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-4,
                     GROUP_MA = 'M543'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 138.38500827099,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3,
                     GROUP_MA = 'M543')))
  
  
# End
FIN()

24.10.13.2. Characteristics of the mesh

This model uses the mesh for Model E (see Section 24.10.8.2).

24.10.13.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(u\)

ANALYTICAL

\(1.0\times 10^{-5}\)

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

99.9566

0.0015

\(\sigma_{yy}\)

ANALYTICAL

-59.9955

0.01

\(\sigma_{zz}\)

ANALYTICAL

19.9326

0.015

\(\sigma_{xy}\)

ANALYTICAL

0.0008

VMIS

ANALYTICAL

138.5226

0.002

TRESCA

ANALYTICAL

159.9521

0.002

PRIN_1

ANALYTICAL

-59.9955

0.007

PRIN_2

ANALYTICAL

19.9326

0.015

PRIN_3

ANALYTICAL

99.9566

0.0015

VMIS_SG

ANALYTICAL

138.5226

0.002

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(-2.1217\times 10^{-5}\)

\(4.0\times 10^{-3}\)

\(v\)

ANALYTICAL

\(2.1217\times 10^{-5}\)

\(4.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

20.003

0.007

\(\sigma_{yy}\)

ANALYTICAL

20.003

0.002

\(\sigma_{zz}\)

ANALYTICAL

20.003

0.0003

\(\sigma_{xy}\)

ANALYTICAL

20.003

0.0005

24.10.14. Model K : 20-node hexahedra, GDEF_LOG strains, 3D_INCO_UP elements

24.10.14.1. Characteristics of model

Mesh with 3D_INCO_UP incompressible elements (DEFORMATION=’GDEF_LOG’) of type HEXA20 only.

This model uses the boundary conditions for Model A (see Section 24.10.4.1).

The Python command file for running this model is listed below. The file can be downloaded from ssnv112k_upd.comm.

# SSNV112K (uses mesh from SSNV112A)

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED')

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = ('A', 'F'))))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M1',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.002)))
                
# Set up correct face normal orientation
mesh = MODI_MAILLAGE(reuse = mesh,
                     MAILLAGE = mesh,
                     ORIE_PEAU_3D = _F(GROUP_MA = ('FACEAB','FACSUP','FACINF','FACEEF','FACEAE')))

# Set up model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(GROUP_MA = ('VOLUME','FACEEF','FACEAE','FACEAB','FACSUP','FACINF'),
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = '3D_INCO_UP'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.,
                                   NU = 0.49999,
                                   ALPHA = 0.),
                         ECRO_LINE = _F(D_SIGM_EPSI = 1000.,
                                        SY = 1.E9))

# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Assign BCs
bcs = AFFE_CHAR_MECA(MODELE = model,
                     DDL_IMPO = (_F(GROUP_MA = 'FACEAB',
                                    DX = 0.),
                                 _F(GROUP_MA = 'FACSUP',
                                    DZ = 0.),
                                 _F(GROUP_MA = 'FACINF',
                                    DZ = 0.)),
                     FACE_IMPO = (_F(GROUP_MA = 'FACEEF',
                                     DNOR = 0.),
                                  _F(GROUP_MA = 'FACEAE',
                                     DNOR = -6.E-5)))

# Set up timesteps
l_times = DEFI_LIST_REEL(DEBUT = 0.,
                         INTERVALLE = _F(JUSQU_A = 1.,
                                         NOMBRE = 1))

# Set up ramp function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0., 0.,
                             1., 1.))

# Run
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = _F(CHARGE = bcs,
                                  FONC_MULT = ramp),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION = 'GDEF_LOG'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1,
                                    PCENT_PIVOT = 30),
                       INFO = 1)

# Compute stresses
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CRITERES = ('SIEQ_ELNO', 'SIEQ_NOEU'),
                    CONTRAINTE = ('SIGM_ELNO', 'SIGM_NOEU'))

# Compute strains
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    DEFORMATION = ('EPSL_NOEU', 'EPSG_NOEU'))

# Compute error  
result = CALC_ERREUR(reuse = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))

#--------------------------------------------------------------
# Verification
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC =  0.0,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  6.E-05,
                     VALE_REFE = 6.E-05,
                     CRITERE = 'RELATIF'),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = -2.121879590824E-05,
                     VALE_REFE = -2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-5),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC =  2.121879590824E-05,
                     VALE_REFE = 2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-5)))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 0.000599219647915,
                     VALE_REFE = 0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -0.000599216034459,
                     VALE_REFE = -0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 0.,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     ORDRE_GRANDEUR = 1e-4,
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = 2.14648025493E-07,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 1.86056475958E-07,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -1.79511662822E-07,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 0.,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     ORDRE_GRANDEUR = 1e-4,
                     PRECISION = 2.5E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = 0.000150178274784,
                     VALE_REFE = 0.0001500224932519667,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.5E-3)))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 99.921782376869,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = -59.87069940984,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.025300584903,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 0.028688635683437,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 20.027385557247,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 19.978641179865,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.002577044751,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.5E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 20.023903289353,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.5E-3)))
  
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 138.38435748248,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 159.79249208804,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -59.870704560507,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.5E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 20.025300584903,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 99.921787527536,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-4,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 138.38435748248,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3,
                     GROUP_MA = 'M1')))

TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 0.14874364284922,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M1'))

TEST_RESU(RESU = _F(GROUP_NO = 'A',
                    INST = 1.0,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELNO',
                    NOM_CMP = 'ERREST',
                    VALE_CALC = 9.5255036916692E-05,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M1'))

TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSG_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 0.000599576100401,
                     VALE_REFE = 0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-4),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSG_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -0.00059885996551,
                     VALE_REFE = -0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.2E-3)))

# End
FIN()

#

24.10.14.2. Characteristics of the mesh

This model uses the mesh for Model A (see Section 24.10.4.2).

24.10.14.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(u\)

ANALYTICAL

\(1.0\times 10^{-3}\)

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(1.0\times 10^{-4}\)

\(\sigma_{xx}\)

ANALYTICAL

99.9566

0.01

\(\sigma_{yy}\)

ANALYTICAL

-59.9955

0.03

\(\sigma_{zz}\)

ANALYTICAL

19.9326

0.05

\(\sigma_{xy}\)

ANALYTICAL

0.03

VMIS

ANALYTICAL

138.5226

0.0015

TRESCA

ANALYTICAL

159.9521

0.0015

PRIN_1

ANALYTICAL

-59.9955

0.0025

PRIN_2

ANALYTICAL

19.9326

0.005

PRIN_3

ANALYTICAL

99.9566

0.0005

VMIS_SG

ANALYTICAL

138.5226

0.0015

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(-2.1217\times 10^{-5}\)

\(5.0\times 10^{-3}\)

\(v\)

ANALYTICAL

\(2.1217\times 10^{-5}\)

\(5.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

20.003

0.002

\(\sigma_{yy}\)

ANALYTICAL

20.003

0.002

\(\sigma_{zz}\)

ANALYTICAL

20.003

0.0025

\(\sigma_{xy}\)

ANALYTICAL

20.003

0.0015

For the Green-Lagrange strains:

Identification

Type of reference

Reference value

Tolerance

A

\(E_{xx}\)

ANALYTICAL

0.000599576100401

2.E-4

\(E_{yy}\)

ANALYTICAL

-0.0006001799999999502

2.3E-3

24.10.14.4. Remarks

One obtains very good performances since for all the examined quantities, the difference between the solution obtained with the code and the analytical solution is lower than 0.5% for displacements and lower than 5% for the stresses.

24.10.15. Model L : 10-node tetrahedra, GDEF_LOG strains, 3D_INCO_UP elements

24.10.15.1. Characteristics of model

Mesh with 3D_INCO_UP incompressible elements (DEFORMATION=’GDEF_LOG’) of type TETRA10.

This model uses the boundary conditions for Model B (see Section 24.10.5.1).

The Python command file for running this model is listed below. The file can be downloaded from ssnv112l_upd.comm.

# SSNV112L (uses mesh from SSNV112B)

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED',
                     UNITE = 20)

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = 'A',
                                      NOM = 'A'),
                                   _F(GROUP_MA = 'F',
                                      NOM = 'F'),
                                   _F(NOM = 'N48',
                                      OPTION = 'ENV_SPHERE',
                                      POINT = (9.93712209893243E-02,  1.11964476103304E-02,  0.00000000000000E+00),
                                      RAYON = 0.002,
                                      PRECISION = 0.001),
                                   _F(NOM = 'N84',
                                      OPTION = 'ENV_SPHERE',
                                      POINT = (9.93712209893243E-02,  1.11964476103307E-02,  1.00000000000000E-02),
                                      RAYON = 0.002,
                                      PRECISION = 0.001),
                                   _F(NOM = 'N362',
                                      OPTION = 'ENV_SPHERE',
                                      POINT = (1.03360166268687E-01,  5.80458243110394E-03,  5.00000000000017E-03),
                                      RAYON = 0.002,
                                      PRECISION = 0.001)))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M1',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.005),
                                   _F(NOM = 'M2',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'N48',
                                      RAYON = 0.005),
                                   _F(NOM = 'M3',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'N84',
                                      RAYON = 0.005),
                                   _F(NOM = 'M4',
                                      TYPE_MAILLE = '3D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'N362',
                                      RAYON = 0.005)))

# Define element group from intersection
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M537',
                                      INTERSEC = ('M1', 'M2', 'M3', 'M4'))))

# Change normal orientation
mesh = MODI_MAILLAGE(reuse = mesh,
                     MAILLAGE = mesh,
                     ORIE_PEAU_3D = _F(GROUP_MA = ('FACEEF','FACEAE','FACEAB','FACSUP','FACINF')))

# Assign model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(GROUP_MA = ('VOLUME','FACEEF','FACEAE'),
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = '3D_INCO_UP'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.,
                                   NU = 0.49999,
                                   ALPHA = 0.),
                         ECRO_LINE = _F(D_SIGM_EPSI = 0.,
                                        SY = 1.E10))

# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Define BCs
bcs = AFFE_CHAR_MECA(MODELE = model,
                     DDL_IMPO = (_F(GROUP_MA = 'FACEAB',
                                    DY = 0.),
                                 _F(GROUP_MA = 'FACSUP',
                                    DZ = 0.),
                                 _F(GROUP_MA = 'FACINF',
                                    DZ = 0.)),
                     FACE_IMPO = (_F(GROUP_MA = 'FACEEF',
                                     DNOR = 0.),
                                  _F(GROUP_MA = 'FACEAE',
                                     DNOR = -6.E-5)))


# Set up list of times
l_vals = DEFI_LIST_REEL(DEBUT = 0.,
                        INTERVALLE = _F(JUSQU_A = 1.,
                                        NOMBRE = 1))

# Define ramp function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0.,0.,
                             1.,1.))

# Set up time stepping
l_times = DEFI_LIST_INST(DEFI_LIST = _F(LIST_INST = l_vals))

# Run
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = _F(CHARGE = bcs,
                                FONC_MULT = ramp),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION='GDEF_LOG'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1))

# Compute stresses
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CRITERES = ('SIEQ_ELNO', 'SIEQ_NOEU'),
                    CONTRAINTE = ('SIGM_ELNO', 'SIGM_NOEU'))

# Compute strains
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    DEFORMATION = ('EPSL_NOEU'))

# Compute error estimate
result = CALC_ERREUR(reuse = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))


#--------------------------------------------------------------
# Verification

# Displacements
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC = 0.0E+00,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = 6.0094539827568E-05,
                     VALE_REFE = 6.E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC = 2.1197556491378E-05,
                     VALE_REFE = 2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = 2.1197556491378E-05,
                     VALE_REFE = 2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3)))

# Strains
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = -0.000601875797515,
                     VALE_REFE = -0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = 0.000594644124527,
                     VALE_REFE = 0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 6.92584026841E-07,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = -2.06659214482E-05,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = -3.16616085397E-07,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -6.26231651455E-07,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 3.12812740484E-07,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.5E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = -0.000149226519473,
                     VALE_REFE = -0.0001500224932519667,
                     CRITERE = 'RELATIF',
                     PRECISION = 6.E-3)))
  
# Stresses
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 98.62324310315,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = -60.914207914005,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.02),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 19.428975515274,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 0.03),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = -2.759603216176,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.0),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 19.946852256401,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 19.905532099373,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.03075773209,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = -19.897015086153,
                     VALE_REFE = -20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-2)))
  
# Equivalent stresses
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 138.26656386354,
                     VALE_REFE = 138.52260000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 159.65144212962,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -60.969943062956,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-2,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 19.426454700711,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-2,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 98.681499066663,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.5E-2,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 138.26656386354,
                     VALE_REFE = 138.52260000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M1')))
  
# Error estimates
TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 1.4249235683863,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M537'))
  
TEST_RESU(RESU = _F(GROUP_NO = 'A',
                    INST = 1.0,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELNO',
                    NOM_CMP = 'ERREST',
                    VALE_CALC = 4.3238541664061E-04,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M537'))
  
# End
FIN()
  

24.10.15.2. Characteristics of the mesh

This model uses the mesh for Model B (see Section 24.10.5.2).

24.10.15.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(u\)

ANALYTICAL

\(2.0\times 10^{-4}\)

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(1.0\times 10^{-3}\)

\(\sigma_{xx}\)

ANALYTICAL

-59.9955

0.02

\(\sigma_{yy}\)

ANALYTICAL

99.9566

0.02

\(\sigma_{zz}\)

ANALYTICAL

19.9326

0.03

\(\sigma_{xy}\)

ANALYTICAL

0.03

VMIS

ANALYTICAL

138.5226

0.005

TRESCA

ANALYTICAL

159.9521

0.005

PRIN_1

ANALYTICAL

-59.9955

0.02

PRIN_2

ANALYTICAL

19.9326

0.03

PRIN_3

ANALYTICAL

99.9566

0.015

VMIS_SG

ANALYTICAL

138.5226

0.005

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(-2.1217\times 10^{-5}\)

\(1.0\times 10^{-4}\)

\(v\)

ANALYTICAL

\(2.1217\times 10^{-5}\)

\(1.0\times 10^{-4}\)

\(\sigma_{xx}\)

ANALYTICAL

20.003

0.003

\(\sigma_{yy}\)

ANALYTICAL

20.003

0.005

\(\sigma_{zz}\)

ANALYTICAL

20.003

0.0025

\(\sigma_{xy}\)

ANALYTICAL

-20.003

0.01

24.10.15.4. Remarks

The results obtained are accurate since the stresses are obtained with a precision lower than 3% (1% at the point F). The variation is a little more pronounced here than for HEXA20, but can be explained by the fact that the loading is imposed here in a little less precise since displacement \(u\) at point A, is defined only with one precision of 0.158% against 0.077%.

24.10.16. Model M : 8-node quads, 6-node triangles, GDEF_LOG strains, D_PLAN_INCO_UP elements

24.10.16.1. Characteristics of model

Mesh with D_PLAN_INCO_UP incompressible elements (DEFORMATION=’GDEF_LOG’) of type TRIA6 and QUAD8.

This model uses the boundary conditions for Model C (see Section 24.10.6.1).

The Python command file for running this model is listed below. The file can be downloaded from ssnv112m_upd.comm.

# SSNV112M (same mesh as SSNV112C)

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED')

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = ('A', 'F'))))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M1',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.003),
                                   _F(NOM = 'M2',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.003),
                                   _F(NOM = 'M223',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'F',
                                      RAYON = 0.003)))

# Assign model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(TOUT = 'OUI',
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = 'D_PLAN_INCO_UP'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.0,
                                   NU = 0.4999,
                                   ALPHA = 0.),
                         ECRO_LINE = _F(D_SIGM_EPSI = 0.,
                                        SY = 1.E6))

# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Define BCs
bcs = AFFE_CHAR_MECA(MODELE = model,
                     DDL_IMPO = _F(GROUP_MA = 'AB',
                                   DX = 0.0),
                     FACE_IMPO = (_F(GROUP_MA = 'EF',
                                     DNOR = 0.0),
                                  _F(GROUP_MA = 'AE',
                                     DNOR = -6.E-5)))

# Define time steps
l_times = DEFI_LIST_REEL(DEBUT = 0.0,
                         INTERVALLE = _F(JUSQU_A = 1.0,
                                         NOMBRE = 1))

# Define ram function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0.0,0.0,
                             1.0,1.0),
                     PROL_DROITE = 'CONSTANT')

# Solve system
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = _F(CHARGE = bcs,
                                  FONC_MULT = ramp),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION = 'GDEF_LOG'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1))

# Compute stress
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CRITERES = ('SIEQ_ELNO', 'SIEQ_NOEU'),
                    CONTRAINTE = ('SIGM_ELNO', 'SIGM_NOEU'))

# Compute strain
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    DEFORMATION = ('EPSG_NOEU'))

# Compute strains
result = CALC_CHAMP(reuse = result,
                   RESULTAT = result,
                   DEFORMATION = ('EPSL_NOEU'))

# Compute error estimate
result = CALC_ERREUR(reuse = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))

#---------------------------------------------------------------
# Verification
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = 2.6900491456084E-25,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC = 6.0046297648992E-05,
                     VALE_REFE = 6.E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-3),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = -2.1211692495881E-05,
                     VALE_REFE = -2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-4),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC = 2.1211692495881E-05,
                     VALE_REFE = 2.1217941E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-4)))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 0.000600996402314,
                     VALE_REFE = 0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -0.000604598686513,
                     VALE_REFE = -0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 0.,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     ORDRE_GRANDEUR = 1e-4,
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = 1.42464889254E-05,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 2.83677451545E-07,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -1.45771580439E-07,
                     VALE_REFE = 2.250674796533403e-08,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 0.,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     ORDRE_GRANDEUR = 1e-4,
                     PRECISION = 2.5E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = 0.000150178752127,
                     VALE_REFE = 0.0001500224932519667,
                     CRITERE = 'RELATIF',
                     PRECISION = 1.5E-3)))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 99.70999124758,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3,
                     GROUP_MA = 'M1'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = -61.047050935644,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-2,
                     GROUP_MA = 'M1'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 19.571641192842,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-2,
                     GROUP_MA = 'M1'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 1.9021090002972,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.0,
                     GROUP_MA = 'M1'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 20.045607509019,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3,
                     GROUP_MA = 'M223'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 19.98832749222,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.5E-3,
                     GROUP_MA = 'M223'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 20.007773168707,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-4,
                     GROUP_MA = 'M223'),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = 20.025165548207,
                     VALE_REFE = 20.003,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M223')))
  
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 139.26449064061,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 6.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 160.8074514189,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 6.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -61.072255553483,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-2,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 19.571641192842,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-2,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 99.735195865418,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 139.26449064061,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 6.E-3,
                     GROUP_MA = 'M1')))
  
TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 5.4286281772046E-04,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M2'))
  
TEST_RESU(RESU = _F(GROUP_NO = 'A',
                    INST = 1.0,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELNO',
                    NOM_CMP = 'ERREST',
                    VALE_CALC = 2.7480945283197E-06,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M2'))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSG_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = 0.000601356410318,
                     VALE_REFE = 0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 4.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSG_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -0.000604235469839,
                     VALE_REFE = -0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 7.0E-3)))
  
# End
FIN()

24.10.16.2. Characteristics of the mesh

This model uses the mesh for Model C (see Section 24.10.6.2).

24.10.16.3. Quantities tested and results

Displacements and the stresses are evaluated at the points A and F. Components of the field SIEQ_NOEU are tested at the point A only.

Identification

Type of reference

Reference value

Tolerance

A

\(u\)

ANALYTICAL

\(1.0\times 10^{-5}\)

\(v\)

ANALYTICAL

\(6.0\times 10^{-5}\)

\(1.0\times 10^{-4}\)

\(\sigma_{xx}\)

ANALYTICAL

99.9566

0.005

\(\sigma_{yy}\)

ANALYTICAL

-59.9955

0.02

\(\sigma_{zz}\)

ANALYTICAL

19.9326

0.025

\(\sigma_{xy}\)

ANALYTICAL

0.02

VMIS

ANALYTICAL

138.5226

0.006

TRESCA

ANALYTICAL

159.9521

0.006

PRIN_1

ANALYTICAL

-59.9955

0.02

PRIN_2

ANALYTICAL

19.9326

0.025

PRIN_3

ANALYTICAL

99.9566

0.003

VMIS_SG

ANALYTICAL

138.5226

0.006

Identification

Type of reference

Reference value

Tolerance

F

\(u\)

ANALYTICAL

\(-2.1217\times 10^{-5}\)

\(3.0\times 10^{-4}\)

\(v\)

ANALYTICAL

\(2.1217\times 10^{-5}\)

\(3.0\times 10^{-4}\)

\(\sigma_{xx}\)

ANALYTICAL

20.003

0.005

\(\sigma_{yy}\)

ANALYTICAL

20.003

0.0025

\(\sigma_{zz}\)

ANALYTICAL

20.003

0.0005

\(\sigma_{xy}\)

ANALYTICAL

20.003

0.002

For the Green-Lagrange strains:

Identification

Type of reference

Reference value

Tolerance

A

\(E_{xx}\)

ANALYTICAL

0.000601357472911

4%

\(E_{yy}\)

ANALYTICAL

-0.000604235469839

0.7%

24.10.16.4. Remarks

As for 3D modeling, the results obtained are completely satisfactory.

24.10.17. Model N : 8-node quads, 6-node triangles, GDEF_LOG strains, AXIS_INCO_UP elements

24.10.17.1. Characteristics of model

Mesh with AXIS_INCO_UP incompressible elements (DEFORMATION=’GDEF_LOG’) of type TRIA6 and QUAD8.

This model uses the boundary conditions for Model D (see Section 24.10.7.1).

The Python command file for running this model is listed below. The file can be downloaded from ssnv112n_upd.comm.

#SSNV112N (same mesh as SSNV112D)

DEBUT(LANG = 'EN')

# Read mesh
mesh = LIRE_MAILLAGE(FORMAT = 'MED')

# Define node groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_NO = (_F(GROUP_MA = ('A', 'E', 'F'))))

# Define element groups
mesh = DEFI_GROUP(reuse = mesh,
                  MAILLAGE = mesh,
                  CREA_GROUP_MA = (_F(NOM = 'M1',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'E',
                                      RAYON = 0.002),
                                   _F(NOM = 'M2',
                                      TYPE_MAILLE = '2D',
                                      OPTION = 'SPHERE',
                                      GROUP_NO_CENTRE = 'A',
                                      RAYON = 0.002)))

# Assign model
model = AFFE_MODELE(MAILLAGE = mesh,
                    AFFE = _F(TOUT = 'OUI',
                              PHENOMENE = 'MECANIQUE',
                              MODELISATION = 'AXIS_INCO_UP'))

# Define material
inco_mat = DEFI_MATERIAU(ELAS = _F(E = 200000.0,
                                   NU = 0.4999,
                                   ALPHA = 0.),
                           ECRO_LINE = _F(D_SIGM_EPSI = 0.,
                                          SY = 1.E10))

# Assign material
mater = AFFE_MATERIAU(MAILLAGE = mesh,
                      AFFE = _F(TOUT = 'OUI',
                                MATER = inco_mat))

# Define zero fixed BCs
bc_fix = AFFE_CHAR_MECA(MODELE = model,
                        DDL_IMPO = (_F(GROUP_MA = 'AB',
                                       DY = 0.0),
                                    _F(GROUP_MA = 'EF',
                                       DY = 0.0)))

# Define non-zero BCs
#pres  =  FORMULE(VALE = '60.',
#                 NOM_PARA = ['X', 'Y'])
pres_0  =  0.0

bc_u = AFFE_CHAR_MECA(MODELE = model,
                      FACE_IMPO = _F(GROUP_MA = 'AE',
                                     DX = 6e-05),
                      PRES_REP = _F(GROUP_MA = 'BF',
                                    PRES = pres_0))
                      # PRES_REP = _F(GROUP_MA = 'AE',  
                      #               PRES = pres))

# Define time steps
l_times = DEFI_LIST_REEL(DEBUT = 0.0,
                         INTERVALLE = _F(JUSQU_A = 1.0,
                                         NOMBRE = 1))

# Define ramp function
ramp = DEFI_FONCTION(NOM_PARA = 'INST',
                     VALE = (0.0,0.0,
                             1.0,1.0),
                     PROL_DROITE = 'CONSTANT')

# Solve
result = STAT_NON_LINE(MODELE = model,
                       CHAM_MATER = mater,
                       EXCIT = (_F(CHARGE = bc_fix),
                                _F(CHARGE = bc_u,
                                   FONC_MULT = ramp)),
                       COMPORTEMENT = _F(RELATION = 'VMIS_ISOT_LINE',
                                         DEFORMATION = 'GDEF_LOG'),
                       INCREMENT = _F(LIST_INST = l_times),
                       NEWTON = _F(REAC_ITER = 1),
                       CONVERGENCE = _F(SIGM_REFE = 60.0,
                                        EPSI_REFE = 3.E-4,
                                        RESI_REFE_RELA = 1.E-3),
                       SOLVEUR = _F(METHODE = 'MUMPS',
                                    NPREC = -1))

# Compute stress
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    CRITERES = ('SIEQ_ELNO', 'SIEQ_NOEU'),
                    CONTRAINTE = ('SIGM_ELNO', 'SIGM_NOEU'))

# Compute strain
result = CALC_CHAMP(reuse = result,
                    RESULTAT = result,
                    DEFORMATION = ('EPSL_NOEU', 'EPSG_NOEU'))
  
# Compute error estimate
result = CALC_ERREUR(reuse  = result,
                     RESULTAT = result,
                     OPTION = ('ERME_ELEM','ERME_ELNO'))

# Save results
IMPR_RESU(FORMAT = 'MED',
          UNITE = 80,
          RESU = _F(RESULTAT = result))

#---------------------------------------------------------------
# Verification
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = 6.0E-05,
                     VALE_REFE = 6.E-05,
                     CRITERE = 'RELATIF'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC = -3.933545553359E-25,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU'),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DX',
                     VALE_CALC = 3.0011320684652E-05,
                     VALE_REFE = 3.E-05,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-4),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'DEPL',
                     NOM_CMP = 'DY',
                     VALE_CALC = -7.5258935265529E-25,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU')))
  
TEST_RESU(RESU = (_F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = -0.000599063194846,
                     VALE_REFE = -0.0005994604316761909,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -2.82890480554E-16,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 1.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 0.000599199160856,
                     VALE_REFE = 0.0006001799999999502,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'A',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = 3.36319504328E-18,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     ORDRE_GRANDEUR = 1e-4,
                     PRECISION = 3.E-2),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXX',
                     VALE_CALC = -0.000149831509287,
                     VALE_REFE = -0.00014999998650400137,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPYY',
                     VALE_CALC = -3.20220765496E-08,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 2.E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPZZ',
                     VALE_CALC = 0.000149928267271,
                     VALE_REFE = 0.00015004499999993204,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.5E-3),
                  _F(NUME_ORDRE = 1,
                     GROUP_NO = 'F',
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'EPSL_NOEU',
                     NOM_CMP = 'EPXY',
                     VALE_CALC = -3.65274266717E-08,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 1.5E-3)))
  
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = -59.861896650794,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 20.018509758876,
                     VALE_REFE = 19.932600000000001,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 99.917046164536,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-4),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = -8.9471819027442E-13,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU'),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXX',
                     VALE_CALC = 0.025864546009029,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 3.E-2),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIYY',
                     VALE_CALC = 20.000459848751,
                     VALE_REFE = 20.0,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-5),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIZZ',
                     VALE_CALC = 39.996496866382,
                     VALE_REFE = 40.006,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-4),
                  _F(GROUP_NO = 'F',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIGM_NOEU',
                     NOM_CMP = 'SIXY',
                     VALE_CALC = -4.8710898849954E-03,
                     VALE_REFE = 0.0,
                     CRITERE = 'ABSOLU',
                     PRECISION = 5.E-3)))
  
TEST_RESU(RESU = (_F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS',
                     VALE_CALC = 138.37262376483,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'TRESCA',
                     VALE_CALC = 159.77894281533,
                     VALE_REFE = 159.9521,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_1',
                     VALE_CALC = -59.861896650794,
                     VALE_REFE = -59.9955,
                     CRITERE = 'RELATIF',
                     PRECISION = 3.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_2',
                     VALE_CALC = 20.018509758876,
                     VALE_REFE = 19.9326,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-3,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'PRIN_3',
                     VALE_CALC = 99.917046164536,
                     VALE_REFE = 99.9566,
                     CRITERE = 'RELATIF',
                     PRECISION = 5.E-4,
                     GROUP_MA = 'M1'),
                  _F(GROUP_NO = 'A',
                     INST = 1.0,
                     REFERENCE = 'ANALYTIQUE',
                     RESULTAT = result,
                     NOM_CHAM = 'SIEQ_NOEU',
                     NOM_CMP = 'VMIS_SG',
                     VALE_CALC = 138.37262376483,
                     VALE_REFE = 138.5226,
                     CRITERE = 'RELATIF',
                     PRECISION = 2.E-3,
                     GROUP_MA = 'M1')))
  
TEST_RESU(RESU = _F(INST = 1.0,
                    POINT = 1,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELEM',
                    NOM_CMP = 'NUEST',
                    VALE_CALC = 6.3340844317465E-05,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M2'))
  
TEST_RESU(RESU = _F(GROUP_NO = 'A',
                    INST = 1.0,
                    RESULTAT = result,
                    NOM_CHAM = 'ERME_ELNO',
                    NOM_CMP = 'ERREST',
                    VALE_CALC = 1.1475146409732E-07,
                    CRITERE = 'RELATIF',
                    GROUP_MA = 'M2'))
  
TEST_RESU(RESU = _F(NUME_ORDRE = 1,
                    GROUP_NO = 'A',
                    REFERENCE = 'ANALYTIQUE',
                    RESULTAT = result,
                    NOM_CHAM = 'EPSG_NOEU'