A far more efficient algorithm (by a factor of four) than the Runge-Kutta algorithm is due to Gear [1970]. This is a multistep method, requiring higher order derivatives of to be known. As a consequence, a second order Runge-Kutta algorithm must be used to evaluate the higher order derivatives at time t=0. This was tried for Gaussian systems, and was found to give the correct trajectory 99.5% of the time. The cause of the erroneous trajectories was never resolved. It was thought that the error involved in neglecting was statistically insignificant, however, the value calculated for colour conductivity disagreed with the accepted value by about 10%, or 2 standard errors. When the theory based on a single equilibrium trajectory was developed, it no longer mattered what the initial condition of the system are, so a self-starting method was no longer required.
A listing of the Gear integrator which is 4
order in h follows. The
SPM_quot
1" in the name refers to the fact that a first order differential
equation is being solved. Algorithms are listed in Gear's book for second and
higher order equation. The SPM_quot
Z" refers to the equations of motion being
integrated as the current and thermo-statted system listed as SPM_quot
NORTON".
It was found that in order to efficiently vectorize the code on the Fujitsu
VP100, each subroutine had to be expanded inline at the compilation stage
in order to avoid any recursive data dependencies (procedure integration).
Unfortunately, procedure integration could not be performed on functional
parameters, so the name of the equations of motion function had to be hard
coded into the routine. For similar reasons, the phase space vector
SPM_quot
X" is now passed as a common block, so the only parameters left are
SPM_quot
H" and SPM_quot
NTSTEP". To alter this routine to do anything else only
requires the strings SPM_quot
NORTON", SPM_quot
GAMMAG" and SPM_quot
DIMPS+2" to be
globally changed with a text editor.
C Solve the equations of motion by the 4th order Gear predictor- C corrector method. Gear, C.W. (1971) Numerical Initial Value Problems C in Differential Equations. (Prentice Hall: Englewood Cliffs, N.J.) C This subroutine treats the equations of motion as a 1st order d.e. SUBROUTINE GEAR1Z( H, NTSTEP ) INCLUDE (PARAM) C XT = x(t) = final state after time t = H*NTSTEP. C H = step size C NTSTEP = Number of time steps C n C H n n C Xn = -- (d /dt ) XT C n! C C XnPRED = the predicted values of the above using a truncated Taylor C series INTEGER NTSTEP, I, T DOUBLE PRECISION H, CORR, NORTON DOUBLE PRECISION XT(DIMPS+2), XTPRED(DIMPS+2), X3PRED(DIMPS+2) DOUBLE PRECISION X2(DIMPS+2), X2PRED(DIMPS+2), X3(DIMPS+2) DOUBLE PRECISION X4(DIMPS+2) DOUBLE PRECISION X1(DIMPS+2), X1PRED(DIMPS+2) C Local storage is shared with SETGEG, GEARN, SETGEN COMMON /GSTORE/ XTPRED,X1PRED,X2PRED,X3PRED C Derivatives filled of SETGEG COMMON /GSTORZ/ X1,X2,X3,X4 COMMON /GAMMAG/ XT C Gear coefficients DOUBLE PRECISION F0,F1,F2,F3,F4 PARAMETER( F0=251./720, F1=1, F2=11./12, F3=1./3, F4=1./24) C These statements are required for Procedure Integration on the FACOM DOUBLE PRECISION F(D*NP),V COMMON /FORCE/F,V C Calculation loop DO 2 T=1,NTSTEP C Predictor loop *VOCL LOOP,NOVREC(XTPRED) DO 3 I=1,DIMPS+2 XTPRED(I) = X1(I) + XT(I)+X2(I)+X3(I)+X4(I) X1PRED(I) = X1(I) + & 2 * X2(I) + 3 * X3(I) + 4 * X4(I) X2PRED(I) = X2(I) + 3*X3(I) + 6*X4(I) X3PRED(I) = X3(I) + 4*X4(I) 3 CONTINUE C Evaluation step CALL FORCES(XTPRED) C Corrector loop *VOCL LOOP,NOVREC(XT) DO 4 I=1,DIMPS+2 CORR = NORTON(I,XTPRED) * H - X1PRED(I) XT(I) = XTPRED(I) + F0 * CORR X1(I) = X1PRED(I) + F1 * CORR X2(I) = X2PRED(I) + F2 * CORR X3(I) = X3PRED(I) + F3 * CORR X4(I) = X4(I) + F4 * CORR 4 CONTINUE 2 CONTINUE CALL CUBE( XT) RETURN END