!*************************************************************************************!
! TITLE: CFVR0912 - Shell reinforcement design according to EHE
! SUBTITLE: Shell reinforcement design according to the Spanish code EHE using the CEB-FIP method.
!
! DESCRIPTION: The model is made up of a single squared shell element of 1.0m x 1.0m.
! DESCRIPTION: The nodes of one side are completely restrained and one of the nodes of the
! DESCRIPTION: other side has its vertical movement restrained (perpendicular to the shell).
! DESCRIPTION:
! DESCRIPTION: The applied loads are horizontal tension loads (X direction) at the free side
! DESCRIPTION: and a pressure of 30 kN/m<sup>2</sup> on one of the elements.
! DESCRIPTION:
! DESCRIPTION:
! DESCRIPTION: The reinforcement design method is the CEB-FIP method.
! DESCRIPTION:
!
! ELEMENT TYPE: Shell93
! MODULES:
! UNITS: SI
! KEYWORD1: Shell
! KEYWORD2: Shell Vertex
! KEYWORD3: Reinforced Concrete
! KEYWORD4: EHE
!*************************************************************************************!
   FINISH
  ~CFCLEAR,,1
   NomFile='CFVR0912'
  /TITLE, %NomFile%, Shell reinforcement design according to EHE
! ---------------------------------------------------------------------------------
! Model definition and analysis
! ---------------------------------------------------------------------------------

! Setup
 ~UNITS,SI
 ~CODESEL,EC3-92,EHE,,,EC8-94
 ~CFCONFG,PLRES   ,SHELL   ,EPSW 
 ~CFCONFG,RESULT,CFSHF,1

/PREP7
! Materials
 ~CFMP,5,LIB,CONCRETE,EHE,HA-35
 ~CFMP,2,LIB,REINF,EHE,B 500 S
! Element types
  ET,2,SHELL93
! Shell vertex
  t=0.12     ! Thickness
  r=0.03     ! Cover
  th = 0     ! Reinforcement angle
 ~SHLRNF,1,t,5,2,r,0.0,0.0,0.0,0.0,0,th,45.00
! Beam & Shell property
 ~BMSHPRO,10,SHELL,1,1,1,1,93,,,,Shell property

! Nodes
  N,10,0.0,0.0
  N,20,1.0,0.0
  N,30,2.0,0.0
  N,40,0.0,1.0
  N,50,1.0,1.0
  N,60,2.0,1.0
! Elements
  MAT,5
  REAL,10
  TYPE,2
  EN,100, 10, 20, 50, 40
  EN,200, 20, 30, 60, 50
  EMID,ADD
! Boundary conditions
  D,10,ALL,0.0
  D,40,ALL,0.0
  D,50,UZ,0.0
! Solve
  /SOLU
  F,30,FX,20000
  F,60,FX,30000
  SFE,100,2,PRES, ,30000
  SOLVE

/POST1
! ---------------------------------------------------------------------------------
! Forces and moments calculation on nodes of element 100
! ---------------------------------------------------------------------------------
  *DIM,S  ,,6,3,4 ! Stresses(direction,layer,node)
  *DIM,ESF,,8,4   ! Forces & Moments(component,node)   (Tx,Ty,Txy,Mx,My,Mxy,Nx,Ny)
  ESEL,S,ELEM,,100
! Stresses
  SHELL,TOP
  *VGET,S(1,1,1),NODE,10,S,X,,,4
  *VGET,S(1,1,2),NODE,20,S,X,,,4
  *VGET,S(1,1,3),NODE,50,S,X,,,4
  *VGET,S(1,1,4),NODE,40,S,X,,,4
  SHELL,MID
  *VGET,S(1,2,1),NODE,10,S,X,,,4
  *VGET,S(1,2,2),NODE,20,S,X,,,4
  *VGET,S(1,2,3),NODE,50,S,X,,,4
  *VGET,S(1,2,4),NODE,40,S,X,,,4
  SHELL,BOT
  *VGET,S(1,3,1),NODE,10,S,X,,,4
  *VGET,S(1,3,2),NODE,20,S,X,,,4
  *VGET,S(1,3,3),NODE,50,S,X,,,4
  *VGET,S(1,3,4),NODE,40,S,X,,,4
