source: LMDZ6/trunk/libf/phylmd/climb_hq_mod.f90 @ 5278

Last change on this file since 5278 was 5278, checked in by abarral, 6 hours ago

Fix: duplicate save attribute

  • Property copyright set to
    Name of program: LMDZ
    Creation date: 1984
    Version: LMDZ5
    License: CeCILL version 2
    Holder: Laboratoire de m\'et\'eorologie dynamique, CNRS, UMR 8539
    See the license file in the root directory
  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 20.0 KB
Line 
1MODULE climb_hq_mod
2!
3! Module to solve the verctical diffusion of "q" and "H";
4! specific humidity and potential energi.
5!
6  USE dimphy
7
8  IMPLICIT NONE
9  PRIVATE
10  PUBLIC :: climb_hq_down, climb_hq_up, d_h_col_vdf, f_h_bnd
11
12  REAL, DIMENSION(:,:), ALLOCATABLE :: gamaq, gamah
13  !$OMP THREADPRIVATE(gamaq,gamah)
14  REAL, DIMENSION(:,:), ALLOCATABLE :: Ccoef_Q, Dcoef_Q
15  !$OMP THREADPRIVATE(Ccoef_Q, Dcoef_Q)
16  REAL, DIMENSION(:,:), ALLOCATABLE :: Ccoef_H, Dcoef_H
17  !$OMP THREADPRIVATE(Ccoef_H, Dcoef_H)
18  REAL, DIMENSION(:), ALLOCATABLE   :: Acoef_Q, Bcoef_Q
19  !$OMP THREADPRIVATE(Acoef_Q, Bcoef_Q)
20  REAL, DIMENSION(:), ALLOCATABLE   :: Acoef_H, Bcoef_H
21  !$OMP THREADPRIVATE(Acoef_H, Bcoef_H)
22  REAL, DIMENSION(:,:), ALLOCATABLE :: Kcoefhq
23  !$OMP THREADPRIVATE(Kcoefhq)
24  REAL, SAVE, DIMENSION(:,:), ALLOCATABLE :: h_old ! for diagnostics, h before solving diffusion
25  !$OMP THREADPRIVATE(h_old)
26  REAL, SAVE, DIMENSION(:), ALLOCATABLE :: d_h_col_vdf ! for diagnostics, vertical integral of enthalpy change
27  !$OMP THREADPRIVATE(d_h_col_vdf)
28  REAL, SAVE, DIMENSION(:), ALLOCATABLE :: f_h_bnd ! for diagnostics, enthalpy flux at surface
29  !$OMP THREADPRIVATE(f_h_bnd)
30
31CONTAINS
32!
33!****************************************************************************************
34!
35  SUBROUTINE climb_hq_down(knon, coefhq, paprs, pplay, &
36       delp, temp, q, dtime, &
37!!! nrlmd le 02/05/2011
38       Ccoef_H_out, Ccoef_Q_out, Dcoef_H_out, Dcoef_Q_out, &
39       Kcoef_hq_out, gama_q_out, gama_h_out, &
40!!!
41       Acoef_H_out, Acoef_Q_out, Bcoef_H_out, Bcoef_Q_out)
42
43! This routine calculates recursivly the coefficients C and D
44! for the quantity X=[Q,H] in equation X(k) = C(k) + D(k)*X(k-1), where k is
45! the index of the vertical layer.
46   USE yomcst_mod_h, ONLY: RPI, RCLUM, RHPLA, RKBOL, RNAVO                   &
47          , RDAY, REA, REPSM, RSIYEA, RSIDAY, ROMEGA                  &
48          , R_ecc, R_peri, R_incl                                      &
49          , RA, RG, R1SA                                         &
50          , RSIGMA                                                     &
51          , R, RMD, RMV, RD, RV, RCPD                    &
52          , RMO3, RMCO2, RMC, RMCH4, RMN2O, RMCFC11, RMCFC12        &
53          , RCPV, RCVD, RCVV, RKAPPA, RETV, eps_w                    &
54          , RCW, RCS                                                 &
55          , RLVTT, RLSTT, RLMLT, RTT, RATM                           &
56          , RESTT, RALPW, RBETW, RGAMW, RALPS, RBETS, RGAMS            &
57          , RALPD, RBETD, RGAMD
58! Input arguments
59!****************************************************************************************
60    INTEGER, INTENT(IN)                      :: knon
61    REAL, DIMENSION(klon,klev), INTENT(IN)   :: coefhq
62    REAL, DIMENSION(klon,klev), INTENT(IN)   :: pplay
63    REAL, DIMENSION(klon,klev+1), INTENT(IN) :: paprs
64    REAL, DIMENSION(klon,klev), INTENT(IN)   :: temp, delp  ! temperature
65    REAL, DIMENSION(klon,klev), INTENT(IN)   :: q
66    REAL, INTENT(IN)                         :: dtime
67
68! Output arguments
69!****************************************************************************************
70    REAL, DIMENSION(klon), INTENT(OUT)       :: Acoef_H_out
71    REAL, DIMENSION(klon), INTENT(OUT)       :: Acoef_Q_out
72    REAL, DIMENSION(klon), INTENT(OUT)       :: Bcoef_H_out
73    REAL, DIMENSION(klon), INTENT(OUT)       :: Bcoef_Q_out
74
75!!! nrlmd le 02/05/2011
76    REAL, DIMENSION(klon,klev), INTENT(OUT)  :: Ccoef_H_out
77    REAL, DIMENSION(klon,klev), INTENT(OUT)  :: Ccoef_Q_out
78    REAL, DIMENSION(klon,klev), INTENT(OUT)  :: Dcoef_H_out
79    REAL, DIMENSION(klon,klev), INTENT(OUT)  :: Dcoef_Q_out
80    REAL, DIMENSION(klon,klev), INTENT(OUT)  :: Kcoef_hq_out
81    REAL, DIMENSION(klon,klev), INTENT(OUT)  :: gama_q_out
82    REAL, DIMENSION(klon,klev), INTENT(OUT)  :: gama_h_out
83!!!
84
85! Local variables
86!****************************************************************************************
87    LOGICAL, SAVE                            :: first=.TRUE.
88    !$OMP THREADPRIVATE(first)
89! JLD now renamed h_old and declared in module
90!    REAL, DIMENSION(klon,klev)               :: local_H
91    REAL, DIMENSION(klon)                    :: psref
92    REAL                                     :: delz, pkh
93    INTEGER                                  :: k, i, ierr
94! Include
95!****************************************************************************************
96    INCLUDE "compbl.h"
97
98
99!****************************************************************************************
100! 1)
101! Allocation at first time step only
102!   
103!****************************************************************************************
104
105    IF (first) THEN
106       first=.FALSE.
107       ALLOCATE(Ccoef_Q(klon,klev), STAT=ierr)
108       IF ( ierr /= 0 )  PRINT*,' pb in allloc Ccoef_Q, ierr=', ierr
109       
110       ALLOCATE(Dcoef_Q(klon,klev), STAT=ierr)
111       IF ( ierr /= 0 )  PRINT*,' pb in allloc Dcoef_Q, ierr=', ierr
112       
113       ALLOCATE(Ccoef_H(klon,klev), STAT=ierr)
114       IF ( ierr /= 0 )  PRINT*,' pb in allloc Ccoef_H, ierr=', ierr
115       
116       ALLOCATE(Dcoef_H(klon,klev), STAT=ierr)
117       IF ( ierr /= 0 )  PRINT*,' pb in allloc Dcoef_H, ierr=', ierr
118       
119       ALLOCATE(Acoef_Q(klon), Bcoef_Q(klon), Acoef_H(klon), Bcoef_H(klon), STAT=ierr)
120       IF ( ierr /= 0 )  PRINT*,' pb in allloc Acoef_X and Bcoef_X, ierr=', ierr
121       
122       ALLOCATE(Kcoefhq(klon,klev), STAT=ierr)
123       IF ( ierr /= 0 )  PRINT*,' pb in allloc Kcoefhq, ierr=', ierr
124       
125       ALLOCATE(gamaq(1:klon,2:klev), STAT=ierr)
126       IF ( ierr /= 0 ) PRINT*,' pb in allloc gamaq, ierr=', ierr
127       
128       ALLOCATE(gamah(1:klon,2:klev), STAT=ierr)
129       IF ( ierr /= 0 ) PRINT*,' pb in allloc gamah, ierr=', ierr
130       
131       ALLOCATE(h_old(klon,klev), STAT=ierr)
132       IF ( ierr /= 0 )  PRINT*,' pb in allloc h_old, ierr=', ierr
133       
134       ALLOCATE(d_h_col_vdf(klon), STAT=ierr)
135       IF ( ierr /= 0 )  PRINT*,' pb in allloc d_h_col_vdf, ierr=', ierr
136       
137       ALLOCATE(f_h_bnd(klon), STAT=ierr)
138       IF ( ierr /= 0 )  PRINT*,' pb in allloc f_h_bnd, ierr=', ierr
139    END IF
140
141!****************************************************************************************
142! 2)
143! Definition of the coeficient K
144!
145!****************************************************************************************
146    Kcoefhq(:,:) = 0.0
147    DO k = 2, klev
148       DO i = 1, knon
149          Kcoefhq(i,k) = &
150               coefhq(i,k)*RG*RG*dtime /(pplay(i,k-1)-pplay(i,k)) &
151               *(paprs(i,k)*2/(temp(i,k)+temp(i,k-1))/RD)**2
152       ENDDO
153    ENDDO
154
155!****************************************************************************************
156! 3)
157! Calculation of gama for "Q" and "H"
158!
159!****************************************************************************************
160!   surface pressure is used as reference
161    psref(:) = paprs(:,1)
162
163!   definition of gama
164    IF (iflag_pbl == 1) THEN
165       gamaq(:,:) = 0.0
166       gamah(:,:) = -1.0e-03
167       gamah(:,2) = -2.5e-03
168 
169! conversion de gama
170       DO k = 2, klev
171          DO i = 1, knon
172             delz = RD * (temp(i,k-1)+temp(i,k)) / &
173                    2.0 / RG / paprs(i,k) * (pplay(i,k-1)-pplay(i,k))
174             pkh  = (psref(i)/paprs(i,k))**RKAPPA
175         
176! convertie gradient verticale d'humidite specifique en difference d'humidite specifique entre centre de couches
177             gamaq(i,k) = gamaq(i,k) * delz   
178! convertie gradient verticale de temperature en difference de temperature potentielle entre centre de couches
179             gamah(i,k) = gamah(i,k) * delz * RCPD * pkh
180          ENDDO
181       ENDDO
182
183    ELSE
184       gamaq(:,:) = 0.0
185       gamah(:,:) = 0.0
186    ENDIF
187   
188
189!****************************************************************************************   
190! 4)
191! Calculte the coefficients C and D for specific humidity, q
192!
193!****************************************************************************************
194   
195    CALL calc_coef(knon, Kcoefhq(:,:), gamaq(:,:), delp(:,:), q(:,:), &
196         Ccoef_Q(:,:), Dcoef_Q(:,:), Acoef_Q, Bcoef_Q)
197
198!****************************************************************************************
199! 5)
200! Calculte the coefficients C and D for potentiel entalpie, H
201!
202!****************************************************************************************
203    h_old(:,:) = 0.0
204
205    DO k=1,klev
206       DO i = 1, knon
207          ! convertie la temperature en entalpie potentielle
208          h_old(i,k) = RCPD * temp(i,k) * &
209               (psref(i)/pplay(i,k))**RKAPPA
210       ENDDO
211    ENDDO
212
213    CALL calc_coef(knon, Kcoefhq(:,:), gamah(:,:), delp(:,:), h_old(:,:), &
214         Ccoef_H(:,:), Dcoef_H(:,:), Acoef_H, Bcoef_H)
215 
216!****************************************************************************************
217! 6)
218! Return the first layer in output variables
219!
220!****************************************************************************************
221    Acoef_H_out = Acoef_H
222    Bcoef_H_out = Bcoef_H
223    Acoef_Q_out = Acoef_Q
224    Bcoef_Q_out = Bcoef_Q
225
226!****************************************************************************************
227! 7)
228! If Pbl is split, return also the other layers in output variables
229!
230!****************************************************************************************
231!!! jyg le 07/02/2012
232!!jyg       IF (mod(iflag_pbl_split,2) .eq.1) THEN
233       IF (mod(iflag_pbl_split,10) .ge.1) THEN
234!!! nrlmd le 02/05/2011
235    DO k= 1, klev
236      DO i= 1, klon
237        Ccoef_H_out(i,k) = Ccoef_H(i,k)
238        Dcoef_H_out(i,k) = Dcoef_H(i,k)
239        Ccoef_Q_out(i,k) = Ccoef_Q(i,k)
240        Dcoef_Q_out(i,k) = Dcoef_Q(i,k)
241        Kcoef_hq_out(i,k) = Kcoefhq(i,k)
242          IF (k.eq.1) THEN
243            gama_h_out(i,k)  = 0.
244            gama_q_out(i,k)  = 0.
245          ELSE
246            gama_h_out(i,k)  = gamah(i,k)
247            gama_q_out(i,k)  = gamaq(i,k)
248          ENDIF
249      ENDDO
250    ENDDO
251!!!     
252       ENDIF  ! (mod(iflag_pbl_split,2) .ge.1)
253!!!
254
255  END SUBROUTINE climb_hq_down
256!
257!****************************************************************************************
258!
259  SUBROUTINE calc_coef(knon, Kcoef, gama, delp, X, Ccoef, Dcoef, Acoef, Bcoef)
260!
261! Calculate the coefficients C and D in : X(k) = C(k) + D(k)*X(k-1)
262! where X is H or Q, and k the vertical level k=1,klev
263!
264USE yomcst_mod_h, ONLY: RPI, RCLUM, RHPLA, RKBOL, RNAVO                   &
265          , RDAY, REA, REPSM, RSIYEA, RSIDAY, ROMEGA                  &
266          , R_ecc, R_peri, R_incl                                      &
267          , RA, RG, R1SA                                         &
268          , RSIGMA                                                     &
269          , R, RMD, RMV, RD, RV, RCPD                    &
270          , RMO3, RMCO2, RMC, RMCH4, RMN2O, RMCFC11, RMCFC12        &
271          , RCPV, RCVD, RCVV, RKAPPA, RETV, eps_w                    &
272          , RCW, RCS                                                 &
273          , RLVTT, RLSTT, RLMLT, RTT, RATM                           &
274          , RESTT, RALPW, RBETW, RGAMW, RALPS, RBETS, RGAMS            &
275          , RALPD, RBETD, RGAMD! Input arguments
276!****************************************************************************************
277    INTEGER, INTENT(IN)                      :: knon
278    REAL, DIMENSION(klon,klev), INTENT(IN)   :: Kcoef, delp
279    REAL, DIMENSION(klon,klev), INTENT(IN)   :: X
280    REAL, DIMENSION(klon,2:klev), INTENT(IN) :: gama
281
282! Output arguments
283!****************************************************************************************
284    REAL, DIMENSION(klon), INTENT(OUT)       :: Acoef, Bcoef
285    REAL, DIMENSION(klon,klev), INTENT(OUT)  :: Ccoef, Dcoef
286
287! Local variables
288!****************************************************************************************
289    INTEGER                                  :: k, i
290    REAL                                     :: buf
291
292!****************************************************************************************
293! Niveau au sommet, k=klev
294!
295!****************************************************************************************
296    Ccoef(:,:) = 0.0
297    Dcoef(:,:) = 0.0
298
299    DO i = 1, knon
300       buf = delp(i,klev) + Kcoef(i,klev)
301       
302       Ccoef(i,klev) = (X(i,klev)*delp(i,klev) - Kcoef(i,klev)*gama(i,klev))/buf
303       Dcoef(i,klev) = Kcoef(i,klev)/buf
304    END DO
305
306
307!****************************************************************************************
308! Niveau  (klev-1) <= k <= 2
309!
310!****************************************************************************************
311
312    DO k=(klev-1),2,-1
313       DO i = 1, knon
314          buf = delp(i,k) + Kcoef(i,k) + Kcoef(i,k+1)*(1.-Dcoef(i,k+1))
315          Ccoef(i,k) = (X(i,k)*delp(i,k) + Kcoef(i,k+1)*Ccoef(i,k+1) + &
316               Kcoef(i,k+1)*gama(i,k+1) - Kcoef(i,k)*gama(i,k))/buf
317          Dcoef(i,k) = Kcoef(i,k)/buf
318       END DO
319    END DO
320
321!****************************************************************************************
322! Niveau k=1
323!
324!****************************************************************************************
325
326    DO i = 1, knon
327       buf = delp(i,1) + Kcoef(i,2)*(1.-Dcoef(i,2))
328       Acoef(i) = (X(i,1)*delp(i,1) + Kcoef(i,2)*(gama(i,2)+Ccoef(i,2)))/buf
329       Bcoef(i) = -1. * RG / buf
330    END DO
331
332  END SUBROUTINE calc_coef
333!
334!****************************************************************************************
335!
336  SUBROUTINE climb_hq_up(knon, dtime, t_old, q_old, &
337       flx_q1, flx_h1, paprs, pplay, &
338!!! nrlmd le 02/05/2011
339       Acoef_H_in, Acoef_Q_in, Bcoef_H_in, Bcoef_Q_in, &
340       Ccoef_H_in, Ccoef_Q_in, Dcoef_H_in, Dcoef_Q_in, &
341       Kcoef_hq_in, gama_q_in, gama_h_in, &
342!!!
343       flux_q, flux_h, d_q, d_t)
344!
345! This routine calculates the flux and tendency of the specific humidity q and
346! the potential engergi H.
347! The quantities q and H are calculated according to
348! X(k) = C(k) + D(k)*X(k-1) for X=[q,H], where the coefficients
349! C and D are known from before and k is index of the vertical layer.
350!   
351USE yomcst_mod_h, ONLY: RPI, RCLUM, RHPLA, RKBOL, RNAVO                   &
352          , RDAY, REA, REPSM, RSIYEA, RSIDAY, ROMEGA                  &
353          , R_ecc, R_peri, R_incl                                      &
354          , RA, RG, R1SA                                         &
355          , RSIGMA                                                     &
356          , R, RMD, RMV, RD, RV, RCPD                    &
357          , RMO3, RMCO2, RMC, RMCH4, RMN2O, RMCFC11, RMCFC12        &
358          , RCPV, RCVD, RCVV, RKAPPA, RETV, eps_w                    &
359          , RCW, RCS                                                 &
360          , RLVTT, RLSTT, RLMLT, RTT, RATM                           &
361          , RESTT, RALPW, RBETW, RGAMW, RALPS, RBETS, RGAMS            &
362          , RALPD, RBETD, RGAMD
363! Input arguments
364!****************************************************************************************
365    INTEGER, INTENT(IN)                      :: knon
366    REAL, INTENT(IN)                         :: dtime
367    REAL, DIMENSION(klon,klev), INTENT(IN)   :: t_old, q_old
368    REAL, DIMENSION(klon), INTENT(IN)        :: flx_q1, flx_h1
369    REAL, DIMENSION(klon,klev+1), INTENT(IN) :: paprs
370    REAL, DIMENSION(klon,klev), INTENT(IN)   :: pplay
371
372!!! nrlmd le 02/05/2011
373    REAL, DIMENSION(klon), INTENT(IN)        :: Acoef_H_in,Acoef_Q_in, Bcoef_H_in, Bcoef_Q_in
374    REAL, DIMENSION(klon,klev), INTENT(IN)   :: Ccoef_H_in, Ccoef_Q_in, Dcoef_H_in, Dcoef_Q_in
375    REAL, DIMENSION(klon,klev), INTENT(IN)   :: Kcoef_hq_in, gama_q_in, gama_h_in
376!!!
377
378! Output arguments
379!****************************************************************************************
380    REAL, DIMENSION(klon,klev), INTENT(OUT)  :: flux_q, flux_h, d_q, d_t
381
382! Local variables
383!****************************************************************************************
384    LOGICAL, SAVE                            :: last=.FALSE.
385    REAL, DIMENSION(klon,klev)               :: h_new, q_new
386    REAL, DIMENSION(klon)                    :: psref         
387    INTEGER                                  :: k, i, ierr
388 
389! Include
390!****************************************************************************************
391    INCLUDE "compbl.h"
392
393!****************************************************************************************
394! 1)
395! Definition of some variables
396    REAL, DIMENSION(klon,klev)               :: d_h, zairm
397!
398!****************************************************************************************
399    flux_q(:,:) = 0.0
400    flux_h(:,:) = 0.0
401    d_q(:,:)    = 0.0
402    d_t(:,:)    = 0.0
403    d_h(:,:)    = 0.0
404    f_h_bnd(:)= 0.0
405
406    psref(1:knon) = paprs(1:knon,1) 
407
408!!! jyg le 07/02/2012
409!!jyg       IF (mod(iflag_pbl_split,2) .eq.1) THEN
410       IF (mod(iflag_pbl_split,10) .ge.1) THEN
411!!! nrlmd le 02/05/2011
412    DO i = 1, knon
413      Acoef_H(i)=Acoef_H_in(i)
414      Acoef_Q(i)=Acoef_Q_in(i)
415      Bcoef_H(i)=Bcoef_H_in(i)
416      Bcoef_Q(i)=Bcoef_Q_in(i)
417    ENDDO
418    DO k = 1, klev
419      DO i = 1, knon
420        Ccoef_H(i,k)=Ccoef_H_in(i,k)
421        Ccoef_Q(i,k)=Ccoef_Q_in(i,k)
422        Dcoef_H(i,k)=Dcoef_H_in(i,k)
423        Dcoef_Q(i,k)=Dcoef_Q_in(i,k)
424        Kcoefhq(i,k)=Kcoef_hq_in(i,k)
425          IF (k.gt.1) THEN
426            gamah(i,k)=gama_h_in(i,k)
427            gamaq(i,k)=gama_q_in(i,k)
428          ENDIF
429      ENDDO
430    ENDDO
431!!!     
432       ENDIF  ! (mod(iflag_pbl_split,2) .ge.1)
433!!!
434
435!****************************************************************************************
436! 2)
437! Calculation of Q and H
438!
439!****************************************************************************************
440
441!- First layer
442    q_new(1:knon,1) = Acoef_Q(1:knon) + Bcoef_Q(1:knon)*flx_q1(1:knon)*dtime
443    h_new(1:knon,1) = Acoef_H(1:knon) + Bcoef_H(1:knon)*flx_h1(1:knon)*dtime
444    f_h_bnd(1:knon) = flx_h1(1:knon)
445!- All the other layers
446    DO k = 2, klev
447       DO i = 1, knon
448          q_new(i,k) = Ccoef_Q(i,k) + Dcoef_Q(i,k)*q_new(i,k-1)
449          h_new(i,k) = Ccoef_H(i,k) + Dcoef_H(i,k)*h_new(i,k-1)
450       END DO
451    END DO
452!****************************************************************************************
453! 3)
454! Calculation of the flux for Q and H
455!
456!****************************************************************************************
457
458!- The flux at first layer, k=1
459    flux_q(1:knon,1)=flx_q1(1:knon)
460    flux_h(1:knon,1)=flx_h1(1:knon)
461
462!- The flux at all layers above surface
463    DO k = 2, klev
464       DO i = 1, knon
465          flux_q(i,k) = (Kcoefhq(i,k)/RG/dtime) * &
466               (q_new(i,k)-q_new(i,k-1)+gamaq(i,k))
467
468          flux_h(i,k) = (Kcoefhq(i,k)/RG/dtime) * &
469               (h_new(i,k)-h_new(i,k-1)+gamah(i,k))
470       END DO
471    END DO
472
473!****************************************************************************************
474! 4)
475! Calculation of tendency for Q and H
476!
477!****************************************************************************************
478    d_h_col_vdf(:) = 0.0
479    DO k = 1, klev
480       DO i = 1, knon
481          d_t(i,k) = h_new(i,k)/(psref(i)/pplay(i,k))**RKAPPA/RCPD - t_old(i,k)
482          d_q(i,k) = q_new(i,k) - q_old(i,k)
483          d_h(i,k) = h_new(i,k) - h_old(i,k)
484!JLD          d_t(i,k) = d_h(i,k)/(psref(i)/pplay(i,k))**RKAPPA/RCPD    !correction a venir
485    ! layer air mass
486          zairm(i, k) = (paprs(i,k)-paprs(i,k+1))/rg
487          d_h_col_vdf(i) = d_h_col_vdf(i) + d_h(i,k)*zairm(i,k)
488        END DO
489    END DO
490
491!****************************************************************************************
492! Some deallocations
493!
494!****************************************************************************************
495    IF (last) THEN
496       DEALLOCATE(Ccoef_Q, Dcoef_Q, Ccoef_H, Dcoef_H,stat=ierr)   
497       IF ( ierr /= 0 )  PRINT*,' pb in dealllocate Ccoef_Q, Dcoef_Q, Ccoef_H, Dcoef_H, ierr=', ierr
498       DEALLOCATE(Acoef_Q, Bcoef_Q, Acoef_H, Bcoef_H,stat=ierr)   
499       IF ( ierr /= 0 )  PRINT*,' pb in dealllocate Acoef_Q, Bcoef_Q, Acoef_H, Bcoef_H, ierr=', ierr
500       DEALLOCATE(gamaq, gamah,stat=ierr)
501       IF ( ierr /= 0 )  PRINT*,' pb in dealllocate gamaq, gamah, ierr=', ierr
502       DEALLOCATE(Kcoefhq,stat=ierr)
503       IF ( ierr /= 0 )  PRINT*,' pb in dealllocate Kcoefhq, ierr=', ierr
504       DEALLOCATE(h_old, d_h_col_vdf, f_h_bnd, stat=ierr)
505       IF ( ierr /= 0 )  PRINT*,' pb in dealllocate h_old, d_h_col_vdf, f_h_bnd, ierr=', ierr
506    END IF
507  END SUBROUTINE climb_hq_up
508!
509!****************************************************************************************
510!
511END MODULE climb_hq_mod
512
513 
514
515
516
517
Note: See TracBrowser for help on using the repository browser.