subroutine utracload(alpha,t_user,kstep,kinc,times,noel,npt, $ coords,dircos,jltyp,surface_name) c================================================================== c user subroutine for traction load c================================================================== * UnusedArgument alpha meng * UnusedArgument t_user meng * UnusedArgument kstep meng * UnusedArgument kinc meng * UnusedArgument times meng * UnusedArgument noel meng * UnusedArgument npt meng * UnusedArgument coords meng * UnusedArgument dircos meng * UnusedArgument jltyp meng * UnusedArgument surface_name meng c include 'aba_param.inc' c dimension t_user(3),times(*),coords(*), dircos(3,*) character*80 surface_name c c call stdu_callallutils('USER SUBROUTINE UTRACLOAD IS MISSING') c if(coords(3).gt.2.0.and.coords(3).lt.2.3) then IROAD=2 else if(coords(3).gt.3.3.and.coords(3).lt.3.6) then IROAD=2 else if(coords(3).gt.8.6.and.coords(3).lt.8.9) then IROAD=1 else if(coords(3).gt.9.9.and.coords(3).lt.10.2) then IROAD=1 endif C IF(IROAD.EQ.1) THEN C To add more vehicles on road 1 include C any new vehicle definitions in this part C--------------- ST1R=0.+TIME(1)*19. FI1R=1.+TIME(1)*19. C ST3R=10.+TIME(1)*19. FI3R=11.+TIME(1)*19. C ST4R=-10.+TIME(1)*19. FI4R=-9.+TIME(1)*19. C C------------------The 5. is the spacing between the Rear and Front C tyres. Can be changed for each vehicle. ST1F=ST1R+3.5 FI1F=FI1R+3.5 C ST3F=ST3R+4. FI3F=FI3R+4. C ST4F=ST4R+4. FI4F=FI4R+4. C ELSE C C-----------------Minus sign preceding the TIME(1) and the C adjusting of the starting value (0, 1) to (19,20) resp. C makes the vehicle 2 travel in the opposite direction. C C To add more vehicles on road 2 include C any new vehicle definitions in this part C--------------- C ST2R=19.-2.*TIME(1)*19. FI2R=20.-2.*TIME(1)*19. C ST2F=ST2R+3. FI2F=FI2R+3. ENDIF C ALPHA=0. C C---------------ROAD 1 VEHICLE 1 REAR C C ******** Note that the load on each pair of tyres can be different C C There are 2 scale factors being applied to the tyre load C 200. here in the subroutine and 100 in the magnitude. C C So the total load is 200 * 100. To avoid confusion you C could set ALPHA = 1 here and the use the magnitude to control loading. C C======================================================================== C &&&&&& Loop C======================================================================== C C Extend this for more vehicles and vehicles with more tyres C if(COORDS(1).GE.ST1R.AND.COORDS(1).LE.FI1R)THEN ALPHA=100.0 C write(6,900)COORDS(1),ST,FI,F ELSE IF(COORDS(1).ge.ST1F.AND.COORDS(1).LE.FI1F) THEN C C-------------FOR UNIFORM LOADING. ALPHA=100.0 else if(COORDS(1).GE.ST2R.AND.COORDS(1).LE.FI2R)THEN ALPHA=100.0 C write(6,900)COORDS(1),ST,FI,F ELSE IF(COORDS(1).ge.ST2F.AND.COORDS(1).LE.FI2F) THEN C C-------------FOR UNIFORM LOADING. ALPHA=100.0 C else if(COORDS(1).GE.ST3R.AND.COORDS(1).LE.FI3R)THEN ALPHA=150.0 C write(6,900)COORDS(1),ST,FI,F ELSE IF(COORDS(1).ge.ST3F.AND.COORDS(1).LE.FI3F) THEN C C-------------FOR UNIFORM LOADING. ALPHA=150.0 C------------ FOR PARABOLIC DISTRIBUTION OVER THE LOADED REGION C WITH A MAXIMUM VALUE OF 1. C C ALPHA=(COORDS(1) - ST) * (FI - COORDS(1) / 25. C C write(6,910)COORDS(1),ST,FI,F C else if(COORDS(1).GE.ST4R.AND.COORDS(1).LE.FI4R)THEN ALPHA=150.0 c write(6,900)COORDS(1),ST4R,FI4R,F ELSE IF(COORDS(1).ge.ST4F.AND.COORDS(1).LE.FI4F) THEN C ALPHA=150.0 ENDIF C t_user(1)=0.0 t_user(2)=0.0 t_user(3)=1.0 C return end