!*******************************************************************************
! TITLE: CFVR0942 - Shell VF reinforcement check according to ACI-349
! SUBTITLE: Bending and axial check taking into account only torsional moments.
!
! DESCRIPTION: The model is made up of a square shell element of 1.0m x 1.0m.
! DESCRIPTION: The nodes of one side are completely restrained.
! DESCRIPTION:
! DESCRIPTION: A surface load of 30000 kg/m<sup>2</sup> is applied on the 
! DESCRIPTION: element.
! DESCRIPTION:
! DESCRIPTION: The results are compared with those of two beams. 
! DESCRIPTION:
! DESCRIPTION: The reinforcement checking code is the ACI 349.
!
! ELEMENT TYPE: Shell43
! MODULES:
! UNITS: User
! KEYWORD1: Shell
! KEYWORD2: Shell Vertex
! KEYWORD3: Reinforced Concrete
! KEYWORD4: ACI 349
!*******************************************************************************
   FINISH
  ~cfclear,,1
   NomFile='CFVR0942'
  /TITLE, %NomFile%, Shell VF reinforcement check according to ACI-349

! ------------------------------------------------------------------------------
! Model definition and solve
! ------------------------------------------------------------------------------

! Setup
 ~UNITS,,MONE,EURO
 ~UNITS,,LENG,M
 ~UNITS,,TIME,S
 ~UNITS,,FORC,KP
 ~CODESEL,,ACI349

  /PREP7
! Materials
  ~CFMP,5,LIB,CONCRETE,EC2,C40/50
  ~CFMP,2,LIB,REINF,EC2,S400
! Element types
  ET,10,SHELL43
  ET,20,Beam44

! Shell Vertex
  t=0.25        ! Thickness
  r=0.04        ! Cover
  th = 0        ! Reinforcement angle
  AtReinf=0.001 ! reinforcement amount 10cm2/m
 ~SHLRNF,10,t,5,2,r,AtReinf,AtReinf,AtReinf,AtReinf,0,th,45

! Cross-section definition
 ~CSECDMS,20,REC,5,1.0,t       ! thickness t and witdh 1 m
 ~RNFDEF,20,1,2,1,0,r ,AtReinf ! MZ Top Reinf.: total area 10cm2/m
 ~RNFDEF,20,2,2,3,0,r ,AtReinf ! MZ Bot Reinf.: total area 10cm2/m
 ~CSECDMS,30,REC,5,1.0,t
 ~RNFDEF,30,3,2,1,0,r ,AtReinf ! MY Top Reinf.: total area 10cm2/m
 ~RNFDEF,30,4,2,3,0,r ,AtReinf ! MY Bot Reinf.: total area 10cm2/m

! Member property, phi calculated by CivilFEM
  ~MEMBPRO,1,ACI349,PHI,0.0

 
! Beam & Shell property
 ~BMSHPRO,10,SHELL,10,,,,43,1,,,Shell property
 ~BMSHPRO,20, BEAM,20,,,,44,1,,,Beam property
 ~BMSHPRO,30, BEAM,30,,,,44,1,,,Beam property

! Shell Nodes
  N,10,0,0
  N,20,1.00,0
  N,40,0,1.00
  N,50,1.00,1.00

! Shell Elements
  MAT,5
  REAL,10
  TYPE,10
  EN,100, 10, 20, 50, 40

! Shell Boundary conditions
  D,10,ALL,0.0
  D,40,ALL,0.0

! Beam Nodes
  N,100, ,0.5,-2
  N,200,1,0.5,-2
  N,1100, ,0.5,-4
  N,1200,1,0.5,-4

! Beam Elements
  MAT,5
  TYPE,20
  REAL,20
  EN,300,100,200
  REAL,30
  EN,400,1100,1200

! Beam Boundary conditions
  D,100,ALL
  D,1100,ALL

  FINISH
  /SOLU
! Pressure on shells
  ESEL,S,ENAME,,43
  SFE,100,2,PRES,,3E4
  ALLSEL
  SOLVE

  FINISH
  /POST1
