!*************************************************************************************!
! TITLE: CFVR5211 - 2 Span prestressed beam.
! SUBTITLE:
!
! DESCRIPTION: The model is a straight prestressed beam of 20 m length.
! DESCRIPTION:
! DESCRIPTION: The beam is made of C20/25 concrete and the tendons are made of Y1860C steel.
! DESCRIPTION:
! DESCRIPTION: The cross section is rectangular, 1 x 2.
! DESCRIPTION:
! DESCRIPTION: The aim of the example is to verify the tendons generation.
!
! ELEMENT TYPE: BEAM44
! MODULES: PRSC
! UNITS: SI
! KEYWORD1: Beam
! KEYWORD2: Tendon
! KEYWORD3: Cross Section
! KEYWORD4: Prestressed Concrete
!
!*************************************************************************************!
  FINISH
  ~CFCLEAR,,1
  ~CFACTIV,PRSC,Y
  NomFile='CFVR5211'
  /TITLE, %NomFile%, 2 Span prestressed beam

! -------------------------------------------------------------------------------------
! Initial data
! -------------------------------------------------------------------------------------
  /PREP7
! Materials
  ~CFMP,1,LIB,CONCRETE,EC2,C20/25
  ~CFMP,10,LIB,PREST,EN10138,Y1860C

! Model definition
  Width = 1.0
  Length = 2.0
  ~CSECDMS,1,REC,1,Width,Length
  ~BMSHPRO,1,BEAM,1,1,,,44,1,1,,Beam 1

  epsilon = 0.1
  K,1
  K,2,4.0,0
  K,3,8.0,0
  K,4,8.0+epsilon,0
  K,5,14.0,0
  K,6,14.0+epsilon,0
  K,7,20.0,0
  L,1,2
  L,2,3
  L,4,5
  L,6,7
  LESIZE,ALL,,,10
  LSEL,NONE
  L,3,4
  L,5,6
  LESIZE,ALL,,,1
  LSEL,ALL

  ET,1,BEAM44
  TYPE,1
  REAL,1
  MAT,1

  LMESH,ALL

! Capture support beam.
  ~SBBMDEF,1

! Prestressing tendons definition.
! Points
  Node1 = NODE(0,0,0)
  Node2 = NODE(4.0,0,0)
  Node3 = NODE(8.0,0,0)
  Node4 = NODE(8.0+epsilon,0,0)
  Node5 = NODE(14.0,0,0)
  Node6 = NODE(14.0+epsilon,0,0)
  Node7 = NODE(20.0,0,0)

  ~CFGET,Cut1,PRSCONC,,NODE,CUT,,Node1
  ~CFGET,Cut2,PRSCONC,,NODE,CUT,,Node2
  ~CFGET,Cut3,PRSCONC,,NODE,CUT,,Node3
  ~CFGET,Cut4,PRSCONC,,NODE,CUT,,Node4
  ~CFGET,Cut5,PRSCONC,,NODE,CUT,,Node5
  ~CFGET,Cut6,PRSCONC,,NODE,CUT,,Node6
  ~CFGET,Cut7,PRSCONC,,NODE,CUT,,Node7

  ~PCPPDEF,1,Cut1,0.0,0.0
  ~PCPPDEF,2,Cut7,0.0,0.0
  ~PCEPDEF,1,Cut1,-Width/2+.5,0.0
  ~PCEPDEF,2,Cut2,-Width/2+.2,0.0
  ~PCEPDEF,3,Cut3,-Width/2+1.0,0.0
  ~PCEPDEF,4,Cut4,-Width/2+1.0,0.0
  ~PCEPDEF,5,Cut5,-Width/2+.1,0.0
  ~PCEPDEF,6,Cut6,-Width/2+.1,0.0
  ~PCEPDEF,7,Cut7,-Width/2+.5,0.0

  ! Tendons
  P0 = 1000*9.81e3
  Area = 691e-6
  ~PCTNDEF, 1, 10,Area,.05,P0,P0
  *DO,II,1,2
    ~PCTNMDF,1,PADD,II
  *ENDDO
  *DO,II,1,7
    ~PCTNMDF,1,EADD,II
  *ENDDO
  ~PCTNMDF,1,EPAROUT,1
  ~PCTNMDF,1,EPARIN,2
  ~PCTNMDF,1,ESTRLN,4
  ~PCTNMDF,1,ESTRLN,6

