!*************************************************************************************!
! TITLE: CFVR1906 - Steel checking according to British Standard 5950 1985
! SUBTITLE: Lateral buckling with moments check of a cantilever steel beam.
!
! DESCRIPTION: A steel cantilever beam is subjected to an axial compression force and
! DESCRIPTION: moments at free end.
! DESCRIPTION:
! DESCRIPTION: Determine the section class and total criterion, including values of Perry
! DESCRIPTION: factor and Robertson constant according to BS 5950-85.
! DESCRIPTION:
!
! ELEMENT TYPE: BEAM4
! MODULES:
! UNITS: User
! KEYWORD1: Beam
! KEYWORD2: Cross Section
! KEYWORD3: Code Checking/Design
! KEYWORD4: Steel
! KEYWORD5: BS 5950-85
!
!*************************************************************************************!
   FINISH
  ~CFCLEAR,,1
  NomFile='CFVR1906'
  /TITLE, %NomFile%, British Standard 5950 (1985) Compression and Biaxial Bending

! -------------------------------------------------------------------------------------
! Initial data
! -------------------------------------------------------------------------------------
! CivilFEM Setup: Code & Units
  ~UNITS,,LENG,M
  ~UNITS,,TIME,S
  ~UNITS,,FORC,MP
  ~CODESEL,BS595085
/PREP7
! Preprocessor
! --------------------------------------------------
! Materials
  ~CFMP,1,LIB,STEEL,BS5950,GRWR50C      ! grade WR50C

! Element type
  ET,1,BEAM4 ! Type 1: 3D Beam

! Cross Sections
  ~SSECLIB,3,1,6,6   !HE 200 B
! Member Properties
  L        = 1
  KLTXY    = 1.4
  KLTXZ    = 1.4
  KCXY     = 2.0
  KCXZ     = 2.0
  CteRob   = 0
  n        = 1
  m        = 1
  DL       = 0
  CFBUCKXY = 1
  CFBUCKXZ = 1
  CHCKAXIS = 1
  ~MEMBPRO,1,BS595085,ALL,L,KLTXY,KLTXZ,KCXY,KCXZ,CteRob,n,m,DL,CFBUCKXY,CFBUCKXZ,CHCKAXIS

! Beam properties
 ~BMSHPRO,1,BEAM,3,3,,,4,1,0

! Nodes
  N, 1
  N,25,1
  FILL, 1,25
! Elements
  E,1,2
  EGEN,24,1,1
  EPLOT
/SOLU
! Solution
! --------------------------------------------------
! Displacements
  D, 1,ALL
! Apply Load
  F,25,FX,-50
  F,25,MY,3
  F,25,MZ,8
! Solve
  SOLVE
/POST1
! Postprocessor
! --------------------------------------------------
! Read results
  ~CFSET,,1,1       ! Load first load case
! Plot bending moment MZ
  ~PLLSFOR,M,Z,-1
! Eurocode No.3 Checking in Axial+Biaxial bending
  ~CHKSTL,BUCK_BCM
!--------------------------------------------------------------------------------------
! DATA CHECK
!--------------------------------------------------------------------------------------
! Data comparison number
  NComp = 32
  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) = 'WEBCLASS'
  LABEL( 3,1) = 'CRT_TOT '
  LABEL( 4,1) = 'CRT_CM_L'
  LABEL( 5,1) = 'CRT_CM_O'
  LABEL( 6,1) = 'CRT_AX_L'
  LABEL( 7,1) = 'CRT_MX_L'
  LABEL( 8,1) = 'CRT_MY_L'
  LABEL( 9,1) = 'CRT_AX_O'
  LABEL(10,1) = 'CRT_MX_O'
  LABEL(11,1) = 'CRT_MY_O'
  LABEL(12,1) = 'CRT_PVX '
  LABEL(13,1) = 'F       '
  LABEL(14,1) = 'PC      '
  LABEL(15,1) = 'FVX     '
  LABEL(16,1) = 'MX      '
  LABEL(17,1) = 'ZX      '
  LABEL(18,1) = 'SX      '
  LABEL(19,1) = 'SVX     '
  LABEL(20,1) = 'AVX     '
  LABEL(21,1) = 'VCRX    '
  LABEL(22,1) = 'MDFX    '
  LABEL(23,1) = 'PVX     '
  LABEL(24,1) = 'MCX     '
  LABEL(25,1) = 'M       '
  LABEL(26,1) = 'LAMBDA  '
  LABEL(27,1) = 'LAMBDA0 '
  LABEL(28,1) = 'LAMBDALT'
  LABEL(29,1) = 'LAMBDAL0'
  LABEL(30,1) = 'ROBERSTS'
  LABEL(31,1) = 'PERRYFCT'
  LABEL(32,1) = 'MB      '

! Correct values
  VALUE( 1,1)=1
  VALUE( 2,1)=1
  VALUE( 3,1)=1.05289
  VALUE( 4,1)=.89
  VALUE( 5,1)= 1.05289
  VALUE( 6,1)= 0.18225
  VALUE( 7,1)= 0.35393
  VALUE( 8,1)= 0.3547
  VALUE( 9,1)= 0.2252
  VALUE(10,1)= 0.3757
  VALUE(11,1)= 0.4519
  VALUE(12,1)=0.
  VALUE(13,1)=-50.
  VALUE(14,1)=221.980
  VALUE(15,1)=0.
  VALUE(16,1)= -8.
  VALUE(17,1)=0.5696e-3
  VALUE(18,1)=0.6425E-3
  VALUE(19,1)=0.6200E-3
  VALUE(20,1)=0.0018
  VALUE(21,1)=0.256878e6
  VALUE(22,1)=0.065517
  VALUE(23,1)=37.9946
  VALUE(24,1)=22.6032
  VALUE(25,1)=1.
  VALUE(26,1)=39.4477
  VALUE(27,1)=15.7803
  VALUE(28,1)=29.9762
  VALUE(29,1)=31.5605
  VALUE(30,1)=5.5
  VALUE(31,1)=0.
  VALUE(32,1)=21.2929

