7 hprogram,hmask,haction)
49 USE modd_surfex_omp, ONLY : nindx2sfx, nwork, nwork2, xwork, xwork2, xwork3, &
50 nwork_full, nwork2_full, xwork_full, xwork2_full
54 USE modd_io_surf_fa,ONLY: nunit_fa, cfilein_fa,cfileout_fa,cdnomc,iverbfa, &
55 nluout,nfull,nfull_ext, cmask, lopen, &
56 ndgl, ndlon, ndlux, ndgux, perpk, pebeta, &
57 pelon0, pelat0, pedelx, pedely, pelon1, pelat1
63 USE modi_get_dim_full_n
64 USE modi_get_size_full_n
65 USE modi_get_type_dim_n
66 USE modi_get_surf_mask_n
69 USE yomhook
,ONLY : lhook, dr_hook
70 USE parkind1
,ONLY : jprb
78 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
79 CHARACTER(LEN=6),
INTENT(IN) :: hmask
80 CHARACTER(LEN=5),
INTENT(IN) :: haction
82 INTEGER :: ilu, iret, il
85 INTEGER :: ityptr, itronc, inlati, inxlon, iniver
86 INTEGER,
DIMENSION (1000) :: inlopa, inozpa
88 REAL,
DIMENSION (1000) :: zsinla
89 REAL,
DIMENSION (200) :: zahybr, zbhybr
90 REAL :: zslapo, zclopo, zslopo, zcodil, zrefer
93 REAL(KIND=JPRB) :: zhook_handle
97 IF (lhook) CALL dr_hook(
'INIT_IO_SURF_FA_N',0,zhook_handle)
99 IF(hprogram/=
'FA '.AND.hprogram/=
'AROME ')
THEN
100 CALL
abor1_sfx(
'INIT_IO_SURF_FA_N -- HPROGRAM should be FA or AROME')
107 IF (nrank==npio) lopen=.false.
109 IF (haction==
'GTMSK')
THEN
110 IF (nrank==npio)
THEN
112 CALL faitou(iret,nunit_fa,.true.,cfilein_fa,
'OLD',.true.,.false.,iverbfa,0,inb,cdnomc)
113 WRITE(nluout,*)
'HPROGRAM ',hprogram,
' IO_INIT HACTION==GTMSK',nunit_fa,cfilein_fa
118 IF (lhook) CALL dr_hook(
'INIT_IO_SURF_FA_N',1,zhook_handle)
122 IF (haction ==
'READ ')
THEN
123 IF (nrank==npio)
THEN
125 CALL faitou(iret,nunit_fa,.true.,cfilein_fa,
'OLD',.true.,.false.,iverbfa,0,inb,cdnomc)
126 WRITE(nluout,*)
'HPROGRAM ',hprogram,
' IO_INIT HACTION==READ',nunit_fa,cfilein_fa
127 CALL facage(cdnomc,.true.)
132 IF (hmask /=
'EXTZON')
THEN
135 hprogram,
'DIM_FULL',nfull,iret,hdir=
'A')
138 IF (hprogram==
'AROME ')
THEN
149 IF (hmask ==
'EXTZON')
THEN
150 IF (nrank==npio)
THEN
152 CALL facies(cdnomc, ityptr, zslapo, zclopo, zslopo, &
153 zcodil, itronc, inlati, inxlon, inlopa, &
154 inozpa, zsinla, iniver, zrefer, zahybr, &
156 nfull_ext = inlati*inxlon
159 nfull = inlopa(4)*inlopa(6)
164 pelon0 = zsinla(3)*180./xpi
165 pelat0 = zsinla(4)*180./xpi
168 pelon1 = zsinla(13)*180./xpi
169 pelat1 = zsinla(14)*180./xpi
174 IF (.NOT.
ALLOCATED(nindex))
THEN
175 ALLOCATE(nindex(nfull))
183 IF (hprogram==
'AROME ')
THEN
189 IF(.NOT.
ASSOCIATED(nwork ))
ALLOCATE(nwork(nfull))
190 IF(.NOT.
ASSOCIATED(xwork ))
ALLOCATE(xwork(nfull))
191 IF(.NOT.
ASSOCIATED(nwork2))
ALLOCATE(nwork2(nfull,10))
192 IF(.NOT.
ASSOCIATED(xwork2))
ALLOCATE(xwork2(nfull,10))
193 IF(.NOT.
ASSOCIATED(xwork3))
ALLOCATE(xwork3(nfull,10,10))
194 IF (nrank==npio)
THEN
195 IF(.NOT.
ASSOCIATED(nwork_full ))
ALLOCATE(nwork_full(nfull))
196 IF(.NOT.
ASSOCIATED(xwork_full ))
ALLOCATE(xwork_full(nfull))
197 IF(.NOT.
ASSOCIATED(nwork2_full))
ALLOCATE(nwork2_full(nfull,10))
198 IF(.NOT.
ASSOCIATED(xwork2_full))
ALLOCATE(xwork2_full(nfull,10))
200 IF(.NOT.
ASSOCIATED(nwork_full ))
ALLOCATE(nwork_full(0))
201 IF(.NOT.
ASSOCIATED(xwork_full ))
ALLOCATE(xwork_full(0))
202 IF(.NOT.
ASSOCIATED(nwork2_full))
ALLOCATE(nwork2_full(0,0))
203 IF(.NOT.
ASSOCIATED(xwork2_full))
ALLOCATE(xwork2_full(0,0))
208 IF (ilu>nsize) nsize = ilu
217 IF (lhook) CALL dr_hook(
'INIT_IO_SURF_FA_N',1,zhook_handle)
229 INTEGER,
INTENT(INOUT) :: klu
230 INTEGER,
INTENT(IN) :: kl
232 REAL,
DIMENSION(KL) :: zfull
233 INTEGER,
DIMENSION(KL) :: imask
234 REAL(KIND=JPRB) :: zhook_handle
236 IF (lhook) CALL dr_hook(
'INIT_IO_SURF_FA_N:GET_MASK',0,zhook_handle)
238 IF (hprogram==
'AROME ')
THEN
241 IF (
ALLOCATED(nmask_full))
THEN
242 IF (klu>
SIZE(nmask_full))
DEALLOCATE(nmask_full)
246 hmask,kl,imask,klu,nluout)
247 IF (
ALLOCATED(nmask_full))
THEN
248 IF (kl>
SIZE(nmask_full))
DEALLOCATE(nmask_full)
252 IF (.NOT.
ALLOCATED(nmask_full))
ALLOCATE(nmask_full(klu))
254 nmask_full(1:kl) = imask(:)
256 nmask => nmask_full(1:kl)
258 IF (lhook) CALL dr_hook(
'INIT_IO_SURF_FA_N:GET_MASK',1,zhook_handle)
subroutine get_type_dim_n(DTCO, U, HTYPE, KDIM)
subroutine get_dim_full_n(U, KDIM_FULL)
subroutine init_io_surf_fa_n(DTCO, U, HPROGRAM, HMASK, HACTION)
subroutine abor1_sfx(YTEXT)
subroutine get_surf_mask_n(DTCO, U, HTYPE, KDIM, KMASK, KLU, KLUOUT)
subroutine get_mask(KLU, YTYPE, IMASK)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine get_1d_mask(KSIZE, KFRAC, PFRAC, KMASK)
subroutine get_size_full_n(U, HPROGRAM, KDIM_FULL, KSIZE_FULL)