!*****************************************************************************************************!
! TITLE: CFVR1007 -   Eurocode 3 1992 test: Compression Buckling.
! SUBTITLE: Compression buckling checking according to Eurocode 3 1992.
!
! DESCRIPTION: A fixed steel beam subjected to a Fy load of -250 KN, applied on one end of the beam.
! DESCRIPTION:
! DESCRIPTION: The beam has a length of 1m.
! DESCRIPTION:
! DESCRIPTION: The cross section is a 2 UPN 180.
! DESCRIPTION:
! DESCRIPTION: The beam is made of Fe 430 steel which has a fy of 275E3 kN/m<sup>2</sup>.
! DESCRIPTION:
! DESCRIPTION:
! DESCRIPTION: The aim of the example is to obtain the cross section classification and compression
! DESCRIPTION: buckling criterion according to Eurocode 3 1992.
!
! ELEMENT TYPE: BEAM4
! MODULES:
! UNITS: User
! KEYWORD1: Beam
! KEYWORD2: Cross Section
! KEYWORD3: Steel
! KEYWORD4: Code Checking/Design
! KEYWORD5: Eurocode 3
!
!*************************************************************************************!
  FINISH
  ~CFCLEAR,,1
  NomFile='CFVR1007'
  /TITLE, %NomFile%, Eurocode 3 1992 test: Compression Buckling

! ---------------------------------------------------------------------------------
! Model definition and solve
! ---------------------------------------------------------------------------------
! CivilFEM Setup: Code & Units
  ~UNITS,,LENG,M
  ~UNITS,,TIME,S
  ~UNITS,,FORC,KN
  ~CODESEL,EC3-92
/PREP7
! Preprocessor
! --------------------------------------------------
! Materials
  ~CFMP,1,LIB,STEEL,EC3,Fe 430 !Fe 430
! Element Types
  ET,1,BEAM4 ! Type 1: 3D Beam

! Cross Sections
  ~SSECLIB,1,1,94,6    !2 UPN 180

! Member properties
  ~MEMBPRO,1,EC3,ALL,10,1.0,1.0,0,0,0,1.0,1.0,1.0,0.8,0,1.0,1.0,0

! Beam properties
  ~BMSHPRO,1,BEAM,1,,,,4,1,0,,

! Nodes
  N, 1
  N,25,,10
  FILL, 1,25
! Elements
  E,1,2
  EGEN,24,1,1
  EPLOT
/SOLU
! Solution
! --------------------------------------------------
! Displacements
  D, 1,UX
  D, 1,UY
  D, 1,UZ
  D,25,UX
  D,25,UZ
  D,ALL,ROTY
! Apply Load
  F,25,FY,-250
! Solve
  SOLVE
/POST1
! Postprocessor
! --------------------------------------------------
! Read results
  ~CFSET,,1,1       ! Read the first load step

! Check Compression Buckling 
  ~CHKSTL,BUCK_CMP,-Z,PARTIAL

!--------------------------------------------------------------------------------------
! DATA CHECK
!--------------------------------------------------------------------------------------
! Data comparison number
  NComp = 8
  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) = 'CLASS'
  LABEL( 2,1) = 'ALP_Z'
  LABEL( 3,1) = 'BETA_A'
  LABEL( 4,1) = 'LAM_Z'
  LABEL( 5,1) = 'PHI_Z'
  LABEL( 6,1) = 'CHI_Z'
  LABEL( 7,1) = 'NBRD'
  LABEL( 8,1) = 'CRT_E3'

! Correct values
!--------------------------------------------------------------------------------------
  VALUE( 1,1)=   1
  VALUE( 2,1)=   0.21
  VALUE( 3,1)=   1
  VALUE( 4,1)=   2.1073289
  VALUE( 5,1)=   2.920687
  VALUE( 6,1)=   0.20230804
  VALUE( 7,1)= 283.23125
  VALUE( 8,1)=   0.88267096

! Obtained values
!--------------------------------------------------------------------------------------
 ~PLLSSTL,CLASS
 *GET,VALUE( 1,2),ELEM,1,ETAB,CLASS_J
 ~PLLSSTL,ALP_Z
  *GET,VALUE( 2,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,BETA_A
  *GET,VALUE( 3,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,LAM_Z
  *GET,VALUE( 4,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,PHI_Z
  *GET,VALUE( 5,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,CHI_Z
  *GET,VALUE( 6,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,NBRD
  *GET,VALUE( 7,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,CRT_TOT
  *GET,VALUE( 8,2),ELEM,1,ETAB,CFETAB_J

! Warning and error tolerances
  TOLER( 1,1)= 0    $ TOLER( 1,2)= 0
  TOLER( 2,1)= 1E-2 $ TOLER( 2,2)= 1E-1
  TOLER( 3,1)= 1E-2 $ TOLER( 3,2)= 1E-1
  TOLER( 4,1)= 1E-2 $ TOLER( 4,2)= 1E-1
  TOLER( 5,1)= 1E-2 $ TOLER( 5,2)= 1E-1
  TOLER( 6,1)= 1E-3 $ TOLER( 6,2)= 1E-2
  TOLER( 7,1)= 1    $ TOLER( 7,2)= 1E1
  TOLER( 8,1)= 1E-3 $ TOLER( 8,2)= 1E-1

!--------------------------------------------------------------------------------------
! Results comparison
!--------------------------------------------------------------------------------------
  COMPARA.MAC