!-------------------------------------------------------------------------------
! DATA CHECK
!-------------------------------------------------------------------------------
! Data comparison number
  NComp = 4
  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,1) = 'CRT_X'
  LABEL( 2,1) = 'CRT_Y'
  LABEL( 3,1) = 'CRT_X_PHI'
  LABEL( 4,1) = 'CRT_Y_PHI'

  ~CFSET,,1
  ESEL,S,ENAME,,43
  ~CFGET, Tx_Shell, ELEMENT, 100, FORCE, TX, J   ! Axial force X direction
  ~CFGET, Ty_Shell, ELEMENT, 100, FORCE, TY, J   ! Axial force Y direction
  ~CFGET, Mx_Shell, ELEMENT, 100, FORCE, MX, J   ! Bending moment X direction
  ~CFGET, My_Shell, ELEMENT, 100, FORCE, MY, J   ! Bending moment Y direction
  ~CFGET,Mxy_Shell, ELEMENT, 100, FORCE,MXY, J   ! Torsional moment

! Correct values
  ~CHKCON,SHELL,VF, ,2,0, ! ONLY TORSIONAL MOMENTS
  ~CFSET,1
  ~CFGET,VALUE(1,1), ELEMENT, 100 ,RESULT , CRT_X, J ! Total Criterion X direction
  ~CFGET,VALUE(2,1), ELEMENT, 100 ,RESULT , CRT_Y, J ! Total Criterion Y direction
  
  ! Changes phi to constant value = 0.65
  /PREP7
  ~MEMBPRO,1,ACI349,PHI,0.65
  
  /POST1
  ~CHKCON,SHELL,VF, ,2,0, ! ONLY TORSIONAL MOMENTS
  ~CFGET,VALUE(3,1), ELEMENT, 100 ,RESULT , CRT_X, J ! Total Criterion X direction
  ~CFGET,VALUE(4,1), ELEMENT, 100 ,RESULT , CRT_Y, J ! Total Criterion Y direction
  
  ! Changes phi to calculated by civilFEM
  /PREP7
  ~MEMBPRO,1,ACI349,PHI,0.0
  
  FINISH
  /SOLU

! Apply Forces to beam element J end
  Mx_Beam=Mx_Shell+ABS(Mxy_Shell)*Mx_Shell/ABS(Mx_Shell) ! MyBeam=MxShell
  My_Beam=My_Shell+ABS(Mxy_Shell)*My_Shell/ABS(My_Shell) ! MzBeam=MyShell
  ESEL,S,ENAME,,44
  NSLE
  F, 200,FX,Tx_Shell
  F, 200,MY,Mx_Beam
  F,1200,FX,Ty_Shell
  F,1200,MY,My_Beam

  ALLSEL
  SOLVE

  FINISH
  /POST1

  ! Bending + Axial checking according to ACI 349
  ~CFSET,,1
  ~CHKCON,2DB, ,1, , ,0   ! XZ Local Plane (MY)

  ! Comparison
  ~CFGET,VALUE(1,2),ELEMENT,300,RESULT,CRT_TOT, J
  ~CFGET,VALUE(2,2),ELEMENT,400,RESULT,CRT_TOT, J
  
  ! Changes phi to calculated by civilFEM
  /PREP7
  ~MEMBPRO,1,ACI349,PHI,0.65
  
  /POST1
  
   ~CHKCON,2DB, ,1, , ,0   ! XZ Local Plane (MY)

  ! Comparison
  ~CFGET,VALUE(3,2),ELEMENT,300,RESULT,CRT_TOT, J
  ~CFGET,VALUE(4,2),ELEMENT,400,RESULT,CRT_TOT, J
  
 
! Warning and error tolerances
  TOLER(1,1) = 1.6E-2*ABS(VALUE(1,1)) $ TOLER(1,2) = TOLER(1,1) 
  TOLER(2,1) = 1.E-2*ABS(VALUE(2,1)) $ TOLER(2,2) = TOLER(2,1)
  TOLER(3,1) = 1.6E-2*ABS(VALUE(3,1)) $ TOLER(3,2) = TOLER(3,1)
  TOLER(4,1) = 1.E-2*ABS(VALUE(4,1)) $ TOLER(4,2) = TOLER(4,1)

!-------------------------------------------------------------------------------
! Results comparison
!-------------------------------------------------------------------------------
  COMPARA.MAC
