3
4
5
6
7
8
9
10
11
12
13
14
15
22
24
25 implicit none
26
27
28
29 integer :: ic = 0
30 integer :: ifound
31
32 character (len=40) :: string
33
34
35
36
37
38#ifdef BIO_FASHAM
39 ic=ic+1
42 &
'CPP option renamed to '//
uppercase(
'bio_fennel')
43#endif
44
46 ifound=index(trim(
coptions), trim(string))
47 IF (ifound.ne.0) THEN
49 & 'stability problems, WARNING'
50 END IF
51
53 ifound=index(trim(
coptions), trim(string))
54 IF (ifound.ne.0) THEN
56 & 'stability problems, WARNING'
57 END IF
58
60 ifound=index(trim(
coptions), trim(string))
61 IF (ifound.ne.0) THEN
63 & 'stability problems, WARNING'
64 END IF
65
67 ifound=index(trim(
coptions), trim(string))
68 IF (ifound.ne.0) THEN
70 & 'stability problems, WARNING'
71 END IF
72
73#ifdef IS4DVAR
76 & 'deprecated option, use ' // &
78 & ' instead, WARNING'
79#endif
80
81#ifdef IS4DVAR_SENSITIVITY
84 & 'deprecated option, use ' // &
85 &
uppercase(
'i4dvar_ana_sensitivity') // &
86 & ' instead, WARNING'
87#endif
88
89#ifdef W4DPSAS
92 & 'deprecated option, use ' // &
94 & ' instead, WARNING'
95#endif
96
97#ifdef W4DPSAS_SENSITIVITY
100 & 'deprecated option, use ' // &
101 &
uppercase(
'rbl4dvar_ana_sensitivity') // &
102 & ' instead, WARNING'
103#endif
104
105#ifdef W4DPSAS_FCT_SENSITIVITY
106 string=
uppercase(
'w4dpsas_fct_sensitivity')
108 & 'deprecated option, use ' // &
109 &
uppercase(
'rbl4dvar_fct_sensitivity') // &
110 & ' instead, WARNING'
111#endif
112
113#ifdef W4DVAR
116 & 'deprecated option, use ' // &
118 & ' instead, WARNING'
119#endif
120
121#ifdef W4DVAR_SENSITIVITY
124 & 'deprecated option, use ' // &
125 &
uppercase(
'r4dvar_ana_sensitivity') // &
126 & ' instead, WARNING'
127#endif
128
129# ifdef NL_BULK_FLUXES
131 ic=ic+1
133 & 'deprecated option, use ' // &
134 &
uppercase(
'forward_fluxes')//
' and ' // &
136 & ' instead, FATAL ERROR'
137# endif
138
139#if defined TANGENT || defined TL_IOMS || defined ADJOINT
140
141
142
143
144
145
147 ifound=index(trim(
coptions), trim(string))
148 IF (ifound.ne.0) THEN
149 ic=ic+1
151 & 'not coded, FATAL ERROR'
152 END IF
153
155 ifound=index(trim(
coptions), trim(string))
156 IF (ifound.ne.0) THEN
157 ic=ic+1
159 & 'not coded, FATAL ERROR'
160 END IF
161
163 ifound=index(trim(
coptions), trim(string))
164 IF (ifound.ne.0) THEN
165 ic=ic+1
167 & 'not coded, FATAL ERROR'
168 END IF
169
170# ifndef FORWARD_MIXING
171
173 ifound=index(trim(
coptions), trim(string))
174 IF (ifound.ne.0) THEN
175 ic=ic+1
177 & 'not coded, FATAL ERROR'
178 END IF
179# endif
180
182 ifound=index(trim(
coptions), trim(string))
183 IF (ifound.ne.0) THEN
185 & 'not tested, WARNING'
186 END IF
187
189 ic=ic+1
191 & 'not finished, FATAL ERROR'
192 END IF
193
195 ic=ic+1
197 & 'not finished, FATAL ERROR'
198 END IF
199
201 ic=ic+1
203 & 'not finished, FATAL ERROR'
204 END IF
205
207 ic=ic+1
209 & 'not finished, FATAL ERROR'
210 END IF
211
213 ic=ic+1
215 & 'not finished, FATAL ERROR'
216 END IF
217
219 ic=ic+1
221 & 'not finished, FATAL ERROR'
222 END IF
223
225 ic=ic+1
227 & 'not finished, FATAL ERROR'
228 END IF
229
231 ic=ic+1
233 & 'not finished, FATAL ERROR'
234 END IF
235
237 ic=ic+1
239 & 'not finished, FATAL ERROR'
240 END IF
241
243 ic=ic+1
245 & 'not finished, FATAL ERROR'
246 END IF
247
249 ic=ic+1
251 & 'not finished, FATAL ERROR'
252 END IF
253
255 ic=ic+1
257 & 'not finished, FATAL ERROR'
258 END IF
259
260# ifdef SOLVE3D
261
263 ic=ic+1
265 & 'not finished, FATAL ERROR'
266 END IF
267
269 ic=ic+1
271 & 'not finished, FATAL ERROR'
272 END IF
273
275 ic=ic+1
277 & 'not finished, FATAL ERROR'
278 END IF
279
281 ic=ic+1
283 & 'not finished, FATAL ERROR'
284 END IF
285
287 ic=ic+1
289 & 'not finished, FATAL ERROR'
290 END IF
291
293 ic=ic+1
295 & 'not finished, FATAL ERROR'
296 END IF
297
299 ic=ic+1
301 & 'not finished, FATAL ERROR'
302 END IF
303
305 ic=ic+1
307 & 'not finished, FATAL ERROR'
308 END IF
309
311 ic=ic+1
312 IF (
master)
WRITE(
stdout,20)
'ad_LBC(ieast,isTvar(:))', &
313 & 'not finished, FATAL ERROR'
314 END IF
315
317 ic=ic+1
318 IF (
master)
WRITE(
stdout,20)
'ad_LBC(iwest,isTvar(:))', &
319 & 'not finished, FATAL ERROR'
320 END IF
321
323 ic=ic+1
324 IF (
master)
WRITE(
stdout,20)
'ad_LBC(isouth,isTvar(:))', &
325 & 'not finished, FATAL ERROR'
326 END IF
327
329 ic=ic+1
330 IF (
master)
WRITE(
stdout,20)
'ad_LBC(inorth,isTvar(:))', &
331 & 'not finished, FATAL ERROR'
332 END IF
333# endif
334
336 ifound=index(trim(
coptions), trim(string))
337 IF (ifound.ne.0) THEN
338 ic=ic+1
340 & 'not coded, FATAL ERROR'
341 END IF
342
344 ifound=index(trim(
coptions), trim(string))
345 IF (ifound.ne.0) THEN
346 ic=ic+1
348 & 'experimental, AVOID USAGE'
349 END IF
350
351# ifndef FORWARD_MIXING
352
354 ifound=index(trim(
coptions), trim(string))
355 IF (ifound.ne.0) THEN
356
358 & 'not differentiable, WARNING'
359 END IF
360# endif
361
363 ifound=index(trim(
coptions), trim(string))
364 IF (ifound.ne.0) THEN
365 ic=ic+1
367 & 'not coded, FATAL ERROR'
368 END IF
369
371 ifound=index(trim(
coptions), trim(string))
372 IF (ifound.ne.0) THEN
373 ic=ic+1
375 & 'not coded, FATAL ERROR'
376 END IF
377
378# ifndef FORWARD_MIXING
379
381 ifound=index(trim(
coptions), trim(string))
382 IF (ifound.ne.0) THEN
383
385 & 'not differentiable, WARNING'
386 END IF
387# endif
388
390 ifound=index(trim(
coptions), trim(string))
391 IF (ifound.ne.0) THEN
392 ic=ic+1
394 & 'not coded, FATAL ERROR'
395 END IF
396
397# ifndef FORWARD_MIXING
398
400 ifound=index(trim(
coptions), trim(string))
401 IF (ifound.ne.0) THEN
402
404 & 'not differentiable, WARNING'
405 END IF
406# endif
407
409 ifound=index(trim(
coptions), trim(string))
410 IF (ifound.ne.0) THEN
411 ic=ic+1
413 & 'not coded, FATAL ERROR'
414 END IF
415
417 ifound=index(trim(
coptions), trim(string))
418 IF (ifound.ne.0) THEN
419 ic=ic+1
421 & 'not coded, FATAL ERROR'
422 END IF
423
425 ifound=index(trim(
coptions), trim(string))
426 IF (ifound.ne.0) THEN
427 ic=ic+1
429 & 'not coded, FATAL ERROR'
430 END IF
431
433 ifound=index(trim(
coptions), trim(string))
434 IF (ifound.ne.0) THEN
435
437 & 'not working, FATAL ERROR'
438 END IF
439
441 ifound=index(trim(
coptions), trim(string))
442 IF (ifound.ne.0) THEN
443 ic=ic+1
445 & 'not coded, FATAL ERROR'
446 END IF
447
449 ifound=index(trim(
coptions), trim(string))
450 IF (ifound.ne.0) THEN
451 ic=ic+1
453 & 'not coded, FATAL ERROR'
454 END IF
455
457 ifound=index(trim(
coptions), trim(string))
458 IF (ifound.ne.0) THEN
459 ic=ic+1
461 & 'not coded, FATAL ERROR'
462 END IF
463
465 ifound=index(trim(
coptions), trim(string))
466 IF (ifound.ne.0) THEN
467 ic=ic+1
469 & 'not allowed, FATAL ERROR'
470 END IF
471
473 ifound=index(trim(
coptions), trim(string))
474 IF (ifound.ne.0) THEN
475 ic=ic+1
477 & 'not coded, FATAL ERROR'
478 END IF
479
481 ifound=index(trim(
coptions), trim(string))
482 IF (ifound.ne.0) THEN
483 ic=ic+1
485 & 'not tested, FATAL ERROR'
486 END IF
487
489 ifound=index(trim(
coptions), trim(string))
490 IF (ifound.ne.0) THEN
491 ic=ic+1
493 & 'not coded, FATAL ERROR'
494 END IF
495
497 ifound=index(trim(
coptions), trim(string))
498 IF (ifound.ne.0) THEN
499 ic=ic+1
501 & 'not coded, FATAL ERROR'
502 END IF
503
505 ifound=index(trim(
coptions), trim(string))
506 IF (ifound.ne.0) THEN
507 ic=ic+1
509 & 'not coded, FATAL ERROR'
510 END IF
511
513 ifound=index(trim(
coptions), trim(string))
514 IF (ifound.ne.0) THEN
515 ic=ic+1
517 & 'not coded, FATAL ERROR'
518 END IF
519
521 ifound=index(trim(
coptions), trim(string))
522 IF (ifound.ne.0) THEN
523 ic=ic+1
525 & 'not allowed, FATAL ERROR'
526 END IF
527
528# if defined TANGENT || defined TL_IOMS
532 ifound=index(trim(
coptions), trim(string))
533 IF (ifound.ne.0) THEN
534 ic=ic+1
536 & 'not coded, FATAL ERROR'
537 END IF
538 END IF
539
543 ifound=index(trim(
coptions), trim(string))
544 IF (ifound.ne.0) THEN
545 ic=ic+1
547 & 'not coded, FATAL ERROR'
548 END IF
549 END IF
550
554 ifound=index(trim(
coptions), trim(string))
555 IF (ifound.ne.0) THEN
556 ic=ic+1
558 & 'not coded, FATAL ERROR'
559 END IF
560 END IF
561# endif
562
564 ifound=index(trim(
coptions), trim(string))
565 IF (ifound.ne.0) THEN
566 ic=ic+1
568 & 'not coded, FATAL ERROR'
569 END IF
570
572 ifound=index(trim(
coptions), trim(string))
573 IF (ifound.ne.0) THEN
574 ic=ic+1
576 & 'not coded, FATAL ERROR'
577 END IF
578
580 ifound=index(trim(
coptions), trim(string))
581 IF (ifound.ne.0) THEN
582 ic=ic+1
584 & 'not coded, FATAL ERROR'
585 END IF
586
588 ifound=index(trim(
coptions), trim(string))
589 IF (ifound.ne.0) THEN
590 ic=ic+1
592 & 'not coded, FATAL ERROR'
593 END IF
594#endif
595
596
597
598
599
600 IF (ic.gt.0) THEN
602 END IF
603
604 10 FORMAT (/,' CHECKADJ - use caution when activating: ', a,/,12x, &
605 & 'REASON: ',a,'.')
606#if defined TANGENT || defined TL_IOMS || defined ADJOINT
607 20 FORMAT (/,' CHECKADJ - unsupported option in adjoint-based', &
608 & ' algorithms: ',a,/,12x,'REASON: ',a,'.')
609#endif
610
611 RETURN
integer, dimension(:), allocatable istvar
type(t_lbc), dimension(:,:,:), allocatable ad_lbc
type(t_adv), dimension(:,:), allocatable tl_hadvection
type(t_adv), dimension(:,:), allocatable tl_vadvection
integer, parameter isouth
integer, parameter inorth
character(len=2048) coptions
character(len(sinp)) function, public uppercase(sinp)