10 useSpatial, useState, famLists, &
11 bcDataNames, bcDataValues, bcDataFamLists, bcVarsEmpty, &
12 dwdot, funcsDot, fDot, &
13 costSize, fSize, nTime, h)
27 use blockpointers,
only: ndom,
il,
jl,
kl,
wd,
x,
w,
dw,
dwd,
nbocos,
nviscbocos
40 real(kind=realtype),
dimension(:),
intent(in) :: xvdot
41 real(kind=realtype),
dimension(:),
intent(in) :: extradot
42 real(kind=realtype),
dimension(:),
intent(in) :: wdot
45 logical,
intent(in) :: useSpatial, useState
46 integer(kind=intType),
dimension(:, :) :: famLists
47 integer(kind=intType) :: costSize, fSize, nTime
49 character,
dimension(:, :),
intent(in) :: bcDataNames
50 real(kind=realtype),
dimension(:),
intent(inout) :: bcdatavalues, bcdatavaluesdot
51 integer(kind=intType),
dimension(:, :) :: bcDataFamLists
52 logical,
intent(in) :: BCVarsEmpty
55 real(kind=realtype),
intent(in) :: h
61 real(kind=realtype),
dimension(size(wDot)),
intent(out) :: dwdot
62 real(kind=realtype),
dimension(costSize, size(famLists, 1)),
intent(out) :: funcsdot
63 real(kind=realtype),
dimension(3, fSize, nTime),
intent(out) :: fdot
68 integer(kind=intType) :: nn, sps, level
69 integer(kind=intType) :: ierr, mm, i, j, k, l, ii, jj, iRegion
71 real(kind=realtype),
dimension(costSize, size(famLists, 1)) :: funcs
74 real(kind=realtype),
dimension(costSize, size(famLists, 1)) :: funcvalues
75 real(kind=realtype),
dimension(:, :, :),
allocatable :: forces
104 if (bcvarsempty)
then
106 famlists, funcvalues, &
111 famlists, funcvalues, &
113 bcdatanames, bcdatavalues, bcdatafamlists)
128 dwd(i, j, k, l) = -
dw(i, j, k, l)
137 funcsdot = -funcvalues
149 pinfdim = pinfdim + h * extradot(
ipressure)
150 rhoinfdim = rhoinfdim + h * extradot(
idensity)
160 domainloop1:
do nn = 1, ndom
168 x(i, j, k, l) =
x(i, j, k, l) + xvdot(ii) * h
178 w(i, j, k, l) =
w(i, j, k, l) + wdot(jj) * h
186 bcdatavalues = bcdatavalues + bcdatavaluesdot * h
196 if (bcvarsempty)
then
198 famlists, funcvalues, &
203 famlists, funcvalues, &
205 bcdatanames, bcdatavalues, bcdatafamlists)
219 pinfdim = pinfdim - h * extradot(
ipressure)
220 rhoinfdim = rhoinfdim - h * extradot(
idensity)
239 x(i, j, k, l) =
x(i, j, k, l) - xvdot(ii) * h
249 w(i, j, k, l) =
w(i, j, k, l) - wdot(jj) * h
250 dwd(i, j, k, l) = (
dwd(i, j, k, l) +
dw(i, j, k, l)) / h
251 dwdot(jj) =
dwd(i, j, k, l)
263 bcdatavalues = bcdatavalues - bcdatavaluesdot * h
265 fdot = (fdot + forces) / h
266 funcsdot = (funcsdot + funcvalues) / h
290 integer(kind=intType) :: nn, level, sps
293 integer(kind=intType) :: mm, i, iDom
294 integer(kind=intType) :: iBoco, iData, iDirichlet
295 write (*, *)
'ADSeeds for block', nn,
' at level ', level,
' at sps ', sps
296 write (*, *)
'd2wall ', minval(
flowdomsd(nn, level, sps)%d2wall), &
297 maxval(
flowdomsd(nn, level, sps)%d2wall), &
299 write (*, *)
'x ', minval(
flowdomsd(nn, level, sps)%x), &
302 write (*, *)
'si ', minval(
flowdomsd(nn, level, sps)%si), &
305 write (*, *)
'sj ', minval(
flowdomsd(nn, level, sps)%sj), &
308 write (*, *)
'sk ', minval(
flowdomsd(nn, level, sps)%sk), &
311 write (*, *)
'vol ', minval(
flowdomsd(nn, level, sps)%vol), &
315 write (*, *)
's ', minval(
flowdomsd(nn, level, sps)%s), &
318 write (*, *)
'sFaceI ', minval(
flowdomsd(nn, level, sps)%sFaceI), &
319 maxval(
flowdomsd(nn, level, sps)%sFaceI), &
321 write (*, *)
'sFaceJ ', minval(
flowdomsd(nn, level, sps)%sFaceJ), &
322 maxval(
flowdomsd(nn, level, sps)%sFaceJ), &
324 write (*, *)
'sFaceK ', minval(
flowdomsd(nn, level, sps)%sFaceK), &
325 maxval(
flowdomsd(nn, level, sps)%sFaceK), &
328 write (*, *)
'w ', minval(
flowdomsd(nn, level, sps)%w), &
331 write (*, *)
'dw ', minval(
flowdomsd(nn, level, sps)%dw), &
334 write (*, *)
'fw ', minval(
flowdomsd(nn, level, sps)%fw), &
337 write (*, *)
'scratch ', minval(
flowdomsd(nn, level, sps)%scratch), &
338 maxval(
flowdomsd(nn, level, sps)%scratch), &
341 write (*, *)
'p ', minval(
flowdomsd(nn, level, sps)%p), &
344 write (*, *)
'gamma ', minval(
flowdomsd(nn, level, sps)%gamma), &
345 maxval(
flowdomsd(nn, level, sps)%gamma), &
347 write (*, *)
'aa ', minval(
flowdomsd(nn, level, sps)%aa), &
351 write (*, *)
'rlv ', minval(
flowdomsd(nn, level, sps)%rlv), &
354 write (*, *)
'rev ', minval(
flowdomsd(nn, level, sps)%rev), &
358 write (*, *)
'radI ', minval(
flowdomsd(nn, level, sps)%radI), &
359 maxval(
flowdomsd(nn, level, sps)%radI), &
361 write (*, *)
'radJ ', minval(
flowdomsd(nn, level, sps)%radJ), &
362 maxval(
flowdomsd(nn, level, sps)%radJ), &
364 write (*, *)
'radK ', minval(
flowdomsd(nn, level, sps)%radK), &
365 maxval(
flowdomsd(nn, level, sps)%radK), &
368 write (*, *)
'ux ', minval(
flowdomsd(nn, level, sps)%ux), &
371 write (*, *)
'uy ', minval(
flowdomsd(nn, level, sps)%uy), &
374 write (*, *)
'uz ', minval(
flowdomsd(nn, level, sps)%uz), &
377 write (*, *)
'vx ', minval(
flowdomsd(nn, level, sps)%vx), &
380 write (*, *)
'vy ', minval(
flowdomsd(nn, level, sps)%vy), &
383 write (*, *)
'vz ', minval(
flowdomsd(nn, level, sps)%vz), &
386 write (*, *)
'wx ', minval(
flowdomsd(nn, level, sps)%wx), &
389 write (*, *)
'wy ', minval(
flowdomsd(nn, level, sps)%wy), &
392 write (*, *)
'wz ', minval(
flowdomsd(nn, level, sps)%wz), &
395 write (*, *)
'qx ', minval(
flowdomsd(nn, level, sps)%qx), &
398 write (*, *)
'qy ', minval(
flowdomsd(nn, level, sps)%qy), &
401 write (*, *)
'qz ', minval(
flowdomsd(nn, level, sps)%qz), &
405 write (*, *)
'bmti1 ', minval(
flowdomsd(nn, level, sps)%bmti1), &
406 maxval(
flowdomsd(nn, level, sps)%bmti1), &
408 write (*, *)
'bmti2 ', minval(
flowdomsd(nn, level, sps)%bmti2), &
409 maxval(
flowdomsd(nn, level, sps)%bmti2), &
411 write (*, *)
'bmtj1 ', minval(
flowdomsd(nn, level, sps)%bmtj1), &
412 maxval(
flowdomsd(nn, level, sps)%bmtj1), &
414 write (*, *)
'bmtj2 ', minval(
flowdomsd(nn, level, sps)%bmtj2), &
415 maxval(
flowdomsd(nn, level, sps)%bmtj2), &
417 write (*, *)
'bmtk1 ', minval(
flowdomsd(nn, level, sps)%bmtk1), &
418 maxval(
flowdomsd(nn, level, sps)%bmtk1), &
420 write (*, *)
'bmtk2 ', minval(
flowdomsd(nn, level, sps)%bmtk2), &
421 maxval(
flowdomsd(nn, level, sps)%bmtk2), &
423 write (*, *)
'bvti1 ', minval(
flowdomsd(nn, level, sps)%bvti1), &
424 maxval(
flowdomsd(nn, level, sps)%bvti1), &
426 write (*, *)
'bvti2 ', minval(
flowdomsd(nn, level, sps)%bvti2), &
427 maxval(
flowdomsd(nn, level, sps)%bvti2), &
429 write (*, *)
'bvtj1 ', minval(
flowdomsd(nn, level, sps)%bvtj1), &
430 maxval(
flowdomsd(nn, level, sps)%bvtj1), &
432 write (*, *)
'bvtj2 ', minval(
flowdomsd(nn, level, sps)%bvtj2), &
433 maxval(
flowdomsd(nn, level, sps)%bvtj2), &
435 write (*, *)
'bvtk1 ', minval(
flowdomsd(nn, level, sps)%bvtk1), &
436 maxval(
flowdomsd(nn, level, sps)%bvtk1), &
438 write (*, *)
'bvtk2 ', minval(
flowdomsd(nn, level, sps)%bvtk2), &
439 maxval(
flowdomsd(nn, level, sps)%bvtk2), &
442 bocoloop:
do mm = 1,
flowdoms(nn, level, sps)%nBocos
443 write (*, *)
'mm', mm,
'BCData(mm)%norm', minval(
flowdomsd(nn, level, sps)%BCData(mm)%norm), &
444 maxval(
flowdomsd(nn, level, sps)%BCData(mm)%norm), &
445 norm2(
flowdomsd(nn, level, sps)%BCData(mm)%norm)
446 write (*, *)
'mm', mm,
'bcData(mm)%rface ', minval(
flowdomsd(nn, level, sps)%bcData(mm)%rface), &
447 maxval(
flowdomsd(nn, level, sps)%bcData(mm)%rface), &
448 norm2(
flowdomsd(nn, level, sps)%bcData(mm)%rface)
449 write (*, *)
'mm', mm,
'bcData(mm)%Fv ', minval(
flowdomsd(nn, level, sps)%bcData(mm)%Fv), &
450 maxval(
flowdomsd(nn, level, sps)%bcData(mm)%Fv), &
451 norm2(
flowdomsd(nn, level, sps)%bcData(mm)%Fv)
452 write (*, *)
'mm', mm,
'bcData(mm)%Fp ', minval(
flowdomsd(nn, level, sps)%bcData(mm)%Fp), &
453 maxval(
flowdomsd(nn, level, sps)%bcData(mm)%Fp), &
454 norm2(
flowdomsd(nn, level, sps)%bcData(mm)%Fp)
455 write (*, *)
'mm', mm,
'bcData(mm)%Tv ', minval(
flowdomsd(nn, level, sps)%bcData(mm)%Tv), &
456 maxval(
flowdomsd(nn, level, sps)%bcData(mm)%Tv), &
457 norm2(
flowdomsd(nn, level, sps)%bcData(mm)%Tv)
458 write (*, *)
'mm', mm,
'bcData(mm)%Tp ', minval(
flowdomsd(nn, level, sps)%bcData(mm)%Tp), &
459 maxval(
flowdomsd(nn, level, sps)%bcData(mm)%Tp), &
460 norm2(
flowdomsd(nn, level, sps)%bcData(mm)%Tp)
461 write (*, *)
'mm', mm,
'bcData(mm)%area ', minval(
flowdomsd(nn, level, sps)%bcData(mm)%area), &
462 maxval(
flowdomsd(nn, level, sps)%bcData(mm)%area), &
463 norm2(
flowdomsd(nn, level, sps)%bcData(mm)%area)
464 write (*, *)
'mm', mm,
'BCData(mm)%uSlip ', minval(
flowdomsd(nn, level, sps)%BCData(mm)%uSlip), &
465 maxval(
flowdomsd(nn, level, sps)%BCData(mm)%uSlip), &
466 norm2(
flowdomsd(nn, level, sps)%BCData(mm)%uSlip)
467 write (*, *)
'mm', mm,
'BCData(mm)%TNS_Wall ', minval(
flowdomsd(nn, level, sps)%BCData(mm)%TNS_Wall), &
468 maxval(
flowdomsd(nn, level, sps)%BCData(mm)%TNS_Wall), &
469 norm2(
flowdomsd(nn, level, sps)%BCData(mm)%TNS_Wall)
470 write (*, *)
'mm', mm,
'BCData(mm)%ptInlet ', minval(
flowdomsd(nn, level, sps)%BCData(mm)%ptInlet), &
471 maxval(
flowdomsd(nn, level, sps)%BCData(mm)%ptInlet), &
472 norm2(
flowdomsd(nn, level, sps)%BCData(mm)%ptInlet)
473 write (*, *)
'mm', mm,
'BCData(mm)%htInlet ', minval(
flowdomsd(nn, level, sps)%BCData(mm)%htInlet), &
474 maxval(
flowdomsd(nn, level, sps)%BCData(mm)%htInlet), &
475 norm2(
flowdomsd(nn, level, sps)%BCData(mm)%htInlet)
476 write (*, *)
'mm', mm,
'BCData(mm)%ttInlet ', minval(
flowdomsd(nn, level, sps)%BCData(mm)%ttInlet), &
477 maxval(
flowdomsd(nn, level, sps)%BCData(mm)%ttInlet), &
478 norm2(
flowdomsd(nn, level, sps)%BCData(mm)%ttInlet)
479 write (*, *)
'mm', mm,
'BCData(mm)%turbInlet ', minval(
flowdomsd(nn, level, sps)%BCData(mm)%turbInlet), &
480 maxval(
flowdomsd(nn, level, sps)%BCData(mm)%turbInlet), &
481 norm2(
flowdomsd(nn, level, sps)%BCData(mm)%turbInlet)
482 write (*, *)
'mm', mm,
'BCData(mm)%ps ', minval(
flowdomsd(nn, level, sps)%BCData(mm)%ps), &
483 maxval(
flowdomsd(nn, level, sps)%BCData(mm)%ps), &
484 norm2(
flowdomsd(nn, level, sps)%BCData(mm)%ps)
488 viscbocoloop:
do mm = 1,
flowdoms(nn, level, sps)%nViscBocos
489 write (*, *)
'mm', mm,
'viscSubface(mm)%tau ', minval(
flowdomsd(nn, level, sps)%viscSubface(mm)%tau), &
490 maxval(
flowdomsd(nn, level, sps)%viscSubface(mm)%tau), &
491 norm2(
flowdomsd(nn, level, sps)%viscSubface(mm)%tau)
492 write (*, *)
'mm', mm,
'viscSubface(mm)%q ', minval(
flowdomsd(nn, level, sps)%viscSubface(mm)%q), &
493 maxval(
flowdomsd(nn, level, sps)%viscSubface(mm)%q), &
494 norm2(
flowdomsd(nn, level, sps)%viscSubface(mm)%q)
502 write (*, *)
'commPatternOverset(level, sps)%sendList(i)%interpd ', &
507 write (*, *)
'internalOverset(level, sps)%donorInterpd ', &
513 write (*, *)
'alphad ',
alphad
514 write (*, *)
'betad ',
betad
515 write (*, *)
'machd ',
machd
523 write (*, *)
'prefd ',
prefd
524 write (*, *)
'rhoRefd ',
rhorefd
525 write (*, *)
'Trefd ',
trefd
526 write (*, *)
'murefd ',
murefd
527 write (*, *)
'urefd ',
urefd
528 write (*, *)
'hrefd ',
hrefd
530 write (*, *)
'pinfd ',
pinfd
532 write (*, *)
'rhoinfd ',
rhoinfd
533 write (*, *)
'uinfd ',
uinfd
534 write (*, *)
'rgasd ',
rgasd
535 write (*, *)
'muinfd ',
muinfd
537 write (*, *)
'winfd ',
winfd
545 if (
associated(
cgnsdoms(idom)%bocoInfo(iboco)%dataSet))
then
546 do idata = 1,
size(
cgnsdoms(idom)%bocoInfo(iboco)%dataSet)
547 if (
associated(
cgnsdoms(idom)%bocoInfo(iboco)%dataSet(idata)%dirichletArrays))
then
548 do idirichlet = 1,
size(
cgnsdoms(idom)%bocoInfo(iboco)%dataSet(idata)%dirichletArrays)
549 write (*, *) idom, iboco, idata, idirichlet,
'dataArr(:) ' &
550 ,
cgnsdomsd(idom)%bocoInfo(iboco)%dataSet(idata)% &
551 dirichletarrays(idirichlet)%dataArr(:)
570 useSpatial, useState, famLists, &
571 bcDataNames, bcDataValues, bcDataFamLists, bcVarsEmpty, &
572 dwdot, funcsDot, fDot, &
573 costSize, fSize, nTime, h_mag)
587 use blockpointers,
only: ndom,
il,
jl,
kl,
wd,
x,
w,
dw,
dwd,
nbocos,
nviscbocos
599 complex(kind=realType),
dimension(:),
intent(in) :: xvdot
600 complex(kind=realType),
dimension(:),
intent(in) :: extradot
601 complex(kind=realType),
dimension(:),
intent(in) :: wdot
603 logical,
intent(in) :: useSpatial, useState
604 integer(kind=intType),
dimension(:, :) :: famLists
605 integer(kind=intType) :: costSize, fSize, nTime
607 character,
dimension(:, :),
intent(in) :: bcDataNames
608 real(kind=realtype),
dimension(:),
intent(inout) :: bcdatavalues, bcdatavaluesdot
609 integer(kind=intType),
dimension(:, :) :: bcDataFamLists
610 logical,
intent(in) :: BCVarsEmpty
613 real(kind=alwaysrealtype),
intent(in) :: h_mag
616 complex(kind=realType),
dimension(size(wdot)),
intent(out) :: dwDot
617 complex(kind=realType),
dimension(costSize, size(famLists, 1)),
intent(out) :: funcsDot
618 complex(kind=realType),
dimension(3, fSize, nTime),
intent(out) :: fDot
621 integer(kind=intType) :: nn, sps, level
622 integer(kind=intType) :: ierr, mm, i, j, k, l, ii, jj, iRegion
624 complex(kind=realType),
dimension(costSize, size(famLists, 1)) :: funcs
627 complex(kind=realType),
dimension(costSize, size(famLists, 1)) :: funcValues
630 complex(kind=realType),
dimension(:, :, :),
allocatable :: forces
631 complex(kind=realType) :: h
637 fsize =
size(fdot, 2)
669 pinfdim = pinfdim + h * extradot(
ipressure)
670 rhoinfdim = rhoinfdim + h * extradot(
idensity)
681 domainloop1:
do nn = 1, ndom
689 x(i, j, k, l) =
x(i, j, k, l) + xvdot(ii) * h
699 w(i, j, k, l) =
w(i, j, k, l) + wdot(jj) * h
707 bcdatavalues = bcdatavalues + bcdatavaluesdot * h
715 if (bcvarsempty)
then
717 famlists, funcvalues, &
721 famlists, funcvalues, &
723 bcdatanames, bcdatavalues, bcdatafamlists)
738 x(i, j, k, l) =
x(i, j, k, l) - xvdot(ii) * h
748 w(i, j, k, l) =
w(i, j, k, l) - wdot(jj) * h
749 dwd(i, j, k, l) = aimag(
dw(i, j, k, l)) / aimag(h)
750 dwdot(jj) =
dwd(i, j, k, l)
764 pinfdim = pinfdim - h * extradot(
ipressure)
765 rhoinfdim = rhoinfdim - h * extradot(
idensity)
772 bcdatavalues = bcdatavalues - bcdatavaluesdot * h
777 fdot = aimag(forces) / aimag(h)
778 funcsdot = aimag(funcvalues) / aimag(h)
type(actuatorregiontype), dimension(nactuatorregionsmax), target actuatorregionsd
integer(kind=inttype) nactuatorregions
subroutine computematrixfreeproductfwdfd(xvdot, extradot, wdot, bcDataValuesdot, useSpatial, useState, famLists, bcDataNames, bcDataValues, bcDataFamLists, bcVarsEmpty, dwdot, funcsDot, fDot, costSize, fSize, nTime, h)
subroutine printadseeds(nn, level, sps)
subroutine computematrixfreeproductfwdcs(xvdot, extradot, wdot, bcDataValuesdot, useSpatial, useState, famLists, bcDataNames, bcDataValues, bcDataFamLists, bcVarsEmpty, dwdot, funcsDot, fDot, costSize, fSize, nTime, h_mag)
subroutine zeroadseeds(nn, level, sps)
subroutine allocderivativevalues(level)
integer(kind=inttype), parameter imach
integer(kind=inttype), parameter ipointrefy
integer(kind=inttype), parameter imachgrid
integer(kind=inttype), parameter ipointrefz
integer(kind=inttype), parameter ipointrefx
logical derivvarsallocated
integer(kind=inttype), parameter ibeta
integer(kind=inttype), parameter ipressure
integer(kind=inttype), parameter itemperature
integer(kind=inttype), parameter ialpha
integer(kind=inttype), parameter idensity
type(blocktype), dimension(:, :, :), allocatable, target flowdomsd
type(blocktype), dimension(:, :, :), allocatable, target flowdoms
real(kind=realtype), dimension(:, :, :, :), pointer wd
integer(kind=inttype) nviscbocos
real(kind=realtype), dimension(:, :, :, :), pointer w
integer(kind=inttype) nbocos
real(kind=realtype), dimension(:, :, :, :), pointer dw
real(kind=realtype), dimension(:, :, :, :), pointer x
real(kind=realtype), dimension(:, :, :, :), pointer dwd
type(cgnsblockinfotype), dimension(:), allocatable cgnsdoms
type(cgnsblockinfotype), dimension(:), allocatable cgnsdomsd
integer(kind=inttype) cgnsndom
type(internalcommtype), dimension(:, :), allocatable, target internaloverset
type(commtype), dimension(:, :), allocatable, target commpatternoverset
integer adflow_comm_world
real(kind=realtype), parameter zero
integer(kind=inttype), parameter ransequations
real(kind=realtype) rhoinfdim
real(kind=realtype), dimension(:), allocatable winfd
real(kind=realtype) rhoinfd
real(kind=realtype) muinfd
real(kind=realtype) pinfdim
real(kind=realtype) pinfcorrd
real(kind=realtype) trefd
real(kind=realtype) uinfd
real(kind=realtype) rgasd
real(kind=realtype) hrefd
real(kind=realtype) pinfdimd
real(kind=realtype) tinfdim
real(kind=realtype) prefd
real(kind=realtype) tinfdimd
integer(kind=inttype) nwf
real(kind=realtype) gammainfd
real(kind=realtype) urefd
real(kind=realtype) rhoinfdimd
real(kind=realtype) pinfd
real(kind=realtype) murefd
real(kind=realtype) rhorefd
real(kind=realtype) timerefd
integer(kind=inttype) currentlevel
integer(kind=inttype) groundlevel
subroutine master(useSpatial, famLists, funcValues, forces, bcDataNames, bcDataValues, bcDataFamLists)
logical function iswalltype(bType)
subroutine setpointers_d(nn, level, sps)
subroutine echk(errorcode, file, line)
subroutine setpointers(nn, mm, ll)
subroutine updatexsurf(level)
real(kind=realtype), dimension(:), pointer xsurf