38
39
40
42
43
44
45#include "implicit_f.inc"
46
47
48
49#include "com01_c.inc"
50#include "com04_c.inc"
51#include "param_c.inc"
52
53
54
55 INTEGER WEIGHT(*),LPBY(*),NPBY(NNPBY,*),ISKEW(*),ITAB(*),
56 . KIND(NRBYKIN),IRBKIN_L(*),NRBYKIN_L,NODREAC(*)
57 INTEGER, INTENT(IN) :: NHIER_RBY
58
60 . rby(nrby,*) ,x(3,*) ,v(3,*) ,vr(3,*),skew(*),
61 . fsav(nthvki,*) ,a(3,*),ar(3,*),in(*),ms(*),fthreac(*),freac(*)
62
63
64
65 INTEGER J,K,N,KK,IFAIL,ICOMM,IM
67 . fn, ft,expn,expt
68 my_real,
DIMENSION(:),
ALLOCATABLE ::
69 . crit
70
71 SAVE crit
72
73
74 IF(nrbfail /= 0 .AND. nspmd > 1)THEN
75 ALLOCATE(crit(nrbykin))
76 crit(1:nrbykin) = zero
77 ELSE
78 ALLOCATE(crit(0))
79 END IF
80
81
82 IF (nhier_rby ==0) THEN
83
84
85
86
87
88
89 DO kk=1,nrbykin_l
90 n=irbkin_l(kk)
91 k = kind(n)
92 IF(npby(7,n)>0.AND.npby(4,n)/=0)THEN
93 j = ninter+nrwall+n
94 ifail = npby(18,n)
95 fn = rby(26,n)
96 ft = rby(27,n)
97 expn = rby(28,n)
98 expt = rby(29,n)
99
100 CALL rgbodv(v ,vr ,x ,rby(1,n) ,lpby(k),
101 2 npby(1,n),skew ,iskew ,fsav(1,j) ,itab ,
102 3 weight ,a ,ar ,ms ,in ,
103 4 npby(4,n),npby(6,n) ,ifail ,fn ,expn ,
104 5 ft ,expt ,rby(30,n),nodreac,fthreac ,
105 6 freac )
106
107 IF(nrbfail /= 0 .AND. nspmd > 1) crit(n)= rby(30,n)
108
109 ENDIF
110 ENDDO
111
112
113
114
115
116
117
118
119
120 DO kk=1,nrbykin_l
121 n=irbkin_l(kk)
122 k = kind(n)
123 IF(npby(7,n)>0.AND.npby(4,n)==0)THEN
124 j = ninter+nrwall+n
125 ifail = npby(18,n)
126 fn = rby(26,n)
127 ft = rby(27,n)
128 expn = rby(28,n)
129 expt = rby(29,n)
130
131 CALL rgbodv(v ,vr ,x ,rby(1,n) ,lpby(k),
132 2 npby(1,n),skew ,iskew ,fsav(1,j) ,itab ,
133 3 weight ,a ,ar ,ms ,in ,
134 4 npby(4,n),npby(6,n) ,ifail ,fn ,expn ,
135 5 ft ,expt ,rby(30,n),nodreac,fthreac ,
136 6 freac )
137
138 IF(nrbfail /= 0 .AND. nspmd > 1) crit(n)= rby
139
140 ENDIF
141 ENDDO
142
143
144 ELSE
145
146 DO n=nrbykin,1,-1
147 k = kind(n)
148 im =npby(1,n)
149 IF(npby(7,n)>0 .AND. im>0) THEN
150 j = ninter+nrwall+n
151 ifail = npby(18,n)
152 fn = rby(26,n)
153 ft = rby(27,n)
154 expn = rby(28,n)
155 expt = rby(29,n)
156
157 CALL rgbodv(v ,vr ,x ,rby(1,n) ,lpby(k),
158 2 npby(1,n),skew ,iskew ,fsav(1,j) ,itab ,
159 3 weight ,a ,ar ,ms ,in ,
160 4 npby(4,n),npby(6,n) ,ifail ,fn ,expn ,
161 5 ft ,expt ,rby(30,n),nodreac,fthreac ,
162 6 freac )
163
164 IF(nrbfail /= 0 .AND. nspmd > 1) crit(n)= rby(30,n)
165
166 ENDIF
167 ENDDO
168
169 END IF
170
171
172 IF(nrbfail /= 0 .AND. nspmd > 1)THEN
174 DO n=1,nrbykin
175 rby(30,n) = crit(n)
176 ENDDO
177 END IF
178 DEALLOCATE(crit)
179
180
181 RETURN
subroutine rgbodv(v, vr, x, rby, nod, nby, skew, iskew, fs, itab, weight, a, ar, ms, in, isens, id, ifail, fny, expn, fty, expt, crit, nodreac, fthreac, freac)
subroutine spmd_all_dmax(v, len)