4 *=== Cmpips ===========================================================*
6 SUBROUTINE CMPIPS ( NALLD0, STEPID, STEPTT, STEP )
12 *----------------------------------------------------------------------*
14 * Copyright (C) 2005-2006: Alfredo Ferrari *
15 * All rights reserved *
18 * CoMpute Primary Ionization PoSitions: *
20 * Created on 11 november 2005 by Alfredo Ferrari *
23 * Last change on 05-oct-06 by Alfredo Ferrari *
28 *----------------------------------------------------------------------*
34 DIMENSION CUMTTR (0:MXTRCK), RNDVEC (MXALLD), INDVEC (MXALLD)
38 LBGSTP = STEPTT .LT. AZRZRZ
39 * +-------------------------------------------------------------------*
40 * | Beginning of a step:
45 CUMTTR (I) = CUMTTR (I-1) + TTRACK (I)
47 CRVCRR = STEP / CUMTTR (NTRACK)
50 * +-------------------------------------------------------------------*
51 NRNGEN = MIN ( NALLDL, MXALLD ) - NALLD0
52 IF ( NRNGEN .LE. 0 ) RETURN
53 CALL FLRNLP ( RNDVEC, NRNGEN )
54 * The previous line can be substituted by:
55 * DO 1400 I = 1, NRNGEN
56 * RNDVEC (I) = FLRNDM (RNDPOI)
58 CALL RORDIN ( RNDVEC, INDVEC, NRNGEN )
59 * +-------------------------------------------------------------------*
60 * | Loop on primary electrons:
62 TTRACR = ( STEPTT + RNDVEC (I) * STEPID ) / CRVCRR
64 DO 3000 J = NSTAR0, NTRACK
65 IF ( TTRACR .LT. CUMTTR (J) ) THEN
67 REDUC = ( CUMTTR (J) - TTRACR ) / TTRACK (J)
71 CALL FLABRT ( 'CMPIPS', '3000-CONTINUE' )
73 IF ( REDUC .LT. ZERZER .OR. REDUC .GT. ONEONE )
74 & CALL FLABRT ( 'CMPIPS', 'INVALID REDUC' )
76 XALLDL (K) = REDUC * ( XTRACK (NSTART) - XTRACK (NSTART-1) )
78 YALLDL (K) = REDUC * ( YTRACK (NSTART) - YTRACK (NSTART-1) )
80 ZALLDL (K) = REDUC * ( ZTRACK (NSTART) - ZTRACK (NSTART-1) )
84 * +-------------------------------------------------------------------*
86 *=== End of subroutine Cmpips =========================================*