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

Last change on this file since 5277 was 5274, checked in by abarral, 7 hours ago

Replace yomcst.h by existing module

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