!*****************************************************************************************************!
! TITLE: CFVR5251 - Cracking checking for prestressed concrete
! SUBTITLE: Cracking checking for prestressed concrete on a box cross section according to Eurocode 2  (1991).
!
! DESCRIPTION: The model is a prestressed beam 5 m length.
! DESCRIPTION:
! DESCRIPTION: The beam is made of HA-35 concrete.
! DESCRIPTION:
! DESCRIPTION: The section is a box, with B500S steel reinforcement.
! DESCRIPTION: It has the following dimensions:
! DESCRIPTION:
! DESCRIPTION: - h = 0.8 m
! DESCRIPTION:
! DESCRIPTION: - b = 1.2 m
! DESCRIPTION:
! DESCRIPTION: - twy = 0.25 m
! DESCRIPTION:
! DESCRIPTION: - twz = 0.3 m
! DESCRIPTION:
! DESCRIPTION: Load states:
! DESCRIPTION:
! DESCRIPTION: - LS 1: Compression force N= -1000000 kN.
! DESCRIPTION:
! DESCRIPTION: - LS 2: Tensile force N= 100000 kN.
! DESCRIPTION:
! DESCRIPTION: - LS 3: Tensile force (N= 1000 kN) + Mz Bending moment (Mz = 70000 m*kN) +
! DESCRIPTION: Mz Bending moment (My = 50000 m*kN).
! DESCRIPTION:
! DESCRIPTION: The aim of the example is to verify the cracking checking for prestressed concrete
! DESCRIPTION: according to Eurocode 2.
!
! ELEMENT TYPE: BEAM44
! MODULES: PRSC
! UNITS: SI
! KEYWORD1: Beam
! KEYWORD2: Cross Section
! KEYWORD3: Prestressed Concrete
!
!*************************************************************************************!
  FINISH
  ~CFCLEAR,,1
   NomFile='CFVR5251'
 /TITLE,%NomFile%, Cracking checking for prestressed concrete

! -------------------------------------------------------------------------------------
! Initial data
! -------------------------------------------------------------------------------------
 ~CFACTIV,PRSC,Y
 ~UNITS,SI
 ~CODESEL,,EC2-91,EC2-91

! Preprocessor
  /PREP7

! Material Definition
 ~CFMP,1,LIB,CONCRETE,EHE,HA-35
 ~CFMP,2,LIB,REINF,EHE,B500S
! Element Type Definition
  ET,1,Beam44

! Cross-section definition
  ~CSECDMS,1,BOX,1,0.8,1.2,0.25,0.3,0 ,0 ,0 ,0 ,1 ,2
  ~RNFMDF,1,RBDEF,RMAT,2
  ~RNFMDF,1,RBDEF,RKEY,0
  ~RNFMDF,1,2,FI,12
  ~RNFMDF,1,2,N,6
  ~RNFMDF,1,4,FI,12
  ~RNFMDF,1,4,N,10
  ~RNFMDF,1,1,FI,12
  ~RNFMDF,1,1,N,8
  ~RNFMDF,1,3,FI,12
  ~RNFMDF,1,3,N,8

! Beam & Shell property
 ~BMSHPRO,1,BEAM,1,1,,,44,,,,Beam property

! Model Construction
  N,1                    ! Nodes input
  N,5,5
  FILL,1,5

  E,1,2                  ! Elements input
  EGEN,4,1,1,1

  D,1, , , , , ,ALL      ! Constraint conditions

/SOLU
  Mz = 0.0            ! Mz Bending moment
  My = 0.0            ! My Bending moment
  N  = -1e6           ! Axial force
  F,5,FX,N
  F,5,MZ,Mz
  F,5,MY,My
  SOLVE               ! Load Step 1

  Mz = 0.0            ! Mz Bending moment
  My = 0.0            ! My Bending moment
  N  = 1e5            ! Axial force
  F,5,FX,N
  F,5,MZ,Mz
  F,5,MY,My
  SOLVE               ! Load Step 2

  Mz = 7e4            ! Mz Bending moment
  My = 5e4            ! My Bending moment
  N  = 1e3            ! Axial force
  F,5,FX,N
  F,5,MZ,Mz
  F,5,MY,My
  SOLVE               ! Load Step 3

/POST1
! Postprocessor
  ~CFSET,,1,1       !Read first load step
  ~CHKPRS,CRACK, ,0,0.0001,1.7,0.5   ! Alernative 1
  ~CFSET,,2,1       !Read first load step
  ~CHKPRS,CRACK, ,0,0.0001,1.7,0.5   ! Alernative 2
  ~CFSET,,3,1       !Read first load step
  ~CHKPRS,CRACK, ,0,0.0001,1.7,0.5   ! Alernative 3
  ~CFSET,,3,1       !Read first load step
  ~CHKPRS,CRACK, ,1,0.0001,1.7,0.5   ! Alernative 4

