GCC Code Coverage Report


Directory: ./
File: dyn/check_isotopes.f
Date: 2022-01-11 19:19:34
Exec Total Coverage
Lines: 0 103 0.0%
Branches: 0 92 0.0%

Line Branch Exec Source
1 ✗ subroutine check_isotopes_seq(q,ip1jmp1,err_msg)
2 USE infotrac
3 implicit none
4
5 !-----------------------------------------------------------------------
6 ! INCLUDE 'dimensions.h'
7 !
8 ! dimensions.h contient les dimensions du modele
9 ! ndm est tel que iim=2**ndm
10 !-----------------------------------------------------------------------
11
12 INTEGER iim,jjm,llm,ndm
13
14 PARAMETER (iim= 32,jjm=32,llm=39,ndm=1)
15
16 !-----------------------------------------------------------------------
17
18 ! inputs
19 integer ip1jmp1
20 real q(ip1jmp1,llm,nqtot)
21 character*(*) err_msg ! message d''erreur à afficher
22
23 ! locals
24 integer ixt,phase,k,i,iq,iiso,izone,ieau,iqeau
25 real xtractot,xiiso
26 real borne
27 real qmin
28 real errmax ! erreur maximale en absolu.
29 real errmaxrel ! erreur maximale en relatif autorisée
30 real deltaDmax,deltaDmin
31 real ridicule
32 parameter (borne=1e19)
33 parameter (errmax=1e-8)
34 parameter (errmaxrel=1e-3)
35 parameter (qmin=1e-11)
36 parameter (deltaDmax=200.0,deltaDmin=-999.9)
37 parameter (ridicule=1e-12)
38 real deltaD
39
40 ✗ if (ok_isotopes) then
41
42 ✗ write(*,*) 'check_isotopes 31: err_msg=',err_msg
43 ! verifier que rien n'est NaN
44 ✗ do ixt=1,ntraciso
45 ✗ do phase=1,nqo
46 ✗ iq=iqiso(ixt,phase)
47 ✗ do k=1,llm
48 ✗ DO i = 1,ip1jmp1
49 ✗ if ((q(i,k,iq).gt.-borne).and.
50 ✗ : (q(i,k,iq).lt.borne)) then
51 else !if ((x(ixt,i,j).gt.-borne).and.
52 ✗ write(*,*) 'erreur detectee par iso_verif_noNaN:'
53 ✗ write(*,*) err_msg
54 ✗ write(*,*) 'q,i,k,iq=',q(i,k,iq),i,k,iq
55 ✗ write(*,*) 'borne=',borne
56 ✗ stop
57 endif !if ((x(ixt,i,j).gt.-borne).and.
58 enddo !DO i = 1,ip1jmp1
59 enddo !do k=1,llm
60 enddo !do phase=1,nqo
61 enddo !do ixt=1,ntraciso
62
63 !write(*,*) 'check_isotopes 52'
64 ! verifier que l'eau normale est OK
65 ✗ if (use_iso(1)) then
66 ✗ ixt=indnum_fn_num(1)
67 ✗ do phase=1,nqo
68 ✗ iq=iqiso(ixt,phase)
69 ✗ do k=1,llm
70 ✗ DO i = 1,ip1jmp1
71 ✗ if ((abs(q(i,k,phase)-q(i,k,iq)).gt.errmax).and.
72 : (abs((q(i,k,phase)-q(i,k,iq))/
73 : max(max(abs(q(i,k,phase)),abs(q(i,k,iq))),1e-18))
74 : .gt.errmaxrel)) then
75 ✗ write(*,*) 'erreur detectee par iso_verif_egalite:'
76 ✗ write(*,*) err_msg
77 ✗ write(*,*) 'ixt,phase=',ixt,phase
78 ✗ write(*,*) 'q,iq,i,k=',q(i,k,iq),iq,i,k
79 ✗ write(*,*) 'q(i,k,phase)=',q(i,k,phase)
80 ✗ stop
81 endif !if ((abs(q(i,k,phase)-q(i,k,iq)).gt.errmax).and.
82 ! bidouille pour éviter divergence:
83 ✗ q(i,k,iq)= q(i,k,phase)
84 enddo ! DO i = 1,ip1jmp1
85 enddo !do k=1,llm
86 enddo ! do phase=1,nqo
87 endif !if (use_iso(1)) then
88
89 !write(*,*) 'check_isotopes 78'
90 ! verifier que HDO est raisonable
91 ✗ if (use_iso(2)) then
92 ✗ ixt=indnum_fn_num(2)
93 ✗ do phase=1,nqo
94 ✗ iq=iqiso(ixt,phase)
95 ✗ do k=1,llm
96 ✗ DO i = 1,ip1jmp1
97 ✗ if (q(i,k,iq).gt.qmin) then
98 ✗ deltaD=(q(i,k,iq)/q(i,k,phase)/tnat(2)-1)*1000
99 ✗ if ((deltaD.gt.deltaDmax).or.(deltaD.lt.deltaDmin)) then
100 ✗ write(*,*) 'erreur detectee par iso_verif_aberrant:'
101 ✗ write(*,*) err_msg
102 ✗ write(*,*) 'ixt,phase=',ixt,phase
103 ✗ write(*,*) 'q,iq,i,k,=',q(i,k,iq),iq,i,k
104 ✗ write(*,*) 'q=',q(i,k,:)
105 ✗ write(*,*) 'deltaD=',deltaD
106 ✗ stop
107 endif !if ((deltaD.gt.deltaDmax).or.(deltaD.lt.deltaDmin)) then
108 endif !if (q(i,k,iq).gt.qmin) then
109 enddo !DO i = 1,ip1jmp1
110 enddo !do k=1,llm
111 enddo ! do phase=1,nqo
112 endif !if (use_iso(2)) then
113
114 !write(*,*) 'check_isotopes 103'
115 ! verifier que O18 est raisonable
116 ✗ if (use_iso(3)) then
117 ✗ ixt=indnum_fn_num(3)
118 ✗ do phase=1,nqo
119 ✗ iq=iqiso(ixt,phase)
120 ✗ do k=1,llm
121 ✗ DO i = 1,ip1jmp1
122 ✗ if (q(i,k,iq).gt.qmin) then
123 ✗ deltaD=(q(i,k,iq)/q(i,k,phase)/tnat(3)-1)*1000
124 ✗ if ((deltaD.gt.deltaDmax).or.(deltaD.lt.deltaDmin)) then
125 ✗ write(*,*) 'erreur detectee iso_verif_aberrant O18:'
126 ✗ write(*,*) err_msg
127 ✗ write(*,*) 'ixt,phase=',ixt,phase
128 ✗ write(*,*) 'q,iq,i,k,=',q(i,k,phase),iq,i,k
129 ✗ write(*,*) 'xt=',q(i,k,:)
130 ✗ write(*,*) 'deltaO18=',deltaD
131 ✗ stop
132 endif !if ((deltaD.gt.deltaDmax).or.(deltaD.lt.deltaDmin)) then
133 endif !if (q(i,k,iq).gt.qmin) then
134 enddo !DO i = 1,ip1jmp1
135 enddo !do k=1,llm
136 enddo ! do phase=1,nqo
137 endif !if (use_iso(2)) then
138
139
140 !write(*,*) 'check_isotopes 129'
141 ✗ if (ok_isotrac) then
142
143 ✗ if (use_iso(2).and.use_iso(1)) then
144 ✗ do izone=1,ntraceurs_zone
145 ✗ ixt=index_trac(izone,indnum_fn_num(2))
146 ✗ ieau=index_trac(izone,indnum_fn_num(1))
147 ✗ do phase=1,nqo
148 ✗ iq=iqiso(ixt,phase)
149 ✗ iqeau=iqiso(ieau,phase)
150 ✗ do k=1,llm
151 ✗ DO i = 1,ip1jmp1
152 ✗ if (q(i,k,iq).gt.qmin) then
153 ✗ deltaD=(q(i,k,iq)/q(i,k,iqeau)/tnat(2)-1)*1000
154 ✗ if ((deltaD.gt.deltaDmax).or.
155 & (deltaD.lt.deltaDmin)) then
156 ✗ write(*,*) 'erreur dans iso_verif_aberrant trac:'
157 ✗ write(*,*) err_msg
158 ✗ write(*,*) 'izone,phase=',izone,phase
159 ✗ write(*,*) 'ixt,ieau=',ixt,ieau
160 ✗ write(*,*) 'q,iq,i,k,=',q(i,k,iq),iq,i,k
161 ✗ write(*,*) 'deltaD=',deltaD
162 ✗ stop
163 endif !if ((deltaD.gt.deltaDmax).or.
164 endif !if (q(i,k,iq).gt.qmin) then
165 enddo !DO i = 1,ip1jmp1
166 enddo ! do k=1,llm
167 enddo ! do phase=1,nqo
168 enddo !do izone=1,ntraceurs_zone
169 endif !if (use_iso(2).and.use_iso(1)) then
170
171 ✗ do iiso=1,niso
172 ✗ do phase=1,nqo
173 ✗ iq=iqiso(iiso,phase)
174 ✗ do k=1,llm
175 ✗ DO i = 1,ip1jmp1
176 xtractot=0.0
177 ✗ xiiso=q(i,k,iq)
178 ✗ do izone=1,ntraceurs_zone
179 ✗ iq=iqiso(index_trac(izone,iiso),phase)
180 ✗ xtractot=xtractot+ q(i,k,iq)
181 enddo !do izone=1,ntraceurs_zone
182 ✗ if ((abs(xtractot-xiiso).gt.errmax).and.
183 : (abs(xtractot-xiiso)/
184 : max(max(abs(xtractot),abs(xiiso)),1e-18)
185 ✗ : .gt.errmaxrel)) then
186 ✗ write(*,*) 'erreur detectee par iso_verif_traceurs:'
187 ✗ write(*,*) err_msg
188 ✗ write(*,*) 'iiso,phase=',iiso,phase
189 ✗ write(*,*) 'i,k,=',i,k
190 ✗ write(*,*) 'q(i,k,:)=',q(i,k,:)
191 ✗ stop
192 endif !if ((abs(q(i,k,phase)-q(i,k,iq)).gt.errmax).and.
193
194 ! bidouille pour éviter divergence:
195 ✗ if (abs(xtractot).gt.ridicule) then
196 ✗ do izone=1,ntraceurs_zone
197 ✗ ixt=index_trac(izone,iiso)
198 ✗ q(i,k,iq)=q(i,k,iq)/xtractot*xiiso
199 enddo !do izone=1,ntraceurs_zone
200 endif !if ((abs(xtractot).gt.ridicule) then
201 enddo !DO i = 1,ip1jmp1
202 enddo !do k=1,llm
203 enddo !do phase=1,nqo
204 enddo !do iiso=1,niso
205
206 endif !if (ok_isotrac) then
207
208 endif ! if (ok_isotopes)
209 !write(*,*) 'check_isotopes 198'
210
211 ✗ end
212
213