/[lmdze]/trunk/IOIPSL/mathop2.f90
ViewVC logotype

Annotation of /trunk/IOIPSL/mathop2.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 62 - (hide annotations)
Thu Jul 26 14:37:37 2012 UTC (11 years, 10 months ago) by guez
Original Path: trunk/libf/IOIPSL/mathop2.f90
File size: 53000 byte(s)
Changed handling of compiler in compilation system.

Removed the prefix letters "y", "p", "t" or "z" in some names of variables.

Replaced calls to NetCDF by calls to NetCDF95.

Extracted "ioget_calendar" procedures from "calendar.f90" into a
separate file.

Extracted to a separate file, "mathop2.f90", procedures that were not
part of the generic interface "mathop" in "mathop.f90".

Removed computation of "dq" in "bilan_dyn", which was not used.

In "iniadvtrac", removed schemes 20 Slopes and 30 Prather. Was not
compatible with declarations of array sizes.

In "clcdrag", "ustarhb", "vdif_kcay", "yamada4" and "coefkz", changed
the size of some arrays from "klon" to "knon".

Removed possible call to "conema3" in "physiq".

Removed unused argument "cd" in "yamada".

1 guez 62 MODULE mathop2
2    
3     ! From mathelp.f90, version 2.0 2004/04/05 14:47:50
4    
5     implicit none
6    
7     CONTAINS
8    
9     !=== FUNCTIONS (only one argument)
10     !-
11     INTEGER FUNCTION ma_sin_r11(nb, x, nbo, y)
12     INTEGER :: nb, nbo, i
13     REAL :: x(nb), y(nbo)
14     !---------------------------------------------------------------------
15     DO i=1, nb
16     y(i) = SIN(x(i))
17     ENDDO
18    
19     nbo = nb
20     ma_sin_r11 = 0
21     !----------------------
22     END FUNCTION ma_sin_r11
23    
24     !************************************************
25    
26     INTEGER FUNCTION ma_cos_r11(nb, x, nbo, y)
27     INTEGER :: nb, nbo, i
28     REAL :: x(nb), y(nbo)
29     !---------------------------------------------------------------------
30     DO i=1, nb
31     y(i) = COS(x(i))
32     ENDDO
33    
34     nbo = nb
35     ma_cos_r11 = 0
36     !----------------------
37     END FUNCTION ma_cos_r11
38    
39     !************************************************
40    
41     INTEGER FUNCTION ma_tan_r11(nb, x, nbo, y)
42     INTEGER :: nb, nbo, i
43     REAL :: x(nb), y(nbo)
44     !---------------------------------------------------------------------
45     DO i=1, nb
46     y(i) = TAN(x(i))
47     ENDDO
48    
49     nbo = nb
50     ma_tan_r11 = 0
51     !----------------------
52     END FUNCTION ma_tan_r11
53    
54     !************************************************
55    
56     INTEGER FUNCTION ma_asin_r11(nb, x, nbo, y)
57     INTEGER :: nb, nbo, i
58     REAL :: x(nb), y(nbo)
59     !---------------------------------------------------------------------
60     DO i=1, nb
61     y(i) = ASIN(x(i))
62     ENDDO
63    
64     nbo = nb
65     ma_asin_r11 = 0
66     !-----------------------
67     END FUNCTION ma_asin_r11
68    
69     !************************************************
70    
71     INTEGER FUNCTION ma_acos_r11(nb, x, nbo, y)
72     INTEGER :: nb, nbo, i
73     REAL :: x(nb), y(nbo)
74     !---------------------------------------------------------------------
75     DO i=1, nb
76     y(i) = ACOS(x(i))
77     ENDDO
78    
79     nbo = nb
80     ma_acos_r11 = 0
81     !-----------------------
82     END FUNCTION ma_acos_r11
83    
84     !************************************************
85    
86     INTEGER FUNCTION ma_atan_r11(nb, x, nbo, y)
87     INTEGER :: nb, nbo, i
88     REAL :: x(nb), y(nbo)
89     !---------------------------------------------------------------------
90     DO i=1, nb
91     y(i) = ATAN(x(i))
92     ENDDO
93    
94     nbo = nb
95     ma_atan_r11 = 0
96     !-----------------------
97     END FUNCTION ma_atan_r11
98    
99     !************************************************
100    
101     INTEGER FUNCTION ma_exp_r11(nb, x, nbo, y)
102     INTEGER :: nb, nbo, i
103     REAL :: x(nb), y(nbo)
104     !---------------------------------------------------------------------
105     DO i=1, nb
106     y(i) = EXP(x(i))
107     ENDDO
108    
109     nbo = nb
110     ma_exp_r11 = 0
111     !----------------------
112     END FUNCTION ma_exp_r11
113    
114     !************************************************
115    
116     INTEGER FUNCTION ma_alog_r11(nb, x, nbo, y)
117     INTEGER :: nb, nbo, i
118     REAL :: x(nb), y(nbo)
119     !---------------------------------------------------------------------
120     DO i=1, nb
121     y(i) = alog(x(i))
122     ENDDO
123    
124     nbo = nb
125     ma_alog_r11 = 0
126     !-----------------------
127     END FUNCTION ma_alog_r11
128    
129     !************************************************
130    
131     INTEGER FUNCTION ma_sqrt_r11(nb, x, nbo, y)
132     INTEGER :: nb, nbo, i
133     REAL :: x(nb), y(nbo)
134     !---------------------------------------------------------------------
135     DO i=1, nb
136     y(i) = SQRT(x(i))
137     ENDDO
138    
139     nbo = nb
140     ma_sqrt_r11 = 0
141     !-----------------------
142     END FUNCTION ma_sqrt_r11
143    
144     !************************************************
145    
146     INTEGER FUNCTION ma_abs_r11(nb, x, nbo, y)
147     INTEGER :: nb, nbo, i
148     REAL :: x(nb), y(nbo)
149     !---------------------------------------------------------------------
150     DO i=1, nb
151     y(i) = ABS(x(i))
152     ENDDO
153    
154     nbo = nb
155     ma_abs_r11 = 0
156     !----------------------
157     END FUNCTION ma_abs_r11
158    
159     !************************************************
160    
161     INTEGER FUNCTION ma_chs_r11(nb, x, nbo, y)
162     INTEGER :: nb, nbo, i
163     REAL :: x(nb), y(nbo)
164     !---------------------------------------------------------------------
165     DO i=1, nb
166     y(i) = x(i)*(-1.)
167     ENDDO
168    
169     nbo = nb
170     ma_chs_r11 = 0
171     !----------------------
172     END FUNCTION ma_chs_r11
173    
174     !************************************************
175    
176     INTEGER FUNCTION ma_cels_r11(nb, x, nbo, y)
177     INTEGER :: nb, nbo, i
178     REAL :: x(nb), y(nbo)
179     !---------------------------------------------------------------------
180     DO i=1, nb
181     y(i) = x(i)-273.15
182     ENDDO
183    
184     nbo = nb
185     ma_cels_r11 = 0
186     !-----------------------
187     END FUNCTION ma_cels_r11
188    
189     !************************************************
190    
191     INTEGER FUNCTION ma_kelv_r11(nb, x, nbo, y)
192     INTEGER :: nb, nbo, i
193     REAL :: x(nb), y(nbo)
194     !---------------------------------------------------------------------
195     DO i=1, nb
196     y(i) = x(i)+273.15
197     ENDDO
198    
199     nbo = nb
200     ma_kelv_r11 = 0
201     !-----------------------
202     END FUNCTION ma_kelv_r11
203    
204     !************************************************
205    
206     INTEGER FUNCTION ma_deg_r11(nb, x, nbo, y)
207     INTEGER :: nb, nbo, i
208     REAL :: x(nb), y(nbo)
209     !---------------------------------------------------------------------
210     DO i=1, nb
211     y(i) = x(i)*57.29577951
212     ENDDO
213    
214     nbo = nb
215     ma_deg_r11 = 0
216     !-----------------------
217     END FUNCTION ma_deg_r11
218    
219     !************************************************
220    
221     INTEGER FUNCTION ma_rad_r11(nb, x, nbo, y)
222     INTEGER :: nb, nbo, i
223     REAL :: x(nb), y(nbo)
224     !---------------------------------------------------------------------
225     DO i=1, nb
226     y(i) = x(i)*0.01745329252
227     ENDDO
228    
229     nbo = nb
230     ma_rad_r11 = 0
231     !----------------------
232     END FUNCTION ma_rad_r11
233    
234     !************************************************
235    
236     INTEGER FUNCTION ma_ident_r11(nb, x, nbo, y)
237     INTEGER :: nb, nbo, i
238     REAL :: x(nb), y(nbo)
239     !---------------------------------------------------------------------
240     DO i=1, nb
241     y(i) = x(i)
242     ENDDO
243    
244     nbo = nb
245     ma_ident_r11 = 0
246     !------------------------
247     END FUNCTION ma_ident_r11
248     !-
249     !=== OPERATIONS (two argument)
250     !-
251     INTEGER FUNCTION ma_add_r11(nb, x, s, nbo, y)
252     INTEGER :: nb, nbo
253     REAL :: x(nb), s, y(nbo)
254    
255     INTEGER :: i
256     !---------------------------------------------------------------------
257     DO i=1, nb
258     y(i) = x(i)+s
259     ENDDO
260    
261     nbo = nb
262     ma_add_r11 = 0
263     !-----------------------
264     END FUNCTION ma_add_r11
265    
266     !************************************************
267    
268     INTEGER FUNCTION ma_sub_r11(nb, x, s, nbo, y)
269     INTEGER :: nb, nbo
270     REAL :: x(nb), s, y(nbo)
271    
272     INTEGER :: i
273     !---------------------------------------------------------------------
274     DO i=1, nb
275     y(i) = x(i)-s
276     ENDDO
277    
278     nbo = nb
279     ma_sub_r11 = 0
280     !----------------------
281     END FUNCTION ma_sub_r11
282    
283     !************************************************
284    
285     INTEGER FUNCTION ma_subi_r11(nb, x, s, nbo, y)
286     INTEGER :: nb, nbo
287     REAL :: x(nb), s, y(nbo)
288    
289     INTEGER :: i
290     !---------------------------------------------------------------------
291     DO i=1, nb
292     y(i) = s-x(i)
293     ENDDO
294    
295     nbo = nb
296     ma_subi_r11 = 0
297     !-----------------------
298     END FUNCTION ma_subi_r11
299    
300     !************************************************
301    
302     INTEGER FUNCTION ma_mult_r11(nb, x, s, nbo, y)
303     INTEGER :: nb, nbo
304     REAL :: x(nb), s, y(nbo)
305    
306     INTEGER :: i
307     !---------------------------------------------------------------------
308     DO i=1, nb
309     y(i) = x(i)*s
310     ENDDO
311    
312     nbo = nb
313     ma_mult_r11 = 0
314     !-----------------------
315     END FUNCTION ma_mult_r11
316    
317     !************************************************
318    
319     INTEGER FUNCTION ma_div_r11(nb, x, s, nbo, y)
320     INTEGER :: nb, nbo
321     REAL :: x(nb), s, y(nbo)
322    
323     INTEGER :: i
324     !---------------------------------------------------------------------
325     DO i=1, nb
326     y(i) = x(i)/s
327     ENDDO
328    
329     nbo = nb
330     ma_div_r11 = 0
331     !-----------------------
332     END FUNCTION ma_div_r11
333    
334     !************************************************
335    
336     INTEGER FUNCTION ma_divi_r11(nb, x, s, nbo, y)
337     INTEGER :: nb, nbo
338     REAL :: x(nb), s, y(nbo)
339    
340     INTEGER :: i
341     !---------------------------------------------------------------------
342     DO i=1, nb
343     y(i) = s/x(i)
344     ENDDO
345    
346     nbo = nb
347     ma_divi_r11 = 0
348     !-----------------------
349     END FUNCTION ma_divi_r11
350    
351     !************************************************
352    
353     INTEGER FUNCTION ma_power_r11(nb, x, s, nbo, y)
354     INTEGER :: nb, nbo
355     REAL :: x(nb), s, y(nbo)
356    
357     INTEGER :: i
358     !---------------------------------------------------------------------
359     DO i=1, nb
360     y(i) = x(i)**s
361     ENDDO
362    
363     nbo = nb
364     ma_power_r11 = 0
365     !-----------------------
366     END FUNCTION ma_power_r11
367    
368     !************************************************
369    
370     INTEGER FUNCTION ma_fumin_r11(nb, x, s, nbo, y)
371     INTEGER :: nb, nbo
372     REAL :: x(nb), s, y(nbo)
373    
374     INTEGER :: i
375     !---------------------------------------------------------------------
376     DO i=1, nb
377     y(i) = MIN(x(i), s)
378     ENDDO
379    
380     nbo = nb
381     ma_fumin_r11 = 0
382     !------------------------
383     END FUNCTION ma_fumin_r11
384    
385     !************************************************
386    
387     INTEGER FUNCTION ma_fumax_r11(nb, x, s, nbo, y)
388     INTEGER :: nb, nbo
389     REAL :: x(nb), s, y(nbo)
390    
391     INTEGER :: i
392     !---------------------------------------------------------------------
393     DO i=1, nb
394     y(i) = MAX(x(i), s)
395     ENDDO
396    
397     nbo = nb
398     ma_fumax_r11 = 0
399     !------------------------
400     END FUNCTION ma_fumax_r11
401    
402     !************************************************
403    
404     INTEGER FUNCTION ma_fuscat_r11(nb, x, nbi, ind, miss_val, nbo, y)
405     INTEGER :: nb, nbo, nbi
406     INTEGER :: ind(nbi)
407     REAL :: x(nb), miss_val, y(nbo)
408    
409     INTEGER :: i, ii, ipos
410     !---------------------------------------------------------------------
411     ma_fuscat_r11 = 0
412    
413     y(1:nbo) = miss_val
414    
415     IF (nbi <= nb) THEN
416     ipos = 0
417     DO i=1, nbi
418     IF (ind(i) <= nbo .AND. ind(i) > 0) THEN
419     ipos = ipos+1
420     y(ind(i)) = x(ipos)
421     ELSE
422     IF (ind(i) > nbo) ma_fuscat_r11 = ma_fuscat_r11+1
423     ENDIF
424     ENDDO
425     !-- Repeat the data if needed
426     IF (MINVAL(ind) < 0) THEN
427     DO i=1, nbi
428     IF (ind(i) <= 0) THEN
429     DO ii=1, ABS(ind(i))-1
430     IF (ind(i+1)+ii <= nbo) THEN
431     y(ind(i+1)+ii) = y(ind(i+1))
432     ELSE
433     ma_fuscat_r11 = ma_fuscat_r11+1
434     ENDIF
435     ENDDO
436     ENDIF
437     ENDDO
438     ENDIF
439     ELSE
440     ma_fuscat_r11 = 1
441     ENDIF
442     !-------------------------
443     END FUNCTION ma_fuscat_r11
444    
445     !************************************************
446    
447     INTEGER FUNCTION ma_fugath_r11(nb, x, nbi, ind, miss_val, nbo, y)
448     INTEGER :: nb, nbo, nbi
449     INTEGER :: ind(nbi)
450     REAL :: x(nb), miss_val, y(nbo)
451    
452     INTEGER :: i, ipos
453     !---------------------------------------------------------------------
454     IF (nbi <= nbo) THEN
455     ma_fugath_r11 = 0
456     y(1:nbo) = miss_val
457     ipos = 0
458     DO i=1, nbi
459     IF (ipos+1 <= nbo) THEN
460     IF (ind(i) > 0) THEN
461     ipos = ipos+1
462     y(ipos) = x(ind(i))
463     ENDIF
464     ELSE
465     IF (ipos+1 > nbo) ma_fugath_r11 = ma_fugath_r11+1
466     ENDIF
467     ENDDO
468     ELSE
469     ma_fugath_r11 = 1
470     ENDIF
471    
472     nbo = ipos
473     !-------------------------
474     END FUNCTION ma_fugath_r11
475    
476     !************************************************
477    
478     INTEGER FUNCTION ma_fufill_r11(nb, x, nbi, ind, miss_val, nbo, y)
479     INTEGER :: nb, nbo, nbi
480     INTEGER :: ind(nbi)
481     REAL :: x(nb), miss_val, y(nbo)
482    
483     INTEGER :: i, ii, ipos
484     !---------------------------------------------------------------------
485     ma_fufill_r11 = 0
486    
487     IF (nbi <= nb) THEN
488     ipos = 0
489     DO i=1, nbi
490     IF (ind(i) <= nbo .AND. ind(i) > 0) THEN
491     ipos = ipos+1
492     y(ind(i)) = x(ipos)
493     ELSE
494     IF (ind(i) > nbo) ma_fufill_r11 = ma_fufill_r11+1
495     ENDIF
496     ENDDO
497     !-- Repeat the data if needed
498     IF (MINVAL(ind) < 0) THEN
499     DO i=1, nbi
500     IF (ind(i) <= 0) THEN
501     DO ii=1, ABS(ind(i))-1
502     IF (ind(i+1)+ii <= nbo) THEN
503     y(ind(i+1)+ii) = y(ind(i+1))
504     ELSE
505     ma_fufill_r11 = ma_fufill_r11+1
506     ENDIF
507     ENDDO
508     ENDIF
509     ENDDO
510     ENDIF
511     ELSE
512     ma_fufill_r11 = 1
513     ENDIF
514     !-------------------------
515     END FUNCTION ma_fufill_r11
516    
517     !************************************************
518    
519     INTEGER FUNCTION ma_fucoll_r11(nb, x, nbi, ind, miss_val, nbo, y)
520     INTEGER :: nb, nbo, nbi
521     INTEGER :: ind(nbi)
522     REAL :: x(nb), miss_val, y(nbo)
523    
524     INTEGER :: i, ipos
525     !---------------------------------------------------------------------
526     IF (nbi <= nbo) THEN
527     ma_fucoll_r11 = 0
528     ipos = 0
529     DO i=1, nbi
530     IF (ipos+1 <= nbo) THEN
531     IF (ind(i) > 0) THEN
532     ipos = ipos+1
533     y(ipos) = x(ind(i))
534     ENDIF
535     ELSE
536     IF (ipos+1 > nbo) ma_fucoll_r11 = ma_fucoll_r11+1
537     ENDIF
538     ENDDO
539     ELSE
540     ma_fucoll_r11 = 1
541     ENDIF
542    
543     nbo = ipos
544     !-------------------------
545     END FUNCTION ma_fucoll_r11
546    
547     !************************************************
548    
549     INTEGER FUNCTION ma_fuundef_r11(nb, x, nbi, ind, miss_val, nbo, y)
550     INTEGER :: nb, nbo, nbi
551     INTEGER :: ind(nbi)
552     REAL :: x(nb), miss_val, y(nbo)
553    
554     INTEGER :: i
555     !---------------------------------------------------------------------
556     IF (nbi <= nbo .AND. nbo == nb) THEN
557     ma_fuundef_r11 = 0
558     DO i=1, nbo
559     y(i) = x(i)
560     ENDDO
561     DO i=1, nbi
562     IF (ind(i) <= nbo .AND. ind(i) > 0) THEN
563     y(ind(i)) = miss_val
564     ELSE
565     IF (ind(i) > nbo) ma_fuundef_r11 = ma_fuundef_r11+1
566     ENDIF
567     ENDDO
568     ELSE
569     ma_fuundef_r11 = 1
570     ENDIF
571     !--------------------------
572     END FUNCTION ma_fuundef_r11
573    
574     !************************************************
575    
576     INTEGER FUNCTION ma_fuonly_r11(nb, x, nbi, ind, miss_val, nbo, y)
577     INTEGER :: nb, nbo, nbi
578     INTEGER :: ind(nbi)
579     REAL :: x(nb), miss_val, y(nbo)
580    
581     INTEGER :: i
582     !---------------------------------------------------------------------
583     IF ( (nbi <= nbo).AND.(nbo == nb) &
584     & .AND.ALL(ind(1:nbi) <= nbo) ) THEN
585     ma_fuonly_r11 = 0
586     y(1:nbo) = miss_val
587     DO i=1, nbi
588     IF (ind(i) > 0) THEN
589     y(ind(i)) = x(ind(i))
590     ENDIF
591     ENDDO
592     ELSE
593     ma_fuonly_r11 = 1
594     ENDIF
595     !-------------------------
596     END FUNCTION ma_fuonly_r11
597    
598     !************************************************
599    
600     !************************************************
601    
602     !=== FUNCTIONS (only one argument)
603     !-
604     INTEGER FUNCTION ma_sin_r21(nb, x, nbo, y)
605     INTEGER :: nb(2), nbo, i, j, ij
606     REAL :: x(nb(1), nb(2)), y(nbo)
607     !---------------------------------------------------------------------
608     ij = 0
609     DO j=1, nb(2)
610     DO i=1, nb(1)
611     ij = ij+1
612     y(ij) = SIN(x(i, j))
613     ENDDO
614     ENDDO
615    
616     nbo = nb(1)*nb(2)
617     ma_sin_r21 = 0
618     !----------------------
619     END FUNCTION ma_sin_r21
620    
621     !************************************************
622    
623     INTEGER FUNCTION ma_cos_r21(nb, x, nbo, y)
624     INTEGER :: nb(2), nbo, i, j, ij
625     REAL :: x(nb(1), nb(2)), y(nbo)
626     !---------------------------------------------------------------------
627     ij = 0
628     DO j=1, nb(2)
629     DO i=1, nb(1)
630     ij = ij+1
631     y(ij) = COS(x(i, j))
632     ENDDO
633     ENDDO
634    
635     nbo = nb(1)*nb(2)
636     ma_cos_r21 = 0
637     !----------------------
638     END FUNCTION ma_cos_r21
639    
640     !************************************************
641    
642     INTEGER FUNCTION ma_tan_r21(nb, x, nbo, y)
643     INTEGER :: nb(2), nbo, i, j, ij
644     REAL :: x(nb(1), nb(2)), y(nbo)
645     !---------------------------------------------------------------------
646     ij = 0
647     DO j=1, nb(2)
648     DO i=1, nb(1)
649     ij = ij+1
650     y(ij) = TAN(x(i, j))
651     ENDDO
652     ENDDO
653    
654     nbo = nb(1)*nb(2)
655     ma_tan_r21 = 0
656     !----------------------
657     END FUNCTION ma_tan_r21
658    
659     !************************************************
660    
661     INTEGER FUNCTION ma_asin_r21(nb, x, nbo, y)
662     INTEGER :: nb(2), nbo, i, j, ij
663     REAL :: x(nb(1), nb(2)), y(nbo)
664     !---------------------------------------------------------------------
665     ij = 0
666     DO j=1, nb(2)
667     DO i=1, nb(1)
668     ij = ij+1
669     y(ij) = ASIN(x(i, j))
670     ENDDO
671     ENDDO
672    
673     nbo = nb(1)*nb(2)
674     ma_asin_r21 = 0
675     !-----------------------
676     END FUNCTION ma_asin_r21
677    
678     !************************************************
679    
680     INTEGER FUNCTION ma_acos_r21(nb, x, nbo, y)
681     INTEGER :: nb(2), nbo, i, j, ij
682     REAL :: x(nb(1), nb(2)), y(nbo)
683     !---------------------------------------------------------------------
684     ij = 0
685     DO j=1, nb(2)
686     DO i=1, nb(1)
687     ij = ij+1
688     y(ij) = ACOS(x(i, j))
689     ENDDO
690     ENDDO
691    
692     nbo = nb(1)*nb(2)
693     ma_acos_r21 = 0
694     !-----------------------
695     END FUNCTION ma_acos_r21
696    
697     !************************************************
698    
699     INTEGER FUNCTION ma_atan_r21(nb, x, nbo, y)
700     INTEGER :: nb(2), nbo, i, j, ij
701     REAL :: x(nb(1), nb(2)), y(nbo)
702     !---------------------------------------------------------------------
703     ij = 0
704     DO j=1, nb(2)
705     DO i=1, nb(1)
706     ij = ij+1
707     y(ij) = ATAN(x(i, j))
708     ENDDO
709     ENDDO
710    
711     nbo = nb(1)*nb(2)
712     ma_atan_r21 = 0
713     !-----------------------
714     END FUNCTION ma_atan_r21
715    
716     !************************************************
717    
718     INTEGER FUNCTION ma_exp_r21(nb, x, nbo, y)
719     INTEGER :: nb(2), nbo, i, j, ij
720     REAL :: x(nb(1), nb(2)), y(nbo)
721     !---------------------------------------------------------------------
722     ij = 0
723     DO j=1, nb(2)
724     DO i=1, nb(1)
725     ij = ij+1
726     y(ij) = EXP(x(i, j))
727     ENDDO
728     ENDDO
729    
730     nbo = nb(1)*nb(2)
731     ma_exp_r21 = 0
732     !----------------------
733     END FUNCTION ma_exp_r21
734    
735     !************************************************
736    
737     INTEGER FUNCTION ma_alog_r21(nb, x, nbo, y)
738     INTEGER :: nb(2), nbo, i, j, ij
739     REAL :: x(nb(1), nb(2)), y(nbo)
740     !---------------------------------------------------------------------
741     ij = 0
742     DO j=1, nb(2)
743     DO i=1, nb(1)
744     ij = ij+1
745     y(ij) = ALOG(x(i, j))
746     ENDDO
747     ENDDO
748    
749     nbo = nb(1)*nb(2)
750     ma_alog_r21 = 0
751     !-----------------------
752     END FUNCTION ma_alog_r21
753    
754     !************************************************
755    
756     INTEGER FUNCTION ma_sqrt_r21(nb, x, nbo, y)
757     INTEGER :: nb(2), nbo, i, j, ij
758     REAL :: x(nb(1), nb(2)), y(nbo)
759     !---------------------------------------------------------------------
760     ij = 0
761     DO j=1, nb(2)
762     DO i=1, nb(1)
763     ij = ij+1
764     y(ij) = SQRT(x(i, j))
765     ENDDO
766     ENDDO
767    
768     nbo = nb(1)*nb(2)
769     ma_sqrt_r21 = 0
770     !-----------------------
771     END FUNCTION ma_sqrt_r21
772    
773     !************************************************
774    
775     INTEGER FUNCTION ma_abs_r21(nb, x, nbo, y)
776     INTEGER :: nb(2), nbo, i, j, ij
777     REAL :: x(nb(1), nb(2)), y(nbo)
778     !---------------------------------------------------------------------
779     ij = 0
780     DO j=1, nb(2)
781     DO i=1, nb(1)
782     ij = ij+1
783     y(ij) = ABS(x(i, j))
784     ENDDO
785     ENDDO
786    
787     nbo = nb(1)*nb(2)
788     ma_abs_r21 = 0
789     !----------------------
790     END FUNCTION ma_abs_r21
791    
792     !************************************************
793    
794     INTEGER FUNCTION ma_chs_r21(nb, x, nbo, y)
795     INTEGER :: nb(2), nbo, i, j, ij
796     REAL :: x(nb(1), nb(2)), y(nbo)
797     !---------------------------------------------------------------------
798     ij = 0
799     DO j=1, nb(2)
800     DO i=1, nb(1)
801     ij = ij+1
802     y(ij) = x(i, j)*(-1.)
803     ENDDO
804     ENDDO
805    
806     nbo = nb(1)*nb(2)
807     ma_chs_r21 = 0
808     !----------------------
809     END FUNCTION ma_chs_r21
810    
811     !************************************************
812    
813     INTEGER FUNCTION ma_cels_r21(nb, x, nbo, y)
814     INTEGER :: nb(2), nbo, i, j, ij
815     REAL :: x(nb(1), nb(2)), y(nbo)
816     !---------------------------------------------------------------------
817     ij = 0
818     DO j=1, nb(2)
819     DO i=1, nb(1)
820     ij = ij+1
821     y(ij) = x(i, j)-273.15
822     ENDDO
823     ENDDO
824    
825     nbo = nb(1)*nb(2)
826     ma_cels_r21 = 0
827     !-----------------------
828     END FUNCTION ma_cels_r21
829    
830     !************************************************
831    
832     INTEGER FUNCTION ma_kelv_r21(nb, x, nbo, y)
833     INTEGER :: nb(2), nbo, i, j, ij
834     REAL :: x(nb(1), nb(2)), y(nbo)
835     !---------------------------------------------------------------------
836     ij = 0
837     DO j=1, nb(2)
838     DO i=1, nb(1)
839     ij = ij+1
840     y(ij) = x(i, j)+273.15
841     ENDDO
842     ENDDO
843    
844     nbo = nb(1)*nb(2)
845     ma_kelv_r21 = 0
846     !-----------------------
847     END FUNCTION ma_kelv_r21
848    
849     !************************************************
850    
851     INTEGER FUNCTION ma_deg_r21(nb, x, nbo, y)
852     INTEGER :: nb(2), nbo, i, j, ij
853     REAL :: x(nb(1), nb(2)), y(nbo)
854     !---------------------------------------------------------------------
855     ij = 0
856     DO j=1, nb(2)
857     DO i=1, nb(1)
858     ij = ij+1
859     y(ij) = x(i, j)*57.29577951
860     ENDDO
861     ENDDO
862    
863     nbo = nb(1)*nb(2)
864     ma_deg_r21 = 0
865     !----------------------
866     END FUNCTION ma_deg_r21
867    
868     !************************************************
869    
870     INTEGER FUNCTION ma_rad_r21(nb, x, nbo, y)
871     INTEGER :: nb(2), nbo, i, j, ij
872     REAL :: x(nb(1), nb(2)), y(nbo)
873     !---------------------------------------------------------------------
874     ij = 0
875     DO j=1, nb(2)
876     DO i=1, nb(1)
877     ij = ij+1
878     y(ij) = x(i, j)*0.01745329252
879     ENDDO
880     ENDDO
881    
882     nbo = nb(1)*nb(2)
883     ma_rad_r21 = 0
884     !----------------------
885     END FUNCTION ma_rad_r21
886    
887     !************************************************
888    
889     INTEGER FUNCTION ma_ident_r21(nb, x, nbo, y)
890     INTEGER :: nb(2), nbo, i, j, ij
891     REAL :: x(nb(1), nb(2)), y(nbo)
892     !---------------------------------------------------------------------
893     ij = 0
894     DO j=1, nb(2)
895     DO i=1, nb(1)
896     ij = ij+1
897     y(ij) = x(i, j)
898     ENDDO
899     ENDDO
900    
901     nbo = nb(1)*nb(2)
902     ma_ident_r21 = 0
903     !------------------------
904     END FUNCTION ma_ident_r21
905     !-
906     !=== OPERATIONS (two argument)
907     !-
908     INTEGER FUNCTION ma_add_r21(nb, x, s, nbo, y)
909     INTEGER :: nb(2), nbo
910     REAL :: x(nb(1), nb(2)), s, y(nbo)
911    
912     INTEGER :: i, j, ij
913     !---------------------------------------------------------------------
914     ij = 0
915     DO j=1, nb(2)
916     DO i=1, nb(1)
917     ij = ij+1
918     y(ij) = x(i, j)+s
919     ENDDO
920     ENDDO
921    
922     nbo = nb(1)*nb(2)
923     ma_add_r21 = 0
924     !----------------------
925     END FUNCTION ma_add_r21
926    
927     !************************************************
928    
929     INTEGER FUNCTION ma_sub_r21(nb, x, s, nbo, y)
930     INTEGER :: nb(2), nbo
931     REAL :: x(nb(1), nb(2)), s, y(nbo)
932    
933     INTEGER :: i, j, ij
934     !---------------------------------------------------------------------
935     ij = 0
936     DO j=1, nb(2)
937     DO i=1, nb(1)
938     ij = ij+1
939     y(ij) = x(i, j)-s
940     ENDDO
941     ENDDO
942    
943     nbo = nb(1)*nb(2)
944     ma_sub_r21 = 0
945     !----------------------
946     END FUNCTION ma_sub_r21
947    
948     !************************************************
949    
950     INTEGER FUNCTION ma_subi_r21(nb, x, s, nbo, y)
951     INTEGER :: nb(2), nbo
952     REAL :: x(nb(1), nb(2)), s, y(nbo)
953    
954     INTEGER :: i, j, ij
955     !---------------------------------------------------------------------
956     ij = 0
957     DO j=1, nb(2)
958     DO i=1, nb(1)
959     ij = ij+1
960     y(ij) = s-x(i, j)
961     ENDDO
962     ENDDO
963    
964     nbo = nb(1)*nb(2)
965     ma_subi_r21 = 0
966     !-----------------------
967     END FUNCTION ma_subi_r21
968    
969     !************************************************
970    
971     INTEGER FUNCTION ma_mult_r21(nb, x, s, nbo, y)
972     INTEGER :: nb(2), nbo
973     REAL :: x(nb(1), nb(2)), s, y(nbo)
974    
975     INTEGER :: i, j, ij
976     !---------------------------------------------------------------------
977     ij = 0
978     DO j=1, nb(2)
979     DO i=1, nb(1)
980     ij = ij+1
981     y(ij) = x(i, j)*s
982     ENDDO
983     ENDDO
984    
985     nbo = nb(1)*nb(2)
986     ma_mult_r21 = 0
987     !-----------------------
988     END FUNCTION ma_mult_r21
989    
990     !************************************************
991    
992     INTEGER FUNCTION ma_div_r21(nb, x, s, nbo, y)
993     INTEGER :: nb(2), nbo
994     REAL :: x(nb(1), nb(2)), s, y(nbo)
995    
996     INTEGER :: i, j, ij
997     !---------------------------------------------------------------------
998     ij = 0
999     DO j=1, nb(2)
1000     DO i=1, nb(1)
1001     ij = ij+1
1002     y(ij) = x(i, j)/s
1003     ENDDO
1004     ENDDO
1005    
1006     nbo = nb(1)*nb(2)
1007     ma_div_r21 = 0
1008     !----------------------
1009     END FUNCTION ma_div_r21
1010    
1011     !************************************************
1012    
1013     INTEGER FUNCTION ma_divi_r21(nb, x, s, nbo, y)
1014     INTEGER :: nb(2), nbo
1015     REAL :: x(nb(1), nb(2)), s, y(nbo)
1016    
1017     INTEGER :: i, j, ij
1018     !---------------------------------------------------------------------
1019     ij = 0
1020     DO j=1, nb(2)
1021     DO i=1, nb(1)
1022     ij = ij+1
1023     y(ij) = s/x(i, j)
1024     ENDDO
1025     ENDDO
1026    
1027     nbo = nb(1)*nb(2)
1028     ma_divi_r21 = 0
1029     !-----------------------
1030     END FUNCTION ma_divi_r21
1031    
1032     !************************************************
1033    
1034     INTEGER FUNCTION ma_power_r21(nb, x, s, nbo, y)
1035     INTEGER :: nb(2), nbo
1036     REAL :: x(nb(1), nb(2)), s, y(nbo)
1037    
1038     INTEGER :: i, j, ij
1039     !---------------------------------------------------------------------
1040     ij = 0
1041     DO j=1, nb(2)
1042     DO i=1, nb(1)
1043     ij = ij+1
1044     y(ij) = x(i, j) ** s
1045     ENDDO
1046     ENDDO
1047    
1048     nbo = nb(1)*nb(2)
1049     ma_power_r21 = 0
1050     !------------------------
1051     END FUNCTION ma_power_r21
1052    
1053     !************************************************
1054    
1055     INTEGER FUNCTION ma_fumin_r21(nb, x, s, nbo, y)
1056     INTEGER :: nb(2), nbo
1057     REAL :: x(nb(1), nb(2)), s, y(nbo)
1058    
1059     INTEGER :: i, j, ij
1060     !---------------------------------------------------------------------
1061     ij = 0
1062     DO j=1, nb(2)
1063     DO i=1, nb(1)
1064     ij = ij+1
1065     y(ij) = MIN(x(i, j), s)
1066     ENDDO
1067     ENDDO
1068    
1069     nbo = nb(1)*nb(2)
1070     ma_fumin_r21 = 0
1071     !------------------------
1072     END FUNCTION ma_fumin_r21
1073    
1074     !************************************************
1075    
1076     INTEGER FUNCTION ma_fumax_r21(nb, x, s, nbo, y)
1077     INTEGER :: nb(2), nbo
1078     REAL :: x(nb(1), nb(2)), s, y(nbo)
1079    
1080     INTEGER :: i, j, ij
1081     !---------------------------------------------------------------------
1082     ij = 0
1083     DO j=1, nb(2)
1084     DO i=1, nb(1)
1085     ij = ij+1
1086     y(ij) = MAX(x(i, j), s)
1087     ENDDO
1088     ENDDO
1089    
1090     nbo = nb(1)*nb(2)
1091     ma_fumax_r21 = 0
1092     !------------------------
1093     END FUNCTION ma_fumax_r21
1094    
1095     !************************************************
1096    
1097     INTEGER FUNCTION ma_fuscat_r21(nb, x, nbi, ind, miss_val, nbo, y)
1098     INTEGER :: nb(2), nbo, nbi
1099     INTEGER :: ind(nbi)
1100     REAL :: x(nb(1), nb(2)), miss_val, y(nbo)
1101    
1102     INTEGER :: i, j, ij, ii, ipos
1103     !---------------------------------------------------------------------
1104     ma_fuscat_r21 = 0
1105    
1106     y(1:nbo) = miss_val
1107    
1108     IF (nbi <= nb(1)*nb(2)) THEN
1109     ipos = 0
1110     DO ij=1, nbi
1111     IF (ind(ij) <= nbo .AND. ind(ij) > 0) THEN
1112     ipos = ipos+1
1113     j = ((ipos-1)/nb(1))+1
1114     i = (ipos-(j-1)*nb(1))
1115     y(ind(ij)) = x(i, j)
1116     ELSE
1117     IF (ind(ij) > nbo) ma_fuscat_r21 = ma_fuscat_r21+1
1118     ENDIF
1119     ENDDO
1120     !-- Repeat the data if needed
1121     IF (MINVAL(ind) < 0) THEN
1122     DO i=1, nbi
1123     IF (ind(i) <= 0) THEN
1124     DO ii=1, ABS(ind(i))-1
1125     IF (ind(i+1)+ii <= nbo) THEN
1126     y(ind(i+1)+ii) = y(ind(i+1))
1127     ELSE
1128     ma_fuscat_r21 = ma_fuscat_r21+1
1129     ENDIF
1130     ENDDO
1131     ENDIF
1132     ENDDO
1133     ENDIF
1134     ELSE
1135     ma_fuscat_r21 = 1
1136     ENDIF
1137     !-------------------------
1138     END FUNCTION ma_fuscat_r21
1139    
1140     !************************************************
1141    
1142     INTEGER FUNCTION ma_fugath_r21(nb, x, nbi, ind, miss_val, nbo, y)
1143     INTEGER :: nb(2), nbo, nbi
1144     INTEGER :: ind(nbi)
1145     REAL :: x(nb(1), nb(2)), miss_val, y(nbo)
1146    
1147     INTEGER :: i, j, ij, ipos
1148     !---------------------------------------------------------------------
1149     IF (nbi <= nbo) THEN
1150     ma_fugath_r21 = 0
1151     y(1:nbo) = miss_val
1152     ipos = 0
1153     DO ij=1, nbi
1154     IF (ipos+1 <= nbo) THEN
1155     IF (ind(ij) > 0) THEN
1156     j = ((ind(ij)-1)/nb(1))+1
1157     i = (ind(ij)-(j-1)*nb(1))
1158     ipos = ipos+1
1159     y(ipos) = x(i, j)
1160     ENDIF
1161     ELSE
1162     IF (ipos+1 > nbo) ma_fugath_r21 = ma_fugath_r21+1
1163     ENDIF
1164     ENDDO
1165     ELSE
1166     ma_fugath_r21 = 1
1167     ENDIF
1168     nbo = ipos
1169     !-------------------------
1170     END FUNCTION ma_fugath_r21
1171    
1172     !************************************************
1173    
1174     INTEGER FUNCTION ma_fufill_r21(nb, x, nbi, ind, miss_val, nbo, y)
1175     INTEGER :: nb(2), nbo, nbi
1176     INTEGER :: ind(nbi)
1177     REAL :: x(nb(1), nb(2)), miss_val, y(nbo)
1178    
1179     INTEGER :: i, j, ij, ii, ipos
1180     !---------------------------------------------------------------------
1181     ma_fufill_r21 = 0
1182    
1183     IF (nbi <= nb(1)*nb(2)) THEN
1184     ipos = 0
1185     DO ij=1, nbi
1186     IF (ind(ij) <= nbo .AND. ind(ij) > 0) THEN
1187     ipos = ipos+1
1188     j = ((ipos-1)/nb(1))+1
1189     i = (ipos-(j-1)*nb(1))
1190     y(ind(ij)) = x(i, j)
1191     ELSE
1192     IF (ind(ij) > nbo) ma_fufill_r21 = ma_fufill_r21+1
1193     ENDIF
1194     ENDDO
1195     !-- Repeat the data if needed
1196     IF (MINVAL(ind) < 0) THEN
1197     DO i=1, nbi
1198     IF (ind(i) <= 0) THEN
1199     DO ii=1, ABS(ind(i))-1
1200     IF (ind(i+1)+ii <= nbo) THEN
1201     y(ind(i+1)+ii) = y(ind(i+1))
1202     ELSE
1203     ma_fufill_r21 = ma_fufill_r21+1
1204     ENDIF
1205     ENDDO
1206     ENDIF
1207     ENDDO
1208     ENDIF
1209     ELSE
1210     ma_fufill_r21 = 1
1211     ENDIF
1212     !-------------------------
1213     END FUNCTION ma_fufill_r21
1214    
1215     !************************************************
1216    
1217     INTEGER FUNCTION ma_fucoll_r21(nb, x, nbi, ind, miss_val, nbo, y)
1218     INTEGER :: nb(2), nbo, nbi
1219     INTEGER :: ind(nbi)
1220     REAL :: x(nb(1), nb(2)), miss_val, y(nbo)
1221    
1222     INTEGER :: i, j, ij, ipos
1223     !---------------------------------------------------------------------
1224     IF (nbi <= nbo) THEN
1225     ma_fucoll_r21 = 0
1226     ipos = 0
1227     DO ij=1, nbi
1228     IF (ipos+1 <= nbo) THEN
1229     IF (ind(ij) > 0) THEN
1230     j = ((ind(ij)-1)/nb(1))+1
1231     i = (ind(ij)-(j-1)*nb(1))
1232     ipos = ipos+1
1233     y(ipos) = x(i, j)
1234     ENDIF
1235     ELSE
1236     IF (ipos+1 > nbo) ma_fucoll_r21 = ma_fucoll_r21+1
1237     ENDIF
1238     ENDDO
1239     ELSE
1240     ma_fucoll_r21 = 1
1241     ENDIF
1242     nbo = ipos
1243     !-------------------------
1244     END FUNCTION ma_fucoll_r21
1245    
1246     !************************************************
1247    
1248     INTEGER FUNCTION ma_fuundef_r21(nb, x, nbi, ind, miss_val, nbo, y)
1249     INTEGER :: nb(2), nbo, nbi
1250     INTEGER :: ind(nbi)
1251     REAL :: x(nb(1), nb(2)), miss_val, y(nbo)
1252    
1253     INTEGER :: i, j, ij
1254     !---------------------------------------------------------------------
1255     IF (nbi <= nbo .AND. nbo == nb(1)*nb(2)) THEN
1256     ma_fuundef_r21 = 0
1257     DO ij=1, nbo
1258     j = ((ij-1)/nb(1))+1
1259     i = (ij-(j-1)*nb(1))
1260     y(ij) = x(i, j)
1261     ENDDO
1262     DO i=1, nbi
1263     IF (ind(i) <= nbo .AND. ind(i) > 0) THEN
1264     y(ind(i)) = miss_val
1265     ELSE
1266     IF (ind(i) > nbo) ma_fuundef_r21 = ma_fuundef_r21+1
1267     ENDIF
1268     ENDDO
1269     ELSE
1270     ma_fuundef_r21 = 1
1271     ENDIF
1272     !--------------------------
1273     END FUNCTION ma_fuundef_r21
1274    
1275     !************************************************
1276    
1277     INTEGER FUNCTION ma_fuonly_r21(nb, x, nbi, ind, miss_val, nbo, y)
1278     INTEGER :: nb(2), nbo, nbi
1279     INTEGER :: ind(nbi)
1280     REAL :: x(nb(1), nb(2)), miss_val, y(nbo)
1281    
1282     INTEGER :: i, j, ij
1283     !---------------------------------------------------------------------
1284     IF ( (nbi <= nbo).AND.(nbo == nb(1)*nb(2)) &
1285     & .AND.ALL(ind(1:nbi) <= nbo) ) THEN
1286     ma_fuonly_r21 = 0
1287     y(1:nbo) = miss_val
1288     DO ij=1, nbi
1289     IF (ind(ij) > 0) THEN
1290     j = ((ind(ij)-1)/nb(1))+1
1291     i = (ind(ij)-(j-1)*nb(1))
1292     y(ind(ij)) = x(i, j)
1293     ENDIF
1294     ENDDO
1295     ELSE
1296     ma_fuonly_r21 = 1
1297     ENDIF
1298     !-------------------------
1299     END FUNCTION ma_fuonly_r21
1300    
1301     !************************************************
1302    
1303     !************************************************
1304    
1305     !=== FUNCTIONS (only one argument)
1306     !-
1307     INTEGER FUNCTION ma_sin_r31(nb, x, nbo, y)
1308     INTEGER :: nb(3), nbo, i, j, k, ij
1309     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1310     !---------------------------------------------------------------------
1311     ij = 0
1312     DO k=1, nb(3)
1313     DO j=1, nb(2)
1314     DO i=1, nb(1)
1315     ij = ij+1
1316     y(ij) = SIN(x(i, j, k))
1317     ENDDO
1318     ENDDO
1319     ENDDO
1320    
1321     nbo = nb(1)*nb(2)*nb(3)
1322     ma_sin_r31 = 0
1323     !----------------------
1324     END FUNCTION ma_sin_r31
1325    
1326     !************************************************
1327    
1328     INTEGER FUNCTION ma_cos_r31(nb, x, nbo, y)
1329     INTEGER :: nb(3), nbo, i, j, k, ij
1330     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1331     !---------------------------------------------------------------------
1332     ij = 0
1333     DO k=1, nb(3)
1334     DO j=1, nb(2)
1335     DO i=1, nb(1)
1336     ij = ij+1
1337     y(ij) = COS(x(i, j, k))
1338     ENDDO
1339     ENDDO
1340     ENDDO
1341    
1342     nbo = nb(1)*nb(2)*nb(3)
1343     ma_cos_r31 = 0
1344     !----------------------
1345     END FUNCTION ma_cos_r31
1346    
1347     !************************************************
1348    
1349     INTEGER FUNCTION ma_tan_r31(nb, x, nbo, y)
1350     INTEGER :: nb(3), nbo, i, j, k, ij
1351     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1352     !---------------------------------------------------------------------
1353     ij = 0
1354     DO k=1, nb(3)
1355     DO j=1, nb(2)
1356     DO i=1, nb(1)
1357     ij = ij+1
1358     y(ij) = TAN(x(i, j, k))
1359     ENDDO
1360     ENDDO
1361     ENDDO
1362    
1363     nbo = nb(1)*nb(2)*nb(3)
1364     ma_tan_r31 = 0
1365     !----------------------
1366     END FUNCTION ma_tan_r31
1367    
1368     !************************************************
1369    
1370     INTEGER FUNCTION ma_asin_r31(nb, x, nbo, y)
1371     INTEGER :: nb(3), nbo, i, j, k, ij
1372     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1373     !---------------------------------------------------------------------
1374     ij = 0
1375     DO k=1, nb(3)
1376     DO j=1, nb(2)
1377     DO i=1, nb(1)
1378     ij = ij+1
1379     y(ij) = ASIN(x(i, j, k))
1380     ENDDO
1381     ENDDO
1382     ENDDO
1383    
1384     nbo = nb(1)*nb(2)*nb(3)
1385     ma_asin_r31 = 0
1386     !-----------------------
1387     END FUNCTION ma_asin_r31
1388    
1389     !************************************************
1390    
1391     INTEGER FUNCTION ma_acos_r31(nb, x, nbo, y)
1392     INTEGER :: nb(3), nbo, i, j, k, ij
1393     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1394     !---------------------------------------------------------------------
1395     ij = 0
1396     DO k=1, nb(3)
1397     DO j=1, nb(2)
1398     DO i=1, nb(1)
1399     ij = ij+1
1400     y(ij) = ACOS(x(i, j, k))
1401     ENDDO
1402     ENDDO
1403     ENDDO
1404    
1405     nbo = nb(1)*nb(2)*nb(3)
1406     ma_acos_r31 = 0
1407     !-----------------------
1408     END FUNCTION ma_acos_r31
1409    
1410     !************************************************
1411    
1412     INTEGER FUNCTION ma_atan_r31(nb, x, nbo, y)
1413     INTEGER :: nb(3), nbo, i, j, k, ij
1414     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1415     !---------------------------------------------------------------------
1416     ij = 0
1417     DO k=1, nb(3)
1418     DO j=1, nb(2)
1419     DO i=1, nb(1)
1420     ij = ij+1
1421     y(ij) = ATAN(x(i, j, k))
1422     ENDDO
1423     ENDDO
1424     ENDDO
1425    
1426     nbo = nb(1)*nb(2)*nb(3)
1427     ma_atan_r31 = 0
1428     !-----------------------
1429     END FUNCTION ma_atan_r31
1430    
1431     !************************************************
1432    
1433     INTEGER FUNCTION ma_exp_r31(nb, x, nbo, y)
1434     INTEGER :: nb(3), nbo, i, j, k, ij
1435     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1436     !---------------------------------------------------------------------
1437     ij = 0
1438     DO k=1, nb(3)
1439     DO j=1, nb(2)
1440     DO i=1, nb(1)
1441     ij = ij+1
1442     y(ij) = EXP(x(i, j, k))
1443     ENDDO
1444     ENDDO
1445     ENDDO
1446    
1447     nbo = nb(1)*nb(2)*nb(3)
1448     ma_exp_r31 = 0
1449     !----------------------
1450     END FUNCTION ma_exp_r31
1451    
1452     !************************************************
1453    
1454     INTEGER FUNCTION ma_alog_r31(nb, x, nbo, y)
1455     INTEGER :: nb(3), nbo, i, j, k, ij
1456     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1457     !---------------------------------------------------------------------
1458     ij = 0
1459     DO k=1, nb(3)
1460     DO j=1, nb(2)
1461     DO i=1, nb(1)
1462     ij = ij+1
1463     y(ij) = ALOG(x(i, j, k))
1464     ENDDO
1465     ENDDO
1466     ENDDO
1467    
1468     nbo = nb(1)*nb(2)*nb(3)
1469     ma_alog_r31 = 0
1470     !-----------------------
1471     END FUNCTION ma_alog_r31
1472    
1473     !************************************************
1474    
1475     INTEGER FUNCTION ma_sqrt_r31(nb, x, nbo, y)
1476     INTEGER :: nb(3), nbo, i, j, k, ij
1477     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1478     !---------------------------------------------------------------------
1479     ij = 0
1480     DO k=1, nb(3)
1481     DO j=1, nb(2)
1482     DO i=1, nb(1)
1483     ij = ij+1
1484     y(ij) = SQRT(x(i, j, k))
1485     ENDDO
1486     ENDDO
1487     ENDDO
1488    
1489     nbo = nb(1)*nb(2)*nb(3)
1490     ma_sqrt_r31 = 0
1491     !-----------------------
1492     END FUNCTION ma_sqrt_r31
1493    
1494     !************************************************
1495    
1496     INTEGER FUNCTION ma_abs_r31(nb, x, nbo, y)
1497     INTEGER :: nb(3), nbo, i, j, k, ij
1498     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1499     !---------------------------------------------------------------------
1500     ij = 0
1501     DO k=1, nb(3)
1502     DO j=1, nb(2)
1503     DO i=1, nb(1)
1504     ij = ij+1
1505     y(ij) = ABS(x(i, j, k))
1506     ENDDO
1507     ENDDO
1508     ENDDO
1509    
1510     nbo = nb(1)*nb(2)*nb(3)
1511     ma_abs_r31 = 0
1512     !----------------------
1513     END FUNCTION ma_abs_r31
1514    
1515     !************************************************
1516    
1517     INTEGER FUNCTION ma_chs_r31(nb, x, nbo, y)
1518     INTEGER :: nb(3), nbo, i, j, k, ij
1519     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1520     !---------------------------------------------------------------------
1521     ij = 0
1522     DO k=1, nb(3)
1523     DO j=1, nb(2)
1524     DO i=1, nb(1)
1525     ij = ij+1
1526     y(ij) = x(i, j, k)*(-1.)
1527     ENDDO
1528     ENDDO
1529     ENDDO
1530    
1531     nbo = nb(1)*nb(2)*nb(3)
1532     ma_chs_r31 = 0
1533     !----------------------
1534     END FUNCTION ma_chs_r31
1535    
1536     !************************************************
1537    
1538     INTEGER FUNCTION ma_cels_r31(nb, x, nbo, y)
1539     INTEGER :: nb(3), nbo, i, j, k, ij
1540     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1541     !---------------------------------------------------------------------
1542     ij = 0
1543     DO k=1, nb(3)
1544     DO j=1, nb(2)
1545     DO i=1, nb(1)
1546     ij = ij+1
1547     y(ij) = x(i, j, k)-273.15
1548     ENDDO
1549     ENDDO
1550     ENDDO
1551    
1552     nbo = nb(1)*nb(2)*nb(3)
1553     ma_cels_r31 = 0
1554     !-----------------------
1555     END FUNCTION ma_cels_r31
1556    
1557     !************************************************
1558    
1559     INTEGER FUNCTION ma_kelv_r31(nb, x, nbo, y)
1560     INTEGER :: nb(3), nbo, i, j, k, ij
1561     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1562     !---------------------------------------------------------------------
1563     ij = 0
1564     DO k=1, nb(3)
1565     DO j=1, nb(2)
1566     DO i=1, nb(1)
1567     ij = ij+1
1568     y(ij) = x(i, j, k)+273.15
1569     ENDDO
1570     ENDDO
1571     ENDDO
1572    
1573     nbo = nb(1)*nb(2)*nb(3)
1574     ma_kelv_r31 = 0
1575     !-----------------------
1576     END FUNCTION ma_kelv_r31
1577    
1578     !************************************************
1579    
1580     INTEGER FUNCTION ma_deg_r31(nb, x, nbo, y)
1581     INTEGER :: nb(3), nbo, i, j, k, ij
1582     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1583     !---------------------------------------------------------------------
1584     ij = 0
1585     DO k=1, nb(3)
1586     DO j=1, nb(2)
1587     DO i=1, nb(1)
1588     ij = ij+1
1589     y(ij) = x(i, j, k)*57.29577951
1590     ENDDO
1591     ENDDO
1592     ENDDO
1593    
1594     nbo = nb(1)*nb(2)*nb(3)
1595     ma_deg_r31 = 0
1596     !----------------------
1597     END FUNCTION ma_deg_r31
1598    
1599     !************************************************
1600    
1601     INTEGER FUNCTION ma_rad_r31(nb, x, nbo, y)
1602     INTEGER :: nb(3), nbo, i, j, k, ij
1603     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1604     !---------------------------------------------------------------------
1605     ij = 0
1606     DO k=1, nb(3)
1607     DO j=1, nb(2)
1608     DO i=1, nb(1)
1609     ij = ij+1
1610     y(ij) = x(i, j, k)*0.01745329252
1611     ENDDO
1612     ENDDO
1613     ENDDO
1614    
1615     nbo = nb(1)*nb(2)*nb(3)
1616     ma_rad_r31 = 0
1617     !----------------------
1618     END FUNCTION ma_rad_r31
1619    
1620     !************************************************
1621    
1622     INTEGER FUNCTION ma_ident_r31(nb, x, nbo, y)
1623     INTEGER :: nb(3), nbo, i, j, k, ij
1624     REAL :: x(nb(1), nb(2), nb(3)), y(nbo)
1625     !---------------------------------------------------------------------
1626     ij = 0
1627     DO k=1, nb(3)
1628     DO j=1, nb(2)
1629     DO i=1, nb(1)
1630     ij = ij+1
1631     y(ij) = x(i, j, k)
1632     ENDDO
1633     ENDDO
1634     ENDDO
1635    
1636     nbo = nb(1)*nb(2)*nb(3)
1637     ma_ident_r31 = 0
1638     !------------------------
1639     END FUNCTION ma_ident_r31
1640     !-
1641     !=== OPERATIONS (two argument)
1642     !-
1643     INTEGER FUNCTION ma_add_r31(nb, x, s, nbo, y)
1644     INTEGER :: nb(3), nbo
1645     REAL :: x(nb(1), nb(2), nb(3)), s, y(nbo)
1646    
1647     INTEGER :: i, j, k, ij
1648     !---------------------------------------------------------------------
1649     ij = 0
1650     DO k=1, nb(3)
1651     DO j=1, nb(2)
1652     DO i=1, nb(1)
1653     ij = ij+1
1654     y(ij) = x(i, j, k)+s
1655     ENDDO
1656     ENDDO
1657     ENDDO
1658    
1659     nbo = nb(1)*nb(2)*nb(3)
1660     ma_add_r31 = 0
1661     !----------------------
1662     END FUNCTION ma_add_r31
1663    
1664     !************************************************
1665    
1666     INTEGER FUNCTION ma_sub_r31(nb, x, s, nbo, y)
1667     INTEGER :: nb(3), nbo
1668     REAL :: x(nb(1), nb(2), nb(3)), s, y(nbo)
1669    
1670     INTEGER :: i, j, k, ij
1671     !---------------------------------------------------------------------
1672     ij = 0
1673     DO k=1, nb(3)
1674     DO j=1, nb(2)
1675     DO i=1, nb(1)
1676     ij = ij+1
1677     y(ij) = x(i, j, k)-s
1678     ENDDO
1679     ENDDO
1680     ENDDO
1681    
1682     nbo = nb(1)*nb(2)*nb(3)
1683     ma_sub_r31 = 0
1684     !----------------------
1685     END FUNCTION ma_sub_r31
1686    
1687     !************************************************
1688    
1689     INTEGER FUNCTION ma_subi_r31(nb, x, s, nbo, y)
1690     INTEGER :: nb(3), nbo
1691     REAL :: x(nb(1), nb(2), nb(3)), s, y(nbo)
1692    
1693     INTEGER :: i, j, k, ij
1694     !---------------------------------------------------------------------
1695     ij = 0
1696     DO k=1, nb(3)
1697     DO j=1, nb(2)
1698     DO i=1, nb(1)
1699     ij = ij+1
1700     y(ij) = s-x(i, j, k)
1701     ENDDO
1702     ENDDO
1703     ENDDO
1704    
1705     nbo = nb(1)*nb(2)*nb(3)
1706     ma_subi_r31 = 0
1707     !-----------------------
1708     END FUNCTION ma_subi_r31
1709    
1710     !************************************************
1711    
1712     INTEGER FUNCTION ma_mult_r31(nb, x, s, nbo, y)
1713     INTEGER :: nb(3), nbo
1714     REAL :: x(nb(1), nb(2), nb(3)), s, y(nbo)
1715    
1716     INTEGER :: i, j, k, ij
1717     !---------------------------------------------------------------------
1718     ij = 0
1719     DO k=1, nb(3)
1720     DO j=1, nb(2)
1721     DO i=1, nb(1)
1722     ij = ij+1
1723     y(ij) = x(i, j, k)*s
1724     ENDDO
1725     ENDDO
1726     ENDDO
1727    
1728     nbo = nb(1)*nb(2)*nb(3)
1729     ma_mult_r31 = 0
1730     !-----------------------
1731     END FUNCTION ma_mult_r31
1732    
1733     !************************************************
1734    
1735     INTEGER FUNCTION ma_div_r31(nb, x, s, nbo, y)
1736     INTEGER :: nb(3), nbo
1737     REAL :: x(nb(1), nb(2), nb(3)), s, y(nbo)
1738    
1739     INTEGER :: i, j, k, ij
1740     !---------------------------------------------------------------------
1741     ij = 0
1742     DO k=1, nb(3)
1743     DO j=1, nb(2)
1744     DO i=1, nb(1)
1745     ij = ij+1
1746     y(ij) = x(i, j, k)/s
1747     ENDDO
1748     ENDDO
1749     ENDDO
1750    
1751     nbo = nb(1)*nb(2)*nb(3)
1752     ma_div_r31 = 0
1753     !----------------------
1754     END FUNCTION ma_div_r31
1755    
1756     !************************************************
1757    
1758     INTEGER FUNCTION ma_divi_r31(nb, x, s, nbo, y)
1759     INTEGER :: nb(3), nbo
1760     REAL :: x(nb(1), nb(2), nb(3)), s, y(nbo)
1761    
1762     INTEGER :: i, j, k, ij
1763     !---------------------------------------------------------------------
1764     ij = 0
1765     DO k=1, nb(3)
1766     DO j=1, nb(2)
1767     DO i=1, nb(1)
1768     ij = ij+1
1769     y(ij) = s/x(i, j, k)
1770     ENDDO
1771     ENDDO
1772     ENDDO
1773    
1774     nbo = nb(1)*nb(2)*nb(3)
1775     ma_divi_r31 = 0
1776     !-----------------------
1777     END FUNCTION ma_divi_r31
1778    
1779     !************************************************
1780    
1781     INTEGER FUNCTION ma_power_r31(nb, x, s, nbo, y)
1782     INTEGER :: nb(3), nbo
1783     REAL :: x(nb(1), nb(2), nb(3)), s, y(nbo)
1784    
1785     INTEGER :: i, j, k, ij
1786     !---------------------------------------------------------------------
1787     ij = 0
1788     DO k=1, nb(3)
1789     DO j=1, nb(2)
1790     DO i=1, nb(1)
1791     ij = ij+1
1792     y(ij) = x(i, j, k)**s
1793     ENDDO
1794     ENDDO
1795     ENDDO
1796    
1797     nbo = nb(1)*nb(2)*nb(3)
1798     ma_power_r31 = 0
1799     !------------------------
1800     END FUNCTION ma_power_r31
1801    
1802     !************************************************
1803    
1804     INTEGER FUNCTION ma_fumin_r31(nb, x, s, nbo, y)
1805     INTEGER :: nb(3), nbo
1806     REAL :: x(nb(1), nb(2), nb(3)), s, y(nbo)
1807    
1808     INTEGER :: i, j, k, ij
1809     !---------------------------------------------------------------------
1810     ij = 0
1811     DO k=1, nb(3)
1812     DO j=1, nb(2)
1813     DO i=1, nb(1)
1814     ij = ij+1
1815     y(ij) = MIN(x(i, j, k), s)
1816     ENDDO
1817     ENDDO
1818     ENDDO
1819    
1820     nbo = nb(1)*nb(2)*nb(3)
1821     ma_fumin_r31 = 0
1822     !------------------------
1823     END FUNCTION ma_fumin_r31
1824    
1825     !************************************************
1826    
1827     INTEGER FUNCTION ma_fumax_r31(nb, x, s, nbo, y)
1828     INTEGER :: nb(3), nbo
1829     REAL :: x(nb(1), nb(2), nb(3)), s, y(nbo)
1830    
1831     INTEGER :: i, j, k, ij
1832     !---------------------------------------------------------------------
1833     ij = 0
1834     DO k=1, nb(3)
1835     DO j=1, nb(2)
1836     DO i=1, nb(1)
1837     ij = ij+1
1838     y(ij) = MAX(x(i, j, k), s)
1839     ENDDO
1840     ENDDO
1841     ENDDO
1842    
1843     nbo = nb(1)*nb(2)*nb(3)
1844     ma_fumax_r31 = 0
1845     !------------------------
1846     END FUNCTION ma_fumax_r31
1847    
1848     !************************************************
1849    
1850     INTEGER FUNCTION ma_fuscat_r31(nb, x, nbi, ind, miss_val, nbo, y)
1851     INTEGER :: nb(3), nbo, nbi
1852     INTEGER :: ind(nbi)
1853     REAL :: x(nb(1), nb(2), nb(3)), miss_val, y(nbo)
1854    
1855     INTEGER :: i, j, k, ij, ii, ipos, ipp, isb
1856     !---------------------------------------------------------------------
1857     ma_fuscat_r31 = 0
1858    
1859     y(1:nbo) = miss_val
1860    
1861     IF (nbi <= nb(1)*nb(2)*nb(3)) THEN
1862     ipos = 0
1863     isb = nb(1)*nb(2)
1864     DO ij=1, nbi
1865     IF (ind(ij) <= nbo .AND. ind(ij) > 0) THEN
1866     ipos = ipos+1
1867     k = ((ipos-1)/isb)+1
1868     ipp = ipos-(k-1)*isb
1869     j = ((ipp-1)/nb(1))+1
1870     i = (ipp-(j-1)*nb(1))
1871     y(ind(ij)) = x(i, j, k)
1872     ELSE
1873     IF (ind(ij) > nbo) ma_fuscat_r31 = ma_fuscat_r31+1
1874     ENDIF
1875     ENDDO
1876     !-- Repeat the data if needed
1877     IF (MINVAL(ind) < 0) THEN
1878     DO i=1, nbi
1879     IF (ind(i) <= 0) THEN
1880     DO ii=1, ABS(ind(i))-1
1881     IF (ind(i+1)+ii <= nbo) THEN
1882     y(ind(i+1)+ii) = y(ind(i+1))
1883     ELSE
1884     ma_fuscat_r31 = ma_fuscat_r31+1
1885     ENDIF
1886     ENDDO
1887     ENDIF
1888     ENDDO
1889     ENDIF
1890     ELSE
1891     ma_fuscat_r31 = 1
1892     ENDIF
1893     !-------------------------
1894     END FUNCTION ma_fuscat_r31
1895    
1896     !************************************************
1897    
1898     INTEGER FUNCTION ma_fugath_r31(nb, x, nbi, ind, miss_val, nbo, y)
1899     INTEGER :: nb(3), nbo, nbi
1900     INTEGER :: ind(nbi)
1901     REAL :: x(nb(1), nb(2), nb(3)), miss_val, y(nbo)
1902    
1903     INTEGER :: i, j, k, ij, ipos, ipp, isb
1904     !---------------------------------------------------------------------
1905     IF (nbi <= nbo) THEN
1906     ma_fugath_r31 = 0
1907     y(1:nbo) = miss_val
1908     ipos = 0
1909     isb = nb(1)*nb(2)
1910     DO ij=1, nbi
1911     IF (ipos+1 <= nbo) THEN
1912     IF (ind(ij) > 0) THEN
1913     k = ((ind(ij)-1)/isb)+1
1914     ipp = ind(ij)-(k-1)*isb
1915     j = ((ipp-1)/nb(1))+1
1916     i = (ipp-(j-1)*nb(1))
1917     ipos = ipos+1
1918     y(ipos) = x(i, j, k)
1919     ENDIF
1920     ELSE
1921     IF (ipos+1 > nbo) ma_fugath_r31 = ma_fugath_r31+1
1922     ENDIF
1923     ENDDO
1924     ELSE
1925     ma_fugath_r31 = 1
1926     ENDIF
1927     nbo = ipos
1928     !-------------------------
1929     END FUNCTION ma_fugath_r31
1930    
1931     !************************************************
1932    
1933     INTEGER FUNCTION ma_fufill_r31(nb, x, nbi, ind, miss_val, nbo, y)
1934     INTEGER :: nb(3), nbo, nbi
1935     INTEGER :: ind(nbi)
1936     REAL :: x(nb(1), nb(2), nb(3)), miss_val, y(nbo)
1937    
1938     INTEGER :: i, j, k, ij, ii, ipos, ipp, isb
1939     !---------------------------------------------------------------------
1940     ma_fufill_r31 = 0
1941     IF (nbi <= nb(1)*nb(2)*nb(3)) THEN
1942     ipos = 0
1943     isb = nb(1)*nb(2)
1944     DO ij=1, nbi
1945     IF (ind(ij) <= nbo .AND. ind(ij) > 0) THEN
1946     ipos = ipos+1
1947     k = ((ipos-1)/isb)+1
1948     ipp = ipos-(k-1)*isb
1949     j = ((ipp-1)/nb(1))+1
1950     i = (ipp-(j-1)*nb(1))
1951     y(ind(ij)) = x(i, j, k)
1952     ELSE
1953     IF (ind(ij) > nbo) ma_fufill_r31 = ma_fufill_r31+1
1954     ENDIF
1955     ENDDO
1956     !-- Repeat the data if needed
1957     IF (MINVAL(ind) < 0) THEN
1958     DO i=1, nbi
1959     IF (ind(i) <= 0) THEN
1960     DO ii=1, ABS(ind(i))-1
1961     IF (ind(i+1)+ii <= nbo) THEN
1962     y(ind(i+1)+ii) = y(ind(i+1))
1963     ELSE
1964     ma_fufill_r31 = ma_fufill_r31+1
1965     ENDIF
1966     ENDDO
1967     ENDIF
1968     ENDDO
1969     ENDIF
1970     ELSE
1971     ma_fufill_r31 = 1
1972     ENDIF
1973     !-------------------------
1974     END FUNCTION ma_fufill_r31
1975    
1976     !************************************************
1977    
1978     INTEGER FUNCTION ma_fucoll_r31(nb, x, nbi, ind, miss_val, nbo, y)
1979     INTEGER :: nb(3), nbo, nbi
1980     INTEGER :: ind(nbi)
1981     REAL :: x(nb(1), nb(2), nb(3)), miss_val, y(nbo)
1982    
1983     INTEGER :: i, j, k, ij, ipos, ipp, isb
1984     !---------------------------------------------------------------------
1985     IF (nbi <= nbo) THEN
1986     ma_fucoll_r31 = 0
1987     ipos = 0
1988     isb = nb(1)*nb(2)
1989     DO ij=1, nbi
1990     IF (ipos+1 <= nbo) THEN
1991     IF (ind(ij) > 0) THEN
1992     k = ((ind(ij)-1)/isb)+1
1993     ipp = ind(ij)-(k-1)*isb
1994     j = ((ipp-1)/nb(1))+1
1995     i = (ipp-(j-1)*nb(1))
1996     ipos = ipos+1
1997     y(ipos) = x(i, j, k)
1998     ENDIF
1999     ELSE
2000     IF (ipos+1 > nbo) ma_fucoll_r31 = ma_fucoll_r31+1
2001     ENDIF
2002     ENDDO
2003     ELSE
2004     ma_fucoll_r31 = 1
2005     ENDIF
2006     nbo = ipos
2007     !-------------------------
2008     END FUNCTION ma_fucoll_r31
2009    
2010     !************************************************
2011    
2012     INTEGER FUNCTION ma_fuundef_r31(nb, x, nbi, ind, miss_val, nbo, y)
2013     INTEGER :: nb(3), nbo, nbi
2014     INTEGER :: ind(nbi)
2015     REAL :: x(nb(1), nb(2), nb(3)), miss_val, y(nbo)
2016    
2017     INTEGER :: i, j, k, ij, ipp, isb
2018     !---------------------------------------------------------------------
2019     IF (nbi <= nbo .AND. nbo == nb(1)*nb(2)*nb(3)) THEN
2020     ma_fuundef_r31 = 0
2021     isb = nb(1)*nb(2)
2022     DO ij=1, nbo
2023     k = ((ij-1)/isb)+1
2024     ipp = ij-(k-1)*isb
2025     j = ((ipp-1)/nb(1))+1
2026     i = (ipp-(j-1)*nb(1))
2027     y(ij) = x(i, j, k)
2028     ENDDO
2029     DO i=1, nbi
2030     IF (ind(i) <= nbo .AND. ind(i) > 0) THEN
2031     y(ind(i)) = miss_val
2032     ELSE
2033     IF (ind(i) > nbo) ma_fuundef_r31 = ma_fuundef_r31+1
2034     ENDIF
2035     ENDDO
2036     ELSE
2037     ma_fuundef_r31 = 1
2038     ENDIF
2039     !--------------------------
2040     END FUNCTION ma_fuundef_r31
2041    
2042     !************************************************
2043    
2044     INTEGER FUNCTION ma_fuonly_r31(nb, x, nbi, ind, miss_val, nbo, y)
2045     INTEGER :: nb(3), nbo, nbi
2046     INTEGER :: ind(nbi)
2047     REAL :: x(nb(1), nb(2), nb(3)), miss_val, y(nbo)
2048    
2049     INTEGER :: i, j, k, ij, ipp, isb
2050     !---------------------------------------------------------------------
2051     IF ( (nbi <= nbo).AND.(nbo == nb(1)*nb(2)*nb(3)) &
2052     & .AND.ALL(ind(1:nbi) <= nbo) ) THEN
2053     ma_fuonly_r31 = 0
2054     y(1:nbo) = miss_val
2055     isb = nb(1)*nb(2)
2056     DO ij=1, nbi
2057     IF (ind(ij) > 0) THEN
2058     k = ((ind(ij)-1)/isb)+1
2059     ipp = ind(ij)-(k-1)*isb
2060     j = ((ipp-1)/nb(1))+1
2061     i = (ipp-(j-1)*nb(1))
2062     y(ind(ij)) = x(i, j, k)
2063     ENDIF
2064     ENDDO
2065     ELSE
2066     ma_fuonly_r31 = 1
2067     ENDIF
2068     !-------------------------
2069     END FUNCTION ma_fuonly_r31
2070    
2071     END MODULE mathop2

  ViewVC Help
Powered by ViewVC 1.1.21