SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
pack_pgd_isba.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 ! #########
6  SUBROUTINE pack_pgd_isba (DTCO, IG, I, U, &
7  hprogram, &
8  paosip, paosim, paosjp, paosjm, &
9  pho2ip, pho2im, pho2jp, pho2jm, &
10  psso_slope )
11 ! ##############################################################
12 !
13 !!**** *PACK_PGD_ISBA* packs ISBA physiographic fields from all surface points to ISBA points
14 !!
15 !! PURPOSE
16 !! -------
17 !!
18 !! METHOD
19 !! ------
20 !!
21 !
22 !! EXTERNAL
23 !! --------
24 !!
25 !! IMPLICIT ARGUMENTS
26 !! ------------------
27 !!
28 !! REFERENCE
29 !! ---------
30 !!
31 !! AUTHOR
32 !! ------
33 !!
34 !! V. Masson Meteo-France
35 !!
36 !! MODIFICATION
37 !! ------------
38 !!
39 !! Original 03/2004
40 !! Escobar J. 08/02/2005 : bug declare ILU local variable
41 !!
42 !----------------------------------------------------------------------------
43 !
44 !* 0. DECLARATION
45 ! -----------
46 !
47 !
48 !
49 !
51 USE modd_isba_grid_n, ONLY : isba_grid_t
52 USE modd_isba_n, ONLY : isba_t
53 USE modd_surf_atm_n, ONLY : surf_atm_t
54 !
56 !
57 USE yomhook ,ONLY : lhook, dr_hook
58 USE parkind1 ,ONLY : jprb
59 !
60 USE modi_get_surf_mask_n
61 !
62 USE modi_get_type_dim_n
63 !
64 USE modi_get_luout
65 IMPLICIT NONE
66 !
67 !* 0.1 Declaration of arguments
68 ! ------------------------
69 !
70 !
71 TYPE(data_cover_t), INTENT(INOUT) :: dtco
72 TYPE(isba_grid_t), INTENT(INOUT) :: ig
73 TYPE(isba_t), INTENT(INOUT) :: i
74 TYPE(surf_atm_t), INTENT(INOUT) :: u
75 !
76  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! Type of program
77 REAL, DIMENSION(:), INTENT(IN) :: paosip ! A/S i+ on all surface points
78 REAL, DIMENSION(:), INTENT(IN) :: paosim ! A/S i- on all surface points
79 REAL, DIMENSION(:), INTENT(IN) :: paosjp ! A/S j+ on all surface points
80 REAL, DIMENSION(:), INTENT(IN) :: paosjm ! A/S j- on all surface points
81 REAL, DIMENSION(:), INTENT(IN) :: pho2ip ! h/2 i+ on all surface points
82 REAL, DIMENSION(:), INTENT(IN) :: pho2im ! h/2 i- on all surface points
83 REAL, DIMENSION(:), INTENT(IN) :: pho2jp ! h/2 j+ on all surface points
84 REAL, DIMENSION(:), INTENT(IN) :: pho2jm ! h/2 j- on all surface points
85 REAL, DIMENSION(:), INTENT(IN) :: psso_slope! subgrid slope on all surface points
86 !
87 !
88 !* 0.2 Declaration of local variables
89 ! ------------------------------
90 !
91 INTEGER :: ilu ! expected physical size of full surface array
92 INTEGER :: iluout ! output listing logical unit
93 INTEGER, DIMENSION(:), POINTER :: imask ! mask for packing from complete field to nature field
94 REAL(KIND=JPRB) :: zhook_handle
95 !
96 !-------------------------------------------------------------------------------
97 !
98 IF (lhook) CALL dr_hook('PACK_PGD_ISBA',0,zhook_handle)
99  CALL get_luout(hprogram,iluout)
100 !
101 !* 1. Number of points and packing
102 ! ----------------------------
103 !
104  CALL get_type_dim_n(dtco, u, &
105  'NATURE',ig%NDIM)
106 ALLOCATE(imask(ig%NDIM))
107 ilu=0
108  CALL get_surf_mask_n(dtco, u, &
109  'NATURE',ig%NDIM,imask,ilu,iluout)
110 !
111 !
112 !-------------------------------------------------------------------------------
113 !
114 !* 2. Packing of fields
115 ! -----------------
116 !
117 ALLOCATE(i%XAOSIP(ig%NDIM))
118 ALLOCATE(i%XAOSIM(ig%NDIM))
119 ALLOCATE(i%XAOSJP(ig%NDIM))
120 ALLOCATE(i%XAOSJM(ig%NDIM))
121 ALLOCATE(i%XHO2IP(ig%NDIM))
122 ALLOCATE(i%XHO2IM(ig%NDIM))
123 ALLOCATE(i%XHO2JP(ig%NDIM))
124 ALLOCATE(i%XHO2JM(ig%NDIM))
125 ALLOCATE(i%XSSO_SLOPE(ig%NDIM))
126  CALL pack_same_rank(imask,paosip(:),i%XAOSIP(:))
127  CALL pack_same_rank(imask,paosim(:),i%XAOSIM(:))
128  CALL pack_same_rank(imask,paosjp(:),i%XAOSJP(:))
129  CALL pack_same_rank(imask,paosjm(:),i%XAOSJM(:))
130  CALL pack_same_rank(imask,pho2ip(:),i%XHO2IP(:))
131  CALL pack_same_rank(imask,pho2im(:),i%XHO2IM(:))
132  CALL pack_same_rank(imask,pho2jp(:),i%XHO2JP(:))
133  CALL pack_same_rank(imask,pho2jm(:),i%XHO2JM(:))
134  CALL pack_same_rank(imask,psso_slope(:),i%XSSO_SLOPE(:))
135 IF (lhook) CALL dr_hook('PACK_PGD_ISBA',1,zhook_handle)
136 !
137 !-------------------------------------------------------------------------------
138 !
139 END SUBROUTINE pack_pgd_isba
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
subroutine get_surf_mask_n(DTCO, U, HTYPE, KDIM, KMASK, KLU, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:6
subroutine pack_pgd_isba(DTCO, IG, I, U, HPROGRAM, PAOSIP, PAOSIM, PAOSJP, PAOSJM, PHO2IP, PHO2IM, PHO2JP, PHO2JM, PSSO_SLOPE)