!*************************************************************************************!
! TITLE: CFVR2002 - Alternatives envelope (checking)
! SUBTITLE: Envelope of reinforced concrete checking results on shell elements.
!
! DESCRIPTION: The model is a rectangular shell of 20.0m length and 8.0m width, with 0.40 m thickness.
! DESCRIPTION:
! DESCRIPTION: Two of its sides have its movements restrained, but can freely rotate.
! DESCRIPTION:
! DESCRIPTION: The applied loads are:
! DESCRIPTION:
! DESCRIPTION: - Load step 1: 16000 kg/m<sup>2</sup> on the surface, downwards.
! DESCRIPTION:
! DESCRIPTION: - Load step 2: 4000 kg/m<sup>2</sup> on the surface, upwards.
! DESCRIPTION:
! DESCRIPTION: All loadsteps are designed by code (orthogonal directions method and shear design)
! DESCRIPTION: and the results are enveloped.
! DESCRIPTION:
!
! ELEMENT TYPE: Shell93
! MODULES:
! UNITS: SI
! KEYWORD1: Combinations
! KEYWORD2: Shell Vertex
! KEYWORD3: Reinforced Concrete
! KEYWORD4: EHE
!*************************************************************************************!
   FINISH
   ~CFCLEAR,,1
   NomFile='CFVR2002'
   /TITLE, %NomFile%, Alternatives envelope (checking)

! ---------------------------------------------------------------------------------
! Initial data
! ---------------------------------------------------------------------------------
! CivilFEM SETUP
 ~CODESEL,,EHE,

! Preprocessor
  /PREP7

! Material Definition
~CFMP,1,LIB,CONCRETE,EHE,HA-30
~CFMP,2,LIB,REINF,EHE,B 500 S

! Shell Vertex Definition
~SHLRNF,1,0.40,1,2,0.04,20E-4,20E-4,20E-4,20E-4,0,0.0,45.0
~SHLSHR,1,2,,,0.0,0.0,0.0,0.0

! Shell Properties
~BMSHPRO,1,SHELL,1,1,1,1,93

! Model
K,2,0,0,0
K,3,0,20,0
K,7,8,0,0
K,6,8,20,0

A,2,7,6,3

! Element Type
ET,1,SHELL93

! Mesh
ESIZE,2
AMESH,ALL

! Boundary conditions
NSEL,S,LOC,X,0
NSEL,A,LOC,X,8
D,ALL,UX
D,ALL,UZ
D,ALL,UY
ALLSEL

! Loads
/SOLU
ACEL,,,9.81

! Load step 1
SFE, ALL, 2, PRES, ,16000*9.81
ALLSEL
SOLVE
SFGRAD, PRES, 0, Z, 0, 0
SFEDELE,ALL,ALL,ALL

! Load Step 2
SFE, ALL, 1, PRES, ,4000*9.81
ALLSEL
SOLVE

! Design according to code: alternatives
/POST1
*DO,II,1,2
  ~CFSET,,II
  ~DIMCON,SHELL,VF
  ~DIMCON,SHELL,SHEAR
*ENDDO

! Envelopes
~ENVDEF, 1, 3, 2
~ENVELOP,MAX

~ENVDEL,ALL
~ENVDEF, 2, 4, 2
~ENVELOP,MAX
 
! ---------------------------------------------------------------------------------
! DATA CHECK
! ---------------------------------------------------------------------------------
! Data comparison number
  NComp = 12
  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

  *DIM,ResultA,,Ncomp
  *DIM,ResultB,,Ncomp
! Labels
  LABEL(1,1) = 'FACT_XT'
  LABEL(2,1) = 'FACT_XT'
  LABEL(3,1) = 'FACT_XT'
  LABEL(4,1) = 'FACT_YB'
  LABEL(5,1) = 'FACT_YB'
  LABEL(6,1) = 'FACT_YB'
  LABEL(7,1) = 'ASSH'
  LABEL(8,1) = 'ASSH'
  LABEL(9,1) = 'ASSH'
  LABEL(10,1) = 'ASSH'
  LABEL(11,1) = 'ASSH'
  LABEL(12,1) = 'ASSH'

