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.