[2] | 1 | |
---|
| 2 | .. Version du 28/12/1998 , avec nouveau fxyhyper appele par inigeom ... |
---|
| 3 | c |
---|
| 4 | c |
---|
| 5 | |
---|
| 6 | La dynamique de LMDZ.3.2 est pratiquement identique a celle de |
---|
| 7 | LMDZ.3 . |
---|
| 8 | |
---|
| 9 | Elle ne differe , en gros , que par : |
---|
| 10 | |
---|
| 11 | a ) etat0_lmd ( on doit introduire , en plus de dayref qui est le jour |
---|
| 12 | ----------- |
---|
| 13 | de l'etat initial cree , anneeref , qui est l'annee correspondante |
---|
| 14 | et qui servira eventuellement a lire la bonne annee pour le fichier |
---|
| 15 | limit.dat , dic ) . Il y a aussi le stockage des coefficients pour |
---|
| 16 | l'orographie de Francois Lott , sur startphy . |
---|
| 17 | |
---|
| 18 | b ) calfis qui prepare l'interface avec la physique qui a ete restruc- |
---|
| 19 | ------- |
---|
| 20 | turee par Laurent Li , dans ses grandes lignes , et qui est maintenant |
---|
| 21 | |
---|
| 22 | adaptee pour les traceurs avec l'ajout du shema de convection de Tiedtke. |
---|
| 23 | |
---|
| 24 | Pour plus de details concernant le cote pratique des simulations avec |
---|
| 25 | cette bib. , priere de se reporter a la fin de ce LISEZMOI . |
---|
| 26 | |
---|
| 27 | |
---|
| 28 | ************************************************************************** |
---|
| 29 | |
---|
| 30 | 1) Le gcm LMDZ.3.2 a des coordonnees hybrides verticalement ,c.a.d des |
---|
| 31 | ******** |
---|
| 32 | coordonnees equivalentes a sigma pres de la surface et a P plus haut . |
---|
| 33 | |
---|
| 34 | Les pressions p(ij,l) aux differents interfaces des llm couches verti- |
---|
| 35 | cales sont donnees par : |
---|
| 36 | |
---|
| 37 | p( ij,l ) = ap(l) + bp(l) * ps(ij) , 1 << l << llm + 1 . |
---|
| 38 | |
---|
| 39 | avec bp(l) = EXP ( 1. - 1./ sigma(l) ** 2 ) |
---|
| 40 | ap(l) = pa * ( sigma(l) - bp(l) ) |
---|
| 41 | |
---|
| 42 | pa est actuellement mis a 50 000. Pascals . |
---|
| 43 | |
---|
| 44 | La fonction d'Exner est calculee aux milieux des llm couches vertic. |
---|
| 45 | |
---|
| 46 | pk(ij,l) = cp * ( p(ij,l)/preff ) ** kappa , 1 << l << llm |
---|
| 47 | |
---|
| 48 | Les pressions PLS(ij,l) definies aux milieux des couches sont egales a : |
---|
| 49 | |
---|
| 50 | pls(ij,l) = preff * ( pk(ij,l) /cp ) ** 1./kappa |
---|
| 51 | |
---|
| 52 | ( preff = 101 325. Pascals dans etat0_lmd.F actuellement ) |
---|
| 53 | |
---|
| 54 | |
---|
| 55 | 2) Une des variables prognostiques de LMDZ.3 est teta , temperature |
---|
| 56 | potentielle : |
---|
| 57 | |
---|
| 58 | teta (ij,l) = temperature(ij,l) * cp/ pk(ij,l) |
---|
| 59 | |
---|
| 60 | N.b : Les parametres PA et PREFF figurent dans l'entete des fichiers |
---|
| 61 | *** start ( et restart) et histphy , ainsi que AP(l) et BP(l) . |
---|
| 62 | |
---|
| 63 | Y figurent aussi PRESNIVS(l) qui donnent les valeurs approximatives |
---|
| 64 | des pressions aux milieux des couches , ainsi que SIG_S(l) qui donnent |
---|
| 65 | simplement les indices des llm couches et dont la presence permet |
---|
| 66 | d'utiliser tel quel le logiciel ' wrctl ' de LMDZ.2.2 qui permet de |
---|
| 67 | fabriquer a partir du fichier ' histphy' ( dat et dic ) le histphy.ctl |
---|
| 68 | pret a etre exploite par GrADS . |
---|
| 69 | |
---|
| 70 | Les pressions PLS(ij,l) sont stockees sur le fichier ' histphy ' car |
---|
| 71 | elles sont indispensables quand on veut faire une interpolation des varia- |
---|
| 72 | bles d'analyse comme u, v ,teta a des valeurs determinees de la pression. |
---|
| 73 | Elles figurent aussi eventuellement sur le fichier histins.gdat (.ctl ) |
---|
| 74 | qui renferme des etats instantanes . |
---|
| 75 | Voir le parametre ok_inst dans physiq.f ( L.Li ) . |
---|
| 76 | |
---|
| 77 | Un exemple d'interpolation de u,v, et teta se trouve dans le fichier |
---|
| 78 | 'analyse_lmdz_hyb' du repertoire de la dynamique , analyse_hyb etant |
---|
| 79 | adapte d'un fichier d'analyse de histphy de Laurent Li . |
---|
| 80 | |
---|
| 81 | 3) Dans le programme principal gcm.F , il faut definir , au debut ,les para- |
---|
| 82 | metres IADV ,pour choisir le shema d'advection pour l'eau et les traceurs |
---|
| 83 | : IADV = 1 , humidite specifique |
---|
| 84 | IADV = 2 , shema amont |
---|
| 85 | IADV = 3 , Van-Leer |
---|
| 86 | |
---|
| 87 | 4) Il y a 2 shemas de dissipation ( diffusion laterale ) : |
---|
| 88 | |
---|
| 89 | a) La dissipation star ( qui ne fait pas intervenir la geometrie de la |
---|
| 90 | grille et qui est utilisee quand il y a un zoom ) |
---|
| 91 | |
---|
| 92 | Par expl . la diffusion d'un scalaire comme teta est formulee ( en |
---|
| 93 | appelant l'operateur DIVGRAD2 ) comme : |
---|
| 94 | |
---|
| 95 | d( ro * teta ) = (-1)**(it-1) *cdiv * Lap * ro**1/2 * Lap_gam** (it-2 ) * |
---|
| 96 | ro**1/2 * Lap * teta |
---|
| 97 | avec : |
---|
| 98 | Lap = 1/aire * Filt[ dx ( coefx*dx ) + dy( coefy*dy ) ] Filt |
---|
| 99 | |
---|
| 100 | Lap_gam = (1./aire)** -gam { dx[ coefx**(-gam) dx] + dy[ coefy**(-gam) dy ] } |
---|
| 101 | |
---|
| 102 | |
---|
| 103 | Filt est l'operateur filtre |
---|
| 104 | ro est la densite dp de chaque couche |
---|
| 105 | it = nombre d'iterations de l'operateur de dissipation ( ici divgrad2 ) |
---|
| 106 | gam = coefdis /( it -2 ) , coefdis = 0. si it = 2 , sinon = 1. habituellem. |
---|
| 107 | dx = operateur difference finie : |
---|
| 108 | dx(A) = A( X +1/2 , Y, z ) - A( X -1/2, Y, z ) , dans le systeme de |
---|
| 109 | travail (X,Y) , avec l'increment DX = 1. |
---|
| 110 | |
---|
| 111 | Idem pour dy . |
---|
| 112 | |
---|
| 113 | coefx = beta(ij) / alpha(ij) , coefy = alpha(ij)/beta(ij) |
---|
| 114 | avec u_covariant(ij) = alpha(ij)* u_nat(ij) |
---|
| 115 | v_covariant(ij) = beta(ij) * v_nat(ij) |
---|
| 116 | |
---|
| 117 | Cette dissipation star est choisie en mettant le parametre lstardis a .TRUE. |
---|
| 118 | dans le fichier run.def lu par le gcm en entree . |
---|
| 119 | |
---|
| 120 | b) La dissipation ' non star ' fait intervenir les operateurs elementaires |
---|
| 121 | diverg,grad,rotat . Elle est choisie avec lstardis = .FALSE. |
---|
| 122 | |
---|
| 123 | N.B : Dans les 2 shemas de dissipation , le gcm est plus stable quand on |
---|
| 124 | n'itere pas l'operateur ' GRADIV ' ou ' GRADIV2 " . |
---|
| 125 | |
---|
| 126 | 5) Les constantes thermodynamiques Cp et kappa = R/Cp utilisees dans la |
---|
| 127 | partie dynamique ont ete mises , ce qui est normal, aux memes valeurs |
---|
| 128 | qu'elles ont dans la partie ' physique ' , en changeant INICONST et en |
---|
| 129 | les mettant dans l'entete de controle de start et startphy ,en changeant |
---|
| 130 | etat0_lmd , par rapport a LMDZ.2.2 |
---|
| 131 | |
---|
| 132 | 6) Pour finir , quelques commentaires sur les parametres qui figurent sur |
---|
| 133 | le fichier run.def qui commandent le gcm . |
---|
| 134 | |
---|
| 135 | Dans le run.def donne en exemple dans /users/SOURCES/LMDZ.3/libf/dyn3d , |
---|
| 136 | |
---|
| 137 | a) day_step correspond a un dt de 2 minutes . |
---|
| 138 | |
---|
| 139 | b) idissip correspond a a un appel de la dissipation toutes les 30 minutes. |
---|
| 140 | |
---|
| 141 | N.B : Maintenant la routine inidissip calcule la meilleure valeur pour |
---|
| 142 | idissip , en fonction des valeurs de tetagdiv , tetagrot et tetatemp qui |
---|
| 143 | representent les temps de dissipation desirees pour dissiper les plus peti- |
---|
| 144 | tes longueurs d'ondes pour u ,v et teta dans le cas, respectivement des |
---|
| 145 | operateurs gradiv (gradiv2) , nxgrarot (nxgraro2) et divgrad ( divgrad2) . |
---|
| 146 | |
---|
| 147 | c) coefdis , coefficient qui intervient dans le calcul de gam , utilise |
---|
| 148 | dans les routines de dissipation star , vus plus haut . |
---|
| 149 | |
---|
| 150 | d) iphysiq correspond ici a un appel de la physique toutes les 30 minutes. |
---|
| 151 | |
---|
| 152 | e) alphax et alphay correspondent au grossissement pour le zoom dans la |
---|
| 153 | direction X et Y . |
---|
| 154 | En fait , les facteurs de grossissement sont egaux a 1./ ( 1.- alphax ) |
---|
| 155 | et 1./( 1.- alphay ) . |
---|
| 156 | |
---|
| 157 | f) fxyhypb est egal a .TRUE. si on choisit pour la fonction f(x,y) qui |
---|
| 158 | definit la grille du modele une fonction a tangente hyperbolique , un peu |
---|
| 159 | adaptee pour le zoom , que la fonction sinusoidale , definie par fxy_new.h |
---|
| 160 | dans /..../gcm/libf/grid et lu par makegcm lors de la compilation du |
---|
| 161 | code . |
---|
| 162 | |
---|
| 163 | |
---|
| 164 | N.B: Pour l'instant , cette fonction hyperbolique n'est activee eventuellement |
---|
| 165 | **** que pour un zoom latitudinal . |
---|
| 166 | Pour un zoom longitudinal , la fonction sinusoidale precisee dans fxy_new.h |
---|
| 167 | est choisie automatiquement . |
---|
| 168 | |
---|
| 169 | g) psi0 et delta sont des parametres pour cette fonction hyberbolique . |
---|
| 170 | Ces valeurs de 0.3 et 0.5 ont ete adaptees pour 96x72 . |
---|
| 171 | |
---|
| 172 | |
---|
| 173 | |
---|
| 174 | 7) La partie 'physique' est quasiment identique a celle de LMDZ.2.2 |
---|
| 175 | *********** |
---|
| 176 | ( /users/lmdz/SOURCES/LMDZ.2.2/libf/phylmd ) geree par Laurent Li |
---|
| 177 | |
---|
| 178 | sauf PHYSIQ.F ( ou il y a l'ecriture en plus de pls sur 'histphy' et |
---|
| 179 | histins ) et PHYETAT0.F et PHYREDEM.F ou il y a l'argument RLON |
---|
| 180 | en plus dans le tableau des aurguments et WRITEFIA ou nivsigs rempla- |
---|
| 181 | sig_s pour les niveaux verticaux . |
---|
| 182 | |
---|
| 183 | |
---|
| 184 | **************************************************************************** |
---|
| 185 | |
---|
| 186 | |
---|
| 187 | AA) Choisir les options du run , avec le fichier run.def . |
---|
| 188 | |
---|
| 189 | Il y a entre autres choses , le nombre de jours qu'on veut integrer lors |
---|
| 190 | d'un run . |
---|
| 191 | Il y a le nombre de pas a faire pour 1 jour , ce qui calcule donc le dt |
---|
| 192 | temporel ( en secondes ) pour un pas dynamique . |
---|
| 193 | Iperiod est conseille d'etre a 5 pas ( mais non obligatoiremnet = 5 ) . |
---|
| 194 | Idissip peut etre mis a n'importe quelle valeur . Il est maintenant |
---|
| 195 | calcule dans inidissip de telle facon a optimiser sa valeur . |
---|
| 196 | |
---|
| 197 | Les parametres( la plupart des cles ) pour la physique commencent avec |
---|
| 198 | la var. logique ** physic ** |
---|
| 199 | |
---|
| 200 | entiere( en pas ) ** iphysiq ** qui est calculee de telle facon a |
---|
| 201 | appeler la physique tous les 30 minutes . |
---|
| 202 | |
---|
| 203 | ( en jours ) ** ecritphy ** qui indique la frequence en jours |
---|
| 204 | du stockage sur histphy . |
---|
| 205 | |
---|
| 206 | les variables logiques ** cycle_diurne ** pour le cycle diurne |
---|
| 207 | |
---|
| 208 | ** soil_model ** pour un modele pour le sol |
---|
| 209 | |
---|
| 210 | ** new_oliq ** pour une nouvelle formulation |
---|
| 211 | pour l'eau liquide nuageuse , utilisee dans les rayonnements . |
---|
| 212 | |
---|
| 213 | ** ok_orodr ** si on appelle l'orographie |
---|
| 214 | ** ok_orolf ** IDEM |
---|
| 215 | |
---|
| 216 | ** ok_limitvrai ** si on veut lire la bonne |
---|
| 217 | annee du fichier limit . |
---|
| 218 | |
---|
| 219 | |
---|
| 220 | Si ok_limitvrai = .TRUE. , la routine condsurf de la physique va lire |
---|
| 221 | |
---|
| 222 | la bonne annee des conditions limites et il faut , dans le script qui lance |
---|
| 223 | |
---|
| 224 | le run , faire figurer les fichiers limites attendus par le gcm . |
---|
| 225 | |
---|
| 226 | |
---|
| 227 | PLus clairement , si on lance un run de 30 jours , du 25 Decembre 1986 au |
---|
| 228 | |
---|
| 229 | 25 Janvier 1987 , ( actuellement dans le Gcm , il n'y a que des mois de |
---|
| 230 | |
---|
| 231 | 30 jours ) , des que le modele arrive au jour 360 (qui correspond au |
---|
| 232 | |
---|
| 233 | 30 Decembre) pour aller au jour 361 ( qui correspond au 1 Janvier 1987 ) , |
---|
| 234 | |
---|
| 235 | il s'attend a lire le fichier limit1987 ( avec 4 chiffres pour l'an 2000). |
---|
| 236 | |
---|
| 237 | Donc , dans le script du run , on devra avoir, grosso modo : |
---|
| 238 | |
---|
| 239 | *********************************************************************** |
---|
| 240 | cd $TMPDIR |
---|
| 241 | # |
---|
| 242 | cp $workdir/mod/limit86.dat limit1986.dat |
---|
| 243 | cp $workdir/mod/limit86.dic limit1986.dic |
---|
| 244 | cp $workdir/mod/limit87.dat limit1987.dat |
---|
| 245 | cp $workdir/mod/limit87.dic limit1987.dic |
---|
| 246 | # |
---|
| 247 | gcm.e < run.def |
---|
| 248 | ********************************************************************** |
---|
| 249 | |
---|
| 250 | la variable entiere ** nbapp_rad ** qui est le nombre d'appels /jour |
---|
| 251 | des routines de rayonnements . |
---|
| 252 | |
---|
| 253 | la variable entiere ** iflag_con ** qui indique le shema de convection |
---|
| 254 | choisi : 1 > LMD , 2 > Tiedtke , 3 > CCM . |
---|
| 255 | |
---|
| 256 | |
---|
| 257 | |
---|
| 258 | BB) Creer l'etat initial , avec les donnees de l'ECMWF , en compilant |
---|
| 259 | etat0_lmd , en precisant auparavant dayref et anneeref . |
---|
| 260 | |
---|
| 261 | |
---|
| 262 | CC) Creer le fichier des conditions aux limites ( SST, Albedo, Rugosite, |
---|
| 263 | Nature du sol ) avec si possible la concordance entre l'annee des |
---|
| 264 | donnees des sst, albedo, etc .. avec les donnees pour l'etat initial . |
---|
| 265 | |
---|
| 266 | DD) Compiler le Gcm , lancer le run , prendre un bon verre et attendre |
---|
| 267 | la sortie des resultats . |
---|
| 268 | |
---|
| 269 | |
---|
| 270 | |
---|
| 271 | Phu Le Van . |
---|
| 272 | |
---|
| 273 | E.N.S , 24 Rue Lhomond , PARIS 5 ieme . |
---|
| 274 | Tel : 01 44 32 22 67 |
---|
| 275 | |
---|
| 276 | 4 Place Jussieu , PARIS 5 ieme . |
---|
| 277 | TEL : 01 44 27 47 72 |
---|
| 278 | |
---|
| 279 | Email : levan@lmd.ens.fr |
---|
| 280 | |
---|
| 281 | |
---|