2. Benchmark solution#
2.1. Calculation method#
The pipe support elements are SEG3.
The position of the integration points along SEG3 is given in [R3.01.01] « Shape functions and finite element integration points ».
# Coordinates of the Gauss Points along the SEG3 *
LongBeam = 2.0 * pow (3.0,0.5)
xpg = pow (3.0/5.0,0.5)
Points= {1: LongBeam*(1.0-xpg)* 0.5,
2: long beam* 0.5,
3: LongBeam*(1.0+xpg)* 0.5,}
The coordinates of the integration sub-points depend on the number of layers, the number of sectors, and of course the diameter and thickness of the pipe.
*# Sub-Point Coordinates « Nbfibre = (2*Ncou+1) *(2*Nsect+1) » *
def CoordFibre (ifib):
Rint = Rex-Ep
# coordinate index
NumAng = ((ifib-1)% (2*Nsect+1))/(2.0*Nsect)
NumNeck = ((ifib-1)/(2 *Insect+1))/(2.0*Nneck)
y = (Rint+EP*NumCoU)*np.cos (2.0*np.PI*nummang)
z = - (Rint+EP*NumCoU)*np.sin (2.0*np.pi*nummang)
return y, z
where:
◦ Rext and Ep are the outer radius and the thickness of the pipe, respectively, specified in command AFFE_CARA_ELEM.
◦ Nsect and Ncu are the number of sectors and layers, respectively, specified in the AFFE_CARA_ELEM command.
CARA = AFFE_CARA_ELEM (
MODELE = MODELE,
POUTRE =_F (GROUP_MA =( “POUTRE “, “ POUTRE0”), **
SECTION =” CERCLE “, CARA =( “R”, “EP”), VALE =( 10.0,1.0 )) **,
TUYAU_NSEC = 4, TUYAU_NCOU = 2, ),
)
The transition matrix from pipe \(P0P1\) to pipe \(P0P2\) makes it possible to calculate the coordinates of the sub-points of pipe \(P0P2\) from the previous formulas.
# Axe_X to Trisectrice transition matrix
un3 = 1.0/ pow (3.0,0.5); a2 = 1.0/ pow (2.0,0.5); un6 = 1.0/ pow (3.0,0.5); un6 = 1.0/ pow (3.0,0.5)
matPass = np.Array ([[ un3, -un2, -un6],
[:ref:` un3, un2, -un6 < un3, un2, -un6>`],
[:ref:` un3, 0.0, 2.0 *un6 < un3, 0.0, 2.0*un6>`]])
For pipe \(P0P1\) the coordinates \((x,y,z)\) of the fiber “ifib” for the point “ipt” are given by:
x = Points [ipt]
y, z = CoordFibre (ifib)
For pipe \(P0P2\) the coordinates \(({x}_{t},{y}_{t},{z}_{t})\) of the fiber “ifib” for the point “ipt” are given by:
# According to the Trisectrice
xx = Points [ipt]
yy, zz = CoordFibre (ifib)
xxt, yyt, zzt = np.dot (matPass, np.array ([xx, yy, zz]))
2.2. Reference quantities and results#
The coordinates of all sub-points are tested.
To obtain the coordinates a table is generated from a constraint field constructed at the sub-points.
CSIEF = CREA_CHAMP (TYPE_CHAM =” ELGA_SIEF_R “, OPERATION = » AFFE « ,
MODELE = MODELE,
AFFE_SP =_F (CARA_ELEM = CARA, )) , PROL_ZERO =” OUI “**,
AFFE =_F (TOUT = » OUI « , **** NOM_CMP =( “SIXX “,) , VALE =**** ( 0.0, )) ,) ,) ), ), ),
)
RESU = CREA_RESU (TYPE_RESU = « » EVOL_NOLI « , « OPERATION = « AFFE « »,
NOM_CHAM =” SIEF_ELGA “,
AFFE = _F (CHAM_GD = CSIEF, , MODELE =**MODELE,** CARA_ELEM =**CARA,** INST =**0.0,**) ),
)
The coordinates are then tested using TEST_TABLE.
For example for the “X” coordinate of pipe \(P0P1\):
TEST_TABLE (REFERENCE =” ANALYTIQUE “,
VALE_CALC =xx, VALE_REFE =xx, =xx, =xx, TABLE = TBEPS0, NOM_PARA COOR_X
FILTRE =( _F (NOM_PARA =” POINT “, VALE_I = ipt, )) ,) **,
_F (NOM_PARA =” SOUS_POINT “, VALE_I = ifib, ), )) ), ), **
)
2.3. Uncertainty about the solution#
None, exact solution.