GCC Code Coverage Report


Directory: ./
File: dyn/wrgrads.f
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 56 0.0%
Branches: 0 20 0.0%

Line Branch Exec Source
1 !
2 ! $Header$
3 !
4 subroutine wrgrads(if,nl,field,name,titlevar)
5 implicit none
6
7 c Declarations
8 c if indice du fichier
9 c nl nombre de couches
10 c field champ
11 c name petit nom
12 c titlevar Titre
13
14 !
15 ! $Header$
16 !
17 integer nfmx,imx,jmx,lmx,nvarmx
18 parameter(nfmx=10,imx=200,jmx=150,lmx=200,nvarmx=1000)
19
20 real xd(imx,nfmx),yd(jmx,nfmx),zd(lmx,nfmx),dtime(nfmx)
21
22 integer imd(imx),jmd(jmx),lmd(lmx)
23 integer iid(imx),jid(jmx)
24 integer ifd(imx),jfd(jmx)
25 integer unit(nfmx),irec(nfmx),itime(nfmx),nld(nvarmx,nfmx)
26
27 integer nvar(nfmx),ivar(nfmx)
28 logical firsttime(nfmx)
29
30 character*10 var(nvarmx,nfmx),fichier(nfmx)
31 character*40 title(nfmx),tvar(nvarmx,nfmx)
32
33 common/gradsdef/xd,yd,zd,dtime,
34 s imd,jmd,lmd,iid,jid,ifd,jfd,
35 s unit,irec,nvar,ivar,itime,nld,firsttime,
36 s var,fichier,title,tvar
37
38 c arguments
39 integer if,nl
40 real field(imx*jmx*lmx)
41
42 integer, parameter:: wp = selected_real_kind(p=6, r=36)
43 real(wp) field4(imx*jmx*lmx)
44
45 character*10 name,file
46 character*10 titlevar
47
48 c local
49
50 integer im,jm,lm,i,j,l,iv,iii,iji,iif,ijf
51
52 logical writectl
53
54
55 writectl=.false.
56
57 c print*,if,iid(if),jid(if),ifd(if),jfd(if)
58 iii=iid(if)
59 iji=jid(if)
60 iif=ifd(if)
61 ijf=jfd(if)
62 im=iif-iii+1
63 jm=ijf-iji+1
64 lm=lmd(if)
65
66 c print*,'im,jm,lm,name,firsttime(if)'
67 c print*,im,jm,lm,name,firsttime(if)
68
69 if(firsttime(if)) then
70 if(name.eq.var(1,if)) then
71 firsttime(if)=.false.
72 ivar(if)=1
73 print*,'fin de l initialiation de l ecriture du fichier'
74 print*,file
75 print*,'fichier no: ',if
76 print*,'unit ',unit(if)
77 print*,'nvar ',nvar(if)
78 print*,'vars ',(var(iv,if),iv=1,nvar(if))
79 else
80 ivar(if)=ivar(if)+1
81 nvar(if)=ivar(if)
82 var(ivar(if),if)=name
83 tvar(ivar(if),if)=trim(titlevar)
84 nld(ivar(if),if)=nl
85 c print*,'initialisation ecriture de ',var(ivar(if),if)
86 c print*,'if ivar(if) nld ',if,ivar(if),nld(ivar(if),if)
87 endif
88 writectl=.true.
89 itime(if)=1
90 else
91 ivar(if)=mod(ivar(if),nvar(if))+1
92 if (ivar(if).eq.nvar(if)) then
93 writectl=.true.
94 itime(if)=itime(if)+1
95 endif
96
97 if(var(ivar(if),if).ne.name) then
98 print*,'Il faut stoker la meme succession de champs a chaque'
99 print*,'pas de temps'
100 print*,'fichier no: ',if
101 print*,'unit ',unit(if)
102 print*,'nvar ',nvar(if)
103 print*,'vars ',(var(iv,if),iv=1,nvar(if))
104
105 stop
106 endif
107 endif
108
109 c print*,'ivar(if),nvar(if),var(ivar(if),if),writectl'
110 c print*,ivar(if),nvar(if),var(ivar(if),if),writectl
111 field4(1:imd(if)*jmd(if)*nl)=field(1:imd(if)*jmd(if)*nl)
112 do l=1,nl
113 irec(if)=irec(if)+1
114 c print*,'Ecrit rec=',irec(if),iii,iif,iji,ijf,
115 c s (l-1)*imd(if)*jmd(if)+(iji-1)*imd(if)+iii
116 c s ,(l-1)*imd(if)*jmd(if)+(ijf-1)*imd(if)+iif
117 write(unit(if)+1,rec=irec(if))
118 s ((field4((l-1)*imd(if)*jmd(if)+(j-1)*imd(if)+i)
119 s ,i=iii,iif),j=iji,ijf)
120 enddo
121 if (writectl) then
122
123 file=fichier(if)
124 c WARNING! on reecrase le fichier .ctl a chaque ecriture
125 open(unit(if),file=trim(file)//'.ctl'
126 & ,form='formatted',status='unknown')
127 write(unit(if),'(a5,1x,a40)')
128 & 'DSET ','^'//trim(file)//'.dat'
129
130 write(unit(if),'(a12)') 'UNDEF 1.0E30'
131 write(unit(if),'(a5,1x,a40)') 'TITLE ',title(if)
132 call formcoord(unit(if),im,xd(iii,if),1.,.false.,'XDEF')
133 call formcoord(unit(if),jm,yd(iji,if),1.,.true.,'YDEF')
134 call formcoord(unit(if),lm,zd(1,if),1.,.false.,'ZDEF')
135 write(unit(if),'(a4,i10,a30)')
136 & 'TDEF ',itime(if),' LINEAR 02JAN1987 1MO '
137 write(unit(if),'(a4,2x,i5)') 'VARS',nvar(if)
138 do iv=1,nvar(if)
139 c print*,'if,var(iv,if),nld(iv,if),nld(iv,if)-1/nld(iv,if)'
140 c print*,if,var(iv,if),nld(iv,if),nld(iv,if)-1/nld(iv,if)
141 write(unit(if),1000) var(iv,if),nld(iv,if)-1/nld(iv,if)
142 & ,99,tvar(iv,if)
143 enddo
144 write(unit(if),'(a7)') 'ENDVARS'
145 c
146 1000 format(a5,3x,i4,i3,1x,a39)
147
148 close(unit(if))
149
150 endif ! writectl
151
152 return
153
154 END
155
156