SURFEX v8.1
General documentation of Surfex
get_ign_maskall.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 SUBROUTINE get_ign_maskall (UG, KNI, PX, PY, OTOT)
6 ! #######################################################
7 !!**** *GET_IGN_MASKALL* -
8 !!
9 !! PURPOSE
10 !! -------
11 !!
12  !!
13 !!** METHOD
14 !! ------
15 !!
16 !! EXTERNAL
17 !! --------
18 !!
19 !!
20 !! IMPLICIT ARGUMENTS
21 !! ------------------
22 !!
23 !! REFERENCE
24 !! ---------
25 !!
26 !!
27 !! AUTHOR
28 !! ------
29 !! S. Faroux *Meteo France*
30 !!
31 !! MODIFICATIONS
32 !! -------------
33 !! Original 06/2010
34 !! 07/2011 add specific computation for IGN grid (B. Decharme)
35 !-------------------------------------------------------------------------------
36 !
37 !
38 !
40 !
41 #ifdef SFX_OL
42 USE modd_io_surf_ol, ONLY: nmask_ign
43 #endif
44 !
46 !
47 USE yomhook ,ONLY : lhook, dr_hook
48 USE parkind1 ,ONLY : jprb
49 !
50 IMPLICIT NONE
51 !
52 TYPE(surf_atm_grid_t), INTENT(INOUT) :: UG
53 !
54 INTEGER, INTENT(IN) :: KNI
55 REAL,DIMENSION(:), INTENT(OUT) :: PX, PY
56 LOGICAL, INTENT(IN), OPTIONAL :: OTOT
57 !
58 REAL, DIMENSION(KNI) :: ZXX, ZYY
59 INTEGER :: JI, JJ, JK, JL
60 LOGICAL :: GTOT
61 REAL(KIND=JPRB) :: ZHOOK_HANDLE
62 !
63 IF (lhook) CALL dr_hook('GET_IGN_MASKALL',0,zhook_handle)
64 !
65 gtot = .true.
66 IF (PRESENT(otot)) gtot = otot
67 !
68 IF (ASSOCIATED(ug%XGRID_FULL_PAR).AND.gtot) THEN
69  CALL get_gridtype_ign(ug%XGRID_FULL_PAR,px=zxx,py=zyy,pxall=px,pyall=py)
70 ENDIF
71 IF (.NOT.gtot .AND. ASSOCIATED(ug%G%XGRID_PAR)) THEN
72  IF (ASSOCIATED(ug%XGRID_FULL_PAR)) THEN
73  CALL get_gridtype_ign(ug%XGRID_FULL_PAR,pxall=px,pyall=py)
74  CALL get_gridtype_ign(ug%G%XGRID_PAR,px=zxx,py=zyy)
75  ELSE
76  CALL get_gridtype_ign(ug%G%XGRID_PAR,px=zxx,py=zyy,pxall=px,pyall=py)
77  ENDIF
78 ENDIF
79 !
80 #ifdef SFX_OL
81 IF (.NOT.ALLOCATED(nmask_ign))THEN
82  ALLOCATE(nmask_ign(kni))
83  jl=0
84  DO jj=1,SIZE(py)
85  DO ji=1,SIZE(px)
86  jl=jl+1
87  DO jk=1,kni
88  IF((zxx(jk)==px(ji)).AND.(zyy(jk)==py(jj)))THEN
89  nmask_ign(jk) = jl
90  ENDIF
91  ENDDO
92  ENDDO
93  ENDDO
94 ENDIF
95 #endif
96 !
97 IF (lhook) CALL dr_hook('GET_IGN_MASKALL',1,zhook_handle)
98 !
99 END SUBROUTINE get_ign_maskall
subroutine get_gridtype_ign(PGRID_PAR, KLAMBERT, KL, PX, PY, PDX, PDY, KDIMX, KDIMY, PXALL, PYALL)
integer, parameter jprb
Definition: parkind1.F90:32
subroutine get_ign_maskall(UG, KNI, PX, PY, OTOT)
logical lhook
Definition: yomhook.F90:15
integer, dimension(:), allocatable nmask_ign