GCC Code Coverage Report


Directory: ./
File: rad/dump2ds.f
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 75 0.0%
Branches: 0 74 0.0%

Line Branch Exec Source
1 SUBROUTINE dump2ds(im,jm,z,nom_z)
2 C Copyright (C) 2005 Centre National de la Recherche Scientifique
3 c ==================================================================
4 c Perform a scatter plot print of big matrices using regular
5 c intervals between min and max matrix coefficient values.
6 c ==================================================================
7 c adapted from LMD3 by Alain Lahellec and retranscipted for LMDZ5
8 c NAN et INF ajoute aux plots Pat fin 2006
9 c ==================================================================
10 c Comme dump2d sauf que le signe est pr�serv�, la valeur zero
11 c identifiee par un blanc.
12 c detection des Infty (= ou -) et NaN (?)
13 c ==================================================================
14 IMPLICIT NONE
15 INTEGER im,jm
16 REAL z(im,jm),az
17 CHARACTER*32 jform,jline*1000
18 CHARACTER*1 iform(32)
19 CHARACTER*16 F1000
20 logical zinf,znan,zsign
21 CHARACTER (len=*) :: nom_z
22 INTEGER*4 icheck(2)
23 EQUIVALENCE(az,icheck)
24 EQUIVALENCE(iform,jform)
25 DATA jform/'-@zyxwvutsrqpon NOPQRSTUVWXYZ*+?'/
26 INTEGER i,j,k,imin,imax,jmin,jmax,kzero,kchar(im)
27 REAL zmin,zmax,zllu,zllm
28 write(F1000,'(''(4x,'',I3,''(1H-))'')')im+3
29 DO 10001 i=1,200
30 jline(1+(i-1)*5:5*i)='. '
31 10001 CONTINUE
32 10002 zmin=z(1,1)
33 imin=1
34 jmin=1
35 zmax=z(1,1)
36 imax=1
37 jmax=1
38 kzero=0
39 DO 10003 j=1,jm
40 DO 10005 i=1,im
41 IF(.NOT.( z(i,j).GT.zmax))GOTO 10007
42 zmax=z(i,j)
43 imax=i
44 jmax=j
45 10007 IF(.NOT.( z(i,j).LT.zmin))GOTO 10009
46 zmin=z(i,j)
47 imin=i
48 jmin=j
49 10009 IF(.NOT.( z(i,j).eq.0.))GOTO 10011
50 kzero=kzero+1
51 10011 CONTINUE
52 10005 CONTINUE
53 10006 CONTINUE
54 10003 CONTINUE
55 10004 zsign=(sign(1.,zmin)*sign(1.,zmax).gt.0.)
56 WRITE(*,*)'>>> dump2ds: ',trim(nom_z)
57 PRINT*,'>>> ',kzero,' zero values <<<'
58 IF(.NOT.( ZMin.lt.0.))GOTO 10013
59 PRINT2000,' [MIN:',zmin,'(',imin,',',jmin,') (-@zyxwvutsrqpon NOPQ
60 *RSTUVWXYZ*+) ',zmax,'(',imax,',',jmax,'):MAX]'
61 GOTO 10014
62 10013 PRINT2000,' [MIN:',zmin,'(',imin,',',jmin,') ( NOPQRSTUVWXYZ*+) ',
63 *zmax,'(',imax,',',jmax,'):MAX]'
64 10014 CONTINUE
65 2000 Format(a,1pg11.4,a1,i3,a1,i3,a,1pg11.4,a1,i3,a1,i3,a)
66 IF(.NOT.( zmax.GT.zmin))GOTO 10015
67 zllm=max(abs(zmax),abs(zmin))
68 zllu=min(abs(zmax),abs(zmin))
69 if(im.ge.100)WRITE(*,'(104x,900i1)')(mod(i/100,10),i=100,im)
70 WRITE(*,'(14x,1000i1)')(mod(i/10,10),i=10,im)
71 WRITE(*,'(5x,1009i1)')(mod(i,10),i=1,im)
72 write(*,F1000)
73 zinf=.false.
74 znan=.false.
75 DO 10017 j=1,jm
76 DO 10019 i=1,im
77 az=abs(z(i,j))
78 IF(.NOT.( az.eq.0.))GOTO 10021
79 kchar(i)=16
80 GOTO 10022
81 10021 IF(.NOT.((az.ne.0.and.icheck(1).eq.0.and.icheck(2).eq.2146435072))
82 *)GOTO 10023
83 kchar(i)=31
84 zinf=.true.
85 GOTO 10022
86 10023 IF(.NOT.((az.ne.0.and.icheck(1).eq.0.and.icheck(2).eq.2146959360))
87 *)GOTO 10024
88 kchar(i)=32
89 znan=.true.
90 GOTO 10022
91 10024 IF(.NOT.( zsign))GOTO 10025
92 kchar(i)=NINT(13.*(az-zllu)/(zllm-zllu)+17)
93 GOTO 10026
94 10025 kchar(i)=NINT(13.*az/zllm+17)
95 10026 CONTINUE
96 10022 IF(.NOT.( z(i,j).lt.0.))GOTO 10027
97 kchar(i)=32-kchar(i)
98 10027 CONTINUE
99 10019 CONTINUE
100 10020 WRITE(*,'(1x,i3,''|'',1000a)')j+1,(iform(kchar(i)),i=1,im),'|','|
101 *'
102 10017 CONTINUE
103 10018 write(*,F1000)
104 WRITE(*,'(5x,1000i1)')(mod(i,10),i=1,im)
105 WRITE(*,'(14x,1000i1)')(mod(i/10,10),i=10,im)
106 if(im.ge.100)WRITE(*,'(104x,900i1)')(mod(i/100,10),i=100,im)
107 GOTO 10016
108 10015 print*,'>>> ZERO MAP <<<'
109 10016 if(zinf)print*,' *** Infty value(s) (+ or -) in map ***'
110 if(znan)print*,' *** NaN value(s) (?) in map ***'
111 print*
112 RETURN
113 END
114