FV3 Bundle
tools_missing.F90
Go to the documentation of this file.
1 !----------------------------------------------------------------------
2 ! Module: tools_missing
3 ! Purpose: deal with missing values
4 ! Author: Benjamin Menetrier
5 ! Licensing: this code is distributed under the CeCILL-C license
6 ! Copyright © 2015-... UCAR, CERFACS, METEO-FRANCE and IRIT
7 !----------------------------------------------------------------------
9 
10 use tools_const, only: msvali,msvalr
11 use tools_kinds,only: kind_real
12 
13 implicit none
14 
15 interface msi
16  module procedure msi_0d
17  module procedure msi_1d
18  module procedure msi_2d
19  module procedure msi_3d
20  module procedure msi_4d
21  module procedure msi_5d
22  module procedure msi_6d
23 end interface
24 interface msr
25  module procedure msr_0d
26  module procedure msr_1d
27  module procedure msr_2d
28  module procedure msr_3d
29  module procedure msr_4d
30  module procedure msr_5d
31  module procedure msr_6d
32 end interface
33 interface isnotmsi
34  module procedure isnotmsi_0d
35  module procedure isnotmsi_1d
36  module procedure isnotmsi_2d
37  module procedure isnotmsi_3d
38  module procedure isnotmsi_4d
39  module procedure isnotmsi_5d
40 end interface
41 interface ismsi
42  module procedure ismsi_0d
43  module procedure ismsi_1d
44  module procedure ismsi_2d
45  module procedure ismsi_3d
46  module procedure ismsi_4d
47  module procedure ismsi_5d
48 end interface
49 interface isnotmsr
50  module procedure isnotmsr_0d
51  module procedure isnotmsr_1d
52  module procedure isnotmsr_2d
53  module procedure isnotmsr_3d
54  module procedure isnotmsr_4d
55  module procedure isnotmsr_5d
56 end interface
57 interface ismsr
58  module procedure ismsr_0d
59  module procedure ismsr_1d
60  module procedure ismsr_2d
61  module procedure ismsr_3d
62  module procedure ismsr_4d
63  module procedure ismsr_5d
64 end interface
65 interface isanynotmsi
66  module procedure isanynotmsi_1d
67  module procedure isanynotmsi_2d
68  module procedure isanynotmsi_3d
69  module procedure isanynotmsi_4d
70  module procedure isanynotmsi_5d
71 end interface
72 interface isanymsi
73  module procedure isanymsi_1d
74  module procedure isanymsi_2d
75  module procedure isanymsi_3d
76  module procedure isanymsi_4d
77  module procedure isanymsi_5d
78 end interface
79 interface isanynotmsr
80  module procedure isanynotmsr_1d
81  module procedure isanynotmsr_2d
82  module procedure isanynotmsr_3d
83  module procedure isanynotmsr_4d
84  module procedure isanynotmsr_5d
85 end interface
86 interface isanymsr
87  module procedure isanymsr_1d
88  module procedure isanymsr_2d
89  module procedure isanymsr_3d
90  module procedure isanymsr_4d
91  module procedure isanymsr_5d
92 end interface
93 interface isallnotmsi
94  module procedure isallnotmsi_1d
95  module procedure isallnotmsi_2d
96  module procedure isallnotmsi_3d
97  module procedure isallnotmsi_4d
98  module procedure isallnotmsi_5d
99 end interface
100 interface isallmsi
101  module procedure isallmsi_1d
102  module procedure isallmsi_2d
103  module procedure isallmsi_3d
104  module procedure isallmsi_4d
105  module procedure isallmsi_5d
106 end interface
107 interface isallnotmsr
108  module procedure isallnotmsr_1d
109  module procedure isallnotmsr_2d
110  module procedure isallnotmsr_3d
111  module procedure isallnotmsr_4d
112  module procedure isallnotmsr_5d
113 end interface
114 interface isallmsr
115  module procedure isallmsr_1d
116  module procedure isallmsr_2d
117  module procedure isallmsr_3d
118  module procedure isallmsr_4d
119  module procedure isallmsr_5d
120 end interface
121 
122 private
124 
125 contains
126 
127 !----------------------------------------------------------------------
128 ! Subroutine: msi_0d
129 ! Purpose: set integer to missing value
130 !----------------------------------------------------------------------
131 subroutine msi_0d(i)
133 implicit none
134 
135 ! Passed variables
136 integer,intent(out),optional :: i ! Integer
137 
138 i = msvali
139 
140 end subroutine msi_0d
141 
142 !----------------------------------------------------------------------
143 ! Subroutine: msi_1d
144 ! Purpose: set integer to missing value
145 !----------------------------------------------------------------------
146 subroutine msi_1d(i)
148 implicit none
149 
150 ! Passed variables
151 integer,intent(out) :: i(:) ! Integer
152 
153 i = msvali
154 
155 end subroutine msi_1d
156 
157 !----------------------------------------------------------------------
158 ! Subroutine: msi_2d
159 ! Purpose: set integer to missing value
160 !----------------------------------------------------------------------
161 subroutine msi_2d(i)
163 implicit none
164 
165 ! Passed variables
166 integer,intent(out) :: i(:,:) ! Integer
167 
168 i = msvali
169 
170 end subroutine msi_2d
171 
172 !----------------------------------------------------------------------
173 ! Subroutine: msi_3d
174 ! Purpose: set integer to missing value
175 !----------------------------------------------------------------------
176 subroutine msi_3d(i)
178 implicit none
179 
180 ! Passed variables
181 integer,intent(out) :: i(:,:,:) ! Integer
182 
183 i = msvali
184 
185 end subroutine msi_3d
186 
187 !----------------------------------------------------------------------
188 ! Subroutine: msi_4d
189 ! Purpose: set integer to missing value
190 !----------------------------------------------------------------------
191 subroutine msi_4d(i)
193 implicit none
194 
195 ! Passed variables
196 integer,intent(out) :: i(:,:,:,:) ! Integer
197 
198 i = msvali
199 
200 end subroutine msi_4d
201 
202 !----------------------------------------------------------------------
203 ! Subroutine: msi_5d
204 ! Purpose: set integer to missing value
205 !----------------------------------------------------------------------
206 subroutine msi_5d(i)
208 implicit none
209 
210 ! Passed variables
211 integer,intent(out) :: i(:,:,:,:,:) ! Integer
212 
213 i = msvali
214 
215 end subroutine msi_5d
216 
217 !----------------------------------------------------------------------
218 ! Subroutine: msi_6d
219 ! Purpose: set integer to missing value
220 !----------------------------------------------------------------------
221 subroutine msi_6d(i)
223 implicit none
224 
225 ! Passed variables
226 integer,intent(out) :: i(:,:,:,:,:,:) ! Integer
227 
228 i = msvali
229 
230 end subroutine msi_6d
231 
232 !----------------------------------------------------------------------
233 ! Subroutine: msr_0d
234 ! Purpose: set real number to missing value
235 !----------------------------------------------------------------------
236 subroutine msr_0d(r)
238 implicit none
239 
240 ! Passed variables
241 real(kind_real),intent(out) :: r ! Real number
242 
243 r = msvalr
244 
245 end subroutine msr_0d
246 
247 !----------------------------------------------------------------------
248 ! Subroutine: msr_1d
249 ! Purpose: set real number to missing value
250 !----------------------------------------------------------------------
251 subroutine msr_1d(r)
253 implicit none
254 
255 ! Passed variables
256 real(kind_real),intent(out) :: r(:) ! Real number
257 
258 r = msvalr
259 
260 end subroutine msr_1d
261 
262 !----------------------------------------------------------------------
263 ! Subroutine: msr_2d
264 ! Purpose: set real number to missing value
265 !----------------------------------------------------------------------
266 subroutine msr_2d(r)
268 implicit none
269 
270 ! Passed variables
271 real(kind_real),intent(out) :: r(:,:) ! Real number
272 
273 r = msvalr
274 
275 end subroutine msr_2d
276 
277 !----------------------------------------------------------------------
278 ! Subroutine: msr_3d
279 ! Purpose: set real number to missing value
280 !----------------------------------------------------------------------
281 subroutine msr_3d(r)
283 implicit none
284 
285 ! Passed variables
286 real(kind_real),intent(out) :: r(:,:,:) ! Real number
287 
288 r = msvalr
289 
290 end subroutine msr_3d
291 
292 !----------------------------------------------------------------------
293 ! Subroutine: msr_4d
294 ! Purpose: set real number to missing value
295 !----------------------------------------------------------------------
296 subroutine msr_4d(r)
298 implicit none
299 
300 ! Passed variables
301 real(kind_real),intent(out) :: r(:,:,:,:) ! Real number
302 
303 r = msvalr
304 
305 end subroutine msr_4d
306 
307 !----------------------------------------------------------------------
308 ! Subroutine: msr_5d
309 ! Purpose: set real number to missing value
310 !----------------------------------------------------------------------
311 subroutine msr_5d(r)
313 implicit none
314 
315 ! Passed variables
316 real(kind_real),intent(out) :: r(:,:,:,:,:) ! Real number
317 
318 r = msvalr
319 
320 end subroutine msr_5d
321 
322 !----------------------------------------------------------------------
323 ! Subroutine: msr_6d
324 ! Purpose: set real number to missing value
325 !----------------------------------------------------------------------
326 subroutine msr_6d(r)
328 implicit none
329 
330 ! Passed variables
331 real(kind_real),intent(out) :: r(:,:,:,:,:,:) ! Real number
332 
333 r = msvalr
334 
335 end subroutine msr_6d
336 
337 !----------------------------------------------------------------------
338 ! Function: isnotmsi_0d
339 ! Purpose: check if an integer is not set to missing value
340 !----------------------------------------------------------------------
341 function isnotmsi_0d(i)
343 implicit none
344 
345 ! Passed variables
346 integer,intent(in) :: i ! Integer
347 
348 ! Returned value
349 logical :: isnotmsi_0d
350 
351 isnotmsi_0d = abs(i-msvali)>0
352 
353 end function isnotmsi_0d
354 
355 !----------------------------------------------------------------------
356 ! Function: isnotmsi_1d
357 ! Purpose: check if an integer is not set to missing value
358 !----------------------------------------------------------------------
359 function isnotmsi_1d(i)
361 implicit none
362 
363 ! Passed variables
364 integer,intent(in) :: i(:) ! Integer
365 
366 ! Returned value
367 logical :: isnotmsi_1d(max(size(i),1))
368 
369 if (size(i)>0) then
370  isnotmsi_1d = abs(i-msvali)>0
371 else
372  isnotmsi_1d = .false.
373 end if
374 
375 end function isnotmsi_1d
376 
377 !----------------------------------------------------------------------
378 ! Function: isnotmsi_2d
379 ! Purpose: check if an integer is not set to missing value
380 !----------------------------------------------------------------------
381 function isnotmsi_2d(i)
383 implicit none
384 
385 ! Passed variables
386 integer,intent(in) :: i(:,:) ! Integer
387 
388 ! Returned value
389 logical :: isnotmsi_2d(max(size(i,1),1),max(size(i,2),1))
390 
391 if (size(i)>0) then
392  isnotmsi_2d = abs(i-msvali)>0
393 else
394  isnotmsi_2d = .false.
395 end if
396 
397 end function isnotmsi_2d
398 
399 !----------------------------------------------------------------------
400 ! Function: isnotmsi_3d
401 ! Purpose: check if an integer is not set to missing value
402 !----------------------------------------------------------------------
403 function isnotmsi_3d(i)
405 implicit none
406 
407 ! Passed variables
408 integer,intent(in) :: i(:,:,:) ! Integer
409 
410 ! Returned value
411 logical :: isnotmsi_3d(max(size(i,1),1),max(size(i,2),1),max(size(i,3),1))
412 
413 if (size(i)>0) then
414  isnotmsi_3d = abs(i-msvali)>0
415 else
416  isnotmsi_3d = .false.
417 end if
418 
419 end function isnotmsi_3d
420 
421 !----------------------------------------------------------------------
422 ! Function: isnotmsi_4d
423 ! Purpose: check if an integer is not set to missing value
424 !----------------------------------------------------------------------
425 function isnotmsi_4d(i)
427 implicit none
428 
429 ! Passed variables
430 integer,intent(in) :: i(:,:,:,:) ! Integer
431 
432 ! Returned value
433 logical :: isnotmsi_4d(max(size(i,1),1),max(size(i,2),1),max(size(i,3),1),max(size(i,4),1))
434 
435 if (size(i)>0) then
436  isnotmsi_4d = abs(i-msvali)>0
437 else
438  isnotmsi_4d = .false.
439 end if
440 
441 end function isnotmsi_4d
442 
443 !----------------------------------------------------------------------
444 ! Function: isnotmsi_5d
445 ! Purpose: check if an integer is not set to missing value
446 !----------------------------------------------------------------------
447 function isnotmsi_5d(i)
449 implicit none
450 
451 ! Passed variables
452 integer,intent(in) :: i(:,:,:,:,:) ! Integer
453 
454 ! Returned value
455 logical :: isnotmsi_5d(max(size(i,1),1),max(size(i,2),1),max(size(i,3),1),max(size(i,4),1),max(size(i,5),1))
456 
457 if (size(i)>0) then
458  isnotmsi_5d = abs(i-msvali)>0
459 else
460  isnotmsi_5d = .false.
461 end if
462 
463 end function isnotmsi_5d
464 
465 !----------------------------------------------------------------------
466 ! Function: ismsi_0d
467 ! Purpose: check if an integer is set to missing value
468 !----------------------------------------------------------------------
469 function ismsi_0d(i)
471 implicit none
472 
473 ! Passed variables
474 integer,intent(in) :: i ! Integer
475 
476 ! Returned value
477 logical :: ismsi_0d
478 
479 ismsi_0d = .not.isnotmsi(i)
480 
481 end function ismsi_0d
482 
483 !----------------------------------------------------------------------
484 ! Function: ismsi_1d
485 ! Purpose: check if an integer is set to missing value
486 !----------------------------------------------------------------------
487 function ismsi_1d(i)
489 implicit none
490 
491 ! Passed variables
492 integer,intent(in) :: i(:) ! Integer
493 
494 ! Returned value
495 logical :: ismsi_1d(max(size(i),1))
496 
497 ismsi_1d = .not.isnotmsi(i)
498 
499 end function ismsi_1d
500 
501 !----------------------------------------------------------------------
502 ! Function: ismsi_2d
503 ! Purpose: check if an integer is set to missing value
504 !----------------------------------------------------------------------
505 function ismsi_2d(i)
507 implicit none
508 
509 ! Passed variables
510 integer,intent(in) :: i(:,:) ! Integer
511 
512 ! Returned value
513 logical :: ismsi_2d(max(size(i,1),1),max(size(i,2),1))
514 
515 ismsi_2d = .not.isnotmsi(i)
516 
517 end function ismsi_2d
518 
519 !----------------------------------------------------------------------
520 ! Function: ismsi_3d
521 ! Purpose: check if an integer is set to missing value
522 !----------------------------------------------------------------------
523 function ismsi_3d(i)
525 implicit none
526 
527 ! Passed variables
528 integer,intent(in) :: i(:,:,:) ! Integer
529 
530 ! Returned value
531 logical :: ismsi_3d(max(size(i,1),1),max(size(i,2),1),max(size(i,3),1))
532 
533 ismsi_3d = .not.isnotmsi(i)
534 
535 end function ismsi_3d
536 
537 !----------------------------------------------------------------------
538 ! Function: ismsi_4d
539 ! Purpose: check if an integer is set to missing value
540 !----------------------------------------------------------------------
541 function ismsi_4d(i)
543 implicit none
544 
545 ! Passed variables
546 integer,intent(in) :: i(:,:,:,:) ! Integer
547 
548 ! Returned value
549 logical :: ismsi_4d(max(size(i,1),1),max(size(i,2),1),max(size(i,3),1),max(size(i,4),1))
550 
551 ismsi_4d = .not.isnotmsi(i)
552 
553 end function ismsi_4d
554 
555 !----------------------------------------------------------------------
556 ! Function: ismsi_5d
557 ! Purpose: check if an integer is set to missing value
558 !----------------------------------------------------------------------
559 function ismsi_5d(i)
561 implicit none
562 
563 ! Passed variables
564 integer,intent(in) :: i(:,:,:,:,:) ! Integer
565 
566 ! Returned value
567 logical :: ismsi_5d(max(size(i,1),1),max(size(i,2),1),max(size(i,3),1),max(size(i,4),1),max(size(i,5),1))
568 
569 ismsi_5d = .not.isnotmsi(i)
570 
571 end function ismsi_5d
572 
573 !----------------------------------------------------------------------
574 ! Function: isnotmsr_0d
575 ! Purpose: check if an real number is not set to missing value
576 !----------------------------------------------------------------------
577 function isnotmsr_0d(r)
579 implicit none
580 
581 ! Passed variables
582 real(kind_real),intent(in) :: r ! Real number
583 
584 ! Returned value
585 logical :: isnotmsr_0d
586 
587 isnotmsr_0d = abs(r-msvalr)>0.0
588 
589 end function isnotmsr_0d
590 
591 !----------------------------------------------------------------------
592 ! Function: isnotmsr_1d
593 ! Purpose: check if an real number is not set to missing value
594 !----------------------------------------------------------------------
595 function isnotmsr_1d(r)
597 implicit none
598 
599 ! Passed variables
600 real(kind_real),intent(in) :: r(:) ! Real number
601 
602 ! Returned value
603 logical :: isnotmsr_1d(size(r))
604 
605 if (size(r)>0) then
606  isnotmsr_1d = abs(r-msvalr)>0.0
607 else
608  isnotmsr_1d = .false.
609 end if
610 
611 end function isnotmsr_1d
612 
613 !----------------------------------------------------------------------
614 ! Function: isnotmsr_2d
615 ! Purpose: check if an real number is not set to missing value
616 !----------------------------------------------------------------------
617 function isnotmsr_2d(r)
619 implicit none
620 
621 ! Passed variables
622 real(kind_real),intent(in) :: r(:,:) ! Real number
623 
624 ! Returned value
625 logical :: isnotmsr_2d(max(size(r,1),1),max(size(r,2),1))
626 
627 if (size(r)>0) then
628  isnotmsr_2d = abs(r-msvalr)>0.0
629 else
630  isnotmsr_2d = .false.
631 end if
632 
633 end function isnotmsr_2d
634 
635 !----------------------------------------------------------------------
636 ! Function: isnotmsr_3d
637 ! Purpose: check if an real number is not set to missing value
638 !----------------------------------------------------------------------
639 function isnotmsr_3d(r)
641 implicit none
642 
643 ! Passed variables
644 real(kind_real),intent(in) :: r(:,:,:) ! Real number
645 
646 ! Returned value
647 logical :: isnotmsr_3d(max(size(r,1),1),max(size(r,2),1),max(size(r,3),1))
648 
649 if (size(r)>0) then
650  isnotmsr_3d = abs(r-msvalr)>0.0
651 else
652  isnotmsr_3d = .false.
653 end if
654 
655 end function isnotmsr_3d
656 
657 !----------------------------------------------------------------------
658 ! Function: isnotmsr_4d
659 ! Purpose: check if an real number is not set to missing value
660 !----------------------------------------------------------------------
661 function isnotmsr_4d(r)
663 implicit none
664 
665 ! Passed variables
666 real(kind_real),intent(in) :: r(:,:,:,:) ! Real number
667 
668 ! Returned value
669 logical :: isnotmsr_4d(max(size(r,1),1),max(size(r,2),1),max(size(r,3),1),max(size(r,4),1))
670 
671 if (size(r)>0) then
672  isnotmsr_4d = abs(r-msvalr)>0.0
673 else
674  isnotmsr_4d = .false.
675 end if
676 
677 end function isnotmsr_4d
678 
679 !----------------------------------------------------------------------
680 ! Function: isnotmsr_5d
681 ! Purpose: check if an real number is not set to missing value
682 !----------------------------------------------------------------------
683 function isnotmsr_5d(r)
685 implicit none
686 
687 ! Passed variables
688 real(kind_real),intent(in) :: r(:,:,:,:,:) ! Real number
689 
690 ! Returned value
691 logical :: isnotmsr_5d(max(size(r,1),1),max(size(r,2),1),max(size(r,3),1),max(size(r,4),1),max(size(r,5),1))
692 
693 if (size(r)>0) then
694  isnotmsr_5d = abs(r-msvalr)>0.0
695 else
696  isnotmsr_5d = .false.
697 end if
698 
699 end function isnotmsr_5d
700 
701 !----------------------------------------------------------------------
702 ! Function: ismsr_0d
703 ! Purpose: check if an real number is set to missing value
704 !----------------------------------------------------------------------
705 function ismsr_0d(r)
707 implicit none
708 
709 ! Passed variables
710 real(kind_real),intent(in) :: r ! Real number
711 
712 ! Returned value
713 logical :: ismsr_0d
714 
715 ismsr_0d = .not.isnotmsr(r)
716 
717 end function ismsr_0d
718 
719 !----------------------------------------------------------------------
720 ! Function: ismsr_1d
721 ! Purpose: check if an real number is set to missing value
722 !----------------------------------------------------------------------
723 function ismsr_1d(r)
725 implicit none
726 
727 ! Passed variables
728 real(kind_real),intent(in) :: r(:) ! Real number
729 
730 ! Returned value
731 logical :: ismsr_1d(size(r))
732 
733 ismsr_1d = .not.isnotmsr(r)
734 
735 end function ismsr_1d
736 
737 !----------------------------------------------------------------------
738 ! Function: ismsr_2d
739 ! Purpose: check if an real number is set to missing value
740 !----------------------------------------------------------------------
741 function ismsr_2d(r)
743 implicit none
744 
745 ! Passed variables
746 real(kind_real),intent(in) :: r(:,:) ! Real number
747 
748 ! Returned value
749 logical :: ismsr_2d(max(size(r,1),1),max(size(r,2),1))
750 
751 ismsr_2d = .not.isnotmsr(r)
752 
753 end function ismsr_2d
754 
755 !----------------------------------------------------------------------
756 ! Function: ismsr_3d
757 ! Purpose: check if an real number is set to missing value
758 !----------------------------------------------------------------------
759 function ismsr_3d(r)
761 implicit none
762 
763 ! Passed variables
764 real(kind_real),intent(in) :: r(:,:,:) ! Real number
765 
766 ! Returned value
767 logical :: ismsr_3d(max(size(r,1),1),max(size(r,2),1),max(size(r,3),1))
768 
769 ismsr_3d = .not.isnotmsr(r)
770 
771 end function ismsr_3d
772 
773 !----------------------------------------------------------------------
774 ! Function: ismsr_4d
775 ! Purpose: check if an real number is set to missing value
776 !----------------------------------------------------------------------
777 function ismsr_4d(r)
779 implicit none
780 
781 ! Passed variables
782 real(kind_real),intent(in) :: r(:,:,:,:) ! Real number
783 
784 ! Returned value
785 logical :: ismsr_4d(max(size(r,1),1),max(size(r,2),1),max(size(r,3),1),max(size(r,4),1))
786 
787 ismsr_4d = .not.isnotmsr(r)
788 
789 end function ismsr_4d
790 
791 !----------------------------------------------------------------------
792 ! Function: ismsr_5d
793 ! Purpose: check if an real number is set to missing value
794 !----------------------------------------------------------------------
795 function ismsr_5d(r)
797 implicit none
798 
799 ! Passed variables
800 real(kind_real),intent(in) :: r(:,:,:,:,:) ! Real number
801 
802 ! Returned value
803 logical :: ismsr_5d(max(size(r,1),1),max(size(r,2),1),max(size(r,3),1),max(size(r,4),1),max(size(r,5),1))
804 
805 ismsr_5d = .not.isnotmsr(r)
806 
807 end function ismsr_5d
808 
809 !----------------------------------------------------------------------
810 ! Function: isanynotmsi_1d
811 ! Purpose: check if an integer is not set to missing value
812 !----------------------------------------------------------------------
813 logical function isanynotmsi_1d(i)
815 implicit none
816 
817 ! Passed variables
818 integer,intent(in) :: i(:) ! Integer
819 
820 isanynotmsi_1d = any(isnotmsi(i))
821 
822 end function isanynotmsi_1d
823 
824 !----------------------------------------------------------------------
825 ! Function: isanynotmsi_2d
826 ! Purpose: check if an integer is not set to missing value
827 !----------------------------------------------------------------------
828 logical function isanynotmsi_2d(i)
830 implicit none
831 
832 ! Passed variables
833 integer,intent(in) :: i(:,:) ! Integer
834 
835 isanynotmsi_2d = any(isnotmsi(i))
836 
837 end function isanynotmsi_2d
838 
839 !----------------------------------------------------------------------
840 ! Function: isanynotmsi_3d
841 ! Purpose: check if an integer is not set to missing value
842 !----------------------------------------------------------------------
843 logical function isanynotmsi_3d(i)
845 implicit none
846 
847 ! Passed variables
848 integer,intent(in) :: i(:,:,:) ! Integer
849 
850 isanynotmsi_3d = any(isnotmsi(i))
851 
852 end function isanynotmsi_3d
853 
854 !----------------------------------------------------------------------
855 ! Function: isanynotmsi_4d
856 ! Purpose: check if an integer is not set to missing value
857 !----------------------------------------------------------------------
858 logical function isanynotmsi_4d(i)
860 implicit none
861 
862 ! Passed variables
863 integer,intent(in) :: i(:,:,:,:) ! Integer
864 
865 isanynotmsi_4d = any(isnotmsi(i))
866 
867 end function isanynotmsi_4d
868 
869 !----------------------------------------------------------------------
870 ! Function: isanynotmsi_5d
871 ! Purpose: check if an integer is not set to missing value
872 !----------------------------------------------------------------------
873 logical function isanynotmsi_5d(i)
875 implicit none
876 
877 ! Passed variables
878 integer,intent(in) :: i(:,:,:,:,:) ! Integer
879 
880 isanynotmsi_5d = any(isnotmsi(i))
881 
882 end function isanynotmsi_5d
883 
884 !----------------------------------------------------------------------
885 ! Function: isanymsi_1d
886 ! Purpose: check if an integer is set to missing value
887 !----------------------------------------------------------------------
888 logical function isanymsi_1d(i)
890 implicit none
891 
892 ! Passed variables
893 integer,intent(in) :: i(:) ! Integer
894 
895 isanymsi_1d = .not.isallnotmsi(i)
896 
897 end function isanymsi_1d
898 
899 !----------------------------------------------------------------------
900 ! Function: isanymsi_2d
901 ! Purpose: check if an integer is set to missing value
902 !----------------------------------------------------------------------
903 logical function isanymsi_2d(i)
905 implicit none
906 
907 ! Passed variables
908 integer,intent(in) :: i(:,:) ! Integer
909 
910 isanymsi_2d = .not.isallnotmsi(i)
911 
912 end function isanymsi_2d
913 
914 !----------------------------------------------------------------------
915 ! Function: isanymsi_3d
916 ! Purpose: check if an integer is set to missing value
917 !----------------------------------------------------------------------
918 logical function isanymsi_3d(i)
920 implicit none
921 
922 ! Passed variables
923 integer,intent(in) :: i(:,:,:) ! Integer
924 
925 isanymsi_3d = .not.isallnotmsi(i)
926 
927 end function isanymsi_3d
928 
929 !----------------------------------------------------------------------
930 ! Function: isanymsi_4d
931 ! Purpose: check if an integer is set to missing value
932 !----------------------------------------------------------------------
933 logical function isanymsi_4d(i)
935 implicit none
936 
937 ! Passed variables
938 integer,intent(in) :: i(:,:,:,:) ! Integer
939 
940 isanymsi_4d = .not.isallnotmsi(i)
941 
942 end function isanymsi_4d
943 
944 !----------------------------------------------------------------------
945 ! Function: isanymsi_5d
946 ! Purpose: check if an integer is set to missing value
947 !----------------------------------------------------------------------
948 logical function isanymsi_5d(i)
950 implicit none
951 
952 ! Passed variables
953 integer,intent(in) :: i(:,:,:,:,:) ! Integer
954 
955 isanymsi_5d = .not.isallnotmsi(i)
956 
957 end function isanymsi_5d
958 
959 !----------------------------------------------------------------------
960 ! Function: isanynotmsr_1d
961 ! Purpose: check if a real is not set to missing value
962 !----------------------------------------------------------------------
963 logical function isanynotmsr_1d(r)
965 implicit none
966 
967 ! Passed variables
968 real(kind_real),intent(in) :: r(:) ! Real
969 
970 isanynotmsr_1d = any(isnotmsr(r))
971 
972 end function isanynotmsr_1d
973 
974 !----------------------------------------------------------------------
975 ! Function: isanynotmsr_2d
976 ! Purpose: check if a real is not set to missing value
977 !----------------------------------------------------------------------
978 logical function isanynotmsr_2d(r)
980 implicit none
981 
982 ! Passed variables
983 real(kind_real),intent(in) :: r(:,:) ! Real
984 
985 isanynotmsr_2d = any(isnotmsr(r))
986 
987 end function isanynotmsr_2d
988 
989 !----------------------------------------------------------------------
990 ! Function: isanynotmsr_3d
991 ! Purpose: check if a real is not set to missing value
992 !----------------------------------------------------------------------
993 logical function isanynotmsr_3d(r)
995 implicit none
996 
997 ! Passed variables
998 real(kind_real),intent(in) :: r(:,:,:) ! Real
999 
1000 isanynotmsr_3d = any(isnotmsr(r))
1001 
1002 end function isanynotmsr_3d
1003 
1004 !----------------------------------------------------------------------
1005 ! Function: isanynotmsr_4d
1006 ! Purpose: check if a real is not set to missing value
1007 !----------------------------------------------------------------------
1008 logical function isanynotmsr_4d(r)
1010 implicit none
1011 
1012 ! Passed variables
1013 real(kind_real),intent(in) :: r(:,:,:,:) ! Real
1014 
1015 isanynotmsr_4d = any(isnotmsr(r))
1016 
1017 end function isanynotmsr_4d
1018 
1019 !----------------------------------------------------------------------
1020 ! Function: isanynotmsr_5d
1021 ! Purpose: check if a real is not set to missing value
1022 !----------------------------------------------------------------------
1023 logical function isanynotmsr_5d(r)
1025 implicit none
1026 
1027 ! Passed variables
1028 real(kind_real),intent(in) :: r(:,:,:,:,:) ! Real
1029 
1030 isanynotmsr_5d = any(isnotmsr(r))
1031 
1032 end function isanynotmsr_5d
1033 
1034 !----------------------------------------------------------------------
1035 ! Function: isanymsr_1d
1036 ! Purpose: check if a real is set to missing value
1037 !----------------------------------------------------------------------
1038 logical function isanymsr_1d(r)
1040 implicit none
1041 
1042 ! Passed variables
1043 real(kind_real),intent(in) :: r(:) ! Real
1044 
1045 isanymsr_1d = .not.isallmsr(r)
1046 
1047 end function isanymsr_1d
1048 
1049 !----------------------------------------------------------------------
1050 ! Function: isanymsr_2d
1051 ! Purpose: check if a real is set to missing value
1052 !----------------------------------------------------------------------
1053 logical function isanymsr_2d(r)
1055 implicit none
1056 
1057 ! Passed variables
1058 real(kind_real),intent(in) :: r(:,:) ! Real
1059 
1060 isanymsr_2d = .not.isallmsr(r)
1061 
1062 end function isanymsr_2d
1063 
1064 !----------------------------------------------------------------------
1065 ! Function: isanymsr_3d
1066 ! Purpose: check if a real is set to missing value
1067 !----------------------------------------------------------------------
1068 logical function isanymsr_3d(r)
1070 implicit none
1071 
1072 ! Passed variables
1073 real(kind_real),intent(in) :: r(:,:,:) ! Real
1074 
1075 isanymsr_3d = .not.isallmsr(r)
1076 
1077 end function isanymsr_3d
1078 
1079 !----------------------------------------------------------------------
1080 ! Function: isanymsr_4d
1081 ! Purpose: check if a real is set to missing value
1082 !----------------------------------------------------------------------
1083 logical function isanymsr_4d(r)
1085 implicit none
1086 
1087 ! Passed variables
1088 real(kind_real),intent(in) :: r(:,:,:,:) ! Real
1089 
1090 isanymsr_4d = .not.isallmsr(r)
1091 
1092 end function isanymsr_4d
1093 
1094 !----------------------------------------------------------------------
1095 ! Function: isanymsr_5d
1096 ! Purpose: check if a real is set to missing value
1097 !----------------------------------------------------------------------
1098 logical function isanymsr_5d(r)
1100 implicit none
1101 
1102 ! Passed variables
1103 real(kind_real),intent(in) :: r(:,:,:,:,:) ! Real
1104 
1105 isanymsr_5d = .not.isallmsr(r)
1106 
1107 end function isanymsr_5d
1108 
1109 !----------------------------------------------------------------------
1110 ! Function: isallnotmsi_1d
1111 ! Purpose: check if an integer is not set to missing value
1112 !----------------------------------------------------------------------
1113 logical function isallnotmsi_1d(i)
1115 implicit none
1116 
1117 ! Passed variables
1118 integer,intent(in) :: i(:) ! Integer
1119 
1120 isallnotmsi_1d = all(isnotmsi(i))
1121 
1122 end function isallnotmsi_1d
1123 
1124 !----------------------------------------------------------------------
1125 ! Function: isallnotmsi_2d
1126 ! Purpose: check if an integer is not set to missing value
1127 !----------------------------------------------------------------------
1128 logical function isallnotmsi_2d(i)
1130 implicit none
1131 
1132 ! Passed variables
1133 integer,intent(in) :: i(:,:) ! Integer
1134 
1135 isallnotmsi_2d = all(isnotmsi(i))
1136 
1137 end function isallnotmsi_2d
1138 
1139 !----------------------------------------------------------------------
1140 ! Function: isallnotmsi_3d
1141 ! Purpose: check if an integer is not set to missing value
1142 !----------------------------------------------------------------------
1143 logical function isallnotmsi_3d(i)
1145 implicit none
1146 
1147 ! Passed variables
1148 integer,intent(in) :: i(:,:,:) ! Integer
1149 
1150 isallnotmsi_3d = all(isnotmsi(i))
1151 
1152 end function isallnotmsi_3d
1153 
1154 !----------------------------------------------------------------------
1155 ! Function: isallnotmsi_4d
1156 ! Purpose: check if an integer is not set to missing value
1157 !----------------------------------------------------------------------
1158 logical function isallnotmsi_4d(i)
1160 implicit none
1161 
1162 ! Passed variables
1163 integer,intent(in) :: i(:,:,:,:) ! Integer
1164 
1165 isallnotmsi_4d = all(isnotmsi(i))
1166 
1167 end function isallnotmsi_4d
1168 
1169 !----------------------------------------------------------------------
1170 ! Function: isallnotmsi_5d
1171 ! Purpose: check if an integer is not set to missing value
1172 !----------------------------------------------------------------------
1173 logical function isallnotmsi_5d(i)
1175 implicit none
1176 
1177 ! Passed variables
1178 integer,intent(in) :: i(:,:,:,:,:) ! Integer
1179 
1180 isallnotmsi_5d = all(isnotmsi(i))
1181 
1182 end function isallnotmsi_5d
1183 
1184 !----------------------------------------------------------------------
1185 ! Function: isallmsi_1d
1186 ! Purpose: check if an integer is set to missing value
1187 !----------------------------------------------------------------------
1188 logical function isallmsi_1d(i)
1190 implicit none
1191 
1192 ! Passed variables
1193 integer,intent(in) :: i(:) ! Integer
1194 
1195 isallmsi_1d = .not.isanynotmsi(i)
1196 
1197 end function isallmsi_1d
1198 
1199 !----------------------------------------------------------------------
1200 ! Function: isallmsi_2d
1201 ! Purpose: check if an integer is set to missing value
1202 !----------------------------------------------------------------------
1203 logical function isallmsi_2d(i)
1205 implicit none
1206 
1207 ! Passed variables
1208 integer,intent(in) :: i(:,:) ! Integer
1209 
1210 isallmsi_2d = .not.isanynotmsi(i)
1211 
1212 end function isallmsi_2d
1213 
1214 !----------------------------------------------------------------------
1215 ! Function: isallmsi_3d
1216 ! Purpose: check if an integer is set to missing value
1217 !----------------------------------------------------------------------
1218 logical function isallmsi_3d(i)
1220 implicit none
1221 
1222 ! Passed variables
1223 integer,intent(in) :: i(:,:,:) ! Integer
1224 
1225 isallmsi_3d = .not.isanynotmsi(i)
1226 
1227 end function isallmsi_3d
1228 
1229 !----------------------------------------------------------------------
1230 ! Function: isallmsi_4d
1231 ! Purpose: check if an integer is set to missing value
1232 !----------------------------------------------------------------------
1233 logical function isallmsi_4d(i)
1235 implicit none
1236 
1237 ! Passed variables
1238 integer,intent(in) :: i(:,:,:,:) ! Integer
1239 
1240 isallmsi_4d = .not.isanynotmsi(i)
1241 
1242 end function isallmsi_4d
1243 
1244 !----------------------------------------------------------------------
1245 ! Function: isallmsi_5d
1246 ! Purpose: check if an integer is set to missing value
1247 !----------------------------------------------------------------------
1248 logical function isallmsi_5d(i)
1250 implicit none
1251 
1252 ! Passed variables
1253 integer,intent(in) :: i(:,:,:,:,:) ! Integer
1254 
1255 isallmsi_5d = .not.isanynotmsi(i)
1256 
1257 end function isallmsi_5d
1258 
1259 !----------------------------------------------------------------------
1260 ! Function: isallnotmsr_1d
1261 ! Purpose: check if a real is not set to missing value
1262 !----------------------------------------------------------------------
1263 logical function isallnotmsr_1d(r)
1265 implicit none
1266 
1267 ! Passed variables
1268 real(kind_real),intent(in) :: r(:) ! Real
1269 
1270 isallnotmsr_1d = all(isnotmsr(r))
1271 
1272 end function isallnotmsr_1d
1273 
1274 !----------------------------------------------------------------------
1275 ! Function: isallnotmsr_2d
1276 ! Purpose: check if a real is not set to missing value
1277 !----------------------------------------------------------------------
1278 logical function isallnotmsr_2d(r)
1280 implicit none
1281 
1282 ! Passed variables
1283 real(kind_real),intent(in) :: r(:,:) ! Real
1284 
1285 isallnotmsr_2d = all(isnotmsr(r))
1286 
1287 end function isallnotmsr_2d
1288 
1289 !----------------------------------------------------------------------
1290 ! Function: isallnotmsr_3d
1291 ! Purpose: check if a real is not set to missing value
1292 !----------------------------------------------------------------------
1293 logical function isallnotmsr_3d(r)
1295 implicit none
1296 
1297 ! Passed variables
1298 real(kind_real),intent(in) :: r(:,:,:) ! Real
1299 
1300 isallnotmsr_3d = all(isnotmsr(r))
1301 
1302 end function isallnotmsr_3d
1303 
1304 !----------------------------------------------------------------------
1305 ! Function: isallnotmsr_4d
1306 ! Purpose: check if a real is not set to missing value
1307 !----------------------------------------------------------------------
1308 logical function isallnotmsr_4d(r)
1310 implicit none
1311 
1312 ! Passed variables
1313 real(kind_real),intent(in) :: r(:,:,:,:) ! Real
1314 
1315 isallnotmsr_4d = all(isnotmsr(r))
1316 
1317 end function isallnotmsr_4d
1318 
1319 !----------------------------------------------------------------------
1320 ! Function: isallnotmsr_5d
1321 ! Purpose: check if a real is not set to missing value
1322 !----------------------------------------------------------------------
1323 logical function isallnotmsr_5d(r)
1325 implicit none
1326 
1327 ! Passed variables
1328 real(kind_real),intent(in) :: r(:,:,:,:,:) ! Real
1329 
1330 isallnotmsr_5d = all(isnotmsr(r))
1331 
1332 end function isallnotmsr_5d
1333 
1334 !----------------------------------------------------------------------
1335 ! Function: isallmsr_1d
1336 ! Purpose: check if a real is set to missing value
1337 !----------------------------------------------------------------------
1338 logical function isallmsr_1d(r)
1340 implicit none
1341 
1342 ! Passed variables
1343 real(kind_real),intent(in) :: r(:) ! Real
1344 
1345 isallmsr_1d = .not.isanynotmsr(r)
1346 
1347 end function isallmsr_1d
1348 
1349 !----------------------------------------------------------------------
1350 ! Function: isallmsr_2d
1351 ! Purpose: check if a real is set to missing value
1352 !----------------------------------------------------------------------
1353 logical function isallmsr_2d(r)
1355 implicit none
1356 
1357 ! Passed variables
1358 real(kind_real),intent(in) :: r(:,:) ! Real
1359 
1360 isallmsr_2d = .not.isanynotmsr(r)
1361 
1362 end function isallmsr_2d
1363 
1364 !----------------------------------------------------------------------
1365 ! Function: isallmsr_3d
1366 ! Purpose: check if a real is set to missing value
1367 !----------------------------------------------------------------------
1368 logical function isallmsr_3d(r)
1370 implicit none
1371 
1372 ! Passed variables
1373 real(kind_real),intent(in) :: r(:,:,:) ! Real
1374 
1375 isallmsr_3d = .not.isanynotmsr(r)
1376 
1377 end function isallmsr_3d
1378 
1379 !----------------------------------------------------------------------
1380 ! Function: isallmsr_4d
1381 ! Purpose: check if a real is set to missing value
1382 !----------------------------------------------------------------------
1383 logical function isallmsr_4d(r)
1385 implicit none
1386 
1387 ! Passed variables
1388 real(kind_real),intent(in) :: r(:,:,:,:) ! Real
1389 
1390 isallmsr_4d = .not.isanynotmsr(r)
1391 
1392 end function isallmsr_4d
1393 
1394 !----------------------------------------------------------------------
1395 ! Function: isallmsr_5d
1396 ! Purpose: check if a real is set to missing value
1397 !----------------------------------------------------------------------
1398 logical function isallmsr_5d(r)
1400 implicit none
1401 
1402 ! Passed variables
1403 real(kind_real),intent(in) :: r(:,:,:,:,:) ! Real
1404 
1405 isallmsr_5d = .not.isanynotmsr(r)
1406 
1407 end function isallmsr_5d
1408 
1409 end module tools_missing
logical function, dimension(max(size(i, 1), 1), max(size(i, 2), 1), max(size(i, 3), 1)) isnotmsi_3d(i)
logical function, dimension(max(size(i), 1)) ismsi_1d(i)
subroutine msi_4d(i)
logical function, dimension(max(size(r, 1), 1), max(size(r, 2), 1), max(size(r, 3), 1)) isnotmsr_3d(r)
logical function isallmsi_3d(i)
logical function isallmsr_2d(r)
logical function, dimension(size(r)) isnotmsr_1d(r)
logical function isanynotmsr_3d(r)
subroutine msr_5d(r)
logical function isanymsi_2d(i)
logical function, dimension(max(size(i, 1), 1), max(size(i, 2), 1), max(size(i, 3), 1), max(size(i, 4), 1), max(size(i, 5), 1)) ismsi_5d(i)
logical function isallmsr_5d(r)
logical function isallmsr_4d(r)
integer, parameter, public msvali
Definition: tools_const.F90:23
subroutine msr_6d(r)
logical function isanynotmsi_5d(i)
logical function isnotmsi_0d(i)
logical function isallmsi_4d(i)
logical function isanynotmsi_1d(i)
subroutine msr_3d(r)
subroutine msr_2d(r)
logical function isallnotmsr_2d(r)
logical function isallnotmsi_3d(i)
logical function, dimension(max(size(r, 1), 1), max(size(r, 2), 1), max(size(r, 3), 1), max(size(r, 4), 1), max(size(r, 5), 1)) ismsr_5d(r)
logical function isallmsr_1d(r)
logical function isanymsr_3d(r)
logical function isallnotmsi_5d(i)
real(kind_real), parameter, public msvalr
Definition: tools_const.F90:24
logical function, dimension(size(r)) ismsr_1d(r)
logical function, dimension(max(size(r, 1), 1), max(size(r, 2), 1), max(size(r, 3), 1), max(size(r, 4), 1)) isnotmsr_4d(r)
logical function ismsi_0d(i)
logical function isallnotmsr_4d(r)
logical function isanymsr_5d(r)
logical function isanynotmsr_1d(r)
logical function isanymsi_4d(i)
logical function isanymsr_4d(r)
logical function, dimension(max(size(i), 1)) isnotmsi_1d(i)
logical function, dimension(max(size(r, 1), 1), max(size(r, 2), 1), max(size(r, 3), 1), max(size(r, 4), 1)) ismsr_4d(r)
logical function isallnotmsr_1d(r)
logical function, dimension(max(size(i, 1), 1), max(size(i, 2), 1), max(size(i, 3), 1), max(size(i, 4), 1), max(size(i, 5), 1)) isnotmsi_5d(i)
logical function isanynotmsr_2d(r)
logical function isanynotmsr_5d(r)
subroutine msi_6d(i)
subroutine msi_2d(i)
logical function, dimension(max(size(i, 1), 1), max(size(i, 2), 1)) isnotmsi_2d(i)
logical function, dimension(max(size(i, 1), 1), max(size(i, 2), 1), max(size(i, 3), 1), max(size(i, 4), 1)) isnotmsi_4d(i)
logical function isallnotmsi_2d(i)
logical function isanynotmsr_4d(r)
logical function isanymsr_2d(r)
subroutine msr_4d(r)
logical function, dimension(max(size(i, 1), 1), max(size(i, 2), 1), max(size(i, 3), 1)) ismsi_3d(i)
logical function isanymsi_3d(i)
logical function isanymsi_5d(i)
logical function isallmsi_1d(i)
logical function isanynotmsi_3d(i)
logical function, dimension(max(size(r, 1), 1), max(size(r, 2), 1)) ismsr_2d(r)
subroutine msi_5d(i)
************************************************************************GNU Lesser General Public License **This file is part of the GFDL Flexible Modeling System(FMS). ! *! *FMS is free software without even the implied warranty of MERCHANTABILITY or *FITNESS FOR A PARTICULAR PURPOSE See the GNU General Public License *for more details **You should have received a copy of the GNU Lesser General Public *License along with FMS If see< http:! ***********************************************************************subroutine READ_RECORD_CORE_(unit, field, nwords, data, start, axsiz) integer, intent(in) ::unit type(fieldtype), intent(in) ::field integer, intent(in) ::nwords MPP_TYPE_, intent(inout) ::data(nwords) integer, intent(in) ::start(:), axsiz(:) integer(SHORT_KIND) ::i2vals(nwords)!rab used in conjunction with transfer intrinsic to determine size of a variable integer(KIND=1) ::one_byte(8) integer ::word_sz!#ifdef __sgi integer(INT_KIND) ::ivals(nwords) real(FLOAT_KIND) ::rvals(nwords)!#else! integer ::ivals(nwords)! real ::rvals(nwords)!#endif real(DOUBLE_KIND) ::r8vals(nwords) pointer(ptr1, i2vals) pointer(ptr2, ivals) pointer(ptr3, rvals) pointer(ptr4, r8vals) if(mpp_io_stack_size< nwords) call mpp_io_set_stack_size(nwords) call mpp_error(FATAL, 'MPP_READ currently requires use_netCDF option') end subroutine READ_RECORD_CORE_ subroutine READ_RECORD_(unit, field, nwords, data, time_level, domain, position, tile_count, start_in, axsiz_in)!routine that is finally called by all mpp_read routines to perform the read!a non-netCDF record contains:! field ID! a set of 4 coordinates(is:ie, js:je) giving the data subdomain! a timelevel and a timestamp(=NULLTIME if field is static)! 3D real data(stored as 1D)!if you are using direct access I/O, the RECL argument to OPEN must be large enough for the above!in a global direct access file, record position on PE is given by %record.!Treatment of timestamp:! We assume that static fields have been passed without a timestamp.! Here that is converted into a timestamp of NULLTIME.! For non-netCDF fields, field is treated no differently, but is written! with a timestamp of NULLTIME. There is no check in the code to prevent! the user from repeatedly writing a static field. integer, intent(in) ::unit, nwords type(fieldtype), intent(in) ::field MPP_TYPE_, intent(inout) ::data(nwords) integer, intent(in), optional ::time_level type(domain2D), intent(in), optional ::domain integer, intent(in), optional ::position, tile_count integer, intent(in), optional ::start_in(:), axsiz_in(:) integer, dimension(size(field%axes(:))) ::start, axsiz integer ::tlevel !, subdomain(4) integer ::i, error, is, ie, js, je, isg, ieg, jsg, jeg type(domain2d), pointer ::io_domain=> tlevel if(PRESENT(start_in) .AND. PRESENT(axsiz_in)) then if(size(start(! the data domain and compute domain must refer to the subdomain being passed ! In this ! since that attempts to gather all data on PE size(field%axes(:)) axsiz(i)
logical function isallnotmsr_5d(r)
logical function isnotmsr_0d(r)
logical function, dimension(max(size(r, 1), 1), max(size(r, 2), 1), max(size(r, 3), 1), max(size(r, 4), 1), max(size(r, 5), 1)) isnotmsr_5d(r)
subroutine msi_0d(i)
logical function isallmsi_2d(i)
logical function isanymsr_1d(r)
#define max(a, b)
Definition: mosaic_util.h:33
logical function isallnotmsr_3d(r)
logical function, dimension(max(size(r, 1), 1), max(size(r, 2), 1), max(size(r, 3), 1)) ismsr_3d(r)
logical function isallnotmsi_1d(i)
subroutine msr_0d(r)
subroutine msi_1d(i)
logical function isallmsi_5d(i)
logical function isanymsi_1d(i)
subroutine msr_1d(r)
logical function isanynotmsi_2d(i)
integer, parameter, public kind_real
logical function isanynotmsi_4d(i)
subroutine msi_3d(i)
logical function, dimension(max(size(i, 1), 1), max(size(i, 2), 1), max(size(i, 3), 1), max(size(i, 4), 1)) ismsi_4d(i)
logical function isallmsr_3d(r)
logical function, dimension(max(size(r, 1), 1), max(size(r, 2), 1)) isnotmsr_2d(r)
logical function ismsr_0d(r)
logical function isallnotmsi_4d(i)
logical function, dimension(max(size(i, 1), 1), max(size(i, 2), 1)) ismsi_2d(i)