Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
c $Id: saveinfo.f,v 1.7 2002/05/03 00:31:19 weber Exp $
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C
subroutine saveinfo(ind,itag)
c
c Revision : 1.0
c
cinput ind: particle ID
cinput itag: slot for particle to stored (>0) or extracted (<0) from
c
c This subroutine stores the information of the {\tt ind} slot in
c the particle arrays (necessary in case of pauli-blocked collisions)
c The absolute value of {\tt itag} indicates the storage slot to be used.
c For positive values of {\tt itag} the information is stored, for negative
c values it is restored. Currently two slots are available.
C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
c
implicit none
include 'coms.f'
c
integer ind,itag,islot,j
integer lstcollt(2),ncollt(2)
integer charget(2),spint(2),stridt(2)
c origint(2),uidt(2)
real*8 r0t(2),rxt(2),ryt(2),rzt(2),
p r0tt(2),rxtt(2),rytt(2),rztt(2),
@ p0t(2),pxt(2),pyt(2),pzt(2),fmasst(2),tdectime(2),
@ xtotfact(2),tformt(2),p0tdt(2,2),pxtdt(2,2),pytdt(2,2),
@ pztdt(2,2),fmasstdt(2,2)
integer ityptdt(2,2),iso3tdt(2,2)
save
c
if(ind.eq.0) return
c
islot=abs(itag)
c save particle
if(itag.gt.0) then
r0t(islot)=r0(ind)
rxt(islot)=rx(ind)
ryt(islot)=ry(ind)
rzt(islot)=rz(ind)
cpot
r0tt(islot)=r0_t(ind)
rxtt(islot)=rx_t(ind)
rytt(islot)=ry_t(ind)
rztt(islot)=rz_t(ind)
p0t(islot)=p0(ind)
pxt(islot)=px(ind)
pyt(islot)=py(ind)
pzt(islot)=pz(ind)
fmasst(islot)=fmass(ind)
itypt(islot)=ityp(ind)
iso3t(islot)=iso3(ind)
ncollt(islot)=ncoll(ind)
lstcollt(islot)=lstcoll(ind)
origint(islot)=origin(ind)
charget(islot)=charge(ind)
spint(islot)=spin(ind)
tdectime(islot)=dectime(ind)
stridt(islot)=strid(ind)
uidt(islot)=uid(ind)
xtotfact(islot)=xtotfac(ind)
tformt(islot)=tform(ind)
ctd
do 11 j=1,2
p0tdt(j,islot)=p0td(j,ind)
pxtdt(j,islot)=pxtd(j,ind)
pytdt(j,islot)=pytd(j,ind)
pztdt(j,islot)=pztd(j,ind)
fmasstdt(j,islot)=fmasstd(j,ind)
ityptdt(j,islot)=ityptd(j,ind)
iso3tdt(j,islot)=iso3td(j,ind)
11 continue
c ...
elseif(itag.lt.0)then
c restore particle
r0(ind)=r0t(islot)
rx(ind)=rxt(islot)
ry(ind)=ryt(islot)
rz(ind)=rzt(islot)
cpot
r0_t(ind)=r0tt(islot)
rx_t(ind)=rxtt(islot)
ry_t(ind)=rytt(islot)
rz_t(ind)=rztt(islot)
p0(ind)=p0t(islot)
px(ind)=pxt(islot)
py(ind)=pyt(islot)
pz(ind)=pzt(islot)
fmass(ind)=fmasst(islot)
ityp(ind)=itypt(islot)
iso3(ind)=iso3t(islot)
ncoll(ind)=ncollt(islot)
lstcoll(ind)=lstcollt(islot)
origin(ind)=origint(islot)
charge(ind)=charget(islot)
spin(ind)=spint(islot)
dectime(ind)=tdectime(islot)
strid(ind)=stridt(islot)
uid(ind)=uidt(islot)
xtotfac(ind)=xtotfact(islot)
tform(ind)=tformt(islot)
ctd
do 12 j=1,2
p0td(j,ind)=p0tdt(j,islot)
pxtd(j,ind)=pxtdt(j,islot)
pytd(j,ind)=pytdt(j,islot)
pztd(j,ind)=pztdt(j,islot)
fmasstd(j,ind)=fmasstdt(j,islot)
ityptd(j,ind)=ityptdt(j,islot)
iso3td(j,ind)=iso3tdt(j,islot)
12 continue
endif
return
end