!*****************************************************************************************************!
! TITLE: CFVR5154 - Vehicle loads in a beam bridge 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 30 x 43
! DESCRIPTION:
! DESCRIPTION: The aim of the example is to verify the vehicle loads.
!
! ELEMENT TYPE: BEAM44
! MODULES: NLBR
! UNITS: User
! KEYWORD1: Bridge Loads
!
!
!*************************************************************************************!

  FINISH
  ~CFCLEAR,,1
  ~CFACTIV,NLBR,Y
  NomFile='CFVR5154'
  /TITLE, %NomFile%, Vehicle on beam model. User units.

! -------------------------------------------------------------------------------------
! User Units
! -------------------------------------------------------------------------------------
  ~UNITS,,MONE,EURO
  ~UNITS,,LENG,,10,dm
  ~UNITS,,TIME,S
  ~UNITS,,FORC,,1000,kN
  ~UNITS,,PRES,,0 ,uuP
  ~UNITS,,MASS,,0 ,uuM

! -------------------------------------------------------------------------------------
! Initial data
! -------------------------------------------------------------------------------------
  /PREP7

  LOCAL,11,0,212,332,547,10.5,3.2,-90
  CSYS,11

! Materials
  ~CFMP,1,LIB,CONCRETE,EHE,HA-35

! Section and Beam & Shell Prop.
  ~CSECDMS,1,REC,1,30,43
  ~BMSHPRO,1,BEAM,1,1,,,44,1,0,,Beam 1

! Bridge
  N,10,0,0
  N,20,40,0
  N,30,80,30
  N,40,80,70
  ET,1,BEAM44
  TYPE,1
  E,10,20
  E,20,30
  E,30,40
  CM,TSTDeckE,ELEM
  CM,TSTDeckN,NODE
  CMGRP,TSTDeck,TSTDeckE,TSTDeckN

  ! Vehicle Path.
  K,10,0,0
  K,20,40,0
  K,30,80,30
  K,40,80,70+50
  L,10,20
  L,20,30
  L,30,40
  CM,TSTSktck,LINE

  ! LOADS
  /SOLU
  /sys,del file.s*
  ALLS
! Familiy definition.
! The following families will contain all the vehicle steps.
! These steps are incompatible (the vehicle can only be in one position at a time).
  ~BLFDF,1001, INCOMPAT  ! Vertical loads
  ~BLFDF,1002, INCOMPAT  ! Horizontal loads (Breaking, acceleration, etc.)

! Vehicle number 15
  ~BLVST,15
    ~BLVA, 1
    ~BLVB, 1
    ! BLVC, Type, d, start, end, PosCx, PosCy
    ~BLVC, 0,40,0,0,0,0
    ! BLVD,j,Ini, P(Ini,j),P(Ini+1,j),...,P(Ini+k,j)
    ~BLVD, 1,  1, -1e1
  ~BLVEND

  ALLS
! Attach the vehicle to the family.
! ~BLVR, Id_Fam, Id_FamH, Id_Vehicle, CompLine, CompDeck, Dist, HL, HLMin
  ~BLVR,1001,1002,15,TSTSktck,TSTDeck,-20.0,0.20,0

