37 SUBROUTINE fixflux (IBFFLUX ,FBFFLUX ,NPC ,TF ,X ,IXS,
38 . NSENSOR ,SENSOR_TAB,FTHE ,IAD ,FTHESKY, PYTHON,
49#include "implicit_f.inc"
62 type (glob_therm_) ,
intent(inout) :: glob_therm
63 INTEGER ,
INTENT(IN) :: NSENSOR
64 INTEGER NPC(*),IAD(4,*)
65 INTEGER IBFFLUX(GLOB_THERM%NITFLUX,*)
68 . fbfflux(glob_therm%LFACTHER,*), tf(*), x(3,*),
69 . fthesky(lsky), fthe(*)
70 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) :: SENSOR_TAB
71 TYPE(PYTHON_) :: PYTHON
75 INTEGER NL, N1, N2, N3, N4, N5, N6, N7, N8, ISENS,
76 . IFUNC_OLD,IFUNC,IAD1,IAD2,IAD3,IAD4,IFLAG
78 my_real NX, NY, NZ, DYDX, TS, FLUX, TS_OLD, FCX, FCY, FLUX_DENS, AREA
79 my_real startt, stopt, fcy_old
80 my_real tta, ttb, dt1a, dt1n, volg, bid
96 DO nl=1,glob_therm%NFXFLUX
100 startt = fbfflux(4,nl)
101 stopt = fbfflux(5,nl)
102 tta = tt *glob_therm%THEACCFACT
103 dt1a = dt1*glob_therm%THEACCFACT
108 startt = startt + sensor_tab(isens)%TSTART
109 stopt = stopt + sensor_tab(isens)%TSTART
113 IF(tta < startt .OR. ttb >= stopt) cycle
114 IF(tta > stopt )
THEN
115 IF(ttb <= startt)
THEN
116 dt1n = stopt - startt
120 ELSEIF(tta <= stopt)
THEN
121 IF(ttb <= startt)
THEN
128 ifunc = ibfflux(5,nl)
131 IF(ifunc_old /= ifunc .OR. ts_old /= ts .OR. fcy_old /= fcy )
THEN
133 IF (ifunc > 0) ismooth = npc(2*nfunct+ifunc+1)
135 CALL python_call_funct1d(python, -ismooth,ts*fcx, flux_dens)
136 flux_dens = fcy*flux_dens
138 flux_dens = fcy*finter(ifunc, ts*fcx,npc,tf,dydx)
147 IF(ibfflux(10,nl) == 0)
THEN
155 nx= (x(2,n3)-x(2,n1))*(x(3,n4)-x(3,n2))
156 + -(x(3,n3)-x(3,n1))*(x(2,n4)-x(2,n2))
157 ny= (x(3,n3)-x(3,n1))*(x(1,n4)-x(1,n2))
158 + -(x(1,n3)-x(1,n1))*(x(3,n4)-x(3,n2))
159 nz= (x(1,n3)-x(1,n1))*(x(2,n4)-x(2,n2))
160 + -(x(2,n3)-x(2,n1))*(x(1,n4)-x(1,n2))
162 area = half*sqrt(nx*nx + ny*ny + nz*nz)
163 flux = area*flux_dens*dt1n
164 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
167 fthe(n1) = fthe(n1) + flux
168 fthe(n2) = fthe(n2) + flux
169 fthe(n3) = fthe(n3) + flux
170 fthe(n4) = fthe(n4) + flux
173 nx= (x(2,n3)-x(2,n1))*(x(3,n3)-x(3,n2))
174 + -(x(3,n3)-x(3,n1))*(x(2,n3)-x(2,n2))
175 ny= (x(3,n3)-x(3,n1))*(x(1,n3)-x(1,n2))
176 + -(x(1,n3)-x(1,n1))*(x(3,n3)-x(3,n2))
177 nz= (x(1,n3)-x(1,n1))*(x(2,n3)-x(2,n2))
178 + -(x(2,n3)-x(2,n1))*(x(1,n3)-x(1,n2))
180 area = half*sqrt( nx*nx + ny*ny + nz*nz)
181 flux = area*flux_dens*dt1n
182 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
185 fthe(n1) = fthe(n1) + flux
186 fthe(n2) = fthe(n2) + flux
187 fthe(n3) = fthe(n3) + flux
193 area = sqrt(ny*ny + nz*nz)
194 flux = area*flux_dens*dt1n
195 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
198 fthe(n1) = fthe(n1) + flux
199 fthe(n2) = fthe(n2) + flux
208 ibfflux(1,nl)=ibfflux(8,nl)
220 IF(n1 == n2 .AND. n3 == n4 .AND. n5 == n8 .AND. n6 == n7)
THEN
221 CALL s4volume(x, volg, 1, n1, n3, n6, n5)
223 CALL s8evolume(x, volg, bid, 1, 0, 0, 0, n1, n2, n3, n4, n5, n6, n7, n8)
226 flux = volg*flux_dens*dt1n
227 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
228 flux = one_over_8*flux
230 fthe(n1) = fthe(n1) + flux
231 fthe(n2) = fthe(n2) + flux
232 fthe(n3) = fthe(n3) + flux
233 fthe(n4) = fthe(n4) + flux
234 fthe(n5) = fthe(n5) + flux
235 fthe(n6) = fthe(n6) + flux
236 fthe(n7) = fthe(n7) + flux
237 fthe(n8) = fthe(n8) + flux
247 DO nl=1,glob_therm%NFXFLUX
248 isens = ibfflux(6,nl)
249 startt = fbfflux(4,nl)
250 stopt = fbfflux(5,nl)
251 tta = tt *glob_therm%THEACCFACT
252 dt1a = dt1*glob_therm%THEACCFACT
256 startt = startt + sensor_tab(isens)%TSTART
257 stopt = stopt + sensor_tab(isens)%TSTART
261 IF(tta < startt) iflag = 0
262 IF(tta > stopt ) iflag = 0
264 IF(ibfflux(10,nl) == 0)
THEN
273 ifunc = ibfflux(5,nl)
276 IF(ifunc_old /= ifunc .OR. ts_old /= ts)
THEN
278 IF (ifunc > 0) ismooth = npc(2*nfunct+ifunc+1)
280 CALL python_call_funct1d(python, -ismooth,ts*fcx, flux_dens)
282 flux_dens = finter(ifunc,ts*fcx,npc,tf,dydx)
290 nx= (x(2,n3)-x(2,n1))*(x(3,n4)-x(3,n2))
291 + -(x(3,n3)-x(3,n1))*(x(2,n4)-x(2,n2))
292 ny= (x(3,n3)-x(3,n1))*(x(1,n4)-x(1,n2))
293 + -(x(1,n3)-x(1,n1))*(x(3,n4)-x(3,n2))
294 nz= (x(1,n3)-x(1,n1))*(x(2,n4)-x(2,n2))
295 + -(x(2,n3)-x(2,n1))*(x(1,n4)-x(1,n2))
297 area = half*sqrt(nx*nx + ny*ny + nz*nz)
298 flux = area*flux_dens*fcy*dt1a
299 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
312 nx= (x(2,n3)-x(2,n1))*(x(3,n3)-x(3,n2))
313 + -(x(3,n3)-x(3,n1))*(x(2,n3)-x(2,n2))
314 ny= (x(3,n3)-x(3,n1))*(x(1,n3)-x(1,n2))
315 + -(x(1,n3)-x(1,n1))*(x(3,n3)-x(3,n2))
316 nz= (x(1,n3)-x(1,n1))*(x(2,n3)-x(2,n2))
317 + -(x(2,n3)-x(2,n1))*(x(1,n3)-x(1,n2))
319 area = half*sqrt(nx*nx + ny*ny + nz*nz)
320 flux = area*flux_dens*fcy*dt1a
321 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
335 area = sqrt(ny*ny + nz*nz)
336 flux = area*flux_dens*fcy*dt1a
337 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
365 WRITE(iout,
'(//A)')
' VOLUMIC HEAT FLUX IS NOT
366 . COMPATIBLE WITH /PARITH/ON: USE /PARITH/OFF'
367 WRITE(6,*)
' VOLUMIC HEAT FLUX IS NOT ',
368 .
'COMPATIBLE WITH /PARITH/ON: USE /PARITH/OFF'