! Forces & Moments
  *DO,I,1,4
    ESF(1,I)=t*(S(1,1,I)+4*S(1,2,I)+S(1,3,I))/6
    ESF(2,I)=t*(S(2,1,I)+4*S(2,2,I)+S(2,3,I))/6
    ESF(3,I)=t*(S(4,1,I)+4*S(4,2,I)+S(4,3,I))/6
    ESF(4,I)=-t**2*(S(1,1,I)-S(1,3,I))/12
    ESF(5,I)=-t**2*(S(2,1,I)-S(2,3,I))/12
    ESF(6,I)=-t**2*(S(4,1,I)-S(4,3,I))/12
    ESF(7,I)=t*(S(6,1,I)+4*S(6,2,I)+S(6,3,I))/6
    ESF(8,I)=t*(S(5,1,I)+4*S(5,2,I)+S(5,3,I))/6
  *ENDDO

! Designed reinforcement
  *DIM,Axi,,4
  *DIM,Ayi,,4
  *DIM,Axs,,4
  *DIM,Ays,,4

I=1
   Axi(I)= 0.000D+00
   Ayi(I)= 0.177D-03
   Axs(I)= 0.383D-03
   Ays(I)= 0.182D-03

I=2
   Axi(I)= 0.413D-03
   Ayi(I)= 0.234D-03
   Axs(I)= 0.000D+00
   Ays(I)= 0.136D-03

I=3
   Axi(I)= 0.472D-04
   Ayi(I)= 0.451D-04
   Axs(I)= 0.202D-03
   Ays(I)= 0.229D-04

I=4
   Axi(I)= 0.389D-03
   Ayi(I)= 0.179D-03
   Axs(I)= 0.176D-03
   Ays(I)= 0.225D-03

  ESEL,ALL

! ---------------------------------------------------------------------------------
! Design with CivilFEM
! ---------------------------------------------------------------------------------
 ~CFSET,,1,1
 ~DIMCON,SHELL,CEB

  ESEL,S,ELEM,,100
! Forces & Moments with CivilFEM
  *DIM,ESF_CF,,8,4   ! Forces & Moments(component,node)   (Tx,Ty,Txy,Mx,My,Mxy,Nx,Ny)
~PLSHFOR,TX
  *GET,ESF_CF(1,1),NODE,10,EPSW
  *GET,ESF_CF(1,2),NODE,20,EPSW
  *GET,ESF_CF(1,3),NODE,50,EPSW
  *GET,ESF_CF(1,4),NODE,40,EPSW
~PLSHFOR,TY
  *GET,ESF_CF(2,1),NODE,10,EPSW
  *GET,ESF_CF(2,2),NODE,20,EPSW
  *GET,ESF_CF(2,3),NODE,50,EPSW
  *GET,ESF_CF(2,4),NODE,40,EPSW
~PLSHFOR,TXY
  *GET,ESF_CF(3,1),NODE,10,EPSW
  *GET,ESF_CF(3,2),NODE,20,EPSW
  *GET,ESF_CF(3,3),NODE,50,EPSW
  *GET,ESF_CF(3,4),NODE,40,EPSW
~PLSHFOR,MX
  *GET,ESF_CF(4,1),NODE,10,EPSW
  *GET,ESF_CF(4,2),NODE,20,EPSW
  *GET,ESF_CF(4,3),NODE,50,EPSW
  *GET,ESF_CF(4,4),NODE,40,EPSW
~PLSHFOR,MY
  *GET,ESF_CF(5,1),NODE,10,EPSW
  *GET,ESF_CF(5,2),NODE,20,EPSW
  *GET,ESF_CF(5,3),NODE,50,EPSW
  *GET,ESF_CF(5,4),NODE,40,EPSW
~PLSHFOR,MXY
 *GET,ESF_CF(6,1),NODE,10,EPSW
  *GET,ESF_CF(6,2),NODE,20,EPSW
  *GET,ESF_CF(6,3),NODE,50,EPSW
  *GET,ESF_CF(6,4),NODE,40,EPSW
~PLSHFOR,NX
  *GET,ESF_CF(7,1),NODE,10,EPSW
  *GET,ESF_CF(7,2),NODE,20,EPSW
  *GET,ESF_CF(7,3),NODE,50,EPSW
  *GET,ESF_CF(7,4),NODE,40,EPSW
~PLSHFOR,NY
  *GET,ESF_CF(8,1),NODE,10,EPSW
  *GET,ESF_CF(8,2),NODE,20,EPSW
  *GET,ESF_CF(8,3),NODE,50,EPSW
  *GET,ESF_CF(8,4),NODE,40,EPSW

! Designed reinforcement obtained with CivilFEM
  *DIM,Axi_CF,,4
  *DIM,Ayi_CF,,4
  *DIM,Axs_CF,,4
  *DIM,Ays_CF,,4