!--------------------------------------------------------------------------------------
! DATA CHECK
!--------------------------------------------------------------------------------------
! Data comparison number
  NComp    = 52
  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)  = 'N_Vehic'
  LABEL( 2)  = 'D_'
  LABEL( 3)  = 'Q(1,1)'
  LABEL( 4)  = 'CSP(2)'
  LABEL( 5)  = 'F_Type'
  LABEL( 6)  = 'F_Stts'
  LABEL( 7)  = 'FZ'
  LABEL( 8)  = 'MX'
  LABEL( 9)  = 'FZ'
  LABEL(10)  = 'MX'
  LABEL(11)  = 'FZ'
  LABEL(12)  = 'MX'
  LABEL(13)  = 'FZ'
  LABEL(14)  = 'MX'
  LABEL(15)  = 'FZ'
  LABEL(16)  = 'MX'
  LABEL(17)  = 'MY'
  LABEL(18)  = 'FZ'
  LABEL(19)  = 'MX'
  LABEL(20)  = 'MY'
  LABEL(21)  = 'FZ'
  LABEL(22)  = 'MX'
  LABEL(23)  = 'MY'
  LABEL(24)  = 'FZ'
  LABEL(25)  = 'MX'
  LABEL(26)  = 'MY'
  LABEL(27)  = 'FZ'
  LABEL(28)  = 'MX'
  LABEL(29)  = 'MY'
  LABEL(30)  = 'FZ'
  LABEL(31)  = 'MX'
  LABEL(32)  = 'MY'
  LABEL(33)  = 'FX'
  LABEL(34)  = 'FY'
  LABEL(35)  = 'FX'
  LABEL(36)  = 'FX'
  LABEL(37)  = 'FY'
  LABEL(38)  = 'FX'
  LABEL(39)  = 'FY'
  LABEL(40)  = 'FZ'
  LABEL(41)  = 'FX'
  LABEL(42)  = 'FY'
  LABEL(43)  = 'FX'
  LABEL(44)  = 'FY'
  LABEL(45)  = 'FX'
  LABEL(46)  = 'FY'
  LABEL(47)  = 'FX'
  LABEL(48)  = 'FY'
  LABEL(49)  = 'FX'
  LABEL(50)  = 'FY'
  LABEL(51)  = 'FX'
  LABEL(52)  = 'FY'