!--------------------------------------------------------------------------------------
! DATA CHECK
!--------------------------------------------------------------------------------------
! Data comparison number
  NComp    = 20
  NComp_ch = 0

! Marix 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)  = 'Y1'
  LABEL( 2)  = 'Y2'
  LABEL( 3)  = 'Y3'
  LABEL( 4)  = 'Y4'
  LABEL( 5)  = 'Y5'
  LABEL( 6)  = 'Z1'
  LABEL( 7)  = 'Z2'
  LABEL( 8)  = 'Z3'
  LABEL( 9)  = 'Z4'
  LABEL(10)  = 'Z5'
  LABEL(11)  = 'SXY1'
  LABEL(12)  = 'SXY2'
  LABEL(13)  = 'SXY3'
  LABEL(14)  = 'SXY4'
  LABEL(15)  = 'SXY5'
  LABEL(16)  = 'SXZ1'
  LABEL(17)  = 'SXZ2'
  LABEL(18)  = 'SXZ3'
  LABEL(19)  = 'SXZ4'
  LABEL(20)  = 'SXZ5'

! Correct data, obtained data
!--------------------------------------------------------------------------------------
  VALUE( 1,1) =-Width/2+.5     $  ~CFGET,value( 1,2),PRSCONC,,TENDON,COORD,Y,1,1
  VALUE( 2,1) =-Width/2+.2     $  ~CFGET,value( 2,2),PRSCONC,,TENDON,COORD,Y,1,11
  VALUE( 3,1) =-0.012          $  ~CFGET,value( 3,2),PRSCONC,,TENDON,COORD,Y,1,17
  VALUE( 4,1) =-Width/2+0.55   $  ~CFGET,value( 4,2),PRSCONC,,TENDON,COORD,Y,1,27
  VALUE( 5,1) =-Width/2+.5     $  ~CFGET,value( 5,2),PRSCONC,,TENDON,COORD,Y,1,43
  VALUE( 6,1) = 0.0            $  ~CFGET,value( 6,2),PRSCONC,,TENDON,COORD,Z,1,1
  VALUE( 7,1) = 0.0            $  ~CFGET,value( 7,2),PRSCONC,,TENDON,COORD,Z,1,11
  VALUE( 8,1) = 0.0            $  ~CFGET,value( 8,2),PRSCONC,,TENDON,COORD,Z,1,17
  VALUE( 9,1) = 0.0            $  ~CFGET,value( 9,2),PRSCONC,,TENDON,COORD,Z,1,27
  VALUE(10,1) = 0.0            $  ~CFGET,value(10,2),PRSCONC,,TENDON,COORD,Z,1,43
  VALUE(11,1) =-0.15           $  ~CFGET,value(11,2),PRSCONC,,TENDON,COORD,SXY,1,1
  VALUE(12,1) = 0.0            $  ~CFGET,value(12,2),PRSCONC,,TENDON,COORD,SXY,1,11
  VALUE(13,1) = 0.24           $  ~CFGET,value(13,2),PRSCONC,,TENDON,COORD,SXY,1,17
  VALUE(14,1) =-0.1525         $  ~CFGET,value(14,2),PRSCONC,,TENDON,COORD,SXY,1,27
  VALUE(15,1) = 0.0678         $  ~CFGET,value(15,2),PRSCONC,,TENDON,COORD,SXY,1,43
  VALUE(16,1) = 0.0            $  ~CFGET,value(16,2),PRSCONC,,TENDON,COORD,SXZ,1,1
  VALUE(17,1) = 0.0            $  ~CFGET,value(17,2),PRSCONC,,TENDON,COORD,SXZ,1,11
  VALUE(18,1) = 0.0            $  ~CFGET,value(18,2),PRSCONC,,TENDON,COORD,SXZ,1,17
  VALUE(19,1) = 0.0            $  ~CFGET,value(19,2),PRSCONC,,TENDON,COORD,SXZ,1,27
  VALUE(20,1) = 0.0            $  ~CFGET,value(20,2),PRSCONC,,TENDON,COORD,SXZ,1,43

! Warning and error tolerances
  *DO,II,1,NComp
    TOLER(II,1)  = 5E-5
    TOLER(II,2)  = 5E-5
  *ENDDO

!--------------------------------------------------------------------------------------
! Result comparison
!--------------------------------------------------------------------------------------
  COMPARA.MAC
