Benchmark solution ===================== Calculation method ----------------- The pipe support elements are SEG3. • The position of the integration points along SEG3 is given in [:ref:`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 :math:`P0P1` to pipe :math:`P0P2` makes it possible to calculate the coordinates of the sub-points of pipe :math:`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 ([:ref:`[ un3, -un2, -un6 <[ 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 :math:`P0P1` the coordinates :math:`(x,y,z)` of the fiber 'ifib' for the point 'ipt' are given by: x = Points [ipt] y, z = CoordFibre (ifib) For pipe :math:`P0P2` the coordinates :math:`({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])) 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 :math:`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**, **)**, **)**) **)**, **)**, ** **)** Uncertainty about the solution ---------------------------- None, exact solution.