! Correct data, obtained data
!--------------------------------------------------------------------------------------
/SOLU
  VALUE( 1,1) = 1                $  ~CFGET,value( 1,2),BRIDGE,,VEHICLE,NUMBER
  VALUE( 2,1) = 40.0             $  ~CFGET,value( 2,2),BRIDGE,,VEHICLE,D,,15
  VALUE( 3,1) = -10              $  ~CFGET,value( 3,2),BRIDGE,,VEHICLE,Q,,15,1,1
  VALUE( 4,1) = 1                $  ~CFGET,value( 4,2),BRIDGE,,VEHICLE,ROWS,,15
  VALUE( 5,1) = 3                $  ~CFGET,value( 5,2),BRIDGE,,FAMILY,TYPE,,1002
  VALUE( 6,1) = 5                $  ~CFGET,value( 6,2),BRIDGE,,FAMILY,NSTATES,,1001
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,1
  VALUE( 7,1) = -10              $  *GET,value( 7,2), NODE,10,F,FZ
  VALUE( 8,1) = 200              $  *GET,value( 8,2), NODE,10,F,MX
  VALUE( 9,1) = 0.0              $  *GET,value( 9,2), NODE,20,F,FZ
  VALUE(10,1) = 0.0              $  *GET,value(10,2), NODE,20,F,MX
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,2
  VALUE(11,1) = 0.0              $  *GET,value(11,2), NODE,10,F,FZ
  VALUE(12,1) = 0.0              $  *GET,value(12,2), NODE,10,F,MX
  VALUE(13,1) = -10              $  *GET,value(13,2), NODE,20,F,FZ
  VALUE(14,1) = 200              $  *GET,value(14,2), NODE,20,F,MX
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,3
  VALUE(15,1) = -4.667           $  *GET,value(15,2), NODE,20,F,FZ
  VALUE(16,1) = 74.67            $  *GET,value(16,2), NODE,20,F,MX
  VALUE(17,1) = 56.00            $  *GET,value(17,2), NODE,20,F,MY
  VALUE(18,1) = -5.333           $  *GET,value(18,2), NODE,30,F,FZ
  VALUE(19,1) = 85.33            $  *GET,value(19,2), NODE,30,F,MX
  VALUE(20,1) = 64.00            $  *GET,value(20,2), NODE,30,F,MY
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,4
  VALUE(21,1) = -10.000          $  *GET,value(21,2), NODE,30,F,FZ
  VALUE(22,1) = 33.33            $  *GET,value(22,2), NODE,30,F,MX
  VALUE(23,1) = 200.00           $  *GET,value(23,2), NODE,30,F,MY
  VALUE(24,1) = 0.0              $  *GET,value(24,2), NODE,40,F,FZ
  VALUE(25,1) = 0.0              $  *GET,value(25,2), NODE,40,F,MX
  VALUE(26,1) = 0.0              $  *GET,value(26,2), NODE,40,F,MY
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,5
  VALUE(27,1) = -0.833           $  *GET,value(27,2), NODE,30,F,FZ
  VALUE(28,1) = 0.0              $  *GET,value(28,2), NODE,30,F,MX
  VALUE(29,1) = 16.67            $  *GET,value(29,2), NODE,30,F,MY
  VALUE(30,1) = -9.167           $  *GET,value(30,2), NODE,40,F,FZ
  VALUE(31,1) = 0.0              $  *GET,value(31,2), NODE,40,F,MX
  VALUE(32,1) = 183.33           $  *GET,value(32,2), NODE,40,F,MY
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,6
  VALUE(33,1) = -2.000           $  *GET,value(33,2), NODE,10,F,FX
  VALUE(34,1) = 0.0              $  *GET,value(34,2), NODE,10,F,FY
  VALUE(35,1) = 0.0              $  *GET,value(35,2), NODE,20,F,FX
  VALUE(36,1) = 0.0              $  *GET,value(36,2), NODE,20,F,FY
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,7
  VALUE(37,1) = 0.0              $  *GET,value(37,2), NODE,10,F,FX
  VALUE(38,1) = 0.0              $  *GET,value(38,2), NODE,10,F,FY
  VALUE(39,1) = -2.000           $  *GET,value(39,2), NODE,20,F,FX
  VALUE(40,1) = 0.0              $  *GET,value(40,2), NODE,20,F,FY
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,8
  VALUE(41,1) = -0.747           $  *GET,value(41,2), NODE,20,F,FX
  VALUE(42,1) = -0.560           $  *GET,value(42,2), NODE,20,F,FY
  VALUE(43,1) = -0.853           $  *GET,value(43,2), NODE,30,F,FX
  VALUE(44,1) = -0.640           $  *GET,value(44,2), NODE,30,F,FY
   fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,9
  VALUE(45,1) = 0.0              $  *GET,value(45,2), NODE,20,F,FX
  VALUE(46,1) = 0.0              $  *GET,value(46,2), NODE,20,F,FY
  VALUE(47,1) = 0.0              $  *GET,value(47,2), NODE,30,F,FX
  VALUE(48,1) = -2.000           $  *GET,value(48,2), NODE,30,F,FY
  fdele,all,all
  sfedele,all,all,all
  ddele,all,all
  lsread,10
  VALUE(49,1) = 0.0              $  *GET,value(49,2), NODE,30,F,FX
  VALUE(50,1) = -0.167           $  *GET,value(50,2), NODE,30,F,FY
  VALUE(51,1) = 0.0              $  *GET,value(51,2), NODE,40,F,FX
  VALUE(52,1) = -1.833           $  *GET,value(52,2), NODE,40,F,FY

