40
41
42
43 USE sensor_mod
44 USE output_mod
45 USE python_funct_mod
46
47
48
49#include "implicit_f.inc"
50
51
52
53#include "com01_c.inc"
54#include "com08_c.inc"
55#include "param_c.inc"
56#include "scr07_c.inc"
57#include "flowcom.inc"
58
59
60
61 TYPE(OUTPUT_), INTENT(INOUT) :: OUTPUT
62 INTEGER ,INTENT(IN) :: NSENSOR,NBGAUGE,NFUNCT
63 INTEGER IFLOW(*), WIFLOW(*), NPC(*),LGAUGE(3,*)
64 INTEGER IGRV(NIGRV,*)
65 my_real rflow(*), wrflow(*), x(3,*), v(3,*), a(3,*), tf(*), gauge(llgauge,*), agrv(lfacgrv,*)
66 TYPE (SENSOR_STR_) ,DIMENSION(NSENSOR) :: SENSOR_TAB
67 TYPE (PYTHON_), INTENT(INOUT) :: PYTHON
68 DOUBLE PRECISION,INTENT(INOUT) :: WFEXT
69
70
71
72 INTEGER IADI, IADR, I, ITYP, NINOUT, NNO, NEL, NNN, NEL_LOC,
73 . II1, II2, II3, II4, II5, II6, II7, IR1, IR2, IR3, IR4,
74 . IR5, IR6, IR7, IR8, IR9, IR10, IR11, II8, II9, II10, II11, IADIP, IADH, IADG,
75 . II12, II13, II14, IPINT, NDIM, JFORM, FREESURF
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
122
123
124
125 ii1 = 1
126 ii2 = 1
127 ii3 = 1
128 ii4 = 1
129 ii5 = 1
130 ii6 = 1
131 ii7 = 1
132 ii8 = 1
133 ii9 = 1
134 ii10= 1
135 ipint=0
136 IF ((tt>=output%TANIM .AND. tt<=output%TANIM_STOP).OR.
137 . manim==4 .OR.manim==5 .OR.manim==6 .OR.manim==7.OR.
138 . manim==12.OR.manim==13.OR.manim==14.OR.manim==15)
139 . ipint=1
140 iadi=0
141 iadr=0
142 DO i=1,nflow
143 ityp=iflow(iadi+2)
144 nno=iflow(iadi+5)
145 nel=iflow(iadi+6)
146 ii1=iadi+1
147 ii2=ii1+niflow
148 ii3=ii2+nno
149 ir1=iadr+1
150 ir2=ir1+nrflow
151 IF (ityp==1) THEN
152 ninout=iflow(iadi+4)
153 nnn=iflow(iadi+7)
154 ii4=ii3+3*nel
155 ii5=ii4+ninout*niioflow
156 ii6=ii5+nnn
157 IF (nspmd > 1) THEN
158 ii7=ii6+nel
159 ii8=ii7+nno
160 ii9=ii8+nno
161 ii10=ii9+nno
162 ii11=ii10+nno
163 ii12=ii11+nnn
164 ii13=ii12+nnn
165 ii14=ii13+nel
166 ELSE
167 ii7=ii6+nel
168 ii8=ii7
169 ii9=ii8
170 ii10=ii9+nno
171 ii11=ii10
172 ii12=ii11+nnn
173 ii13=ii12
174 ii14=ii13
175 ENDIF
176 ir3=ir2+nno+nnn
177 ir4=ir3+nno+nnn
178 ir5=ir4+3*(nno+nnn)
179
180 iadip=iflow(iadi+10)
181 iadh=iflow(iadi+11)
182 iadg=iflow(iadi+20)
183
185 . nno, nel, ninout, nnn, iflow(ii1),
186 . iflow(ii2), iflow(ii3), iflow(ii4), iflow(ii5), iflow(ii7),
187 . iflow(ii8), iflow(ii9), rflow(ir1), rflow(ir2), rflow(ir3),
188 . rflow(ir4), rflow(ir5), x, v, a,
189 . npc, tf , nsensor , sensor_tab ,
190 . iflow(ii10), iflow(ii6), iflow(ii13), iflow(ii14), wiflow(iadip),
191 . wrflow(iadh),wrflow(iadg),iflow(ii11), iflow(ii12), ipint,
192 . python ,wfext)
193
194 ELSEIF(ityp == 3) THEN
195 jform = iflow(iadi+4)
196 freesurf = iflow(iadi+25)
197 IF(jform==1) THEN
198 ii4=ii3+3*nel
199 ii5=ii4+nno
200 ii6=ii5
201 ndim=3
202 ELSEIF(jform==2) THEN
203 ii4=ii3+5*nel
204 ii5=ii4+nno
205 ii6=ii5+nbgauge
206 ndim=5
207 ENDIF
208
209 ir3 = ir2+nel*3
210 ir4 = ir3+nel*freesurf
211 ir5 = ir4+nel
212 ir6 = ir5+nel*freesurf
213 ir7 = ir6+nel*freesurf
214 ir8 = ir7+nel*nel
215 ir9 = ir8+nel
216 ir10= ir9+nel
217 ir11= ir10+nel
218
219 IF(nspmd == 1) THEN
220 ii7=ii6
222 . iflow(ii1), iflow(ii2), iflow(ii3), iflow(ii5),
223 . rflow(ir1), rflow(ir2), rflow(ir3), rflow(ir4), rflow(ir5), rflow(ir6),
224 . rflow(ir7), rflow(ir8), rflow(ir9), rflow(ir10),x, v, a, npc, tf,
225 . nbgauge, lgauge, gauge, nsensor, sensor_tab, igrv, agrv,
226 . rflow(ir11),iflow(ii7), nfunct, python, wfext)
227 ELSE
228 ii7=ii6+nno
229 ii8=ii7+nel
230 ii9=ii8+nel
231 nel_loc =iflow(iadi+20)
232 iadip =iflow(iadi+10)
233 iadh =iflow(iadi+11)
234 CALL daasolvp(ndim, nno, nel, nel_loc,
235 . iflow(ii1), iflow(ii2), iflow(ii3), iflow(ii4), iflow(ii5), iflow(ii6),
236 . rflow(ir1), rflow(ir2), rflow(ir3), rflow(ir4), rflow(ir5), rflow(ir6),
237 . rflow(ir7), rflow(ir8), rflow(ir9), rflow(ir10),x, v, a, npc, tf,
238 . nbgauge, lgauge, gauge, nsensor, sensor_tab, igrv, agrv,
239 . rflow(ir11),wiflow(iadip), wrflow(iadh), iflow(ii8), iflow(ii9),
240 . nfunct, python, wfext)
241 ENDIF
242 ENDIF
243 iadr=iadr+iflow(iadi+15)
244 iadi=iadi+iflow(iadi+14)
245 ENDDO
246
247 RETURN
subroutine daasolv(ndim, nno, nel, iflow, ibuf, elem, shell_ga, rflow, normal, ta, areaf, cosg, dist, mfle, accf, pm, pti, x, v, a, npc, tf, nbgauge, lgauge, gauge, nsensor, sensor_tab, igrv, agrv, cbem, ipiv, nfunct, python, wfext)
subroutine daasolvp(ndim, nno, nel, nel_loc, iflow, ibuf, elem, ibufl, shell_ga, cnp, rflow, normal, ta, areaf, cosg, dist, mfle, accf, pm, pti, x, v, a, npc, tf, nbgauge, lgauge, gauge, nsensor, sensor_tab, igrv, agrv, cbem, ipiv_l, mfle_l, ibufelr, ibufelc, nfunct, python, wfext)
subroutine incpflow(nno, nel, ninout, nni, iflow, ibuf, elem, iinout, ibufi, ibufr, ibufc, ibufl, rflow, phi, pres, u, rinout, x, v, a, npc, tf, nsensor, sensor_tab, cnp, itagel, ibufelr, ibufelc, ipiv, hbem, gbem, ibufil, cnpi, ipint, python, wfext)