24.10. [V6.04.112] : SSNV112 - Incompressible hollow cylinder (large strains)¶
Contents
[V6.04.112] : SSNV112 - Incompressible hollow cylinder (large strains)
Model A : 20-node hexahedra, SIMO_MIEHE strains, 3D_INCO_UPG elements
Model B : 10-node tetrahedra, SIMO_MIEHE strains, 3D_INCO_UPG elements
Model C : 8-node quads, 6-node triangles, SIMO_MIEHE strains, D_PLAN_INCO_UPG elements
Model D : 8-node quads, 6-node triangles, SIMO_MIEHE strains, AXIS_INCO_UPG elements
Model E : 15-node prisms, SIMO_MIEHE strains, 3D_INCO_UPG elements
Model F : 20-node hexahedra, GDEF_LOG strains, 3D_INCO_UPG elements
Model G : 10-node tetrahedra, GDEF_LOG strains, 3D_INCO_UPG elements
Model H : 8-node quads, 6-node triangles, GDEF_LOG strains, D_PLAN_INCO_UPG elements
Model I : 8-node quads, 6-node triangles, GDEF_LOG strains, AXIS_INCO_UPG elements
Model J : 15-node prisms, GDEF_LOG strains, 3D_INCO_UPG elements
Model K : 20-node hexahedra, GDEF_LOG strains, 3D_INCO_UP elements
Model L : 10-node tetrahedra, GDEF_LOG strains, 3D_INCO_UP elements
Model M : 8-node quads, 6-node triangles, GDEF_LOG strains, D_PLAN_INCO_UP elements
Model N : 8-node quads, 6-node triangles, GDEF_LOG strains, AXIS_INCO_UP elements
Model O : 15-node prisms, GDEF_LOG strains, 3D_INCO_UP elements
Model P : 20-node hexahedra, SIMO_MIEHE strains, 3D_INCO_UPGB elements
Model Q : 10-node tetrahedra, SIMO_MIEHE strains, 3D_INCO_UPGB elements
Model R : 8-node quads, 6-node triangles, SIMO_MIEHE strains, D_PLAN_INCO_UPGB elements
Model S : 8-node quads, 6-node triangles, SIMO_MIEHE strains, AXIS_INCO_UPGB elements
Model T : 15-node prisms, SIMO_MIEHE strains, 3D_INCO_UPGB elements
Model U : 20-node hexahedra, GDEF_LOG strains, 3D_INCO_UPGB elements
Model V : 10-node tetrahedra, GDEF_LOG strains, 3D_INCO_UPGB elements
Model W : 8-node quads, 6-node triangles, GDEF_LOG strains, D_PLAN_INCO_UPGB elements
Model X : 8-node quads, 6-node triangles, GDEF_LOG strains, AXIS_INCO_UPGB elements
Model Y : 15-node prisms, GDEF_LOG strains, 3D_INCO_UPGB elements
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¶

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:
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:
The expressions of the equilibrium equations reduce to the satisfaction of only one equation:
which allows us to determine the pressure \(p\) knowing the radial displacement field \(u\) :
24.10.3.2. Specialization of the solution¶
The condition of incompressibility is written \(\det\boldsymbol{F}=1\) with
The displacement \(u\) thus satisfies the following differential equation:
The imposed load is the following
The displacement solution is thus:
The strain tensor thus has as the expression:
and the stresses are :
with p obtained by integration of (24.10.1) which gives :
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:
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.
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¶

