Changeset 39


Ignore:
Timestamp:
Feb 9, 2000, 11:25:04 AM (25 years ago)
Author:
lmdz
Message:

Ajustement de parametres
Rajout de coefkz2 L.Li
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ.3.3/trunk/libf/phylmd/clmain.F

    r2 r39  
    122122cAA      REAL yflxsrf(klon,nbtr)
    123123c
     124      LOGICAL contreg
     125      PARAMETER (contreg=.TRUE.)
     126c
    124127      LOGICAL ok_nonloc
    125128      PARAMETER (ok_nonloc=.FALSE.)
     
    272275     .            yts, yrugos, yu, yv, yt, yq,
    273276     .            ycoefm, ycoefh)
     277      CALL coefkz2(nsrf, knon, paprs, pplay,t,
     278     .                  ycoefm0, ycoefh0)
     279      DO k = 1, klev
     280      DO i = 1, knon
     281         ycoefm(i,k) = MAX(ycoefm(i,k),ycoefm0(i,k))
     282         ycoefh(i,k) = MAX(ycoefh(i,k),ycoefh0(i,k))
     283      ENDDO
     284      ENDDO
    274285c
    275286c parametrisation non-locale:
     
    289300         ENDDO
    290301      ELSE
     302         IF (.NOT.contreg) THEN
     303            DO k = 2, klev
     304            DO i = 1, knon
     305               ygamq(i,k) = 0.0
     306               ygamt(i,k) = 0.0
     307            ENDDO
     308            ENDDO
     309         ELSE
    291310         DO k = 3, klev
    292311         DO i = 1, knon
     
    299318            ygamt(i,2) = -2.5E-03
    300319         ENDDO
     320         ENDIF
    301321      ENDIF
    302322c
     
    873893      PARAMETER (clam=160.0)
    874894      REAL ratqs ! largeur de distribution de vapeur d'eau
    875       PARAMETER (ratqs=0.2)
     895      PARAMETER (ratqs=0.05)
    876896      LOGICAL richum ! utilise le nombre de Richardson humide
    877897      PARAMETER (richum=.TRUE.)
     
    881901      PARAMETER (prandtl=0.4)
    882902      REAL kstable ! diffusion minimale (situation stable)
    883       PARAMETER (kstable=1.0e-06)
     903      PARAMETER (kstable=1.0e-10)
    884904      REAL mixlen ! constante controlant longueur de melange
    885905      PARAMETER (mixlen=35.0)
     
    950970c Prescrire la valeur de contre-gradient
    951971c
    952       IF (contreg) THEN
     972      IF (.NOT.contreg) THEN
    953973         DO k = 2, klev
    954974            gamt(k) = 0.0
     
    11311151      RETURN
    11321152      END
     1153      SUBROUTINE coefkz2(nsrf, knon, paprs, pplay,t,
     1154     .                  pcfm, pcfh)
     1155      IMPLICIT none
     1156c======================================================================
     1157c J'introduit un peu de diffusion sauf dans les endroits
     1158c ou une forte inversion est presente
     1159c On peut dire qu'il represente la convection peu profonde
     1160c
     1161c Arguments:
     1162c nsrf-----input-I- indicateur de la nature du sol
     1163c knon-----input-I- nombre de points a traiter
     1164c paprs----input-R- pression a chaque intercouche (en Pa)
     1165c pplay----input-R- pression au milieu de chaque couche (en Pa)
     1166c t--------input-R- temperature (K)
     1167c
     1168c pcfm-----output-R- coefficients a calculer (vitesse)
     1169c pcfh-----output-R- coefficients a calculer (chaleur et humidite)
     1170c======================================================================
     1171#include "dimensions.h"
     1172#include "dimphy.h"
     1173#include "YOMCST.h"
     1174#include "indicesol.h"
     1175c
     1176c Arguments:
     1177c
     1178      INTEGER knon, nsrf
     1179      REAL paprs(klon,klev+1), pplay(klon,klev)
     1180      REAL t(klon,klev)
     1181c
     1182      REAL pcfm(klon,klev), pcfh(klon,klev)
     1183c
     1184c Quelques constantes et options:
     1185c
     1186      REAL prandtl
     1187      PARAMETER (prandtl=0.4)
     1188      REAL kstable
     1189      PARAMETER (kstable=0.002)
     1190ccc      PARAMETER (kstable=0.001)
     1191      REAL mixlen ! constante controlant longueur de melange
     1192      PARAMETER (mixlen=35.0)
     1193      REAL seuil ! au-dela l'inversion est consideree trop faible
     1194      PARAMETER (seuil=-0.02)
     1195ccc      PARAMETER (seuil=-0.04)
     1196ccc      PARAMETER (seuil=-0.06)
     1197ccc      PARAMETER (seuil=-0.09)
     1198c
     1199c Variables locales:
     1200c
     1201      INTEGER i, k, invb(klon)
     1202      REAL zl2(klon)
     1203      REAL zdthmin(klon), zdthdp
     1204c
     1205c Initialiser les sorties
     1206c
     1207      DO k = 1, klev
     1208      DO i = 1, knon
     1209         pcfm(i,k) = 0.0
     1210         pcfh(i,k) = 0.0
     1211      ENDDO
     1212      ENDDO
     1213c
     1214c Chercher la zone d'inversion forte
     1215c
     1216      DO i = 1, klon
     1217         invb(i) = klev
     1218         zdthmin(i)=0.0
     1219      ENDDO
     1220      DO k = 2, klev/2-1
     1221      DO i = 1, klon
     1222         zdthdp = (t(i,k)-t(i,k+1))/(pplay(i,k)-pplay(i,k+1))
     1223     .          - RD * 0.5*(t(i,k)+t(i,k+1))/RCPD/paprs(i,k+1)
     1224         zdthdp = zdthdp * 100.0
     1225         IF (pplay(i,k).GT.0.8*paprs(i,1) .AND.
     1226     .       zdthdp.LT.zdthmin(i) ) THEN
     1227            zdthmin(i) = zdthdp
     1228            invb(i) = k
     1229         ENDIF
     1230      ENDDO
     1231      ENDDO
     1232c
     1233c Introduire une diffusion:
     1234c
     1235      DO k = 2, klev
     1236      DO i = 1, knon
     1237      IF ( (nsrf.NE.is_oce) .OR.  ! si ce n'est pas sur l'ocean
     1238     .     (invb(i).EQ.klev) .OR. ! s'il n'y a pas d'inversion
     1239     .     (zdthmin(i).GT.seuil) )THEN ! si l'inversion est trop faible
     1240         zl2(i)=(mixlen*MAX(0.0,(paprs(i,k)-paprs(i,klev+1))
     1241     .                       /(paprs(i,2)-paprs(i,klev+1)) ))**2
     1242         pcfm(i,k)= zl2(i)* kstable
     1243         pcfh(i,k) = pcfm(i,k) /prandtl ! h et m different
     1244      ENDIF
     1245      ENDDO
     1246      ENDDO
     1247c
     1248      RETURN
     1249      END
    11331250      SUBROUTINE calbeta(dtime,indice,snow,qsol,
    11341251     .                    vbeta,vcal,vdif)
     
    11461263#include "indicesol.h"
    11471264      REAL tau_gl ! temps de relaxation pour la glace de mer
    1148       PARAMETER (tau_gl=86400.0*30.0)
     1265ccc      PARAMETER (tau_gl=86400.0*30.0)
     1266      PARAMETER (tau_gl=86400.0*5.0)
    11491267      REAL mx_eau_sol
    11501268      PARAMETER (mx_eau_sol=150.0)
     
    11781296          IF (snow(i,is_sic) .GT. 0.0) vcal(i) = calsno
    11791297          vbeta(i)  = 1.0
    1180 ccc          vdif(i) = 1.0/tau_gl ! c'etait une erreur
    1181           vdif(i) = calice/tau_gl
     1298          vdif(i) = 1.0/tau_gl
     1299ccc          vdif(i) = calice/tau_gl ! c'etait une erreur
    11821300      ENDDO
    11831301      ENDIF
Note: See TracChangeset for help on using the changeset viewer.