38 SUBROUTINE fixflux (IBFFLUX ,FBFFLUX ,NPC ,TF ,X ,IXS,
39 . NSENSOR ,SENSOR_TAB,FTHE ,IAD ,FTHESKY, PYTHON,
47 use element_mod ,
only : nixs
51#include "implicit_f.inc"
64 type (glob_therm_) ,
intent(inout) :: glob_therm
65 INTEGER ,
INTENT(IN) :: NSENSOR
66 INTEGER NPC(*),IAD(4,*)
67 INTEGER IBFFLUX(GLOB_THERM%NITFLUX,*)
70 . fbfflux(glob_therm%LFACTHER,*), tf(*), x(3,*),
71 . fthesky(lsky), fthe(*)
72 TYPE (SENSOR_STR_) ,
DIMENSION(NSENSOR) :: SENSOR_TAB
73 TYPE(PYTHON_) :: PYTHON
77 INTEGER NL, N1, N2, N3, N4, N5, N6, N7, N8, ISENS,
78 . IFUNC_OLD,IFUNC,IAD1,IAD2,IAD3,IAD4,IFLAG
80 my_real NX, NY, NZ, DYDX, TS, FLUX, TS_OLD, FCX, FCY, FLUX_DENS, AREA
81 my_real startt, stopt, fcy_old
82 my_real tta, ttb, dt1a, dt1n, volg, bid
98 DO nl=1,glob_therm%NFXFLUX
100 isens = ibfflux(6,nl)
102 startt = fbfflux(4,nl)
103 stopt = fbfflux(5,nl)
104 tta = tt *glob_therm%THEACCFACT
105 dt1a = dt1*glob_therm%THEACCFACT
110 startt = startt + sensor_tab(isens)%TSTART
111 stopt = stopt + sensor_tab(isens)%TSTART
115 IF(tta < startt .OR. ttb >= stopt) cycle
116 IF(tta > stopt )
THEN
118 dt1n = stopt - startt
122 ELSEIF(tta <= stopt)
THEN
123 IF(ttb <= startt)
THEN
130 ifunc = ibfflux(5,nl)
133 IF(ifunc_old /= ifunc .OR. ts_old /= ts .OR. fcy_old /= fcy )
THEN
135 IF (ifunc > 0) ismooth = npc(2*nfunct+ifunc+1)
137 CALL python_call_funct1d(python, -ismooth,ts*fcx, flux_dens)
138 flux_dens = fcy*flux_dens
140 flux_dens = fcy*finter(ifunc, ts*fcx,npc,tf,dydx)
149 IF(ibfflux(10,nl) == 0)
THEN
157 nx= (x(2,n3)-x(2,n1))*(x(3,n4)-x(3,n2))
158 + -(x(3,n3)-x(3,n1))*(x(2,n4)-x(2,n2))
160 + -(x(1,n3)-x(1,n1))*(x(3,n4)-x(3,n2))
161 nz= (x(1,n3)-x(1,n1))*(x(2,n4)-x(2,n2))
162 + -(x(2,n3)-x(2,n1))*(x(1,n4)-x(1,n2))
164 area = half*sqrt(nx*nx + ny*ny + nz*nz)
165 flux = area*flux_dens*dt1n
166 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
169 fthe(n1) = fthe(n1) + flux
170 fthe(n2) = fthe(n2) + flux
171 fthe(n3) = fthe(n3) + flux
172 fthe(n4) = fthe(n4) + flux
175 nx= (x(2,n3)-x(2,n1))*(x(3,n3)-x(3,n2))
176 + -(x(3,n3)-x(3,n1))*(x(2,n3)-x(2,n2))
177 ny= (x(3,n3)-x(3,n1))*(x(1,n3)-x(1,n2))
178 + -(x(1,n3)-x(1,n1))*(x(3,n3)-x(3,n2))
179 nz= (x(1,n3)-x(1,n1))*(x(2,n3)-x(2,n2))
180 + -(x(2,n3)-x(2,n1))*(x(1,n3)-x(1,n2))
182 area = half*sqrt( nx*nx + ny*ny + nz*nz)
183 flux = area*flux_dens*dt1n
184 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
187 fthe(n1) = fthe(n1) + flux
188 fthe(n2) = fthe(n2) + flux
189 fthe(n3) = fthe(n3) + flux
195 area = sqrt(ny*ny + nz*nz)
196 flux = area*flux_dens*dt1n
197 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
200 fthe(n1) = fthe(n1) + flux
201 fthe(n2) = fthe(n2) + flux
210 ibfflux(1,nl)=ibfflux(8,nl)
222 IF(n1 == n2 .AND. n3 == n4 .AND. n5 == n8 .AND. n6 == n7)
THEN
223 CALL s4volume(x, volg, 1, n1, n3, n6, n5)
225 CALL s8evolume(x, volg, bid, 1, 0, 0, 0, n1, n2, n3, n4, n5, n6, n7, n8)
228 flux = volg*flux_dens*dt1n
229 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
230 flux = one_over_8*flux
232 fthe(n1) = fthe(n1) + flux
233 fthe(n2) = fthe(n2) + flux
234 fthe(n3) = fthe(n3) + flux
235 fthe(n4) = fthe(n4) + flux
236 fthe(n5) = fthe(n5) + flux
237 fthe(n6) = fthe(n6) + flux
238 fthe(n7) = fthe(n7) + flux
239 fthe(n8) = fthe(n8) + flux
249 DO nl=1,glob_therm%NFXFLUX
250 isens = ibfflux(6,nl)
251 startt = fbfflux(4,nl)
252 stopt = fbfflux(5,nl)
253 tta = tt *glob_therm%THEACCFACT
254 dt1a = dt1*glob_therm%THEACCFACT
258 startt = startt + sensor_tab(isens)%TSTART
259 stopt = stopt + sensor_tab(isens)%TSTART
263 IF(tta < startt) iflag = 0
264 IF(tta > stopt ) iflag = 0
266 IF(ibfflux(10,nl) == 0)
THEN
275 ifunc = ibfflux(5,nl)
278 IF(ifunc_old /= ifunc .OR. ts_old /= ts)
THEN
280 IF (ifunc > 0) ismooth = npc(2*nfunct+ifunc+1)
282 CALL python_call_funct1d(python, -ismooth,ts*fcx, flux_dens)
284 flux_dens = finter(ifunc,ts*fcx,npc,tf,dydx)
292 nx= (x(2,n3)-x(2,n1))*(x(3,n4)-x(3,n2))
293 + -(x(3,n3)-x(3,n1))*(x(2,n4)-x(2,n2))
294 ny= (x(3,n3)-x(3,n1))*(x(1,n4)-x(1,n2))
295 + -(x(1,n3)-x(1,n1))*(x(3,n4)-x(3,n2))
296 nz= (x(1,n3)-x(1,n1))*(x(2,n4)-x(2,n2))
297 + -(x(2,n3)-x(2,n1))*(x(1,n4)-x(1,n2))
299 area = half*sqrt(nx*nx + ny*ny + nz*nz)
300 flux = area*flux_dens*fcy*dt1a
301 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
314 nx= (x(2,n3)-x(2,n1))*(x(3,n3)-x(3,n2))
315 + -(x(3,n3)-x(3,n1))*(x(2,n3)-x(2,n2))
316 ny= (x(3,n3)-x(3,n1))*(x(1,n3)-x(1,n2))
317 + -(x(1,n3)-x(1,n1))*(x(3,n3)-x(3,n2))
318 nz= (x(1,n3)-x(1,n1))*(x(2,n3)-x(2,n2))
319 + -(x(2,n3)-x(2,n1))*(x(1,n3)-x(1,n2))
321 area = half*sqrt(nx*nx + ny*ny + nz*nz)
322 flux = area*flux_dens*fcy*dt1a
323 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
337 area = sqrt(ny*ny + nz*nz)
338 flux = area*flux_dens*fcy*dt1a
339 glob_therm%HEAT_FFLUX = glob_therm%HEAT_FFLUX + flux
367 WRITE(iout,
'(//A)')
' VOLUMIC HEAT FLUX IS NOT
368 . COMPATIBLE WITH /PARITH/ON: USE /PARITH/OFF'
369 WRITE(6,*)
' VOLUMIC HEAT FLUX IS NOT ',
370 .
'COMPATIBLE WITH /PARITH/ON: USE /PARITH/OFF'