|
|
|
---|---|---|
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\) |
|
\(1.0\times 10^{-5}\) |
|
\(v\) |
|
\(6.0\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
99.9566 |
0.01 |
|
\(\sigma_{yy}\) |
|
-59.9955 |
0.02 |
|
\(\sigma_{zz}\) |
|
19.9326 |
0.035 |
|
\(\sigma_{xy}\) |
|
0.012 |
||
VMIS |
|
138.5226 |
0.02 |
|
TRESCA |
|
159.9521 |
0.02 |
|
PRIN_1 |
|
-59.9955 |
0.02 |
|
PRIN_2 |
|
19.9326 |
0.035 |
|
PRIN_3 |
|
99.9566 |
0.01 |
|
VMIS_SG |
|
138.5226 |
0.02 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(-2.1217\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
\(v\) |
|
\(2.1217\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
20.003 |
0.005 |
|
\(\sigma_{yy}\) |
|
20.003 |
0.005 |
|
\(\sigma_{zz}\) |
|
20.003 |
0.005 |
|
\(\sigma_{xy}\) |
|
20.003 |
0.005 |
For the Green-Lagrange strains:
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
A |
\(E_{xx}\) |
|
0.00059946 |
2.E-4 |
\(E_{yy}\) |
|
-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¶
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¶

|
|
|
---|---|---|
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\) |
|
\(2.0\times 10^{-5}\) |
|
\(v\) |
|
\(6.0\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
-59.9955 |
0.025 |
|
\(\sigma_{yy}\) |
|
99.9566 |
0.02 |
|
\(\sigma_{zz}\) |
|
19.9326 |
0.03 |
|
\(\sigma_{xy}\) |
|
0.03 |
||
VMIS |
|
138.5226 |
0.01 |
|
TRESCA |
|
159.9521 |
0.01 |
|
PRIN_1 |
|
-59.9955 |
0.025 |
|
PRIN_2 |
|
19.9326 |
0.03 |
|
PRIN_3 |
|
99.9566 |
0.015 |
|
VMIS_SG |
|
138.5226 |
0.01 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(-2.1217\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
\(v\) |
|
\(2.1217\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
20.003 |
0.005 |
|
\(\sigma_{yy}\) |
|
20.003 |
0.005 |
|
\(\sigma_{zz}\) |
|
20.003 |
0.005 |
|
\(\sigma_{xy}\) |
|
-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¶
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¶

|
|
|
---|---|---|
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\) |
|
\(1.0\times 10^{-5}\) |
|
\(v\) |
|
\(6.0\times 10^{-5}\) |
\(5.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
99.9566 |
0.005 |
|
\(\sigma_{yy}\) |
|
-59.9955 |
0.03 |
|
\(\sigma_{zz}\) |
|
19.9326 |
0.03 |
|
\(\sigma_{xy}\) |
|
0.03 |
||
VMIS |
|
138.5226 |
0.02 |
|
TRESCA |
|
159.9521 |
0.02 |
|
PRIN_1 |
|
-59.9955 |
0.03 |
|
PRIN_2 |
|
19.9326 |
0.03 |
|
PRIN_3 |
|
99.9566 |
0.02 |
|
VMIS_SG |
|
138.5226 |
0.02 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(-2.1217\times 10^{-5}\) |
\(5.0\times 10^{-3}\) |
\(v\) |
|
\(2.1217\times 10^{-5}\) |
\(5.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
20.003 |
0.005 |
|
\(\sigma_{yy}\) |
|
20.003 |
0.005 |
|
\(\sigma_{zz}\) |
|
20.003 |
0.005 |
|
\(\sigma_{xy}\) |
|
20.003 |
0.005 |
For the Green-Lagrange strains:
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
A |
\(E_{xx}\) |
|
0.000601357472911 |
4% |
\(E_{yy}\) |
|
-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¶
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¶

|
|
|
---|---|---|
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\) |
|
\(6.0\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
\(u\) |
|
\(1.0\times 10^{-5}\) |
||
\(\sigma_{xx}\) |
|
-59.9955 |
0.005 |
|
\(\sigma_{yy}\) |
|
19.9326 |
0.005 |
|
\(\sigma_{zz}\) |
|
99.9566 |
0.005 |
|
\(\sigma_{xy}\) |
|
0.00001 |
||
VMIS |
|
138.5226 |
0.005 |
|
TRESCA |
|
159.9521 |
0.005 |
|
PRIN_1 |
|
-59.9955 |
0.005 |
|
PRIN_2 |
|
19.9326 |
0.005 |
|
PRIN_3 |
|
99.9566 |
0.005 |
|
VMIS_SG |
|
138.5226 |
0.005 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(3.0\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
\(v\) |
|
0 |
\(1.0\times 10^{-5}\) |
|
\(\sigma_{xx}\) |
|
0.0 |
0.03 |
|
\(\sigma_{yy}\) |
|
20.0 |
0.005 |
|
\(\sigma_{zz}\) |
|
40.006 |
0.005 |
|
\(\sigma_{xy}\) |
|
0.0 |
0.005 |
For the Green-Lagrange strains:
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
A |
\(E_{xx}\) |
|
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¶
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¶

|
|
|
---|---|---|
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\) |
|
\(1.0\times 10^{-5}\) |
|
\(v\) |
|
\(6.0\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
99.9566 |
0.03 |
|
\(\sigma_{yy}\) |
|
-59.9955 |
0.09 |
|
\(\sigma_{zz}\) |
|
19.9326 |
0.08 |
|
\(\sigma_{xy}\) |
|
0.005 |
||
VMIS |
|
138.5226 |
0.05 |
|
TRESCA |
|
159.9521 |
0.05 |
|
PRIN_1 |
|
-59.9955 |
0.09 |
|
PRIN_2 |
|
19.9326 |
0.08 |
|
PRIN_3 |
|
99.9566 |
0.03 |
|
VMIS_SG |
|
138.5226 |
0.05 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(-2.1217\times 10^{-5}\) |
\(3.0\times 10^{-3}\) |
\(v\) |
|
\(2.1217\times 10^{-5}\) |
\(3.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
20.003 |
0.04 |
|
\(\sigma_{yy}\) |
|
20.003 |
0.17 |
|
\(\sigma_{zz}\) |
|
20.003 |
0.07 |
|
\(\sigma_{xy}\) |
|
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\) |
|
\(1.0\times 10^{-5}\) |
|
\(v\) |
|
\(6.0\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
99.9566 |
0.01 |
|
\(\sigma_{yy}\) |
|
-59.9955 |
0.03 |
|
\(\sigma_{zz}\) |
|
19.9326 |
0.05 |
|
\(\sigma_{xy}\) |
|
0.03 |
||
VMIS |
|
138.5226 |
0.0015 |
|
TRESCA |
|
159.9521 |
0.0015 |
|
PRIN_1 |
|
-59.9955 |
0.0025 |
|
PRIN_2 |
|
19.9326 |
0.005 |
|
PRIN_3 |
|
99.9566 |
0.0005 |
|
VMIS_SG |
|
138.5226 |
0.0015 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(-2.1217\times 10^{-5}\) |
\(5.0\times 10^{-3}\) |
\(v\) |
|
\(2.1217\times 10^{-5}\) |
\(5.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
20.003 |
0.002 |
|
\(\sigma_{yy}\) |
|
20.003 |
0.002 |
|
\(\sigma_{zz}\) |
|
20.003 |
0.0025 |
|
\(\sigma_{xy}\) |
|
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\) |
|
\(2.0\times 10^{-5}\) |
|
\(v\) |
|
\(6.0\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
-59.9955 |
0.02 |
|
\(\sigma_{yy}\) |
|
99.9566 |
0.02 |
|
\(\sigma_{zz}\) |
|
19.9326 |
0.03 |
|
\(\sigma_{xy}\) |
|
0.03 |
||
VMIS |
|
138.5226 |
0.0045 |
|
TRESCA |
|
159.9521 |
0.0045 |
|
PRIN_1 |
|
-59.9955 |
0.02 |
|
PRIN_2 |
|
19.9326 |
0.03 |
|
PRIN_3 |
|
99.9566 |
0.015 |
|
VMIS_SG |
|
138.5226 |
0.0045 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(-2.1217\times 10^{-5}\) |
\(1.0\times 10^{-4}\) |
\(v\) |
|
\(2.1217\times 10^{-5}\) |
\(1.0\times 10^{-4}\) |
|
\(\sigma_{xx}\) |
|
20.003 |
0.003 |
|
\(\sigma_{yy}\) |
|
20.003 |
0.005 |
|
\(\sigma_{zz}\) |
|
20.003 |
0.0025 |
|
\(\sigma_{xy}\) |
|
-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\) |
|
\(1.0\times 10^{-5}\) |
|
\(v\) |
|
\(6.0\times 10^{-5}\) |
\(1.0\times 10^{-4}\) |
|
\(\sigma_{xx}\) |
|
99.9566 |
0.005 |
|
\(\sigma_{yy}\) |
|
-59.9955 |
0.02 |
|
\(\sigma_{zz}\) |
|
19.9326 |
0.025 |
|
\(\sigma_{xy}\) |
|
0.02 |
||
VMIS |
|
138.5226 |
0.006 |
|
TRESCA |
|
159.9521 |
0.006 |
|
PRIN_1 |
|
-59.9955 |
0.02 |
|
PRIN_2 |
|
19.9326 |
0.025 |
|
PRIN_3 |
|
99.9566 |
0.003 |
|
VMIS_SG |
|
138.5226 |
0.006 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(-2.1217\times 10^{-5}\) |
\(3.0\times 10^{-4}\) |
\(v\) |
|
\(2.1217\times 10^{-5}\) |
\(3.0\times 10^{-4}\) |
|
\(\sigma_{xx}\) |
|
20.003 |
0.005 |
|
\(\sigma_{yy}\) |
|
20.003 |
0.0025 |
|
\(\sigma_{zz}\) |
|
20.003 |
0.0005 |
|
\(\sigma_{xy}\) |
|
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\) |
|
\(6.0\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
\(u\) |
|
\(1.0\times 10^{-5}\) |
||
\(\sigma_{xx}\) |
|
-59.9955 |
0.005 |
|
\(\sigma_{yy}\) |
|
19.9326 |
0.005 |
|
\(\sigma_{zz}\) |
|
99.9566 |
0.005 |
|
\(\sigma_{xy}\) |
|
0.00001 |
||
VMIS |
|
138.5226 |
0.002 |
|
TRESCA |
|
159.9521 |
0.002 |
|
PRIN_1 |
|
-59.9955 |
0.003 |
|
PRIN_2 |
|
19.9326 |
0.005 |
|
PRIN_3 |
|
99.9566 |
0.005 |
|
VMIS_SG |
|
138.5226 |
0.002 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(3.0\times 10^{-5}\) |
\(5.0\times 10^{-4}\) |
\(v\) |
|
0 |
\(1.0\times 10^{-5}\) |
|
\(\sigma_{xx}\) |
|
0.0 |
0.03 |
|
\(\sigma_{yy}\) |
|
20.0 |
0.006 |
|
\(\sigma_{zz}\) |
|
40.006 |
0.003 |
|
\(\sigma_{xy}\) |
|
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\) |
|
\(1.0\times 10^{-5}\) |
|
\(v\) |
|
\(6.0\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
99.9566 |
0.0015 |
|
\(\sigma_{yy}\) |
|
-59.9955 |
0.01 |
|
\(\sigma_{zz}\) |
|
19.9326 |
0.015 |
|
\(\sigma_{xy}\) |
|
0.0008 |
||
VMIS |
|
138.5226 |
0.002 |
|
TRESCA |
|
159.9521 |
0.002 |
|
PRIN_1 |
|
-59.9955 |
0.007 |
|
PRIN_2 |
|
19.9326 |
0.015 |
|
PRIN_3 |
|
99.9566 |
0.0015 |
|
VMIS_SG |
|
138.5226 |
0.002 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(-2.1217\times 10^{-5}\) |
\(4.0\times 10^{-3}\) |
\(v\) |
|
\(2.1217\times 10^{-5}\) |
\(4.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
20.003 |
0.007 |
|
\(\sigma_{yy}\) |
|
20.003 |
0.002 |
|
\(\sigma_{zz}\) |
|
20.003 |
0.0003 |
|
\(\sigma_{xy}\) |
|
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\) |
|
\(1.0\times 10^{-3}\) |
|
\(v\) |
|
\(6.0\times 10^{-5}\) |
\(1.0\times 10^{-4}\) |
|
\(\sigma_{xx}\) |
|
99.9566 |
0.01 |
|
\(\sigma_{yy}\) |
|
-59.9955 |
0.03 |
|
\(\sigma_{zz}\) |
|
19.9326 |
0.05 |
|
\(\sigma_{xy}\) |
|
0.03 |
||
VMIS |
|
138.5226 |
0.0015 |
|
TRESCA |
|
159.9521 |
0.0015 |
|
PRIN_1 |
|
-59.9955 |
0.0025 |
|
PRIN_2 |
|
19.9326 |
0.005 |
|
PRIN_3 |
|
99.9566 |
0.0005 |
|
VMIS_SG |
|
138.5226 |
0.0015 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(-2.1217\times 10^{-5}\) |
\(5.0\times 10^{-3}\) |
\(v\) |
|
\(2.1217\times 10^{-5}\) |
\(5.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
20.003 |
0.002 |
|
\(\sigma_{yy}\) |
|
20.003 |
0.002 |
|
\(\sigma_{zz}\) |
|
20.003 |
0.0025 |
|
\(\sigma_{xy}\) |
|
20.003 |
0.0015 |
For the Green-Lagrange strains:
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
A |
\(E_{xx}\) |
|
0.000599576100401 |
2.E-4 |
\(E_{yy}\) |
|
-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\) |
|
\(2.0\times 10^{-4}\) |
|
\(v\) |
|
\(6.0\times 10^{-5}\) |
\(1.0\times 10^{-3}\) |
|
\(\sigma_{xx}\) |
|
-59.9955 |
0.02 |
|
\(\sigma_{yy}\) |
|
99.9566 |
0.02 |
|
\(\sigma_{zz}\) |
|
19.9326 |
0.03 |
|
\(\sigma_{xy}\) |
|
0.03 |
||
VMIS |
|
138.5226 |
0.005 |
|
TRESCA |
|
159.9521 |
0.005 |
|
PRIN_1 |
|
-59.9955 |
0.02 |
|
PRIN_2 |
|
19.9326 |
0.03 |
|
PRIN_3 |
|
99.9566 |
0.015 |
|
VMIS_SG |
|
138.5226 |
0.005 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(-2.1217\times 10^{-5}\) |
\(1.0\times 10^{-4}\) |
\(v\) |
|
\(2.1217\times 10^{-5}\) |
\(1.0\times 10^{-4}\) |
|
\(\sigma_{xx}\) |
|
20.003 |
0.003 |
|
\(\sigma_{yy}\) |
|
20.003 |
0.005 |
|
\(\sigma_{zz}\) |
|
20.003 |
0.0025 |
|
\(\sigma_{xy}\) |
|
-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\) |
|
\(1.0\times 10^{-5}\) |
|
\(v\) |
|
\(6.0\times 10^{-5}\) |
\(1.0\times 10^{-4}\) |
|
\(\sigma_{xx}\) |
|
99.9566 |
0.005 |
|
\(\sigma_{yy}\) |
|
-59.9955 |
0.02 |
|
\(\sigma_{zz}\) |
|
19.9326 |
0.025 |
|
\(\sigma_{xy}\) |
|
0.02 |
||
VMIS |
|
138.5226 |
0.006 |
|
TRESCA |
|
159.9521 |
0.006 |
|
PRIN_1 |
|
-59.9955 |
0.02 |
|
PRIN_2 |
|
19.9326 |
0.025 |
|
PRIN_3 |
|
99.9566 |
0.003 |
|
VMIS_SG |
|
138.5226 |
0.006 |
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
F |
\(u\) |
|
\(-2.1217\times 10^{-5}\) |
\(3.0\times 10^{-4}\) |
\(v\) |
|
\(2.1217\times 10^{-5}\) |
\(3.0\times 10^{-4}\) |
|
\(\sigma_{xx}\) |
|
20.003 |
0.005 |
|
\(\sigma_{yy}\) |
|
20.003 |
0.0025 |
|
\(\sigma_{zz}\) |
|
20.003 |
0.0005 |
|
\(\sigma_{xy}\) |
|
20.003 |
0.002 |
For the Green-Lagrange strains:
Identification |
Type of reference |
Reference value |
Tolerance |
|
---|---|---|---|---|
A |
\(E_{xx}\) |
|
0.000601357472911 |
4% |
\(E_{yy}\) |
|
-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'