59 INTEGER,
INTENT(IN) :: J
60 INTEGER,
INTENT(IN) :: I
61 DOUBLE PRECISION,
INTENT(IN) :: Z_HIGH
62 DOUBLE PRECISION,
INTENT(IN) :: Z_LOW
63 DOUBLE PRECISION,
INTENT(OUT) :: A(
nsicla)
67 DOUBLE PRECISION TEMP,TEMPOLD, DHIG, DLOW, AT, SUMUP, FLOW, FHIG
68 DOUBLE PRECISION TEMP2, TEMP2MAX, SUMUP2,TEMP3, TEMP3MAX, SUMUP3
69 DOUBLE PRECISION CHSUM
70 INTEGER L_CNT, F_CNT, REVCNT, HELPER, LASTCASE, JG
71 INTEGER(KIND=K8) :: MYCASE
76 IF (ncsize.GT.1) jg =
mesh%KNOLG%I(j)
88 IF ((z_high-z_low).LT.
zero)
THEN 110 dhig =
pro_d(j,revcnt,f_cnt)
111 dlow =
pro_d(j,revcnt-1,f_cnt)
115 IF ( (dhig <= z_high ) .AND.
116 & (dlow >= z_low ) )
THEN 117 flow =
pro_f(j,revcnt-1,f_cnt)
118 fhig =
pro_f(j,revcnt,f_cnt)
121 temp2 = 0.5d0*(fhig+flow)*(dhig-dlow) + temp2
122 temp2max = z_high - dlow
124 chsum =
pro_f(j,revcnt, helper) + chsum
130 ELSEIF ((dhig <= z_high) .AND.
131 & (dhig > z_low ) .AND.
132 & (dlow < z_low ) )
THEN 134 fhig =
pro_f(j,revcnt,f_cnt)
135 flow =
pro_f(j,revcnt-1,f_cnt)
136 flow = - ((fhig-flow)/(dhig-dlow))*(dhig-z_low) + fhig
141 mycase = mycase + 1000
143 temp3 = 0.5d0*(fhig+flow)*(dhig-dlow) + temp3
144 temp3max = dhig - dlow
149 ELSEIF ((dhig > z_high) .AND.
150 & (dlow >= z_low) .AND.
151 & (dlow < z_high) )
THEN 152 flow =
pro_f(j,revcnt-1,f_cnt)
153 fhig =
pro_f(j,revcnt,f_cnt)
154 fhig = ((fhig-flow)/(dhig-dlow))*(z_high-dlow) + flow
160 mycase = mycase + 1000000
165 ELSEIF ((dhig >= z_high) .AND.
166 & (dlow <= z_low) )
THEN 168 & - (
pro_f(j,revcnt,f_cnt)-
pro_f(j,revcnt-1,f_cnt)) /
171 & +
pro_f(j,revcnt,f_cnt)
173 & - (
pro_f(j,revcnt,f_cnt)-
pro_f(j,revcnt-1,f_cnt)) /
176 & +
pro_f(j,revcnt,f_cnt)
183 mycase = mycase + 100000000
187 ELSEIF (dhig == dlow)
THEN 190 mycase = mycase + 1000000000
193 ELSEIF (z_low.GE.z_high)
THEN 196 IF(
cp)
WRITE(
lu,*)
'Z_LOW>=Z_HIGH',dhig,dlow,z_high,z_low
197 CALL cvsp_p(
'./',
'ZLOHI',jg)
198 mycase = mycase + 1000000000
201 ELSEIF (dhig < dlow)
THEN 205 IF(
cp)
WRITE(
lu,*)
'DHIG<=DLOW',j,dhig,dlow,z_high,z_low
206 CALL cvsp_p(
'./',
'DLOHI',jg)
207 mycase = mycase + 1000000000
213 mycase = mycase + 1000000000
219 temp = 0.5d0*(fhig+flow)*(dhig-dlow) + temp
221 IF (0.5d0*(fhig+flow)*(dhig-dlow) < 0.d0)
THEN 222 WRITE(
lu,fmt=
'(A,1X,2(I11,1X),11(G20.10,1X),1X,I11)')
223 &
'INTEGRATE_VOL_ER_TMP:<0:' 224 & ,jg, i, at, fhig,flow,dhig,dlow, dhig-dlow, revcnt,
225 &
pro_f(j,revcnt-1,f_cnt),
pro_f(j,revcnt,f_cnt),
226 &
pro_d(j,revcnt-1,f_cnt),
pro_d(j,revcnt,f_cnt),
228 CALL cvsp_p(
'./',
'IVKT',jg)
237 sumup2 = temp2 + sumup2
238 sumup3 = temp3 + sumup3
245 CALL cvsp_p(
'./',
'IVK0',jg)
246 WRITE(*,fmt=
'(A,2(I11),14(G20.10))')
'INTEGRATE_VOL_ER:<0:' 248 & sumup,sumup2,sumup3,chsum,a(1),a(2),a(3),a(4),a(5)
254 sumup = sumup - abs(z_high-z_low)
255 sumup2 = sumup2 - abs(temp2max)
256 sumup3 = sumup3 - abs(temp3max)
262 IF (abs(sumup).GT.1.d-5)
THEN 264 IF(
cp)
WRITE(
lu,*)
'INTEGRATE VOLUME ACCURRACY!!!',sumup,jg
double precision function cvsp_integrate_volume(J, I, Z_HIGH, Z_LOW, A)
double precision, dimension(:,:,:), allocatable, target pro_f
double precision, target dt
subroutine cvsp_p(PATH_PRE, FILE_PRE, JG)
integer, dimension(:), allocatable pro_max
double precision, dimension(:,:,:), allocatable, target pro_d
type(bief_mesh), target mesh