35 USE yomhook
,ONLY : lhook, dr_hook
36 USE parkind1
,ONLY : jprb
52 INTEGER :: NBLOCKTOT = 1
55 INTEGER :: NBLOCKTOT = 1
59 INTEGER :: NINDX1SFX = 1
61 INTEGER :: NINDX2SFX = 1
65 CHARACTER(LEN=100) :: CWORK0, CWORKB
67 LOGICAL,
DIMENSION(:),
POINTER :: LWORKD
68 INTEGER :: NWORK0, NWORKVAR, NWORKB, NWORKDIMS
69 INTEGER,
DIMENSION(4) :: NWORKLEN
70 INTEGER,
DIMENSION(4) :: NWORKIDS
71 INTEGER,
DIMENSION(:),
POINTER :: NWORK_FULL
72 INTEGER,
DIMENSION(:),
POINTER :: NWORKD
73 INTEGER,
DIMENSION(:),
POINTER :: NWORK
74 INTEGER,
DIMENSION(:,:),
POINTER :: NWORK2_FULL
75 INTEGER,
DIMENSION(:,:),
POINTER :: NWORKD2
76 INTEGER,
DIMENSION(:,:),
POINTER :: NWORK2
77 INTEGER,
DIMENSION(:,:,:),
POINTER :: NWORKD3
79 REAL,
DIMENSION(:),
POINTER :: XWORK_FULL
80 REAL,
DIMENSION(:),
POINTER :: XWORKD
81 REAL,
DIMENSION(:),
POINTER :: XWORK
82 REAL,
DIMENSION(:,:),
POINTER :: XWORK2_FULL
83 REAL,
DIMENSION(:,:),
POINTER :: XWORKD2
84 REAL,
DIMENSION(:,:),
POINTER :: XWORK2
85 REAL,
DIMENSION(:,:,:),
POINTER :: XWORKD3
86 REAL,
DIMENSION(:,:,:),
POINTER :: XWORK3
92 SUBROUTINE init_dim(KSIZE_OMP,KBLOCK,KKPROMA,KINDX1,KINDX2)
96 INTEGER,
DIMENSION(0:),
INTENT(IN) :: ksize_omp
97 INTEGER,
INTENT(IN) :: kblock
98 INTEGER,
INTENT(OUT) :: kkproma
99 INTEGER,
INTENT(OUT) :: kindx1
100 INTEGER,
INTENT(OUT) :: kindx2
102 REAL(KIND=JPRB) :: zhook_handle
104 IF (lhook) CALL dr_hook(
'MODD_SURFEX_OMP:INIT_DIM',0,zhook_handle)
106 IF((kblock<
SIZE(ksize_omp)).AND.(kblock<nblocktot))
THEN
107 kkproma = ksize_omp(kblock)
108 kindx2 = sum(ksize_omp(0:kblock))
109 kindx1 = kindx2 - kkproma + 1
111 write(0,*)
"Warning[OMP]: dummy dim init for KBLOCK=",kblock
117 IF (lhook) CALL dr_hook(
'MODD_SURFEX_OMP:INIT_DIM',1,zhook_handle)
125 INTEGER,
INTENT(IN) :: kni
126 INTEGER,
INTENT(OUT) :: kkproma
127 INTEGER,
INTENT(OUT) :: kindx1
128 INTEGER,
INTENT(OUT) :: kindx2
130 REAL(KIND=JPRB) :: zhook_handle
132 IF (lhook) CALL dr_hook(
'MODD_SURFEX_OMP:RESET_DIM',0,zhook_handle)
138 IF (lhook) CALL dr_hook(
'MODD_SURFEX_OMP:RESET_DIM',1,zhook_handle)
146 CHARACTER(LEN=*),
INTENT(IN) :: hlog
147 REAL,
INTENT(IN),
OPTIONAL :: rlog
148 INTEGER,
INTENT(IN),
OPTIONAL :: klog
149 INTEGER,
INTENT(IN),
OPTIONAL :: klog2
150 LOGICAL,
INTENT(IN),
OPTIONAL :: olog
153 REAL(KIND=JPRB) :: zhook_handle
155 IF (lhook) CALL dr_hook(
'MODD_SURFEX_OMP:PLOG_OMP',0,zhook_handle)
159 IF (present(olog))
THEN
160 IF (present(rlog))
THEN
161 IF (present(klog))
THEN
162 IF (present(klog2))
THEN
163 print*,me, hlog, klog, klog2, rlog, olog
165 print*,me, hlog, klog, rlog, olog
168 print*,me, hlog, rlog, olog
170 ELSEIF (present(klog))
THEN
171 IF (present(klog2))
THEN
172 print*,me, hlog, klog, klog2, olog
174 print*,me, hlog, klog, olog
177 print*,me, hlog, olog
179 ELSEIF (present(rlog))
THEN
180 IF (present(klog))
THEN
181 IF (present(klog2))
THEN
182 print*,me, hlog, klog, klog2, rlog
184 print*,me, hlog, klog, rlog
187 print*,me, hlog, rlog
189 ELSEIF (present(klog))
THEN
190 IF (present(klog2))
THEN
191 print*,me, hlog, klog, klog2
193 print*,me, hlog, klog
199 IF (lhook) CALL dr_hook(
'MODD_SURFEX_OMP:PLOG_OMP',1,zhook_handle)
subroutine plog_omp(HLOG, RLOG, KLOG, KLOG2, OLOG)
subroutine init_dim(KSIZE_OMP, KBLOCK, KKPROMA, KINDX1, KINDX2)
subroutine reset_dim(KNI, KKPROMA, KINDX1, KINDX2)