/[PAMELA software]/DarthVader/TrackerLevel2/src/F77/grkuta.f
ViewVC logotype

Diff of /DarthVader/TrackerLevel2/src/F77/grkuta.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.7 by pam-fi, Tue Jan 15 14:23:55 2008 UTC revision 1.8 by pam-fi, Wed Mar 5 17:00:20 2008 UTC
# Line 254  C      CALL GUFLD(XYZT,F) Line 254  C      CALL GUFLD(XYZT,F)
254  *      *    
255  *      *    
256    
257  **********************************************************************  c$$$**********************************************************************
258  *  c$$$*
259  *  c$$$*
260  *     routine per tracciare la particella di uno STEP  c$$$*     routine per tracciare la particella di uno STEP
261  *     *** extended version ***  c$$$*     *** extended version ***
262  *     it return also the track-length  c$$$*     it return also the track-length
263  *  c$$$*
264        SUBROUTINE GRKUTA2 (CHARGE,STEP,VECT,VOUT)  c$$$      SUBROUTINE GRKUTA2 (CHARGE,STEP,VECT,VOUT)
265  C.  c$$$C.
266  C.    ******************************************************************  c$$$C.    ******************************************************************
267  C.    *                                                                *  c$$$C.    *                                                                *
268  C.    *  Runge-Kutta method for tracking a particle through a magnetic *  c$$$C.    *  Runge-Kutta method for tracking a particle through a magnetic *
269  C.    *  field. Uses Nystroem algorithm (See Handbook Nat. Bur. of     *  c$$$C.    *  field. Uses Nystroem algorithm (See Handbook Nat. Bur. of     *
270  C.    *  Standards, procedure 25.5.20)                                 *  c$$$C.    *  Standards, procedure 25.5.20)                                 *
271  C.    *                                                                *  c$$$C.    *                                                                *
272  C.    *  Input parameters                                              *  c$$$C.    *  Input parameters                                              *
273  C.    *       CHARGE    Particle charge                                *  c$$$C.    *       CHARGE    Particle charge                                *
274  C.    *       STEP      Step size                                      *  c$$$C.    *       STEP      Step size                                      *
275  C.    *       VECT      Initial co-ords,direction cosines,momentum     *  c$$$C.    *       VECT      Initial co-ords,direction cosines,momentum     *
276  C.    *  Output parameters                                             *  c$$$C.    *  Output parameters                                             *
277  C.    *       VOUT      Output co-ords,direction cosines,momentum      *  c$$$C.    *       VOUT      Output co-ords,direction cosines,momentum      *
278  C.    *  User routine called                                           *  c$$$C.    *  User routine called                                           *
279  C.    *       CALL GUFLD(X,F)                                          *  c$$$C.    *       CALL GUFLD(X,F)                                          *
280  C.    *                                                                *  c$$$C.    *                                                                *
281  C.    *    ==>Called by : <USER>, GUSWIM                               *  c$$$C.    *    ==>Called by : <USER>, GUSWIM                               *
282  C.    *       Authors    R.Brun, M.Hansroul  *********                 *  c$$$C.    *       Authors    R.Brun, M.Hansroul  *********                 *
283  C.    *                  V.Perevoztchikov (CUT STEP implementation)    *  c$$$C.    *                  V.Perevoztchikov (CUT STEP implementation)    *
284  C.    *                                                                *  c$$$C.    *                                                                *
285  C.    *                                                                *  c$$$C.    *                                                                *
286  C.    ******************************************************************  c$$$C.    ******************************************************************
287  C.  c$$$C.
288        IMPLICIT DOUBLE PRECISION(A-H,O-Z)  c$$$      IMPLICIT DOUBLE PRECISION(A-H,O-Z)
289  *  c$$$*
290        REAL VVV(3),FFF(3)  c$$$      REAL VVV(3),FFF(3)
291        REAL*8 CHARGE, STEP, VECT(*), VOUT(*), F(4)  c$$$      REAL*8 CHARGE, STEP, VECT(*), VOUT(*), F(4)
292        REAL*8 XYZT(3), XYZ(3), X, Y, Z, XT, YT, ZT  c$$$      REAL*8 XYZT(3), XYZ(3), X, Y, Z, XT, YT, ZT
293        DIMENSION SECXS(4),SECYS(4),SECZS(4),HXP(3)  c$$$      DIMENSION SECXS(4),SECYS(4),SECZS(4),HXP(3)
294        EQUIVALENCE (X,XYZ(1)),(Y,XYZ(2)),(Z,XYZ(3)),  c$$$      EQUIVALENCE (X,XYZ(1)),(Y,XYZ(2)),(Z,XYZ(3)),
295       +            (XT,XYZT(1)),(YT,XYZT(2)),(ZT,XYZT(3))  c$$$     +            (XT,XYZT(1)),(YT,XYZT(2)),(ZT,XYZT(3))
296  *  c$$$*
297        PARAMETER (MAXIT = 1992, MAXCUT = 11)  c$$$      PARAMETER (MAXIT = 1992, MAXCUT = 11)
298        PARAMETER (EC=2.9979251D-4,DLT=1D-4,DLT32=DLT/32)  c$$$      PARAMETER (EC=2.9979251D-4,DLT=1D-4,DLT32=DLT/32)
299        PARAMETER (ZERO=0, ONE=1, TWO=2, THREE=3)  c$$$      PARAMETER (ZERO=0, ONE=1, TWO=2, THREE=3)
300        PARAMETER (THIRD=ONE/THREE, HALF=ONE/TWO)  c$$$      PARAMETER (THIRD=ONE/THREE, HALF=ONE/TWO)
301        PARAMETER (PISQUA=.986960440109D+01)  c$$$      PARAMETER (PISQUA=.986960440109D+01)
302        PARAMETER (IX=1,IY=2,IZ=3,IPX=4,IPY=5,IPZ=6)  c$$$      PARAMETER (IX=1,IY=2,IZ=3,IPX=4,IPY=5,IPZ=6)
303    c$$$
304  *     track length  c$$$*     track length
305        REAL*8 DL  c$$$      REAL*8 DL
306    c$$$
307  *.  c$$$*.
308  *.    ------------------------------------------------------------------  c$$$*.    ------------------------------------------------------------------
309  *.  c$$$*.
310  *             This constant is for units CM,GEV/C and KGAUSS  c$$$*             This constant is for units CM,GEV/C and KGAUSS
311  *  c$$$*
312        ITER = 0  c$$$      ITER = 0
313        NCUT = 0  c$$$      NCUT = 0
314        DO 10 J=1,8  c$$$      DO 10 J=1,8
315           VOUT(J)=VECT(J)  c$$$         VOUT(J)=VECT(J)
316     10 CONTINUE  c$$$   10 CONTINUE
317        PINV   = EC * CHARGE / VECT(7)  c$$$      PINV   = EC * CHARGE / VECT(7)
318        TL = 0.  c$$$      TL = 0.
319        H      = STEP  c$$$      H      = STEP
320          c$$$      
321  c      print*,'===================== START GRKUTA2'  c$$$c      print*,'===================== START GRKUTA2'
322          c$$$      
323  *  c$$$*
324  *  c$$$*
325     20 REST  = STEP-TL  c$$$   20 REST  = STEP-TL
326        IF (DABS(H).GT.DABS(REST)) H = REST  c$$$      IF (DABS(H).GT.DABS(REST)) H = REST
327        DO I=1,3  c$$$      DO I=1,3
328         VVV(I)=SNGL(VOUT(I))  c$$$       VVV(I)=SNGL(VOUT(I))
329        ENDDO  c$$$      ENDDO
330          c$$$      
331        CALL GUFLD(VVV,FFF)  c$$$      CALL GUFLD(VVV,FFF)
332  *      print*,'GRKUTA Bx,By,Bz: ',(FFF(i),i=1,3)  c$$$*      print*,'GRKUTA Bx,By,Bz: ',(FFF(i),i=1,3)
333        DO I=1,3  c$$$      DO I=1,3
334         F(I)=DBLE(FFF(I))  c$$$       F(I)=DBLE(FFF(I))
335        ENDDO  c$$$      ENDDO
336  *  c$$$*
337  *             Start of integration  c$$$*             Start of integration
338  *  c$$$*
339        X      = VOUT(1)  c$$$      X      = VOUT(1)
340        Y      = VOUT(2)  c$$$      Y      = VOUT(2)
341        Z      = VOUT(3)  c$$$      Z      = VOUT(3)
342        A      = VOUT(4)  c$$$      A      = VOUT(4)
343        B      = VOUT(5)  c$$$      B      = VOUT(5)
344        C      = VOUT(6)  c$$$      C      = VOUT(6)
345    c$$$
346        DL     = VOUT(8)  c$$$      DL     = VOUT(8)
347    c$$$
348  *  c$$$*
349        H2     = HALF * H  c$$$      H2     = HALF * H
350        H4     = HALF * H2  c$$$      H4     = HALF * H2
351        PH     = PINV * H  c$$$      PH     = PINV * H
352        PH2    = HALF * PH  c$$$      PH2    = HALF * PH
353        SECXS(1) = (B * F(3) - C * F(2)) * PH2  c$$$      SECXS(1) = (B * F(3) - C * F(2)) * PH2
354        SECYS(1) = (C * F(1) - A * F(3)) * PH2  c$$$      SECYS(1) = (C * F(1) - A * F(3)) * PH2
355        SECZS(1) = (A * F(2) - B * F(1)) * PH2  c$$$      SECZS(1) = (A * F(2) - B * F(1)) * PH2
356        ANG2 = (SECXS(1)**2 + SECYS(1)**2 + SECZS(1)**2)  c$$$      ANG2 = (SECXS(1)**2 + SECYS(1)**2 + SECZS(1)**2)
357        IF (ANG2.GT.PISQUA) GO TO 40  c$$$      IF (ANG2.GT.PISQUA) GO TO 40
358        DXT    = H2 * A + H4 * SECXS(1)  c$$$      DXT    = H2 * A + H4 * SECXS(1)
359        DYT    = H2 * B + H4 * SECYS(1)  c$$$      DYT    = H2 * B + H4 * SECYS(1)
360        DZT    = H2 * C + H4 * SECZS(1)  c$$$      DZT    = H2 * C + H4 * SECZS(1)
361        XT     = X + DXT  c$$$      XT     = X + DXT
362        YT     = Y + DYT  c$$$      YT     = Y + DYT
363        ZT     = Z + DZT  c$$$      ZT     = Z + DZT
364  *  c$$$*
365  *              Second intermediate point  c$$$*              Second intermediate point
366  *  c$$$*
367        EST = DABS(DXT)+DABS(DYT)+DABS(DZT)  c$$$      EST = DABS(DXT)+DABS(DYT)+DABS(DZT)
368        IF (EST.GT.H) GO TO 30  c$$$      IF (EST.GT.H) GO TO 30
369    c$$$
370        DO I=1,3  c$$$      DO I=1,3
371         VVV(I)=SNGL(XYZT(I))  c$$$       VVV(I)=SNGL(XYZT(I))
372        ENDDO  c$$$      ENDDO
373        CALL GUFLD(VVV,FFF)  c$$$      CALL GUFLD(VVV,FFF)
374        DO I=1,3  c$$$      DO I=1,3
375         F(I)=DBLE(FFF(I))  c$$$       F(I)=DBLE(FFF(I))
376        ENDDO      c$$$      ENDDO    
377  C      CALL GUFLD(XYZT,F)  c$$$C      CALL GUFLD(XYZT,F)
378        AT     = A + SECXS(1)  c$$$      AT     = A + SECXS(1)
379        BT     = B + SECYS(1)  c$$$      BT     = B + SECYS(1)
380        CT     = C + SECZS(1)  c$$$      CT     = C + SECZS(1)
381  *  c$$$*
382        SECXS(2) = (BT * F(3) - CT * F(2)) * PH2  c$$$      SECXS(2) = (BT * F(3) - CT * F(2)) * PH2
383        SECYS(2) = (CT * F(1) - AT * F(3)) * PH2  c$$$      SECYS(2) = (CT * F(1) - AT * F(3)) * PH2
384        SECZS(2) = (AT * F(2) - BT * F(1)) * PH2  c$$$      SECZS(2) = (AT * F(2) - BT * F(1)) * PH2
385        AT     = A + SECXS(2)  c$$$      AT     = A + SECXS(2)
386        BT     = B + SECYS(2)  c$$$      BT     = B + SECYS(2)
387        CT     = C + SECZS(2)  c$$$      CT     = C + SECZS(2)
388        SECXS(3) = (BT * F(3) - CT * F(2)) * PH2  c$$$      SECXS(3) = (BT * F(3) - CT * F(2)) * PH2
389        SECYS(3) = (CT * F(1) - AT * F(3)) * PH2  c$$$      SECYS(3) = (CT * F(1) - AT * F(3)) * PH2
390        SECZS(3) = (AT * F(2) - BT * F(1)) * PH2  c$$$      SECZS(3) = (AT * F(2) - BT * F(1)) * PH2
391        DXT    = H * (A + SECXS(3))  c$$$      DXT    = H * (A + SECXS(3))
392        DYT    = H * (B + SECYS(3))  c$$$      DYT    = H * (B + SECYS(3))
393        DZT    = H * (C + SECZS(3))  c$$$      DZT    = H * (C + SECZS(3))
394        XT     = X + DXT  c$$$      XT     = X + DXT
395        YT     = Y + DYT  c$$$      YT     = Y + DYT
396        ZT     = Z + DZT  c$$$      ZT     = Z + DZT
397        AT     = A + TWO*SECXS(3)  c$$$      AT     = A + TWO*SECXS(3)
398        BT     = B + TWO*SECYS(3)  c$$$      BT     = B + TWO*SECYS(3)
399        CT     = C + TWO*SECZS(3)  c$$$      CT     = C + TWO*SECZS(3)
400  *  c$$$*
401        EST = ABS(DXT)+ABS(DYT)+ABS(DZT)  c$$$      EST = ABS(DXT)+ABS(DYT)+ABS(DZT)
402        IF (EST.GT.2.*ABS(H)) GO TO 30  c$$$      IF (EST.GT.2.*ABS(H)) GO TO 30
403    c$$$
404        DO I=1,3  c$$$      DO I=1,3
405         VVV(I)=SNGL(XYZT(I))  c$$$       VVV(I)=SNGL(XYZT(I))
406        ENDDO  c$$$      ENDDO
407        CALL GUFLD(VVV,FFF)  c$$$      CALL GUFLD(VVV,FFF)
408        DO I=1,3  c$$$      DO I=1,3
409         F(I)=DBLE(FFF(I))  c$$$       F(I)=DBLE(FFF(I))
410        ENDDO  c$$$      ENDDO
411  C      CALL GUFLD(XYZT,F)  c$$$C      CALL GUFLD(XYZT,F)
412  *        c$$$*      
413        Z      = Z + (C + (SECZS(1) + SECZS(2) + SECZS(3)) * THIRD) * H  c$$$      Z      = Z + (C + (SECZS(1) + SECZS(2) + SECZS(3)) * THIRD) * H
414        Y      = Y + (B + (SECYS(1) + SECYS(2) + SECYS(3)) * THIRD) * H  c$$$      Y      = Y + (B + (SECYS(1) + SECYS(2) + SECYS(3)) * THIRD) * H
415        X      = X + (A + (SECXS(1) + SECXS(2) + SECXS(3)) * THIRD) * H  c$$$      X      = X + (A + (SECXS(1) + SECXS(2) + SECXS(3)) * THIRD) * H
416  *  c$$$*
417        SECXS(4) = (BT*F(3) - CT*F(2))* PH2  c$$$      SECXS(4) = (BT*F(3) - CT*F(2))* PH2
418        SECYS(4) = (CT*F(1) - AT*F(3))* PH2  c$$$      SECYS(4) = (CT*F(1) - AT*F(3))* PH2
419        SECZS(4) = (AT*F(2) - BT*F(1))* PH2  c$$$      SECZS(4) = (AT*F(2) - BT*F(1))* PH2
420        A      = A+(SECXS(1)+SECXS(4)+TWO * (SECXS(2)+SECXS(3))) * THIRD  c$$$      A      = A+(SECXS(1)+SECXS(4)+TWO * (SECXS(2)+SECXS(3))) * THIRD
421        B      = B+(SECYS(1)+SECYS(4)+TWO * (SECYS(2)+SECYS(3))) * THIRD  c$$$      B      = B+(SECYS(1)+SECYS(4)+TWO * (SECYS(2)+SECYS(3))) * THIRD
422        C      = C+(SECZS(1)+SECZS(4)+TWO * (SECZS(2)+SECZS(3))) * THIRD  c$$$      C      = C+(SECZS(1)+SECZS(4)+TWO * (SECZS(2)+SECZS(3))) * THIRD
423  *  c$$$*
424        EST    = ABS(SECXS(1)+SECXS(4) - (SECXS(2)+SECXS(3)))  c$$$      EST    = ABS(SECXS(1)+SECXS(4) - (SECXS(2)+SECXS(3)))
425       ++        ABS(SECYS(1)+SECYS(4) - (SECYS(2)+SECYS(3)))  c$$$     ++        ABS(SECYS(1)+SECYS(4) - (SECYS(2)+SECYS(3)))
426       ++        ABS(SECZS(1)+SECZS(4) - (SECZS(2)+SECZS(3)))  c$$$     ++        ABS(SECZS(1)+SECZS(4) - (SECZS(2)+SECZS(3)))
427  *  c$$$*
428        IF (EST.GT.DLT .AND. ABS(H).GT.1.E-4) GO TO 30  c$$$      IF (EST.GT.DLT .AND. ABS(H).GT.1.E-4) GO TO 30
429    c$$$
430        ITER = ITER + 1  c$$$      ITER = ITER + 1
431        NCUT = 0  c$$$      NCUT = 0
432  *               If too many iterations, go to HELIX  c$$$*               If too many iterations, go to HELIX
433        IF (ITER.GT.MAXIT) GO TO 40  c$$$      IF (ITER.GT.MAXIT) GO TO 40
434  *  c$$$*
435        DL     = VOUT(8) +  c$$$      DL     = VOUT(8) +
436       $     DSQRT( 0  c$$$     $     DSQRT( 0
437       $     + (X-VOUT(1))**2  c$$$     $     + (X-VOUT(1))**2
438       $     + (Y-VOUT(2))**2  c$$$     $     + (Y-VOUT(2))**2
439       $     + (Z-VOUT(3))**2  c$$$     $     + (Z-VOUT(3))**2
440       $     )  c$$$     $     )
441  c      print*,'- ',VOUT(3),z,VOUT(1),x,VOUT(2),y,DL  c$$$c      print*,'- ',VOUT(3),z,VOUT(1),x,VOUT(2),y,DL
442  *  c$$$*
443        TL = TL + H  c$$$      TL = TL + H
444        IF (EST.LT.(DLT32)) THEN  c$$$      IF (EST.LT.(DLT32)) THEN
445           H = H*TWO  c$$$         H = H*TWO
446        ENDIF  c$$$      ENDIF
447        CBA    = ONE/ SQRT(A*A + B*B + C*C)  c$$$      CBA    = ONE/ SQRT(A*A + B*B + C*C)
448        VOUT(1) = X  c$$$      VOUT(1) = X
449        VOUT(2) = Y  c$$$      VOUT(2) = Y
450        VOUT(3) = Z  c$$$      VOUT(3) = Z
451        VOUT(4) = CBA*A  c$$$      VOUT(4) = CBA*A
452        VOUT(5) = CBA*B  c$$$      VOUT(5) = CBA*B
453        VOUT(6) = CBA*C  c$$$      VOUT(6) = CBA*C
454        VOUT(8) = DL  c$$$      VOUT(8) = DL
455        REST = STEP - TL  c$$$      REST = STEP - TL
456        IF (STEP.LT.0.) REST = -REST  c$$$      IF (STEP.LT.0.) REST = -REST
457        IF (REST .GT. 1.E-5*DABS(STEP)) GO TO 20  c$$$      IF (REST .GT. 1.E-5*DABS(STEP)) GO TO 20
458  *  c$$$*
459        GO TO 999  c$$$      GO TO 999
460  *  c$$$*
461  **              CUT STEP  c$$$**              CUT STEP
462     30 NCUT = NCUT + 1  c$$$   30 NCUT = NCUT + 1
463  *               If too many cuts , go to HELIX  c$$$*               If too many cuts , go to HELIX
464        IF (NCUT.GT.MAXCUT)       GO TO 40  c$$$      IF (NCUT.GT.MAXCUT)       GO TO 40
465        H = H*HALF  c$$$      H = H*HALF
466        GO TO 20  c$$$      GO TO 20
467  *  c$$$*
468  **              ANGLE TOO BIG, USE HELIX  c$$$**              ANGLE TOO BIG, USE HELIX
469     40 F1  = F(1)  c$$$   40 F1  = F(1)
470        F2  = F(2)  c$$$      F2  = F(2)
471        F3  = F(3)  c$$$      F3  = F(3)
472        F4  = DSQRT(F1**2+F2**2+F3**2)  c$$$      F4  = DSQRT(F1**2+F2**2+F3**2)
473        RHO = -F4*PINV  c$$$      RHO = -F4*PINV
474        TET = RHO * STEP  c$$$      TET = RHO * STEP
475        IF(TET.NE.0.) THEN  c$$$      IF(TET.NE.0.) THEN
476           HNORM = ONE/F4  c$$$         HNORM = ONE/F4
477           F1 = F1*HNORM  c$$$         F1 = F1*HNORM
478           F2 = F2*HNORM  c$$$         F2 = F2*HNORM
479           F3 = F3*HNORM  c$$$         F3 = F3*HNORM
480  *  c$$$*
481           HXP(1) = F2*VECT(IPZ) - F3*VECT(IPY)  c$$$         HXP(1) = F2*VECT(IPZ) - F3*VECT(IPY)
482           HXP(2) = F3*VECT(IPX) - F1*VECT(IPZ)  c$$$         HXP(2) = F3*VECT(IPX) - F1*VECT(IPZ)
483           HXP(3) = F1*VECT(IPY) - F2*VECT(IPX)  c$$$         HXP(3) = F1*VECT(IPY) - F2*VECT(IPX)
484    c$$$
485           HP = F1*VECT(IPX) + F2*VECT(IPY) + F3*VECT(IPZ)  c$$$         HP = F1*VECT(IPX) + F2*VECT(IPY) + F3*VECT(IPZ)
486  *  c$$$*
487           RHO1 = ONE/RHO  c$$$         RHO1 = ONE/RHO
488           SINT = DSIN(TET)  c$$$         SINT = DSIN(TET)
489           COST = TWO*DSIN(HALF*TET)**2  c$$$         COST = TWO*DSIN(HALF*TET)**2
490  *  c$$$*
491           G1 = SINT*RHO1  c$$$         G1 = SINT*RHO1
492           G2 = COST*RHO1  c$$$         G2 = COST*RHO1
493           G3 = (TET-SINT) * HP*RHO1  c$$$         G3 = (TET-SINT) * HP*RHO1
494           G4 = -COST  c$$$         G4 = -COST
495           G5 = SINT  c$$$         G5 = SINT
496           G6 = COST * HP  c$$$         G6 = COST * HP
497    c$$$
498           VOUT(IX) = VECT(IX) + (G1*VECT(IPX) + G2*HXP(1) + G3*F1)  c$$$         VOUT(IX) = VECT(IX) + (G1*VECT(IPX) + G2*HXP(1) + G3*F1)
499           VOUT(IY) = VECT(IY) + (G1*VECT(IPY) + G2*HXP(2) + G3*F2)  c$$$         VOUT(IY) = VECT(IY) + (G1*VECT(IPY) + G2*HXP(2) + G3*F2)
500           VOUT(IZ) = VECT(IZ) + (G1*VECT(IPZ) + G2*HXP(3) + G3*F3)  c$$$         VOUT(IZ) = VECT(IZ) + (G1*VECT(IPZ) + G2*HXP(3) + G3*F3)
501    c$$$
502           VOUT(IPX) = VECT(IPX) + (G4*VECT(IPX) + G5*HXP(1) + G6*F1)  c$$$         VOUT(IPX) = VECT(IPX) + (G4*VECT(IPX) + G5*HXP(1) + G6*F1)
503           VOUT(IPY) = VECT(IPY) + (G4*VECT(IPY) + G5*HXP(2) + G6*F2)  c$$$         VOUT(IPY) = VECT(IPY) + (G4*VECT(IPY) + G5*HXP(2) + G6*F2)
504           VOUT(IPZ) = VECT(IPZ) + (G4*VECT(IPZ) + G5*HXP(3) + G6*F3)  c$$$         VOUT(IPZ) = VECT(IPZ) + (G4*VECT(IPZ) + G5*HXP(3) + G6*F3)
505  *  c$$$*
506        ELSE  c$$$      ELSE
507           VOUT(IX) = VECT(IX) + STEP*VECT(IPX)  c$$$         VOUT(IX) = VECT(IX) + STEP*VECT(IPX)
508           VOUT(IY) = VECT(IY) + STEP*VECT(IPY)  c$$$         VOUT(IY) = VECT(IY) + STEP*VECT(IPY)
509           VOUT(IZ) = VECT(IZ) + STEP*VECT(IPZ)  c$$$         VOUT(IZ) = VECT(IZ) + STEP*VECT(IPZ)
510  *  c$$$*
511        ENDIF  c$$$      ENDIF
512  *     TEMP !!! TEMP !!! TEMP !!! TEMP !!! TEMP !!! TEMP !!!  c$$$*     TEMP !!! TEMP !!! TEMP !!! TEMP !!! TEMP !!! TEMP !!!
513  *     devo mettere la lunghezza dell'elica!!!!!!!!!!!!!!  c$$$*     devo mettere la lunghezza dell'elica!!!!!!!!!!!!!!
514  *     ma non mi riesce :-(  c$$$*     ma non mi riesce :-(
515        VOUT(8) = DSQRT( 0  c$$$      VOUT(8) = DSQRT( 0
516       $     +(VOUT(IX)-VECT(IX))**2  c$$$     $     +(VOUT(IX)-VECT(IX))**2
517       $     +(VOUT(IY)-VECT(IY))**2  c$$$     $     +(VOUT(IY)-VECT(IY))**2
518       $     +(VOUT(IZ)-VECT(IZ))**2  c$$$     $     +(VOUT(IZ)-VECT(IZ))**2
519       $     )  c$$$     $     )
520  c      print*,'WARNING: GRKUTA2 --> '  c$$$c      print*,'WARNING: GRKUTA2 --> '
521  c     $     ,'helix :-( ... length evaluated with straight line'  c$$$c     $     ,'helix :-( ... length evaluated with straight line'
522    c$$$
523  *  c$$$*
524    999 END  c$$$  999 END
525  *      c$$$*    
526  *      c$$$*    
527    
528  **********************************************************************  **********************************************************************
529  *      *    

Legend:
Removed from v.1.7  
changed lines
  Added in v.1.8

  ViewVC Help
Powered by ViewVC 1.1.23