!*****************************************************************************************************!
! TITLE: CFVR5153 -   Surface loads on beam model
! SUBTITLE:
!
! DESCRIPTION: The example is a beam bridge where vehicle loads are defined.
! DESCRIPTION:
! DESCRIPTION: The bridge is made of HA-35 concrete. It has a rectangular cross section 2 x 10
! DESCRIPTION:
! DESCRIPTION: The aim of the example is to verify the vehicle loads.
!
! ELEMENT TYPE: BEAM44
! MODULES: NLBR
! UNITS: SI
! KEYWORD1: Bridge Loads
!
!
!*************************************************************************************!

  FINISH
  ~CFCLEAR,,1
  ~CFACTIV,NLBR,Y
  NomFile='CFVR5153'
  /TITLE, %NomFile%, Surface loads on beam model

! -------------------------------------------------------------------------------------
! Initial data
! -------------------------------------------------------------------------------------
  /PREP7

! Materials
  ~CFMP,1,LIB,CONCRETE,EHE,HA-35

! Section and Beam & Shell Prop.
  ~CSECDMS,1,REC,1,2,10
  ~BMSHPRO,1,BEAM,1,1,,,44,1,0,,Beam 1

! Bridge
  N,10, 0,0
  N,20, 4,0
  N,30, 8,0
  N,40,10,0
  ET,1,BEAM44
  TYPE,1
  REAL,1
  E,10,20
  E,20,30
  E,30,40
  CM,DeckE,ELEM
  CM,DeckN,NODE
  CMGRP,DeckGRP,DeckE,DeckN

  ! Vehicle Path.
  K,10, 0,0
  K,20, 4,0
  K,30, 6,0
  K,40,10,0
  L,10,20
  L,20,30
  L,30,40
  CM,Path,LINE

  ! LOADS
  /SOLU
  /sys,del file.s*
  ALLS
! Familiy definition.
! The following family will contain all the surface load steps.
! These steps are compatible.
  ~BLFDF,1011, COMPAT  ! Vertical loads
  ~BLFDF,1012, COMPAT  ! Horizontal loads

! Surface load
  ~BLSST, 1011, 1012
    ~BLSA,2,-4.5,-0.5
    ~BLSB,-3.5e3,Path,DeckGRP,0.03,0.0
  ~BLSEND

!--------------------------------------------------------------------------------------
! DATA CHECK
!--------------------------------------------------------------------------------------
! Data comparison number
  NComp    = 112
  NComp_ch = 0

! Marix 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)  = 'F_Type'
  LABEL( 2)  = 'F_Stts'
  LABEL( 3)  = 'F_Type'
  LABEL( 4)  = 'F_Stts'
  *DO,II,1,6
    LABEL( 5 + (II-1)*18)  = 'MX_10'
    LABEL( 6 + (II-1)*18)  = 'MY_10'
    LABEL( 7 + (II-1)*18)  = 'FY_10'
    LABEL( 8 + (II-1)*18)  = 'MX_20'
    LABEL( 9 + (II-1)*18)  = 'MY_20'
    LABEL(10 + (II-1)*18)  = 'FY_20'
    LABEL(11 + (II-1)*18)  = 'MX_30'
    LABEL(12 + (II-1)*18)  = 'MY_30'
    LABEL(13 + (II-1)*18)  = 'FY_30'
    LABEL(14 + (II-1)*18)  = 'MX_40'
    LABEL(15 + (II-1)*18)  = 'MY_40'
    LABEL(16 + (II-1)*18)  = 'FY_40'
    LABEL(17 + (II-1)*18)  = 'P2_1'
    LABEL(18 + (II-1)*18)  = 'P3_1'
    LABEL(19 + (II-1)*18)  = 'P2_2'
    LABEL(20 + (II-1)*18)  = 'P3_2'
    LABEL(21 + (II-1)*18)  = 'P2_3'
    LABEL(22 + (II-1)*18)  = 'P3_3'
  *ENDDO

