!*************************************************************************************!
! TITLE: CFVR5248 - Prestressed structure with SHELL43 and SOLID45
! SUBTITLE:
!
! DESCRIPTION: The model is a prestressed structure 20 m length.
! DESCRIPTION:
! DESCRIPTION: The structure is made of HA-40 concrete with tendons which are made of Y1860S3 steel.
! DESCRIPTION:
! DESCRIPTION: The aim of the example is to verify the calculation of prestressing losses.
!
! ELEMENT TYPE: SHELL43 SOLID45
! MODULES: PRSC NLBR
! UNITS: SI
! KEYWORD1: Shell
! KEYWORD2: Tendon
! KEYWORD3: Shell Vertex
! KEYWORD4: Prestressed Concrete
!
!*************************************************************************************!

  FINISH
  ~CFCLEAR,,1

! Modules activation
! --------------------------------------------------
  ~CFACTIV,NLBR,Y
  ~CFACTIV,PRSC,Y
  NomFile='CFVR5248'
  /TITLE, %NomFile%, Prestressed structure with SHELL43 and SOLID45

! Setup
! --------------------------------------------------
  ~CODESEL,,EHE-98,EHE-98
  ~UNITS,SI

  ~CFCONFG,PC,PCA,0

   /VUP,ALL,X

/PREP7

! Element types
! --------------------------------------------------
  ET,1,SHELL43
  ET,2,SOLID45

! Materials
! --------------------------------------------------
  ~CFMP,1,LIB,CONCRETE,EHE,HA-40
  ~CFMP,3,LIB,PREST,EHE,Y1860S3

 ~SHLRNF,1,1.00,1,0,0.0,0.0,0.0,0.0,0.0,0,0.0,45.0
 ~SHLMDF,1,NAME,,,Shell Vertex 1
 ~BMSHPRO,1,SHELL,1,1,1,1,43,,,0 ,Shell 1

RECTNG,0,3,0,20,
BLOCK,0,3,0,20,5,6,

TYPE,1
MAT,1
REAL,1
ESIZE,1
MSHAPE,0,2D
MSHKEY,1

AMESH,1

TYPE,2
MSHAPE,0,3D
VMESH,1

/ESHAPE,1.0

! Support beam for shell
! ------------------------------------
ASEL,S,LOC,Z,0
ESLA,S

LOCAL,11,,0,0,0,90,,,1,1,
NSEL,R,LOC,X,0
ESLN,R
~SLDSEC,1,1,11,Solid Section 1

ALLSEL,ALL
ASEL,S,LOC,Z,0
ESLA,S
LOCAL,12,,0,10,0,90,,,1,1,
NSEL,R,LOC,X,0,1
ESLN,R,1
NSEL,R,LOC,X,0
~SLDSEC,2,1,12,Solid Section 2

ALLSEL,ALL
ASEL,S,LOC,Z,0
ESLA,S
LOCAL,13,,0,20,0,90,,,1,1,
NSEL,R,LOC,X,0,
ESLN,R
~SLDSEC,3,1,13,Solid Section 3

ALLSEL,ALL
ASEL,S,LOC,Z,0
ESLA,S

CSYS,11

~SBSMDEF,1,3,1

~PCEPDEF,1,1,-0.5,0,0.50
~PCEPDEF,2,2,-2.0,0,0.50
~PCEPDEF,3,3,-0.5,0,0.50

~PCPPDEF,1,1,-0.25,0,0.5
~PCPPDEF,2,2,0,0,0.5
~PCPPDEF,3,3,0.25,0,0.5

~PCTNDEF,1,3,5e-003,13e-002,1000000,,25000

*DO,I,1,3
  ~PCTNMDF,1,EADD,I
  ~PCTNMDF,1,PADD,I
*ENDDO

 ~PCTNMDF,1,EPAROUT,1,3
 ~PCTNMDF,1,EPARIN,2

 ~PCPLPL
 LSUM
 *GET,LENGTH1,LINE,0,LENG

 ~PCPL

