SURFEX v8.1
General documentation of Surfex
mode_write_surf_lfi.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 ! ######spl
7 !
8 #ifdef SFX_LFI
9 !
10 USE modi_get_luout
11 INTERFACE write_surf0_lfi
12  MODULE PROCEDURE write_surfx0_lfi
13  MODULE PROCEDURE write_surfn0_lfi
14  MODULE PROCEDURE write_surfl0_lfi
15  MODULE PROCEDURE write_surfc0_lfi
16 END INTERFACE
17 INTERFACE write_surfn_lfi
18  MODULE PROCEDURE write_surfx1_lfi
19  MODULE PROCEDURE write_surfn1_lfi
20  MODULE PROCEDURE write_surfl1_lfi
21  MODULE PROCEDURE write_surfx2_lfi
22  MODULE PROCEDURE write_surfx3_lfi
23 END INTERFACE
24 INTERFACE write_surft_lfi
25  MODULE PROCEDURE write_surft0_lfi
26  MODULE PROCEDURE write_surft1_lfi
27  MODULE PROCEDURE write_surft2_lfi
28 END INTERFACE
29 !
30 CONTAINS
31 !
32 ! #############################################################
33  SUBROUTINE write_surfx0_lfi (&
34  HREC,PFIELD,KRESP,HCOMMENT)
35 ! #############################################################
36 !
37 !!**** * - routine to write a real scalar
38 !
39 !
41 !
42 USE modi_io_buff
43 USE modi_fmwrit
44 USE modi_error_write_surf_lfi
45 !
46 USE yomhook ,ONLY : lhook, dr_hook
47 USE parkind1 ,ONLY : jprb
48 !
49 IMPLICIT NONE
50 !
51 !* 0.1 Declarations of arguments
52 !
53 !
54 !
55  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
56 REAL, INTENT(IN) :: PFIELD ! the real scalar to be read
57 INTEGER, INTENT(OUT):: KRESP ! KRESP : return-code if a problem appears
58  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
59 !
60 !* 0.2 Declarations of local variables
61 !
62 LOGICAL :: GFOUND
63 REAL(KIND=JPRB) :: ZHOOK_HANDLE
64 !
65 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX0_LFI',0,zhook_handle)
66 !
67 kresp=0
68 !
69  CALL io_buff(&
70  hrec,'W',gfound)
71 IF (gfound .AND. lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX0_LFI',1,zhook_handle)
72 IF (gfound) RETURN
73 !
74  CALL fmwritx0(cfileout_lfi,hrec,cluout_lfi,1,pfield,4,100,hcomment,kresp)
75 !
76  CALL error_write_surf_lfi(hrec,kresp)
77 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX0_LFI',1,zhook_handle)
78 !
79 END SUBROUTINE write_surfx0_lfi
80 !
81 ! #############################################################
82  SUBROUTINE write_surfn0_lfi (&
83  HREC,KFIELD,KRESP,HCOMMENT)
84 ! #############################################################
85 !
86 !!**** * - routine to write an integer
87 !
90 !
91 USE modi_io_buff
92 USE modi_fmwrit
93 USE modi_error_write_surf_lfi
94 !
95 USE yomhook ,ONLY : lhook, dr_hook
96 USE parkind1 ,ONLY : jprb
97 !
98 IMPLICIT NONE
99 !
100 !* 0.1 Declarations of arguments
101 !
102 !
103 !
104  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
105 INTEGER, INTENT(IN) :: KFIELD ! the integer to be read
106 INTEGER, INTENT(OUT):: KRESP ! KRESP : return-code if a problem appears
107  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
108 !
109 !* 0.2 Declarations of local variables
110 !
111 LOGICAL :: GFOUND
112 REAL(KIND=JPRB) :: ZHOOK_HANDLE
113 !
114 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFN0_LFI',0,zhook_handle)
115 !
116 kresp=0
117 !
118 IF (lmnh_compatible .AND. hrec=='IMAX') THEN
119  niu = kfield+2
120  nib = 2
121  nie = kfield+1
122 END IF
123 IF (lmnh_compatible .AND. hrec=='JMAX') THEN
124  nju = kfield+2
125  njb = 2
126  nje = kfield+1
127 END IF
128 !
129  CALL io_buff(&
130  hrec,'W',gfound)
131 IF (gfound .AND. lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFN0_LFI',1,zhook_handle)
132 IF (gfound) RETURN
133 !
134  CALL fmwritn0(cfileout_lfi,hrec,cluout_lfi,1,kfield,4,100,hcomment,kresp)
135 !
136  CALL error_write_surf_lfi(hrec,kresp)
137 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFN0_LFI',1,zhook_handle)
138 !
139 END SUBROUTINE write_surfn0_lfi
140 !
141 ! #############################################################
142  SUBROUTINE write_surfl0_lfi (&
143  HREC,OFIELD,KRESP,HCOMMENT)
144 ! #############################################################
145 !
146 !!**** * - routine to write a logical
147 !
149 !
150 USE modi_io_buff
151 USE modi_fmwrit
152 USE modi_error_write_surf_lfi
153 !
154 USE yomhook ,ONLY : lhook, dr_hook
155 USE parkind1 ,ONLY : jprb
156 !
157 IMPLICIT NONE
158 !
159 !* 0.1 Declarations of arguments
160 !
161 !
162 !
163  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
164 LOGICAL, INTENT(IN) :: OFIELD ! array containing the data field
165 INTEGER, INTENT(OUT):: KRESP ! KRESP : return-code if a problem appears
166  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
167 !
168 !* 0.2 Declarations of local variables
169 !
170 LOGICAL :: GFOUND
171 REAL(KIND=JPRB) :: ZHOOK_HANDLE
172 !
173 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFL0_LFI',0,zhook_handle)
174 !
175 kresp=0
176 !
177  CALL io_buff(&
178  hrec,'W',gfound)
179 IF (gfound .AND. lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFL0_LFI',1,zhook_handle)
180 IF (gfound) RETURN
181 !
182  CALL fmwritl0(cfileout_lfi,hrec,cluout_lfi,1,ofield,4,100,hcomment,kresp)
183 !
184  CALL error_write_surf_lfi(hrec,kresp)
185 !
186 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFL0_LFI',1,zhook_handle)
187 !
188 END SUBROUTINE write_surfl0_lfi
189 !
190 ! #############################################################
191  SUBROUTINE write_surfc0_lfi (&
192  HREC,HFIELD,KRESP,HCOMMENT)
193 ! #############################################################
194 !
195 !!**** * - routine to write a character
196 !
198 !
199 USE modi_io_buff
200 USE modi_fmwrit
201 USE modi_error_write_surf_lfi
202 !
203 USE yomhook ,ONLY : lhook, dr_hook
204 USE parkind1 ,ONLY : jprb
205 !
206 IMPLICIT NONE
207 !
208 !* 0.1 Declarations of arguments
209 !
210 !
211 !
212  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
213  CHARACTER(LEN=40), INTENT(IN) :: HFIELD ! the integer to be read
214 INTEGER, INTENT(OUT) :: KRESP ! KRESP : return-code if a problem appears
215  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
216 !
217 !* 0.2 Declarations of local variables
218 !
219 LOGICAL :: GFOUND
220 REAL(KIND=JPRB) :: ZHOOK_HANDLE
221 !
222 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFC0_LFI',0,zhook_handle)
223 !
224 kresp=0
225 !
226  CALL io_buff(&
227  hrec,'W',gfound)
228 IF (gfound .AND. lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFC0_LFI',1,zhook_handle)
229 IF (gfound) RETURN
230 !
231  CALL fmwritc0(cfileout_lfi,hrec,cluout_lfi,1,hfield,4,100,hcomment,kresp)
232 !
233 IF (hrec=="GRID_TYPE") lmnh_compatible = (hfield=="CARTESIAN " .OR. hfield=="CONF PROJ ")
234 IF (hrec=="GRID_TYPE" .AND. lmnh_compatible) lcartesian=(hfield=="CARTESIAN ")
235 !
236  CALL error_write_surf_lfi(hrec,kresp)
237 !
238 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFC0_LFI',1,zhook_handle)
239 !
240 END SUBROUTINE write_surfc0_lfi
241 !
242 ! #############################################################
243  SUBROUTINE write_surfx1_lfi (&
244  HREC,PFIELD,KRESP,HCOMMENT,HDIR)
245 ! #############################################################
246 !
247 !!**** * - routine to fill a write 1D array for the externalised surface
248 !
249 !
250 !
251 !
253 !
256 !
257 USE modi_io_buff
258 USE modi_fmwrit
259 USE modi_error_write_surf_lfi
261 USE modi_get_surf_undef
262 !
263 USE yomhook ,ONLY : lhook, dr_hook
264 USE parkind1 ,ONLY : jprb
265 !
266 IMPLICIT NONE
267 !
268 #ifdef SFX_MPI
269 include "mpif.h"
270 #endif
271 !
272 !* 0.1 Declarations of arguments
273 !
274 !
275 !
276  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
277 REAL, DIMENSION(:), INTENT(IN) :: PFIELD ! array containing the data field
278 INTEGER, INTENT(OUT):: KRESP ! KRESP : return-code if a problem appears
279  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
280  CHARACTER(LEN=1), INTENT(IN) :: HDIR ! type of field :
281  ! 'H' : field with
282  ! horizontal spatial dim.
283  ! '-' : no horizontal dim.
284 !* 0.2 Declarations of local variables
285 !
286 LOGICAL :: GFOUND
287  CHARACTER(LEN=20) :: YREC
288 INTEGER :: JI, JJ
289 DOUBLE PRECISION :: XTIME0
290 REAL :: ZUNDEF ! default value
291 REAL, DIMENSION(MAX(NFULL,SIZE(PFIELD))) :: ZWORK ! work array read in the file
292 REAL, DIMENSION(NIU,NJU) :: ZWORK2D ! work array read in a MNH file
293 REAL(KIND=JPRB) :: ZHOOK_HANDLE, ZHOOK_HANDLE_OMP
294 !
295 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI',0,zhook_handle)
296 !
297 kresp=0
298 !
299  CALL io_buff(hrec,'W',gfound)
300 !
301 IF (gfound .AND. lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI',1,zhook_handle)
302 IF (gfound) RETURN
303 !
304 IF (hdir=='H') CALL gather_and_write_mpi(pfield,zwork,nmask)
305 !
306 !
307 IF (nrank==npio) THEN
308  !
309 #ifdef SFX_MPI
310  xtime0 = mpi_wtime()
311 #endif
312  !
313  IF (hdir=='H') THEN
314  !
315  CALL get_surf_undef(zundef)
316  !
317  IF (.NOT. lmnh_compatible) THEN
318  CALL fmwritx1(cfileout_lfi,hrec,cluout_lfi,nfull,zwork,4,100,hcomment,kresp)
319  CALL error_write_surf_lfi(hrec,kresp)
320  ELSE
321  !
322 !$OMP PARALLEL PRIVATE(ZHOOK_HANDLE_OMP)
323 !$OMP DO PRIVATE(JJ,JI)
324  DO jj=1,nje-njb+1
325  DO ji=1,nie-nib+1
326  zwork2d(nib+ji-1,njb+jj-1) = zwork(ji+(nie-nib+1)*(jj-1))
327  END DO
328  END DO
329 !$OMP END DO
330 !$OMP END PARALLEL
331  !
332  zwork2d(1:nib-1,:) = zundef
333  zwork2d(:,nje+1:nju) = zundef
334  zwork2d(:,1:njb-1) = zundef
335  zwork2d(nie+1:niu,:) = zundef
336  !
337  IF (hrec=='DX ' .OR. hrec=='XX ') THEN
338  yrec = 'XHAT'
339  CALL write_in_lfi_x1_for_mnh(hrec,yrec,zwork2d(nib:nie,njb),kresp,hcomment,niu,nib,nie)
340  ELSEIF (hrec=='DY ' .OR. hrec=='YY ') THEN
341  yrec = 'YHAT'
342  CALL write_in_lfi_x1_for_mnh(hrec,yrec,zwork2d(nib,njb:nje),kresp,hcomment,nju,njb,nje)
343  ELSEIF (njb==nje) THEN
344  yrec = hrec
345  CALL write_in_lfi_x1_for_mnh(hrec,yrec,zwork2d(:,njb),kresp,hcomment,niu,nib,nie)
346  ELSEIF (nib==nie) THEN
347  yrec = hrec
348  CALL write_in_lfi_x1_for_mnh(hrec,yrec,zwork2d(nib,:),kresp,hcomment,nju,njb,nje)
349  ELSE
350  CALL fmwritx2(cfileout_lfi,hrec,cluout_lfi,SIZE(zwork2d),zwork2d,4,100,hcomment,kresp)
351  CALL error_write_surf_lfi(hrec,kresp)
352  ENDIF
353  !
354  END IF
355  !
356  ELSE
357  CALL fmwritx1(cfileout_lfi,hrec,cluout_lfi,SIZE(pfield),pfield,4,100,hcomment,kresp)
358  CALL error_write_surf_lfi(hrec,kresp)
359  END IF
360  !
361 #ifdef SFX_MPI
362  xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
363 #endif
364  !
365 ENDIF
366 !
367 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI',1,zhook_handle)
368 !
369 CONTAINS
370 !
371 ! #############################################################
372  SUBROUTINE write_in_lfi_x1_for_mnh(HREC,HREC2,PFIELD,KRESP,HCOMMENT,KU,KB,KE)
373 ! #############################################################
374 !
375 !!**** * - routine to fill a write 2D array for the externalised surface
376 !
377 IMPLICIT NONE
378 !
379 !* 0.1 Declarations of arguments
380 !
381  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
382  CHARACTER(LEN=20), INTENT(IN) :: HREC2 ! name of the article to be read
383 REAL, DIMENSION(:), INTENT(IN) :: PFIELD ! array containing the data field
384 INTEGER, INTENT(OUT):: KRESP ! KRESP : return-code if a problem appears
385  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
386 INTEGER, INTENT(IN) :: KU
387 INTEGER, INTENT(IN) :: KB
388 INTEGER, INTENT(IN) :: KE
389 !
390 !* 0.2 Declarations of local variables
391 !
392 REAL, DIMENSION(KU) :: ZWORK ! 1D work array read in the file
393 REAL(KIND=JPRB) :: ZHOOK_HANDLE
394 !
395 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI:WRITE_IN_LFI_X1_FOR_MNH',0,zhook_handle)
396 !
397 zwork(:) = 0.
398 !
399 SELECT CASE(hrec)
400  !
401  CASE('DX ','DY ')
402  IF (kb/=ke) THEN
403  IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI:WRITE_IN_LFI_X1_FOR_MNH',1,zhook_handle)
404  RETURN
405  ENDIF
406  zwork(1) = - pfield(1)*0.5 ! 1D case
407  zwork(2) = pfield(1)*0.5
408  zwork(3) = pfield(1)*1.5
409  !
410  CASE('XX ','YY ')
411  IF (kb==ke) THEN
412  IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI:WRITE_IN_LFI_X1_FOR_MNH',1,zhook_handle)
413  RETURN
414  ENDIF
415  zwork(kb+1:ke) = 0.5 * pfield(1:ke-2) + 0.5 * pfield(2:ke-1)
416  zwork(kb) = 1.5 * pfield(1) - 0.5 * pfield(2)
417  zwork(kb-1) = 2. * zwork(kb) - zwork(kb+1)
418  zwork(ke+1) = 2. * zwork(ke) - zwork(ke-1)
419  CASE DEFAULT
420  zwork(:) = pfield(:)
421  !
422 END SELECT
423 !
424  CALL fmwritx1(cfileout_lfi,hrec2,cluout_lfi,ku,zwork,4,100,hcomment,kresp)
425  CALL error_write_surf_lfi(hrec2,kresp)
426 !
427 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX1_LFI:WRITE_IN_LFI_X1_FOR_MNH',1,zhook_handle)
428 END SUBROUTINE write_in_lfi_x1_for_mnh
429 !
430 END SUBROUTINE write_surfx1_lfi
431 !
432 ! #############################################################
433  SUBROUTINE write_surfx2_lfi (HREC,PFIELD,KRESP,HCOMMENT,HDIR)
434 ! #############################################################
435 !
436 !!**** * - routine to fill a write 2D array for the externalised surface
437 !
438 !
439 !
440 !
442 !
445 !
446 USE modi_io_buff
447 USE modi_fmwrit
448 USE modi_error_write_surf_lfi
450 USE modi_get_surf_undef
451 !
452 USE yomhook ,ONLY : lhook, dr_hook
453 USE parkind1 ,ONLY : jprb
454 !
455 IMPLICIT NONE
456 !
457 #ifdef SFX_MPI
458 include "mpif.h"
459 #endif
460 !
461 !* 0.1 Declarations of arguments
462 !
463 !
464 !
465  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
466 REAL, DIMENSION(:,:), INTENT(IN) :: PFIELD ! array containing the data field
467 INTEGER, INTENT(OUT):: KRESP ! KRESP : return-code if a problem appears
468  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
469  CHARACTER(LEN=1), INTENT(IN) :: HDIR ! type of field :
470  ! 'H' : field with
471  ! horizontal spatial dim.
472  ! '-' : no horizontal dim.
473 !* 0.2 Declarations of local variables
474 !
475 LOGICAL :: GFOUND
476 DOUBLE PRECISION :: XTIME0
477 REAL :: ZUNDEF ! default value
478 REAL, DIMENSION(MAX(NFULL,SIZE(PFIELD,1)),SIZE(PFIELD,2)) :: ZWORK ! work array read in the file
479 REAL(KIND=JPRB) :: ZHOOK_HANDLE
480 !
481 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI',0,zhook_handle)
482 !
483 kresp=0
484 !
485  CALL io_buff(&
486  hrec,'W',gfound)
487 !
488 IF (gfound .AND. lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI',1,zhook_handle)
489 IF (gfound) RETURN
490 !
491 IF (hdir=='H') CALL gather_and_write_mpi(pfield,zwork,nmask)
492 !
493 IF (nrank==npio) THEN
494  !
495 #ifdef SFX_MPI
496  xtime0 = mpi_wtime()
497 #endif
498  !
499  IF (hdir=='H') THEN
500  !
501  CALL get_surf_undef(zundef)
502  !
503  IF (.NOT. lmnh_compatible) THEN
504  CALL fmwritx2(cfileout_lfi,hrec,cluout_lfi,SIZE(zwork),zwork,4,100,hcomment,kresp)
505  CALL error_write_surf_lfi(hrec,kresp)
506  ELSE
507  CALL write_in_lfi_x2_for_mnh(hrec,zwork,kresp,hcomment)
508  END IF
509  !
510  ELSE
511  CALL fmwritx2(cfileout_lfi,hrec,cluout_lfi,SIZE(pfield),pfield,4,100,hcomment,kresp)
512  CALL error_write_surf_lfi(hrec,kresp)
513  END IF
514  !
515 #ifdef SFX_MPI
516  xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
517 #endif
518  !
519 ENDIF
520 !
521 !if (HREC=='ALBVIS_ISBA') stop
522 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI',1,zhook_handle)
523 !
524 CONTAINS
525 !
526 ! #############################################################
527  SUBROUTINE write_in_lfi_x2_for_mnh(HREC,PFIELD,KRESP,HCOMMENT)
528 ! #############################################################
529 !
530 !!**** * - routine to fill a write 2D array for the externalised surface
531 !
532 USE yomhook ,ONLY : lhook, dr_hook
533 USE parkind1 ,ONLY : jprb
534 !
535 IMPLICIT NONE
536 !
537 !* 0.1 Declarations of arguments
538 !
539  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
540 REAL, DIMENSION(:,:), INTENT(IN) :: PFIELD ! array containing the data field
541 INTEGER, INTENT(OUT):: KRESP ! KRESP : return-code if a problem appears
542  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
543 !
544 !* 0.2 Declarations of local variables
545 !
546 INTEGER :: JI, JJ
547 REAL :: ZUNDEF
548 REAL, DIMENSION(NIU,NJU,SIZE(PFIELD,2)) :: ZWORK3D ! work array read in a MNH file
549 REAL(KIND=JPRB) :: ZHOOK_HANDLE
550 !
551 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI:WRITE_IN_LFI_X2_FOR_MNH',0,zhook_handle)
552 !
553  CALL get_surf_undef(zundef)
554 !
555 zwork3d=zundef
556 DO jj=1,nje-njb+1
557  DO ji=1,nie-nib+1
558  zwork3d(nib+ji-1,njb+jj-1,:) = pfield(ji+(nie-nib+1)*(jj-1),:)
559  END DO
560 END DO
561 !
562 IF (nje==njb) THEN
563  CALL fmwritx2(cfileout_lfi,hrec,cluout_lfi,SIZE(zwork3d,3)*niu,zwork3d(:,nje,:),4,100,hcomment,kresp)
564 ELSEIF (nie==nib) THEN
565  CALL fmwritx2(cfileout_lfi,hrec,cluout_lfi,SIZE(zwork3d,3)*nju,zwork3d(nie,:,:),4,100,hcomment,kresp)
566 ELSE
567  CALL fmwritx3(cfileout_lfi,hrec,cluout_lfi,SIZE(zwork3d),zwork3d,4,100,hcomment,kresp)
568 ENDIF
569 !
570  CALL error_write_surf_lfi(hrec,kresp)
571 !
572 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX2_LFI:WRITE_IN_LFI_X2_FOR_MNH',1,zhook_handle)
573 END SUBROUTINE write_in_lfi_x2_for_mnh
574 !
575 END SUBROUTINE write_surfx2_lfi
576 !
577 ! #############################################################
578  SUBROUTINE write_surfx3_lfi (HREC,PFIELD,KRESP,HCOMMENT,HDIR)
579 ! #############################################################
580 !
581 !!**** * - routine to fill a write 2D array for the externalised surface
582 !
583 !
584 !
585 !
587 !
590 !
591 USE modi_io_buff
592 USE modi_fmwrit
593 USE modi_error_write_surf_lfi
595 USE modi_get_surf_undef
596 !
597 USE yomhook ,ONLY : lhook, dr_hook
598 USE parkind1 ,ONLY : jprb
599 !
600 IMPLICIT NONE
601 !
602 #ifdef SFX_MPI
603 include "mpif.h"
604 #endif
605 !
606 !* 0.1 Declarations of arguments
607 !
608 !
609 !
610  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
611 REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! array containing the data field
612 INTEGER, INTENT(OUT):: KRESP ! KRESP : return-code if a problem appears
613  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
614  CHARACTER(LEN=1), INTENT(IN) :: HDIR ! type of field :
615  ! 'H' : field with
616  ! horizontal spatial dim.
617  ! '-' : no horizontal dim.
618 !* 0.2 Declarations of local variables
619 !
620 LOGICAL :: GFOUND
621 DOUBLE PRECISION :: XTIME0
622 REAL :: ZUNDEF ! default value
623 REAL, DIMENSION(MAX(NFULL,SIZE(PFIELD,1)),SIZE(PFIELD,2),SIZE(PFIELD,3)) :: ZWORK ! work array read in the file
624 REAL(KIND=JPRB) :: ZHOOK_HANDLE
625 !
626 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX3_LFI',0,zhook_handle)
627 !
628 kresp=0
629 !
630  CALL io_buff(&
631  hrec,'W',gfound)
632 !
633 IF (gfound .AND. lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX3_LFI',1,zhook_handle)
634 IF (gfound) RETURN
635 !
636 IF (hdir=='H') CALL gather_and_write_mpi(pfield,zwork,nmask)
637 !
638 IF (nrank==npio) THEN
639  !
640 #ifdef SFX_MPI
641  xtime0 = mpi_wtime()
642 #endif
643  !
644  IF (hdir=='H') THEN
645  !
646  CALL get_surf_undef(zundef)
647  !
648  IF (.NOT. lmnh_compatible) THEN
649  CALL fmwritx3(cfileout_lfi,hrec,cluout_lfi,SIZE(zwork),zwork,4,100,hcomment,kresp)
650  CALL error_write_surf_lfi(hrec,kresp)
651  ELSE
652  CALL write_in_lfi_x3_for_mnh(hrec,zwork,kresp,hcomment)
653  END IF
654  !
655  ELSE
656  CALL fmwritx3(cfileout_lfi,hrec,cluout_lfi,SIZE(pfield),pfield,4,100,hcomment,kresp)
657  CALL error_write_surf_lfi(hrec,kresp)
658  END IF
659  !
660 #ifdef SFX_MPI
661  xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
662 #endif
663  !
664 ENDIF
665 !
666 !if (HREC=='ALBVIS_ISBA') stop
667 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX3_LFI',1,zhook_handle)
668 !
669 CONTAINS
670 !
671 ! #############################################################
672  SUBROUTINE write_in_lfi_x3_for_mnh(HREC,PFIELD,KRESP,HCOMMENT)
673 ! #############################################################
674 !
675 !!**** * - routine to fill a write 2D array for the externalised surface
676 !
677 USE yomhook ,ONLY : lhook, dr_hook
678 USE parkind1 ,ONLY : jprb
679 !
680 USE modi_abor1_sfx
681 !
682 IMPLICIT NONE
683 !
684 !* 0.1 Declarations of arguments
685 !
686  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
687 REAL, DIMENSION(:,:,:), INTENT(IN) :: PFIELD ! array containing the data field
688 INTEGER, INTENT(OUT):: KRESP ! KRESP : return-code if a problem appears
689  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
690 !
691 !* 0.2 Declarations of local variables
692 !
693 INTEGER :: JI, JJ
694 REAL :: ZUNDEF
695 REAL, DIMENSION(NIU,NJU,SIZE(PFIELD,2),SIZE(PFIELD,3)) :: ZWORK4D ! work array read in a MNH file
696 REAL(KIND=JPRB) :: ZHOOK_HANDLE
697 !
698 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX3_LFI:WRITE_IN_LFI_X3_FOR_MNH',0,zhook_handle)
699 !
700  CALL get_surf_undef(zundef)
701 !
702 zwork4d=zundef
703 DO jj=1,nje-njb+1
704  DO ji=1,nie-nib+1
705  zwork4d(nib+ji-1,njb+jj-1,:,:) = pfield(ji+(nie-nib+1)*(jj-1),:,:)
706  END DO
707 END DO
708 !
709 IF (nje==njb) THEN
710  CALL fmwritx3(cfileout_lfi,hrec,cluout_lfi,SIZE(zwork4d,3)*niu,zwork4d(:,nje,:,:),4,100,hcomment,kresp)
711 ELSEIF (nie==nib) THEN
712  CALL fmwritx3(cfileout_lfi,hrec,cluout_lfi,SIZE(zwork4d,3)*nju,zwork4d(nie,:,:,:),4,100,hcomment,kresp)
713 ELSE
714  !CALL FMWRITX4(CFILEOUT_LFI,HREC,CLUOUT_LFI,SIZE(ZWORK3D),ZWORK4D,4,100,HCOMMENT,KRESP)
715  CALL abor1_sfx("WRITE_SURFX3_LFI: NOT POSSIBLE TO WRITE 4D FIELDS IN LFI")
716 ENDIF
717 !
718  CALL error_write_surf_lfi(hrec,kresp)
719 !
720 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFX3_LFI:WRITE_IN_LFI_X3_FOR_MNH',1,zhook_handle)
721 END SUBROUTINE write_in_lfi_x3_for_mnh
722 !
723 END SUBROUTINE write_surfx3_lfi
724 !
725 ! #############################################################
726  SUBROUTINE write_surfn1_lfi (&
727  HREC,KFIELD,KRESP,HCOMMENT,HDIR)
728 ! #############################################################
729 !
730 !!**** * - routine to write an integer array
731 !
732 !
734 !
736 !
737 USE modi_io_buff
738 USE modi_fmwrit
739 USE modi_error_write_surf_lfi
741 !
742 USE yomhook ,ONLY : lhook, dr_hook
743 USE parkind1 ,ONLY : jprb
744 !
745 IMPLICIT NONE
746 !
747 #ifdef SFX_MPI
748 include "mpif.h"
749 #endif
750 !
751 !* 0.1 Declarations of arguments
752 !
753 !
754 !
755  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
756 INTEGER, DIMENSION(:), INTENT(IN) :: KFIELD ! the integer to be read
757 INTEGER, INTENT(OUT):: KRESP ! KRESP : return-code if a problem appears
758  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
759  CHARACTER(LEN=1), INTENT(IN) :: HDIR ! type of field :
760  ! 'H' : field with
761  ! horizontal spatial dim.
762  ! '-' : no horizontal dim.
763 !* 0.2 Declarations of local variables
764 !
765 LOGICAL :: GFOUND
766 INTEGER, DIMENSION(MAX(NFULL,SIZE(KFIELD))) :: IWORK ! work array read in the file
767 DOUBLE PRECISION :: XTIME0
768 REAL(KIND=JPRB) :: ZHOOK_HANDLE
769 !
770 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFN1_LFI',0,zhook_handle)
771 !
772 kresp=0
773 !
774  CALL io_buff(&
775  hrec,'W',gfound)
776 !
777 IF (gfound .AND. lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFN1_LFI',1,zhook_handle)
778 IF (gfound) RETURN
779 !
780 IF (hdir=='H') CALL gather_and_write_mpi(kfield,iwork,nmask)
781 !
782 IF (nrank==npio) THEN
783  !
784 #ifdef SFX_MPI
785  xtime0 = mpi_wtime()
786 #endif
787  !
788  IF (hdir=='H') THEN
789  CALL fmwritn1(cfileout_lfi,hrec,cluout_lfi,nfull,iwork,4,100,hcomment,kresp)
790  ELSE
791  CALL fmwritn1(cfileout_lfi,hrec,cluout_lfi,SIZE(kfield),kfield,4,100,hcomment,kresp)
792  END IF
793  !
794  CALL error_write_surf_lfi(hrec,kresp)
795  !
796 #ifdef SFX_MPI
797  xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
798 #endif
799  !
800 ENDIF
801 !
802 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFN1_LFI',1,zhook_handle)
803 !
804 END SUBROUTINE write_surfn1_lfi
805 !
806 ! #############################################################
807  SUBROUTINE write_surfl1_lfi (&
808  HREC,OFIELD,KRESP,HCOMMENT,HDIR)
809 ! #############################################################
810 !
811 !!**** * - routine to write a logical array
812 !
813 !
814 !
815 !
817 !
819 !
820 USE modi_io_buff
821 USE modi_get_luout
822 USE modi_fmwrit
823 USE modi_abor1_sfx
824 USE modi_error_write_surf_lfi
825 !
826 USE yomhook ,ONLY : lhook, dr_hook
827 USE parkind1 ,ONLY : jprb
828 !
829 IMPLICIT NONE
830 !
831 #ifdef SFX_MPI
832 include "mpif.h"
833 #endif
834 !
835 !* 0.1 Declarations of arguments
836 !
837 !
838 !
839  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
840 LOGICAL, DIMENSION(:), INTENT(IN) :: OFIELD ! array containing the data field
841 INTEGER, INTENT(OUT):: KRESP ! KRESP : return-code if a problem appears
842  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
843  CHARACTER(LEN=1), INTENT(IN) :: HDIR ! type of field :
844  ! 'H' : field with
845  ! horizontal spatial dim.
846  ! '-' : no horizontal dim.
847 !* 0.2 Declarations of local variables
848 !
849 LOGICAL :: GFOUND
850 INTEGER :: ILUOUT ! listing logical unit
851 DOUBLE PRECISION :: XTIME0
852 REAL(KIND=JPRB) :: ZHOOK_HANDLE
853 !
854 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFL1_LFI',0,zhook_handle)
855 !
856 kresp=0
857 !
858  CALL io_buff(&
859  hrec,'W',gfound)
860 !
861 IF (gfound .AND. lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFL1_LFI',1,zhook_handle)
862 IF (gfound) RETURN
863 !
864 IF (nrank==npio) THEN
865  !
866 #ifdef SFX_MPI
867  xtime0 = mpi_wtime()
868 #endif
869  !
870  IF (hdir=='H') THEN
871  CALL get_luout('LFI ',iluout)
872  WRITE(iluout,*) 'Error: 1D logical vector for writing on an horizontal grid:'
873  WRITE(iluout,*) 'this option is not coded in WRITE_SURFL1_LFI'
874  CALL abor1_sfx('MODE_WRITE_SURF_LFI: 1D LOGICAL VECTOR FOR WRITING NOT CODED IN WRITE_SURFL1_LFI')
875  ELSE
876  !
877  CALL fmwritl1(cfileout_lfi,hrec,cluout_lfi,SIZE(ofield),ofield,4,100,hcomment,kresp)
878  !
879  CALL error_write_surf_lfi(hrec,kresp)
880  END IF
881  !
882 #ifdef SFX_MPI
883  xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
884 #endif
885  !
886 ENDIF
887 !
888 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFL1_LFI',1,zhook_handle)
889 !
890 END SUBROUTINE write_surfl1_lfi
891 !
892 ! #############################################################
893  SUBROUTINE write_surft0_lfi (&
894  HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
895 ! #############################################################
896 !
897 !!**** * - routine to write a date
898 !
899 !
901 !
902 USE modi_io_buff
903 USE modi_get_surf_undef
904 USE modi_fmwrit
905 USE modi_error_write_surf_lfi
906 !
907 USE yomhook ,ONLY : lhook, dr_hook
908 USE parkind1 ,ONLY : jprb
909 !
910 IMPLICIT NONE
911 !
912 !* 0.1 Declarations of arguments
913 !
914 !
915 !
916  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
917 INTEGER, INTENT(IN) :: KYEAR ! year
918 INTEGER, INTENT(IN) :: KMONTH ! month
919 INTEGER, INTENT(IN) :: KDAY ! day
920 REAL, INTENT(IN) :: PTIME ! time
921 INTEGER, INTENT(OUT) :: KRESP ! KRESP : return-code if a problem appears
922  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
923 
924 !* 0.2 Declarations of local variables
925 !
926 LOGICAL :: GFOUND
927  CHARACTER(LEN=12) :: YREC ! Name of the article to be written
928 INTEGER, DIMENSION(3) :: ITDATE
929 REAL(KIND=JPRB) :: ZHOOK_HANDLE
930 !
931 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFT0_LFI',0,zhook_handle)
932 !
933 kresp=0
934 !
935  CALL io_buff(&
936  hrec,'W',gfound)
937 IF (gfound .AND. lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFT0_LFI',1,zhook_handle)
938 IF (gfound) RETURN
939 !
940 itdate(1) = kyear
941 itdate(2) = kmonth
942 itdate(3) = kday
943 !
944 yrec=trim(hrec)//'%TDATE'
945  CALL fmwritn1(cfileout_lfi,yrec,cluout_lfi,3,itdate,4,100,hcomment,kresp)
946  CALL error_write_surf_lfi(hrec,kresp)
947 !
948 yrec=trim(hrec)//'%TIME'
949  CALL fmwritx0(cfileout_lfi,yrec,cluout_lfi,1,ptime,4,100,hcomment,kresp)
950  CALL error_write_surf_lfi(hrec,kresp)
951 !
952 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFT0_LFI',1,zhook_handle)
953 !
954 END SUBROUTINE write_surft0_lfi
955 !
956 ! #############################################################
957  SUBROUTINE write_surft1_lfi (&
958  HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
959 ! #############################################################
960 !
961 !!**** * - routine to write a date
962 !
963 !
964 !
965 !
967 !
969 !
970 USE modi_io_buff
971 USE modi_fmwrit
972 USE modi_error_write_surf_lfi
973 !
974 USE yomhook ,ONLY : lhook, dr_hook
975 USE parkind1 ,ONLY : jprb
976 !
977 IMPLICIT NONE
978 !
979 #ifdef SFX_MPI
980 include "mpif.h"
981 #endif
982 !
983 !* 0.1 Declarations of arguments
984 !
985 !
986 !
987  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
988 INTEGER, DIMENSION(:), INTENT(IN) :: KYEAR ! year
989 INTEGER, DIMENSION(:), INTENT(IN) :: KMONTH ! month
990 INTEGER, DIMENSION(:), INTENT(IN) :: KDAY ! day
991 REAL, DIMENSION(:), INTENT(IN) :: PTIME ! time
992 INTEGER, INTENT(OUT) :: KRESP ! KRESP : return-code if a problem appears
993  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
994 
995 !* 0.2 Declarations of local variables
996 !
997 LOGICAL :: GFOUND
998  CHARACTER(LEN=12) :: YREC ! Name of the article to be written
999 INTEGER, DIMENSION(3,SIZE(KYEAR)) :: ITDATE
1000 DOUBLE PRECISION :: XTIME0
1001 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1002 !
1003 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFT1_LFI',0,zhook_handle)
1004 !
1005 kresp = 0
1006 !
1007  CALL io_buff(&
1008  hrec,'W',gfound)
1009 !
1010 IF (gfound .AND. lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFT1_LFI',1,zhook_handle)
1011 IF (gfound) RETURN
1012 !
1013 IF (nrank==npio) THEN
1014  !
1015 #ifdef SFX_MPI
1016  xtime0 = mpi_wtime()
1017 #endif
1018  !
1019  kresp=0
1020  !
1021  itdate(1,:) = kyear(:)
1022  itdate(2,:) = kmonth(:)
1023  itdate(3,:) = kday(:)
1024  !
1025  yrec=trim(hrec)//'%TDATE'
1026  CALL fmwritn2(cfileout_lfi,yrec,cluout_lfi,SIZE(itdate),itdate,4,100,hcomment,kresp)
1027  !
1028  yrec=trim(hrec)//'%TIME'
1029  CALL fmwritx1(cfileout_lfi,yrec,cluout_lfi,SIZE(ptime),ptime,4,100,hcomment,kresp)
1030  !
1031  CALL error_write_surf_lfi(hrec,kresp)
1032  !
1033 #ifdef SFX_MPI
1034  xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
1035 #endif
1036  !
1037 ENDIF
1038 !
1039 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFT1_LFI',1,zhook_handle)
1040 !
1041 END SUBROUTINE write_surft1_lfi
1042 !
1043 ! #############################################################
1044  SUBROUTINE write_surft2_lfi (&
1045  HREC,KYEAR,KMONTH,KDAY,PTIME,KRESP,HCOMMENT)
1046 ! #############################################################
1047 !
1048 !!**** * - routine to write a date
1049 !
1050 !
1051 !
1052 !
1054 !
1056 !
1057 USE modi_io_buff
1058 USE modi_fmwrit
1059 USE modi_error_write_surf_lfi
1060 !
1061 USE yomhook ,ONLY : lhook, dr_hook
1062 USE parkind1 ,ONLY : jprb
1063 !
1064 IMPLICIT NONE
1065 !
1066 #ifdef SFX_MPI
1067 include "mpif.h"
1068 #endif
1069 !
1070 !* 0.1 Declarations of arguments
1071 !
1072 !
1073 !
1074  CHARACTER(LEN=12), INTENT(IN) :: HREC ! name of the article to be read
1075 INTEGER, DIMENSION(:,:), INTENT(IN) :: KYEAR ! year
1076 INTEGER, DIMENSION(:,:), INTENT(IN) :: KMONTH ! month
1077 INTEGER, DIMENSION(:,:), INTENT(IN) :: KDAY ! day
1078 REAL, DIMENSION(:,:), INTENT(IN) :: PTIME ! time
1079 INTEGER, INTENT(OUT) :: KRESP ! KRESP : return-code if a problem appears
1080  CHARACTER(LEN=100), INTENT(IN) :: HCOMMENT ! comment string
1081 
1082 !* 0.2 Declarations of local variables
1083 !
1084 LOGICAL :: GFOUND
1085  CHARACTER(LEN=12) :: YREC ! Name of the article to be written
1086 DOUBLE PRECISION :: XTIME0
1087 REAL(KIND=JPRB) :: ZHOOK_HANDLE
1088 !
1089 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFT2_LFI',0,zhook_handle)
1090 !
1091 kresp = 0
1092 !
1093  CALL io_buff(&
1094  hrec,'W',gfound)
1095 !
1096 IF (gfound .AND. lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFT2_LFI',1,zhook_handle)
1097 IF (gfound) RETURN
1098 !
1099 IF (nrank==npio) THEN
1100  !
1101 #ifdef SFX_MPI
1102  xtime0 = mpi_wtime()
1103 #endif
1104  !
1105  kresp=0
1106  !
1107  yrec=trim(hrec)//'%YEAR'
1108  CALL fmwritn2(cfileout_lfi,yrec,cluout_lfi,SIZE(kyear),kyear,4,100,hcomment,kresp)
1109  !
1110  yrec=trim(hrec)//'%MONTH'
1111  CALL fmwritn2(cfileout_lfi,yrec,cluout_lfi,SIZE(kmonth),kmonth,4,100,hcomment,kresp)
1112  !
1113  yrec=trim(hrec)//'%DAY'
1114  CALL fmwritn2(cfileout_lfi,yrec,cluout_lfi,SIZE(kday),kday,4,100,hcomment,kresp)
1115  !
1116  yrec=trim(hrec)//'%TIME'
1117  CALL fmwritx2(cfileout_lfi,yrec,cluout_lfi,SIZE(ptime),ptime,4,100,hcomment,kresp)
1118  !
1119  CALL error_write_surf_lfi(hrec,kresp)
1120  !
1121 #ifdef SFX_MPI
1122  xtime_npio_write = xtime_npio_write + (mpi_wtime() - xtime0)
1123 #endif
1124  !
1125 ENDIF
1126 !
1127 IF (lhook) CALL dr_hook('MODE_WRITE_SURF_LFI:WRITE_SURFT2_LFI',1,zhook_handle)
1128 !
1129 END SUBROUTINE write_surft2_lfi
1130 !
1131 #endif
1132 !
1133 END MODULE mode_write_surf_lfi
1134 !
1135 
subroutine fmwritl1(HFILEM, HRECFM, HFIPRI, KLENG, OFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
Definition: fmwritl1.F90:4
subroutine write_surft2_lfi(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_surfc0_lfi(HREC, HFIELD, KRESP, HCOMMENT)
subroutine write_surft0_lfi(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_surfl1_lfi(HREC, OFIELD, KRESP, HCOMMENT, HDIR)
subroutine write_surfx1_lfi(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine fmwritn1(HFILEM, HRECFM, HFIPRI, KLENG, KFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
Definition: fmwritn1.F90:4
subroutine write_surft1_lfi(HREC, KYEAR, KMONTH, KDAY, PTIME, KRESP, HCOMMENT)
subroutine write_in_lfi_x3_for_mnh(HREC, PFIELD, KRESP, HCOMMENT)
subroutine get_surf_undef(PUNDEF)
character(len=28), save cluout_lfi
subroutine fmwritn2(HFILEM, HRECFM, HFIPRI, KLENG, KFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
Definition: fmwritn2.F90:4
subroutine fmwritx1(HFILEM, HRECFM, HFIPRI, KLENG, PFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
Definition: fmwritx1.F90:4
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
subroutine write_surfx2_lfi(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
integer, parameter jprb
Definition: parkind1.F90:32
subroutine fmwritx2(HFILEM, HRECFM, HFIPRI, KLENG, PFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
Definition: fmwritx2.F90:4
integer, dimension(:), pointer nmask
subroutine fmwritn0(HFILEM, HRECFM, HFIPRI, KLENG, KFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
Definition: fmwritn0.F90:4
subroutine get_luout(HPROGRAM, KLUOUT)
Definition: get_luout.F90:7
logical lhook
Definition: yomhook.F90:15
character(len=28), save cfileout_lfi
subroutine write_in_lfi_x2_for_mnh(HREC, PFIELD, KRESP, HCOMMENT)
subroutine fmwritc0(HFILEM, HRECFM, HFIPRI, KLENG, HFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
Definition: fmwritc0.F90:4
subroutine write_surfx0_lfi(HREC, PFIELD, KRESP, HCOMMENT)
subroutine io_buff(HREC, HACTION, OKNOWN)
Definition: io_buff.F90:8
subroutine write_surfx3_lfi(HREC, PFIELD, KRESP, HCOMMENT, HDIR)
subroutine fmwritl0(HFILEM, HRECFM, HFIPRI, KLENG, OFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
Definition: fmwritl0.F90:4
subroutine error_write_surf_lfi(HREC, KRESP)
subroutine fmwritx3(HFILEM, HRECFM, HFIPRI, KLENG, PFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
Definition: fmwritx3.F90:4
subroutine write_in_lfi_x1_for_mnh(HREC, HREC2, PFIELD, KRESP, HCOMMENT, KU, KB, KE)
subroutine write_surfn1_lfi(HREC, KFIELD, KRESP, HCOMMENT, HDIR)
subroutine write_surfn0_lfi(HREC, KFIELD, KRESP, HCOMMENT)
subroutine fmwritx0(HFILEM, HRECFM, HFIPRI, KLENG, PFIELD, KGRID, KLENCH, HCOMMENT, KRESP)
Definition: fmwritx0.F90:4
subroutine write_surfl0_lfi(HREC, OFIELD, KRESP, HCOMMENT)