source: LMDZ5/branches/IPSLCM6.0.8/tools/Max_diff_nc_with_lib/NR_util/ifirstloc.f90

Last change on this file was 1910, checked in by Laurent Fairhead, 11 years ago

Merged trunk changes r1860:1909 into testing branch

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
File size: 770 bytes
Line 
1module ifirstloc_m
2
3  implicit none
4
5contains
6
7  INTEGER FUNCTION ifirstloc(mask)
8
9    ! Location of first true value in a logical array, returned as an
10    ! integer. Returns size(mask)+1 if mask has zero element or all
11    ! elements of mask are false. So the result is always >= 1.
12
13    ! See notes on programming choices.
14
15    LOGICAL, INTENT(IN):: mask(:)
16
17    ! Local:
18    integer n
19
20    !-------------------------------------------------------
21
22    n = size(mask)
23    ifirstloc = 1
24
25    if (n >= 1) then
26       do while (ifirstloc <= n - 1 .and. .not. mask(ifirstloc))
27          ifirstloc = ifirstloc + 1
28       end do
29       ! {1 <= ifirstloc <= n}
30       if (.not. mask(ifirstloc)) ifirstloc = n + 1
31    end if
32
33  END FUNCTION ifirstloc
34
35end module ifirstloc_m
Note: See TracBrowser for help on using the repository browser.