! Warning and error tolerances
  TOLER(  1,1) = 1E-02   $  TOLER(  1,2) = 1E-02 
  TOLER(  2,1) = 1E-02   $  TOLER(  2,2) = 1E-02 
  TOLER(  3,1) = 1E-02   $  TOLER(  3,2) = 1E-02   
  TOLER(  4,1) = 1E-02   $  TOLER(  4,2) = 1E-02 
  TOLER(  5,1) = 1E-02   $  TOLER(  5,2) = 1E-02 
  TOLER(  6,1) = 1E-02   $  TOLER(  6,2) = 1E-02 
  TOLER(  7,1) = 1E-02   $  TOLER(  7,2) = 1E-02 
  TOLER(  8,1) = 1E-02   $  TOLER(  8,2) = 1E-02 
  TOLER(  9,1) = 1E-02   $  TOLER(  9,2) = 1E-02 
  TOLER( 10,1) = 1E-02   $  TOLER( 10,2) = 1E-02 
  TOLER( 11,1) = 1E-02   $  TOLER( 11,2) = 1E-02 
  TOLER( 12,1) = 1E-02   $  TOLER( 12,2) = 1E-02 
  TOLER( 13,1) = 1E-02   $  TOLER( 13,2) = 1E-02
  TOLER( 14,1) = 1E-02   $  TOLER( 14,2) = 1E-02 
  TOLER( 15,1) = 1E-02   $  TOLER( 15,2) = 1E-02
  TOLER( 16,1) = 1E-02   $  TOLER( 16,2) = 1E-02 
  TOLER( 17,1) = 1E-02   $  TOLER( 17,2) = 1E-02 
  TOLER( 18,1) = 1E-02   $  TOLER( 18,2) = 1E-02 
  TOLER( 19,1) = 1E-02   $  TOLER( 19,2) = 1E-02 
  TOLER( 20,1) = 1E-02   $  TOLER( 20,2) = 1E-02 
  TOLER( 21,1) = 1E-02   $  TOLER( 21,2) = 1E-02 
  TOLER( 22,1) = 1E-02   $  TOLER( 22,2) = 1E-02 
  TOLER( 23,1) = 1E-02   $  TOLER( 23,2) = 1E-02 
  TOLER( 24,1) = 1E-02   $  TOLER( 24,2) = 1E-02 
  TOLER( 25,1) = 1E-02   $  TOLER( 25,2) = 1E-02 
  TOLER( 26,1) = 1E-02   $  TOLER( 26,2) = 1E-02 
  TOLER( 27,1) = 1E-02   $  TOLER( 27,2) = 1E-02 
  TOLER( 28,1) = 1E-02   $  TOLER( 28,2) = 1E-02 
  TOLER( 29,1) = 1E-02   $  TOLER( 29,2) = 1E-02 
  TOLER( 30,1) = 1E-02   $  TOLER( 30,2) = 1E-02 
  TOLER( 31,1) = 1E-02   $  TOLER( 31,2) = 1E-02 
  TOLER( 32,1) = 1E-02   $  TOLER( 32,2) = 1E-02 
  TOLER( 33,1) = 1E-02   $  TOLER( 33,2) = 1E-02 
  TOLER( 34,1) = 1E-02   $  TOLER( 34,2) = 1E-02 
  TOLER( 35,1) = 1E-02   $  TOLER( 35,2) = 1E-02 
  TOLER( 36,1) = 1E-02   $  TOLER( 36,2) = 1E-02 
  TOLER( 37,1) = 1E-02   $  TOLER( 37,2) = 1E-02 
  TOLER( 38,1) = 1E-02   $  TOLER( 38,2) = 1E-02 
  TOLER( 39,1) = 1E-02   $  TOLER( 39,2) = 1E-02 
  TOLER( 40,1) = 1E-02   $  TOLER( 40,2) = 1E-02 
  TOLER( 41,1) = 1E-02   $  TOLER( 41,2) = 1E-02 
  TOLER( 42,1) = 1E-02   $  TOLER( 42,2) = 1E-02 
  TOLER( 43,1) = 1E-02   $  TOLER( 43,2) = 1E-02 
  TOLER( 44,1) = 1E-02   $  TOLER( 44,2) = 1E-02 
  TOLER( 45,1) = 1E-02   $  TOLER( 45,2) = 1E-02 
  TOLER( 46,1) = 1E-02   $  TOLER( 46,2) = 1E-02 
  TOLER( 47,1) = 1E-02   $  TOLER( 47,2) = 1E-02 
  TOLER( 48,1) = 1E-02   $  TOLER( 48,2) = 1E-02 
  TOLER( 49,1) = 1E-02   $  TOLER( 49,2) = 1E-02 
  TOLER( 50,1) = 1E-02   $  TOLER( 50,2) = 1E-02 
  TOLER( 51,1) = 1E-02   $  TOLER( 51,2) = 1E-02 
  TOLER( 52,1) = 1E-02   $  TOLER( 52,2) = 1E-02   
                                        
! Clear LS Files.
/sys,del file.s*

!--------------------------------------------------------------------------------------
! Results comparison
!--------------------------------------------------------------------------------------
  COMPARA.MAC
