70 INTEGER,
PARAMETER,
PRIVATE :: ICOL = 80
71 INTEGER,
PARAMETER,
PRIVATE :: NFRMAX = 50
72 INTEGER,
PARAMETER,
PRIVATE :: NFM2 = nfrmax+1
76 SUBROUTINE ina2r (ARRAY, MX, MY, LX, HX, LY, HY, &
77 NDS, NDST, NDSE, IDFM, RFORM, IDLA, VSC, VOF)
157 INTEGER,
INTENT(IN) :: MX, MY, LX, HX, LY, HY, NDS, NDST, &
159 REAL,
INTENT(IN) :: VSC, VOF
160 CHARACTER,
INTENT(IN) :: RFORM*(*)
161 REAL,
INTENT(OUT) :: ARRAY(MX,MY)
166 INTEGER :: IIDFM, IIDLA, IX, IY, ISTAT
168 INTEGER,
SAVE :: IENT = 0
174 CALL strace (ient,
'INA2R')
178 WRITE (ndst,9000) mx, my, lx, hx, ly, hy, nds, ndst, ndse, &
179 idfm, rform, idla, vsc, vof
182 IF (idfm.LT.1 .OR. idfm.GT.3)
THEN
187 IF (idla.LT.1 .OR. idla.GT.4)
THEN
198 READ (nds,*,
END=800,ERR=801,IOSTAT=ISTAT) &
199 (array(ix,iy),ix=lx,hx)
201 ELSE IF (iidla.EQ.2)
THEN
202 READ (nds,*,
END=800,ERR=801,IOSTAT=ISTAT) &
203 ((array(ix,iy),ix=lx,hx),iy=ly,hy)
204 ELSE IF (iidla.EQ.3)
THEN
206 READ (nds,*,
END=800,ERR=801,IOSTAT=ISTAT) &
207 (array(ix,iy),ix=lx,hx)
210 READ (nds,*,
END=800,ERR=801,IOSTAT=ISTAT) &
211 ((array(ix,iy),ix=lx,hx),iy=hy,ly,-1)
216 ELSE IF (iidfm.EQ.2)
THEN
219 READ (nds,rform,
END=800,ERR=801,IOSTAT=ISTAT) &
220 (array(ix,iy),ix=lx,hx)
222 ELSE IF (iidla.EQ.2)
THEN
223 READ (nds,rform,
END=800,ERR=801,IOSTAT=ISTAT) &
224 ((array(ix,iy),ix=lx,hx),iy=ly,hy)
225 ELSE IF (iidla.EQ.3)
THEN
227 READ (nds,rform,
END=800,ERR=801,IOSTAT=ISTAT) &
228 (array(ix,iy),ix=lx,hx)
231 READ (nds,rform,
END=800,ERR=801,IOSTAT=ISTAT) &
232 ((array(ix,iy),ix=lx,hx),iy=hy,ly,-1)
240 READ (nds,
END=800,ERR=801,IOSTAT=ISTAT) &
241 (array(ix,iy),ix=lx,hx)
243 ELSE IF (iidla.EQ.2)
THEN
244 READ (nds,
END=800,ERR=801,IOSTAT=ISTAT) &
245 ((array(ix,iy),ix=lx,hx),iy=ly,hy)
246 ELSE IF (iidla.EQ.3)
THEN
248 READ (nds,
END=800,ERR=801,IOSTAT=ISTAT) &
249 (array(ix,iy),ix=lx,hx)
252 READ (nds,
END=800,ERR=801,IOSTAT=ISTAT) &
253 ((array(ix,iy),ix=lx,hx),iy=hy,ly,-1)
261 array(ix,iy) = vsc * array(ix,iy) + vof
271 CALL extcde ( istat )
274 WRITE (ndse,901) istat
275 CALL extcde ( istat )
279 900
FORMAT (/
' *** ERROR INA2R : '/ &
280 ' PREMATURE END OF FILE'/)
281 901
FORMAT (/
' *** ERROR INA2R : '/ &
282 ' ERROR IN READING FROM FILE'/ &
286 9000
FORMAT (
' TEST INA2R : INPUT :'/6x,8i4,2i3,1x,a,i3,2e12.4)
293 SUBROUTINE ina2i (ARRAY, MX, MY, LX, HX, LY, HY, &
294 NDS, NDST, NDSE, IDFM, RFORM, IDLA, VSC, VOF)
328 INTEGER,
INTENT(IN) :: MX, MY, LX, HX, LY, HY, NDS, NDST, &
329 NDSE, IDFM, IDLA, VSC, VOF
330 INTEGER,
INTENT(OUT) :: ARRAY(MX,MY)
331 CHARACTER,
INTENT(IN) :: RFORM*(*)
336 INTEGER :: IIDFM, IIDLA, IX, IY, ISTAT
338 INTEGER,
SAVE :: IENT = 0
344 CALL strace (ient,
'INA2I')
348 WRITE (ndst,9000) mx, my, lx, hx, ly, hy, nds, ndst, ndse, &
349 idfm, rform, idla, vsc, vof
352 IF (idfm.LT.1 .OR. idfm.GT.3)
THEN
357 IF (idla.LT.1 .OR. idla.GT.4)
THEN
368 READ (nds,*,
END=800,ERR=801,IOSTAT=ISTAT) &
369 (array(ix,iy),ix=lx,hx)
371 ELSE IF (iidla.EQ.2)
THEN
372 READ (nds,*,
END=800,ERR=801,IOSTAT=ISTAT) &
373 ((array(ix,iy),ix=lx,hx),iy=ly,hy)
374 ELSE IF (iidla.EQ.3)
THEN
376 READ (nds,*,
END=800,ERR=801,IOSTAT=ISTAT) &
377 (array(ix,iy),ix=lx,hx)
380 READ (nds,*,
END=800,ERR=801,IOSTAT=ISTAT) &
381 ((array(ix,iy),ix=lx,hx),iy=hy,ly,-1)
386 ELSE IF (iidfm.EQ.2)
THEN
389 READ (nds,rform,
END=800,ERR=801,IOSTAT=ISTAT) &
390 (array(ix,iy),ix=lx,hx)
392 ELSE IF (iidla.EQ.2)
THEN
393 READ (nds,rform,
END=800,ERR=801,IOSTAT=ISTAT) &
394 ((array(ix,iy),ix=lx,hx),iy=ly,hy)
395 ELSE IF (iidla.EQ.3)
THEN
397 READ (nds,rform,
END=800,ERR=801,IOSTAT=ISTAT) &
398 (array(ix,iy),ix=lx,hx)
401 READ (nds,rform,
END=800,ERR=801,IOSTAT=ISTAT) &
402 ((array(ix,iy),ix=lx,hx),iy=hy,ly,-1)
410 READ (nds,
END=800,ERR=801,IOSTAT=ISTAT) &
411 (array(ix,iy),ix=lx,hx)
413 ELSE IF (iidla.EQ.2)
THEN
414 READ (nds,
END=800,ERR=801,IOSTAT=ISTAT) &
415 ((array(ix,iy),ix=lx,hx),iy=ly,hy)
416 ELSE IF (iidla.EQ.3)
THEN
418 READ (nds,
END=800,ERR=801,IOSTAT=ISTAT) &
419 (array(ix,iy),ix=lx,hx)
422 READ (nds,
END=800,ERR=801,IOSTAT=ISTAT) &
423 ((array(ix,iy),ix=lx,hx),iy=hy,ly,-1)
431 array(ix,iy) = vsc * array(ix,iy) + vof
441 CALL extcde ( istat )
444 WRITE (ndse,901) istat
445 CALL extcde ( istat )
449 900
FORMAT (/
' *** ERROR INA2I : '/ &
450 ' PREMATURE END OF FILE'/)
451 901
FORMAT (/
' *** ERROR INA2I : '/ &
452 ' ERROR IN READING FROM FILE'/ &
456 9000
FORMAT (
' TEST INA2I : INPUT :'/6x,8i4,2i3,1x,a,i3,2i5)
463 SUBROUTINE outa2r (ARRAY, MX, MY, LX, HX, LY, HY, &
464 NDS, NDST, NDSE, IDFM, RFORM, IDLA, VSC, VOF)
504 INTEGER,
INTENT(IN) :: MX, MY, LX, HX, LY, HY, NDS, NDST, &
506 REAL,
INTENT(IN) :: VSC, VOF, ARRAY(MX,MY)
507 CHARACTER,
INTENT(IN) :: RFORM*(*)
512 INTEGER :: IIDFM, IIDLA, IX, IY, ISTAT
514 INTEGER,
SAVE :: IENT = 0
520 CALL strace (ient,
'OUTA2R')
524 WRITE (ndst,9000) mx, my, lx, hx, ly, hy, nds, ndst, ndse, &
525 idfm, rform, idla, vsc, vof
528 IF (idfm.LT.1 .OR. idfm.GT.3)
THEN
533 IF (idla.LT.1 .OR. idla.GT.4)
THEN
544 WRITE (nds,*,err=800,iostat=istat) &
545 ((array(ix,iy)-vof)/vsc,ix=lx,hx)
547 ELSE IF (iidla.EQ.2)
THEN
548 WRITE (nds,*,err=800,iostat=istat) &
549 (((array(ix,iy)-vof)/vsc,ix=lx,int(hx/vsc)),iy=ly,hy)
550 ELSE IF (iidla.EQ.3)
THEN
552 WRITE (nds,*,err=800,iostat=istat) &
553 ((array(ix,iy)-vof)/vsc,ix=lx,hx)
556 WRITE (nds,*,err=800,iostat=istat) &
557 (((array(ix,iy)-vof)/vsc,ix=lx,hx),iy=hy,ly,-1)
562 ELSE IF (iidfm.EQ.2)
THEN
565 WRITE (nds,rform,err=800,iostat=istat) &
566 ((array(ix,iy)-vof)/vsc,ix=lx,hx)
568 ELSE IF (iidla.EQ.2)
THEN
569 WRITE (nds,rform,err=800,iostat=istat) &
570 (((array(ix,iy)-vof)/vsc,ix=lx,hx),iy=ly,hy)
571 ELSE IF (iidla.EQ.3)
THEN
573 WRITE (nds,rform,err=800,iostat=istat) &
574 ((array(ix,iy)-vof)/vsc,ix=lx,hx)
577 WRITE (nds,rform,err=800,iostat=istat) &
578 (((array(ix,iy)-vof)/vsc,ix=lx,hx),iy=hy,ly,-1)
586 WRITE (nds,err=800,iostat=istat) &
587 ((array(ix,iy)-vof)/vsc,ix=lx,hx)
589 ELSE IF (iidla.EQ.2)
THEN
590 WRITE (nds,err=800,iostat=istat) &
591 (((array(ix,iy)-vof)/vsc,ix=lx,hx),iy=ly,hy)
592 ELSE IF (iidla.EQ.3)
THEN
594 WRITE (nds,err=800,iostat=istat) &
595 ((array(ix,iy)-vof)/vsc,ix=lx,hx)
598 WRITE (nds,err=800,iostat=istat) &
599 (((array(ix,iy)-vof)/vsc,ix=lx,hx),iy=hy,ly,-1)
608 WRITE (ndse,900) istat
613 900
FORMAT (/
' *** ERROR OUTA2R : '/ &
614 ' ERROR IN WRITING TO FILE'/ &
618 9000
FORMAT (
' TEST OUTA2R : INPUT :'/6x,8i4,2i3,1x,a,i3,2e12.4)
625 SUBROUTINE outa2i (ARRAY, MX, MY, LX, HX, LY, HY, &
626 NDS, NDST, NDSE, IDFM, RFORM, IDLA, VSC, VOF)
659 INTEGER,
INTENT(IN) :: MX, MY, LX, HX, LY, HY, NDS, NDST, &
660 NDSE, IDFM, IDLA, ARRAY(MX,MY)
661 INTEGER,
INTENT(IN) :: VSC, VOF
662 CHARACTER,
INTENT(IN) :: RFORM*(*)
667 INTEGER :: IIDFM, IIDLA, IX, IY, ISTAT
669 INTEGER,
SAVE :: IENT = 0
675 CALL strace (ient,
'OUTA2I')
679 WRITE (ndst,9000) mx, my, lx, hx, ly, hy, nds, ndst, ndse, &
680 idfm, rform, idla, vsc, vof
683 IF (idfm.LT.1 .OR. idfm.GT.3)
THEN
688 IF (idla.LT.1 .OR. idla.GT.4)
THEN
699 WRITE (nds,*,err=800,iostat=istat) &
700 ((array(ix,iy)-vof)/vsc,ix=lx,hx)
702 ELSE IF (iidla.EQ.2)
THEN
703 WRITE (nds,*,err=800,iostat=istat) &
704 (((array(ix,iy)-vof)/vsc,ix=lx,hx),iy=ly,hy)
705 ELSE IF (iidla.EQ.3)
THEN
707 WRITE (nds,*,err=800,iostat=istat) &
708 ((array(ix,iy)-vof)/vsc,ix=lx,hx)
711 WRITE (nds,*,err=800,iostat=istat) &
712 (((array(ix,iy)-vof)/vsc,ix=lx,hx),iy=hy,ly,-1)
717 ELSE IF (iidfm.EQ.2)
THEN
720 WRITE (nds,rform,err=800,iostat=istat) &
721 ((array(ix,iy)-vof)/vsc,ix=lx,hx)
723 ELSE IF (iidla.EQ.2)
THEN
724 WRITE (nds,rform,err=800,iostat=istat) &
725 (((array(ix,iy)-vof)/vsc,ix=lx,hx),iy=ly,hy)
726 ELSE IF (iidla.EQ.3)
THEN
728 WRITE (nds,rform,err=800,iostat=istat) &
729 ((array(ix,iy)-vof)/vsc,ix=lx,hx)
732 WRITE (nds,rform,err=800,iostat=istat) &
733 (((array(ix,iy)-vof)/vsc,ix=lx,hx),iy=hy,ly,-1)
741 WRITE (nds,err=800,iostat=istat) &
742 ((array(ix,iy)-vof)/vsc,ix=lx,hx)
744 ELSE IF (iidla.EQ.2)
THEN
745 WRITE (nds,err=800,iostat=istat) &
746 (((array(ix,iy)-vof)/vsc,ix=lx,hx),iy=ly,hy)
747 ELSE IF (iidla.EQ.3)
THEN
749 WRITE (nds,err=800,iostat=istat) &
750 ((array(ix,iy)-vof)/vsc,ix=lx,hx)
753 WRITE (nds,err=800,iostat=istat) &
754 (((array(ix,iy)-vof)/vsc,ix=lx,hx),iy=hy,ly,-1)
763 WRITE (ndse,900) istat
768 900
FORMAT (/
' *** ERROR OUTA2I : '/ &
769 ' ERROR IN WRITING TO FILE'/ &
773 9000
FORMAT (
' TEST OUTA2I : INPUT :'/6x,8i4,2i3,1x,a,i3,2i5)
780 SUBROUTINE outrea (NDS,ARRAY,DIM,ANAME)
809 INTEGER,
INTENT(IN) :: NDS, DIM
810 REAL,
INTENT(IN) :: ARRAY(DIM)
811 CHARACTER,
INTENT(IN) :: ANAME*(*)
818 INTEGER,
SAVE :: IENT = 0
824 CALL strace (ient,
'OUTREA')
827 WRITE (nds,8000) aname
831 WRITE (nds,8005) (i, i=1, 5)
835 WRITE (nds,
'(1X,I4,A,5E12.4,A)') &
836 k,
' |',(array(i),i= k+1, k+5),
' |'
838 WRITE (nds,
'(1X,T71,''|'',T2,I4,A,5E12.4)') &
839 k,
' |',(array(i),i= k+1, dim)
846 WRITE (nds,9005) (i, i=1, 10)
849 IF (dim-k.GE.10)
THEN
850 WRITE (nds,
'(1X,I4,A,10E12.4,A)') &
851 k,
' |',(array(i),i= k+1, k+10),
' |'
853 WRITE (nds,
'(1X,T131,''|'',T2,I4,A,10E12.4)') &
854 k,
' |',(array(i),i= k+1, dim)
862 8000
FORMAT (/,1x,
'A R R A Y D U M P (REAL) / NAME: ',a)
863 8005
FORMAT (8x,5i12)
864 8010
FORMAT (7x,
'+',62(
'-'),
'+')
865 9005
FORMAT (8x,10i12)
866 9010
FORMAT (7x,
'+',122(
'-'),
'+')
872 SUBROUTINE outint ( NDS, IARRAY, DIM, ANAME )
923 INTEGER,
INTENT(IN) :: NDS, DIM, IARRAY(DIM)
924 CHARACTER,
INTENT(IN) :: ANAME*(*)
931 INTEGER,
SAVE :: IENT = 0
937 CALL strace (ient,
'OUTINT')
940 WRITE (nds,8000) aname
945 WRITE (nds,8005) (i, i=1, 5)
949 WRITE (nds,
'(1X,I4,A,5I12,A)') &
950 k,
' |',(iarray(i),i= k+1, k+5),
' |'
952 WRITE (nds,
'(1X,T71,''|'',T2,I4,A,5I12)') &
953 k,
' |',(iarray(i),i= k+1, dim)
961 WRITE (nds,9005) (i, i=1, 10)
964 IF (dim-k.GE.10)
THEN
965 WRITE (nds,
'(1X,I4,A,10I12,A)') &
966 k,
' |',(iarray(i),i= k+1, k+10),
' |'
968 WRITE (nds,
'(1X,T131,''|'',T2,I4,A,10I12)') &
969 k,
' |',(iarray(i),i= k+1, dim)
977 8000
FORMAT (/,1x,
'A R R A Y D U M P (INTEGER) / NAME: ',a)
978 8005
FORMAT (8x,5i12)
979 8010
FORMAT (7x,
'+',62(
'-'),
'+')
980 9005
FORMAT (8x,10i12)
981 9010
FORMAT (7x,
'+',122(
'-'),
'+')
987 SUBROUTINE outmat (NDS,A,MX,NX,NY,MNAME)
1039 INTEGER,
INTENT(IN) :: NDS, MX, NX, NY
1040 REAL,
INTENT(IN) :: A(MX,NY)
1041 CHARACTER,
INTENT(IN) :: MNAME*(*)
1046 INTEGER :: LBLOK, NBLOK, IBLOK, IX, IX1, IX2, IY
1048 INTEGER,
SAVE :: IENT = 0
1054 CALL strace (ient,
'OUTMAT')
1057 WRITE(nds,8000) mname
1063 nblok = (nx-1)/lblok + 1
1065 ix1 = (iblok-1)*lblok + 1
1066 ix2 = ix1 + lblok - 1
1067 IF(ix2.GT.nx) ix2 = nx
1068 WRITE(nds,8001) (ix,ix = ix1,ix2)
1071 WRITE(nds,8003) iy,(a(ix,iy),ix = ix1,ix2)
1080 nblok = (nx-1)/lblok + 1
1082 ix1 = (iblok-1)*lblok + 1
1083 ix2 = ix1 + lblok - 1
1084 IF(ix2.GT.nx) ix2 = nx
1085 WRITE(nds,9001) (ix,ix = ix1,ix2)
1088 WRITE(nds,9003) iy,(a(ix,iy),ix = ix1,ix2)
1098 8000
FORMAT(/,1x,
' M A T R I X D U M P (REAL) / NAME: ',a)
1099 8001
FORMAT(9x,6i10)
1100 8002
FORMAT(1x,6x,
'+',62(
'-'),
'+')
1101 8003
FORMAT(1x,t71,
'|',t2,i5,
' | ',12e10.3)
1102 9001
FORMAT(9x,12i10)
1103 9002
FORMAT(1x,6x,
'+',122(
'-'),
'+')
1104 9003
FORMAT(1x,t131,
'|',t2,i5,
' | ',12e10.3)
1110 SUBROUTINE prtblk (NDS, NX, NY, MX, F, MAP, MAP0, FSC, &
1111 IX1, IX2, IX3, IY1, IY2, IY3, PRVAR, PRUNIT)
1187 INTEGER,
INTENT(IN) :: NDS, NX, NY, MX, MAP(MX,NY), MAP0, &
1188 IX1, IX2, IX3, IY1, IY2, IY3
1189 REAL,
INTENT(IN) :: F(MX,NY), FSC
1190 CHARACTER,
INTENT(IN) :: PRVAR*(*), PRUNIT*(*)
1195 INTEGER :: IX, IY, JJ, JM, K1, LX, I
1197 INTEGER,
SAVE :: IENT = 0
1201 CHARACTER :: PNUM*5, STRA*5, PNUM2*2, STRA3*3
1202 dimension :: pnum(25), pnum2(61)
1207 CALL strace (ient,
'PRTBLK')
1212 flscle = (fsc.LE.0.)
1220 IF ( map(ix,iy) .NE. map0 ) &
1221 fmax = max( fmax , abs(f(ix,iy)) )
1232 WRITE (nds,901) prvar, fmax, prunit
1236 DO ix = ix1, ix2, ix3
1241 WRITE (nds,912) (ix,ix=ix1,ix2,2*ix3)
1243 WRITE (nds,910) stra,
' +', (pnum2(1), i=1, lx),
'-+'
1248 DO iy = iy2, iy1, iy3*(-1)
1251 DO ix = ix1, ix2, ix3
1253 IF (map(ix,iy).EQ.map0)
THEN
1256 rr = 10.*f(ix,iy)/fmax
1257 WRITE (stra, fmt=
'(I2,3X)') int(rr*1.000001)
1258 pnum2(jj) = stra(1:2)
1259 IF (pnum2(jj).EQ.
'10' .OR. pnum2(jj).EQ.
'**' .OR. &
1260 f(ix,iy).EQ.fmax)
THEN
1261 IF ( rr .LT. 0. )
THEN
1271 WRITE (stra, fmt=
'(I5)') iy
1279 WRITE (nds,910) stra,
' |', (pnum2(i), i=1, lx),
' |'
1284 WRITE (nds,910) stra,
' +', (pnum2(1), i=1, lx),
'-+'
1285 WRITE (nds,912) (ix,ix=ix1,ix2,2*ix3)
1294 WRITE (nds,900) prvar, fsc, prunit
1298 DO ix = ix1, ix2, ix3
1303 WRITE (nds,922) (ix,ix=ix1,ix2,ix3)
1306 WRITE (nds,920) stra3,
' +', (pnum(1), i=1, lx),
'-+ '
1311 DO iy = iy2, iy1, iy3*(-1)
1313 WRITE (stra3, fmt=
'(I3)') iy
1321 DO ix = ix1, ix2, ix3
1323 IF (map(ix,iy).EQ.map0)
THEN
1328 WRITE (stra, fmt=
'(I5)') k1
1334 WRITE (nds,920) stra3,
' |', (pnum(i), i=1, lx),
' | '
1339 WRITE (nds,920) stra3,
' +', (pnum(1), i=1, lx),
'-+ '
1340 WRITE (nds,922) (ix,ix=ix1,ix2,ix3)
1349 900
FORMAT (/,
' Variable: ',a,
' Units: ',e10.3,1x,a)
1350 901
FORMAT (/,
' Variable: ',a,
' Max.: ',e10.3,1x,a)
1352 910
FORMAT (1x,a5,63a2)
1354 912
FORMAT (6x,32i8)
1356 920
FORMAT (1x,a3,a2,25a5)
1358 922
FORMAT (6x,25i5)
1364 SUBROUTINE prt1ds (NDS, NFR, E, FR, UFR, NLINES, FTOPI, &
1365 PRVAR, PRUNIT, PNTNME)
1446 INTEGER,
INTENT(IN) :: NDS, NFR, NLINES
1447 REAL,
INTENT(IN) :: FTOPI, E(NFR), FR(NFR)
1448 CHARACTER,
INTENT(IN) :: PRVAR*(*), PRUNIT*(*), PNTNME*(*), &
1454 INTEGER :: NFRB, IFR, IL, IL0
1456 INTEGER,
SAVE :: IENT = 0
1458 REAL,
SAVE :: TOPFAC = 1.1
1459 REAL :: FTOP, RLINES, FACFR, FSC, FLINE, &
1460 EMAX, EMIN, EXTR, FLOC
1462 CHARACTER :: STRA*10, STRA2*2, PNUM2*2
1463 dimension :: pnum2(nfm2)
1468 CALL strace (ient,
'PRT1DS')
1474 rlines = real(nlines)
1477 IF (ufr.EQ.
'HZ')
THEN
1489 emax = max( emax , e(ifr) )
1490 emin = min( emin , e(ifr) )
1493 IF (emax.EQ.0. .AND. emin.EQ.0.)
THEN
1498 IF (emax.GT.abs(emin))
THEN
1507 IF (emax.GT.abs(emin))
THEN
1508 floc = emax * topfac
1509 fsc = floc / real(nint(emax/(emax-emin)*rlines))
1511 floc = emin * topfac
1512 fsc = floc / real(nint(emin/(emax-emin)*rlines))
1513 floc = ftop + rlines*fsc
1514 IF (emax.LT.0.01*fsc) ftop = 0.
1519 IF (emax*emin.LT.0) fsc = 2.*fsc
1520 IF (emax.LT.0.01*fsc) floc = 0.
1523 il0 = mod( nint(floc/fsc) , 2 ) + 1
1527 WRITE (nds,900) pntnme, prvar, extr, prunit
1532 IF (mod(nlines+il0,2).EQ.0)
THEN
1533 WRITE (stra, fmt=
'(E10.3)') fline
1539 IF ( nint( (e(ifr)-fline)/fsc ) .EQ.0)
THEN
1546 pnum2(nfrb+1) =
'-+'
1548 WRITE (nds,910) stra, stra2, (pnum2(ifr),ifr=1, nfrb+1)
1553 fline = floc - fsc * real(il)
1554 IF (abs(fline).LT.0.01*fsc) fline = 0.
1555 IF (mod(nlines+il0-il,2).EQ.0)
THEN
1556 WRITE (stra, fmt=
'(E10.3)') fline
1563 IF (abs(fline).LT.0.1*fsc)
THEN
1564 pnum2(nfrb+1) =
'-|'
1565 IF ( nint( (e(ifr)-fline)/fsc ) .EQ.0)
THEN
1571 pnum2(nfrb+1) =
' |'
1572 IF ( nint( (e(ifr)-fline)/fsc ) .EQ.0)
THEN
1579 WRITE (nds,910) stra, stra2, (pnum2(ifr),ifr=1, nfrb+1)
1584 fline = floc - fsc * real(il)
1585 IF (abs(fline).LT.0.01*fsc) fline = 0.
1586 WRITE (stra, fmt=
'(E10.3)') fline
1587 IF (mod(il0,2).EQ.0)
THEN
1588 WRITE (stra, fmt=
'(E10.3)') fline
1593 pnum2(nfrb+1) =
'-+'
1596 IF ( nint( (e(ifr)-fline)/fsc ) .EQ.0)
THEN
1598 ELSE IF ( mod(ifr-2,4) .EQ. 0 )
THEN
1605 WRITE (nds,910) stra, stra2, (pnum2(ifr),ifr=1, nfrb+1)
1606 WRITE (nds,911) (fr(ifr)*facfr,ifr=2,nfrb,4)
1613 900
FORMAT (/
' Location : ',a &
1614 /
' Spectrum : ',a,
' Extreme value : ',e10.3,1x,a/)
1616 910
FORMAT (a10,a2,60a2)
1617 911
FORMAT (10x,15f8.3)
1625 SUBROUTINE prt1dm (NDS, NFR, NE, E, FR, UFR, NLINES, FTOPI, &
1626 PRVAR, PRUNIT, PNTNME)
1708 INTEGER,
INTENT(IN) :: NDS, NFR, NE, NLINES
1709 REAL,
INTENT(IN) :: FTOPI, E(NFR,NE), FR(NFR)
1710 CHARACTER,
INTENT(IN) :: PRVAR*(*), PRUNIT*(*), PNTNME*(*), &
1712 dimension :: prvar(ne)
1717 INTEGER,
PARAMETER :: NFRMAX = 100
1718 INTEGER,
PARAMETER :: NFM2 = nfrmax+1
1719 INTEGER :: NFRB, IFR, IE, IL
1721 INTEGER,
SAVE :: IENT = 0
1723 REAL,
SAVE :: TOPFAC = 1.1
1724 REAL :: FTOP, RLINES, FACFR, FSC, FLINE, &
1725 EMAX, EMIN, EXTR, FLOC
1727 CHARACTER :: STRA*10, STRA2*2, STRAX*2, PNUM2*2
1728 dimension :: pnum2(nfm2)
1733 CALL strace (ient,
'PRT1DM')
1740 WRITE (*,*)
'TEST OUTPUT PRT1DM, ECHO OF INPUT'
1741 WRITE (*,*)
'=======================================', &
1742 '======================================='
1743 WRITE (*,*)
'File unit number : ', nds
1744 WRITE (*,*)
'Number of frequencies : ', nfr
1745 WRITE (*,*)
'Number of spectra : ', ne
1747 WRITE (*,*)
'Spectral densities spectrum ', ie
1748 WRITE (*,
'(6X,8E9.2)') (e(ifr,ie),ifr=1,nfr)
1750 WRITE (*,*)
'Frequencies'
1751 WRITE (*,
'(6X,8E9.2)') (fr(ifr),ifr=1,nfr)
1752 WRITE (*,*)
'Frequency type : ', ufr
1753 WRITE (*,*)
'NLINES : ', nlines
1754 WRITE (*,*)
'FTOPI : ', ftopi
1755 WRITE (*,*)
'Names of spectra : ', prvar(1)
1757 WRITE (*,*)
' ', prvar(ie)
1759 WRITE (*,*)
'Units of spectra : ', prunit
1760 WRITE (*,*)
'Name of location : ', pntnme
1761 WRITE (*,*)
'=======================================', &
1762 '======================================='
1768 rlines = real(nlines)
1771 IF (ufr.EQ.
'HZ')
THEN
1784 emax = max( emax , e(ifr,ie) )
1785 emin = min( emin , e(ifr,ie) )
1789 IF (emax.EQ.0. .AND. emin.EQ.0.)
THEN
1794 IF (emax.GT.abs(emin))
THEN
1803 IF (emax.GT.abs(emin))
THEN
1804 ftop = emax * topfac
1805 fsc = ftop / real(nint(emax/(emax-emin)*rlines))
1807 ftop = emin * topfac
1808 fsc = ftop / real(nint(emin/(emax-emin)*rlines))
1809 ftop = ftop + rlines*fsc
1810 IF (abs(ftop).LT.0.01*fsc) ftop = 0.
1814 IF (emax*emin.LT.0) fsc = 2.*fsc
1815 IF (emax.EQ.0.) ftop = 0.
1820 WRITE (nds,900) pntnme, extr, prunit
1825 IF (mod(nlines,2).EQ.0)
THEN
1826 WRITE (stra, fmt=
'(E10.3)') fline
1834 IF ( nint( (e(ifr,ie)-fline)/fsc ) .EQ.0)
THEN
1836 WRITE (strax,
'(A1,I1)')
'-', ie
1838 WRITE (strax,
'(I2)') ie
1845 pnum2(nfrb+1) =
'-+'
1847 WRITE (nds,910) stra, stra2, (pnum2(ifr),ifr=1, nfrb+1)
1851 pnum2(nfrb+1) =
' |'
1854 fline = ftop - fsc * real(il)
1855 IF (abs(fline).LT.0.01*fsc) fline = 0.
1856 IF (mod(nlines-il,2).EQ.0)
THEN
1857 WRITE (stra, fmt=
'(E10.3)') fline
1864 pnum2(nfrb+1) =
' |'
1865 IF (abs(fline).LT.0.1*fsc)
THEN
1867 pnum2(nfrb+1) =
'-+'
1869 IF ( nint( (e(ifr,ie)-fline)/fsc ) .EQ.0)
THEN
1871 WRITE (strax,
'(A1,I1)')
'-', ie
1873 WRITE (strax,
'(I2)') ie
1881 IF ( nint( (e(ifr,ie)-fline)/fsc ) .EQ.0)
THEN
1882 WRITE (strax,
'(I2)') ie
1888 WRITE (nds,910) stra, stra2, (pnum2(ifr),ifr=1, nfrb+1)
1893 fline = ftop - fsc * real(il)
1894 IF (abs(fline).LT.0.01*fsc) fline = 0.
1895 WRITE (stra, fmt=
'(E10.3)') fline
1897 pnum2(nfrb+1) =
'-+'
1900 IF ( mod(ifr-2,4) .EQ. 0 )
THEN
1906 IF ( nint( (e(ifr,ie)-fline)/fsc ) .EQ.0)
THEN
1908 WRITE (strax,
'(A1,I1)')
'-', ie
1910 WRITE (strax,
'(I2)') ie
1917 WRITE (nds,910) stra, stra2, (pnum2(ifr),ifr=1, nfrb+1)
1918 WRITE (nds,911) (fr(ifr)*facfr,ifr=2,nfrb,4)
1920 WRITE (nds,921) (prvar(ie),ie=1,ne)
1922 IF (flscle) ftop = 0.
1928 900
FORMAT (/
' Location : ',a &
1929 /
' Extreme value : ',e10.3,1x,a/)
1931 910
FORMAT (a10,a2,60a2)
1932 911
FORMAT (10x,15f8.3)
1935 921
FORMAT (10x,
'spectra : ',10(a,
' ')/)
1941 SUBROUTINE prt2ds (NDS, NFR0, NFR, NTH, E, FR, UFR, FACSP, FSC, &
1942 RRCUT, PRVAR, PRUNIT, PNTNME)
2031 INTEGER,
INTENT(IN) :: NDS, NFR0, NFR, NTH
2032 REAL,
INTENT(IN) :: E(NFR0,*), FR(*), FACSP, FSC, RRCUT
2033 CHARACTER,
INTENT(IN) :: PRVAR*(*), PRUNIT*(*), PNTNME*(*), &
2039 INTEGER :: IFR, ITH, NFRB, INTANG, ITHSEC
2041 INTEGER,
SAVE :: IENT = 0
2044 REAL :: FACFR, EMAX, EMIN, DTHDEG, RR, RRC
2045 CHARACTER :: PNUM*5, STRA*5, STRANG*5, PNUM2*2, &
2047 dimension :: pnum(25), pnum2(101)
2052 CALL strace (ient,
'PRT2DS')
2056 WRITE (nds,9000) nds, nfr0, nfr, nth, ufr, facsp, fsc, &
2057 rrcut, prvar, prunit, pntnme
2068 IF (ufr.EQ.
'HZ')
THEN
2081 emax = max( emax , e(ifr,ith) )
2082 emin = min( emin , e(ifr,ith) )
2086 emax = max(emax, abs(emin) )
2088 dthdeg = 360. / real(nth)
2096 WRITE (nds,900) pntnme, prvar, emax*facsp, prunit
2101 WRITE (nds,910) (fr(ifr)*facfr,ifr=2,nfrb,4)
2104 IF ( mod((ifr-2),4) .EQ. 0)
THEN
2111 pnum2(nfrb+1) =
'-+'
2112 WRITE (nds,920) (pnum2(ifr),ifr=1, nfrb+1)
2119 intang = 270 - nint(dthdeg*real(ith-1))
2120 IF (intang.LT.0)
THEN
2124 CALL angstr (intang, strang, 4, 2)
2126 rr = e(ifr,ith)/emax
2127 IF (e(ifr,ith).EQ.emax .OR. rr.GE.1.)
THEN
2129 ELSE IF (-e(ifr,ith).EQ.emax .OR. rr.LE.-1.)
THEN
2131 ELSE IF (abs(rr).LT.rrc)
THEN
2133 ELSE IF ((rr*10.).LT.0. .AND. (rr*10.).GT.-1.)
THEN
2136 WRITE (stra2, fmt=
'(I2)') int(rr*10.)
2140 pnum2(nfrb+1) =
' |'
2141 WRITE (nds,930) strang, (pnum2(ifr),ifr=1, nfrb+1)
2144 DO ith= nth, ithsec, -1
2145 intang = 630 - nint(dthdeg*real(ith-1))
2146 CALL angstr (intang, strang, 4, 2)
2148 rr = e(ifr,ith)/emax
2149 IF (e(ifr,ith).EQ.emax .OR. rr.GE.1.)
THEN
2151 ELSE IF (-e(ifr,ith).EQ.emax .OR. rr.LE.-1.)
THEN
2153 ELSE IF (abs(rr).LT.rrc)
THEN
2155 ELSE IF ((rr*10.).LT.0. .AND. (rr*10.).GT.-1.)
THEN
2158 WRITE (stra2, fmt=
'(I2)') int(rr*10.)
2162 pnum2(nfrb+1) =
' |'
2163 WRITE (nds,930) strang, (pnum2(ifr),ifr=1, nfrb+1)
2170 WRITE (nds,920) (pnum2(1),ifr=1, nfrb), pnum2(2)
2179 WRITE (nds,901) pntnme, prvar, fsc, prunit, &
2186 WRITE (nds,911) (fr(ifr)*facfr,ifr=2,nfrb,2)
2190 IF (nfrb.LT.25)
THEN
2191 WRITE (nds,921) (pnum(1),ifr=1, nfrb), pnum(2)
2193 WRITE (nds,921) (pnum(1),ifr=1, nfrb)
2201 intang = 270 - nint(dthdeg*real(ith-1))
2202 IF (intang.LT.0)
THEN
2206 CALL angstr (intang, strang, 4, 2)
2209 IF (abs(rr/emax).LT.rrcut)
THEN
2212 WRITE (stra, fmt=
'(I5)') nint(rr*facsp/fsc)
2216 WRITE (nds,931) strang, (pnum(ifr),ifr=1, nfrb)
2219 DO ith= nth, ithsec, -1
2220 intang = 630 - nint(dthdeg*real(ith-1))
2221 CALL angstr (intang, strang, 4, 2)
2224 IF (abs(rr/emax).LT.rrcut)
THEN
2227 WRITE (stra, fmt=
'(I5)') nint(rr*facsp/fsc)
2231 WRITE (nds,931) strang, (pnum(ifr),ifr=1, nfrb)
2238 IF (nfrb.LT.25)
THEN
2239 WRITE (nds,921) (pnum(1),ifr=1, nfrb), pnum(2)
2241 WRITE (nds,921) (pnum(1),ifr=1, nfrb)
2251 900
FORMAT (/
' Location : ',a/ &
2252 ' Spectrum : ',a,
' (Normalized) ', &
2253 ' Maximum value : ',e10.3,1x,a/)
2254 901
FORMAT (/
' Location : ',a/ &
2255 ' Spectrum : ',a,
' Units : ',e10.3,1x,a, &
2256 ' Maximum value : ',e10.3,1x,a/)
2258 910
FORMAT (5x,
' ang.| frequencies (Hz) '/ &
2259 5x,
' deg.|',f6.3,15f8.3)
2260 920
FORMAT (5x,
' ----+',60a2)
2261 930
FORMAT (5x,
' ',a4,
' |',60a2)
2263 911
FORMAT (
' ang.| frequencies (Hz) '/ &
2265 921
FORMAT (
' ----|',25a5)
2266 931
FORMAT (
' ',a4,
' |',25a5)
2271 9000
FORMAT (
' TEST PRT2DS : ECHO OF INPUT PARAMETERS'/ &
2273 ' NFR0, NFR :',2i6/ &
2289 SUBROUTINE angstr (IANG, SANG, ILEN, INUM)
2320 INTEGER,
INTENT(IN) :: IANG, ILEN, INUM
2321 CHARACTER,
INTENT(OUT) :: SANG*(*)
2333 IF (inum.EQ.1 .OR. inum.GE.3)
THEN
2334 WRITE (saux, fmt=
'(I4)') iang
2343 ELSE IF (iang.EQ.90)
THEN
2345 ELSE IF (iang.EQ.180)
THEN
2347 ELSE IF (iang.EQ.270)
THEN
2349 ELSE IF (inum.GE.2)
THEN
2350 IF (iang.EQ.45)
THEN
2352 ELSE IF (iang.EQ.135)
THEN
2354 ELSE IF (iang.EQ.225)
THEN
2356 ELSE IF (iang.EQ.315)
THEN
2369 sang(i:i) = saux(j:j)