617db1037ed397b614215e19272174445fcfb8a8
[MNH-git_open_source-lfs.git] / src / SURFEX / modd_io_buffn.F90
1 !SURFEX_LIC Copyright 1994-2014 Meteo-France 
2 !SURFEX_LIC This is part of the SURFEX software governed by the CeCILL-C  licence
3 !SURFEX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SURFEX_LIC for details. version 1.
5 !     ##################
6       MODULE MODD_IO_BUFF_n
7 !     ##################
8 !
9 !!****  *MODD_IO_IO_BUFF - 
10 !!
11 !!    PURPOSE
12 !!    -------
13 !
14 !!
15 !!**  IMPLICIT ARGUMENTS
16 !!    ------------------
17 !!      None 
18 !!
19 !!    REFERENCE
20 !!    ---------
21 !!
22 !!    AUTHOR
23 !!    ------
24 !!      V. Masson    *Meteo France*
25 !!
26 !!    MODIFICATIONS
27 !!    -------------
28 !!    
29 !
30 !*       0.   DECLARATIONS
31 !
32 !!      
33 USE YOMHOOK   ,ONLY : LHOOK,   DR_HOOK
34 USE PARKIND1  ,ONLY : JPRB
35 !
36 IMPLICIT NONE
37
38 TYPE IO_BUFF_t
39
40  CHARACTER(LEN=12), DIMENSION(3000) :: CREC   ! list of records already read/written
41 INTEGER                            :: NREC   ! number of records read/written
42
43 END TYPE IO_BUFF_t
44 !
45 TYPE(IO_BUFF_t), ALLOCATABLE, TARGET, SAVE :: IO_BUFF_MODEL(:)
46 !
47  CHARACTER(LEN=12), DIMENSION(:),    POINTER :: CREC=> NULL()
48 INTEGER,                            POINTER :: NREC=> NULL()
49 !
50 CONTAINS
51 SUBROUTINE IO_BUFF_GOTO_MODEL(KFROM, KTO, LKFROM)
52 LOGICAL, INTENT(IN) :: LKFROM
53 INTEGER, INTENT(IN) :: KFROM, KTO
54 REAL(KIND=JPRB) :: ZHOOK_HANDLE
55 IF (LHOOK) CALL DR_HOOK('MODD_IO_BUFF_N:IO_BUFF_GOTO_MODEL',0,ZHOOK_HANDLE)
56 CREC=>IO_BUFF_MODEL(KTO)%CREC
57 NREC=>IO_BUFF_MODEL(KTO)%NREC
58 IF (LHOOK) CALL DR_HOOK('MODD_IO_BUFF_N:IO_BUFF_GOTO_MODEL',1,ZHOOK_HANDLE)
59 !
60 END SUBROUTINE IO_BUFF_GOTO_MODEL
61
62 SUBROUTINE IO_BUFF_ALLOC(KMODEL)
63 INTEGER, INTENT(IN) :: KMODEL
64 REAL(KIND=JPRB) :: ZHOOK_HANDLE
65 IF (LHOOK) CALL DR_HOOK("MODD_IO_BUFF_N:IO_BUFF_ALLOC",0,ZHOOK_HANDLE)
66 ALLOCATE(IO_BUFF_MODEL(KMODEL))
67 IO_BUFF_MODEL(:)%NREC=0
68 IF (LHOOK) CALL DR_HOOK("MODD_IO_BUFF_N:IO_BUFF_ALLOC",1,ZHOOK_HANDLE)
69 END SUBROUTINE IO_BUFF_ALLOC
70
71 SUBROUTINE IO_BUFF_DEALLO
72 REAL(KIND=JPRB) :: ZHOOK_HANDLE
73 IF (LHOOK) CALL DR_HOOK("MODD_IO_BUFF_N:IO_BUFF_DEALLO",0,ZHOOK_HANDLE)
74 IF (ALLOCATED(IO_BUFF_MODEL)) DEALLOCATE(IO_BUFF_MODEL)
75 IF (LHOOK) CALL DR_HOOK("MODD_IO_BUFF_N:IO_BUFF_DEALLO",1,ZHOOK_HANDLE)
76 END SUBROUTINE IO_BUFF_DEALLO
77 !
78 END MODULE MODD_IO_BUFF_n