! Correct values
 ~CFSET,1
 ~CFGET,ResultA(1),ELEMENT, 4,RESULT,FACT_XT,I
 ~CFGET,ResultA(2),ELEMENT,10,RESULT,FACT_XT,I
 ~CFGET,ResultA(3),ELEMENT,14,RESULT,FACT_XT,I
 ~CFGET,ResultA(4),ELEMENT, 5,RESULT,FACT_YB,I
 ~CFGET,ResultA(5),ELEMENT,11,RESULT,FACT_YB,I
 ~CFGET,ResultA(6),ELEMENT,15,RESULT,FACT_YB,I
 ~CFSET,2
 ~CFGET,ResultA(7),ELEMENT, 4,RESULT,ASSH,I
 ~CFGET,ResultA(8),ELEMENT,10,RESULT,ASSH,I
 ~CFGET,ResultA(9),ELEMENT,14,RESULT,ASSH,I
 ~CFGET,ResultA(10),ELEMENT, 5,RESULT,ASSH,I
 ~CFGET,ResultA(11),ELEMENT,11,RESULT,ASSH,I
 ~CFGET,ResultA(12),ELEMENT,15,RESULT,ASSH,I
 ~CFSET,3
 ~CFGET,ResultB(1),ELEMENT,4,RESULT,FACT_XT,I
 ~CFGET,ResultB(2),ELEMENT,10,RESULT,FACT_XT,I
 ~CFGET,ResultB(3),ELEMENT,14,RESULT,FACT_XT,I
 ~CFGET,ResultB(4),ELEMENT, 5,RESULT,FACT_YB,I
 ~CFGET,ResultB(5),ELEMENT,11,RESULT,FACT_YB,I
 ~CFGET,ResultB(6),ELEMENT,15,RESULT,FACT_YB,I
 ~CFSET,4
 ~CFGET,ResultB(7),ELEMENT, 4,RESULT,ASSH,I
 ~CFGET,ResultB(8),ELEMENT,10,RESULT,ASSH,I
 ~CFGET,ResultB(9),ELEMENT,14,RESULT,ASSH,I
 ~CFGET,ResultB(10),ELEMENT, 5,RESULT,ASSH,I
 ~CFGET,ResultB(11),ELEMENT,11,RESULT,ASSH,I
 ~CFGET,ResultB(12),ELEMENT,15,RESULT,ASSH,I
 *DO,II,1,NComp
   VALUE(II,1) = ResultA(II)>ResultB(II)
 *ENDDO

! Comparison
 ~CFSET,5
 ~CFGET,VALUE(1,2),ELEMENT, 4,RESULT,FACT_XT,I
 ~CFGET,VALUE(2,2),ELEMENT,10,RESULT,FACT_XT,I
 ~CFGET,VALUE(3,2),ELEMENT,14,RESULT,FACT_XT,I
 ~CFGET,VALUE(4,2),ELEMENT, 5,RESULT,FACT_YB,I
 ~CFGET,VALUE(5,2),ELEMENT,11,RESULT,FACT_YB,I
 ~CFGET,VALUE(6,2),ELEMENT,15,RESULT,FACT_YB,I
 ~CFSET,6
 ~CFGET,VALUE(7,2),ELEMENT, 4,RESULT,ASSH,I
 ~CFGET,VALUE(8,2),ELEMENT,10,RESULT,ASSH,I
 ~CFGET,VALUE(9,2),ELEMENT,14,RESULT,ASSH,I
 ~CFGET,VALUE(10,2),ELEMENT, 5,RESULT,ASSH,I
 ~CFGET,VALUE(11,2),ELEMENT,11,RESULT,ASSH,I
 ~CFGET,VALUE(12,2),ELEMENT,15,RESULT,ASSH,I

! Warning and error tolerances
  *DO,II,1,NComp
    TOLER(II, 1)= 1E-07 $ TOLER(II, 2)= 1E-06
  *ENDDO

! ---------------------------------------------------------------------------------
! Results comparison
! ---------------------------------------------------------------------------------
  COMPARA.MAC