~PLSHCON,ASBX
  *GET,Axi_CF(1),NODE,10,EPSW
  *GET,Axi_CF(2),NODE,20,EPSW
  *GET,Axi_CF(3),NODE,50,EPSW
  *GET,Axi_CF(4),NODE,40,EPSW
~PLSHCON,ASBY
  *GET,Ayi_CF(1),NODE,10,EPSW
  *GET,Ayi_CF(2),NODE,20,EPSW
  *GET,Ayi_CF(3),NODE,50,EPSW
  *GET,Ayi_CF(4),NODE,40,EPSW
~PLSHCON,ASTX
  *GET,Axs_CF(1),NODE,10,EPSW
  *GET,Axs_CF(2),NODE,20,EPSW
  *GET,Axs_CF(3),NODE,50,EPSW
  *GET,Axs_CF(4),NODE,40,EPSW
~PLSHCON,ASTY
  *GET,Ays_CF(1),NODE,10,EPSW
  *GET,Ays_CF(2),NODE,20,EPSW
  *GET,Ays_CF(3),NODE,50,EPSW
  *GET,Ays_CF(4),NODE,40,EPSW

!--------------------------------------------------------------------------------------
! 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) ='TX_I'
  LABEL( 2) ='TX_J'
  LABEL( 3) ='TX_K'
  LABEL( 4) ='TX_L'
  LABEL( 5) ='TY_I'
  LABEL( 6) ='TY_J'
  LABEL( 7) ='TY_K'
  LABEL( 8) ='TY_L'
  LABEL( 9) ='TXY_I'
  LABEL(10) ='TXY_J'
  LABEL(11) ='TXY_K'
  LABEL(12) ='TXY_L'
  LABEL(13) ='MX_I'
  LABEL(14) ='MX_J'
  LABEL(15) ='MX_K'
  LABEL(16) ='MX_L'
  LABEL(17) ='MY_I'
  LABEL(18) ='MY_J'
  LABEL(19) ='MY_K'
  LABEL(20) ='MY_L'
  LABEL(21) ='MXY_I'
  LABEL(22) ='MXY_J'
  LABEL(23) ='MXY_K'
  LABEL(24) ='MXY_L'
  LABEL(25) ='NX_I'
  LABEL(26) ='NX_J'
  LABEL(27) ='NX_K'
  LABEL(28) ='NX_L'
  LABEL(29) ='NY_I'
  LABEL(30) ='NY_J'
  LABEL(31) ='NY_K'
  LABEL(32) ='NY_L'
  LABEL(33) ='ASxi_I'
  LABEL(34) ='ASxi_J'
  LABEL(35) ='ASxi_K'
  LABEL(36) ='ASxi_L'
  LABEL(37) ='ASyi_I'
  LABEL(38) ='ASyi_J'
  LABEL(39) ='ASyi_K'
  LABEL(40) ='ASyi_L'
  LABEL(41) ='ASxs_I'
  LABEL(42) ='ASxs_J'
  LABEL(43) ='ASxs_K'
  LABEL(44) ='ASxs_L'
  LABEL(45) ='ASys_I'
  LABEL(46) ='ASys_J'
  LABEL(47) ='ASys_K'
  LABEL(48) ='ASys_L'

! Correct values
! ---------------------------------------------------------------------------------
  ! Forces & Moments
    *DO,I,1,8
      *DO,J,1,4
        VALUE(4*(I-1)+J,1)= ESF(I,J)
      *ENDDO
    *ENDDO
  ! Reinforcement
    *DO,I,1,4
      VALUE(32+I,1)=Axi(I)
    *ENDDO
    *DO,I,1,4
      VALUE(36+I,1)=Ayi(I)
    *ENDDO
    *DO,I,1,4
      VALUE(40+I,1)=Axs(I)
    *ENDDO
    *DO,I,1,4
      VALUE(44+I,1)=Ays(I)
    *ENDDO

! Obtained values
! ---------------------------------------------------------------------------------
  ! Forces & Moments
    *DO,I,1,8
      *DO,J,1,4
        VALUE(4*(I-1)+J,2)= ESF_CF(I,J)
      *ENDDO
    *ENDDO
  ! Reinforcement
    *DO,I,1,4
      VALUE(32+I,2)=Axi_CF(I)
    *ENDDO
    *DO,I,1,4
      VALUE(36+I,2)=Ayi_CF(I)
    *ENDDO
    *DO,I,1,4
      VALUE(40+I,2)=Axs_CF(I)
    *ENDDO
    *DO,I,1,4
      VALUE(44+I,2)=Ays_CF(I)
    *ENDDO