! Obtained values
 ~PLLSSTL,CLASS
 *GET,VALUE(1,2),ELEM,1,ETAB,CLASS_J
 ~PLLSSTL,WEBCLASS
 *GET,VALUE(2,2),ELEM,1,ETAB,CLASS_J
 ~PLLSSTL,CRT_TOT
  *GET,VALUE(3,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,CRT_CM_L
  *GET,VALUE(4,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,CRT_CM_O
  *GET,VALUE(5,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,CRT_AX_L
  *GET,VALUE(6,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,CRT_MX_L
 *GET,VALUE(7,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,CRT_MY_L
 *GET,VALUE(8,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,CRT_AX_O
 *GET,VALUE(9,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,CRT_MX_O
 *GET,VALUE(10,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,CRT_MY_O
 *GET,VALUE(11,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,CRT_PVX
 *GET,VALUE(12,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,F
 *GET,VALUE(13,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,PC
 *GET,VALUE(14,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,FVX
 *GET,VALUE(15,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,MX
 *GET,VALUE(16,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,ZX
 *GET,VALUE(17,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,SX
 *GET,VALUE(18,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,SVX
 *GET,VALUE(19,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,AVX
 *GET,VALUE(20,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,VCRX
 *GET,VALUE(21,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,MDFX
 *GET,VALUE(22,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,PVX
 *GET,VALUE(23,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,MCX
 *GET,VALUE(24,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,M
 *GET,VALUE(25,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,LAMBDA
 *GET,VALUE( 26,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,LAMBDA0
 *GET,VALUE(27,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,LAMBDALT
 *GET,VALUE(28,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,LAMBDAL0
 *GET,VALUE(29,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,ROBERSTS
 *GET,VALUE(30,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,PERRYFCT
 *GET,VALUE(31,2),ELEM,1,ETAB,CFETAB_J
 ~PLLSSTL,MB
 *GET,VALUE(32,2),ELEM,1,ETAB,CFETAB_J

! Warning and error tolerances
  TOLER( 1,1)= 1E-3 $ TOLER( 1,2)= 1E-3
  TOLER( 2,1)= 1E-3 $ TOLER( 2,2)= 1E-3
  TOLER( 3,1)= 1E-3 $ TOLER( 3,2)= 1E-3
  TOLER( 4,1)= 1E-3 $ TOLER( 4,2)= 1E-3
  TOLER( 5,1)= 1E-3 $ TOLER( 5,2)= 1E-3
  TOLER( 6,1)= 1E-3 $ TOLER( 6,2)= 1E-3
  TOLER( 7,1)= 1E-3 $ TOLER( 7,2)= 1E-3
  TOLER( 8,1)= 1E-3 $ TOLER( 8,2)= 1E-3
  TOLER( 9,1)= 1E-3 $ TOLER( 9,2)= 1E-3
  TOLER(10,1)= 1E-3 $ TOLER(10,2)= 1E-3
  TOLER(11,1)= 1E-3 $ TOLER(11,2)= 1E-3
  TOLER(12,1)= 1E-3 $ TOLER(12,2)= 1E-3
  TOLER(13,1)= 1E-2 $ TOLER(13,2)= 1E-2
  TOLER(14,1)= 1E-3 $ TOLER(14,2)= 1E-3
  TOLER(15,1)= 1E-3 $ TOLER(15,2)= 1E-3
  TOLER(16,1)= 1E-3 $ TOLER(16,2)= 1E-3
  TOLER(17,1)= 1E-7 $ TOLER(17,2)= 1E-7
  TOLER(18,1)= 1E-7 $ TOLER(18,2)= 1E-7
  TOLER(19,1)= 1E-7 $ TOLER(19,2)= 1E-7
  TOLER(20,1)= 1E-3 $ TOLER(20,2)= 1E-3
  TOLER(21,1)= 1E-3 $ TOLER(21,2)= 1E-3
  TOLER(22,1)= 1E-3 $ TOLER(22,2)= 1E-3
  TOLER(23,1)= 1E-3 $ TOLER(23,2)= 1E-3
  TOLER(24,1)= 1E-3 $ TOLER(24,2)= 1E-3
  TOLER(25,1)= 1E-3 $ TOLER(25,2)= 1E-3
  TOLER(26,1)= 1E-3 $ TOLER(26,2)= 1E-3
  TOLER(27,1)= 1E-3 $ TOLER(27,2)= 1E-3
  TOLER(28,1)= 1E-3 $ TOLER(28,2)= 1E-3
  TOLER(29,1)= 1E-3 $ TOLER(29,2)= 1E-3
  TOLER(30,1)= 1E-3 $ TOLER(30,2)= 1E-3
  TOLER(31,1)= 1E-3 $ TOLER(31,2)= 1E-3
  TOLER(32,1)= 1E-3 $ TOLER(32,2)= 1E-3

!--------------------------------------------------------------------------------------
! Results comparison
!--------------------------------------------------------------------------------------
  COMPARA.MAC
