source: trunk/LMDZ.MARS/libf/phymars/vdif_kc.F @ 2800

Last change on this file since 2800 was 2616, checked in by romain.vande, 3 years ago

LMDZ_MARS RV : Open_MP;
Put all the "save" variables as "!$OMP THREADPRIVATE" in phymars.
The code can now be tested, see README for more info

File size: 22.5 KB
Line 
1      SUBROUTINE vdif_kc(ngrid,nlay,nq,dt,g,
2     &                   zlev,zlay,u,v,teta,cd,q2,km,kn,zq)
3
4      use tracer_mod, only: noms
5      IMPLICIT NONE
6c.......................................................................
7#include "callkeys.h"
8c.......................................................................
9c
10c dt : pas de temps
11c g  : g
12c zlev : altitude a chaque niveau (interface inferieure de la couche
13c        de meme indice)
14c zlay : altitude au centre de chaque couche
15c u,v : vitesse au centre de chaque couche
16c       (en entree : la valeur au debut du pas de temps)
17c teta : temperature potentielle au centre de chaque couche
18c        (en entree : la valeur au debut du pas de temps)
19c cd : cdrag
20c      (en entree : la valeur au debut du pas de temps)
21c q2 : $q^2$ au bas de chaque couche
22c      (en entree : la valeur au debut du pas de temps)
23c      (en sortie : la valeur a la fin du pas de temps)
24c km : diffusivite turbulente de quantite de mouvement (au bas de chaque
25c      couche)
26c      (en sortie : la valeur a la fin du pas de temps)
27c kn : diffusivite turbulente des scalaires (au bas de chaque couche)
28c      (en sortie : la valeur a la fin du pas de temps)
29c
30c.......................................................................
31      REAL,INTENT(IN) :: dt,g
32      REAL,INTENT(IN) :: zlev(ngrid,nlay+1)
33      REAL,INTENT(IN) :: zlay(ngrid,nlay)
34      REAL,INTENT(IN) :: u(ngrid,nlay)
35      REAL,INTENT(IN) :: v(ngrid,nlay)
36      REAL,INTENT(IN) :: teta(ngrid,nlay)
37      REAL,INTENT(IN) :: cd(ngrid)
38      REAL,INTENT(INOUT) :: q2(ngrid,nlay+1)
39      REAL,INTENT(OUT) :: km(ngrid,nlay+1)
40      REAL,INTENT(OUT) :: kn(ngrid,nlay+1)
41      REAL,INTENT(IN) :: zq(ngrid,nlay,nq)
42c.......................................................................
43c
44c nlay : nombre de couches       
45c nlev : nombre de niveaux
46c ngrid : nombre de points de grille       
47c unsdz : 1 sur l'epaisseur de couche
48c unsdzdec : 1 sur la distance entre le centre de la couche et le
49c            centre de la couche inferieure
50c q : echelle de vitesse au bas de chaque couche
51c     (valeur a la fin du pas de temps)
52c
53c.......................................................................
54      INTEGER,INTENT(IN) :: nlay,ngrid,nq
55      INTEGER nlev
56      REAL unsdz(ngrid,nlay)
57      REAL unsdzdec(ngrid,nlay+1)
58      REAL q(ngrid,nlay+1)
59c.......................................................................
60c
61c kmpre : km au debut du pas de temps
62c qcstat : q : solution stationnaire du probleme couple
63c          (valeur a la fin du pas de temps)
64c q2cstat : q2 : solution stationnaire du probleme couple
65c           (valeur a la fin du pas de temps)
66c
67c.......................................................................
68      REAL kmpre(ngrid,nlay+1)
69      REAL qcstat
70      REAL q2cstat
71c.......................................................................
72c
73c long : longueur de melange calculee selon Blackadar
74c
75c.......................................................................
76      REAL long(ngrid,nlay+1)
77c.......................................................................
78c
79c kmq3 : terme en q^3 dans le developpement de km
80c        (valeur au debut du pas de temps)
81c kmcstat : valeur de km solution stationnaire du systeme {q2 ; du/dz}
82c           (valeur a la fin du pas de temps)
83c knq3 : terme en q^3 dans le developpement de kn
84c mcstat : valeur de m solution stationnaire du systeme {q2 ; du/dz}
85c          (valeur a la fin du pas de temps)
86c m2cstat : valeur de m2 solution stationnaire du systeme {q2 ; du/dz}
87c           (valeur a la fin du pas de temps)
88c m : valeur a la fin du pas de temps
89c mpre : valeur au debut du pas de temps
90c m2 : valeur a la fin du pas de temps
91c n2 : valeur a la fin du pas de temps
92c
93c.......................................................................
94      REAL kmq3
95      REAL kmcstat
96      REAL knq3
97      REAL mcstat
98      REAL m2cstat
99      REAL m(ngrid,nlay+1)
100      REAL mpre(ngrid,nlay+1)
101      REAL m2(ngrid,nlay+1)
102      REAL n2(ngrid,nlay+1)
103c.......................................................................
104c
105c gn : intermediaire pour les coefficients de stabilite
106c gnmin : borne inferieure de gn (-0.23 ou -0.28)
107c gnmax : borne superieure de gn (0.0233)
108c gninf : vrai si gn est en dessous de sa borne inferieure
109c gnsup : vrai si gn est en dessus de sa borne superieure
110c gm : drole d'objet bien utile
111c ri : nombre de Richardson
112c sn : coefficient de stabilite pour n
113c snq2 : premier terme du developement limite de sn en q2
114c sm : coefficient de stabilite pour m
115c smq2 : premier terme du developement limite de sm en q2
116c
117c.......................................................................
118      REAL gn
119      REAL gnmin
120      REAL gnmax
121      LOGICAL gninf
122      LOGICAL gnsup
123      REAL gm
124c      REAL ri(ngrid,nlay+1)
125      REAL sn(ngrid,nlay+1)
126      REAL snq2(ngrid,nlay+1)
127      REAL sm(ngrid,nlay+1)
128      REAL smq2(ngrid,nlay+1)
129c.......................................................................
130c
131c kappa : consatnte de Von Karman (0.4)
132c long0 : longueur de reference pour le calcul de long (160)
133c a1,a2,b1,b2,c1 : constantes d'origine pour les  coefficients
134c                  de stabilite (0.92/0.74/16.6/10.1/0.08)
135c cn1,cn2 : constantes pour sn
136c cm1,cm2,cm3,cm4 : constantes pour sm
137c
138c.......................................................................
139      REAL kappa
140      REAL long0
141      REAL a1,a2,b1,b2,c1
142      REAL cn1,cn2
143      REAL cm1,cm2,cm3,cm4
144c.......................................................................
145c
146c termq : termes en $q$ dans l'equation de q2
147c termq3 : termes en $q^3$ dans l'equation de q2
148c termqm2 : termes en $q*m^2$ dans l'equation de q2
149c termq3m2 : termes en $q^3*m^2$ dans l'equation de q2
150c
151c.......................................................................
152      REAL termq
153      REAL termq3
154      REAL termqm2
155      REAL termq3m2
156c.......................................................................
157c
158c q2min : borne inferieure de q2
159c q2max : borne superieure de q2
160c
161c.......................................................................
162      REAL q2min
163      REAL q2max
164c.......................................................................
165c knmin : borne inferieure de kn
166c kmmin : borne inferieure de km
167c.......................................................................
168      REAL knmin
169      REAL kmmin
170c.......................................................................
171      INTEGER ilay,ilev,igrid
172      REAL tmp1,tmp2
173c.......................................................................
174      PARAMETER (kappa=0.4E+0)
175      PARAMETER (long0=160.E+0)
176      PARAMETER (gnmin=-10.E+0)
177      PARAMETER (gnmax=0.0233E+0)
178      PARAMETER (a1=0.92E+0)
179      PARAMETER (a2=0.74E+0)
180      PARAMETER (b1=16.6E+0)
181      PARAMETER (b2=10.1E+0)
182      PARAMETER (c1=0.08E+0)
183      PARAMETER (knmin=1.E-5)
184      PARAMETER (kmmin=1.E-5)
185      PARAMETER (q2min=1.E-3)
186      PARAMETER (q2max=1.E+2)
187c
188      PARAMETER (
189     &  cn1=a2*(1.E+0 -6.E+0 *a1/b1)
190     &          )
191      PARAMETER (
192     &  cn2=-3.E+0 *a2*(6.E+0 *a1+b2)
193     &          )
194      PARAMETER (
195     &  cm1=a1*(1.E+0 -3.E+0 *c1-6.E+0 *a1/b1)
196     &          )
197      PARAMETER (
198     &  cm2=a1*(-3.E+0 *a2*((b2-3.E+0 *a2)*(1.E+0 -6.E+0 *a1/b1)
199     &          -3.E+0 *c1*(b2+6.E+0 *a1)))
200     &          )
201      PARAMETER (
202     &  cm3=-3.E+0 *a2*(6.E+0 *a1+b2)
203     &          )
204      PARAMETER (
205     &  cm4=-9.E+0 *a1*a2
206     &          )
207
208c AC: variables for theta_m computation
209
210      INTEGER ico2,iq
211      SAVE ico2
212
213!$OMP THREADPRIVATE(ico2)
214
215      REAL m_co2, m_noco2, A , B
216      SAVE A, B
217
218!$OMP THREADPRIVATE(A,B)
219
220      LOGICAL firstcall
221      save firstcall
222
223!$OMP THREADPRIVATE(firstcall)
224
225      data firstcall/.true./
226      REAL zhc(ngrid,nlay)
227c.......................................................................
228c  Initialization
229c.......................................................................
230
231      ! AS: OK firstcall absolute
232      if(firstcall) then
233        ico2=0
234        if (tracer) then
235!     Prepare Special treatment if one of the tracers is CO2 gas
236           do iq=1,nq
237             if (noms(iq).eq."co2") then
238                ico2=iq
239                m_co2 = 44.01E-3  ! CO2 molecular mass (kg/mol)
240                m_noco2 = 33.37E-3  ! Non condensible mol mass (kg/mol)
241!               Compute A and B coefficient use to compute
242!               mean molecular mass Mair defined by
243!               1/Mair = q(ico2)/m_co2 + (1-q(ico2))/m_noco2
244!               1/Mair = A*q(ico2) + B
245                A =(1/m_co2 - 1/m_noco2)
246                B=1/m_noco2
247             end if
248           enddo
249        endif
250
251      firstcall=.false.
252      endif !of if firstcall
253
254      nlev=nlay+1
255     
256      ! Other initializations of local variables (to be clean)
257      long(:,:)=0.
258      n2(:,:)=0.
259      sn(:,:)=0.
260      snq2(:,:)=0.
261      sm(:,:)=0.
262      smq2(:,:)=0.
263c.......................................................................
264c  Special treatment for co2
265c.......................................................................
266
267      if (ico2.ne.0) then
268!     Special case if one of the tracers is CO2 gas
269         DO ilay=1,nlay
270           DO igrid=1,ngrid
271            zhc(igrid,ilay) = teta(igrid,ilay)*(A*zq(igrid,ilay,ico2)+B)
272           ENDDO
273         ENDDO
274       else
275          zhc(:,:)=teta(:,:)
276       end if
277
278c.......................................................................
279c  traitment des valeur de q2 en entree
280c.......................................................................
281c
282      DO ilev=1,nlev
283                                                      DO igrid=1,ngrid
284        q2(igrid,ilev)=amax1(q2(igrid,ilev),q2min)
285        q(igrid,ilev)=sqrt(q2(igrid,ilev))
286                                                      ENDDO
287      ENDDO
288c
289                                                      DO igrid=1,ngrid
290      tmp1=cd(igrid)*(u(igrid,1)**2+v(igrid,1)**2)
291      q2(igrid,1)=b1**(2.E+0/3.E+0)*tmp1
292      q2(igrid,1)=amax1(q2(igrid,1),q2min)
293      q(igrid,1)=sqrt(q2(igrid,1))
294                                                      ENDDO
295c
296c.......................................................................
297c  les increments verticaux
298c.......................................................................
299c
300c!!!!! allerte !!!!!c
301c!!!!! zlev n'est pas declare a nlev !!!!!c
302c!!!!! ---->
303c                                                     DO igrid=1,ngrid
304c           zlev(igrid,nlev)=zlay(igrid,nlay)
305c    &             +( zlay(igrid,nlay) - zlev(igrid,nlev-1) )
306c                                                     ENDDO           
307c!!!!! <----
308c!!!!! allerte !!!!!c
309c
310      DO ilay=1,nlay
311                                                      DO igrid=1,ngrid
312        unsdz(igrid,ilay)=1.E+0/(zlev(igrid,ilay+1)-zlev(igrid,ilay))
313                                                      ENDDO
314      ENDDO
315                                                      DO igrid=1,ngrid
316      unsdzdec(igrid,1)=1.E+0/(zlay(igrid,1)-zlev(igrid,1))
317                                                      ENDDO
318      DO ilay=2,nlay
319                                                      DO igrid=1,ngrid
320        unsdzdec(igrid,ilay)=1.E+0/(zlay(igrid,ilay)-zlay(igrid,ilay-1))
321                                                      ENDDO
322      ENDDO
323                                                      DO igrid=1,ngrid
324      unsdzdec(igrid,nlay+1)=1.E+0/(zlev(igrid,nlay+1)-zlay(igrid,nlay))
325                                                      ENDDO
326c
327c.......................................................................
328c  le cisaillement et le gradient de temperature
329c.......................................................................
330c
331                                                      DO igrid=1,ngrid
332      m2(igrid,1)=(unsdzdec(igrid,1)
333     &                   *u(igrid,1))**2
334     &                 +(unsdzdec(igrid,1)
335     &                   *v(igrid,1))**2
336      m(igrid,1)=sqrt(m2(igrid,1))
337      mpre(igrid,1)=m(igrid,1)
338                                                      ENDDO
339c
340c-----------------------------------------------------------------------
341      DO ilev=2,nlev-1
342                                                      DO igrid=1,ngrid
343c-----------------------------------------------------------------------
344c
345        n2(igrid,ilev)=g*unsdzdec(igrid,ilev)
346     &                   *(zhc(igrid,ilev)-zhc(igrid,ilev-1))
347     &                   /(zhc(igrid,ilev)+zhc(igrid,ilev-1)) *2.E+0
348c
349c --->
350c       on ne sais traiter que les cas stratifies. et l'ajustement
351c       convectif est cense faire en sorte que seul des configurations
352c       stratifiees soient rencontrees en entree de cette routine.
353c       mais, bon ... on sait jamais (meme on sait que n2 prends
354c       quelques valeurs negatives ... parfois) alors :
355c<---
356c
357        IF (n2(igrid,ilev).lt.0.E+0) THEN
358          n2(igrid,ilev)=0.E+0
359        ENDIF
360c
361        m2(igrid,ilev)=(unsdzdec(igrid,ilev)
362     &                     *(u(igrid,ilev)-u(igrid,ilev-1)))**2
363     &                   +(unsdzdec(igrid,ilev)
364     &                     *(v(igrid,ilev)-v(igrid,ilev-1)))**2
365        m(igrid,ilev)=sqrt(m2(igrid,ilev))
366        mpre(igrid,ilev)=m(igrid,ilev)
367c
368c-----------------------------------------------------------------------
369                                                      ENDDO
370      ENDDO
371c-----------------------------------------------------------------------
372c
373                                                      DO igrid=1,ngrid
374      m2(igrid,nlev)=m2(igrid,nlev-1)
375      m(igrid,nlev)=m(igrid,nlev-1)
376      mpre(igrid,nlev)=m(igrid,nlev)
377                                                      ENDDO
378c
379c.......................................................................
380c  calcul des fonctions de stabilite
381c.......................................................................
382c
383c-----------------------------------------------------------------------
384      DO ilev=2,nlev-1
385                                                      DO igrid=1,ngrid
386c-----------------------------------------------------------------------
387c
388        tmp1=kappa*(zlev(igrid,ilev)-zlev(igrid,1))
389        long(igrid,ilev)=tmp1/(1.E+0 + tmp1/long0)
390        gn=-long(igrid,ilev)**2 / q2(igrid,ilev)
391     &                                           * n2(igrid,ilev)
392        gm=long(igrid,ilev)**2 / q2(igrid,ilev)
393     &                                           * m2(igrid,ilev)
394c
395        gninf=.false.
396        gnsup=.false.
397        long(igrid,ilev)=long(igrid,ilev) ! not very useful...
398        long(igrid,ilev)=long(igrid,ilev) ! not very useful...
399c
400        IF (gn.lt.gnmin) THEN
401          gninf=.true.
402          gn=gnmin
403        ENDIF
404c
405        IF (gn.gt.gnmax) THEN
406          gnsup=.true.
407          gn=gnmax
408        ENDIF
409c
410        sn(igrid,ilev)=cn1/(1.E+0 +cn2*gn)
411        sm(igrid,ilev)=
412     &    (cm1+cm2*gn)
413     &   /( (1.E+0 +cm3*gn)
414     &     *(1.E+0 +cm4*gn) )
415c
416        IF ((gninf).or.(gnsup)) THEN
417          snq2(igrid,ilev)=0.E+0
418          smq2(igrid,ilev)=0.E+0
419        ELSE
420          snq2(igrid,ilev)=
421     &     -gn
422     &     *(-cn1*cn2/(1.E+0 +cn2*gn)**2 )
423          smq2(igrid,ilev)=
424     &     -gn
425     &     *( cm2*(1.E+0 +cm3*gn)
426     &           *(1.E+0 +cm4*gn)
427     &       -( cm3*(1.E+0 +cm4*gn)
428     &         +cm4*(1.E+0 +cm3*gn) )
429     &       *(cm1+cm2*gn)            )
430     &     /( (1.E+0 +cm3*gn)
431     &       *(1.E+0 +cm4*gn) )**2
432        ENDIF
433c
434c --->
435c       la decomposition de Taylor en q2 n'a de sens que
436c       dans les cas stratifies ou sn et sm sont quasi
437c       proportionnels a q2. ailleurs on laisse le meme
438c       algorithme car l'ajustement convectif fait le travail.
439c       mais c'est delirant quand sn et snq2 n'ont pas le meme
440c       signe : dans ces cas, on ne fait pas la decomposition.
441c<---
442c
443        IF (snq2(igrid,ilev)*sn(igrid,ilev).le.0.E+0)
444     &      snq2(igrid,ilev)=0.E+0
445        IF (smq2(igrid,ilev)*sm(igrid,ilev).le.0.E+0)
446     &      smq2(igrid,ilev)=0.E+0
447c
448c-----------------------------------------------------------------------
449                                                      ENDDO
450      ENDDO
451c-----------------------------------------------------------------------
452c
453c.......................................................................
454c  calcul de km et kn au debut du pas de temps
455c.......................................................................
456c
457                                                      DO igrid=1,ngrid
458      kn(igrid,1)=knmin
459      km(igrid,1)=kmmin
460      kmpre(igrid,1)=km(igrid,1)
461                                                      ENDDO
462c
463c-----------------------------------------------------------------------
464      DO ilev=2,nlev-1
465                                                      DO igrid=1,ngrid
466c-----------------------------------------------------------------------
467c
468        kn(igrid,ilev)=long(igrid,ilev)*q(igrid,ilev)
469     &                                         *sn(igrid,ilev)
470        km(igrid,ilev)=long(igrid,ilev)*q(igrid,ilev)
471     &                                         *sm(igrid,ilev)
472        kmpre(igrid,ilev)=km(igrid,ilev)
473c
474c-----------------------------------------------------------------------
475                                                      ENDDO
476      ENDDO
477c-----------------------------------------------------------------------
478c
479                                                      DO igrid=1,ngrid
480      kn(igrid,nlev)=kn(igrid,nlev-1)
481      km(igrid,nlev)=km(igrid,nlev-1)
482      kmpre(igrid,nlev)=km(igrid,nlev)
483                                                      ENDDO
484c
485c.......................................................................
486c  boucle sur les niveaux 2 a nlev-1
487c.......................................................................
488c
489c---->
490      DO 10001 ilev=2,nlev-1
491c---->
492      DO 10002 igrid=1,ngrid
493c
494c.......................................................................
495c
496c  calcul des termes sources et puits de l'equation de q2
497c  ------------------------------------------------------
498c
499        knq3=kn(igrid,ilev)*snq2(igrid,ilev)
500     &                                    /sn(igrid,ilev)
501        kmq3=km(igrid,ilev)*smq2(igrid,ilev)
502     &                                    /sm(igrid,ilev)
503c
504        termq=0.E+0
505        termq3=0.E+0
506        termqm2=0.E+0
507        termq3m2=0.E+0
508c
509        tmp1=dt*2.E+0 *km(igrid,ilev)*m2(igrid,ilev)
510        tmp2=dt*2.E+0 *kmq3*m2(igrid,ilev)
511        termqm2=termqm2
512     &    +dt*2.E+0 *km(igrid,ilev)*m2(igrid,ilev)
513     &    -dt*2.E+0 *kmq3*m2(igrid,ilev)
514        termq3m2=termq3m2
515     &    +dt*2.E+0 *kmq3*m2(igrid,ilev)
516c
517        termq=termq
518     &    -dt*2.E+0 *kn(igrid,ilev)*n2(igrid,ilev)
519     &    +dt*2.E+0 *knq3*n2(igrid,ilev)
520        termq3=termq3
521     &    -dt*2.E+0 *knq3*n2(igrid,ilev)
522c
523        termq3=termq3
524     &    -dt*2.E+0 *q(igrid,ilev)**3 / (b1*long(igrid,ilev))
525c
526c.......................................................................
527c
528c  resolution stationnaire couplee avec le gradient de vitesse local
529c  -----------------------------------------------------------------
530c
531c  -----{on cherche le cisaillement qui annule l'equation de q^2
532c        supposee en q3}
533c
534        tmp1=termq+termq3
535        tmp2=termqm2+termq3m2
536        m2cstat=m2(igrid,ilev)
537     &      -(tmp1+tmp2)/(dt*2.E+0*km(igrid,ilev))
538        mcstat=sqrt(m2cstat)
539c
540c  -----{puis on ecrit la valeur de q qui annule l'equation de m
541c        supposee en q3}
542c
543        IF (ilev.eq.2) THEN
544          kmcstat=1.E+0 / mcstat
545     &    *( unsdz(igrid,ilev)*kmpre(igrid,ilev+1)
546     &                        *mpre(igrid,ilev+1)
547     &      +unsdz(igrid,ilev-1)
548     &              *cd(igrid)
549     &              *( sqrt(u(igrid,3)**2+v(igrid,3)**2)
550     &                -mcstat/unsdzdec(igrid,ilev)
551     &                -mpre(igrid,ilev+1)/unsdzdec(igrid,ilev+1) )**2)
552     &      /( unsdz(igrid,ilev)+unsdz(igrid,ilev-1) )
553        ELSE
554          kmcstat=1.E+0 / mcstat
555     &    *( unsdz(igrid,ilev)*kmpre(igrid,ilev+1)
556     &                        *mpre(igrid,ilev+1)
557     &      +unsdz(igrid,ilev-1)*kmpre(igrid,ilev-1)
558     &                          *mpre(igrid,ilev-1) )
559     &      /( unsdz(igrid,ilev)+unsdz(igrid,ilev-1) )
560        ENDIF
561        tmp2=kmcstat
562     &      /( sm(igrid,ilev)/q2(igrid,ilev) )
563     &      /long(igrid,ilev)
564        qcstat=tmp2**(1.E+0/3.E+0)
565        q2cstat=qcstat**2
566c
567c.......................................................................
568c
569c  choix de la solution finale
570c  ---------------------------
571c
572          q(igrid,ilev)=qcstat
573          q2(igrid,ilev)=q2cstat
574          m(igrid,ilev)=mcstat
575          m2(igrid,ilev)=m2cstat
576c
577c --->
578c       pour des raisons simples q2 est minore
579c<---
580c
581        IF (q2(igrid,ilev).lt.q2min) THEN
582          q2(igrid,ilev)=q2min
583          q(igrid,ilev)=sqrt(q2min)
584        ENDIF
585c
586c.......................................................................
587c
588c  calcul final de kn et km
589c  ------------------------
590c
591        gn=-long(igrid,ilev)**2 / q2(igrid,ilev)
592     &                                           * n2(igrid,ilev)
593        IF (gn.lt.gnmin) gn=gnmin
594        IF (gn.gt.gnmax) gn=gnmax
595        sn(igrid,ilev)=cn1/(1.E+0 +cn2*gn)
596        sm(igrid,ilev)=
597     &    (cm1+cm2*gn)
598     &   /( (1.E+0 +cm3*gn)*(1.E+0 +cm4*gn) )
599        kn(igrid,ilev)=long(igrid,ilev)*q(igrid,ilev)
600     &                 *sn(igrid,ilev)
601        km(igrid,ilev)=long(igrid,ilev)*q(igrid,ilev)
602     &                 *sm(igrid,ilev)
603c
604c.......................................................................
605c
60610002 CONTINUE
607c
60810001 CONTINUE
609c
610c.......................................................................
611c
612c
613                                                      DO igrid=1,ngrid
614      kn(igrid,1)=knmin
615      km(igrid,1)=kmmin
616      q2(igrid,nlev)=q2(igrid,nlev-1)
617      q(igrid,nlev)=q(igrid,nlev-1)
618      kn(igrid,nlev)=kn(igrid,nlev-1)
619      km(igrid,nlev)=km(igrid,nlev-1)
620                                                      ENDDO
621
622c
623c.......................................................................
624c
625
626!        call writediagfi(ngrid,'vdif_kc_q2','','',3,q2(:,1:nlay))
627!        call writediagfi(ngrid,'vdif_kc_km','','',3,km(:,1:nlay))
628!        call writediagfi(ngrid,'vdif_kc_kn','','',3,kn(:,1:nlay))
629!        call writediagfi(ngrid,'vdif_kc_unsdz','','',3,unsdz(:,1:nlay))
630!        call writediagfi(ngrid,'vdif_kc_unsddecz','','',3,
631!     &                   unsdzdec(:,1:nlay))
632!        call writediagfi(ngrid,'vdif_kc_q','','',3,q(:,1:nlay))
633!        call writediagfi(ngrid,'vdif_kc_kmpre','','',3,
634!     &                   kmpre(:,1:nlay))
635!        call writediagfi(ngrid,'vdif_kc_long','','',3,long(:,1:nlay))
636!        call writediagfi(ngrid,'vdif_kc_sn','','',3,sn(:,1:nlay))
637!        call writediagfi(ngrid,'vdif_kc_sm','','',3,sm(:,1:nlay))
638
639      RETURN
640      END
Note: See TracBrowser for help on using the repository browser.