35 interface arrayextract
36 module procedure arrayextract_int
45 INTEGER :: am_c0, am_c1, am_c2
53 LOGICAL,
parameter :: inflateam = .false.
55 LOGICAL,
parameter :: dbgmode = .false.
58 LOGICAL :: initnotcalled = .true.
64 INTEGER,
allocatable :: i_ofbuff(:)
65 INTEGER,
allocatable :: j_ofbuff(:)
66 INTEGER,
allocatable :: k_ofbuff(:)
67 INTEGER,
allocatable :: ijk_buff(:)
71 INTEGER,
allocatable :: outbuff_i(:)
73 DOUBLE PRECISION,
allocatable :: outbuff_dp(:)
75 DOUBLE PRECISION,
allocatable :: outam(:)
81 INTEGER,
parameter :: dbgunit = 9659
89 LOGICAL :: fwijk, pwijk
97 INTEGER FUNCTION dbg_funijk(xxi, xxj, xxk)
98 INTEGER,
intent(in) :: xxi, xxj, xxk
100 dbg_funijk = xxj + am_c0 + xxi*am_c1 + xxk*am_c2
102 END FUNCTION dbg_funijk
109 SUBROUTINE initextract(iLow, iHgh, jLow, jHgh, kLow, kHgh)
117 INTEGER,
optional,
intent(in) :: iLow, iHgh
118 INTEGER,
optional,
intent(in) :: jLow, jHgh
119 INTEGER,
optional,
intent(in) :: kLow, kHgh
126 ilb = merge(ilow, imin3,
present(ilow))
127 iub = merge(ihgh, imax3,
present(ihgh))
129 jlb = merge(jlow, jmin3,
present(jlow))
130 jub = merge(jhgh, jmax3,
present(jhgh))
132 klb = merge(klow,
kmin3,
present(klow))
133 kub = merge(khgh,
kmax3,
present(khgh))
136 IF(ilb > iub .OR. ilb<imin3 .OR. iub>imax3)
THEN 137 IF(
dmp_log)
WRITE(*,1000)
'I',ilb,imin3,iub,imax3
139 ELSEIF(jlb > jub .OR. jlb<jmin3 .OR. jub>jmax3)
THEN 140 IF(
dmp_log)
WRITE(*,1000)
'J',jlb,jmin3,jub,jmax3
142 ELSEIF(klb > kub .OR. klb<
kmin3 .OR. kub>
kmax3)
THEN 151 am_c2 = (jub-jlb+1)*(iub-ilb+1)
152 am_c0 = am_c0 - am_c1*ilb - am_c2*klb
154 dbgdimn = (1+iub-ilb) * (1+jub-jlb) * (1+kub-klb)
158 Allocate( outam( dbgdimn) )
161 Allocate( outam(-3:3) )
163 Allocate( outam(-2:2) )
169 WRITE(*,
"(4/,3x,'Matrix Map:')")
170 write(*,
"(/,5X,'Domain Limits >')")
171 write(*,
"(7X,'I: ',I4,2x,I4)") imin3, imax3
172 write(*,
"(7X,'J: ',I4,2x,I4)") jmin3, jmax3
175 write(*,
"(/5x,'Local IJK Coeffs >')")
176 write(*,
"(7x,'C0: ',I9)")
c0 177 write(*,
"(7x,'C1: ',I9)")
c1 178 write(*,
"(7x,'C2: ',I9)")
c2 180 write(*,
"(/5X,'Extraction Region: >')")
181 write(*,
"(7X,'I: ',I4,2x,I4)") ilb, iub
182 write(*,
"(7X,'J: ',I4,2x,I4)") jlb, jub
183 if(
do_k)
write(*,
"(7X,'K: ',I4,2x,I4)") klb, kub
185 write(*,
"(/5x,'dbgIJK Coeffs >')")
186 write(*,
"(7x,'Am_C0: ',I9)") am_c0
187 write(*,
"(7x,'Am_C1: ',I9)") am_c1
188 write(*,
"(7x,'Am_C2: ',I9)") am_c2
191 write(*,
"(/5x,'A_M is going to be inflated.')")
193 write(*,
"(/5x,'A_M is NOT going to be inflated.')")
198 initnotcalled = .false.
201 if(
mype == proc)
then 202 write(*,
"(/3x,'Proc: ',I3)")proc
203 write(*,
"(5x,'I start/end 1:',2(2x,I3))")
istart1,
iend1 204 write(*,
"(5x,'J start/end 1:',2(2x,I3))")
jstart1,
jend1 208 CALL mpi_barrier(mpi_comm_world,
mpierr)
217 1000
FORMAT(/1x,70(
'*')/
' From: initExtract',/
' Error 1000:', &
218 ' Invalid parameters. Axis: ',a1,/8x,
'LB =',i4,3x,
'Min2 =', &
219 i12,/8x,
'UB =',i4,3x,
'Max2 =',i12,/1x,70(
'*'),2/)
247 INTEGER,
intent(in) :: M
249 CHARACTER(len=*),
intent(in),
optional :: VAR
251 INTEGER,
intent(in),
optional :: PASS
254 DOUBLE PRECISION :: lA_m(-3:3)
256 DOUBLE PRECISION :: lB_m
258 INTEGER :: NBGHS(-3:3)
261 CHARACTER(len=64) :: AmFName
262 CHARACTER(len=64) :: BmFName
264 INTEGER,
parameter :: AmUnit = 9657
265 INTEGER,
parameter :: BmUnit = 9658
267 INTEGER :: IJK, I, J, K, OWNER
270 IF(initnotcalled)
THEN 272 WRITE(*,
"(3/,' Fatal Error in matrixExtract!')")
273 WRITE(*,
"(' The initialization routine was never called.')")
274 WRITE(*,
"(' USR0 should contain a call to initExtract.')")
275 WRITE(*,
"(' Forcing a hard stop.')")
282 IF(
present(var) .AND.
present(pass))
THEN 283 write(amfname,
"('Am_',A,'_',I6.6,'.csv')")trim(adjustl(var)),pass
284 write(bmfname,
"('Bm_',A,'_',I6.6,'.csv')")trim(adjustl(var)),pass
285 ELSEIF(
present(var))
THEN 286 write(amfname,
"('Am_',A,'.csv')")trim(adjustl(var))
287 write(bmfname,
"('Bm_',A,'.csv')")trim(adjustl(var))
288 ELSEIF(
present(pass))
THEN 289 write(amfname,
"('Am_',I6.6,'.csv')") pass
290 write(bmfname,
"('Bm_',I6.6,'.csv')") pass
298 inquire(file=trim(amfname),exist=lexist)
300 open(amunit,file=trim(amfname), status=
'replace',convert=
'big_endian' 302 open(amunit,file=trim(amfname), status=
'new',convert=
'big_endian' 305 inquire(file=trim(bmfname),exist=lexist)
307 open(bmunit,file=trim(bmfname), status=
'replace',convert=
'big_endian' 309 open(bmunit,file=trim(bmfname), status=
'new',convert=
'big_endian' 315 CALL mpi_barrier(mpi_comm_world,
mpierr)
329 if(is_on_mype_owns(i,j,k))
then 331 la_m(-3:3) = a_m(ijk,-3:3,m)
336 if(do_k) nbghs(-3) = bottom_of(ijk)
337 nbghs(-2) = south_of(ijk)
338 nbghs(-1) = west_of(ijk)
340 nbghs( 1) = east_of(ijk)
341 nbghs( 2) = north_of(ijk)
342 if(do_k) nbghs( 3) = top_of(ijk)
356 CALL write_aoutbm(lb_m)
361 CALL mpi_barrier(mpi_comm_world,
mpierr)
382 SUBROUTINE am_to_aout(I, J, K, lNBGHS, lOWNER, lA_m)
384 INTEGER,
intent(in) :: I, J, K
385 INTEGER,
intent(in) :: lNBGHS(-3:3), lOWNER
386 DOUBLE PRECISION,
intent(in) :: lA_m(-3:3)
391 INTEGER :: ii, jj, kk
394 INTEGER :: sMin, wMin, bMin
395 INTEGER :: eMax, nMax, tMax
401 wmin = ilb; emax = (1+iub-ilb)
402 smin = jlb; nmax = (1+jub-jlb)
403 bmin = klb; tmax = (1+kub-klb)
406 if(dbgmode)
write(*,9003) lnbghs(0), dbg_funijk(i,j,k),
413 ii = i; jj = j; kk = k-1
414 nijk = merge(dbg_funijk(ii,jj,kk), -3, inflateam)
415 outam(nijk) = la_m(-3)
417 if(dbgmode)
write(*,9000)
'Bottom of ', lnbghs(-3), &
418 nijk, ii, jj, kk, la_m(-3)
420 if(dbgmode)
write(*,9001)
'Bottom of ', la_m(-3)
428 ii = i; jj = j-1; kk = k
429 nijk = merge(dbg_funijk(ii,jj,kk), -2, inflateam)
430 outam(nijk) = la_m(-2)
432 if(dbgmode)
write(*,9000)
'South of ', lnbghs(-2), &
433 nijk, ii, jj, kk, la_m(-2)
435 if(dbgmode)
write(*,9001)
'South of ', la_m(-2)
442 ii = i-1; jj = j; kk = k
443 nijk = merge(dbg_funijk(ii,jj,kk), -1, inflateam)
444 outam(nijk) = la_m(-1)
446 if(dbgmode)
write(*,9000)
'West of ', lnbghs(-1), &
447 nijk, ii, jj, kk, la_m(-1)
449 if(dbgmode)
write(*,9001)
'West of ', la_m(-1)
455 ii = i; jj = j; kk = k
456 nijk = merge(dbg_funijk(ii,jj,kk), 0, inflateam)
457 outam(nijk) = la_m(0)
459 if(dbgmode)
write(*,9000)
'Cntr Coef ', lnbghs(0), &
460 nijk, ii, jj, kk, la_m(0)
466 ii = i+1; jj = j; kk = k
467 nijk = merge(dbg_funijk(ii,jj,kk), 1, inflateam)
468 outam(nijk) = la_m( 1)
470 if(dbgmode)
write(*,9000)
'East of ', lnbghs( 1), &
471 nijk, ii, jj, kk, la_m( 1)
473 if(dbgmode)
write(*,9001)
'East of ', la_m( 1)
480 ii = i; jj = j+1; kk = k
481 nijk = merge(dbg_funijk(ii,jj,kk), 2, inflateam)
482 outam(nijk) = la_m( 2)
484 if(dbgmode)
write(*,9000)
'North of ', lnbghs(2), &
485 nijk, ii, jj, kk, la_m( 2)
487 if(dbgmode)
write(*,9001)
'North of ', la_m( 2)
495 ii = i; jj = j; kk = k+1
496 nijk = merge(dbg_funijk(ii,jj,kk), 3, inflateam)
497 outam(nijk) = la_m( 3)
499 if(dbgmode)
write(*,9000)
'Top of ', lnbghs( 3), &
500 nijk, ii, jj, kk, la_m( 3)
502 if(dbgmode)
write(*,9001)
'Top of ', la_m( 3)
508 9000
Format(5x,a,
':: ',i4,
' --> ',i4,3x,
'(',i3,
',',i3,
',',i3, &
511 9001
Format(5x,a,
':: ............ OoR ............ = ',f12.4)
514 9003
Format(//3x,
'Mapping: ',i4,
' --> ',i4,3x,
'(',i3,
',',i3,
',',i3, &
524 SUBROUTINE write_aoutbm(lB_m)
526 DOUBLE PRECISION,
intent(in) :: lB_m
532 lstart = lbound(outam,1)
533 lend = ubound(outam,1)
536 do ijk = lstart, lend-1
537 write(amunit,
"(F12.4,',')",advance=
'no')outam(ijk)
539 write(amunit,
"(F12.4)")outam(lend)
540 write(bmunit,
"(F12.4)")lb_m
543 do ijk = lstart, lend-1
544 write(amunit,
"(e14.6,',')",advance=
'no')outam(ijk)
546 write(amunit,
"(e14.6)")outam(lend)
547 write(bmunit,
"(e14.6)")lb_m
550 END SUBROUTINE write_aoutbm
559 SUBROUTINE dbg_write(lMsg, Flush)
566 CHARACTER(len=*),
intent(in) :: lMsg
568 LOGICAL,
optional,
intent(in) :: FLUSH
572 lflush = merge(
FLUSH, .false.,
present(flush))
575 if(lflush)
write(*,
"(' ')")
576 write(*,
"(3x,A)") trim(lmsg)
579 CALL mpi_barrier(mpi_comm_world,
mpierr)
584 END SUBROUTINE dbg_write
599 CHARACTER(len=*),
intent(in) :: vName
603 CHARACTER(len=64) :: VarFName
608 IF(initnotcalled)
THEN 622 IF(
allocated(i_ofbuff))
THEN 623 IF(
dmp_log)
WRITE(*,1002)
'i_ofBuff' 626 allocate( i_ofbuff(dbgdimn) )
630 IF(
allocated(j_ofbuff))
THEN 631 IF(
dmp_log)
WRITE(*,1002)
'j_ofBuff' 634 allocate( j_ofbuff(dbgdimn) )
638 IF(
allocated(k_ofbuff))
THEN 639 IF(
dmp_log)
WRITE(*,1002)
'k_ofBuff' 642 allocate( k_ofbuff(dbgdimn) )
646 IF(
allocated(ijk_buff))
THEN 647 IF(
dmp_log)
WRITE(*,1002)
'ijk_Buff' 650 allocate( ijk_buff(dbgdimn) )
657 write(varfname,
"(A,'.csv')") &
660 write(varfname,
"(A,'_',I6.6,'.csv')") &
661 trim(adjustl(vname)), fpass
663 write(varfname,
"(A,'.csv')") &
668 inquire(file=trim(varfname), exist=lexist)
669 IF(
mype == pe_io)
THEN 672 open(dbgunit,file=trim(varfname), &
673 status=
'old', position=
'append', iostat=ierr,convert=
'big_endian' 675 open(dbgunit,file=trim(varfname), &
676 status=
'replace', iostat=ierr,convert=
'big_endian')
679 open(dbgunit,file=trim(varfname), &
680 status=
'new', iostat=ierr,convert=
'big_endian')
683 CALL bcast(ierr, pe_io)
685 IF(
mype == pe_io)
write(*,1003) trim(varfname)
691 pwijk = merge(.false., fwijk, fwijk.AND.lexist)
695 1000
FORMAT(//1x,70(
'*')/
' From: dbg_mod -> arrayExtract_init',/, &
696 ' Error 1000: The initialization routine was never called.', &
697 ' Include the',/
' following in USR0: CALL initExtract.',2/, &
698 ' These arguments are used to specify a domain subset to', &
699 ' extract. If',/
' not defined, the entire domain (MIN3/MAX3)',&
700 ' is extracted.',2/,
' Optional arguments:',/, &
701 3x,
'iLow - lower I index; iHgh - Upper I index (X-axis)',/, &
702 3x,
'jLow - lower J index; jHgh - Upper J index (Y-axis)',/, &
703 3x,
'kLow - lower K index; kHgh - Upper K index (Z-axis)',/ &
706 1001
FORMAT(//1x,70(
'*')/
' From: dbg_mod -> arrayExtract_init',/, &
707 ' Error 1001: dgbLock is set. Something must have failed.',/ &
710 1002
FORMAT(//1x,70(
'*')/
' From: dbg_mod -> arrayExtract_init',/, &
711 ' Error 1002: Buffer already allocated: ',a,/1x,70(
'*'),2/)
713 1003
FORMAT(//1x,70(
'*')/
' From: dbg_mod -> arrayExtract_init',/, &
714 ' Error 1002: Error opening file: ',a,/1x,70(
'*'),2/)
727 IF(
allocated(i_ofbuff))
deallocate(i_ofbuff)
728 IF(
allocated(j_ofbuff))
deallocate(j_ofbuff)
729 IF(
allocated(k_ofbuff))
deallocate(k_ofbuff)
730 IF(
allocated(ijk_buff))
deallocate(ijk_buff)
732 IF(mype == pe_io)
close(dbgunit)
744 SUBROUTINE arrayextract_prnt(dType)
749 CHARACTER(len=3),
intent(in) :: dType
755 IF(mype /= pe_io)
RETURN 760 CALL write_index(i_ofbuff)
761 CALL write_index(j_ofbuff)
762 if(do_k)
CALL write_index(k_ofbuff)
763 CALL write_index(ijk_buff)
768 WRITE(dbgunit,
"(I14,',')",advance=
'no') fpass
771 CASE(
'INT');
CALL write_int
772 CASE(
'DBL');
CALL write_dbl
773 CASE(
'LOG');
CALL write_log
779 WRITE(dbgunit,
"(2x,'Pass: ',I8)") fpass
784 WRITE(dbgunit,
"(4(I14,','))",advance=
'no') ijk, &
785 ijk_buff(ijk), i_ofbuff(ijk), j_ofbuff(ijk)
786 if(do_k)
WRITE(dbgunit,
"(I14,',')",advance=
'no') &
791 CASE(
'INT');
CALL write_int(ijk)
792 CASE(
'DBL');
CALL write_dbl(ijk)
793 CASE(
'LOG');
CALL write_log(ijk)
799 END SUBROUTINE arrayextract_prnt
806 SUBROUTINE write_index(intArray)
810 INTEGER,
intent(in) :: intArray(dbgdimn)
815 IF(fpass /=
undefined_i)
WRITE(dbgunit,
"(14X,',')",advance=
'no')
816 DO ijk = 1, dbgdimn-1
817 WRITE(dbgunit,
"(I14,',')",advance=
'no')intarray(ijk)
819 WRITE(dbgunit,
"(I14)")intarray(dbgdimn)
822 END SUBROUTINE write_index
829 SUBROUTINE write_int(pIJK)
834 INTEGER,
optional,
intent(in) :: pIJK
838 IF(
present(pijk))
THEN 840 WRITE(dbgunit,
"(I14)") outbuff_i(pijk)
844 DO ijk = 1, dbgdimn-1
845 WRITE(dbgunit,
"(I14,',')",advance=
'no')outbuff_i(ijk)
847 WRITE(dbgunit,
"(I14)")outbuff_i(dbgdimn)
851 END SUBROUTINE write_int
858 SUBROUTINE write_dbl(pIJK)
863 INTEGER,
optional,
intent(in) :: pIJK
867 IF(
present(pijk))
THEN 869 WRITE(dbgunit,
"(E14.6)") outbuff_dp(pijk)
872 DO ijk = 1, dbgdimn-1
873 WRITE(dbgunit,
"(E14.6,',')",advance=
'no')outbuff_dp(ijk)
875 WRITE(dbgunit,
"(E14.6)")outbuff_dp(dbgdimn)
879 END SUBROUTINE write_dbl
886 SUBROUTINE write_log(pIJK)
891 INTEGER,
optional,
intent(in) :: pIJK
896 IF(
present(pijk))
THEN 898 inttolog= (outbuff_i(pijk) .eq. 1)
899 WRITE(dbgunit,
"(L14)") inttolog
903 DO ijk = 1, dbgdimn-1
904 inttolog=(outbuff_i(ijk) .eq. 1)
905 WRITE(dbgunit,
"(L14,',')",advance=
'no') inttolog
907 inttolog = (outbuff_i(dbgdimn) .eq. 1)
908 WRITE(dbgunit,
"(L14)") inttolog
913 END SUBROUTINE write_log
920 SUBROUTINE arrayextract_int(Array, VAR, PASS, APND, withIJK)
941 CHARACTER(len=*),
intent(in) :: VAR
943 INTEGER,
intent(in),
optional :: PASS
945 LOGICAL,
intent(in),
optional :: APND
947 LOGICAL,
intent(in),
optional :: withIJK
949 INTEGER :: I, J, K, IJK, dbgIJK
951 CHARACTER(len=64) :: MSG
953 msg=
'Entered arrayExtract_int' 954 if(dbgmode)
CALL dbg_write(trim(msg),flush=.true.)
958 fapnd = merge(apnd, .false.,
present(apnd))
959 fwijk = merge(withijk, .false.,
present(withijk))
961 msg=
' > Calling arrayExtract_INIT' 962 if(dbgmode)
CALL dbg_write(trim(msg))
965 msg=
' > Allocating outBuff_i' 966 if(dbgmode)
CALL dbg_write(trim(msg))
967 allocate( outbuff_i(dbgdimn) ); outbuff_i = 0
969 msg=
' > Extracting array data.' 970 if(dbgmode)
CALL dbg_write(trim(msg))
975 if(is_on_mype_owns(i,j,k))
then 978 dbgijk = dbg_funijk(i,j,k)
980 outbuff_i(dbgijk) = array(ijk)
985 ijk_buff(dbgijk) = ijk
991 msg=
' > Collecting array data.' 992 if(dbgmode)
CALL dbg_write(trim(msg))
1003 msg=
' > Calling arrayExtract_prnt.' 1004 if(dbgmode)
CALL dbg_write(trim(msg))
1005 CALL arrayextract_prnt(
'INT')
1008 msg=
' > Calling arrayExtract_finl.' 1009 if(dbgmode)
CALL dbg_write(trim(msg))
1011 if(
allocated(outbuff_i))
deallocate(outbuff_i)
1014 msg=
'Leaving arrayExtract_int.' 1015 if(dbgmode)
CALL dbg_write(trim(msg))
1018 END SUBROUTINE arrayextract_int
1044 DOUBLE PRECISION,
intent(in) :: Array(
dimension_3)
1046 CHARACTER(len=*),
intent(in) :: VAR
1048 INTEGER,
intent(in),
optional :: PASS
1050 LOGICAL,
intent(in),
optional :: APND
1052 LOGICAL,
intent(in),
optional :: withIJK
1055 INTEGER :: I, J, K, IJK, dbgIJK
1057 CHARACTER(len=64) :: MSG
1059 msg=
'Entered arrayExtract_dbl' 1060 CALL dbg_write(trim(msg), flush=.true.)
1064 fapnd = merge(apnd, .false.,
present(apnd))
1065 fwijk = merge(withijk, .false.,
present(withijk))
1067 msg=
' > Calling arrayExtract_INIT' 1068 CALL dbg_write(trim(msg))
1072 allocate( outbuff_dp(dbgdimn) ); outbuff_dp = 0
1074 msg=
' > Extracting array data.' 1075 CALL dbg_write(trim(msg))
1081 if(is_on_mype_owns(i,j,k))
then 1084 dbgijk = dbg_funijk(i,j,k)
1086 outbuff_dp(dbgijk) = array(ijk)
1088 i_ofbuff(dbgijk) = i
1089 j_ofbuff(dbgijk) = j
1090 k_ofbuff(dbgijk) = k
1091 ijk_buff(dbgijk) = ijk
1098 msg=
' > Collecting array data.' 1099 CALL dbg_write(trim(msg))
1110 msg=
' > Calling arrayExtract_prnt.' 1111 CALL dbg_write(trim(msg))
1112 CALL arrayextract_prnt(
'DBL')
1115 msg=
' > Calling arrayExtract_finl.' 1116 CALL dbg_write(trim(msg))
1117 if(
allocated(outbuff_dp))
deallocate(outbuff_dp)
1120 msg=
'Leaving arrayExtract_dbl.' 1121 CALL dbg_write(trim(msg))
1152 CHARACTER(len=*),
intent(in) :: VAR
1154 INTEGER,
intent(in),
optional :: PASS
1156 LOGICAL,
intent(in),
optional :: APND
1158 LOGICAL,
intent(in),
optional :: withIJK
1160 INTEGER :: I, J, K, IJK, dbgIJK
1162 CHARACTER(len=64) :: MSG
1164 msg=
'Entered arrayExtract_log' 1165 if(dbgmode)
CALL dbg_write(trim(msg),flush=.true.)
1169 fapnd = merge(apnd, .false.,
present(apnd))
1170 fwijk = merge(withijk, .false.,
present(withijk))
1172 msg=
' > Calling arrayExtract_INIT' 1173 if(dbgmode)
CALL dbg_write(trim(msg))
1176 msg=
' > Allocating outBuff_i' 1177 if(dbgmode)
CALL dbg_write(trim(msg))
1178 allocate( outbuff_i(dbgdimn) ); outbuff_i = 0
1180 msg=
' > Extracting array data.' 1181 if(dbgmode)
CALL dbg_write(trim(msg))
1186 if(is_on_mype_owns(i,j,k))
then 1189 dbgijk = dbg_funijk(i,j,k)
1192 outbuff_i(dbgijk) = merge(1,0,array(ijk))
1194 i_ofbuff(dbgijk) = i
1195 j_ofbuff(dbgijk) = j
1196 k_ofbuff(dbgijk) = k
1197 ijk_buff(dbgijk) = ijk
1203 msg=
' > Collecting array data.' 1204 if(dbgmode)
CALL dbg_write(trim(msg))
1215 msg=
' > Calling arrayExtract_prnt.' 1216 if(dbgmode)
CALL dbg_write(trim(msg))
1217 CALL arrayextract_prnt(
'LOG')
1220 msg=
' > Calling arrayExtract_finl.' 1221 if(dbgmode)
CALL dbg_write(trim(msg))
1223 if(
allocated(outbuff_i))
deallocate(outbuff_i)
1226 msg=
'Leaving arrayExtract_log.' 1227 if(dbgmode)
CALL dbg_write(trim(msg))
subroutine arrayextract_init(vName)
subroutine, public matrixextract(A_m, B_m, M, VAR, PASS)
subroutine, public initextract(iLow, iHgh, jLow, jHgh, kLow, kHgh)
subroutine am_to_aout(I, J, K, lNBGHS, lOWNER, lA_m)
subroutine mfix_exit(myID, normal_termination)
logical, dimension(:,:,:), allocatable dead_cell_at
subroutine arrayextract_log(Array, VAR, PASS, APND, withIJK)
subroutine arrayextract_finl
integer, parameter undefined_i
double precision, parameter zero
subroutine arrayextract_dbl(Array, VAR, PASS, APND, withIJK)
character, parameter undefined_c