SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
pack_pgd_soil.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_soil (DTCO, IG, I, U, &
7  hprogram, psand, pclay, prunoffb, pwdrain)
8 ! ##############################################################
9 !
10 !!**** *PACK_PGD_SOIL* packs ISBA physiographic fields from all surface points to ISBA points
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !! METHOD
16 !! ------
17 !!
18 !
19 !! EXTERNAL
20 !! --------
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !! AUTHOR
29 !! ------
30 !!
31 !! V. Masson Meteo-France
32 !!
33 !! MODIFICATION
34 !! ------------
35 !!
36 !! Original 03/2004
37 !! Escobar J. 08/02/2005 : bug declare ILU local variable
38 !! B. Decharme 20008 : XWDRAIN
39 !----------------------------------------------------------------------------
40 !
41 !* 0. DECLARATION
42 ! -----------
43 !
44 !
45 !
46 !
48 USE modd_isba_grid_n, ONLY : isba_grid_t
49 USE modd_isba_n, ONLY : isba_t
50 USE modd_surf_atm_n, ONLY : surf_atm_t
51 !
53 !
54 USE yomhook ,ONLY : lhook, dr_hook
55 USE parkind1 ,ONLY : jprb
56 !
57 USE modi_get_surf_mask_n
58 !
59 USE modi_get_type_dim_n
60 !
61 USE modi_get_luout
62 IMPLICIT NONE
63 !
64 !* 0.1 Declaration of arguments
65 ! ------------------------
66 !
67 !
68 TYPE(data_cover_t), INTENT(INOUT) :: dtco
69 TYPE(isba_grid_t), INTENT(INOUT) :: ig
70 TYPE(isba_t), INTENT(INOUT) :: i
71 TYPE(surf_atm_t), INTENT(INOUT) :: u
72 !
73  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! Type of program
74 REAL, DIMENSION(:,:), INTENT(IN) :: psand ! sand on all surface points
75 REAL, DIMENSION(:,:), INTENT(IN) :: pclay ! clay on all surface points
76 REAL, DIMENSION(:), INTENT(IN) :: prunoffb ! runoff coef. on all surface points
77 REAL, DIMENSION(:), INTENT(IN) :: pwdrain ! drainage coef. on all surface points
78 !
79 !
80 !* 0.2 Declaration of local variables
81 ! ------------------------------
82 !
83 INTEGER :: ilu ! expected physical size of full surface array
84 INTEGER :: iluout ! output listing logical unit
85 INTEGER, DIMENSION(:), POINTER :: imask ! mask for packing from complete field to nature field
86 REAL(KIND=JPRB) :: zhook_handle
87 !
88 !-------------------------------------------------------------------------------
89 !
90 IF (lhook) CALL dr_hook('PACK_PGD_SOIL',0,zhook_handle)
91  CALL get_luout(hprogram,iluout)
92 !
93 !* 1. Number of points and packing
94 ! ----------------------------
95 !
96  CALL get_type_dim_n(dtco, u, &
97  'NATURE',ig%NDIM)
98 ALLOCATE(imask(ig%NDIM))
99 ilu=0
100  CALL get_surf_mask_n(dtco, u, &
101  'NATURE',ig%NDIM,imask,ilu,iluout)
102 !
103 !
104 !-------------------------------------------------------------------------------
105 !
106 !* 2. Packing of fields
107 ! -----------------
108 !
109 ALLOCATE(i%XSAND(ig%NDIM,i%NGROUND_LAYER))
110  CALL pack_same_rank(imask,psand(:,:),i%XSAND(:,:))
111 !
112 ALLOCATE(i%XCLAY(ig%NDIM,i%NGROUND_LAYER))
113  CALL pack_same_rank(imask,pclay(:,:),i%XCLAY(:,:))
114 !
115 !- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
116 !
117 ALLOCATE(i%XRUNOFFB(ig%NDIM))
118  CALL pack_same_rank(imask,prunoffb(:),i%XRUNOFFB(:))
119 !
120 ALLOCATE(i%XWDRAIN(ig%NDIM))
121  CALL pack_same_rank(imask,pwdrain(:),i%XWDRAIN(:))
122 IF (lhook) CALL dr_hook('PACK_PGD_SOIL',1,zhook_handle)
123 !
124 !-------------------------------------------------------------------------------
125 !
126 END SUBROUTINE pack_pgd_soil
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_soil(DTCO, IG, I, U, HPROGRAM, PSAND, PCLAY, PRUNOFFB, PWDRAIN)