! Support beam for solid
! ------------------------------------

ALLSEL,ALL
CSYS,0
~SBCLEAR

VSEL,S,LOC,Z,5,6
ESLV,S
NSLV,R,1

LOCAL,14,,0,0,5.5,90,,,1,1,
NSEL,R,LOC,X,0
ESLN,R
~SLDSEC,4,1,14,Solid Section 1

ALLSEL,ALL
VSEL,S,LOC,Z,0
ESLV,S
NSLV,R,1
LOCAL,15,,0,10,5.5,90,,,1,1,
NSEL,R,LOC,X,0,1
ESLN,R,1
NSEL,R,LOC,X,0
~SLDSEC,5,1,15,Solid Section 2

ALLSEL,ALL
VSEL,S,LOC,Z,0
ESLV,S
NSLV,R,1
LOCAL,16,,0,20,5.5,90,,,1,1,
NSEL,R,LOC,X,0,
ESLN,R
~SLDSEC,6,1,16,Solid Section 3

ALLSEL,ALL
VSEL,S,LOC,Z,0
ESLV,S
NSLV,R,1

CSYS,14

~SBSMDEF,4,6,1

~PCEPDEF,1,1,-0.5,0,0.50
~PCEPDEF,2,2,-2.0,0,0.50
~PCEPDEF,3,3,-0.5,0,0.50

~PCPPDEF,1,1,-0.25,0,0.5
~PCPPDEF,2,2,0,0,0.5
~PCPPDEF,3,3,0.25,0,0.5

~PCTNDEF,1,3,5e-003,13e-002,1000000,,25000

*DO,I,1,3
  ~PCTNMDF,1,EADD,I
  ~PCTNMDF,1,PADD,I
*ENDDO

 ~PCTNMDF,1,EPAROUT,1,3
 ~PCTNMDF,1,EPARIN,2

 ~PCPLPL
  LSUM
 *GET,LENGTH2,LINE,0,LENG

 ~PCPL

! Obtain results
! ---------------------------------------------------
ALLSEL,ALL
CSYS,0

*DIM,NODO,ARRAY,8
*DIM,FxShell,ARRAY,4
*DIM,FyShell,ARRAY,4
*DIM,FzShell,ARRAY,4
*DIM,MxShell,ARRAY,4
*DIM,MyShell,ARRAY,4
*DIM,MzShell,ARRAY,4

NODO(1) = NODE(0, 0,0)
NODO(2) = NODE(2, 8,0)
NODO(3) = NODE(2,16,0)
NODO(4) = NODE(1,20,0)

*DO,I,1,4
 *GET,FxShell(I),NODE,NODO(I),F,FX
 *GET,FyShell(I),NODE,NODO(I),F,FY
 *GET,FzShell(I),NODE,NODO(I),F,FZ
 *GET,MxShell(I),NODE,NODO(I),F,MX
 *GET,MyShell(I),NODE,NODO(I),F,MY
 *GET,MzShell(I),NODE,NODO(I),F,MZ
*ENDDO

*DIM,FxNodes,ARRAY,4,2
*DIM,FyNodes,ARRAY,4,2
*DIM,FzNodes,ARRAY,4,2
*DIM,FxSolid,ARRAY,4
*DIM,FySolid,ARRAY,4
*DIM,FzSolid,ARRAY,4
*DIM,MxSolid,ARRAY,4
*DIM,MySolid,ARRAY,4
*DIM,MzSolid,ARRAY,4

NODO(1) = NODE(0, 0,5)
NODO(2) = NODE(2, 8,5)
NODO(3) = NODE(2,16,5)
NODO(4) = NODE(1,20,5)
NODO(5) = NODE(0, 0,6)
NODO(6) = NODE(2, 8,6)
NODO(7) = NODE(2,16,6)
NODO(8) = NODE(1,20,6)

