source: trunk/LMDZ.PLUTO/libf/phypluto/vdifc_mod.F @ 3187

Last change on this file since 3187 was 3184, checked in by afalco, 2 years ago

Pluto PCM:
Added LMDZ.PLUTO, a copy of the generic model,
cleaned from some unnecessary modules (water, ...)
AF

File size: 18.2 KB
Line 
1      module vdifc_mod
2     
3      implicit none
4     
5      contains
6     
7      subroutine vdifc(ngrid,nlay,nq,ppopsk,         
8     &     ptimestep,pcapcal,lecrit,                       
9     &     pplay,pplev,pzlay,pzlev,pz0,
10     &     pu,pv,ph,pq,ptsrf,pemis,pqsurf,
11     &     pdhfi,pdqfi,pfluxsrf,
12     &     pdudif,pdvdif,pdhdif,pdtsrf,sensibFlux,pq2,
13     &     pdqdif,pdqsdif)
14
15!      use watercommon_h, only : RLVTT, T_h2O_ice_liq, RCPD, mx_eau_sol
16!     &    ,Psat_water, Lcpdqsat_water
17      use radcommon_h, only : sigma
18      use surfdat_h, only: dryness
19      use tracer_h, only: igcm_h2o_vap, igcm_h2o_ice
20      use comcstfi_mod, only: g, r, cpp, rcp
21      use callkeys_mod, only: tracer,nosurf
22
23      implicit none
24
25!==================================================================
26!     
27!     Purpose
28!     -------
29!     Turbulent diffusion (mixing) for pot. T, U, V and tracers
30!     
31!     Implicit scheme
32!     We start by adding to variables x the physical tendencies
33!     already computed. We resolve the equation:
34!
35!     x(t+1) =  x(t) + dt * (dx/dt)phys(t)  +  dt * (dx/dt)difv(t+1)
36!     
37!     Authors
38!     -------
39!     F. Hourdin, F. Forget, R. Fournier (199X)
40!     R. Wordsworth, B. Charnay (2010)
41!     
42!==================================================================
43
44!-----------------------------------------------------------------------
45!     declarations
46!     ------------
47
48
49!     arguments
50!     ---------
51      INTEGER,INTENT(IN) :: ngrid,nlay
52      REAL,INTENT(IN) :: ptimestep
53      REAL,INTENT(IN) :: pplay(ngrid,nlay),pplev(ngrid,nlay+1)
54      REAL,INTENT(IN) :: pzlay(ngrid,nlay),pzlev(ngrid,nlay+1)
55      REAL,INTENT(IN) :: pu(ngrid,nlay),pv(ngrid,nlay),ph(ngrid,nlay)
56      REAL,INTENT(IN) :: ptsrf(ngrid),pemis(ngrid)
57      REAL,INTENT(IN) :: pdhfi(ngrid,nlay)
58      REAL,INTENT(IN) :: pfluxsrf(ngrid)
59      REAL,INTENT(OUT) :: pdudif(ngrid,nlay),pdvdif(ngrid,nlay)
60      REAL,INTENT(OUT) :: pdhdif(ngrid,nlay)
61      REAL,INTENT(OUT) :: pdtsrf(ngrid),sensibFlux(ngrid)
62      REAL,INTENT(IN) :: pcapcal(ngrid)
63      REAL,INTENT(INOUT) :: pq2(ngrid,nlay+1)
64     
65!     Arguments added for condensation
66      REAL,INTENT(IN) :: ppopsk(ngrid,nlay)
67      logical,intent(in) :: lecrit
68      REAL,INTENT(IN) :: pz0
69
70!     Tracers
71!     --------
72      integer,intent(in) :: nq
73      real,intent(in) :: pqsurf(ngrid,nq)
74      real,intent(in) :: pq(ngrid,nlay,nq), pdqfi(ngrid,nlay,nq)
75      real,intent(out) :: pdqdif(ngrid,nlay,nq)
76      real,intent(out) :: pdqsdif(ngrid,nq)
77     
78!     local
79!     -----
80      integer ilev,ig,ilay,nlev
81
82      REAL z4st,zdplanck(ngrid)
83      REAL zkv(ngrid,nlay+1),zkh(ngrid,nlay+1)
84      REAL zcdv(ngrid),zcdh(ngrid)
85      REAL zcdv_true(ngrid),zcdh_true(ngrid)
86      REAL zu(ngrid,nlay),zv(ngrid,nlay)
87      REAL zh(ngrid,nlay)
88      REAL ztsrf2(ngrid)
89      REAL z1(ngrid),z2(ngrid)
90      REAL za(ngrid,nlay),zb(ngrid,nlay)
91      REAL zb0(ngrid,nlay)
92      REAL zc(ngrid,nlay),zd(ngrid,nlay)
93      REAL zcst1
94      REAL zu2!, a
95      REAL zcq(ngrid,nlay),zdq(ngrid,nlay)
96      REAL evap(ngrid)
97      REAL zcq0(ngrid),zdq0(ngrid)
98      REAL zx_alf1(ngrid),zx_alf2(ngrid)
99
100      LOGICAL firstcall
101      SAVE firstcall
102!$OMP THREADPRIVATE(firstcall)
103     
104!     variables added for N2 condensation
105!     ------------------------------------
106      REAL hh                   !, zhcond(ngrid,nlay)
107!     REAL latcond,tcond1mb
108!     REAL acond,bcond
109!     SAVE acond,bcond
110!!$OMP THREADPRIVATE(acond,bcond)
111!     DATA latcond,tcond1mb/5.9e5,136.27/
112
113!     Tracers
114!     -------
115      INTEGER iq
116      REAL zq(ngrid,nlay,nq)
117      REAL zq1temp(ngrid)
118      REAL rho(ngrid)         ! near-surface air density
119      DATA firstcall/.true./
120      REAL kmixmin
121
122!     Variables added for implicit latent heat inclusion
123!     --------------------------------------------------
124      real dqsat(ngrid),psat_temp,qsat(ngrid),psat(ngrid)
125
126      integer ivap, iice ! also make liq for clarity on surface...
127      save ivap, iice
128!$OMP THREADPRIVATE(ivap,iice)
129
130      real, parameter :: karman=0.4
131      real cd0, roughratio
132
133      logical forceWC
134      real masse, Wtot, Wdiff
135
136      real dqsdif_total(ngrid)
137      real zq0(ngrid)
138
139      forceWC=.true.
140!      forceWC=.false.
141
142
143!     Coherence test
144!     --------------
145
146      IF (firstcall) THEN
147!     To compute: Tcond= 1./(bcond-acond*log(.0095*p)) (p in pascal)
148!     bcond=1./tcond1mb
149!     acond=r/latcond
150!     PRINT*,'In vdifc: Tcond(P=1mb)=',tcond1mb,' Lcond=',latcond
151!     PRINT*,'          acond,bcond',acond,bcond
152
153!         if(water)then
154!                iliq=igcm_h2o_vap
155!                ivap=igcm_h2o_vap
156!                iice=igcm_h2o_ice ! simply to make the code legible               
157!                                  ! to be generalised later
158!         endif
159
160         firstcall=.false.
161      ENDIF
162
163!-----------------------------------------------------------------------
164!     1. Initialisation
165!     -----------------
166
167      nlev=nlay+1
168
169!     Calculate rho*dz and dt*rho/dz=dt*rho**2 g/dp
170!     with rho=p/RT=p/ (R Theta) (p/ps)**kappa
171!     ---------------------------------------------
172
173      DO ilay=1,nlay
174         DO ig=1,ngrid
175            za(ig,ilay)=(pplev(ig,ilay)-pplev(ig,ilay+1))/g
176         ENDDO
177      ENDDO
178
179      zcst1=4.*g*ptimestep/(R*R)
180      DO ilev=2,nlev-1
181         DO ig=1,ngrid
182            zb0(ig,ilev)=pplev(ig,ilev)*
183     s           (pplev(ig,1)/pplev(ig,ilev))**rcp /
184     s           (ph(ig,ilev-1)+ph(ig,ilev))
185            zb0(ig,ilev)=zcst1*zb0(ig,ilev)*zb0(ig,ilev)/
186     s           (pplay(ig,ilev-1)-pplay(ig,ilev))
187         ENDDO
188      ENDDO
189      DO ig=1,ngrid
190         zb0(ig,1)=ptimestep*pplev(ig,1)/(R*ptsrf(ig))
191      ENDDO
192
193      dqsdif_total(:)=0.0
194
195!-----------------------------------------------------------------------
196!     2. Add the physical tendencies computed so far
197!     ----------------------------------------------
198
199      DO ilev=1,nlay
200         DO ig=1,ngrid
201            zu(ig,ilev)=pu(ig,ilev)
202            zv(ig,ilev)=pv(ig,ilev)
203            zh(ig,ilev)=ph(ig,ilev)+pdhfi(ig,ilev)*ptimestep
204         ENDDO
205      ENDDO
206      if(tracer) then
207         DO iq =1, nq
208            DO ilev=1,nlay
209               DO ig=1,ngrid
210                  zq(ig,ilev,iq)=pq(ig,ilev,iq) +
211     &                 pdqfi(ig,ilev,iq)*ptimestep
212               ENDDO
213            ENDDO
214         ENDDO
215      end if
216
217!-----------------------------------------------------------------------
218!     3. Turbulence scheme
219!     --------------------
220!
221!     Source of turbulent kinetic energy at the surface
222!     -------------------------------------------------
223!     Formula is Cd_0 = (karman / log[1+z1/z0])^2
224
225      DO ig=1,ngrid
226         roughratio = 1.E+0 + pzlay(ig,1)/pz0
227         cd0 = karman/log(roughratio)
228         cd0 = cd0*cd0
229         zcdv_true(ig) = cd0
230         zcdh_true(ig) = cd0
231         if (nosurf) then
232             zcdv_true(ig) = 0.   !! disable sensible momentum flux
233             zcdh_true(ig) = 0.   !! disable sensible heat flux
234         endif
235      ENDDO
236
237      DO ig=1,ngrid
238         zu2=pu(ig,1)*pu(ig,1)+pv(ig,1)*pv(ig,1)
239         zcdv(ig)=zcdv_true(ig)*sqrt(zu2)
240         zcdh(ig)=zcdh_true(ig)*sqrt(zu2)
241      ENDDO
242
243!     Turbulent diffusion coefficients in the boundary layer
244!     ------------------------------------------------------
245
246      call vdif_kc(ngrid,nlay,ptimestep,g,pzlev,pzlay
247     &     ,pu,pv,ph,zcdv_true
248     &     ,pq2,zkv,zkh)
249
250!     Adding eddy mixing to mimic 3D general circulation in 1D
251!     R. Wordsworth & F. Forget (2010)
252      if ((ngrid.eq.1)) then
253         kmixmin = 1.0e-2       ! minimum eddy mix coeff in 1D
254         do ilev=1,nlay
255            do ig=1,ngrid
256               !zkh(ig,ilev) = 1.0
257               zkh(ig,ilev) = max(kmixmin,zkh(ig,ilev))
258               zkv(ig,ilev) = max(kmixmin,zkv(ig,ilev))
259            end do
260         end do
261      end if
262
263!-----------------------------------------------------------------------
264!     4. Implicit inversion of u
265!     --------------------------
266
267!     u(t+1) =  u(t) + dt * {(du/dt)phys}(t)  +  dt * {(du/dt)difv}(t+1)
268!     avec
269!     /zu/ = u(t) + dt * {(du/dt)phys}(t)   (voir paragraphe 2.)
270!     et
271!     dt * {(du/dt)difv}(t+1) = dt * {(d/dz)[ Ku (du/dz) ]}(t+1)
272!     donc les entrees sont /zcdv/ pour la condition a la limite sol
273!     et /zkv/ = Ku
274     
275      CALL multipl((nlay-1)*ngrid,zkv(1,2),zb0(1,2),zb(1,2))
276      CALL multipl(ngrid,zcdv,zb0,zb)
277
278      DO ig=1,ngrid
279         z1(ig)=1./(za(ig,nlay)+zb(ig,nlay))
280         zc(ig,nlay)=za(ig,nlay)*zu(ig,nlay)*z1(ig)
281         zd(ig,nlay)=zb(ig,nlay)*z1(ig)
282      ENDDO
283
284      DO ilay=nlay-1,1,-1
285         DO ig=1,ngrid
286            z1(ig)=1./(za(ig,ilay)+zb(ig,ilay)+
287     $           zb(ig,ilay+1)*(1.-zd(ig,ilay+1)))
288            zc(ig,ilay)=(za(ig,ilay)*zu(ig,ilay)+
289     $           zb(ig,ilay+1)*zc(ig,ilay+1))*z1(ig)
290            zd(ig,ilay)=zb(ig,ilay)*z1(ig)
291         ENDDO
292      ENDDO
293
294      DO ig=1,ngrid
295         zu(ig,1)=zc(ig,1)
296      ENDDO
297      DO ilay=2,nlay
298         DO ig=1,ngrid
299            zu(ig,ilay)=zc(ig,ilay)+zd(ig,ilay)*zu(ig,ilay-1)
300         ENDDO
301      ENDDO
302
303!-----------------------------------------------------------------------
304!     5. Implicit inversion of v
305!     --------------------------
306
307!     v(t+1) =  v(t) + dt * {(dv/dt)phys}(t)  +  dt * {(dv/dt)difv}(t+1)
308!     avec
309!     /zv/ = v(t) + dt * {(dv/dt)phys}(t)   (voir paragraphe 2.)
310!     et
311!     dt * {(dv/dt)difv}(t+1) = dt * {(d/dz)[ Kv (dv/dz) ]}(t+1)
312!     donc les entrees sont /zcdv/ pour la condition a la limite sol
313!     et /zkv/ = Kv
314
315      DO ig=1,ngrid
316         z1(ig)=1./(za(ig,nlay)+zb(ig,nlay))
317         zc(ig,nlay)=za(ig,nlay)*zv(ig,nlay)*z1(ig)
318         zd(ig,nlay)=zb(ig,nlay)*z1(ig)
319      ENDDO
320
321      DO ilay=nlay-1,1,-1
322         DO ig=1,ngrid
323            z1(ig)=1./(za(ig,ilay)+zb(ig,ilay)+
324     $           zb(ig,ilay+1)*(1.-zd(ig,ilay+1)))
325            zc(ig,ilay)=(za(ig,ilay)*zv(ig,ilay)+
326     $           zb(ig,ilay+1)*zc(ig,ilay+1))*z1(ig)
327            zd(ig,ilay)=zb(ig,ilay)*z1(ig)
328         ENDDO
329      ENDDO
330
331      DO ig=1,ngrid
332         zv(ig,1)=zc(ig,1)
333      ENDDO
334      DO ilay=2,nlay
335         DO ig=1,ngrid
336            zv(ig,ilay)=zc(ig,ilay)+zd(ig,ilay)*zv(ig,ilay-1)
337         ENDDO
338      ENDDO
339
340!----------------------------------------------------------------------------
341!     6. Implicit inversion of h, not forgetting the coupling with the ground
342
343!     h(t+1) =  h(t) + dt * {(dh/dt)phys}(t)  +  dt * {(dh/dt)difv}(t+1)
344!     avec
345!     /zh/ = h(t) + dt * {(dh/dt)phys}(t)   (voir paragraphe 2.)
346!     et
347!     dt * {(dh/dt)difv}(t+1) = dt * {(d/dz)[ Kh (dh/dz) ]}(t+1)
348!     donc les entrees sont /zcdh/ pour la condition de raccord au sol
349!     et /zkh/ = Kh
350
351!     Using the wind modified by friction for lifting and sublimation
352!     ---------------------------------------------------------------
353         DO ig=1,ngrid
354            zu2      = zu(ig,1)*zu(ig,1)+zv(ig,1)*zv(ig,1)
355            zcdv(ig) = zcdv_true(ig)*sqrt(zu2)
356            zcdh(ig) = zcdh_true(ig)*sqrt(zu2)
357         ENDDO
358
359      CALL multipl((nlay-1)*ngrid,zkh(1,2),zb0(1,2),zb(1,2))
360      CALL multipl(ngrid,zcdh,zb0,zb)
361
362      DO ig=1,ngrid
363         z1(ig)=1./(za(ig,nlay)+zb(ig,nlay))
364         zc(ig,nlay)=za(ig,nlay)*zh(ig,nlay)*z1(ig)
365         zd(ig,nlay)=zb(ig,nlay)*z1(ig)
366      ENDDO
367
368      DO ilay=nlay-1,2,-1
369         DO ig=1,ngrid
370            z1(ig)=1./(za(ig,ilay)+zb(ig,ilay)+
371     &           zb(ig,ilay+1)*(1.-zd(ig,ilay+1)))
372            zc(ig,ilay)=(za(ig,ilay)*zh(ig,ilay)+
373     &           zb(ig,ilay+1)*zc(ig,ilay+1))*z1(ig)
374            zd(ig,ilay)=zb(ig,ilay)*z1(ig)
375         ENDDO
376      ENDDO
377
378      DO ig=1,ngrid
379         z1(ig)=1./(za(ig,1)+zb(ig,1)+
380     &        zb(ig,2)*(1.-zd(ig,2)))
381         zc(ig,1)=(za(ig,1)*zh(ig,1)+
382     &        zb(ig,2)*zc(ig,2))*z1(ig)
383         zd(ig,1)=zb(ig,1)*z1(ig)
384      ENDDO
385
386!     Calculate (d Planck / dT) at the interface temperature
387!     ------------------------------------------------------
388
389      z4st=4.0*sigma*ptimestep
390      DO ig=1,ngrid
391         zdplanck(ig)=z4st*pemis(ig)*ptsrf(ig)*ptsrf(ig)*ptsrf(ig)
392      ENDDO
393
394!     Calculate temperature tendency at the interface (dry case)
395!     ----------------------------------------------------------
396!     Sum of fluxes at interface at time t + \delta t gives change in T:
397!       radiative fluxes
398!       turbulent convective (sensible) heat flux
399!       flux (if any) from subsurface
400
401!       if(.not.water) then
402
403!          DO ig=1,ngrid
404
405!             z1(ig) = pcapcal(ig)*ptsrf(ig) + cpp*zb(ig,1)*zc(ig,1)
406!      &           + zdplanck(ig)*ptsrf(ig) + pfluxsrf(ig)*ptimestep
407!             z2(ig) = pcapcal(ig) + cpp*zb(ig,1)*(1.-zd(ig,1))
408!      &           +zdplanck(ig)
409!             ztsrf2(ig) = z1(ig) / z2(ig)
410!             pdtsrf(ig) = (ztsrf2(ig) - ptsrf(ig))/ptimestep
411!             zh(ig,1)   = zc(ig,1) + zd(ig,1)*ztsrf2(ig)
412!          ENDDO
413
414! !     Recalculate temperature to top of atmosphere, starting from ground
415! !     ------------------------------------------------------------------
416
417!          DO ilay=2,nlay
418!             DO ig=1,ngrid
419!                hh = zh(ig,ilay-1)
420!                zh(ig,ilay)=zc(ig,ilay)+zd(ig,ilay)*hh
421!             ENDDO
422!          ENDDO
423
424!       endif                     ! not water
425
426!-----------------------------------------------------------------------
427!     TRACERS (no vapour)
428!     -------
429
430      if(tracer) then
431
432!     Calculate vertical flux from the bottom to the first layer (dust)
433!     -----------------------------------------------------------------
434         do ig=1,ngrid 
435            rho(ig) = zb0(ig,1) /ptimestep
436         end do
437
438         pdqsdif(1:ngrid,1:nq)=0
439
440!     Implicit inversion of q
441!     -----------------------
442         do iq=1,nq
443
444            if (iq.ne.igcm_h2o_vap) then
445
446               DO ig=1,ngrid
447                  z1(ig)=1./(za(ig,nlay)+zb(ig,nlay))
448                  zcq(ig,nlay)=za(ig,nlay)*zq(ig,nlay,iq)*z1(ig)
449                  zdq(ig,nlay)=zb(ig,nlay)*z1(ig)
450               ENDDO
451           
452               DO ilay=nlay-1,2,-1
453                  DO ig=1,ngrid
454                     z1(ig)=1./(za(ig,ilay)+zb(ig,ilay)+
455     &                    zb(ig,ilay+1)*(1.-zdq(ig,ilay+1)))
456                     zcq(ig,ilay)=(za(ig,ilay)*zq(ig,ilay,iq)+
457     &                    zb(ig,ilay+1)*zcq(ig,ilay+1))*z1(ig)
458                     zdq(ig,ilay)=zb(ig,ilay)*z1(ig)
459                  ENDDO
460               ENDDO
461
462   !             if ((water).and.(iq.eq.iice)) then
463   !                ! special case for water ice tracer: do not include
464   !                ! h2o ice tracer from surface (which is set when handling
465   !                ! h2o vapour case (see further down).
466   !                ! zb(ig,1)=0 if iq ne ivap
467   !                DO ig=1,ngrid
468   !                   z1(ig)=1./(za(ig,1)+
469   !   &                    zb(ig,2)*(1.-zdq(ig,2)))
470   !                   zcq(ig,1)=(za(ig,1)*zq(ig,1,iq)+
471   !   &                    zb(ig,2)*zcq(ig,2))*z1(ig)
472   !                ENDDO
473   !             else             ! general case
474                  DO ig=1,ngrid
475                     z1(ig)=1./(za(ig,1)+
476     &                    zb(ig,2)*(1.-zdq(ig,2)))
477                     zcq(ig,1)=(za(ig,1)*zq(ig,1,iq)+
478     &                    zb(ig,2)*zcq(ig,2)
479     &                    +(-pdqsdif(ig,iq))*ptimestep)*z1(ig)
480                          ! tracer flux from surface
481                          ! currently pdqsdif always zero here,
482                          ! so last line is superfluous
483                  enddo
484               ! endif            ! of if (water.and.(iq.eq.igcm_h2o_ice))
485
486
487!     Starting upward calculations for simple tracer mixing (e.g., dust)
488               do ig=1,ngrid
489                  zq(ig,1,iq)=zcq(ig,1)
490               end do
491
492               do ilay=2,nlay
493                  do ig=1,ngrid
494                     zq(ig,ilay,iq)=zcq(ig,ilay)+
495     $                    zdq(ig,ilay)*zq(ig,ilay-1,iq)
496                  end do
497               end do
498
499            endif               ! if (iq.ne.igcm_h2o_vap)
500
501!     Removed (AF24): Calculate temperature tendency including latent heat term
502!     and assuming an infinite source of water on the ground
503!     ------------------------------------------------------------------
504
505        end do                  ! of do iq=1,nq
506      endif                     ! traceur
507
508
509!-----------------------------------------------------------------------
510!     8. Final calculation of the vertical diffusion tendencies
511!     -----------------------------------------------------------------
512
513      do ilev = 1, nlay
514         do ig=1,ngrid
515            pdudif(ig,ilev)=(zu(ig,ilev)-
516     &           (pu(ig,ilev)))/ptimestep
517            pdvdif(ig,ilev)=(zv(ig,ilev)-
518     &           (pv(ig,ilev)))/ptimestep
519            hh = ph(ig,ilev)+pdhfi(ig,ilev)*ptimestep
520
521            pdhdif(ig,ilev)=( zh(ig,ilev)- hh )/ptimestep
522         enddo
523      enddo
524
525      DO ig=1,ngrid  ! computing sensible heat flux (atm => surface)
526         sensibFlux(ig)=cpp*zb(ig,1)/ptimestep*(zh(ig,1)-ztsrf2(ig))
527      ENDDO     
528
529      if (tracer) then
530         do iq = 1, nq
531            do ilev = 1, nlay
532               do ig=1,ngrid
533                  pdqdif(ig,ilev,iq)=(zq(ig,ilev,iq)-
534     &           (pq(ig,ilev,iq)+pdqfi(ig,ilev,iq)*ptimestep))/
535     &           ptimestep
536               enddo
537            enddo
538         enddo
539
540!          if(water.and.forceWC)then ! force water conservation in model
541!                                    ! we calculate the difference and add it to the ground
542!                                    ! this is ugly and should be improved in the future
543!             do ig=1,ngrid
544!                Wtot=0.0
545!                do ilay=1,nlay
546!                   masse = (pplev(ig,ilay) - pplev(ig,ilay+1))/g
547! !                  Wtot=Wtot+masse*(zq(ig,ilay,iice)-
548! !     &                 (pq(ig,ilay,iice)+pdqfi(ig,ilay,iice)*ptimestep))
549!                   Wtot=Wtot+masse*(zq(ig,ilay,ivap)-
550!      &                 (pq(ig,ilay,ivap)+pdqfi(ig,ilay,ivap)*ptimestep))
551!                enddo
552!                Wdiff=Wtot/ptimestep+pdqsdif(ig,ivap)+pdqsdif(ig,iice)
553
554!                if(ztsrf2(ig).gt.T_h2O_ice_liq)then
555!                   pdqsdif(ig,ivap)=pdqsdif(ig,ivap)-Wdiff
556!                else
557!                   pdqsdif(ig,iice)=pdqsdif(ig,iice)-Wdiff
558!                endif
559!             enddo
560
561!          endif
562
563      endif
564
565      ! if(water)then
566      ! call writediagfi(ngrid,'beta','Dryness coefficient',' ',2,dryness)
567      ! endif
568
569
570      end subroutine vdifc
571
572      end module vdifc_mod
Note: See TracBrowser for help on using the repository browser.