SURFEX v8.1
General documentation of Surfex
fadeco.F90
Go to the documentation of this file.
1 ! Oct-2012 P. Marguinaud 64b LFI
2 ! Jan-2011 P. Marguinaud Thread-safe FA
3 SUBROUTINE fadeco_fort &
4 & (fa, krep, knumer, cdpref, knivau, cdsuff, &
5 & ldcosp, cdnoma, klnoma, kvalco, klongd, &
6 & pchamp )
7 USE fa_mod, ONLY : fa_com, fagr1tab
8 USE parkind1, ONLY : jprb
9 USE yomhook , ONLY : lhook, dr_hook
10 USE lfi_precision
11 IMPLICIT NONE
12 !****
13 ! Sous-programme de controle et de DECODAGE d'un CHAMP HORIZONTAL
14 ! venant d'etre lu sur un fichier ARPEGE/ALADIN.
15 ! ( DECOdage de donnees )
16 !**
17 ! Arguments : KREP (Sortie) ==> Code-reponse du sous-programme;
18 ! KNUMER (Entree) ==> Numero de l'unite logique;
19 ! CDPREF (Entree) ==> Prefixe eventuel du nom d'article;
20 ! KNIVAU (Entree) ==> Niveau vertical eventuel;
21 ! CDSUFF (Entree) ==> Suffixe eventuel du nom d'article;
22 ! LDCOSP (Entree) ==> Vrai si le champ est represente
23 ! par des coefficients spectraux;
24 ! CDNOMA (Sortie) ==> Nom de l'article-champ lu;
25 ! KLNOMA (Sortie) ==> Nombre de caracteres utiles dans
26 ! CDNOMA;
27 ! ( Tableau ) KVALCO (Entree) ==> Donnees issues de la lecture;
28 ! KLONGD (Entree) ==> Nombre de valeurs (mots de 64 bits
29 ! en principe) lues;
30 ! ( Tableau ) PCHAMP (Sortie) ==> Valeurs REELLES du champ lu.
31 !
32 ! Remarques:
33 !
34 ! - KVALCO est type entier, et doit avoir une longueur
35 ! suffisante pour stocker les donnees codees. Le dimensionnement
36 ! "tous terrains" est (2+ILCHAM), qui permet le cas echeant de
37 ! stocker un champ a pleine resolution sans codage effectif.
38 ! (ILCHAM est le nombre de valeurs du champ a decoder)
39 !
40 ! - CDNOMA doit avoir au moins FA%JPXNOM caracteres.
41 !
42 !
43 TYPE(fa_com) :: FA
44 INTEGER (KIND=JPLIKB) KREP, KNUMER, KNIVAU, KLNOMA, KLONGD
45 !
46 !
47 REAL (KIND=JPDBLR) PCHAMP (*), ZUNDF
48 INTEGER (KIND=JPLIKB) KVALCO(*)
49 !
50 LOGICAL LDCOSP, LLUNDF
51 !
52 CHARACTER CDPREF*(*), CDSUFF*(*), CDNOMA*(*)
53 type(fagr1tab) ylgr1tab
54 !
55 
56 !**
57 ! 1. - CONTROLES ET INITIALISATIONS.
58 !-----------------------------------------------------------------------
59 !
60 REAL(KIND=JPRB) :: ZHOOK_HANDLE
61 IF (lhook) CALL dr_hook('FADECO_MT',0,zhook_handle)
62 
63 CALL fadec1_fort (fa, krep, knumer, cdpref, knivau, cdsuff, &
64  & ldcosp, cdnoma, klnoma, kvalco, klongd, &
65  & pchamp, llundf, zundf, ylgr1tab)
66 
67 IF (lhook) CALL dr_hook('FADECO_MT',1,zhook_handle)
68 
69 END SUBROUTINE fadeco_fort
70 
71 ! Oct-2012 P. Marguinaud 64b LFI
72 SUBROUTINE fadeco64 &
73 & (krep, knumer, cdpref, knivau, cdsuff, ldcosp, &
74 & cdnoma, klnoma, kvalco, klongd, pchamp)
75 USE fa_mod, ONLY : fa => fa_com_default, &
78 USE lfi_precision
79 IMPLICIT NONE
80 ! Arguments
81 INTEGER (KIND=JPLIKB) KREP ! OUT
82 INTEGER (KIND=JPLIKB) KNUMER ! IN
83 CHARACTER (LEN=*) CDPREF ! IN
84 INTEGER (KIND=JPLIKB) KNIVAU ! IN
85 CHARACTER (LEN=*) CDSUFF ! IN
86 LOGICAL LDCOSP ! IN
87 CHARACTER (LEN=*) CDNOMA ! OUT
88 INTEGER (KIND=JPLIKB) KLNOMA ! OUT
89 INTEGER (KIND=JPLIKB) KVALCO (*) ! IN
90 INTEGER (KIND=JPLIKB) KLONGD ! IN
91 REAL (KIND=JPDBLR) PCHAMP (*) ! OUT
92 
93 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
94 
95 CALL fadeco_fort &
96 & (fa, krep, knumer, cdpref, knivau, cdsuff, ldcosp, &
97 & cdnoma, klnoma, kvalco, klongd, pchamp)
98 
99 END SUBROUTINE fadeco64
100 
101 SUBROUTINE fadeco &
102 & (krep, knumer, cdpref, knivau, cdsuff, ldcosp, &
103 & cdnoma, klnoma, kvalco, klongd, pchamp)
104 USE fa_mod, ONLY : fa => fa_com_default, &
107 USE lfi_precision
108 IMPLICIT NONE
109 ! Arguments
110 INTEGER (KIND=JPLIKM) KREP ! OUT
111 INTEGER (KIND=JPLIKM) KNUMER ! IN
112 CHARACTER (LEN=*) CDPREF ! IN
113 INTEGER (KIND=JPLIKM) KNIVAU ! IN
114 CHARACTER (LEN=*) CDSUFF ! IN
115 LOGICAL LDCOSP ! IN
116 CHARACTER (LEN=*) CDNOMA ! OUT
117 INTEGER (KIND=JPLIKM) KLNOMA ! OUT
118 INTEGER (KIND=JPLIKB) KVALCO (*) ! IN
119 INTEGER (KIND=JPLIKM) KLONGD ! IN
120 REAL (KIND=JPDBLR) PCHAMP (*) ! OUT
121 
122 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
123 
124 CALL fadeco_mt &
125 & (fa, krep, knumer, cdpref, knivau, cdsuff, ldcosp, &
126 & cdnoma, klnoma, kvalco, klongd, pchamp)
127 
128 END SUBROUTINE fadeco
129 
130 SUBROUTINE fadeco_mt &
131 & (fa, krep, knumer, cdpref, knivau, cdsuff, ldcosp, &
132 & cdnoma, klnoma, kvalco, klongd, pchamp)
133 USE fa_mod, ONLY : fa_com
134 USE lfi_precision
135 IMPLICIT NONE
136 ! Arguments
137 type(fa_com) fa ! INOUT
138 INTEGER (KIND=JPLIKM) KREP ! OUT
139 INTEGER (KIND=JPLIKM) KNUMER ! IN
140 CHARACTER (LEN=*) CDPREF ! IN
141 INTEGER (KIND=JPLIKM) KNIVAU ! IN
142 CHARACTER (LEN=*) CDSUFF ! IN
143 LOGICAL LDCOSP ! IN
144 CHARACTER (LEN=*) CDNOMA ! OUT
145 INTEGER (KIND=JPLIKM) KLNOMA ! OUT
146 INTEGER (KIND=JPLIKB) KVALCO (*) ! IN
147 INTEGER (KIND=JPLIKM) KLONGD ! IN
148 REAL (KIND=JPDBLR) PCHAMP (*) ! OUT
149 ! Local integers
150 INTEGER (KIND=JPLIKB) IREP ! OUT
151 INTEGER (KIND=JPLIKB) INUMER ! IN
152 INTEGER (KIND=JPLIKB) INIVAU ! IN
153 INTEGER (KIND=JPLIKB) ILNOMA ! OUT
154 INTEGER (KIND=JPLIKB) ILONGD ! IN
155 ! Convert arguments
156 
157 inumer = int( knumer, jplikb)
158 inivau = int( knivau, jplikb)
159 ilongd = int( klongd, jplikb)
160 
161 CALL fadeco_fort &
162 & (fa, irep, inumer, cdpref, inivau, cdsuff, ldcosp, &
163 & cdnoma, ilnoma, kvalco, ilongd, pchamp)
164 
165 krep = int( irep, jplikm)
166 klnoma = int( ilnoma, jplikm)
167 
168 END SUBROUTINE fadeco_mt
169 
170 !INTF KREP OUT
171 !INTF KNUMER IN
172 !INTF CDPREF IN
173 !INTF KNIVAU IN
174 !INTF CDSUFF IN
175 !INTF LDCOSP IN
176 !INTF CDNOMA OUT
177 !INTF KLNOMA OUT
178 !INTF KVALCO IN DIMS=* KIND=JPLIKB
179 !INTF KLONGD IN
180 !INTF PCHAMP OUT DIMS=*
subroutine fadeco64(KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, LDCOSP, CDNOMA, KLNOMA, KVALCO, KLONGD, PCHAMP)
Definition: fadeco.F90:75
integer, parameter jplikb
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine fadeco_fort(FA, KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, LDCOSP, CDNOMA, KLNOMA, KVALCO, KLONGD, PCHAMP)
Definition: fadeco.F90:7
subroutine new_fa_default()
Definition: fa_mod.F90:649
Definition: fa_mod.F90:1
integer, parameter jprb
Definition: parkind1.F90:32
subroutine fadeco(KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, LDCOSP, CDNOMA, KLNOMA, KVALCO, KLONGD, PCHAMP)
Definition: fadeco.F90:104
logical lhook
Definition: yomhook.F90:15
subroutine fadeco_mt(FA, KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, LDCOSP, CDNOMA, KLNOMA, KVALCO, KLONGD, PCHAMP)
Definition: fadeco.F90:133
integer, parameter jplikm
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine fadec1_fort(FA, KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, LDCOSP, CDNOMA, KLNOMA, KVALCO, KLONGD, PCHAMP, LDUNDF, PUNDF, YDGR1TAB)
Definition: fadec1.F90:7