*DO,I,1,4
 *GET,FxNodes(I,1),NODE,NODO(I),F,FX
 *GET,FyNodes(I,1),NODE,NODO(I),F,FY
 *GET,FzNodes(I,1),NODE,NODO(I),F,FZ
 *GET,FxNodes(I,2),NODE,NODO(I+4),F,FX
 *GET,FyNodes(I,2),NODE,NODO(I+4),F,FY
 *GET,FzNodes(I,2),NODE,NODO(I+4),F,FZ
*ENDDO

*DO,I,1,4
  FxSolid(I) = FxNodes(I,1)+FxNodes(I,2)
  FySolid(I) = FyNodes(I,1)+FyNodes(I,2)
  FzSolid(I) = FzNodes(I,1)+FzNodes(I,2)
  MxSolid(I) = 0.5*FyNodes(I,1)-0.5*FyNodes(I,2)
  MySolid(I) =-0.5*FxNodes(I,1)+0.5*FxNodes(I,2)
  MzSolid(I) = 0
*ENDDO

NSEL,S,LOC,Y,20
D,ALL,ALL
ALLSEL,ALL

/SOLU
SOLVE

!--------------------------------------------------------------------------------------
! DATA CHECK
!--------------------------------------------------------------------------------------
! Data comparison number
  NComp    = 25
  NComp_ch = 0

! Matrix dim.
  *DIM,LABEL,CHAR,Ncomp,1
  *DIM,LABEL_CH,CHAR,Ncomp_ch,1
  *DIM,VALUE,,Ncomp,3
  *DIM,VALUE_CH,CHAR,Ncomp_ch,3
  *DIM,TOLER,,Ncomp,2

! Labels
!--------------------------------------------------------------------------------------
  LABEL( 1)  = 'LENGTH'
  LABEL( 2)  = 'Fx_1'
  LABEL( 3)  = 'Fx_2'
  LABEL( 4)  = 'Fx_3'
  LABEL( 5)  = 'Fx_4'
  LABEL( 6)  = 'Fy_1'
  LABEL( 7)  = 'Fy_2'
  LABEL( 8)  = 'Fy_3'
  LABEL( 9)  = 'Fy_4'
  LABEL(10)  = 'Fz_1'
  LABEL(11)  = 'Fz_2'
  LABEL(12)  = 'Fz_3'
  LABEL(13)  = 'Fz_4'
  LABEL(14)  = 'Mx_1'
  LABEL(15)  = 'Mx_2'
  LABEL(16)  = 'Mx_3'
  LABEL(17)  = 'Mx_4'
  LABEL(18)  = 'My_1'
  LABEL(19)  = 'My_2'
  LABEL(20)  = 'My_3'
  LABEL(21)  = 'My_4'
  LABEL(22)  = 'Mz_1'
  LABEL(23)  = 'Mz_2'
  LABEL(24)  = 'Mz_3'
  LABEL(25)  = 'Mz_4'

! Correct data, obtained data
!--------------------------------------------------------------------------------------
  VALUE( 1,1) = LENGTH2           $  VALUE( 1,2) = LENGTH2
  *DO,I,1,4
    VALUE( 1+I,1) = FxShell(I)    $  VALUE( 1+I,2) = FxSolid(I)
    VALUE( 5+I,1) = FyShell(I)    $  VALUE( 5+I,2) = FySolid(I)
    VALUE( 9+I,1) = FzShell(I)    $  VALUE( 9+I,2) = FzSolid(I)
    VALUE(13+I,1) = MxShell(I)    $  VALUE(13+I,2) = MxSolid(I)
    VALUE(17+I,1) = MyShell(I)    $  VALUE(17+I,2) = MySolid(I)
    VALUE(21+I,1) = MzShell(I)    $  VALUE(21+I,2) = MzSolid(I)
  *ENDDO

! Warning and error tolerances
  *DO,II,2,NComp
    TOLER(II,1)  = 1E-2
    TOLER(II,2)  = 1E-2
  *ENDDO

!--------------------------------------------------------------------------------------
! Result comparison
!--------------------------------------------------------------------------------------
  COMPARA.MAC