! Correct data, obtained data
!--------------------------------------------------------------------------------------
/NERR,0
/SOLU
  VALUE( 1,1) = 4                $  ~CFGET,value( 1,2),BRIDGE,,FAMILY,TYPE,,1011
  VALUE( 2,1) = 3                $  ~CFGET,value( 2,2),BRIDGE,,FAMILY,NSTATES,,1011
  VALUE( 3,1) = 4                $  ~CFGET,value( 3,2),BRIDGE,,FAMILY,TYPE,,1012
  VALUE( 4,1) = 3                $  ~CFGET,value( 4,2),BRIDGE,,FAMILY,NSTATES,,1012
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,1
  VALUE( 5,1) = 70000            $  *GET,value( 5,2), NODE,10,F,MX
  VALUE( 6,1) = 0                $  *GET,value( 6,2), NODE,10,F,MY
  VALUE( 7,1) = 0                $  *GET,value( 7,2), NODE,10,F,FY
  VALUE( 8,1) = 70000            $  *GET,value( 8,2), NODE,20,F,MX
  VALUE( 9,1) = 0                $  *GET,value( 9,2), NODE,20,F,MY
  VALUE(10,1) = 0                $  *GET,value(10,2), NODE,20,F,FY
  VALUE(11,1) = 0                $  *GET,value(11,2), NODE,30,F,MX
  VALUE(12,1) = 0                $  *GET,value(12,2), NODE,30,F,MY
  VALUE(13,1) = 0                $  *GET,value(13,2), NODE,30,F,FY
  VALUE(14,1) = 0                $  *GET,value(14,2), NODE,40,F,MX
  VALUE(15,1) = 0                $  *GET,value(15,2), NODE,40,F,MY
  VALUE(16,1) = 0                $  *GET,value(16,2), NODE,40,F,FY
  VALUE(17,1) = -14000           $  *GET,value(17,2), ELEM, 1,PRES,2
  VALUE(18,1) = 0                $  *GET,value(18,2), ELEM, 1,PRES,3
  VALUE(19,1) = 0                $  *GET,value(19,2), ELEM, 2,PRES,2
  VALUE(20,1) = 0                $  *GET,value(20,2), ELEM, 2,PRES,3
  VALUE(21,1) = 0                $  *GET,value(21,2), ELEM, 3,PRES,2
  VALUE(22,1) = 0                $  *GET,value(22,2), ELEM, 3,PRES,3
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,2
  VALUE(23,1) = 0                $  *GET,value(23,2), NODE,10,F,MX
  VALUE(24,1) = 0                $  *GET,value(24,2), NODE,10,F,MY
  VALUE(25,1) = 0                $  *GET,value(25,2), NODE,10,F,FY
  VALUE(26,1) = 35000            $  *GET,value(26,2), NODE,20,F,MX
  VALUE(27,1) = 0                $  *GET,value(27,2), NODE,20,F,MY
  VALUE(28,1) = 0                $  *GET,value(28,2), NODE,20,F,FY
  VALUE(29,1) = 35000            $  *GET,value(29,2), NODE,30,F,MX
  VALUE(30,1) = 0                $  *GET,value(30,2), NODE,30,F,MY
  VALUE(31,1) = 0                $  *GET,value(31,2), NODE,30,F,FY
  VALUE(32,1) = 0                $  *GET,value(32,2), NODE,40,F,MX
  VALUE(33,1) = 0                $  *GET,value(33,2), NODE,40,F,MY
  VALUE(34,1) = 0                $  *GET,value(34,2), NODE,40,F,FY
  VALUE(35,1) = 0                $  *GET,value(35,2), ELEM, 1,PRES,2
  VALUE(36,1) = 0                $  *GET,value(36,2), ELEM, 1,PRES,3
  VALUE(37,1) = -7000            $  *GET,value(37,2), ELEM, 2,PRES,2
  VALUE(38,1) = 0                $  *GET,value(38,2), ELEM, 2,PRES,3
  VALUE(39,1) = 0                $  *GET,value(39,2), ELEM, 3,PRES,2
  VALUE(40,1) = 0                $  *GET,value(40,2), ELEM, 3,PRES,3
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,3
  VALUE(41,1) = 0                $  *GET,value(41,2), NODE,10,F,MX
  VALUE(42,1) = 0                $  *GET,value(42,2), NODE,10,F,MY
  VALUE(43,1) = 0                $  *GET,value(43,2), NODE,10,F,FY
  VALUE(44,1) = 35000            $  *GET,value(44,2), NODE,20,F,MX
  VALUE(45,1) = 0                $  *GET,value(45,2), NODE,20,F,MY
  VALUE(46,1) = 0                $  *GET,value(46,2), NODE,20,F,FY
  VALUE(47,1) = 70000            $  *GET,value(47,2), NODE,30,F,MX
  VALUE(48,1) = 0                $  *GET,value(48,2), NODE,30,F,MY
  VALUE(49,1) = 0                $  *GET,value(49,2), NODE,30,F,FY
  VALUE(50,1) = 35000            $  *GET,value(50,2), NODE,40,F,MX
  VALUE(51,1) = 0                $  *GET,value(51,2), NODE,40,F,MY
  VALUE(52,1) = 0                $  *GET,value(52,2), NODE,40,F,FY
  VALUE(53,1) = 0                $  *GET,value(53,2), ELEM, 1,PRES,2
  VALUE(54,1) = 0                $  *GET,value(54,2), ELEM, 1,PRES,3
  VALUE(55,1) = -7000            $  *GET,value(55,2), ELEM, 2,PRES,2
  VALUE(56,1) = 0                $  *GET,value(56,2), ELEM, 2,PRES,3
  VALUE(57,1) = -14000           $  *GET,value(57,2), ELEM, 3,PRES,2
  VALUE(58,1) = 0                $  *GET,value(58,2), ELEM, 3,PRES,3
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,4
  VALUE(59,1) = 0                $  *GET,value(59,2), NODE,10,F,MX
  VALUE(60,1) = 0                $  *GET,value(60,2), NODE,10,F,MY
  VALUE(61,1) = 0                $  *GET,value(61,2), NODE,10,F,FY
  VALUE(62,1) = 0                $  *GET,value(62,2), NODE,20,F,MX
  VALUE(63,1) = 0                $  *GET,value(63,2), NODE,20,F,MY
  VALUE(64,1) = 0                $  *GET,value(64,2), NODE,20,F,FY
  VALUE(65,1) = 0                $  *GET,value(65,2), NODE,30,F,MX
  VALUE(66,1) = 0                $  *GET,value(66,2), NODE,30,F,MY
  VALUE(67,1) = 0                $  *GET,value(67,2), NODE,30,F,FY
  VALUE(68,1) = 0                $  *GET,value(68,2), NODE,40,F,MX
  VALUE(69,1) = 0                $  *GET,value(69,2), NODE,40,F,MY
  VALUE(70,1) = 0                $  *GET,value(70,2), NODE,40,F,FY
  VALUE(71,1) = 0                $  *GET,value(71,2), ELEM, 1,PRES,2
  VALUE(72,1) = -14000*0.03      $  *GET,value(72,2), ELEM, 1,PRES,3
  VALUE(73,1) = 0                $  *GET,value(73,2), ELEM, 2,PRES,2
  VALUE(74,1) = 0                $  *GET,value(74,2), ELEM, 2,PRES,3
  VALUE(75,1) = 0                $  *GET,value(75,2), ELEM, 3,PRES,2
  VALUE(76,1) = 0                $  *GET,value(76,2), ELEM, 3,PRES,3
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,5
  VALUE(77,1) = 0                $  *GET,value(77,2), NODE,10,F,MX
  VALUE(78,1) = 0                $  *GET,value(78,2), NODE,10,F,MY
  VALUE(79,1) = 0                $  *GET,value(79,2), NODE,10,F,FY
  VALUE(80,1) = 0                $  *GET,value(80,2), NODE,20,F,MX
  VALUE(81,1) = 0                $  *GET,value(81,2), NODE,20,F,MY
  VALUE(82,1) = 0                $  *GET,value(82,2), NODE,20,F,FY
  VALUE(83,1) = 0                $  *GET,value(83,2), NODE,30,F,MX
  VALUE(84,1) = 0                $  *GET,value(84,2), NODE,30,F,MY
  VALUE(85,1) = 0                $  *GET,value(85,2), NODE,30,F,FY
  VALUE(86,1) = 0                $  *GET,value(86,2), NODE,40,F,MX
  VALUE(87,1) = 0                $  *GET,value(87,2), NODE,40,F,MY
  VALUE(88,1) = 0                $  *GET,value(88,2), NODE,40,F,FY
  VALUE(89,1) = 0                $  *GET,value(89,2), ELEM, 1,PRES,2
  VALUE(90,1) = 0                $  *GET,value(90,2), ELEM, 1,PRES,3
  VALUE(91,1) = 0                $  *GET,value(91,2), ELEM, 2,PRES,2
  VALUE(92,1) = -7000*0.03       $  *GET,value(92,2), ELEM, 2,PRES,3
  VALUE(93,1) = 0                $  *GET,value(93,2), ELEM, 3,PRES,2
  VALUE(94,1) = 0                $  *GET,value(94,2), ELEM, 3,PRES,3
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,6
  VALUE( 95,1) = 0                $  *GET,value( 95,2), NODE,10,F,MX
  VALUE( 96,1) = 0                $  *GET,value( 96,2), NODE,10,F,MY
  VALUE( 97,1) = 0                $  *GET,value( 97,2), NODE,10,F,FY
  VALUE( 98,1) = 0                $  *GET,value( 98,2), NODE,20,F,MX
  VALUE( 99,1) = 0                $  *GET,value( 99,2), NODE,20,F,MY
  VALUE(100,1) = 0                $  *GET,value(100,2), NODE,20,F,FY
  VALUE(101,1) = 0                $  *GET,value(101,2), NODE,30,F,MX
  VALUE(102,1) = 0                $  *GET,value(102,2), NODE,30,F,MY
  VALUE(103,1) = 0                $  *GET,value(103,2), NODE,30,F,FY
  VALUE(104,1) = 0                $  *GET,value(104,2), NODE,40,F,MX
  VALUE(105,1) = 0                $  *GET,value(105,2), NODE,40,F,MY
  VALUE(106,1) = 0                $  *GET,value(106,2), NODE,40,F,FY
  VALUE(107,1) = 0                $  *GET,value(107,2), ELEM, 1,PRES,2
  VALUE(108,1) = 0                $  *GET,value(108,2), ELEM, 1,PRES,3
  VALUE(109,1) = 0                $  *GET,value(109,2), ELEM, 2,PRES,2
  VALUE(110,1) = -7000*0.03       $  *GET,value(110,2), ELEM, 2,PRES,3
  VALUE(111,1) = 0                $  *GET,value(111,2), ELEM, 3,PRES,2
  VALUE(112,1) = -14000*0.03      $  *GET,value(112,2), ELEM, 3,PRES,3
/NERR

! Warning and error tolerances

  TOLER(  1,1) = 1E-1 $  TOLER(  1,2) = 1E-1
  TOLER(  2,1) = 1E-1 $  TOLER(  2,2) = 1E-1
  TOLER(  3,1) = 1E-1 $  TOLER(  3,2) = 1E-1
  TOLER(  4,1) = 1E-1 $  TOLER(  4,2) = 1E-1
  TOLER(5:NComp,1)  = 1E0  $  TOLER(5:NComp,2)  = 1E0

! Clear LS Files.
/sys,del file.s*

!--------------------------------------------------------------------------------------
! Results comparison
!--------------------------------------------------------------------------------------
  COMPARA.MAC
