LMDZ
buffer_mod.F90
Go to the documentation of this file.
1 MODULE buffer_mod
2 
3 PRIVATE
4  REAL,PARAMETER :: grow_factor=1.5
5 
6  INTEGER, POINTER, SAVE :: buffer_i(:)
7  INTEGER,SAVE :: size_buffer_i = 0
8 !$OMP THREADPRIVATE(buffer_i,size_buffer_i)
9 
10  REAL,POINTER,SAVE :: buffer_r(:)
11  INTEGER,SAVE :: size_buffer_r = 0
12 !$OMP THREADPRIVATE(buffer_r,size_buffer_r)
13 
14  LOGICAL,POINTER,SAVE :: buffer_l(:)
15  INTEGER,SAVE :: size_buffer_l = 0
16 !$OMP THREADPRIVATE(buffer_l,size_buffer_l)
17 
18  CHARACTER,POINTER,SAVE :: buffer_c(:)
19  INTEGER,SAVE :: size_buffer_c = 0
20 !$OMP THREADPRIVATE(buffer_c,size_buffer_c)
21 
22 INTERFACE get_buffer
24 END INTERFACE
25 
26 PUBLIC :: get_buffer
27 
28 CONTAINS
29 
30  SUBROUTINE get_buffer_i(buff,buff_size)
31  IMPLICIT NONE
32  INTEGER,POINTER :: buff(:)
33  INTEGER,INTENT(IN) :: buff_size
34 
35  IF (buff_size>size_buffer_i) THEN
36  DEALLOCATE(buffer_i)
38  ALLOCATE(buffer_i(size_buffer_i))
39  ENDIF
40 
41  buff=>buffer_i
42  END SUBROUTINE get_buffer_i
43 
44  SUBROUTINE get_buffer_r(buff,buff_size)
45  IMPLICIT NONE
46  REAL,POINTER :: buff(:)
47  INTEGER,INTENT(IN) :: buff_size
48 
49  IF (buff_size>size_buffer_r) THEN
50  DEALLOCATE(buffer_r)
52  ALLOCATE(buffer_r(size_buffer_r))
53  ENDIF
54 
55  buff=>buffer_r
56  END SUBROUTINE get_buffer_r
57 
58  SUBROUTINE get_buffer_l(buff,buff_size)
59  IMPLICIT NONE
60  LOGICAL,POINTER :: buff(:)
61  INTEGER,INTENT(IN) :: buff_size
62 
63  IF (buff_size>size_buffer_l) THEN
64  DEALLOCATE(buffer_l)
66  ALLOCATE(buffer_l(size_buffer_l))
67  ENDIF
68 
69  buff=>buffer_l
70  END SUBROUTINE get_buffer_l
71 
72  SUBROUTINE get_buffer_c(buff,buff_size)
73  IMPLICIT NONE
74  CHARACTER,POINTER :: buff(:)
75  INTEGER,INTENT(IN) :: buff_size
76 
77  IF (buff_size>size_buffer_c) THEN
78  DEALLOCATE(buffer_c)
80  ALLOCATE(buffer_c(size_buffer_c))
81  ENDIF
82 
83  buff=>buffer_c
84  END SUBROUTINE get_buffer_c
85 
86 END MODULE buffer_mod
real, dimension(:), pointer, save buffer_r
Definition: buffer_mod.F90:10
logical, dimension(:), pointer, save buffer_l
Definition: buffer_mod.F90:14
real, parameter grow_factor
Definition: buffer_mod.F90:4
subroutine get_buffer_c(buff, buff_size)
Definition: buffer_mod.F90:73
character, dimension(:), pointer, save buffer_c
Definition: buffer_mod.F90:18
integer, dimension(:), pointer, save buffer_i
Definition: buffer_mod.F90:6
subroutine get_buffer_r(buff, buff_size)
Definition: buffer_mod.F90:45
integer, save size_buffer_r
Definition: buffer_mod.F90:11
integer, save size_buffer_l
Definition: buffer_mod.F90:15
subroutine get_buffer_i(buff, buff_size)
Definition: buffer_mod.F90:31
integer, save size_buffer_c
Definition: buffer_mod.F90:19
subroutine get_buffer_l(buff, buff_size)
Definition: buffer_mod.F90:59
integer, save size_buffer_i
Definition: buffer_mod.F90:7