!--------------------------------------------------------------------------------------
! DATA CHECK
!--------------------------------------------------------------------------------------
! Data comparison number
  NComp = 48
  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)  = 'ESM3_1'
  LABEL( 2)  = 'ESM1_1'
  LABEL( 3)  = 'SRM3_1'
  LABEL( 4)  = 'SRM1_1'
  LABEL( 5)  = 'WK3_1'
  LABEL( 6)  = 'WK1_1'
  LABEL( 7)  = 'POS3_1'
  LABEL( 8)  = 'POS1_1'
  LABEL( 9)  = 'SIG3_1'
  LABEL(10)  = 'SIG1_1'
  LABEL(11)  = 'CRT3_1'
  LABEL(12)  = 'CRT1_1'
  LABEL(13)  = 'ESM3_2'
  LABEL(14)  = 'ESM1_2'
  LABEL(15)  = 'SRM3_2'
  LABEL(16)  = 'SRM1_2'
  LABEL(17)  = 'WK3_2'
  LABEL(18)  = 'WK1_2'
  LABEL(19)  = 'POS3_2'
  LABEL(20)  = 'POS1_2'
  LABEL(21)  = 'SIG3_2'
  LABEL(22)  = 'SIG1_2'
  LABEL(23)  = 'CRT3_2'
  LABEL(24)  = 'CRT1_2'
  LABEL(25)  = 'ESM3_3'
  LABEL(26)  = 'ESM1_3'
  LABEL(27)  = 'SRM3_3'
  LABEL(28)  = 'SRM1_3'
  LABEL(29)  = 'WK3_3'
  LABEL(30)  = 'WK1_3'
  LABEL(31)  = 'POS3_3'
  LABEL(32)  = 'POS1_3'
  LABEL(33)  = 'SIG3_3'
  LABEL(34)  = 'SIG1_3'
  LABEL(35)  = 'CRT3_3'
  LABEL(36)  = 'CRT1_3'
  LABEL(37)  = 'ESM3_4'
  LABEL(38)  = 'ESM1_4'
  LABEL(39)  = 'SRM3_4'
  LABEL(40)  = 'SRM1_4'
  LABEL(41)  = 'WK3_4'
  LABEL(42)  = 'WK1_4'
  LABEL(43)  = 'POS3_4'
  LABEL(44)  = 'POS1_4'
  LABEL(45)  = 'SIG3_4'
  LABEL(46)  = 'SIG1_4'
  LABEL(47)  = 'CRT3_4'
  LABEL(48)  = 'CRT1_4'

