4569846498

01.05.2017 Views

Appendix B: Fortran tyre model subroutines 483 C Critical Slip Angle (Max Lateral Force) - degrees in User Array ALPHA_C PAR(1) C Curvature Factor (exponential function to peak slip angle) Ay PAR(2) C Scale Factor for Lateral Force at Rated Load By PAR(3) C Rated Load (N) R_LOAD PAR(4) C Diminution of Scale Factor with load dB_dFz PAR(5) C Max Slip angle ALPHA_M PAR(6) C Critical Slip Ratio (Max Longitudinal Force) % SLIP_C PAR(7) C Curvature Factor (exponential function to peak slip ratio) Ax PAR(8) C Max Slip Ratio SLIP_M PAR(9) C -- Debug only - check we’re getting what we think -- C IF ( IFLAG .eq. .TRUE. ) THEN C WRITE(*,*) ‘ALPHA_C ’, ALPHA_C, ‘, Ay ’, Ay, ‘, By ’, By C WRITE(*,*) ‘R_LOAD’, R_LOAD, ‘, dB_dFz ’, dB_dFz C WRITE(*,*) ‘ALPHA_M ’, ALPHA_M, ‘, SLIP_C ’, SLIP_C, ‘, Ax ’, Ax C WRITE(*,*) ‘SLIP_M ’, SLIP_M C ENDIF C Tyre Modelling Proper Begins C Initialize force values C FX0.D0 FY0.D0 FZ0.D0 TX0.D0 TY0.D0 TZ0.D0 C -- Wheel off the ground? Easy – everything zero -- IF(DEFL .LE. 0.D0) THEN GOTO 1000 ENDIF C Normal Loads; simple calculations as with sample tirsub.f; C Penetrations to hub are not accounted for. C -- Calculate normal loads due to stiffness (always .LE. zero) -- FZDEFL-DEFL*CZ C -- Calculate normal loads due to damping -- FZDAMP-2.D0*SQRT(AMASS*CZ)*DZ*(DEFLD) C -- Ease up on the damping force scale factor at small deflections -- DELMAX0.01*R2 IF (DEFL .LE. DELMAX) THEN CALL STEP(DEFL, ZERO, ZERO, DELMAX, ONE, IORD, SCFACT, ERFLG)

484 Multibody Systems Approach to Vechicle Dynamics FZDAMPSCFACT*FZDAMP ENDIF C -- Sum for total normal force -- FZMIN (0.0D0, (FZDEFLFZDAMP) ) C Longitudinal Loads C C ************* FIALA CALCULATIONS ************* C C C C Calculate critical longitudinal slip value C C C SSTARABS(U*FZ/(2.D0*CS)) C C C C Compute longitudinal force (fx) C C C IF(ABS(SLIP) .LE. ABS(SSTAR)) THEN C FX-CS*SLIP C ELSE C FX1U*ABS(FZ) C FX2(U*FZ)**2/(4.D0*ABS(SLIP)*CS) C FX-(FX1-FX2)*SIGN(1.0D0,SLIP) C ENDIF C C C C ******************************************** C -- We’re working in percent -- SLIPSLIP*100 IF(ABS(SLIP) .LE. ABS(SLIP_C)) THEN C -- Exponential Rise (1-e^-x) below critical slip ratio -- FX(1-EXP(-Ax*ABS(SLIP)/SLIP_C))*U*FZ*SIGN(1.0D0,SLIP) ELSE C -- Linear Decay to Sliding Friction above critical slip ratio -- C -- MU_S Apparently not passed through? -- C FX-FZ*(1-EXP(-Ax))*(MU-(ABS(SLIP)-SLIP_C)/SLIP_M* (MU-MU_S)) C FXFX*SIGN(1.0D0,SLIP) C -- Try U instead? -- FXFZ*(1-EXP(-Ax))*U*SIGN(1.0D0,SLIP) ENDIF C Lateral force and aligning torque (FY & TZ) C -- Scale Factor Diminished with Load FZ -- BBy(ABS(FZ)R_LOAD)*dB_dFz C -- We’re working in degrees -- ALPHAALPHA*45/ATAN(1.0) IF(ABS(ALPHA) .LE. 1.D-10) THEN FY0.D0 TZ0.D0 ELSE IF(ABS(ALPHA) .LE. ALPHA_C) THEN C -- As for longitudinal forces, Exponential Rise (1-e^-x) below C critical slip angle -- C -- This line contains an even number of minus-sign errors -- FY(1-EXP(-Ay*ABS(ALPHA)/ALPHA_C))*U*B*FZ*SIGN (1.0D0,ALPHA) ELSE

Appendix B: Fortran tyre model subroutines 483<br />

C<br />

Critical Slip Angle (Max Lateral Force) - degrees in<br />

User Array<br />

ALPHA_C PAR(1)<br />

C<br />

Curvature Factor (exponential function to peak slip<br />

angle)<br />

Ay PAR(2)<br />

C<br />

Scale Factor for Lateral Force at Rated Load<br />

By PAR(3)<br />

C<br />

Rated Load (N)<br />

R_LOAD PAR(4)<br />

C<br />

Diminution of Scale Factor with load<br />

dB_dFz PAR(5)<br />

C<br />

Max Slip angle<br />

ALPHA_M PAR(6)<br />

C Critical Slip Ratio (Max Longitudinal Force) %<br />

SLIP_C PAR(7)<br />

C<br />

Curvature Factor (exponential function to peak slip ratio)<br />

Ax PAR(8)<br />

C<br />

Max Slip Ratio<br />

SLIP_M PAR(9)<br />

C -- Debug only - check we’re getting what we think --<br />

C IF ( IFLAG .eq. .TRUE. ) THEN<br />

C WRITE(*,*) ‘ALPHA_C ’, ALPHA_C, ‘, Ay ’, Ay, ‘, By ’, By<br />

C WRITE(*,*) ‘R_LOAD’, R_LOAD, ‘, dB_dFz ’, dB_dFz<br />

C WRITE(*,*) ‘ALPHA_M ’, ALPHA_M, ‘, SLIP_C ’, SLIP_C,<br />

‘, Ax ’, Ax<br />

C WRITE(*,*) ‘SLIP_M ’, SLIP_M<br />

C ENDIF<br />

C Tyre Modelling Proper Begins<br />

C Initialize force values<br />

C<br />

FX0.D0<br />

FY0.D0<br />

FZ0.D0<br />

TX0.D0<br />

TY0.D0<br />

TZ0.D0<br />

C -- Wheel off the ground? Easy – everything zero --<br />

IF(DEFL .LE. 0.D0) THEN<br />

GOTO 1000<br />

ENDIF<br />

C Normal Loads; simple calculations as with sample tirsub.f;<br />

C Penetrations to hub are not accounted for.<br />

C -- Calculate normal loads due to stiffness (always .LE. zero) --<br />

FZDEFL-DEFL*CZ<br />

C -- Calculate normal loads due to damping --<br />

FZDAMP-2.D0*SQRT(AMASS*CZ)*DZ*(DEFLD)<br />

C -- Ease up on the damping force scale factor at small deflections --<br />

DELMAX0.01*R2<br />

IF (DEFL .LE. DELMAX) THEN<br />

CALL STEP(DEFL, ZERO, ZERO, DELMAX, ONE, IORD,<br />

SCFACT, ERFLG)

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!