11 subroutine computettot_d(rho, rhod, u, ud, v, vd, w, wd, p, pd, ttot, &
25 real(kind=realtype),
intent(in) :: rho, p, u, v, w
26 real(kind=realtype),
intent(in) :: rhod, pd, ud, vd, wd
27 real(kind=realtype),
intent(out) :: ttot
28 real(kind=realtype),
intent(out) :: ttotd
32 integer(kind=inttype) :: i
33 real(kind=realtype) :: govgm1, t, kin
34 real(kind=realtype) :: td, kind0
35 real(kind=realtype) :: temp
45 kind0 =
half*(2*u*ud+2*v*vd+2*w*wd)
46 kin =
half*(u*u+v*v+w*w)
47 temp = rho*kin/(govgm1*p)
48 ttotd = (
one+temp)*td + t*(kin*rhod+rho*kind0-temp*govgm1*pd)/(&
57 &
'variable cp formulation not implemented yet')
74 real(kind=realtype),
intent(in) :: rho, p, u, v, w
75 real(kind=realtype),
intent(out) :: ttot
79 integer(kind=inttype) :: i
80 real(kind=realtype) :: govgm1, t, kin
88 kin =
half*(u*u+v*v+w*w)
89 ttot = t*(
one+rho*kin/(govgm1*p))
96 &
'variable cp formulation not implemented yet')
112 integer(kind=inttype),
intent(in) :: mm
113 real(kind=realtype),
dimension(mm),
intent(in) :: t
114 real(kind=realtype),
dimension(mm),
intent(out) :: gamma
118 integer(kind=inttype) :: i, ii, nn, start
119 real(kind=realtype) :: cp, t2
135 subroutine computeptot_d(rho, rhod, u, ud, v, vd, w, wd, p, pd, ptot, &
146 real(kind=realtype),
intent(in) :: rho, p, u, v, w
147 real(kind=realtype),
intent(in) :: rhod, pd, ud, vd, wd
148 real(kind=realtype),
intent(out) :: ptot
149 real(kind=realtype),
intent(out) :: ptotd
153 real(kind=realtype),
parameter :: dtstop=0.01_realtype
157 integer(kind=inttype) :: i, ii, mm, nn, nnt, start
158 real(kind=realtype) :: govgm1, kin
159 real(kind=realtype) :: kind0
160 real(kind=realtype) :: t, t2, tt, dt, h, htot, cp, scale, alp
161 real(kind=realtype) :: intcport, intcportt, intcporttt
162 real(kind=realtype) :: temp
163 real(kind=realtype) :: temp0
164 real(kind=realtype) :: tempd
172 kind0 =
half*(2*u*ud+2*v*vd+2*w*wd)
173 kin =
half*(u*u+v*v+w*w)
174 temp = rho*kin/(govgm1*p)
175 temp0 = (
one+temp)**govgm1
176 if (
one + temp .le. 0.0_8 .and. (govgm1 .eq. 0.0_8 .or. govgm1 &
177 & .ne. int(govgm1)))
then
180 tempd = (
one+temp)**(govgm1-1)*(kin*rhod+rho*kind0-temp*govgm1*&
183 ptotd = temp0*pd + p*tempd
199 real(kind=realtype),
intent(in) :: rho, p, u, v, w
200 real(kind=realtype),
intent(out) :: ptot
204 real(kind=realtype),
parameter :: dtstop=0.01_realtype
208 integer(kind=inttype) :: i, ii, mm, nn, nnt, start
209 real(kind=realtype) :: govgm1, kin
210 real(kind=realtype) :: t, t2, tt, dt, h, htot, cp, scale, alp
211 real(kind=realtype) :: intcport, intcportt, intcporttt
219 kin =
half*(u*u+v*v+w*w)
220 ptot = p*(
one+rho*kin/(govgm1*p))**govgm1
235 use blockpointers,
only :
ie,
je,
ke,
w,
wd,
p,
pd,
aa,
aad,
gamma
241 real(kind=realtype),
parameter :: twothird=
two*
third
242 integer(kind=inttype) :: i, j, k, ii
243 real(kind=realtype) :: pp
244 real(kind=realtype) :: ppd
245 logical :: correctfork
246 real(kind=realtype) :: temp
247 real(kind=realtype) :: temp0
250 if (correctfork)
then
251 if (
associated(
aad))
aad = 0.0_8
255 temp =
w(i, j, k,
itu1)
256 temp0 =
w(i, j, k,
irho)
257 ppd =
pd(i, j, k) - twothird*(temp*
wd(i, j, k,
irho)+temp0*&
259 pp =
p(i, j, k) - twothird*(temp0*temp)
260 temp0 =
w(i, j, k,
irho)
263 aa(i, j, k) =
gamma(i, j, k)*(pp/temp0)
268 if (
associated(
aad))
aad = 0.0_8
272 temp0 =
w(i, j, k,
irho)
273 temp =
p(i, j, k)/temp0
274 aad(i, j, k) =
gamma(i, j, k)*(
pd(i, j, k)-temp*
wd(i, j, k, &
276 aa(i, j, k) =
gamma(i, j, k)*temp
294 real(kind=realtype),
parameter :: twothird=
two*
third
295 integer(kind=inttype) :: i, j, k, ii
296 real(kind=realtype) :: pp
297 logical :: correctfork
300 if (correctfork)
then
304 pp =
p(i, j, k) - twothird*
w(i, j, k,
irho)*
w(i, j, k,
itu1)
344 integer(kind=inttype),
intent(in) :: istart, iend, jstart, jend
345 integer(kind=inttype),
intent(in) :: kstart, kend
346 logical,
intent(in) :: correctfork
350 integer(kind=inttype) :: i, j, k, ii, isize, jsize, ksize
351 real(kind=realtype) :: ovgm1, factk, scale
352 real(kind=realtype) :: temp
353 real(kind=realtype) :: temp0
354 real(kind=realtype) :: temp1
355 real(kind=realtype) :: temp2
356 real(kind=realtype) :: temp3
357 real(kind=realtype) :: temp4
358 real(kind=realtype) :: temp5
368 isize = iend - istart + 1
369 jsize = jend - jstart + 1
370 ksize = kend - kstart + 1
372 if (correctfork)
then
376 temp =
w(i, j, k,
ivz)
377 temp0 =
w(i, j, k,
ivy)
378 temp1 =
w(i, j, k,
ivx)
379 temp2 = temp1*temp1 + temp0*temp0 + temp*temp
380 temp3 =
w(i, j, k,
irho)
381 temp4 =
w(i, j, k,
itu1)
382 temp5 =
w(i, j, k,
irho)
384 & , j, k,
irho)+temp3*(2*temp1*
wd(i, j, k,
ivx)+2*temp0*
wd&
385 & (i, j, k,
ivy)+2*temp*
wd(i, j, k,
ivz))) - factk*(temp4*&
387 w(i, j, k,
irhoe) = ovgm1*
p(i, j, k) +
half*(temp3*temp2) &
388 & - factk*(temp5*temp4)
396 temp5 =
w(i, j, k,
ivz)
397 temp4 =
w(i, j, k,
ivy)
398 temp3 =
w(i, j, k,
ivx)
399 temp2 = temp3*temp3 + temp4*temp4 + temp5*temp5
400 temp1 =
w(i, j, k,
irho)
402 & , j, k,
irho)+temp1*(2*temp3*
wd(i, j, k,
ivx)+2*temp4*
wd&
403 & (i, j, k,
ivy)+2*temp5*
wd(i, j, k,
ivz)))
404 w(i, j, k,
irhoe) = ovgm1*
p(i, j, k) +
half*(temp1*temp2)
431 integer(kind=inttype),
intent(in) :: istart, iend, jstart, jend
432 integer(kind=inttype),
intent(in) :: kstart, kend
433 logical,
intent(in) :: correctfork
437 integer(kind=inttype) :: i, j, k, ii, isize, jsize, ksize
438 real(kind=realtype) :: ovgm1, factk, scale
448 isize = iend - istart + 1
449 jsize = jend - jstart + 1
450 ksize = kend - kstart + 1
452 if (correctfork)
then
456 w(i, j, k,
irhoe) = ovgm1*
p(i, j, k) +
half*
w(i, j, k, &
466 w(i, j, k,
irhoe) = ovgm1*
p(i, j, k) +
half*
w(i, j, k, &
479 subroutine etot_d(rho, rhod, u, ud, v, vd, w, wd, p, pd, k, kd, etotal&
480 & , etotald, correctfork)
493 real(kind=realtype),
intent(in) :: rho, p, k
494 real(kind=realtype),
intent(in) :: rhod, pd, kd
495 real(kind=realtype),
intent(in) :: u, v, w
496 real(kind=realtype),
intent(in) :: ud, vd, wd
497 real(kind=realtype),
intent(out) :: etotal
498 real(kind=realtype),
intent(out) :: etotald
499 logical,
intent(in) :: correctfork
503 integer(kind=inttype) :: i
504 real(kind=realtype) :: temp
506 call eint_d(rho, rhod, p, pd, k, kd, etotal, etotald, correctfork)
507 temp = etotal +
half*(u*u+v*v+w*w)
508 etotald = temp*rhod + rho*(etotald+
half*(2*u*ud+2*v*vd+2*w*wd))
512 subroutine etot(rho, u, v, w, p, k, etotal, correctfork)
525 real(kind=realtype),
intent(in) :: rho, p, k
526 real(kind=realtype),
intent(in) :: u, v, w
527 real(kind=realtype),
intent(out) :: etotal
528 logical,
intent(in) :: correctfork
532 integer(kind=inttype) :: i
534 call eint(rho, p, k, etotal, correctfork)
535 etotal = rho*(etotal+
half*(u*u+v*v+w*w))
542 subroutine eint_d(rho, rhod, p, pd, k, kd, einternal, einternald, &
560 real(kind=realtype),
intent(in) :: rho, p, k
561 real(kind=realtype),
intent(in) :: rhod, pd, kd
562 real(kind=realtype),
intent(out) :: einternal
563 real(kind=realtype),
intent(out) :: einternald
564 logical,
intent(in) :: correctfork
568 real(kind=realtype),
parameter :: twothird=
two*
third
572 integer(kind=inttype) :: i, nn, mm, ii, start
573 real(kind=realtype) :: ovgm1, factk, pp, t, t2, scale
581 einternald = ovgm1*(pd-p*rhod/rho)/rho
582 einternal = ovgm1*p/rho
585 if (correctfork)
then
587 einternald = einternald - factk*kd
588 einternal = einternal - factk*k
594 subroutine eint(rho, p, k, einternal, correctfork)
611 real(kind=realtype),
intent(in) :: rho, p, k
612 real(kind=realtype),
intent(out) :: einternal
613 logical,
intent(in) :: correctfork
617 real(kind=realtype),
parameter :: twothird=
two*
third
621 integer(kind=inttype) :: i, nn, mm, ii, start
622 real(kind=realtype) :: ovgm1, factk, pp, t, t2, scale
630 einternal = ovgm1*p/rho
633 if (correctfork)
then
635 einternal = einternal - factk*k
654 logical,
intent(in) :: includehalos
656 integer(kind=inttype) :: i, j, k, ii
657 real(kind=realtype) :: gm1, v2
658 real(kind=realtype) :: v2d
659 integer(kind=inttype) :: ibeg, iend, isize, jbeg, jend, jsize, kbeg&
662 real(kind=realtype) :: temp
663 real(kind=realtype) :: temp0
664 real(kind=realtype) :: temp1
667 if (includehalos)
then
674 if (
associated(
pd))
pd = 0.0_8
682 if (
associated(
pd))
pd = 0.0_8
687 temp =
w(i, j, k,
ivx)
688 temp0 =
w(i, j, k,
ivy)
689 temp1 =
w(i, j, k,
ivz)
690 v2d = 2*temp*
wd(i, j, k,
ivx) + 2*temp0*
wd(i, j, k,
ivy) + 2*&
691 & temp1*
wd(i, j, k,
ivz)
692 v2 = temp*temp + temp0*temp0 + temp1*temp1
693 temp1 =
w(i, j, k,
irho)
696 p(i, j, k) = gm1*(
w(i, j, k,
irhoe)-
half*(temp1*v2))
697 if (
p(i, j, k) .lt. 1.e-4_realtype*
pinfcorr)
then
701 p(i, j, k) =
p(i, j, k)
717 logical,
intent(in) :: includehalos
719 integer(kind=inttype) :: i, j, k, ii
720 real(kind=realtype) :: gm1, v2
721 integer(kind=inttype) :: ibeg, iend, isize, jbeg, jend, jsize, kbeg&
726 if (includehalos)
then
744 v2 =
w(i, j, k,
ivx)**2 +
w(i, j, k,
ivy)**2 +
w(i, j, k,
ivz)&
747 if (
p(i, j, k) .lt. 1.e-4_realtype*
pinfcorr)
then
750 p(i, j, k) =
p(i, j, k)
775 integer(kind=inttype),
intent(in) :: ibeg, iend, jbeg, jend, kbeg, &
777 integer(kind=inttype),
intent(in) :: pointeroffset
781 real(kind=realtype),
parameter :: dtstop=0.01_realtype
782 real(kind=realtype),
parameter :: twothird=
two*
third
786 integer(kind=inttype) :: i, j, k, ip, jp, kp, nn, ii, start
787 real(kind=realtype) :: gm1, factk, v2, scale, e0, e
788 real(kind=realtype) :: trefinv, t, dt, t2, alp, cv
792 real(kind=realtype) :: abs0
807 kp = k + pointeroffset
809 jp = j + pointeroffset
811 ip = i + pointeroffset
812 v2 =
w(ip, jp, kp,
ivx)**2 +
w(ip, jp, kp,
ivy)**2 +
w(ip, &
816 if (
w(i, j, k,
irhoe) .lt. 1.e-5_realtype*
pinf)
then
827 kp = k + pointeroffset
829 jp = j + pointeroffset
831 ip = i + pointeroffset
848 kp = k + pointeroffset
850 jp = j + pointeroffset
852 ip = i + pointeroffset
856 v2 =
w(ip, jp, kp,
ivx)**2 +
w(ip, jp, kp,
ivy)**2 +
w(ip, &
865 kp = k + pointeroffset
867 jp = j + pointeroffset
869 ip = i + pointeroffset
872 e0 = scale*
w(i, j, k,
irhoe)
874 if (e0 .le.
cpeint(0))
then
892 if (e0 .gt.
cpeint(nn))
then
898 else if (e0 .ge.
cpeint(nn-1))
then
921 if (
cptempfit(nn)%exponents(ii) .eq. -1_inttype) &
923 e = e +
cptempfit(nn)%constants(ii)*log(t)
925 e = e +
cptempfit(nn)%constants(ii)*t2*t/(&
939 if (abs0 .lt. dtstop)
then
955 if (
w(i, j, k,
irhoe) .lt. 1.e-5_realtype*
pinf)
then
961 & twothird*
w(ip, jp, kp,
irho)*
w(ip, jp, kp,
itu1)
989 logical,
intent(in) :: includehalos
993 real(kind=realtype),
parameter :: twothird=
two*
third
997 integer(kind=inttype) :: i, j, k, ii
998 real(kind=realtype) :: musuth, tsuth, ssuth, t, pp
999 real(kind=realtype) :: musuthd, tsuthd, ssuthd, td, ppd
1000 logical :: correctfork
1001 integer(kind=inttype) :: ibeg, iend, isize, jbeg, jend, jsize, kbeg&
1003 real(kind=realtype) :: temp
1004 real(kind=realtype) :: temp0
1005 real(kind=realtype) :: temp1
1021 if (includehalos)
then
1038 if (correctfork)
then
1043 temp =
w(i, j, k,
itu1)
1044 temp0 =
w(i, j, k,
irho)
1045 ppd =
pd(i, j, k) - twothird*(temp*
wd(i, j, k,
irho)+temp0&
1047 pp =
p(i, j, k) - twothird*(temp0*temp)
1048 temp0 =
w(i, j, k,
irho)
1054 temp = temp0**1.5_realtype
1055 temp1 = musuth*(tsuth+ssuth)/(t+ssuth)
1056 rlvd(i, j, k) = temp*((tsuth+ssuth)*musuthd+musuth*(tsuthd&
1057 & +ssuthd)-temp1*(td+ssuthd))/(t+ssuth) + temp1*&
1058 & 1.5_realtype*temp0**0.5*(td-temp0*tsuthd)/tsuth
1059 rlv(i, j, k) = temp1*temp
1072 temp1 =
w(i, j, k,
irho)
1073 temp0 =
p(i, j, k)/(
rgas*temp1)
1078 temp0 = temp1**1.5_realtype
1079 temp = musuth*(tsuth+ssuth)/(t+ssuth)
1080 rlvd(i, j, k) = temp0*((tsuth+ssuth)*musuthd+musuth*(&
1081 & tsuthd+ssuthd)-temp*(td+ssuthd))/(t+ssuth) + temp*&
1082 & 1.5_realtype*temp1**0.5*(td-temp1*tsuthd)/tsuth
1083 rlv(i, j, k) = temp*temp0
1106 logical,
intent(in) :: includehalos
1110 real(kind=realtype),
parameter :: twothird=
two*
third
1114 integer(kind=inttype) :: i, j, k, ii
1115 real(kind=realtype) :: musuth, tsuth, ssuth, t, pp
1116 logical :: correctfork
1117 integer(kind=inttype) :: ibeg, iend, isize, jbeg, jend, jsize, kbeg&
1130 if (includehalos)
then
1147 if (correctfork)
then
1151 pp =
p(i, j, k) - twothird*
w(i, j, k,
irho)*
w(i, j, k, &
1154 rlv(i, j, k) = musuth*((tsuth+ssuth)/(t+ssuth))*(t/tsuth)&
1168 rlv(i, j, k) = musuth*((tsuth+ssuth)/(t+ssuth))*(t/tsuth)&
1190 real(kind=realtype),
dimension(3) :: refdir1, refdir2
1221 real(kind=realtype),
dimension(3) :: refdir1, refdir2
1247 & , rotationpoint, t)
1266 real(kind=realtype),
intent(in) :: t
1267 real(kind=realtype),
dimension(3),
intent(out) :: rotationpoint
1268 real(kind=realtype),
dimension(3, 3),
intent(out) :: rotationmatrix
1269 real(kind=realtype),
dimension(3, 3),
intent(out) :: rotationmatrixd
1273 integer(kind=inttype) :: i, j
1274 real(kind=realtype) :: phi, dphix, dphiy, dphiz
1275 real(kind=realtype) :: dphixd, dphiyd, dphizd
1276 real(kind=realtype) :: cosx, cosy, cosz, sinx, siny, sinz
1277 real(kind=realtype),
dimension(3, 3) :: dm, m
1278 real(kind=realtype),
dimension(3, 3) :: dmd
1281 real(kind=realtype) :: temp
1314 dmd(1, 1) = -(cosy*sinz*dphizd)
1315 dm(1, 1) = -(cosy*sinz*dphiz)
1316 temp = -(cosx*cosz) - sinx*siny*sinz
1317 dmd(1, 2) = temp*dphizd
1318 dm(1, 2) = temp*dphiz
1319 temp = sinx*cosz - cosx*siny*sinz
1320 dmd(1, 3) = temp*dphizd
1321 dm(1, 3) = temp*dphiz
1322 dmd(2, 1) = cosy*cosz*dphizd
1323 dm(2, 1) = cosy*cosz*dphiz
1324 temp = sinx*siny*cosz - cosx*sinz
1325 dmd(2, 2) = temp*dphizd
1326 dm(2, 2) = temp*dphiz
1327 temp = cosx*siny*cosz + sinx*sinz
1328 dmd(2, 3) = temp*dphizd
1329 dm(2, 3) = temp*dphiz
1337 dmd(1, 1) = dmd(1, 1) - siny*cosz*dphiyd
1338 dm(1, 1) = dm(1, 1) - siny*cosz*dphiy
1339 dmd(1, 2) = dmd(1, 2) + sinx*cosy*cosz*dphiyd
1340 dm(1, 2) = dm(1, 2) + sinx*cosy*cosz*dphiy
1341 dmd(1, 3) = dmd(1, 3) + cosx*cosy*cosz*dphiyd
1342 dm(1, 3) = dm(1, 3) + cosx*cosy*cosz*dphiy
1343 dmd(2, 1) = dmd(2, 1) - siny*sinz*dphiyd
1344 dm(2, 1) = dm(2, 1) - siny*sinz*dphiy
1345 dmd(2, 2) = dmd(2, 2) + sinx*cosy*sinz*dphiyd
1346 dm(2, 2) = dm(2, 2) + sinx*cosy*sinz*dphiy
1347 dmd(2, 3) = dmd(2, 3) + cosx*cosy*sinz*dphiyd
1348 dm(2, 3) = dm(2, 3) + cosx*cosy*sinz*dphiy
1349 dmd(3, 1) = dmd(3, 1) - cosy*dphiyd
1350 dm(3, 1) = dm(3, 1) - cosy*dphiy
1351 dmd(3, 2) = dmd(3, 2) - sinx*siny*dphiyd
1352 dm(3, 2) = dm(3, 2) - sinx*siny*dphiy
1353 dmd(3, 3) = dmd(3, 3) - cosx*siny*dphiyd
1354 dm(3, 3) = dm(3, 3) - cosx*siny*dphiy
1356 temp = sinx*sinz + cosx*siny*cosz
1357 dmd(1, 2) = dmd(1, 2) + temp*dphixd
1358 dm(1, 2) = dm(1, 2) + temp*dphix
1359 temp = cosx*sinz - sinx*siny*cosz
1360 dmd(1, 3) = dmd(1, 3) + temp*dphixd
1361 dm(1, 3) = dm(1, 3) + temp*dphix
1362 temp = cosx*siny*sinz - sinx*cosz
1363 dmd(2, 2) = dmd(2, 2) + temp*dphixd
1364 dm(2, 2) = dm(2, 2) + temp*dphix
1365 temp = sinx*siny*sinz + cosx*cosz
1366 dmd(2, 3) = dmd(2, 3) - temp*dphixd
1367 dm(2, 3) = dm(2, 3) - temp*dphix
1368 dmd(3, 2) = dmd(3, 2) + cosx*cosy*dphixd
1369 dm(3, 2) = dm(3, 2) + cosx*cosy*dphix
1370 dmd(3, 3) = dmd(3, 3) - sinx*cosy*dphixd
1371 dm(3, 3) = dm(3, 3) - sinx*cosy*dphix
1376 m(1, 2) = sinx*siny*cosz - cosx*sinz
1377 m(2, 2) = sinx*siny*sinz + cosx*cosz
1379 m(1, 3) = cosx*siny*cosz + sinx*sinz
1380 m(2, 3) = cosx*siny*sinz - sinx*cosz
1382 rotationmatrixd = 0.0_8
1388 rotationmatrixd(i, j) = m(j, 1)*dmd(i, 1) + m(j, 2)*dmd(i, 2) + &
1390 rotationmatrix(i, j) = dm(i, 1)*m(j, 1) + dm(i, 2)*m(j, 2) + dm(&
1426 real(kind=realtype),
intent(in) :: t
1427 real(kind=realtype),
dimension(3),
intent(out) :: rotationpoint
1428 real(kind=realtype),
dimension(3, 3),
intent(out) :: rotationmatrix
1432 integer(kind=inttype) :: i, j
1433 real(kind=realtype) :: phi, dphix, dphiy, dphiz
1434 real(kind=realtype) :: cosx, cosy, cosz, sinx, siny, sinz
1435 real(kind=realtype),
dimension(3, 3) :: dm, m
1469 dm(1, 1) = -(cosy*sinz*dphiz)
1470 dm(1, 2) = (-(cosx*cosz)-sinx*siny*sinz)*dphiz
1471 dm(1, 3) = (sinx*cosz-cosx*siny*sinz)*dphiz
1472 dm(2, 1) = cosy*cosz*dphiz
1473 dm(2, 2) = (sinx*siny*cosz-cosx*sinz)*dphiz
1474 dm(2, 3) = (cosx*siny*cosz+sinx*sinz)*dphiz
1479 dm(1, 1) = dm(1, 1) - siny*cosz*dphiy
1480 dm(1, 2) = dm(1, 2) + sinx*cosy*cosz*dphiy
1481 dm(1, 3) = dm(1, 3) + cosx*cosy*cosz*dphiy
1482 dm(2, 1) = dm(2, 1) - siny*sinz*dphiy
1483 dm(2, 2) = dm(2, 2) + sinx*cosy*sinz*dphiy
1484 dm(2, 3) = dm(2, 3) + cosx*cosy*sinz*dphiy
1485 dm(3, 1) = dm(3, 1) - cosy*dphiy
1486 dm(3, 2) = dm(3, 2) - sinx*siny*dphiy
1487 dm(3, 3) = dm(3, 3) - cosx*siny*dphiy
1489 dm(1, 2) = dm(1, 2) + (sinx*sinz+cosx*siny*cosz)*dphix
1490 dm(1, 3) = dm(1, 3) + (cosx*sinz-sinx*siny*cosz)*dphix
1491 dm(2, 2) = dm(2, 2) + (cosx*siny*sinz-sinx*cosz)*dphix
1492 dm(2, 3) = dm(2, 3) - (sinx*siny*sinz+cosx*cosz)*dphix
1493 dm(3, 2) = dm(3, 2) + cosx*cosy*dphix
1494 dm(3, 3) = dm(3, 3) - sinx*cosy*dphix
1499 m(1, 2) = sinx*siny*cosz - cosx*sinz
1500 m(2, 2) = sinx*siny*sinz + cosx*cosz
1502 m(1, 3) = cosx*siny*cosz + sinx*sinz
1503 m(2, 3) = cosx*siny*sinz - sinx*cosz
1510 rotationmatrix(i, j) = dm(i, 1)*m(j, 1) + dm(i, 2)*m(j, 2) + dm(&
1532 & winddirection, winddirectiond, liftindex)
1557 real(kind=realtype),
dimension(3),
intent(in) :: refdirection
1558 real(kind=realtype) :: alpha, beta
1559 real(kind=realtype) :: alphad, betad
1560 real(kind=realtype),
dimension(3),
intent(out) :: winddirection
1561 real(kind=realtype),
dimension(3),
intent(out) :: winddirectiond
1562 integer(kind=inttype) :: liftindex
1566 real(kind=realtype) :: rnorm, x1, y1, z1, xbn, ybn, zbn, xw, yw, zw
1567 real(kind=realtype) :: x1d, y1d, z1d, xbnd, ybnd, zbnd, xwd, ywd, &
1569 real(kind=realtype) :: tmp
1570 real(kind=realtype) :: tmpd
1572 real(kind=realtype) :: arg1
1574 arg1 = refdirection(1)**2 + refdirection(2)**2 + refdirection(3)**2
1576 xbn = refdirection(1)/rnorm
1577 ybn = refdirection(2)/rnorm
1578 zbn = refdirection(3)/rnorm
1590 if (liftindex .eq. 2)
then
1600 & , xbnd, ybn, ybnd, zbn, zbnd)
1606 & , x1d, y1, y1d, z1, z1d)
1607 else if (liftindex .eq. 3)
then
1615 & , xbn, xbnd, ybn, ybnd, zbn, zbnd)
1619 & x1, x1d, y1, y1d, z1, z1d)
1621 call terminate(
'getdirvector',
'invalid lift direction')
1626 winddirectiond = 0.0_8
1627 winddirectiond(1) = xwd
1628 winddirection(1) = xw
1629 winddirectiond(2) = ywd
1630 winddirection(2) = yw
1631 winddirectiond(3) = zwd
1632 winddirection(3) = zw
1661 real(kind=realtype),
dimension(3),
intent(in) :: refdirection
1662 real(kind=realtype) :: alpha, beta
1663 real(kind=realtype),
dimension(3),
intent(out) :: winddirection
1664 integer(kind=inttype) :: liftindex
1668 real(kind=realtype) :: rnorm, x1, y1, z1, xbn, ybn, zbn, xw, yw, zw
1669 real(kind=realtype) :: tmp
1671 real(kind=realtype) :: arg1
1673 arg1 = refdirection(1)**2 + refdirection(2)**2 + refdirection(3)**2
1675 xbn = refdirection(1)/rnorm
1676 ybn = refdirection(2)/rnorm
1677 zbn = refdirection(3)/rnorm
1689 if (liftindex .eq. 2)
then
1699 else if (liftindex .eq. 3)
then
1708 call terminate(
'getdirvector',
'invalid lift direction')
1710 winddirection(1) = xw
1711 winddirection(2) = yw
1712 winddirection(3) = zw
1719 & angled, x, xd, y, yd, z, zd)
1735 integer(kind=inttype),
intent(in) :: iaxis
1736 real(kind=
realtype),
intent(in) :: angle, x, y, z
1737 real(kind=
realtype),
intent(in) :: angled, xd, yd, zd
1738 real(kind=
realtype),
intent(out) :: xp, yp, zp
1739 real(kind=
realtype),
intent(out) :: xpd, ypd, zpd
1749 xp = 1.*x + 0.*y + 0.*z
1752 ypd = temp*yd - (y*sin(angle)-z*cos(angle))*angled + temp0*zd
1753 yp = 0.*x + temp*y + temp0*z
1756 zpd = temp*zd - temp0*yd - (y*cos(angle)+z*sin(angle))*angled
1757 zp = 0.*x - temp0*y + temp*z
1762 xpd = temp0*xd - (x*sin(angle)+z*cos(angle))*angled - temp*zd
1763 xp = temp0*x + 0.*y - temp*z
1765 yp = 0.*x + 1.*y + 0.*z
1768 zpd = (x*cos(angle)-z*sin(angle))*angled + temp0*xd + temp*zd
1769 zp = temp0*x + 0.*y + temp*z
1774 xpd = temp0*xd - (x*sin(angle)-y*cos(angle))*angled + temp*yd
1775 xp = temp0*x + temp*y + 0.*z
1778 ypd = temp0*yd - (y*sin(angle)+x*cos(angle))*angled - temp*xd
1779 yp = temp0*y - temp*x + 0.*z
1781 zp = 0.*x + 0.*y + 1.*z
1783 write(*, *)
'vectorrotation called with invalid arguments'
1804 integer(kind=inttype),
intent(in) :: iaxis
1805 real(kind=
realtype),
intent(in) :: angle, x, y, z
1806 real(kind=
realtype),
intent(out) :: xp, yp, zp
1813 xp = 1.*x + 0.*y + 0.*z
1814 yp = 0.*x + cos(angle)*y + sin(angle)*z
1815 zp = 0.*x - sin(angle)*y + cos(angle)*z
1818 xp = cos(angle)*x + 0.*y - sin(angle)*z
1819 yp = 0.*x + 1.*y + 0.*z
1820 zp = sin(angle)*x + 0.*y + cos(angle)*z
1823 xp = cos(angle)*x + sin(angle)*y + 0.*z
1824 yp = -(sin(angle)*x) + cos(angle)*y + 0.*z
1825 zp = 0.*x + 0.*y + 1.*z
1827 write(*, *)
'vectorrotation called with invalid arguments'
1855 integer(kind=inttype) :: i, j, k
1856 integer(kind=inttype) :: k1, kk
1857 integer(kind=inttype) :: istart, iend, isize, ii
1858 integer(kind=inttype) :: jstart, jend, jsize
1859 integer(kind=inttype) :: kstart, kend, ksize
1860 real(kind=realtype) :: oneoverv, ubar, vbar, wbar, a2
1861 real(kind=realtype) :: oneovervd, ubard, vbard, wbard, a2d
1862 real(kind=realtype) :: sx, sx1, sy, sy1, sz, sz1
1863 real(kind=realtype) :: sxd, syd, szd
1864 real(kind=realtype) :: temp
1899 sxd =
skd(i, j, k-1, 1) +
skd(i+1, j, k-1, 1) +
skd(i, j+1, k-&
1900 & 1, 1) +
skd(i+1, j+1, k-1, 1) +
skd(i, j, k, 1) +
skd(i+1, j&
1901 & , k, 1) +
skd(i, j+1, k, 1) +
skd(i+1, j+1, k, 1)
1902 sx =
sk(i, j, k-1, 1) +
sk(i+1, j, k-1, 1) +
sk(i, j+1, k-1, 1&
1903 & ) +
sk(i+1, j+1, k-1, 1) +
sk(i, j, k, 1) +
sk(i+1, j, k, 1)&
1904 & +
sk(i, j+1, k, 1) +
sk(i+1, j+1, k, 1)
1905 syd =
skd(i, j, k-1, 2) +
skd(i+1, j, k-1, 2) +
skd(i, j+1, k-&
1906 & 1, 2) +
skd(i+1, j+1, k-1, 2) +
skd(i, j, k, 2) +
skd(i+1, j&
1907 & , k, 2) +
skd(i, j+1, k, 2) +
skd(i+1, j+1, k, 2)
1908 sy =
sk(i, j, k-1, 2) +
sk(i+1, j, k-1, 2) +
sk(i, j+1, k-1, 2&
1909 & ) +
sk(i+1, j+1, k-1, 2) +
sk(i, j, k, 2) +
sk(i+1, j, k, 2)&
1910 & +
sk(i, j+1, k, 2) +
sk(i+1, j+1, k, 2)
1911 szd =
skd(i, j, k-1, 3) +
skd(i+1, j, k-1, 3) +
skd(i, j+1, k-&
1912 & 1, 3) +
skd(i+1, j+1, k-1, 3) +
skd(i, j, k, 3) +
skd(i+1, j&
1913 & , k, 3) +
skd(i, j+1, k, 3) +
skd(i+1, j+1, k, 3)
1914 sz =
sk(i, j, k-1, 3) +
sk(i+1, j, k-1, 3) +
sk(i, j+1, k-1, 3&
1915 & ) +
sk(i+1, j+1, k-1, 3) +
sk(i, j, k, 3) +
sk(i+1, j, k, 3)&
1916 & +
sk(i, j+1, k, 3) +
sk(i+1, j+1, k, 3)
1941 uxd(i, j, k-1) =
uxd(i, j, k-1) + sx*ubard + ubar*sxd
1942 ux(i, j, k-1) =
ux(i, j, k-1) + ubar*sx
1943 uyd(i, j, k-1) =
uyd(i, j, k-1) + sy*ubard + ubar*syd
1944 uy(i, j, k-1) =
uy(i, j, k-1) + ubar*sy
1945 uzd(i, j, k-1) =
uzd(i, j, k-1) + sz*ubard + ubar*szd
1946 uz(i, j, k-1) =
uz(i, j, k-1) + ubar*sz
1947 vxd(i, j, k-1) =
vxd(i, j, k-1) + sx*vbard + vbar*sxd
1948 vx(i, j, k-1) =
vx(i, j, k-1) + vbar*sx
1949 vyd(i, j, k-1) =
vyd(i, j, k-1) + sy*vbard + vbar*syd
1950 vy(i, j, k-1) =
vy(i, j, k-1) + vbar*sy
1951 vzd(i, j, k-1) =
vzd(i, j, k-1) + sz*vbard + vbar*szd
1952 vz(i, j, k-1) =
vz(i, j, k-1) + vbar*sz
1953 wxd(i, j, k-1) =
wxd(i, j, k-1) + sx*wbard + wbar*sxd
1954 wx(i, j, k-1) =
wx(i, j, k-1) + wbar*sx
1955 wyd(i, j, k-1) =
wyd(i, j, k-1) + sy*wbard + wbar*syd
1956 wy(i, j, k-1) =
wy(i, j, k-1) + wbar*sy
1957 wzd(i, j, k-1) =
wzd(i, j, k-1) + sz*wbard + wbar*szd
1958 wz(i, j, k-1) =
wz(i, j, k-1) + wbar*sz
1959 qxd(i, j, k-1) =
qxd(i, j, k-1) - sx*a2d - a2*sxd
1960 qx(i, j, k-1) =
qx(i, j, k-1) - a2*sx
1961 qyd(i, j, k-1) =
qyd(i, j, k-1) - sy*a2d - a2*syd
1962 qy(i, j, k-1) =
qy(i, j, k-1) - a2*sy
1963 qzd(i, j, k-1) =
qzd(i, j, k-1) - sz*a2d - a2*szd
1964 qz(i, j, k-1) =
qz(i, j, k-1) - a2*sz
1967 uxd(i, j, k) =
uxd(i, j, k) - sx*ubard - ubar*sxd
1968 ux(i, j, k) =
ux(i, j, k) - ubar*sx
1969 uyd(i, j, k) =
uyd(i, j, k) - sy*ubard - ubar*syd
1970 uy(i, j, k) =
uy(i, j, k) - ubar*sy
1971 uzd(i, j, k) =
uzd(i, j, k) - sz*ubard - ubar*szd
1972 uz(i, j, k) =
uz(i, j, k) - ubar*sz
1973 vxd(i, j, k) =
vxd(i, j, k) - sx*vbard - vbar*sxd
1974 vx(i, j, k) =
vx(i, j, k) - vbar*sx
1975 vyd(i, j, k) =
vyd(i, j, k) - sy*vbard - vbar*syd
1976 vy(i, j, k) =
vy(i, j, k) - vbar*sy
1977 vzd(i, j, k) =
vzd(i, j, k) - sz*vbard - vbar*szd
1978 vz(i, j, k) =
vz(i, j, k) - vbar*sz
1979 wxd(i, j, k) =
wxd(i, j, k) - sx*wbard - wbar*sxd
1980 wx(i, j, k) =
wx(i, j, k) - wbar*sx
1981 wyd(i, j, k) =
wyd(i, j, k) - sy*wbard - wbar*syd
1982 wy(i, j, k) =
wy(i, j, k) - wbar*sy
1983 wzd(i, j, k) =
wzd(i, j, k) - sz*wbard - wbar*szd
1984 wz(i, j, k) =
wz(i, j, k) - wbar*sz
1985 qxd(i, j, k) =
qxd(i, j, k) + sx*a2d + a2*sxd
1986 qx(i, j, k) =
qx(i, j, k) + a2*sx
1987 qyd(i, j, k) =
qyd(i, j, k) + sy*a2d + a2*syd
1988 qy(i, j, k) =
qy(i, j, k) + a2*sy
1989 qzd(i, j, k) =
qzd(i, j, k) + sz*a2d + a2*szd
1990 qz(i, j, k) =
qz(i, j, k) + a2*sz
2004 sxd =
sjd(i, j-1, k, 1) +
sjd(i+1, j-1, k, 1) +
sjd(i, j-1, k+&
2005 & 1, 1) +
sjd(i+1, j-1, k+1, 1) +
sjd(i, j, k, 1) +
sjd(i+1, j&
2006 & , k, 1) +
sjd(i, j, k+1, 1) +
sjd(i+1, j, k+1, 1)
2007 sx =
sj(i, j-1, k, 1) +
sj(i+1, j-1, k, 1) +
sj(i, j-1, k+1, 1&
2008 & ) +
sj(i+1, j-1, k+1, 1) +
sj(i, j, k, 1) +
sj(i+1, j, k, 1)&
2009 & +
sj(i, j, k+1, 1) +
sj(i+1, j, k+1, 1)
2010 syd =
sjd(i, j-1, k, 2) +
sjd(i+1, j-1, k, 2) +
sjd(i, j-1, k+&
2011 & 1, 2) +
sjd(i+1, j-1, k+1, 2) +
sjd(i, j, k, 2) +
sjd(i+1, j&
2012 & , k, 2) +
sjd(i, j, k+1, 2) +
sjd(i+1, j, k+1, 2)
2013 sy =
sj(i, j-1, k, 2) +
sj(i+1, j-1, k, 2) +
sj(i, j-1, k+1, 2&
2014 & ) +
sj(i+1, j-1, k+1, 2) +
sj(i, j, k, 2) +
sj(i+1, j, k, 2)&
2015 & +
sj(i, j, k+1, 2) +
sj(i+1, j, k+1, 2)
2016 szd =
sjd(i, j-1, k, 3) +
sjd(i+1, j-1, k, 3) +
sjd(i, j-1, k+&
2017 & 1, 3) +
sjd(i+1, j-1, k+1, 3) +
sjd(i, j, k, 3) +
sjd(i+1, j&
2018 & , k, 3) +
sjd(i, j, k+1, 3) +
sjd(i+1, j, k+1, 3)
2019 sz =
sj(i, j-1, k, 3) +
sj(i+1, j-1, k, 3) +
sj(i, j-1, k+1, 3&
2020 & ) +
sj(i+1, j-1, k+1, 3) +
sj(i, j, k, 3) +
sj(i+1, j, k, 3)&
2021 & +
sj(i, j, k+1, 3) +
sj(i+1, j, k+1, 3)
2046 uxd(i, j-1, k) =
uxd(i, j-1, k) + sx*ubard + ubar*sxd
2047 ux(i, j-1, k) =
ux(i, j-1, k) + ubar*sx
2048 uyd(i, j-1, k) =
uyd(i, j-1, k) + sy*ubard + ubar*syd
2049 uy(i, j-1, k) =
uy(i, j-1, k) + ubar*sy
2050 uzd(i, j-1, k) =
uzd(i, j-1, k) + sz*ubard + ubar*szd
2051 uz(i, j-1, k) =
uz(i, j-1, k) + ubar*sz
2052 vxd(i, j-1, k) =
vxd(i, j-1, k) + sx*vbard + vbar*sxd
2053 vx(i, j-1, k) =
vx(i, j-1, k) + vbar*sx
2054 vyd(i, j-1, k) =
vyd(i, j-1, k) + sy*vbard + vbar*syd
2055 vy(i, j-1, k) =
vy(i, j-1, k) + vbar*sy
2056 vzd(i, j-1, k) =
vzd(i, j-1, k) + sz*vbard + vbar*szd
2057 vz(i, j-1, k) =
vz(i, j-1, k) + vbar*sz
2058 wxd(i, j-1, k) =
wxd(i, j-1, k) + sx*wbard + wbar*sxd
2059 wx(i, j-1, k) =
wx(i, j-1, k) + wbar*sx
2060 wyd(i, j-1, k) =
wyd(i, j-1, k) + sy*wbard + wbar*syd
2061 wy(i, j-1, k) =
wy(i, j-1, k) + wbar*sy
2062 wzd(i, j-1, k) =
wzd(i, j-1, k) + sz*wbard + wbar*szd
2063 wz(i, j-1, k) =
wz(i, j-1, k) + wbar*sz
2064 qxd(i, j-1, k) =
qxd(i, j-1, k) - sx*a2d - a2*sxd
2065 qx(i, j-1, k) =
qx(i, j-1, k) - a2*sx
2066 qyd(i, j-1, k) =
qyd(i, j-1, k) - sy*a2d - a2*syd
2067 qy(i, j-1, k) =
qy(i, j-1, k) - a2*sy
2068 qzd(i, j-1, k) =
qzd(i, j-1, k) - sz*a2d - a2*szd
2069 qz(i, j-1, k) =
qz(i, j-1, k) - a2*sz
2072 uxd(i, j, k) =
uxd(i, j, k) - sx*ubard - ubar*sxd
2073 ux(i, j, k) =
ux(i, j, k) - ubar*sx
2074 uyd(i, j, k) =
uyd(i, j, k) - sy*ubard - ubar*syd
2075 uy(i, j, k) =
uy(i, j, k) - ubar*sy
2076 uzd(i, j, k) =
uzd(i, j, k) - sz*ubard - ubar*szd
2077 uz(i, j, k) =
uz(i, j, k) - ubar*sz
2078 vxd(i, j, k) =
vxd(i, j, k) - sx*vbard - vbar*sxd
2079 vx(i, j, k) =
vx(i, j, k) - vbar*sx
2080 vyd(i, j, k) =
vyd(i, j, k) - sy*vbard - vbar*syd
2081 vy(i, j, k) =
vy(i, j, k) - vbar*sy
2082 vzd(i, j, k) =
vzd(i, j, k) - sz*vbard - vbar*szd
2083 vz(i, j, k) =
vz(i, j, k) - vbar*sz
2084 wxd(i, j, k) =
wxd(i, j, k) - sx*wbard - wbar*sxd
2085 wx(i, j, k) =
wx(i, j, k) - wbar*sx
2086 wyd(i, j, k) =
wyd(i, j, k) - sy*wbard - wbar*syd
2087 wy(i, j, k) =
wy(i, j, k) - wbar*sy
2088 wzd(i, j, k) =
wzd(i, j, k) - sz*wbard - wbar*szd
2089 wz(i, j, k) =
wz(i, j, k) - wbar*sz
2090 qxd(i, j, k) =
qxd(i, j, k) + sx*a2d + a2*sxd
2091 qx(i, j, k) =
qx(i, j, k) + a2*sx
2092 qyd(i, j, k) =
qyd(i, j, k) + sy*a2d + a2*syd
2093 qy(i, j, k) =
qy(i, j, k) + a2*sy
2094 qzd(i, j, k) =
qzd(i, j, k) + sz*a2d + a2*szd
2095 qz(i, j, k) =
qz(i, j, k) + a2*sz
2109 sxd =
sid(i-1, j, k, 1) +
sid(i-1, j+1, k, 1) +
sid(i-1, j, k+&
2110 & 1, 1) +
sid(i-1, j+1, k+1, 1) +
sid(i, j, k, 1) +
sid(i, j+1&
2111 & , k, 1) +
sid(i, j, k+1, 1) +
sid(i, j+1, k+1, 1)
2112 sx =
si(i-1, j, k, 1) +
si(i-1, j+1, k, 1) +
si(i-1, j, k+1, 1&
2113 & ) +
si(i-1, j+1, k+1, 1) +
si(i, j, k, 1) +
si(i, j+1, k, 1)&
2114 & +
si(i, j, k+1, 1) +
si(i, j+1, k+1, 1)
2115 syd =
sid(i-1, j, k, 2) +
sid(i-1, j+1, k, 2) +
sid(i-1, j, k+&
2116 & 1, 2) +
sid(i-1, j+1, k+1, 2) +
sid(i, j, k, 2) +
sid(i, j+1&
2117 & , k, 2) +
sid(i, j, k+1, 2) +
sid(i, j+1, k+1, 2)
2118 sy =
si(i-1, j, k, 2) +
si(i-1, j+1, k, 2) +
si(i-1, j, k+1, 2&
2119 & ) +
si(i-1, j+1, k+1, 2) +
si(i, j, k, 2) +
si(i, j+1, k, 2)&
2120 & +
si(i, j, k+1, 2) +
si(i, j+1, k+1, 2)
2121 szd =
sid(i-1, j, k, 3) +
sid(i-1, j+1, k, 3) +
sid(i-1, j, k+&
2122 & 1, 3) +
sid(i-1, j+1, k+1, 3) +
sid(i, j, k, 3) +
sid(i, j+1&
2123 & , k, 3) +
sid(i, j, k+1, 3) +
sid(i, j+1, k+1, 3)
2124 sz =
si(i-1, j, k, 3) +
si(i-1, j+1, k, 3) +
si(i-1, j, k+1, 3&
2125 & ) +
si(i-1, j+1, k+1, 3) +
si(i, j, k, 3) +
si(i, j+1, k, 3)&
2126 & +
si(i, j, k+1, 3) +
si(i, j+1, k+1, 3)
2151 uxd(i-1, j, k) =
uxd(i-1, j, k) + sx*ubard + ubar*sxd
2152 ux(i-1, j, k) =
ux(i-1, j, k) + ubar*sx
2153 uyd(i-1, j, k) =
uyd(i-1, j, k) + sy*ubard + ubar*syd
2154 uy(i-1, j, k) =
uy(i-1, j, k) + ubar*sy
2155 uzd(i-1, j, k) =
uzd(i-1, j, k) + sz*ubard + ubar*szd
2156 uz(i-1, j, k) =
uz(i-1, j, k) + ubar*sz
2157 vxd(i-1, j, k) =
vxd(i-1, j, k) + sx*vbard + vbar*sxd
2158 vx(i-1, j, k) =
vx(i-1, j, k) + vbar*sx
2159 vyd(i-1, j, k) =
vyd(i-1, j, k) + sy*vbard + vbar*syd
2160 vy(i-1, j, k) =
vy(i-1, j, k) + vbar*sy
2161 vzd(i-1, j, k) =
vzd(i-1, j, k) + sz*vbard + vbar*szd
2162 vz(i-1, j, k) =
vz(i-1, j, k) + vbar*sz
2163 wxd(i-1, j, k) =
wxd(i-1, j, k) + sx*wbard + wbar*sxd
2164 wx(i-1, j, k) =
wx(i-1, j, k) + wbar*sx
2165 wyd(i-1, j, k) =
wyd(i-1, j, k) + sy*wbard + wbar*syd
2166 wy(i-1, j, k) =
wy(i-1, j, k) + wbar*sy
2167 wzd(i-1, j, k) =
wzd(i-1, j, k) + sz*wbard + wbar*szd
2168 wz(i-1, j, k) =
wz(i-1, j, k) + wbar*sz
2169 qxd(i-1, j, k) =
qxd(i-1, j, k) - sx*a2d - a2*sxd
2170 qx(i-1, j, k) =
qx(i-1, j, k) - a2*sx
2171 qyd(i-1, j, k) =
qyd(i-1, j, k) - sy*a2d - a2*syd
2172 qy(i-1, j, k) =
qy(i-1, j, k) - a2*sy
2173 qzd(i-1, j, k) =
qzd(i-1, j, k) - sz*a2d - a2*szd
2174 qz(i-1, j, k) =
qz(i-1, j, k) - a2*sz
2177 uxd(i, j, k) =
uxd(i, j, k) - sx*ubard - ubar*sxd
2178 ux(i, j, k) =
ux(i, j, k) - ubar*sx
2179 uyd(i, j, k) =
uyd(i, j, k) - sy*ubard - ubar*syd
2180 uy(i, j, k) =
uy(i, j, k) - ubar*sy
2181 uzd(i, j, k) =
uzd(i, j, k) - sz*ubard - ubar*szd
2182 uz(i, j, k) =
uz(i, j, k) - ubar*sz
2183 vxd(i, j, k) =
vxd(i, j, k) - sx*vbard - vbar*sxd
2184 vx(i, j, k) =
vx(i, j, k) - vbar*sx
2185 vyd(i, j, k) =
vyd(i, j, k) - sy*vbard - vbar*syd
2186 vy(i, j, k) =
vy(i, j, k) - vbar*sy
2187 vzd(i, j, k) =
vzd(i, j, k) - sz*vbard - vbar*szd
2188 vz(i, j, k) =
vz(i, j, k) - vbar*sz
2189 wxd(i, j, k) =
wxd(i, j, k) - sx*wbard - wbar*sxd
2190 wx(i, j, k) =
wx(i, j, k) - wbar*sx
2191 wyd(i, j, k) =
wyd(i, j, k) - sy*wbard - wbar*syd
2192 wy(i, j, k) =
wy(i, j, k) - wbar*sy
2193 wzd(i, j, k) =
wzd(i, j, k) - sz*wbard - wbar*szd
2194 wz(i, j, k) =
wz(i, j, k) - wbar*sz
2195 qxd(i, j, k) =
qxd(i, j, k) + sx*a2d + a2*sxd
2196 qx(i, j, k) =
qx(i, j, k) + a2*sx
2197 qyd(i, j, k) =
qyd(i, j, k) + sy*a2d + a2*syd
2198 qy(i, j, k) =
qy(i, j, k) + a2*sy
2199 qzd(i, j, k) =
qzd(i, j, k) + sz*a2d + a2*szd
2200 qz(i, j, k) =
qz(i, j, k) + a2*sz
2211 & , j, k+1)+
vol(i, j+1, k)+
vol(i, j+1, k+1)+
vol(i+1, j+1, k)+&
2212 &
vol(i+1, j+1, k+1))
2213 oneovervd = -(temp*(
vold(i, j, k)+
vold(i, j, k+1)+
vold(i+1, j&
2214 & , k)+
vold(i+1, j, k+1)+
vold(i, j+1, k)+
vold(i, j+1, k+1)+&
2216 & j, k+1)+
vol(i+1, j, k)+
vol(i+1, j, k+1)+
vol(i, j+1, k)+
vol(i&
2217 & , j+1, k+1)+
vol(i+1, j+1, k)+
vol(i+1, j+1, k+1)))
2221 uxd(i, j, k) = oneoverv*
uxd(i, j, k) +
ux(i, j, k)*oneovervd
2222 ux(i, j, k) =
ux(i, j, k)*oneoverv
2223 uyd(i, j, k) = oneoverv*
uyd(i, j, k) +
uy(i, j, k)*oneovervd
2224 uy(i, j, k) =
uy(i, j, k)*oneoverv
2225 uzd(i, j, k) = oneoverv*
uzd(i, j, k) +
uz(i, j, k)*oneovervd
2226 uz(i, j, k) =
uz(i, j, k)*oneoverv
2227 vxd(i, j, k) = oneoverv*
vxd(i, j, k) +
vx(i, j, k)*oneovervd
2228 vx(i, j, k) =
vx(i, j, k)*oneoverv
2229 vyd(i, j, k) = oneoverv*
vyd(i, j, k) +
vy(i, j, k)*oneovervd
2230 vy(i, j, k) =
vy(i, j, k)*oneoverv
2231 vzd(i, j, k) = oneoverv*
vzd(i, j, k) +
vz(i, j, k)*oneovervd
2232 vz(i, j, k) =
vz(i, j, k)*oneoverv
2233 wxd(i, j, k) = oneoverv*
wxd(i, j, k) +
wx(i, j, k)*oneovervd
2234 wx(i, j, k) =
wx(i, j, k)*oneoverv
2235 wyd(i, j, k) = oneoverv*
wyd(i, j, k) +
wy(i, j, k)*oneovervd
2236 wy(i, j, k) =
wy(i, j, k)*oneoverv
2237 wzd(i, j, k) = oneoverv*
wzd(i, j, k) +
wz(i, j, k)*oneovervd
2238 wz(i, j, k) =
wz(i, j, k)*oneoverv
2239 qxd(i, j, k) = oneoverv*
qxd(i, j, k) +
qx(i, j, k)*oneovervd
2240 qx(i, j, k) =
qx(i, j, k)*oneoverv
2241 qyd(i, j, k) = oneoverv*
qyd(i, j, k) +
qy(i, j, k)*oneovervd
2242 qy(i, j, k) =
qy(i, j, k)*oneoverv
2243 qzd(i, j, k) = oneoverv*
qzd(i, j, k) +
qz(i, j, k)*oneovervd
2244 qz(i, j, k) =
qz(i, j, k)*oneoverv
2261 integer(kind=inttype) :: i, j, k
2262 integer(kind=inttype) :: k1, kk
2263 integer(kind=inttype) :: istart, iend, isize, ii
2264 integer(kind=inttype) :: jstart, jend, jsize
2265 integer(kind=inttype) :: kstart, kend, ksize
2266 real(kind=realtype) :: oneoverv, ubar, vbar, wbar, a2
2267 real(kind=realtype) :: sx, sx1, sy, sy1, sz, sz1
2290 sx =
sk(i, j, k-1, 1) +
sk(i+1, j, k-1, 1) +
sk(i, j+1, k-1, 1&
2291 & ) +
sk(i+1, j+1, k-1, 1) +
sk(i, j, k, 1) +
sk(i+1, j, k, 1)&
2292 & +
sk(i, j+1, k, 1) +
sk(i+1, j+1, k, 1)
2293 sy =
sk(i, j, k-1, 2) +
sk(i+1, j, k-1, 2) +
sk(i, j+1, k-1, 2&
2294 & ) +
sk(i+1, j+1, k-1, 2) +
sk(i, j, k, 2) +
sk(i+1, j, k, 2)&
2295 & +
sk(i, j+1, k, 2) +
sk(i+1, j+1, k, 2)
2296 sz =
sk(i, j, k-1, 3) +
sk(i+1, j, k-1, 3) +
sk(i, j+1, k-1, 3&
2297 & ) +
sk(i+1, j+1, k-1, 3) +
sk(i, j, k, 3) +
sk(i+1, j, k, 3)&
2298 & +
sk(i, j+1, k, 3) +
sk(i+1, j+1, k, 3)
2315 ux(i, j, k-1) =
ux(i, j, k-1) + ubar*sx
2316 uy(i, j, k-1) =
uy(i, j, k-1) + ubar*sy
2317 uz(i, j, k-1) =
uz(i, j, k-1) + ubar*sz
2318 vx(i, j, k-1) =
vx(i, j, k-1) + vbar*sx
2319 vy(i, j, k-1) =
vy(i, j, k-1) + vbar*sy
2320 vz(i, j, k-1) =
vz(i, j, k-1) + vbar*sz
2321 wx(i, j, k-1) =
wx(i, j, k-1) + wbar*sx
2322 wy(i, j, k-1) =
wy(i, j, k-1) + wbar*sy
2323 wz(i, j, k-1) =
wz(i, j, k-1) + wbar*sz
2324 qx(i, j, k-1) =
qx(i, j, k-1) - a2*sx
2325 qy(i, j, k-1) =
qy(i, j, k-1) - a2*sy
2326 qz(i, j, k-1) =
qz(i, j, k-1) - a2*sz
2329 ux(i, j, k) =
ux(i, j, k) - ubar*sx
2330 uy(i, j, k) =
uy(i, j, k) - ubar*sy
2331 uz(i, j, k) =
uz(i, j, k) - ubar*sz
2332 vx(i, j, k) =
vx(i, j, k) - vbar*sx
2333 vy(i, j, k) =
vy(i, j, k) - vbar*sy
2334 vz(i, j, k) =
vz(i, j, k) - vbar*sz
2335 wx(i, j, k) =
wx(i, j, k) - wbar*sx
2336 wy(i, j, k) =
wy(i, j, k) - wbar*sy
2337 wz(i, j, k) =
wz(i, j, k) - wbar*sz
2338 qx(i, j, k) =
qx(i, j, k) + a2*sx
2339 qy(i, j, k) =
qy(i, j, k) + a2*sy
2340 qz(i, j, k) =
qz(i, j, k) + a2*sz
2354 sx =
sj(i, j-1, k, 1) +
sj(i+1, j-1, k, 1) +
sj(i, j-1, k+1, 1&
2355 & ) +
sj(i+1, j-1, k+1, 1) +
sj(i, j, k, 1) +
sj(i+1, j, k, 1)&
2356 & +
sj(i, j, k+1, 1) +
sj(i+1, j, k+1, 1)
2357 sy =
sj(i, j-1, k, 2) +
sj(i+1, j-1, k, 2) +
sj(i, j-1, k+1, 2&
2358 & ) +
sj(i+1, j-1, k+1, 2) +
sj(i, j, k, 2) +
sj(i+1, j, k, 2)&
2359 & +
sj(i, j, k+1, 2) +
sj(i+1, j, k+1, 2)
2360 sz =
sj(i, j-1, k, 3) +
sj(i+1, j-1, k, 3) +
sj(i, j-1, k+1, 3&
2361 & ) +
sj(i+1, j-1, k+1, 3) +
sj(i, j, k, 3) +
sj(i+1, j, k, 3)&
2362 & +
sj(i, j, k+1, 3) +
sj(i+1, j, k+1, 3)
2379 ux(i, j-1, k) =
ux(i, j-1, k) + ubar*sx
2380 uy(i, j-1, k) =
uy(i, j-1, k) + ubar*sy
2381 uz(i, j-1, k) =
uz(i, j-1, k) + ubar*sz
2382 vx(i, j-1, k) =
vx(i, j-1, k) + vbar*sx
2383 vy(i, j-1, k) =
vy(i, j-1, k) + vbar*sy
2384 vz(i, j-1, k) =
vz(i, j-1, k) + vbar*sz
2385 wx(i, j-1, k) =
wx(i, j-1, k) + wbar*sx
2386 wy(i, j-1, k) =
wy(i, j-1, k) + wbar*sy
2387 wz(i, j-1, k) =
wz(i, j-1, k) + wbar*sz
2388 qx(i, j-1, k) =
qx(i, j-1, k) - a2*sx
2389 qy(i, j-1, k) =
qy(i, j-1, k) - a2*sy
2390 qz(i, j-1, k) =
qz(i, j-1, k) - a2*sz
2393 ux(i, j, k) =
ux(i, j, k) - ubar*sx
2394 uy(i, j, k) =
uy(i, j, k) - ubar*sy
2395 uz(i, j, k) =
uz(i, j, k) - ubar*sz
2396 vx(i, j, k) =
vx(i, j, k) - vbar*sx
2397 vy(i, j, k) =
vy(i, j, k) - vbar*sy
2398 vz(i, j, k) =
vz(i, j, k) - vbar*sz
2399 wx(i, j, k) =
wx(i, j, k) - wbar*sx
2400 wy(i, j, k) =
wy(i, j, k) - wbar*sy
2401 wz(i, j, k) =
wz(i, j, k) - wbar*sz
2402 qx(i, j, k) =
qx(i, j, k) + a2*sx
2403 qy(i, j, k) =
qy(i, j, k) + a2*sy
2404 qz(i, j, k) =
qz(i, j, k) + a2*sz
2418 sx =
si(i-1, j, k, 1) +
si(i-1, j+1, k, 1) +
si(i-1, j, k+1, 1&
2419 & ) +
si(i-1, j+1, k+1, 1) +
si(i, j, k, 1) +
si(i, j+1, k, 1)&
2420 & +
si(i, j, k+1, 1) +
si(i, j+1, k+1, 1)
2421 sy =
si(i-1, j, k, 2) +
si(i-1, j+1, k, 2) +
si(i-1, j, k+1, 2&
2422 & ) +
si(i-1, j+1, k+1, 2) +
si(i, j, k, 2) +
si(i, j+1, k, 2)&
2423 & +
si(i, j, k+1, 2) +
si(i, j+1, k+1, 2)
2424 sz =
si(i-1, j, k, 3) +
si(i-1, j+1, k, 3) +
si(i-1, j, k+1, 3&
2425 & ) +
si(i-1, j+1, k+1, 3) +
si(i, j, k, 3) +
si(i, j+1, k, 3)&
2426 & +
si(i, j, k+1, 3) +
si(i, j+1, k+1, 3)
2443 ux(i-1, j, k) =
ux(i-1, j, k) + ubar*sx
2444 uy(i-1, j, k) =
uy(i-1, j, k) + ubar*sy
2445 uz(i-1, j, k) =
uz(i-1, j, k) + ubar*sz
2446 vx(i-1, j, k) =
vx(i-1, j, k) + vbar*sx
2447 vy(i-1, j, k) =
vy(i-1, j, k) + vbar*sy
2448 vz(i-1, j, k) =
vz(i-1, j, k) + vbar*sz
2449 wx(i-1, j, k) =
wx(i-1, j, k) + wbar*sx
2450 wy(i-1, j, k) =
wy(i-1, j, k) + wbar*sy
2451 wz(i-1, j, k) =
wz(i-1, j, k) + wbar*sz
2452 qx(i-1, j, k) =
qx(i-1, j, k) - a2*sx
2453 qy(i-1, j, k) =
qy(i-1, j, k) - a2*sy
2454 qz(i-1, j, k) =
qz(i-1, j, k) - a2*sz
2457 ux(i, j, k) =
ux(i, j, k) - ubar*sx
2458 uy(i, j, k) =
uy(i, j, k) - ubar*sy
2459 uz(i, j, k) =
uz(i, j, k) - ubar*sz
2460 vx(i, j, k) =
vx(i, j, k) - vbar*sx
2461 vy(i, j, k) =
vy(i, j, k) - vbar*sy
2462 vz(i, j, k) =
vz(i, j, k) - vbar*sz
2463 wx(i, j, k) =
wx(i, j, k) - wbar*sx
2464 wy(i, j, k) =
wy(i, j, k) - wbar*sy
2465 wz(i, j, k) =
wz(i, j, k) - wbar*sz
2466 qx(i, j, k) =
qx(i, j, k) + a2*sx
2467 qy(i, j, k) =
qy(i, j, k) + a2*sy
2468 qz(i, j, k) =
qz(i, j, k) + a2*sz
2479 & (i+1, j, k+1)+
vol(i, j+1, k)+
vol(i, j+1, k+1)+
vol(i+1, j+1, &
2480 & k)+
vol(i+1, j+1, k+1))
2483 ux(i, j, k) =
ux(i, j, k)*oneoverv
2484 uy(i, j, k) =
uy(i, j, k)*oneoverv
2485 uz(i, j, k) =
uz(i, j, k)*oneoverv
2486 vx(i, j, k) =
vx(i, j, k)*oneoverv
2487 vy(i, j, k) =
vy(i, j, k)*oneoverv
2488 vz(i, j, k) =
vz(i, j, k)*oneoverv
2489 wx(i, j, k) =
wx(i, j, k)*oneoverv
2490 wy(i, j, k) =
wy(i, j, k)*oneoverv
2491 wz(i, j, k) =
wz(i, j, k)*oneoverv
2492 qx(i, j, k) =
qx(i, j, k)*oneoverv
2493 qy(i, j, k) =
qy(i, j, k)*oneoverv
2494 qz(i, j, k) =
qz(i, j, k)*oneoverv
real(kind=realtype), dimension(:, :, :), pointer gamma
real(kind=realtype), dimension(:, :, :), pointer qz
real(kind=realtype), dimension(:, :, :), pointer wzd
real(kind=realtype), dimension(:, :, :), pointer aad
real(kind=realtype), dimension(:, :, :, :), pointer sjd
real(kind=realtype), dimension(:, :, :), pointer vxd
real(kind=realtype), dimension(:, :, :), pointer qy
real(kind=realtype), dimension(:, :, :), pointer aa
real(kind=realtype), dimension(:, :, :), pointer uz
real(kind=realtype), dimension(:, :, :, :), pointer wd
real(kind=realtype), dimension(:, :, :), pointer uzd
real(kind=realtype), dimension(:, :, :), pointer vold
real(kind=realtype), dimension(:, :, :), pointer qxd
real(kind=realtype), dimension(:, :, :), pointer p
real(kind=realtype), dimension(:, :, :, :), pointer w
real(kind=realtype), dimension(:, :, :), pointer uy
real(kind=realtype), dimension(:, :, :), pointer wyd
real(kind=realtype), dimension(:, :, :), pointer wx
real(kind=realtype), dimension(:, :, :, :), pointer skd
real(kind=realtype), dimension(:, :, :), pointer rlv
real(kind=realtype), dimension(:, :, :, :), pointer si
real(kind=realtype), dimension(:, :, :, :), pointer sid
real(kind=realtype), dimension(:, :, :, :), pointer sj
real(kind=realtype), dimension(:, :, :), pointer uyd
real(kind=realtype), dimension(:, :, :), pointer qx
real(kind=realtype), dimension(:, :, :), pointer uxd
real(kind=realtype), dimension(:, :, :), pointer vz
real(kind=realtype), dimension(:, :, :), pointer qyd
real(kind=realtype), dimension(:, :, :, :), pointer sk
real(kind=realtype), dimension(:, :, :), pointer ux
real(kind=realtype), dimension(:, :, :), pointer wy
real(kind=realtype), dimension(:, :, :), pointer rlvd
real(kind=realtype), dimension(:, :, :), pointer wz
real(kind=realtype), dimension(:, :, :), pointer vol
real(kind=realtype), dimension(:, :, :), pointer wxd
real(kind=realtype), dimension(:, :, :), pointer vy
real(kind=realtype), dimension(:, :, :), pointer vx
real(kind=realtype), dimension(:, :, :), pointer qzd
real(kind=realtype), dimension(:, :, :), pointer vzd
real(kind=realtype), dimension(:, :, :), pointer pd
real(kind=realtype), dimension(:, :, :), pointer vyd
integer(kind=inttype), parameter cptempcurvefits
real(kind=realtype), parameter zero
real(kind=realtype), parameter third
real(kind=realtype), parameter five
real(kind=realtype), parameter one
real(kind=realtype), parameter half
real(kind=realtype), parameter two
integer(kind=inttype), parameter cpconstant
real(kind=realtype), parameter fourth
real(kind=realtype), dimension(:), allocatable cptrange
integer(kind=inttype) cpnparts
type(cptempfittype), dimension(:), allocatable cptempfit
real(kind=realtype), dimension(:), allocatable cpeint
subroutine computespeedofsoundsquared()
subroutine getdirvector(refdirection, alpha, beta, winddirection, liftindex)
subroutine computeetotblock_d(istart, iend, jstart, jend, kstart, kend, correctfork)
subroutine getdirvector_d(refdirection, alpha, alphad, beta, betad, winddirection, winddirectiond, liftindex)
subroutine adjustinflowangle()
subroutine adjustinflowangle_d()
subroutine allnodalgradients_d()
subroutine computeptot(rho, u, v, w, p, ptot)
subroutine allnodalgradients()
subroutine etot(rho, u, v, w, p, k, etotal, correctfork)
subroutine vectorrotation(xp, yp, zp, iaxis, angle, x, y, z)
subroutine vectorrotation_d(xp, xpd, yp, ypd, zp, zpd, iaxis, angle, angled, x, xd, y, yd, z, zd)
subroutine eint(rho, p, k, einternal, correctfork)
subroutine computespeedofsoundsquared_d()
subroutine computeetotblock(istart, iend, jstart, jend, kstart, kend, correctfork)
subroutine computepressure(ibeg, iend, jbeg, jend, kbeg, kend, pointeroffset)
subroutine computettot_d(rho, rhod, u, ud, v, vd, w, wd, p, pd, ttot, ttotd)
subroutine derivativerotmatrixrigid(rotationmatrix, rotationpoint, t)
subroutine eint_d(rho, rhod, p, pd, k, kd, einternal, einternald, correctfork)
subroutine etot_d(rho, rhod, u, ud, v, vd, w, wd, p, pd, k, kd, etotal, etotald, correctfork)
subroutine computeptot_d(rho, rhod, u, ud, v, vd, w, wd, p, pd, ptot, ptotd)
subroutine computelamviscosity(includehalos)
subroutine derivativerotmatrixrigid_d(rotationmatrix, rotationmatrixd, rotationpoint, t)
subroutine computelamviscosity_d(includehalos)
subroutine computepressuresimple_d(includehalos)
subroutine computegamma(t, gamma, mm)
subroutine computettot(rho, u, v, w, p, ttot)
subroutine computepressuresimple(includehalos)
real(kind=realtype) gammainf
real(kind=realtype) pinfcorr
real(kind=realtype) pinfcorrd
real(kind=realtype) trefd
real(kind=realtype) muref
real(kind=realtype) rgasd
real(kind=realtype) murefd
integer, parameter realtype
real(kind=realtype) function derivativerigidrotangle(degreepolrot, coefpolrot, degreefourrot, omegafourrot, coscoeffourrot, sincoeffourrot, t)
real(kind=realtype) function derivativerigidrotangle_d(degreepolrot, coefpolrot, degreefourrot, omegafourrot, coscoeffourrot, sincoeffourrot, t, derivativerigidrotangle)
logical function getcorrectfork()
real(kind=realtype) function rigidrotangle(degreepolrot, coefpolrot, degreefourrot, omegafourrot, coscoeffourrot, sincoeffourrot, t)
subroutine terminate(routinename, errormessage)