source: LMDZ6/branches/Amaury_dev/libf/misc/lmdz_libmath.f90 @ 5201

Last change on this file since 5201 was 5159, checked in by abarral, 3 months ago

Put dimensions.h and paramet.h into modules

File size: 1.0 KB
RevLine 
[5116]1! Library for misc. useful math functions
2
3MODULE lmdz_libmath
4  IMPLICIT NONE; PRIVATE
[5122]5  PUBLIC ismin, ismax, minmax
[5116]6
7CONTAINS
8
9  function ismax(n, sx, incx)
10    INTEGER :: n, i, incx, ismax, ix
11    REAL :: sx((n - 1) * incx + 1), sxmax
12
13    ix = 1
14    ismax = 1
15    sxmax = sx(1)
[5158]16    DO i = 1, n - 1
[5116]17      ix = ix + incx
18      IF(sx(ix)>sxmax) THEN
19        sxmax = sx(ix)
20        ismax = i + 1
21      endif
22    END DO
23  END FUNCTION ismax
24
25
26  FUNCTION ismin(n, sx, incx)
27    INTEGER :: n, i, incx, ismin, ix
28    REAL :: sx((n - 1) * incx + 1), sxmin
[5159]29
[5116]30    ix = 1
31    ismin = 1
32    sxmin = sx(1)
33    DO i = 1, n - 1
34      ix = ix + incx
35      IF(sx(ix)<sxmin) THEN
36        sxmin = sx(ix)
37        ismin = i + 1
38      endif
39    ENDDO
40  END FUNCTION ismin
41
42  SUBROUTINE minmax(imax, xi, zmin, zmax)
[5159]43
[5116]44    !  P. Le Van
45
46    INTEGER :: imax
47    REAL :: xi(imax)
48    REAL :: zmin, zmax
49    INTEGER :: i
50
51    zmin = xi(1)
52    zmax = xi(1)
53
54    DO i = 2, imax
55      zmin = MIN(zmin, xi(i))
56      zmax = MAX(zmax, xi(i))
57    ENDDO
58
59  END SUBROUTINE minmax
60
61END MODULE lmdz_libmath
Note: See TracBrowser for help on using the repository browser.