! Warning and error tolerances
  TOLER( 1, 1)= 1E-01   $   TOLER( 1, 2)= 1E-00
  TOLER( 2, 1)= 1E-01   $   TOLER( 2, 2)= 1E-00
  TOLER( 3, 1)= 1E-02   $   TOLER( 3, 2)= 1E-01
  TOLER( 4, 1)= 1E-02   $   TOLER( 4, 2)= 1E-01
  TOLER( 5, 1)= 1E-02   $   TOLER( 5, 2)= 1E-01
  TOLER( 6, 1)= 1E-02   $   TOLER( 6, 2)= 1E-01
  TOLER( 7, 1)= 1E-02   $   TOLER( 7, 2)= 1E-01
  TOLER( 8, 1)= 1E-02   $   TOLER( 8, 2)= 1E-01
  TOLER( 9, 1)= 1E-02   $   TOLER( 9, 2)= 1E-01
  TOLER(10, 1)= 1E-02   $   TOLER(10, 2)= 1E-01
  TOLER(11, 1)= 1E-02   $   TOLER(11, 2)= 1E-01
  TOLER(12, 1)= 1E-02   $   TOLER(12, 2)= 1E-01
  TOLER(13, 1)= 1E-02   $   TOLER(13, 2)= 1E-01
  TOLER(14, 1)= 1E-03   $   TOLER(14, 2)= 1E-02
  TOLER(15, 1)= 1E-02   $   TOLER(15, 2)= 1E-01
  TOLER(16, 1)= 1E-03   $   TOLER(16, 2)= 1E-02
  TOLER(17, 1)= 1E-02   $   TOLER(17, 2)= 1E-01
  TOLER(18, 1)= 1E-04   $   TOLER(18, 2)= 1E-03
  TOLER(19, 1)= 1E-04   $   TOLER(19, 2)= 1E-03
  TOLER(20, 1)= 1E-03   $   TOLER(20, 2)= 1E-02
  TOLER(21, 1)= 1E-03   $   TOLER(21, 2)= 1E-02
  TOLER(22, 1)= 1E-03   $   TOLER(22, 2)= 1E-02
  TOLER(23, 1)= 1E-03   $   TOLER(23, 2)= 1E-02
  TOLER(24, 1)= 1E-03   $   TOLER(24, 2)= 1E-02
  TOLER(25, 1)= 1E-03   $   TOLER(25, 2)= 1E-02
  TOLER(26, 1)= 1E-03   $   TOLER(26, 2)= 1E-02
  TOLER(27, 1)= 1E-03   $   TOLER(27, 2)= 1E-02
  TOLER(28, 1)= 1E-03   $   TOLER(28, 2)= 1E-02
  TOLER(29, 1)= 1E-03   $   TOLER(29, 2)= 1E-02
  TOLER(30, 1)= 1E-08   $   TOLER(30, 2)= 1E-02
  TOLER(31, 1)= 1E-03   $   TOLER(31, 2)= 1E-02
  TOLER(32, 1)= 1E-03   $   TOLER(32, 2)= 1E-02
  TOLER(33, 1)= 1E-06   $   TOLER(33, 2)= 1E-05
  TOLER(34, 1)= 1E-06   $   TOLER(34, 2)= 1E-05
  TOLER(35, 1)= 1E-06   $   TOLER(35, 2)= 1E-05
  TOLER(36, 1)= 1E-06   $   TOLER(36, 2)= 1E-05
  TOLER(37, 1)= 1E-06   $   TOLER(37, 2)= 1E-05
  TOLER(38, 1)= 1E-06   $   TOLER(38, 2)= 1E-05
  TOLER(39, 1)= 1E-06   $   TOLER(39, 2)= 1E-05
  TOLER(40, 1)= 1E-06   $   TOLER(40, 2)= 1E-05
  TOLER(41, 1)= 1E-06   $   TOLER(41, 2)= 1E-05
  TOLER(42, 1)= 1E-06   $   TOLER(42, 2)= 1E-05
  TOLER(43, 1)= 1E-06   $   TOLER(43, 2)= 1E-05
  TOLER(44, 1)= 1E-06   $   TOLER(44, 2)= 1E-05
  TOLER(45, 1)= 1E-06   $   TOLER(45, 2)= 1E-05
  TOLER(46, 1)= 1E-06   $   TOLER(46, 2)= 1E-05
  TOLER(47, 1)= 1E-06   $   TOLER(47, 2)= 1E-05
  TOLER(48, 1)= 1E-06   $   TOLER(48, 2)= 1E-05

!--------------------------------------------------------------------------------------
! Results comparison
!--------------------------------------------------------------------------------------
  COMPARA.MAC