! Correct data, obtained data
!--------------------------------------------------------------------------------------
  ! Alternative 1
  ~CFSET,1
  ~PLLSPRS,ESM,1,
  VALUE( 1,1) = 0.0                    $  *GET,VALUE( 1,2),ELEM,3,ETAB,CFETAB_I
  VALUE( 2,1) = VALUE( 1,1)            $  *GET,VALUE( 2,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,SRM,1,
  VALUE( 3,1) = 0.0                    $  *GET,VALUE( 3,2),ELEM,3,ETAB,CFETAB_I
  VALUE( 4,1) = VALUE( 3,1)            $  *GET,VALUE( 4,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,WK,1,
  VALUE( 5,1) = 0.0                    $  *GET,VALUE( 5,2),ELEM,3,ETAB,CFETAB_I
  VALUE( 6,1) = VALUE( 5,1)            $  *GET,VALUE( 6,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,POS,1,
  VALUE( 7,1) = 0.0                    $  *GET,VALUE( 7,2),ELEM,3,ETAB,CFETAB_I
  VALUE( 8,1) = VALUE( 7,1)            $  *GET,VALUE( 8,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,SIGMA,1,
  VALUE( 9,1) = 0.0                    $  *GET,VALUE( 9,2),ELEM,3,ETAB,CFETAB_I
  VALUE(10,1) = VALUE( 9,1)            $  *GET,VALUE(10,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,CRT_TOT,1,
  VALUE(11,1) = 0.0                    $  *GET,VALUE(11,2),ELEM,3,ETAB,CFETAB_I
  VALUE(12,1) = VALUE(11,1)            $  *GET,VALUE(12,2),ELEM,1,ETAB,CFETAB_J

  ! Alternative 2
  ~CFSET,2
  ~PLLSPRS,ESM,1,
  VALUE(13,1) = 1.0275811E-4           $  *GET,VALUE(13,2),ELEM,3,ETAB,CFETAB_I
  VALUE(14,1) = VALUE(13,1)            $  *GET,VALUE(14,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,SRM,1,
  VALUE(15,1) = 0.466                  $  *GET,VALUE(15,2),ELEM,3,ETAB,CFETAB_I
  VALUE(16,1) = VALUE(15,1)            $  *GET,VALUE(16,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,WK,1,
  VALUE(17,1) = 8.132E-5               $  *GET,VALUE(17,2),ELEM,3,ETAB,CFETAB_I
  VALUE(18,1) = VALUE(17,1)            $  *GET,VALUE(18,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,POS,1,
  VALUE(19,1) = 1                      $  *GET,VALUE(19,2),ELEM,3,ETAB,CFETAB_I
  VALUE(20,1) = VALUE(19,1)            $  *GET,VALUE(20,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,SIGMA,1,
  VALUE(21,1) = 24.257E6               $  *GET,VALUE(21,2),ELEM,3,ETAB,CFETAB_I
  VALUE(22,1) = VALUE(21,1)            $  *GET,VALUE(22,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,CRT_TOT,1,
  VALUE(23,1) = 0.813                  $  *GET,VALUE(23,2),ELEM,3,ETAB,CFETAB_I
  VALUE(24,1) = VALUE(23,1)            $  *GET,VALUE(24,2),ELEM,1,ETAB,CFETAB_J

  ! Alternative 3
  ~CFSET,3
  ~PLLSPRS,ESM,1,
  VALUE(25,1) = 2.3883328E-4           $  *GET,VALUE(25,2),ELEM,3,ETAB,CFETAB_I
  VALUE(26,1) = VALUE(25,1)            $  *GET,VALUE(26,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,SRM,1,
  VALUE(27,1) = 0.196                  $  *GET,VALUE(27,2),ELEM,3,ETAB,CFETAB_I
  VALUE(28,1) = VALUE(27,1)            $  *GET,VALUE(28,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,WK,1,
  VALUE(29,1) = 7.975E-5               $  *GET,VALUE(29,2),ELEM,3,ETAB,CFETAB_I
  VALUE(30,1) = VALUE(29,1)            $  *GET,VALUE(30,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,POS,1,
  VALUE(31,1) = -1                     $  *GET,VALUE(31,2),ELEM,3,ETAB,CFETAB_I
  VALUE(32,1) = VALUE(31,1)            $  *GET,VALUE(32,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,SIGMA,1,
  VALUE(33,1) = 49.394E6               $  *GET,VALUE(33,2),ELEM,3,ETAB,CFETAB_I
  VALUE(34,1) = VALUE(33,1)            $  *GET,VALUE(34,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,CRT_TOT,1,
  VALUE(35,1) = 0.797                  $  *GET,VALUE(35,2),ELEM,3,ETAB,CFETAB_I
  VALUE(36,1) = VALUE(35,1)            $  *GET,VALUE(36,2),ELEM,1,ETAB,CFETAB_J

  ! Alternative 4
  ~CFSET,4
  ~PLLSPRS,ESM,1,
  VALUE(37,1) = 1.1380853E-4           $  *GET,VALUE(37,2),ELEM,3,ETAB,CFETAB_I
  VALUE(38,1) = VALUE(37,1)            $  *GET,VALUE(38,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,SRM,1,
  VALUE(39,1) = 0.172                  $  *GET,VALUE(39,2),ELEM,3,ETAB,CFETAB_I
  VALUE(40,1) = VALUE(39,1)            $  *GET,VALUE(40,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,WK,1,
  VALUE(41,1) = 3.328E-5               $  *GET,VALUE(41,2),ELEM,3,ETAB,CFETAB_I
  VALUE(42,1) = VALUE(41,1)            $  *GET,VALUE(42,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,POS,1,
  VALUE(43,1) = 1                      $  *GET,VALUE(43,2),ELEM,3,ETAB,CFETAB_I
  VALUE(44,1) = VALUE(43,1)            $  *GET,VALUE(44,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,SIGMA,1,
  VALUE(45,1) = 26.013E6               $  *GET,VALUE(45,2),ELEM,3,ETAB,CFETAB_I
  VALUE(46,1) = VALUE(45,1)            $  *GET,VALUE(46,2),ELEM,1,ETAB,CFETAB_J
  ~PLLSPRS,CRT_TOT,1,
  VALUE(47,1) = 0.333                  $  *GET,VALUE(47,2),ELEM,3,ETAB,CFETAB_I
  VALUE(48,1) = VALUE(47,1)            $  *GET,VALUE(48,2),ELEM,1,ETAB,CFETAB_J

! Warning and error tolerances
  TOLER(  1,1) = 1E-8                  $  TOLER(  1,2) = TOLER(  1,1)
  TOLER(  2,1) = 1E-8                  $  TOLER(  2,2) = TOLER(  2,1)
  TOLER(  3,1) = 1E-3                  $  TOLER(  3,2) = TOLER(  3,1)
  TOLER(  4,1) = 1E-3                  $  TOLER(  4,2) = TOLER(  4,1)
  TOLER(  5,1) = 1E-5                  $  TOLER(  5,2) = TOLER(  5,1)
  TOLER(  6,1) = 1E-5                  $  TOLER(  6,2) = TOLER(  6,1)
  TOLER(  7,1) = 1E-3                  $  TOLER(  7,2) = TOLER(  7,1)
  TOLER(  8,1) = 1E-3                  $  TOLER(  8,2) = TOLER(  8,1)
  TOLER(  9,1) = 1E+3                  $  TOLER(  9,2) = TOLER(  9,1)
  TOLER( 10,1) = 1E+3                  $  TOLER( 10,2) = TOLER( 10,1)
  TOLER( 11,1) = 1E-3                  $  TOLER( 11,2) = TOLER( 11,1)
  TOLER( 12,1) = 1E-3                  $  TOLER( 12,2) = TOLER( 12,1)
  TOLER( 13,1) = 1E-8                  $  TOLER( 13,2) = TOLER( 13,1)
  TOLER( 14,1) = 1E-8                  $  TOLER( 14,2) = TOLER( 14,1)
  TOLER( 15,1) = 1E-3                  $  TOLER( 15,2) = TOLER( 15,1)
  TOLER( 16,1) = 1E-3                  $  TOLER( 16,2) = TOLER( 16,1)
  TOLER( 17,1) = 1E-5                  $  TOLER( 17,2) = TOLER( 17,1)
  TOLER( 18,1) = 1E-5                  $  TOLER( 18,2) = TOLER( 18,1)
  TOLER( 19,1) = 1E-3                  $  TOLER( 19,2) = TOLER( 19,1)
  TOLER( 20,1) = 1E-3                  $  TOLER( 20,2) = TOLER( 20,1)
  TOLER( 21,1) = 1E+3                  $  TOLER( 21,2) = TOLER( 21,1)
  TOLER( 22,1) = 1E+3                  $  TOLER( 22,2) = TOLER( 22,1)
  TOLER( 23,1) = 1E-3                  $  TOLER( 23,2) = TOLER( 23,1)
  TOLER( 24,1) = 1E-3                  $  TOLER( 24,2) = TOLER( 24,1)
  TOLER( 25,1) = 1E-8                  $  TOLER( 25,2) = TOLER( 25,1)
  TOLER( 26,1) = 1E-8                  $  TOLER( 26,2) = TOLER( 26,1)
  TOLER( 27,1) = 1E-3                  $  TOLER( 27,2) = TOLER( 27,1)
  TOLER( 28,1) = 1E-3                  $  TOLER( 28,2) = TOLER( 28,1)
  TOLER( 29,1) = 1E-5                  $  TOLER( 29,2) = TOLER( 29,1)
  TOLER( 30,1) = 1E-5                  $  TOLER( 30,2) = TOLER( 30,1)
  TOLER( 31,1) = 1E-3                  $  TOLER( 31,2) = TOLER( 31,1)
  TOLER( 32,1) = 1E-3                  $  TOLER( 32,2) = TOLER( 32,1)
  TOLER( 33,1) = 1E+3                  $  TOLER( 33,2) = TOLER( 33,1)
  TOLER( 34,1) = 1E+3                  $  TOLER( 34,2) = TOLER( 34,1)
  TOLER( 35,1) = 1E-3                  $  TOLER( 35,2) = TOLER( 35,1)
  TOLER( 36,1) = 1E-3                  $  TOLER( 36,2) = TOLER( 36,1)
  TOLER( 37,1) = 1E-8                  $  TOLER( 37,2) = TOLER( 37,1)
  TOLER( 38,1) = 1E-8                  $  TOLER( 38,2) = TOLER( 38,1)
  TOLER( 39,1) = 1E-3                  $  TOLER( 39,2) = TOLER( 39,1)
  TOLER( 40,1) = 1E-3                  $  TOLER( 40,2) = TOLER( 40,1)
  TOLER( 41,1) = 1E-5                  $  TOLER( 41,2) = TOLER( 41,1)
  TOLER( 42,1) = 1E-5                  $  TOLER( 42,2) = TOLER( 42,1)
  TOLER( 43,1) = 1E-3                  $  TOLER( 43,2) = TOLER( 43,1)
  TOLER( 44,1) = 1E-3                  $  TOLER( 44,2) = TOLER( 44,1)
  TOLER( 45,1) = 1E+3                  $  TOLER( 45,2) = TOLER( 45,1)
  TOLER( 46,1) = 1E+3                  $  TOLER( 46,2) = TOLER( 46,1)
  TOLER( 47,1) = 1E-3                  $  TOLER( 47,2) = TOLER( 47,1)
  TOLER( 48,1) = 1E-3                  $  TOLER( 48,2) = TOLER( 48,1)

!--------------------------------------------------------------------------------------
! Results comparison
!--------------------------------------------------------------------------------------
  COMPARA.MAC
