SURFEX v8.1
General documentation of Surfex
facond.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 facond_fort &
4 & (fa, krep, knumer, cdpref, knivau, cdsuff, &
5 & pchamp, ldcosp, cdnoma, klnoma, pvalco, &
6 & klongd)
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 CODAGE d'un CHAMP HORIZONTAL destine a etre
14 ! ecrit sur un fichier ARPEGE/ALADIN.
15 ! ( COdage de (Nouvelles ?) 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 ! ( Tableau ) PCHAMP (Entree) ==> Valeurs REELLES du champ a ecrire;
23 ! LDCOSP (Entree) ==> Vrai si le champ est represente
24 ! par des coefficients spectraux;
25 ! CDNOMA (Sortie) ==> Nom de l'article-champ a ecrire;
26 ! KLNOMA (Sortie) ==> Nombre de caracteres utiles dans
27 ! CDNOMA;
28 ! ( Tableau ) PVALCO (Sortie) ==> Donnees destinees a l'ecriture;
29 ! KLONGD (Sortie) ==> Nombre de valeurs (mots de 64 bits
30 ! en principe) a ecrire.
31 !
32 ! Remarques:
33 !
34 ! - PVALCO est type reel par commodite, 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 ecrire)
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 REAL (KIND=JPDBLR) PCHAMP (*), PVALCO (*), ZUNDF
47 !
48 CHARACTER CDPREF*(*), CDSUFF*(*), CDNOMA*(*)
49 !
50 INTEGER (KIND=JPLIKB) IREP, ILPRFU, ILSUFU, ILNOMU
51 INTEGER (KIND=JPLIKB) IRANG, INIMES
52 INTEGER (KIND=JPLIKB) ILPREF, ILSUFF, ILCDNO, IRANGC
53 INTEGER (KIND=JPLIKB) IB1PAR (fa%jplb1p)
54 !
55 LOGICAL LLVERF, LLRLFI, LDCOSP, LLNOMU, LLNOPA, LLUNDF
56 !
57 CHARACTER CLPREF*(fa%jpxnom), CLSUFF*(fa%jpxsuf)
58 !
59 CHARACTER(LEN=FA%JPLMES) CLMESS
60 CHARACTER(LEN=FA%JPLSPX) CLNSPR
61 LOGICAL LLFATA
62 type(fagr1tab) ylgr1tab
63 
64 !**
65 ! 1. - CONTROLES ET INITIALISATIONS.
66 !-----------------------------------------------------------------------
67 !
68 REAL(KIND=JPRB) :: ZHOOK_HANDLE
69 IF (lhook) CALL dr_hook('FACOND_MT',0,zhook_handle)
70 
71 llundf = .false.
72 zundf = 0._jpdblr
73 klongd = 0
74 CALL facon1_fort (fa, krep, knumer, cdpref, knivau, cdsuff, &
75 & pchamp, ldcosp, cdnoma, klnoma, pvalco, &
76 & klongd, llundf, zundf, ylgr1tab)
77 
78 IF (lhook) CALL dr_hook('FACOND_MT',1,zhook_handle)
79 
80 END SUBROUTINE facond_fort
81 
82 ! Oct-2012 P. Marguinaud 64b LFI
83 SUBROUTINE facond64 &
84 & (krep, knumer, cdpref, knivau, cdsuff, pchamp, &
85 & ldcosp, cdnoma, klnoma, pvalco, klongd)
86 USE fa_mod, ONLY : fa => fa_com_default, &
89 USE lfi_precision
90 IMPLICIT NONE
91 ! Arguments
92 INTEGER (KIND=JPLIKB) KREP ! OUT
93 INTEGER (KIND=JPLIKB) KNUMER ! IN
94 CHARACTER (LEN=*) CDPREF ! IN
95 INTEGER (KIND=JPLIKB) KNIVAU ! IN
96 CHARACTER (LEN=*) CDSUFF ! IN
97 REAL (KIND=JPDBLR) PCHAMP (*) ! IN
98 LOGICAL LDCOSP ! IN
99 CHARACTER (LEN=*) CDNOMA ! OUT
100 INTEGER (KIND=JPLIKB) KLNOMA ! OUT
101 REAL (KIND=JPDBLR) PVALCO (*) ! OUT
102 INTEGER (KIND=JPLIKB) KLONGD ! OUT
103 
104 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
105 
106 CALL facond_fort &
107 & (fa, krep, knumer, cdpref, knivau, cdsuff, pchamp, &
108 & ldcosp, cdnoma, klnoma, pvalco, klongd)
109 
110 END SUBROUTINE facond64
111 
112 SUBROUTINE facond &
113 & (krep, knumer, cdpref, knivau, cdsuff, pchamp, &
114 & ldcosp, cdnoma, klnoma, pvalco, klongd)
115 USE fa_mod, ONLY : fa => fa_com_default, &
118 USE lfi_precision
119 IMPLICIT NONE
120 ! Arguments
121 INTEGER (KIND=JPLIKM) KREP ! OUT
122 INTEGER (KIND=JPLIKM) KNUMER ! IN
123 CHARACTER (LEN=*) CDPREF ! IN
124 INTEGER (KIND=JPLIKM) KNIVAU ! IN
125 CHARACTER (LEN=*) CDSUFF ! IN
126 REAL (KIND=JPDBLR) PCHAMP (*) ! IN
127 LOGICAL LDCOSP ! IN
128 CHARACTER (LEN=*) CDNOMA ! OUT
129 INTEGER (KIND=JPLIKM) KLNOMA ! OUT
130 REAL (KIND=JPDBLR) PVALCO (*) ! OUT
131 INTEGER (KIND=JPLIKM) KLONGD ! OUT
132 
133 IF (.NOT. fa_com_default_init) CALL new_fa_default ()
134 
135 CALL facond_mt &
136 & (fa, krep, knumer, cdpref, knivau, cdsuff, pchamp, &
137 & ldcosp, cdnoma, klnoma, pvalco, klongd)
138 
139 END SUBROUTINE facond
140 
141 SUBROUTINE facond_mt &
142 & (fa, krep, knumer, cdpref, knivau, cdsuff, pchamp, &
143 & ldcosp, cdnoma, klnoma, pvalco, klongd)
144 USE fa_mod, ONLY : fa_com
145 USE lfi_precision
146 IMPLICIT NONE
147 ! Arguments
148 type(fa_com) fa ! INOUT
149 INTEGER (KIND=JPLIKM) KREP ! OUT
150 INTEGER (KIND=JPLIKM) KNUMER ! IN
151 CHARACTER (LEN=*) CDPREF ! IN
152 INTEGER (KIND=JPLIKM) KNIVAU ! IN
153 CHARACTER (LEN=*) CDSUFF ! IN
154 REAL (KIND=JPDBLR) PCHAMP (*) ! IN
155 LOGICAL LDCOSP ! IN
156 CHARACTER (LEN=*) CDNOMA ! OUT
157 INTEGER (KIND=JPLIKM) KLNOMA ! OUT
158 REAL (KIND=JPDBLR) PVALCO (*) ! OUT
159 INTEGER (KIND=JPLIKM) KLONGD ! OUT
160 ! Local integers
161 INTEGER (KIND=JPLIKB) IREP ! OUT
162 INTEGER (KIND=JPLIKB) INUMER ! IN
163 INTEGER (KIND=JPLIKB) INIVAU ! IN
164 INTEGER (KIND=JPLIKB) ILNOMA ! OUT
165 INTEGER (KIND=JPLIKB) ILONGD ! OUT
166 ! Convert arguments
167 
168 inumer = int( knumer, jplikb)
169 inivau = int( knivau, jplikb)
170 
171 CALL facond_fort &
172 & (fa, irep, inumer, cdpref, inivau, cdsuff, pchamp, &
173 & ldcosp, cdnoma, ilnoma, pvalco, ilongd)
174 
175 krep = int( irep, jplikm)
176 klnoma = int( ilnoma, jplikm)
177 klongd = int( ilongd, jplikm)
178 
179 END SUBROUTINE facond_mt
180 
181 !INTF KREP OUT
182 !INTF KNUMER IN
183 !INTF CDPREF IN
184 !INTF KNIVAU IN
185 !INTF CDSUFF IN
186 !INTF PCHAMP IN DIMS=*
187 !INTF LDCOSP IN
188 !INTF CDNOMA OUT
189 !INTF KLNOMA OUT
190 !INTF PVALCO OUT DIMS=*
191 !INTF KLONGD OUT
192 
integer, parameter jplikb
logical, save fa_com_default_init
Definition: fa_mod.F90:477
subroutine facond(KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, PCHAMP, LDCOSP, CDNOMA, KLNOMA, PVALCO, KLONGD)
Definition: facond.F90:115
subroutine new_fa_default()
Definition: fa_mod.F90:649
subroutine facond64(KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, PCHAMP, LDCOSP, CDNOMA, KLNOMA, PVALCO, KLONGD)
Definition: facond.F90:86
subroutine facond_mt(FA, KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, PCHAMP, LDCOSP, CDNOMA, KLNOMA, PVALCO, KLONGD)
Definition: facond.F90:144
Definition: fa_mod.F90:1
integer, parameter jprb
Definition: parkind1.F90:32
logical lhook
Definition: yomhook.F90:15
integer, parameter jplikm
subroutine facon1_fort(FA, KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, PCHAMP, LDCOSP, CDNOMA, KLNOMA, KVALCO, KLONGD, LDUNDF, PUNDF, YDGR1TAB)
Definition: facon1.F90:7
type(fa_com), target, save fa_com_default
Definition: fa_mod.F90:476
subroutine facond_fort(FA, KREP, KNUMER, CDPREF, KNIVAU, CDSUFF, PCHAMP, LDCOSP, CDNOMA, KLNOMA, PVALCO, KLONGD)
Definition: facond.F90:7