Changeset 2142
- Timestamp:
- Nov 14, 2014, 2:32:39 PM (10 years ago)
- Location:
- LMDZ5/trunk/libf
- Files:
-
- 3 copied
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/trunk/libf/dyn3d/conf_gcm.F90
r2141 r2142 1 ! 1 2 2 ! $Id$ 3 ! 4 ! 5 ! 6 SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 ) 7 ! 8 USE control_mod 3 4 SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 ) 5 6 USE control_mod 9 7 #ifdef CPP_IOIPSL 10 8 use IOIPSL 11 9 #else 12 ! if not using IOIPSL, we still need to use (a local version of) getin13 10 ! if not using IOIPSL, we still need to use (a local version of) getin 11 use ioipsl_getincom 14 12 #endif 15 USE infotrac, ONLY : type_trac 16 use assert_m, only: assert 17 18 IMPLICIT NONE 19 !----------------------------------------------------------------------- 20 ! Auteurs : L. Fairhead , P. Le Van . 21 ! 22 ! Arguments : 23 ! 24 ! tapedef : 25 ! etatinit : = TRUE , on ne compare pas les valeurs des para- 26 ! -metres du zoom avec celles lues sur le fichier start . 27 ! clesphy0 : sortie . 28 ! 29 LOGICAL etatinit 30 INTEGER tapedef 31 32 INTEGER longcles 33 PARAMETER( longcles = 20 ) 34 REAL clesphy0( longcles ) 35 ! 36 ! Declarations : 37 ! -------------- 38 #include "dimensions.h" 39 #include "paramet.h" 40 #include "logic.h" 41 #include "serre.h" 42 #include "comdissnew.h" 43 #include "temps.h" 44 #include "comconst.h" 45 46 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique 47 ! #include "clesphys.h" 48 #include "iniprint.h" 49 ! 50 ! 51 ! local: 52 ! ------ 53 54 CHARACTER ch1*72,ch2*72,ch3*72,ch4*12 55 REAL clonn,clatt,grossismxx,grossismyy 56 REAL dzoomxx,dzoomyy, tauxx,tauyy 57 LOGICAL fxyhypbb, ysinuss 58 INTEGER i 59 LOGICAL use_filtre_fft 60 ! 61 ! ------------------------------------------------------------------- 62 ! 63 ! ......... Version du 29/04/97 .......... 64 ! 65 ! Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot, 66 ! tetatemp ajoutes pour la dissipation . 67 ! 68 ! Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb ** 69 ! 70 ! Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb. 71 ! Sinon , choix de fxynew , a derivee sinusoidale .. 72 ! 73 ! ...... etatinit = . TRUE. si defrun est appele dans ETAT0_LMD ou 74 ! LIMIT_LMD pour l'initialisation de start.dat (dic) et 75 ! de limit.dat ( dic) ........... 76 ! Sinon etatinit = . FALSE . 77 ! 78 ! Donc etatinit = .F. si on veut comparer les valeurs de grossismx , 79 ! grossismy,clon,clat, fxyhypb lues sur le fichier start avec 80 ! celles passees par run.def , au debut du gcm, apres l'appel a 81 ! lectba . 82 ! Ces parmetres definissant entre autres la grille et doivent etre 83 ! pareils et coherents , sinon il y aura divergence du gcm . 84 ! 85 !----------------------------------------------------------------------- 86 ! initialisations: 87 ! ---------------- 88 89 !Config Key = lunout 90 !Config Desc = unite de fichier pour les impressions 91 !Config Def = 6 92 !Config Help = unite de fichier pour les impressions 93 !Config (defaut sortie standard = 6) 94 lunout=6 95 CALL getin('lunout', lunout) 96 IF (lunout /= 5 .and. lunout /= 6) THEN 97 OPEN(UNIT=lunout,FILE='lmdz.out',ACTION='write', & 98 & STATUS='unknown',FORM='formatted') 99 ENDIF 100 101 !Config Key = prt_level 102 !Config Desc = niveau d'impressions de débogage 103 !Config Def = 0 104 !Config Help = Niveau d'impression pour le débogage 105 !Config (0 = minimum d'impression) 106 prt_level = 0 107 CALL getin('prt_level',prt_level) 108 109 !----------------------------------------------------------------------- 110 ! Parametres de controle du run: 111 !----------------------------------------------------------------------- 112 !Config Key = planet_type 113 !Config Desc = planet type ("earth", "mars", "venus", ...) 114 !Config Def = earth 115 !Config Help = this flag sets the type of atymosphere that is considered 116 planet_type="earth" 117 CALL getin('planet_type',planet_type) 118 119 !Config Key = calend 120 !Config Desc = type de calendrier utilise 121 !Config Def = earth_360d 122 !Config Help = valeur possible: earth_360d, earth_365d, earth_366d 123 !Config 124 calend = 'earth_360d' 125 CALL getin('calend', calend) 126 127 !Config Key = dayref 128 !Config Desc = Jour de l'etat initial 129 !Config Def = 1 130 !Config Help = Jour de l'etat initial ( = 350 si 20 Decembre , 131 !Config par expl. ,comme ici ) ... A completer 132 dayref=1 133 CALL getin('dayref', dayref) 134 135 !Config Key = anneeref 136 !Config Desc = Annee de l'etat initial 137 !Config Def = 1998 138 !Config Help = Annee de l'etat initial 139 !Config ( avec 4 chiffres ) ... A completer 140 anneeref = 1998 141 CALL getin('anneeref',anneeref) 142 143 !Config Key = raz_date 144 !Config Desc = Remise a zero de la date initiale 145 !Config Def = 0 (pas de remise a zero) 146 !Config Help = Remise a zero de la date initiale 147 !Config 0 pas de remise a zero, on garde la date du fichier restart 148 !Config 1 prise en compte de la date de gcm.def avec remise a zero 149 !Config des compteurs de pas de temps 150 raz_date = 0 151 CALL getin('raz_date', raz_date) 152 153 !Config Key = resetvarc 154 !Config Desc = Reinit des variables de controle 155 !Config Def = n 156 !Config Help = Reinit des variables de controle 157 resetvarc = .false. 158 CALL getin('resetvarc',resetvarc) 159 160 !Config Key = nday 161 !Config Desc = Nombre de jours d'integration 162 !Config Def = 10 163 !Config Help = Nombre de jours d'integration 164 !Config ... On pourait aussi permettre des mois ou des annees ! 165 nday = 10 166 CALL getin('nday',nday) 167 168 !Config Key = starttime 169 !Config Desc = Heure de depart de la simulation 170 !Config Def = 0 171 !Config Help = Heure de depart de la simulation 172 !Config en jour 173 starttime = 0 174 CALL getin('starttime',starttime) 175 176 !Config Key = day_step 177 !Config Desc = nombre de pas par jour 178 !Config Def = 240 179 !Config Help = nombre de pas par jour (multiple de iperiod) ( 180 !Config ici pour dt = 1 min ) 181 day_step = 240 182 CALL getin('day_step',day_step) 183 184 !Config Key = nsplit_phys 185 nsplit_phys = 1 186 CALL getin('nsplit_phys',nsplit_phys) 187 188 !Config Key = iperiod 189 !Config Desc = periode pour le pas Matsuno 190 !Config Def = 5 191 !Config Help = periode pour le pas Matsuno (en pas de temps) 192 iperiod = 5 193 CALL getin('iperiod',iperiod) 194 195 !Config Key = iapp_tracvl 196 !Config Desc = frequence du groupement des flux 197 !Config Def = iperiod 198 !Config Help = frequence du groupement des flux (en pas de temps) 199 iapp_tracvl = iperiod 200 CALL getin('iapp_tracvl',iapp_tracvl) 201 202 !Config Key = iconser 203 !Config Desc = periode de sortie des variables de controle 204 !Config Def = 240 205 !Config Help = periode de sortie des variables de controle 206 !Config (En pas de temps) 207 iconser = 240 208 CALL getin('iconser', iconser) 209 210 !Config Key = iecri 211 !Config Desc = periode d'ecriture du fichier histoire 212 !Config Def = 1 213 !Config Help = periode d'ecriture du fichier histoire (en jour) 214 iecri = 1 215 CALL getin('iecri',iecri) 216 217 218 !Config Key = periodav 219 !Config Desc = periode de stockage fichier histmoy 220 !Config Def = 1 221 !Config Help = periode de stockage fichier histmoy (en jour) 222 periodav = 1. 223 CALL getin('periodav',periodav) 224 225 !Config Key = output_grads_dyn 226 !Config Desc = output dynamics diagnostics in 'dyn.dat' file 227 !Config Def = n 228 !Config Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file 229 output_grads_dyn=.false. 230 CALL getin('output_grads_dyn',output_grads_dyn) 231 232 !Config Key = dissip_period 233 !Config Desc = periode de la dissipation 234 !Config Def = 0 235 !Config Help = periode de la dissipation 236 !Config dissip_period=0 => la valeur sera calcule dans inidissip 237 !Config dissip_period>0 => on prend cette valeur 238 dissip_period = 0 239 CALL getin('dissip_period',dissip_period) 240 241 !cc .... P. Le Van , modif le 29/04/97 .pour la dissipation ... 242 !cc 243 244 !Config Key = lstardis 245 !Config Desc = choix de l'operateur de dissipation 246 !Config Def = y 247 !Config Help = choix de l'operateur de dissipation 248 !Config 'y' si on veut star et 'n' si on veut non-start ! 249 !Config Moi y en a pas comprendre ! 250 lstardis = .TRUE. 251 CALL getin('lstardis',lstardis) 252 253 254 !Config Key = nitergdiv 255 !Config Desc = Nombre d'iteration de gradiv 256 !Config Def = 1 257 !Config Help = nombre d'iterations de l'operateur de dissipation 258 !Config gradiv 259 nitergdiv = 1 260 CALL getin('nitergdiv',nitergdiv) 261 262 !Config Key = nitergrot 263 !Config Desc = nombre d'iterations de nxgradrot 264 !Config Def = 2 265 !Config Help = nombre d'iterations de l'operateur de dissipation 266 !Config nxgradrot 267 nitergrot = 2 268 CALL getin('nitergrot',nitergrot) 269 270 271 !Config Key = niterh 272 !Config Desc = nombre d'iterations de divgrad 273 !Config Def = 2 274 !Config Help = nombre d'iterations de l'operateur de dissipation 275 !Config divgrad 276 niterh = 2 277 CALL getin('niterh',niterh) 278 279 280 !Config Key = tetagdiv 281 !Config Desc = temps de dissipation pour div 282 !Config Def = 7200 283 !Config Help = temps de dissipation des plus petites longeur 284 !Config d'ondes pour u,v (gradiv) 285 tetagdiv = 7200. 286 CALL getin('tetagdiv',tetagdiv) 287 288 !Config Key = tetagrot 289 !Config Desc = temps de dissipation pour grad 290 !Config Def = 7200 291 !Config Help = temps de dissipation des plus petites longeur 292 !Config d'ondes pour u,v (nxgradrot) 293 tetagrot = 7200. 294 CALL getin('tetagrot',tetagrot) 295 296 !Config Key = tetatemp 297 !Config Desc = temps de dissipation pour h 298 !Config Def = 7200 299 !Config Help = temps de dissipation des plus petites longeur 300 !Config d'ondes pour h (divgrad) 301 tetatemp = 7200. 302 CALL getin('tetatemp',tetatemp ) 303 304 ! Parametres controlant la variation sur la verticale des constantes de 305 ! dissipation. 306 ! Pour le moment actifs uniquement dans la version a 39 niveaux 307 ! avec ok_strato=y 308 309 dissip_factz=4. 310 dissip_deltaz=10. 311 dissip_zref=30. 312 CALL getin('dissip_factz',dissip_factz ) 313 CALL getin('dissip_deltaz',dissip_deltaz ) 314 CALL getin('dissip_zref',dissip_zref ) 315 316 ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0 317 ! iflag_top_bound=0 for no sponge 318 ! iflag_top_bound=1 for sponge over 4 topmost layers 319 ! iflag_top_bound=2 for sponge from top to ~1% of top layer pressure 320 iflag_top_bound=1 321 CALL getin('iflag_top_bound',iflag_top_bound) 322 323 ! mode_top_bound : fields towards which sponge relaxation will be done: 324 ! mode_top_bound=0: no relaxation 325 ! mode_top_bound=1: u and v relax towards 0 326 ! mode_top_bound=2: u and v relax towards their zonal mean 327 ! mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean 328 mode_top_bound=3 329 CALL getin('mode_top_bound',mode_top_bound) 330 331 ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge 332 tau_top_bound=1.e-5 333 CALL getin('tau_top_bound',tau_top_bound) 334 335 !Config Key = coefdis 336 !Config Desc = coefficient pour gamdissip 337 !Config Def = 0 338 !Config Help = coefficient pour gamdissip 339 coefdis = 0. 340 CALL getin('coefdis',coefdis) 341 342 !Config Key = purmats 343 !Config Desc = Schema d'integration 344 !Config Def = n 345 !Config Help = Choix du schema d'integration temporel. 346 !Config y = pure Matsuno sinon c'est du Matsuno-leapfrog 347 purmats = .FALSE. 348 CALL getin('purmats',purmats) 349 350 !Config Key = ok_guide 351 !Config Desc = Guidage 352 !Config Def = n 353 !Config Help = Guidage 354 ok_guide = .FALSE. 355 CALL getin('ok_guide',ok_guide) 356 357 !Config Key = read_start 358 !Config Desc = Initialize model using a 'start.nc' file 359 !Config Def = y 360 !Config Help = y: intialize dynamical fields using a 'start.nc' file 361 ! n: fields are initialized by 'iniacademic' routine 362 read_start= .true. 363 CALL getin('read_start',read_start) 364 365 !Config Key = iflag_phys 366 !Config Desc = Avec ls physique 367 !Config Def = 1 368 !Config Help = Permet de faire tourner le modele sans 369 !Config physique. 370 iflag_phys = 1 371 CALL getin('iflag_phys',iflag_phys) 372 373 374 !Config Key = iphysiq 375 !Config Desc = Periode de la physique 376 !Config Def = 5 377 !Config Help = Periode de la physique en pas de temps de la dynamique. 378 iphysiq = 5 379 CALL getin('iphysiq', iphysiq) 380 381 if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm", 382 $ "iphysiq must be a multiple of iperiod", 1) 383 384 !Config Key = ip_ebil_dyn 385 !Config Desc = PRINT level for energy conserv. diag. 386 !Config Def = 0 387 !Config Help = PRINT level for energy conservation diag. ; 388 ! les options suivantes existent : 389 !Config 0 pas de print 390 !Config 1 pas de print 391 !Config 2 print, 392 ip_ebil_dyn = 0 393 CALL getin('ip_ebil_dyn',ip_ebil_dyn) 394 ! 395 396 DO i = 1, longcles 397 clesphy0(i) = 0. 398 ENDDO 399 400 !cc .... P. Le Van , ajout le 7/03/95 .pour le zoom ... 401 ! ......... ( modif le 17/04/96 ) ......... 402 ! 403 IF( etatinit ) GO TO 100 404 405 !Config Key = clon 406 !Config Desc = centre du zoom, longitude 407 !Config Def = 0 408 !Config Help = longitude en degres du centre 409 !Config du zoom 410 clonn = 0. 411 CALL getin('clon',clonn) 412 413 !Config Key = clat 414 !Config Desc = centre du zoom, latitude 415 !Config Def = 0 416 !Config Help = latitude en degres du centre du zoom 417 !Config 418 clatt = 0. 419 CALL getin('clat',clatt) 420 421 ! 422 ! 423 IF( ABS(clat - clatt).GE. 0.001 ) THEN 424 write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', 425 & ' est differente de celle lue sur le fichier start ' 13 USE infotrac, ONLY : type_trac 14 use assert_m, only: assert 15 16 IMPLICIT NONE 17 !----------------------------------------------------------------------- 18 ! Auteurs : L. Fairhead , P. Le Van . 19 20 ! Arguments : 21 22 ! tapedef : 23 ! etatinit : = TRUE , on ne compare pas les valeurs des para- 24 ! -metres du zoom avec celles lues sur le fichier start . 25 ! clesphy0 : sortie . 26 27 LOGICAL etatinit 28 INTEGER tapedef 29 30 INTEGER longcles 31 PARAMETER( longcles = 20 ) 32 REAL clesphy0( longcles ) 33 34 ! Declarations : 35 ! -------------- 36 include "dimensions.h" 37 include "paramet.h" 38 include "logic.h" 39 include "serre.h" 40 include "comdissnew.h" 41 include "temps.h" 42 include "comconst.h" 43 44 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique 45 ! include "clesphys.h" 46 include "iniprint.h" 47 48 ! local: 49 ! ------ 50 51 CHARACTER ch1*72,ch2*72,ch3*72,ch4*12 52 REAL clonn,clatt,grossismxx,grossismyy 53 REAL dzoomxx,dzoomyy, tauxx,tauyy 54 LOGICAL fxyhypbb, ysinuss 55 INTEGER i 56 LOGICAL use_filtre_fft 57 58 ! ------------------------------------------------------------------- 59 60 ! ......... Version du 29/04/97 .......... 61 62 ! Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot, 63 ! tetatemp ajoutes pour la dissipation . 64 65 ! Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb ** 66 67 ! Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb. 68 ! Sinon , choix de fxynew , a derivee sinusoidale .. 69 70 ! ...... etatinit = . TRUE. si defrun est appele dans ETAT0_LMD ou 71 ! LIMIT_LMD pour l'initialisation de start.dat (dic) et 72 ! de limit.dat ( dic) ........... 73 ! Sinon etatinit = . FALSE . 74 75 ! Donc etatinit = .F. si on veut comparer les valeurs de grossismx , 76 ! grossismy,clon,clat, fxyhypb lues sur le fichier start avec 77 ! celles passees par run.def , au debut du gcm, apres l'appel a 78 ! lectba . 79 ! Ces parmetres definissant entre autres la grille et doivent etre 80 ! pareils et coherents , sinon il y aura divergence du gcm . 81 82 !----------------------------------------------------------------------- 83 ! initialisations: 84 ! ---------------- 85 86 !Config Key = lunout 87 !Config Desc = unite de fichier pour les impressions 88 !Config Def = 6 89 !Config Help = unite de fichier pour les impressions 90 !Config (defaut sortie standard = 6) 91 lunout=6 92 CALL getin('lunout', lunout) 93 IF (lunout /= 5 .and. lunout /= 6) THEN 94 OPEN(UNIT=lunout,FILE='lmdz.out',ACTION='write', & 95 STATUS='unknown',FORM='formatted') 96 ENDIF 97 98 !Config Key = prt_level 99 !Config Desc = niveau d'impressions de débogage 100 !Config Def = 0 101 !Config Help = Niveau d'impression pour le débogage 102 !Config (0 = minimum d'impression) 103 prt_level = 0 104 CALL getin('prt_level',prt_level) 105 106 !----------------------------------------------------------------------- 107 ! Parametres de controle du run: 108 !----------------------------------------------------------------------- 109 !Config Key = planet_type 110 !Config Desc = planet type ("earth", "mars", "venus", ...) 111 !Config Def = earth 112 !Config Help = this flag sets the type of atymosphere that is considered 113 planet_type="earth" 114 CALL getin('planet_type',planet_type) 115 116 !Config Key = calend 117 !Config Desc = type de calendrier utilise 118 !Config Def = earth_360d 119 !Config Help = valeur possible: earth_360d, earth_365d, earth_366d 120 !Config 121 calend = 'earth_360d' 122 CALL getin('calend', calend) 123 124 !Config Key = dayref 125 !Config Desc = Jour de l'etat initial 126 !Config Def = 1 127 !Config Help = Jour de l'etat initial ( = 350 si 20 Decembre , 128 !Config par expl. ,comme ici ) ... A completer 129 dayref=1 130 CALL getin('dayref', dayref) 131 132 !Config Key = anneeref 133 !Config Desc = Annee de l'etat initial 134 !Config Def = 1998 135 !Config Help = Annee de l'etat initial 136 !Config ( avec 4 chiffres ) ... A completer 137 anneeref = 1998 138 CALL getin('anneeref',anneeref) 139 140 !Config Key = raz_date 141 !Config Desc = Remise a zero de la date initiale 142 !Config Def = 0 (pas de remise a zero) 143 !Config Help = Remise a zero de la date initiale 144 !Config 0 pas de remise a zero, on garde la date du fichier restart 145 !Config 1 prise en compte de la date de gcm.def avec remise a zero 146 !Config des compteurs de pas de temps 147 raz_date = 0 148 CALL getin('raz_date', raz_date) 149 150 !Config Key = resetvarc 151 !Config Desc = Reinit des variables de controle 152 !Config Def = n 153 !Config Help = Reinit des variables de controle 154 resetvarc = .false. 155 CALL getin('resetvarc',resetvarc) 156 157 !Config Key = nday 158 !Config Desc = Nombre de jours d'integration 159 !Config Def = 10 160 !Config Help = Nombre de jours d'integration 161 !Config ... On pourait aussi permettre des mois ou des annees ! 162 nday = 10 163 CALL getin('nday',nday) 164 165 !Config Key = starttime 166 !Config Desc = Heure de depart de la simulation 167 !Config Def = 0 168 !Config Help = Heure de depart de la simulation 169 !Config en jour 170 starttime = 0 171 CALL getin('starttime',starttime) 172 173 !Config Key = day_step 174 !Config Desc = nombre de pas par jour 175 !Config Def = 240 176 !Config Help = nombre de pas par jour (multiple de iperiod) ( 177 !Config ici pour dt = 1 min ) 178 day_step = 240 179 CALL getin('day_step',day_step) 180 181 !Config Key = nsplit_phys 182 nsplit_phys = 1 183 CALL getin('nsplit_phys',nsplit_phys) 184 185 !Config Key = iperiod 186 !Config Desc = periode pour le pas Matsuno 187 !Config Def = 5 188 !Config Help = periode pour le pas Matsuno (en pas de temps) 189 iperiod = 5 190 CALL getin('iperiod',iperiod) 191 192 !Config Key = iapp_tracvl 193 !Config Desc = frequence du groupement des flux 194 !Config Def = iperiod 195 !Config Help = frequence du groupement des flux (en pas de temps) 196 iapp_tracvl = iperiod 197 CALL getin('iapp_tracvl',iapp_tracvl) 198 199 !Config Key = iconser 200 !Config Desc = periode de sortie des variables de controle 201 !Config Def = 240 202 !Config Help = periode de sortie des variables de controle 203 !Config (En pas de temps) 204 iconser = 240 205 CALL getin('iconser', iconser) 206 207 !Config Key = iecri 208 !Config Desc = periode d'ecriture du fichier histoire 209 !Config Def = 1 210 !Config Help = periode d'ecriture du fichier histoire (en jour) 211 iecri = 1 212 CALL getin('iecri',iecri) 213 214 !Config Key = periodav 215 !Config Desc = periode de stockage fichier histmoy 216 !Config Def = 1 217 !Config Help = periode de stockage fichier histmoy (en jour) 218 periodav = 1. 219 CALL getin('periodav',periodav) 220 221 !Config Key = output_grads_dyn 222 !Config Desc = output dynamics diagnostics in 'dyn.dat' file 223 !Config Def = n 224 !Config Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file 225 output_grads_dyn=.false. 226 CALL getin('output_grads_dyn',output_grads_dyn) 227 228 !Config Key = dissip_period 229 !Config Desc = periode de la dissipation 230 !Config Def = 0 231 !Config Help = periode de la dissipation 232 !Config dissip_period=0 => la valeur sera calcule dans inidissip 233 !Config dissip_period>0 => on prend cette valeur 234 dissip_period = 0 235 CALL getin('dissip_period',dissip_period) 236 237 !cc .... P. Le Van , modif le 29/04/97 .pour la dissipation ... 238 !cc 239 240 !Config Key = lstardis 241 !Config Desc = choix de l'operateur de dissipation 242 !Config Def = y 243 !Config Help = choix de l'operateur de dissipation 244 !Config 'y' si on veut star et 'n' si on veut non-start ! 245 !Config Moi y en a pas comprendre ! 246 lstardis = .TRUE. 247 CALL getin('lstardis',lstardis) 248 249 !Config Key = nitergdiv 250 !Config Desc = Nombre d'iteration de gradiv 251 !Config Def = 1 252 !Config Help = nombre d'iterations de l'operateur de dissipation 253 !Config gradiv 254 nitergdiv = 1 255 CALL getin('nitergdiv',nitergdiv) 256 257 !Config Key = nitergrot 258 !Config Desc = nombre d'iterations de nxgradrot 259 !Config Def = 2 260 !Config Help = nombre d'iterations de l'operateur de dissipation 261 !Config nxgradrot 262 nitergrot = 2 263 CALL getin('nitergrot',nitergrot) 264 265 !Config Key = niterh 266 !Config Desc = nombre d'iterations de divgrad 267 !Config Def = 2 268 !Config Help = nombre d'iterations de l'operateur de dissipation 269 !Config divgrad 270 niterh = 2 271 CALL getin('niterh',niterh) 272 273 !Config Key = tetagdiv 274 !Config Desc = temps de dissipation pour div 275 !Config Def = 7200 276 !Config Help = temps de dissipation des plus petites longeur 277 !Config d'ondes pour u,v (gradiv) 278 tetagdiv = 7200. 279 CALL getin('tetagdiv',tetagdiv) 280 281 !Config Key = tetagrot 282 !Config Desc = temps de dissipation pour grad 283 !Config Def = 7200 284 !Config Help = temps de dissipation des plus petites longeur 285 !Config d'ondes pour u,v (nxgradrot) 286 tetagrot = 7200. 287 CALL getin('tetagrot',tetagrot) 288 289 !Config Key = tetatemp 290 !Config Desc = temps de dissipation pour h 291 !Config Def = 7200 292 !Config Help = temps de dissipation des plus petites longeur 293 !Config d'ondes pour h (divgrad) 294 tetatemp = 7200. 295 CALL getin('tetatemp',tetatemp ) 296 297 ! Parametres controlant la variation sur la verticale des constantes de 298 ! dissipation. 299 ! Pour le moment actifs uniquement dans la version a 39 niveaux 300 ! avec ok_strato=y 301 302 dissip_factz=4. 303 dissip_deltaz=10. 304 dissip_zref=30. 305 CALL getin('dissip_factz',dissip_factz ) 306 CALL getin('dissip_deltaz',dissip_deltaz ) 307 CALL getin('dissip_zref',dissip_zref ) 308 309 ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0 310 ! iflag_top_bound=0 for no sponge 311 ! iflag_top_bound=1 for sponge over 4 topmost layers 312 ! iflag_top_bound=2 for sponge from top to ~1% of top layer pressure 313 iflag_top_bound=1 314 CALL getin('iflag_top_bound',iflag_top_bound) 315 316 ! mode_top_bound : fields towards which sponge relaxation will be done: 317 ! mode_top_bound=0: no relaxation 318 ! mode_top_bound=1: u and v relax towards 0 319 ! mode_top_bound=2: u and v relax towards their zonal mean 320 ! mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean 321 mode_top_bound=3 322 CALL getin('mode_top_bound',mode_top_bound) 323 324 ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge 325 tau_top_bound=1.e-5 326 CALL getin('tau_top_bound',tau_top_bound) 327 328 !Config Key = coefdis 329 !Config Desc = coefficient pour gamdissip 330 !Config Def = 0 331 !Config Help = coefficient pour gamdissip 332 coefdis = 0. 333 CALL getin('coefdis',coefdis) 334 335 !Config Key = purmats 336 !Config Desc = Schema d'integration 337 !Config Def = n 338 !Config Help = Choix du schema d'integration temporel. 339 !Config y = pure Matsuno sinon c'est du Matsuno-leapfrog 340 purmats = .FALSE. 341 CALL getin('purmats',purmats) 342 343 !Config Key = ok_guide 344 !Config Desc = Guidage 345 !Config Def = n 346 !Config Help = Guidage 347 ok_guide = .FALSE. 348 CALL getin('ok_guide',ok_guide) 349 350 !Config Key = read_start 351 !Config Desc = Initialize model using a 'start.nc' file 352 !Config Def = y 353 !Config Help = y: intialize dynamical fields using a 'start.nc' file 354 ! n: fields are initialized by 'iniacademic' routine 355 read_start= .true. 356 CALL getin('read_start',read_start) 357 358 !Config Key = iflag_phys 359 !Config Desc = Avec ls physique 360 !Config Def = 1 361 !Config Help = Permet de faire tourner le modele sans 362 !Config physique. 363 iflag_phys = 1 364 CALL getin('iflag_phys',iflag_phys) 365 366 !Config Key = iphysiq 367 !Config Desc = Periode de la physique 368 !Config Def = 5 369 !Config Help = Periode de la physique en pas de temps de la dynamique. 370 iphysiq = 5 371 CALL getin('iphysiq', iphysiq) 372 373 if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm", & 374 "iphysiq must be a multiple of iperiod", 1) 375 376 !Config Key = ip_ebil_dyn 377 !Config Desc = PRINT level for energy conserv. diag. 378 !Config Def = 0 379 !Config Help = PRINT level for energy conservation diag. ; 380 ! les options suivantes existent : 381 !Config 0 pas de print 382 !Config 1 pas de print 383 !Config 2 print, 384 ip_ebil_dyn = 0 385 CALL getin('ip_ebil_dyn',ip_ebil_dyn) 386 387 DO i = 1, longcles 388 clesphy0(i) = 0. 389 ENDDO 390 391 !cc .... P. Le Van , ajout le 7/03/95 .pour le zoom ... 392 ! ......... ( modif le 17/04/96 ) ......... 393 394 test_etatinit: IF (.not. etatinit) then 395 !Config Key = clon 396 !Config Desc = centre du zoom, longitude 397 !Config Def = 0 398 !Config Help = longitude en degres du centre 399 !Config du zoom 400 clonn = 0. 401 CALL getin('clon',clonn) 402 403 !Config Key = clat 404 !Config Desc = centre du zoom, latitude 405 !Config Def = 0 406 !Config Help = latitude en degres du centre du zoom 407 !Config 408 clatt = 0. 409 CALL getin('clat',clatt) 410 411 IF( ABS(clat - clatt).GE. 0.001 ) THEN 412 write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', & 413 ' est differente de celle lue sur le fichier start ' 426 414 STOP 427 ENDIF 428 429 !Config Key = grossismx 430 !Config Desc = zoom en longitude 431 !Config Def = 1.0 432 !Config Help = facteur de grossissement du zoom, 433 !Config selon la longitude 434 grossismxx = 1.0 435 CALL getin('grossismx',grossismxx) 436 437 438 IF( ABS(grossismx - grossismxx).GE. 0.001 ) THEN 439 write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', 440 & 'run.def est differente de celle lue sur le fichier start ' 415 ENDIF 416 417 !Config Key = grossismx 418 !Config Desc = zoom en longitude 419 !Config Def = 1.0 420 !Config Help = facteur de grossissement du zoom, 421 !Config selon la longitude 422 grossismxx = 1.0 423 CALL getin('grossismx',grossismxx) 424 425 IF( ABS(grossismx - grossismxx).GE. 0.001 ) THEN 426 write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', & 427 'run.def est differente de celle lue sur le fichier start ' 441 428 STOP 442 443 444 !Config Key = grossismy445 !Config Desc = zoom en latitude446 !Config Def = 1.0447 !Config Help = facteur de grossissement du zoom,448 !Config selon la latitude449 450 451 452 453 write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', 454 &'run.def est differente de celle lue sur le fichier start '429 ENDIF 430 431 !Config Key = grossismy 432 !Config Desc = zoom en latitude 433 !Config Def = 1.0 434 !Config Help = facteur de grossissement du zoom, 435 !Config selon la latitude 436 grossismyy = 1.0 437 CALL getin('grossismy',grossismyy) 438 439 IF( ABS(grossismy - grossismyy).GE. 0.001 ) THEN 440 write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', & 441 'run.def est differente de celle lue sur le fichier start ' 455 442 STOP 456 ENDIF 457 458 IF( grossismx.LT.1. ) THEN 459 write(lunout,*) 460 & 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 461 STOP 462 ELSE 463 alphax = 1. - 1./ grossismx 464 ENDIF 465 466 467 IF( grossismy.LT.1. ) THEN 468 write(lunout,*) 469 & 'conf_gcm: *** ATTENTION !! grossismy < 1 . *** ' 470 STOP 471 ELSE 472 alphay = 1. - 1./ grossismy 473 ENDIF 474 475 write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay 476 ! 477 ! alphax et alphay sont les anciennes formulat. des grossissements 478 ! 479 ! 480 481 !Config Key = fxyhypb 482 !Config Desc = Fonction hyperbolique 483 !Config Def = y 484 !Config Help = Fonction f(y) hyperbolique si = .true. 485 !Config sinon sinusoidale 486 fxyhypbb = .TRUE. 487 CALL getin('fxyhypb',fxyhypbb) 488 489 IF( .NOT.fxyhypb ) THEN 490 IF( fxyhypbb ) THEN 491 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 492 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', 493 * 'F alors qu il est T sur run.def ***' 443 ENDIF 444 445 IF( grossismx.LT.1. ) THEN 446 write(lunout,*) & 447 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 448 STOP 449 ELSE 450 alphax = 1. - 1./ grossismx 451 ENDIF 452 453 IF( grossismy.LT.1. ) THEN 454 write(lunout,*) & 455 'conf_gcm: *** ATTENTION !! grossismy < 1 . *** ' 456 STOP 457 ELSE 458 alphay = 1. - 1./ grossismy 459 ENDIF 460 461 write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay 462 463 ! alphax et alphay sont les anciennes formulat. des grossissements 464 465 !Config Key = fxyhypb 466 !Config Desc = Fonction hyperbolique 467 !Config Def = y 468 !Config Help = Fonction f(y) hyperbolique si = .true. 469 !Config sinon sinusoidale 470 fxyhypbb = .TRUE. 471 CALL getin('fxyhypb',fxyhypbb) 472 473 IF( .NOT.fxyhypb ) THEN 474 IF( fxyhypbb ) THEN 475 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 476 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 477 'F alors qu il est T sur run.def ***' 478 STOP 479 ENDIF 480 ELSE 481 IF( .NOT.fxyhypbb ) THEN 482 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 483 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 484 'T alors qu il est F sur run.def **** ' 485 STOP 486 ENDIF 487 ENDIF 488 489 !Config Key = dzoomx 490 !Config Desc = extension en longitude 491 !Config Def = 0 492 !Config Help = extension en longitude de la zone du zoom 493 !Config ( fraction de la zone totale) 494 dzoomxx = 0.0 495 CALL getin('dzoomx',dzoomxx) 496 497 IF( fxyhypb ) THEN 498 IF( ABS(dzoomx - dzoomxx).GE. 0.001 ) THEN 499 write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', & 500 'run.def est differente de celle lue sur le fichier start ' 501 STOP 502 ENDIF 503 ENDIF 504 505 !Config Key = dzoomy 506 !Config Desc = extension en latitude 507 !Config Def = 0 508 !Config Help = extension en latitude de la zone du zoom 509 !Config ( fraction de la zone totale) 510 dzoomyy = 0.0 511 CALL getin('dzoomy',dzoomyy) 512 513 IF( fxyhypb ) THEN 514 IF( ABS(dzoomy - dzoomyy).GE. 0.001 ) THEN 515 write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', & 516 'run.def est differente de celle lue sur le fichier start ' 517 STOP 518 ENDIF 519 ENDIF 520 521 !Config Key = taux 522 !Config Desc = raideur du zoom en X 523 !Config Def = 3 524 !Config Help = raideur du zoom en X 525 tauxx = 3.0 526 CALL getin('taux',tauxx) 527 528 IF( fxyhypb ) THEN 529 IF( ABS(taux - tauxx).GE. 0.001 ) THEN 530 write(lunout,*)'conf_gcm: La valeur de taux passee par ', & 531 'run.def est differente de celle lue sur le fichier start ' 532 STOP 533 ENDIF 534 ENDIF 535 536 !Config Key = tauyy 537 !Config Desc = raideur du zoom en Y 538 !Config Def = 3 539 !Config Help = raideur du zoom en Y 540 tauyy = 3.0 541 CALL getin('tauy',tauyy) 542 543 IF( fxyhypb ) THEN 544 IF( ABS(tauy - tauyy).GE. 0.001 ) THEN 545 write(lunout,*)'conf_gcm: La valeur de tauy passee par ', & 546 'run.def est differente de celle lue sur le fichier start ' 547 STOP 548 ENDIF 549 ENDIF 550 551 !c 552 IF( .NOT.fxyhypb ) THEN 553 554 !Config Key = ysinus 555 !Config IF = !fxyhypb 556 !Config Desc = Fonction en Sinus 557 !Config Def = y 558 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 559 !Config sinon y = latit. 560 ysinuss = .TRUE. 561 CALL getin('ysinus',ysinuss) 562 563 IF( .NOT.ysinus ) THEN 564 IF( ysinuss ) THEN 565 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 566 write(lunout,*)' *** ysinus lu sur le fichier start est F', & 567 ' alors qu il est T sur run.def ***' 494 568 STOP 495 ENDIF496 ELSE497 IF( .NOT.fxyhypbb) THEN498 write(lunout,*)' ******** PBS DANS CONF_GCM ******** '499 write(lunout,*)' *** fxyhypb lu sur le fichier start est ',500 * 'Talors qu il est F sur run.def **** '569 ENDIF 570 ELSE 571 IF( .NOT.ysinuss ) THEN 572 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 573 write(lunout,*)' *** ysinus lu sur le fichier start est T', & 574 ' alors qu il est F sur run.def **** ' 501 575 STOP 502 ENDIF 503 ENDIF 504 ! 505 !Config Key = dzoomx 506 !Config Desc = extension en longitude 507 !Config Def = 0 508 !Config Help = extension en longitude de la zone du zoom 509 !Config ( fraction de la zone totale) 510 dzoomxx = 0.0 511 CALL getin('dzoomx',dzoomxx) 512 513 IF( fxyhypb ) THEN 514 IF( ABS(dzoomx - dzoomxx).GE. 0.001 ) THEN 515 write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', 516 * 'run.def est differente de celle lue sur le fichier start ' 576 ENDIF 577 ENDIF 578 ENDIF ! of IF( .NOT.fxyhypb ) 579 580 !Config Key = offline 581 !Config Desc = Nouvelle eau liquide 582 !Config Def = n 583 !Config Help = Permet de mettre en route la 584 !Config nouvelle parametrisation de l'eau liquide ! 585 offline = .FALSE. 586 CALL getin('offline',offline) 587 588 !Config Key = type_trac 589 !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS 590 !Config Def = lmdz 591 !Config Help = 592 !Config 'lmdz' = pas de couplage, pur LMDZ 593 !Config 'inca' = model de chime INCA 594 !Config 'repr' = model de chime REPROBUS 595 type_trac = 'lmdz' 596 CALL getin('type_trac',type_trac) 597 598 !Config Key = config_inca 599 !Config Desc = Choix de configuration de INCA 600 !Config Def = none 601 !Config Help = Choix de configuration de INCA : 602 !Config 'none' = sans INCA 603 !Config 'chem' = INCA avec calcul de chemie 604 !Config 'aero' = INCA avec calcul des aerosols 605 config_inca = 'none' 606 CALL getin('config_inca',config_inca) 607 608 !Config Key = ok_dynzon 609 !Config Desc = calcul et sortie des transports 610 !Config Def = n 611 !Config Help = Permet de mettre en route le calcul des transports 612 !Config 613 ok_dynzon = .FALSE. 614 CALL getin('ok_dynzon',ok_dynzon) 615 616 !Config Key = ok_dyn_ins 617 !Config Desc = sorties instantanees dans la dynamique 618 !Config Def = n 619 !Config Help = 620 !Config 621 ok_dyn_ins = .FALSE. 622 CALL getin('ok_dyn_ins',ok_dyn_ins) 623 624 !Config Key = ok_dyn_ave 625 !Config Desc = sorties moyennes dans la dynamique 626 !Config Def = n 627 !Config Help = 628 !Config 629 ok_dyn_ave = .FALSE. 630 CALL getin('ok_dyn_ave',ok_dyn_ave) 631 632 write(lunout,*)' #########################################' 633 write(lunout,*)' Configuration des parametres du gcm: ' 634 write(lunout,*)' planet_type = ', planet_type 635 write(lunout,*)' calend = ', calend 636 write(lunout,*)' dayref = ', dayref 637 write(lunout,*)' anneeref = ', anneeref 638 write(lunout,*)' nday = ', nday 639 write(lunout,*)' day_step = ', day_step 640 write(lunout,*)' iperiod = ', iperiod 641 write(lunout,*)' nsplit_phys = ', nsplit_phys 642 write(lunout,*)' iconser = ', iconser 643 write(lunout,*)' iecri = ', iecri 644 write(lunout,*)' periodav = ', periodav 645 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 646 write(lunout,*)' dissip_period = ', dissip_period 647 write(lunout,*)' lstardis = ', lstardis 648 write(lunout,*)' nitergdiv = ', nitergdiv 649 write(lunout,*)' nitergrot = ', nitergrot 650 write(lunout,*)' niterh = ', niterh 651 write(lunout,*)' tetagdiv = ', tetagdiv 652 write(lunout,*)' tetagrot = ', tetagrot 653 write(lunout,*)' tetatemp = ', tetatemp 654 write(lunout,*)' coefdis = ', coefdis 655 write(lunout,*)' purmats = ', purmats 656 write(lunout,*)' read_start = ', read_start 657 write(lunout,*)' iflag_phys = ', iflag_phys 658 write(lunout,*)' iphysiq = ', iphysiq 659 write(lunout,*)' clonn = ', clonn 660 write(lunout,*)' clatt = ', clatt 661 write(lunout,*)' grossismx = ', grossismx 662 write(lunout,*)' grossismy = ', grossismy 663 write(lunout,*)' fxyhypbb = ', fxyhypbb 664 write(lunout,*)' dzoomxx = ', dzoomxx 665 write(lunout,*)' dzoomy = ', dzoomyy 666 write(lunout,*)' tauxx = ', tauxx 667 write(lunout,*)' tauyy = ', tauyy 668 write(lunout,*)' offline = ', offline 669 write(lunout,*)' type_trac = ', type_trac 670 write(lunout,*)' config_inca = ', config_inca 671 write(lunout,*)' ok_dynzon = ', ok_dynzon 672 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 673 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 674 else 675 !Config Key = clon 676 !Config Desc = centre du zoom, longitude 677 !Config Def = 0 678 !Config Help = longitude en degres du centre 679 !Config du zoom 680 clon = 0. 681 CALL getin('clon',clon) 682 683 !Config Key = clat 684 !Config Desc = centre du zoom, latitude 685 !Config Def = 0 686 !Config Help = latitude en degres du centre du zoom 687 !Config 688 clat = 0. 689 CALL getin('clat',clat) 690 691 !Config Key = grossismx 692 !Config Desc = zoom en longitude 693 !Config Def = 1.0 694 !Config Help = facteur de grossissement du zoom, 695 !Config selon la longitude 696 grossismx = 1.0 697 CALL getin('grossismx',grossismx) 698 699 !Config Key = grossismy 700 !Config Desc = zoom en latitude 701 !Config Def = 1.0 702 !Config Help = facteur de grossissement du zoom, 703 !Config selon la latitude 704 grossismy = 1.0 705 CALL getin('grossismy',grossismy) 706 707 IF( grossismx.LT.1. ) THEN 708 write(lunout,*) & 709 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 517 710 STOP 518 ENDIF 519 ENDIF 520 521 !Config Key = dzoomy 522 !Config Desc = extension en latitude 523 !Config Def = 0 524 !Config Help = extension en latitude de la zone du zoom 525 !Config ( fraction de la zone totale) 526 dzoomyy = 0.0 527 CALL getin('dzoomy',dzoomyy) 528 529 IF( fxyhypb ) THEN 530 IF( ABS(dzoomy - dzoomyy).GE. 0.001 ) THEN 531 write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', 532 * 'run.def est differente de celle lue sur le fichier start ' 711 ELSE 712 alphax = 1. - 1./ grossismx 713 ENDIF 714 715 IF( grossismy.LT.1. ) THEN 716 write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** ' 533 717 STOP 534 ENDIF 535 ENDIF 536 537 !Config Key = taux 538 !Config Desc = raideur du zoom en X 539 !Config Def = 3 540 !Config Help = raideur du zoom en X 541 tauxx = 3.0 542 CALL getin('taux',tauxx) 543 544 IF( fxyhypb ) THEN 545 IF( ABS(taux - tauxx).GE. 0.001 ) THEN 546 write(lunout,*)'conf_gcm: La valeur de taux passee par ', 547 * 'run.def est differente de celle lue sur le fichier start ' 548 STOP 549 ENDIF 550 ENDIF 551 552 !Config Key = tauyy 553 !Config Desc = raideur du zoom en Y 554 !Config Def = 3 555 !Config Help = raideur du zoom en Y 556 tauyy = 3.0 557 CALL getin('tauy',tauyy) 558 559 IF( fxyhypb ) THEN 560 IF( ABS(tauy - tauyy).GE. 0.001 ) THEN 561 write(lunout,*)'conf_gcm: La valeur de tauy passee par ', 562 * 'run.def est differente de celle lue sur le fichier start ' 563 STOP 564 ENDIF 565 ENDIF 566 567 !c 568 IF( .NOT.fxyhypb ) THEN 569 570 !Config Key = ysinus 571 !Config IF = !fxyhypb 572 !Config Desc = Fonction en Sinus 573 !Config Def = y 574 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 575 !Config sinon y = latit. 576 ysinuss = .TRUE. 577 CALL getin('ysinus',ysinuss) 578 579 IF( .NOT.ysinus ) THEN 580 IF( ysinuss ) THEN 581 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 582 write(lunout,*)' *** ysinus lu sur le fichier start est F', 583 * ' alors qu il est T sur run.def ***' 584 STOP 585 ENDIF 586 ELSE 587 IF( .NOT.ysinuss ) THEN 588 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 589 write(lunout,*)' *** ysinus lu sur le fichier start est T', 590 * ' alors qu il est F sur run.def **** ' 591 STOP 592 ENDIF 593 ENDIF 594 ENDIF ! of IF( .NOT.fxyhypb ) 595 ! 596 !Config Key = offline 597 !Config Desc = Nouvelle eau liquide 598 !Config Def = n 599 !Config Help = Permet de mettre en route la 600 !Config nouvelle parametrisation de l'eau liquide ! 601 offline = .FALSE. 602 CALL getin('offline',offline) 603 604 !Config Key = type_trac 605 !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS 606 !Config Def = lmdz 607 !Config Help = 608 !Config 'lmdz' = pas de couplage, pur LMDZ 609 !Config 'inca' = model de chime INCA 610 !Config 'repr' = model de chime REPROBUS 611 type_trac = 'lmdz' 612 CALL getin('type_trac',type_trac) 613 614 !Config Key = config_inca 615 !Config Desc = Choix de configuration de INCA 616 !Config Def = none 617 !Config Help = Choix de configuration de INCA : 618 !Config 'none' = sans INCA 619 !Config 'chem' = INCA avec calcul de chemie 620 !Config 'aero' = INCA avec calcul des aerosols 621 config_inca = 'none' 622 CALL getin('config_inca',config_inca) 623 624 !Config Key = ok_dynzon 625 !Config Desc = calcul et sortie des transports 626 !Config Def = n 627 !Config Help = Permet de mettre en route le calcul des transports 628 !Config 629 ok_dynzon = .FALSE. 630 CALL getin('ok_dynzon',ok_dynzon) 631 632 !Config Key = ok_dyn_ins 633 !Config Desc = sorties instantanees dans la dynamique 634 !Config Def = n 635 !Config Help = 636 !Config 637 ok_dyn_ins = .FALSE. 638 CALL getin('ok_dyn_ins',ok_dyn_ins) 639 640 !Config Key = ok_dyn_ave 641 !Config Desc = sorties moyennes dans la dynamique 642 !Config Def = n 643 !Config Help = 644 !Config 645 ok_dyn_ave = .FALSE. 646 CALL getin('ok_dyn_ave',ok_dyn_ave) 647 648 write(lunout,*)' #########################################' 649 write(lunout,*)' Configuration des parametres du gcm: ' 650 write(lunout,*)' planet_type = ', planet_type 651 write(lunout,*)' calend = ', calend 652 write(lunout,*)' dayref = ', dayref 653 write(lunout,*)' anneeref = ', anneeref 654 write(lunout,*)' nday = ', nday 655 write(lunout,*)' day_step = ', day_step 656 write(lunout,*)' iperiod = ', iperiod 657 write(lunout,*)' nsplit_phys = ', nsplit_phys 658 write(lunout,*)' iconser = ', iconser 659 write(lunout,*)' iecri = ', iecri 660 write(lunout,*)' periodav = ', periodav 661 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 662 write(lunout,*)' dissip_period = ', dissip_period 663 write(lunout,*)' lstardis = ', lstardis 664 write(lunout,*)' nitergdiv = ', nitergdiv 665 write(lunout,*)' nitergrot = ', nitergrot 666 write(lunout,*)' niterh = ', niterh 667 write(lunout,*)' tetagdiv = ', tetagdiv 668 write(lunout,*)' tetagrot = ', tetagrot 669 write(lunout,*)' tetatemp = ', tetatemp 670 write(lunout,*)' coefdis = ', coefdis 671 write(lunout,*)' purmats = ', purmats 672 write(lunout,*)' read_start = ', read_start 673 write(lunout,*)' iflag_phys = ', iflag_phys 674 write(lunout,*)' iphysiq = ', iphysiq 675 write(lunout,*)' clonn = ', clonn 676 write(lunout,*)' clatt = ', clatt 677 write(lunout,*)' grossismx = ', grossismx 678 write(lunout,*)' grossismy = ', grossismy 679 write(lunout,*)' fxyhypbb = ', fxyhypbb 680 write(lunout,*)' dzoomxx = ', dzoomxx 681 write(lunout,*)' dzoomy = ', dzoomyy 682 write(lunout,*)' tauxx = ', tauxx 683 write(lunout,*)' tauyy = ', tauyy 684 write(lunout,*)' offline = ', offline 685 write(lunout,*)' type_trac = ', type_trac 686 write(lunout,*)' config_inca = ', config_inca 687 write(lunout,*)' ok_dynzon = ', ok_dynzon 688 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 689 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 690 691 RETURN 692 ! ............................................... 693 ! 694 100 CONTINUE 695 !Config Key = clon 696 !Config Desc = centre du zoom, longitude 697 !Config Def = 0 698 !Config Help = longitude en degres du centre 699 !Config du zoom 700 clon = 0. 701 CALL getin('clon',clon) 702 703 !Config Key = clat 704 !Config Desc = centre du zoom, latitude 705 !Config Def = 0 706 !Config Help = latitude en degres du centre du zoom 707 !Config 708 clat = 0. 709 CALL getin('clat',clat) 710 711 !Config Key = grossismx 712 !Config Desc = zoom en longitude 713 !Config Def = 1.0 714 !Config Help = facteur de grossissement du zoom, 715 !Config selon la longitude 716 grossismx = 1.0 717 CALL getin('grossismx',grossismx) 718 719 !Config Key = grossismy 720 !Config Desc = zoom en latitude 721 !Config Def = 1.0 722 !Config Help = facteur de grossissement du zoom, 723 !Config selon la latitude 724 grossismy = 1.0 725 CALL getin('grossismy',grossismy) 726 727 IF( grossismx.LT.1. ) THEN 728 write(lunout,*) 729 & 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 730 STOP 731 ELSE 732 alphax = 1. - 1./ grossismx 733 ENDIF 734 735 736 IF( grossismy.LT.1. ) THEN 737 write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** ' 738 STOP 739 ELSE 740 alphay = 1. - 1./ grossismy 741 ENDIF 742 743 write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay 744 ! 745 ! alphax et alphay sont les anciennes formulat. des grossissements 746 ! 747 ! 748 749 !Config Key = fxyhypb 750 !Config Desc = Fonction hyperbolique 751 !Config Def = y 752 !Config Help = Fonction f(y) hyperbolique si = .true. 753 !Config sinon sinusoidale 754 fxyhypb = .TRUE. 755 CALL getin('fxyhypb',fxyhypb) 756 757 !Config Key = dzoomx 758 !Config Desc = extension en longitude 759 !Config Def = 0 760 !Config Help = extension en longitude de la zone du zoom 761 !Config ( fraction de la zone totale) 762 dzoomx = 0.0 763 CALL getin('dzoomx',dzoomx) 764 765 !Config Key = dzoomy 766 !Config Desc = extension en latitude 767 !Config Def = 0 768 !Config Help = extension en latitude de la zone du zoom 769 !Config ( fraction de la zone totale) 770 dzoomy = 0.0 771 CALL getin('dzoomy',dzoomy) 772 773 !Config Key = taux 774 !Config Desc = raideur du zoom en X 775 !Config Def = 3 776 !Config Help = raideur du zoom en X 777 taux = 3.0 778 CALL getin('taux',taux) 779 780 !Config Key = tauy 781 !Config Desc = raideur du zoom en Y 782 !Config Def = 3 783 !Config Help = raideur du zoom en Y 784 tauy = 3.0 785 CALL getin('tauy',tauy) 786 787 !Config Key = ysinus 788 !Config IF = !fxyhypb 789 !Config Desc = Fonction en Sinus 790 !Config Def = y 791 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 792 !Config sinon y = latit. 793 ysinus = .TRUE. 794 CALL getin('ysinus',ysinus) 795 ! 796 !Config Key = offline 797 !Config Desc = Nouvelle eau liquide 798 !Config Def = n 799 !Config Help = Permet de mettre en route la 800 !Config nouvelle parametrisation de l'eau liquide ! 801 offline = .FALSE. 802 CALL getin('offline',offline) 803 804 !Config Key = type_trac 805 !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS 806 !Config Def = lmdz 807 !Config Help = 808 !Config 'lmdz' = pas de couplage, pur LMDZ 809 !Config 'inca' = model de chime INCA 810 !Config 'repr' = model de chime REPROBUS 811 type_trac = 'lmdz' 812 CALL getin('type_trac',type_trac) 813 814 !Config Key = config_inca 815 !Config Desc = Choix de configuration de INCA 816 !Config Def = none 817 !Config Help = Choix de configuration de INCA : 818 !Config 'none' = sans INCA 819 !Config 'chem' = INCA avec calcul de chemie 820 !Config 'aero' = INCA avec calcul des aerosols 821 config_inca = 'none' 822 CALL getin('config_inca',config_inca) 823 824 !Config Key = ok_dynzon 825 !Config Desc = sortie des transports zonaux dans la dynamique 826 !Config Def = n 827 !Config Help = Permet de mettre en route le calcul des transports 828 !Config 829 ok_dynzon = .FALSE. 830 CALL getin('ok_dynzon',ok_dynzon) 831 832 !Config Key = ok_dyn_ins 833 !Config Desc = sorties instantanees dans la dynamique 834 !Config Def = n 835 !Config Help = 836 !Config 837 ok_dyn_ins = .FALSE. 838 CALL getin('ok_dyn_ins',ok_dyn_ins) 839 840 !Config Key = ok_dyn_ave 841 !Config Desc = sorties moyennes dans la dynamique 842 !Config Def = n 843 !Config Help = 844 !Config 845 ok_dyn_ave = .FALSE. 846 CALL getin('ok_dyn_ave',ok_dyn_ave) 847 848 !Config Key = use_filtre_fft 849 !Config Desc = flag d'activation des FFT pour le filtre 850 !Config Def = false 851 !Config Help = permet d'activer l'utilisation des FFT pour effectuer 852 !Config le filtrage aux poles. 853 ! Le filtre fft n'est pas implemente dans dyn3d 854 use_filtre_fft=.FALSE. 855 CALL getin('use_filtre_fft',use_filtre_fft) 856 857 IF (use_filtre_fft) THEN 718 ELSE 719 alphay = 1. - 1./ grossismy 720 ENDIF 721 722 write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay 723 724 ! alphax et alphay sont les anciennes formulat. des grossissements 725 726 !Config Key = fxyhypb 727 !Config Desc = Fonction hyperbolique 728 !Config Def = y 729 !Config Help = Fonction f(y) hyperbolique si = .true. 730 !Config sinon sinusoidale 731 fxyhypb = .TRUE. 732 CALL getin('fxyhypb',fxyhypb) 733 734 !Config Key = dzoomx 735 !Config Desc = extension en longitude 736 !Config Def = 0 737 !Config Help = extension en longitude de la zone du zoom 738 !Config ( fraction de la zone totale) 739 dzoomx = 0.0 740 CALL getin('dzoomx',dzoomx) 741 742 !Config Key = dzoomy 743 !Config Desc = extension en latitude 744 !Config Def = 0 745 !Config Help = extension en latitude de la zone du zoom 746 !Config ( fraction de la zone totale) 747 dzoomy = 0.0 748 CALL getin('dzoomy',dzoomy) 749 750 !Config Key = taux 751 !Config Desc = raideur du zoom en X 752 !Config Def = 3 753 !Config Help = raideur du zoom en X 754 taux = 3.0 755 CALL getin('taux',taux) 756 757 !Config Key = tauy 758 !Config Desc = raideur du zoom en Y 759 !Config Def = 3 760 !Config Help = raideur du zoom en Y 761 tauy = 3.0 762 CALL getin('tauy',tauy) 763 764 !Config Key = ysinus 765 !Config IF = !fxyhypb 766 !Config Desc = Fonction en Sinus 767 !Config Def = y 768 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 769 !Config sinon y = latit. 770 ysinus = .TRUE. 771 CALL getin('ysinus',ysinus) 772 773 !Config Key = offline 774 !Config Desc = Nouvelle eau liquide 775 !Config Def = n 776 !Config Help = Permet de mettre en route la 777 !Config nouvelle parametrisation de l'eau liquide ! 778 offline = .FALSE. 779 CALL getin('offline',offline) 780 781 !Config Key = type_trac 782 !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS 783 !Config Def = lmdz 784 !Config Help = 785 !Config 'lmdz' = pas de couplage, pur LMDZ 786 !Config 'inca' = model de chime INCA 787 !Config 'repr' = model de chime REPROBUS 788 type_trac = 'lmdz' 789 CALL getin('type_trac',type_trac) 790 791 !Config Key = config_inca 792 !Config Desc = Choix de configuration de INCA 793 !Config Def = none 794 !Config Help = Choix de configuration de INCA : 795 !Config 'none' = sans INCA 796 !Config 'chem' = INCA avec calcul de chemie 797 !Config 'aero' = INCA avec calcul des aerosols 798 config_inca = 'none' 799 CALL getin('config_inca',config_inca) 800 801 !Config Key = ok_dynzon 802 !Config Desc = sortie des transports zonaux dans la dynamique 803 !Config Def = n 804 !Config Help = Permet de mettre en route le calcul des transports 805 !Config 806 ok_dynzon = .FALSE. 807 CALL getin('ok_dynzon',ok_dynzon) 808 809 !Config Key = ok_dyn_ins 810 !Config Desc = sorties instantanees dans la dynamique 811 !Config Def = n 812 !Config Help = 813 !Config 814 ok_dyn_ins = .FALSE. 815 CALL getin('ok_dyn_ins',ok_dyn_ins) 816 817 !Config Key = ok_dyn_ave 818 !Config Desc = sorties moyennes dans la dynamique 819 !Config Def = n 820 !Config Help = 821 !Config 822 ok_dyn_ave = .FALSE. 823 CALL getin('ok_dyn_ave',ok_dyn_ave) 824 825 !Config Key = use_filtre_fft 826 !Config Desc = flag d'activation des FFT pour le filtre 827 !Config Def = false 828 !Config Help = permet d'activer l'utilisation des FFT pour effectuer 829 !Config le filtrage aux poles. 830 ! Le filtre fft n'est pas implemente dans dyn3d 831 use_filtre_fft=.FALSE. 832 CALL getin('use_filtre_fft',use_filtre_fft) 833 834 IF (use_filtre_fft) THEN 858 835 write(lunout,*)'STOP !!!' 859 836 write(lunout,*)'use_filtre_fft n est pas implemente dans dyn3d' 860 837 STOP 1 861 862 863 !Config key = ok_strato864 !Config Desc = activation de la version strato865 !Config Def = .FALSE.866 !Config Help = active la version stratosphérique de LMDZ de F. Lott867 868 869 870 871 872 873 call assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1,874 $"bad value for vert_prof_dissip")875 876 !Config Key = ok_gradsfile877 !Config Desc = activation des sorties grads du guidage878 !Config Def = n879 !Config Help = active les sorties grads du guidage880 881 882 883 884 !Config Key = ok_limit885 !Config Desc = creation des fichiers limit dans create_etat0_limit886 !Config Def = y887 !Config Help = production du fichier limit.nc requise888 889 890 891 892 !Config Key = ok_etat0893 !Config Desc = creation des fichiers etat0 dans create_etat0_limit894 !Config Def = y895 !Config Help = production des fichiers start.nc, startphy.nc requise896 897 898 899 900 901 write(lunout,*)' Configuration des parametres de cel0'902 &//'_limit: '903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 ! 947 RETURN 948 END 838 ENDIF 839 840 !Config key = ok_strato 841 !Config Desc = activation de la version strato 842 !Config Def = .FALSE. 843 !Config Help = active la version stratosphérique de LMDZ de F. Lott 844 845 ok_strato=.FALSE. 846 CALL getin('ok_strato',ok_strato) 847 848 vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39) 849 CALL getin('vert_prof_dissip', vert_prof_dissip) 850 call assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1, & 851 "bad value for vert_prof_dissip") 852 853 !Config Key = ok_gradsfile 854 !Config Desc = activation des sorties grads du guidage 855 !Config Def = n 856 !Config Help = active les sorties grads du guidage 857 858 ok_gradsfile = .FALSE. 859 CALL getin('ok_gradsfile',ok_gradsfile) 860 861 !Config Key = ok_limit 862 !Config Desc = creation des fichiers limit dans create_etat0_limit 863 !Config Def = y 864 !Config Help = production du fichier limit.nc requise 865 866 ok_limit = .TRUE. 867 CALL getin('ok_limit',ok_limit) 868 869 !Config Key = ok_etat0 870 !Config Desc = creation des fichiers etat0 dans create_etat0_limit 871 !Config Def = y 872 !Config Help = production des fichiers start.nc, startphy.nc requise 873 874 ok_etat0 = .TRUE. 875 CALL getin('ok_etat0',ok_etat0) 876 877 write(lunout,*)' #########################################' 878 write(lunout,*)' Configuration des parametres de cel0' & 879 //'_limit: ' 880 write(lunout,*)' planet_type = ', planet_type 881 write(lunout,*)' calend = ', calend 882 write(lunout,*)' dayref = ', dayref 883 write(lunout,*)' anneeref = ', anneeref 884 write(lunout,*)' nday = ', nday 885 write(lunout,*)' day_step = ', day_step 886 write(lunout,*)' iperiod = ', iperiod 887 write(lunout,*)' iconser = ', iconser 888 write(lunout,*)' iecri = ', iecri 889 write(lunout,*)' periodav = ', periodav 890 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 891 write(lunout,*)' dissip_period = ', dissip_period 892 write(lunout,*)' lstardis = ', lstardis 893 write(lunout,*)' nitergdiv = ', nitergdiv 894 write(lunout,*)' nitergrot = ', nitergrot 895 write(lunout,*)' niterh = ', niterh 896 write(lunout,*)' tetagdiv = ', tetagdiv 897 write(lunout,*)' tetagrot = ', tetagrot 898 write(lunout,*)' tetatemp = ', tetatemp 899 write(lunout,*)' coefdis = ', coefdis 900 write(lunout,*)' purmats = ', purmats 901 write(lunout,*)' read_start = ', read_start 902 write(lunout,*)' iflag_phys = ', iflag_phys 903 write(lunout,*)' iphysiq = ', iphysiq 904 write(lunout,*)' clon = ', clon 905 write(lunout,*)' clat = ', clat 906 write(lunout,*)' grossismx = ', grossismx 907 write(lunout,*)' grossismy = ', grossismy 908 write(lunout,*)' fxyhypb = ', fxyhypb 909 write(lunout,*)' dzoomx = ', dzoomx 910 write(lunout,*)' dzoomy = ', dzoomy 911 write(lunout,*)' taux = ', taux 912 write(lunout,*)' tauy = ', tauy 913 write(lunout,*)' offline = ', offline 914 write(lunout,*)' type_trac = ', type_trac 915 write(lunout,*)' config_inca = ', config_inca 916 write(lunout,*)' ok_dynzon = ', ok_dynzon 917 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 918 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 919 write(lunout,*)' ok_strato = ', ok_strato 920 write(lunout,*)' ok_gradsfile = ', ok_gradsfile 921 write(lunout,*)' ok_limit = ', ok_limit 922 write(lunout,*)' ok_etat0 = ', ok_etat0 923 end IF test_etatinit 924 925 END SUBROUTINE conf_gcm -
LMDZ5/trunk/libf/dyn3dmem/conf_gcm.F90
r2141 r2142 1 ! 1 2 2 ! $Id$ 3 ! 4 ! 5 ! 6 SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 ) 7 ! 8 USE control_mod 3 4 SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 ) 5 6 USE control_mod 9 7 #ifdef CPP_IOIPSL 10 8 use IOIPSL 11 9 #else 12 ! if not using IOIPSL, we still need to use (a local version of) getin13 10 ! if not using IOIPSL, we still need to use (a local version of) getin 11 use ioipsl_getincom 14 12 #endif 15 use misc_mod 16 use mod_filtre_fft, ONLY : use_filtre_fft 17 use mod_filtre_fft_loc, ONLY : use_filtre_fft_loc=>use_filtre_fft 18 use mod_hallo, ONLY : use_mpi_alloc 19 USE infotrac, ONLY : type_trac 20 use assert_m, only: assert 21 22 IMPLICIT NONE 23 !----------------------------------------------------------------------- 24 ! Auteurs : L. Fairhead , P. Le Van . 25 ! 26 ! Arguments : 27 ! 28 ! tapedef : 29 ! etatinit : = TRUE , on ne compare pas les valeurs des para- 30 ! -metres du zoom avec celles lues sur le fichier start . 31 ! clesphy0 : sortie . 32 ! 33 LOGICAL etatinit 34 INTEGER tapedef 35 36 INTEGER longcles 37 PARAMETER( longcles = 20 ) 38 REAL clesphy0( longcles ) 39 ! 40 ! Declarations : 41 ! -------------- 42 #include "dimensions.h" 43 #include "paramet.h" 44 #include "logic.h" 45 #include "serre.h" 46 #include "comdissnew.h" 47 #include "temps.h" 48 #include "comconst.h" 49 50 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique 51 ! #include "clesphys.h" 52 #include "iniprint.h" 53 ! 54 ! 55 ! local: 56 ! ------ 57 58 CHARACTER ch1*72,ch2*72,ch3*72,ch4*12 59 REAL clonn,clatt,grossismxx,grossismyy 60 REAL dzoomxx,dzoomyy, tauxx,tauyy 61 LOGICAL fxyhypbb, ysinuss 62 INTEGER i 63 character(len=*),parameter :: modname="conf_gcm" 64 character (len=80) :: abort_message 13 use misc_mod 14 use mod_filtre_fft, ONLY : use_filtre_fft 15 use mod_filtre_fft_loc, ONLY : use_filtre_fft_loc=>use_filtre_fft 16 use mod_hallo, ONLY : use_mpi_alloc 17 USE infotrac, ONLY : type_trac 18 use assert_m, only: assert 19 20 IMPLICIT NONE 21 !----------------------------------------------------------------------- 22 ! Auteurs : L. Fairhead , P. Le Van . 23 24 ! Arguments : 25 26 ! tapedef : 27 ! etatinit : = TRUE , on ne compare pas les valeurs des para- 28 ! -metres du zoom avec celles lues sur le fichier start . 29 ! clesphy0 : sortie . 30 31 LOGICAL etatinit 32 INTEGER tapedef 33 34 INTEGER longcles 35 PARAMETER( longcles = 20 ) 36 REAL clesphy0( longcles ) 37 38 ! Declarations : 39 ! -------------- 40 include "dimensions.h" 41 include "paramet.h" 42 include "logic.h" 43 include "serre.h" 44 include "comdissnew.h" 45 include "temps.h" 46 include "comconst.h" 47 48 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique 49 ! include "clesphys.h" 50 include "iniprint.h" 51 52 ! local: 53 ! ------ 54 55 CHARACTER ch1*72,ch2*72,ch3*72,ch4*12 56 REAL clonn,clatt,grossismxx,grossismyy 57 REAL dzoomxx,dzoomyy, tauxx,tauyy 58 LOGICAL fxyhypbb, ysinuss 59 INTEGER i 60 character(len=*),parameter :: modname="conf_gcm" 61 character (len=80) :: abort_message 65 62 #ifdef CPP_OMP 66 63 integer,external :: OMP_GET_NUM_THREADS 67 64 #endif 68 ! 69 ! -------------------------------------------------------------------70 ! 71 ! ......... Version du 29/04/97 ..........72 ! 73 ! Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot,74 ! tetatemp ajoutes pour la dissipation .75 ! 76 ! Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb **77 ! 78 ! Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb.79 ! Sinon , choix de fxynew , a derivee sinusoidale ..80 ! 81 ! ...... etatinit = . TRUE. si defrun est appele dans ETAT0_LMD ou82 ! LIMIT_LMD pour l'initialisation de start.dat (dic) et83 ! de limit.dat ( dic) ...........84 ! Sinon etatinit = . FALSE .85 ! 86 ! Donc etatinit = .F. si on veut comparer les valeurs de grossismx ,87 ! grossismy,clon,clat, fxyhypb lues sur le fichier start avec88 ! celles passees par run.def , au debut du gcm, apres l'appel a89 ! lectba .90 ! Ces parmetres definissant entre autres la grille et doivent etre91 ! pareils et coherents , sinon il y aura divergence du gcm .92 ! 93 !-----------------------------------------------------------------------94 ! initialisations:95 ! ----------------96 97 !Config Key = lunout98 !Config Desc = unite de fichier pour les impressions99 !Config Def = 6100 !Config Help = unite de fichier pour les impressions101 !Config (defaut sortie standard = 6)102 103 104 105 OPEN(UNIT=lunout,FILE='lmdz.out_0000',ACTION='write',106 &STATUS='unknown',FORM='formatted')107 108 109 110 65 66 ! ------------------------------------------------------------------- 67 68 ! ......... Version du 29/04/97 .......... 69 70 ! Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot, 71 ! tetatemp ajoutes pour la dissipation . 72 73 ! Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb ** 74 75 ! Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb. 76 ! Sinon , choix de fxynew , a derivee sinusoidale .. 77 78 ! ...... etatinit = . TRUE. si defrun est appele dans ETAT0_LMD ou 79 ! LIMIT_LMD pour l'initialisation de start.dat (dic) et 80 ! de limit.dat ( dic) ........... 81 ! Sinon etatinit = . FALSE . 82 83 ! Donc etatinit = .F. si on veut comparer les valeurs de grossismx , 84 ! grossismy,clon,clat, fxyhypb lues sur le fichier start avec 85 ! celles passees par run.def , au debut du gcm, apres l'appel a 86 ! lectba . 87 ! Ces parmetres definissant entre autres la grille et doivent etre 88 ! pareils et coherents , sinon il y aura divergence du gcm . 89 90 !----------------------------------------------------------------------- 91 ! initialisations: 92 ! ---------------- 93 94 !Config Key = lunout 95 !Config Desc = unite de fichier pour les impressions 96 !Config Def = 6 97 !Config Help = unite de fichier pour les impressions 98 !Config (defaut sortie standard = 6) 99 lunout=6 100 CALL getin('lunout', lunout) 101 IF (lunout /= 5 .and. lunout /= 6) THEN 102 OPEN(UNIT=lunout,FILE='lmdz.out_0000',ACTION='write', & 103 STATUS='unknown',FORM='formatted') 104 ENDIF 105 106 adjust=.false. 107 call getin('adjust',adjust) 111 108 112 109 #ifdef CPP_OMP 113 114 !$OMP PARALLEL115 116 write(lunout,*)'conf_gcm: Error, adjust should be set to n'117 &,' when running with OpenMP threads'118 119 120 121 !$OMP END PARALLEL110 ! adjust=y not implemented in case of OpenMP threads... 111 !$OMP PARALLEL 112 if ((OMP_GET_NUM_THREADS()>1).and.adjust) then 113 write(lunout,*)'conf_gcm: Error, adjust should be set to n' & 114 ,' when running with OpenMP threads' 115 abort_message = 'Wrong value for adjust' 116 call abort_gcm(modname,abort_message,1) 117 endif 118 !$OMP END PARALLEL 122 119 #endif 123 120 124 itaumax=0 125 call getin('itaumax',itaumax); 126 if (itaumax<=0) itaumax=HUGE(itaumax) 127 128 !Config Key = prt_level 129 !Config Desc = niveau d'impressions de débogage 130 !Config Def = 0 131 !Config Help = Niveau d'impression pour le débogage 132 !Config (0 = minimum d'impression) 133 prt_level = 0 134 CALL getin('prt_level',prt_level) 135 136 !----------------------------------------------------------------------- 137 ! Parametres de controle du run: 138 !----------------------------------------------------------------------- 139 !Config Key = planet_type 140 !Config Desc = planet type ("earth", "mars", "venus", ...) 141 !Config Def = earth 142 !Config Help = this flag sets the type of atymosphere that is considered 143 planet_type="earth" 144 CALL getin('planet_type',planet_type) 145 146 !Config Key = calend 147 !Config Desc = type de calendrier utilise 148 !Config Def = earth_360d 149 !Config Help = valeur possible: earth_360d, earth_365d, earth_366d 150 !Config 151 calend = 'earth_360d' 152 CALL getin('calend', calend) 153 154 !Config Key = dayref 155 !Config Desc = Jour de l'etat initial 156 !Config Def = 1 157 !Config Help = Jour de l'etat initial ( = 350 si 20 Decembre , 158 !Config par expl. ,comme ici ) ... A completer 159 dayref=1 160 CALL getin('dayref', dayref) 161 162 !Config Key = anneeref 163 !Config Desc = Annee de l'etat initial 164 !Config Def = 1998 165 !Config Help = Annee de l'etat initial 166 !Config ( avec 4 chiffres ) ... A completer 167 anneeref = 1998 168 CALL getin('anneeref',anneeref) 169 170 !Config Key = raz_date 171 !Config Desc = Remise a zero de la date initiale 172 !Config Def = 0 (pas de remise a zero) 173 !Config Help = Remise a zero de la date initiale 174 !Config 0 pas de remise a zero, on garde la date du fichier restart 175 !Config 1 prise en compte de la date de gcm.def avec remise a zero 176 !Config des compteurs de pas de temps 177 raz_date = 0 178 CALL getin('raz_date', raz_date) 179 180 !Config Key = resetvarc 181 !Config Desc = Reinit des variables de controle 182 !Config Def = n 183 !Config Help = Reinit des variables de controle 184 resetvarc = .false. 185 CALL getin('resetvarc',resetvarc) 186 187 !Config Key = nday 188 !Config Desc = Nombre de jours d'integration 189 !Config Def = 10 190 !Config Help = Nombre de jours d'integration 191 !Config ... On pourait aussi permettre des mois ou des annees ! 192 nday = 10 193 CALL getin('nday',nday) 194 195 !Config Key = starttime 196 !Config Desc = Heure de depart de la simulation 197 !Config Def = 0 198 !Config Help = Heure de depart de la simulation 199 !Config en jour 200 starttime = 0 201 CALL getin('starttime',starttime) 202 203 !Config Key = day_step 204 !Config Desc = nombre de pas par jour 205 !Config Def = 240 206 !Config Help = nombre de pas par jour (multiple de iperiod) ( 207 !Config ici pour dt = 1 min ) 208 day_step = 240 209 CALL getin('day_step',day_step) 210 211 !Config Key = nsplit_phys 212 nsplit_phys = 1 213 CALL getin('nsplit_phys',nsplit_phys) 214 215 !Config Key = iperiod 216 !Config Desc = periode pour le pas Matsuno 217 !Config Def = 5 218 !Config Help = periode pour le pas Matsuno (en pas de temps) 219 iperiod = 5 220 CALL getin('iperiod',iperiod) 221 222 !Config Key = iapp_tracvl 223 !Config Desc = frequence du groupement des flux 224 !Config Def = iperiod 225 !Config Help = frequence du groupement des flux (en pas de temps) 226 iapp_tracvl = iperiod 227 CALL getin('iapp_tracvl',iapp_tracvl) 228 229 !Config Key = iconser 230 !Config Desc = periode de sortie des variables de controle 231 !Config Def = 240 232 !Config Help = periode de sortie des variables de controle 233 !Config (En pas de temps) 234 iconser = 240 235 CALL getin('iconser', iconser) 236 237 !Config Key = iecri 238 !Config Desc = periode d'ecriture du fichier histoire 239 !Config Def = 1 240 !Config Help = periode d'ecriture du fichier histoire (en jour) 241 iecri = 1 242 CALL getin('iecri',iecri) 243 244 245 !Config Key = periodav 246 !Config Desc = periode de stockage fichier histmoy 247 !Config Def = 1 248 !Config Help = periode de stockage fichier histmoy (en jour) 249 periodav = 1. 250 CALL getin('periodav',periodav) 251 252 !Config Key = output_grads_dyn 253 !Config Desc = output dynamics diagnostics in 'dyn.dat' file 254 !Config Def = n 255 !Config Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file 256 output_grads_dyn=.false. 257 CALL getin('output_grads_dyn',output_grads_dyn) 258 259 !Config Key = dissip_period 260 !Config Desc = periode de la dissipation 261 !Config Def = 0 262 !Config Help = periode de la dissipation 263 !Config dissip_period=0 => la valeur sera calcule dans inidissip 264 !Config dissip_period>0 => on prend cette valeur 265 dissip_period = 0 266 CALL getin('dissip_period',dissip_period) 267 268 !cc .... P. Le Van , modif le 29/04/97 .pour la dissipation ... 269 !cc 270 271 !Config Key = lstardis 272 !Config Desc = choix de l'operateur de dissipation 273 !Config Def = y 274 !Config Help = choix de l'operateur de dissipation 275 !Config 'y' si on veut star et 'n' si on veut non-start ! 276 !Config Moi y en a pas comprendre ! 277 lstardis = .TRUE. 278 CALL getin('lstardis',lstardis) 279 280 281 !Config Key = nitergdiv 282 !Config Desc = Nombre d'iteration de gradiv 283 !Config Def = 1 284 !Config Help = nombre d'iterations de l'operateur de dissipation 285 !Config gradiv 286 nitergdiv = 1 287 CALL getin('nitergdiv',nitergdiv) 288 289 !Config Key = nitergrot 290 !Config Desc = nombre d'iterations de nxgradrot 291 !Config Def = 2 292 !Config Help = nombre d'iterations de l'operateur de dissipation 293 !Config nxgradrot 294 nitergrot = 2 295 CALL getin('nitergrot',nitergrot) 296 297 298 !Config Key = niterh 299 !Config Desc = nombre d'iterations de divgrad 300 !Config Def = 2 301 !Config Help = nombre d'iterations de l'operateur de dissipation 302 !Config divgrad 303 niterh = 2 304 CALL getin('niterh',niterh) 305 306 307 !Config Key = tetagdiv 308 !Config Desc = temps de dissipation pour div 309 !Config Def = 7200 310 !Config Help = temps de dissipation des plus petites longeur 311 !Config d'ondes pour u,v (gradiv) 312 tetagdiv = 7200. 313 CALL getin('tetagdiv',tetagdiv) 314 315 !Config Key = tetagrot 316 !Config Desc = temps de dissipation pour grad 317 !Config Def = 7200 318 !Config Help = temps de dissipation des plus petites longeur 319 !Config d'ondes pour u,v (nxgradrot) 320 tetagrot = 7200. 321 CALL getin('tetagrot',tetagrot) 322 323 !Config Key = tetatemp 324 !Config Desc = temps de dissipation pour h 325 !Config Def = 7200 326 !Config Help = temps de dissipation des plus petites longeur 327 !Config d'ondes pour h (divgrad) 328 tetatemp = 7200. 329 CALL getin('tetatemp',tetatemp ) 330 331 ! Parametres controlant la variation sur la verticale des constantes de 332 ! dissipation. 333 ! Pour le moment actifs uniquement dans la version a 39 niveaux 334 ! avec ok_strato=y 335 336 dissip_factz=4. 337 dissip_deltaz=10. 338 dissip_zref=30. 339 CALL getin('dissip_factz',dissip_factz ) 340 CALL getin('dissip_deltaz',dissip_deltaz ) 341 CALL getin('dissip_zref',dissip_zref ) 342 343 ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0 344 ! iflag_top_bound=0 for no sponge 345 ! iflag_top_bound=1 for sponge over 4 topmost layers 346 ! iflag_top_bound=2 for sponge from top to ~1% of top layer pressure 347 iflag_top_bound=1 348 CALL getin('iflag_top_bound',iflag_top_bound) 349 350 ! mode_top_bound : fields towards which sponge relaxation will be done: 351 ! mode_top_bound=0: no relaxation 352 ! mode_top_bound=1: u and v relax towards 0 353 ! mode_top_bound=2: u and v relax towards their zonal mean 354 ! mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean 355 mode_top_bound=3 356 CALL getin('mode_top_bound',mode_top_bound) 357 358 ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge 359 tau_top_bound=1.e-5 360 CALL getin('tau_top_bound',tau_top_bound) 361 362 !Config Key = coefdis 363 !Config Desc = coefficient pour gamdissip 364 !Config Def = 0 365 !Config Help = coefficient pour gamdissip 366 coefdis = 0. 367 CALL getin('coefdis',coefdis) 368 369 !Config Key = purmats 370 !Config Desc = Schema d'integration 371 !Config Def = n 372 !Config Help = Choix du schema d'integration temporel. 373 !Config y = pure Matsuno sinon c'est du Matsuno-leapfrog 374 purmats = .FALSE. 375 CALL getin('purmats',purmats) 376 377 !Config Key = ok_guide 378 !Config Desc = Guidage 379 !Config Def = n 380 !Config Help = Guidage 381 ok_guide = .FALSE. 382 CALL getin('ok_guide',ok_guide) 383 384 if (ok_guide .and. adjust) call abort_gcm("conf_gcm", 385 $ "adjust does not work with ok_guide", 1) 386 387 !Config Key = read_start 388 !Config Desc = Initialize model using a 'start.nc' file 389 !Config Def = y 390 !Config Help = y: intialize dynamical fields using a 'start.nc' file 391 ! n: fields are initialized by 'iniacademic' routine 392 read_start= .true. 393 CALL getin('read_start',read_start) 394 395 !Config Key = iflag_phys 396 !Config Desc = Avec ls physique 397 !Config Def = 1 398 !Config Help = Permet de faire tourner le modele sans 399 !Config physique. 400 iflag_phys = 1 401 CALL getin('iflag_phys',iflag_phys) 402 403 404 !Config Key = iphysiq 405 !Config Desc = Periode de la physique 406 !Config Def = 5 407 !Config Help = Periode de la physique en pas de temps de la dynamique. 408 iphysiq = 5 409 CALL getin('iphysiq', iphysiq) 410 411 if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm", 412 $ "iphysiq must be a multiple of iperiod", 1) 413 414 !Config Key = ip_ebil_dyn 415 !Config Desc = PRINT level for energy conserv. diag. 416 !Config Def = 0 417 !Config Help = PRINT level for energy conservation diag. ; 418 ! les options suivantes existent : 419 !Config 0 pas de print 420 !Config 1 pas de print 421 !Config 2 print, 422 ip_ebil_dyn = 0 423 CALL getin('ip_ebil_dyn',ip_ebil_dyn) 424 ! 425 426 427 !cc .... P. Le Van , ajout le 7/03/95 .pour le zoom ... 428 ! ......... ( modif le 17/04/96 ) ......... 429 ! 430 IF( etatinit ) GO TO 100 431 432 !Config Key = clon 433 !Config Desc = centre du zoom, longitude 434 !Config Def = 0 435 !Config Help = longitude en degres du centre 436 !Config du zoom 437 clonn = 0. 438 CALL getin('clon',clonn) 439 440 !Config Key = clat 441 !Config Desc = centre du zoom, latitude 442 !Config Def = 0 443 !Config Help = latitude en degres du centre du zoom 444 !Config 445 clatt = 0. 446 CALL getin('clat',clatt) 447 448 ! 449 ! 450 IF( ABS(clat - clatt).GE. 0.001 ) THEN 451 write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', 452 & ' est differente de celle lue sur le fichier start ' 121 itaumax=0 122 call getin('itaumax',itaumax); 123 if (itaumax<=0) itaumax=HUGE(itaumax) 124 125 !Config Key = prt_level 126 !Config Desc = niveau d'impressions de débogage 127 !Config Def = 0 128 !Config Help = Niveau d'impression pour le débogage 129 !Config (0 = minimum d'impression) 130 prt_level = 0 131 CALL getin('prt_level',prt_level) 132 133 !----------------------------------------------------------------------- 134 ! Parametres de controle du run: 135 !----------------------------------------------------------------------- 136 !Config Key = planet_type 137 !Config Desc = planet type ("earth", "mars", "venus", ...) 138 !Config Def = earth 139 !Config Help = this flag sets the type of atymosphere that is considered 140 planet_type="earth" 141 CALL getin('planet_type',planet_type) 142 143 !Config Key = calend 144 !Config Desc = type de calendrier utilise 145 !Config Def = earth_360d 146 !Config Help = valeur possible: earth_360d, earth_365d, earth_366d 147 !Config 148 calend = 'earth_360d' 149 CALL getin('calend', calend) 150 151 !Config Key = dayref 152 !Config Desc = Jour de l'etat initial 153 !Config Def = 1 154 !Config Help = Jour de l'etat initial ( = 350 si 20 Decembre , 155 !Config par expl. ,comme ici ) ... A completer 156 dayref=1 157 CALL getin('dayref', dayref) 158 159 !Config Key = anneeref 160 !Config Desc = Annee de l'etat initial 161 !Config Def = 1998 162 !Config Help = Annee de l'etat initial 163 !Config ( avec 4 chiffres ) ... A completer 164 anneeref = 1998 165 CALL getin('anneeref',anneeref) 166 167 !Config Key = raz_date 168 !Config Desc = Remise a zero de la date initiale 169 !Config Def = 0 (pas de remise a zero) 170 !Config Help = Remise a zero de la date initiale 171 !Config 0 pas de remise a zero, on garde la date du fichier restart 172 !Config 1 prise en compte de la date de gcm.def avec remise a zero 173 !Config des compteurs de pas de temps 174 raz_date = 0 175 CALL getin('raz_date', raz_date) 176 177 !Config Key = resetvarc 178 !Config Desc = Reinit des variables de controle 179 !Config Def = n 180 !Config Help = Reinit des variables de controle 181 resetvarc = .false. 182 CALL getin('resetvarc',resetvarc) 183 184 !Config Key = nday 185 !Config Desc = Nombre de jours d'integration 186 !Config Def = 10 187 !Config Help = Nombre de jours d'integration 188 !Config ... On pourait aussi permettre des mois ou des annees ! 189 nday = 10 190 CALL getin('nday',nday) 191 192 !Config Key = starttime 193 !Config Desc = Heure de depart de la simulation 194 !Config Def = 0 195 !Config Help = Heure de depart de la simulation 196 !Config en jour 197 starttime = 0 198 CALL getin('starttime',starttime) 199 200 !Config Key = day_step 201 !Config Desc = nombre de pas par jour 202 !Config Def = 240 203 !Config Help = nombre de pas par jour (multiple de iperiod) ( 204 !Config ici pour dt = 1 min ) 205 day_step = 240 206 CALL getin('day_step',day_step) 207 208 !Config Key = nsplit_phys 209 nsplit_phys = 1 210 CALL getin('nsplit_phys',nsplit_phys) 211 212 !Config Key = iperiod 213 !Config Desc = periode pour le pas Matsuno 214 !Config Def = 5 215 !Config Help = periode pour le pas Matsuno (en pas de temps) 216 iperiod = 5 217 CALL getin('iperiod',iperiod) 218 219 !Config Key = iapp_tracvl 220 !Config Desc = frequence du groupement des flux 221 !Config Def = iperiod 222 !Config Help = frequence du groupement des flux (en pas de temps) 223 iapp_tracvl = iperiod 224 CALL getin('iapp_tracvl',iapp_tracvl) 225 226 !Config Key = iconser 227 !Config Desc = periode de sortie des variables de controle 228 !Config Def = 240 229 !Config Help = periode de sortie des variables de controle 230 !Config (En pas de temps) 231 iconser = 240 232 CALL getin('iconser', iconser) 233 234 !Config Key = iecri 235 !Config Desc = periode d'ecriture du fichier histoire 236 !Config Def = 1 237 !Config Help = periode d'ecriture du fichier histoire (en jour) 238 iecri = 1 239 CALL getin('iecri',iecri) 240 241 !Config Key = periodav 242 !Config Desc = periode de stockage fichier histmoy 243 !Config Def = 1 244 !Config Help = periode de stockage fichier histmoy (en jour) 245 periodav = 1. 246 CALL getin('periodav',periodav) 247 248 !Config Key = output_grads_dyn 249 !Config Desc = output dynamics diagnostics in 'dyn.dat' file 250 !Config Def = n 251 !Config Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file 252 output_grads_dyn=.false. 253 CALL getin('output_grads_dyn',output_grads_dyn) 254 255 !Config Key = dissip_period 256 !Config Desc = periode de la dissipation 257 !Config Def = 0 258 !Config Help = periode de la dissipation 259 !Config dissip_period=0 => la valeur sera calcule dans inidissip 260 !Config dissip_period>0 => on prend cette valeur 261 dissip_period = 0 262 CALL getin('dissip_period',dissip_period) 263 264 !cc .... P. Le Van , modif le 29/04/97 .pour la dissipation ... 265 !cc 266 267 !Config Key = lstardis 268 !Config Desc = choix de l'operateur de dissipation 269 !Config Def = y 270 !Config Help = choix de l'operateur de dissipation 271 !Config 'y' si on veut star et 'n' si on veut non-start ! 272 !Config Moi y en a pas comprendre ! 273 lstardis = .TRUE. 274 CALL getin('lstardis',lstardis) 275 276 !Config Key = nitergdiv 277 !Config Desc = Nombre d'iteration de gradiv 278 !Config Def = 1 279 !Config Help = nombre d'iterations de l'operateur de dissipation 280 !Config gradiv 281 nitergdiv = 1 282 CALL getin('nitergdiv',nitergdiv) 283 284 !Config Key = nitergrot 285 !Config Desc = nombre d'iterations de nxgradrot 286 !Config Def = 2 287 !Config Help = nombre d'iterations de l'operateur de dissipation 288 !Config nxgradrot 289 nitergrot = 2 290 CALL getin('nitergrot',nitergrot) 291 292 !Config Key = niterh 293 !Config Desc = nombre d'iterations de divgrad 294 !Config Def = 2 295 !Config Help = nombre d'iterations de l'operateur de dissipation 296 !Config divgrad 297 niterh = 2 298 CALL getin('niterh',niterh) 299 300 !Config Key = tetagdiv 301 !Config Desc = temps de dissipation pour div 302 !Config Def = 7200 303 !Config Help = temps de dissipation des plus petites longeur 304 !Config d'ondes pour u,v (gradiv) 305 tetagdiv = 7200. 306 CALL getin('tetagdiv',tetagdiv) 307 308 !Config Key = tetagrot 309 !Config Desc = temps de dissipation pour grad 310 !Config Def = 7200 311 !Config Help = temps de dissipation des plus petites longeur 312 !Config d'ondes pour u,v (nxgradrot) 313 tetagrot = 7200. 314 CALL getin('tetagrot',tetagrot) 315 316 !Config Key = tetatemp 317 !Config Desc = temps de dissipation pour h 318 !Config Def = 7200 319 !Config Help = temps de dissipation des plus petites longeur 320 !Config d'ondes pour h (divgrad) 321 tetatemp = 7200. 322 CALL getin('tetatemp',tetatemp ) 323 324 ! Parametres controlant la variation sur la verticale des constantes de 325 ! dissipation. 326 ! Pour le moment actifs uniquement dans la version a 39 niveaux 327 ! avec ok_strato=y 328 329 dissip_factz=4. 330 dissip_deltaz=10. 331 dissip_zref=30. 332 CALL getin('dissip_factz',dissip_factz ) 333 CALL getin('dissip_deltaz',dissip_deltaz ) 334 CALL getin('dissip_zref',dissip_zref ) 335 336 ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0 337 ! iflag_top_bound=0 for no sponge 338 ! iflag_top_bound=1 for sponge over 4 topmost layers 339 ! iflag_top_bound=2 for sponge from top to ~1% of top layer pressure 340 iflag_top_bound=1 341 CALL getin('iflag_top_bound',iflag_top_bound) 342 343 ! mode_top_bound : fields towards which sponge relaxation will be done: 344 ! mode_top_bound=0: no relaxation 345 ! mode_top_bound=1: u and v relax towards 0 346 ! mode_top_bound=2: u and v relax towards their zonal mean 347 ! mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean 348 mode_top_bound=3 349 CALL getin('mode_top_bound',mode_top_bound) 350 351 ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge 352 tau_top_bound=1.e-5 353 CALL getin('tau_top_bound',tau_top_bound) 354 355 !Config Key = coefdis 356 !Config Desc = coefficient pour gamdissip 357 !Config Def = 0 358 !Config Help = coefficient pour gamdissip 359 coefdis = 0. 360 CALL getin('coefdis',coefdis) 361 362 !Config Key = purmats 363 !Config Desc = Schema d'integration 364 !Config Def = n 365 !Config Help = Choix du schema d'integration temporel. 366 !Config y = pure Matsuno sinon c'est du Matsuno-leapfrog 367 purmats = .FALSE. 368 CALL getin('purmats',purmats) 369 370 !Config Key = ok_guide 371 !Config Desc = Guidage 372 !Config Def = n 373 !Config Help = Guidage 374 ok_guide = .FALSE. 375 CALL getin('ok_guide',ok_guide) 376 377 if (ok_guide .and. adjust) call abort_gcm("conf_gcm", & 378 "adjust does not work with ok_guide", 1) 379 380 !Config Key = read_start 381 !Config Desc = Initialize model using a 'start.nc' file 382 !Config Def = y 383 !Config Help = y: intialize dynamical fields using a 'start.nc' file 384 ! n: fields are initialized by 'iniacademic' routine 385 read_start= .true. 386 CALL getin('read_start',read_start) 387 388 !Config Key = iflag_phys 389 !Config Desc = Avec ls physique 390 !Config Def = 1 391 !Config Help = Permet de faire tourner le modele sans 392 !Config physique. 393 iflag_phys = 1 394 CALL getin('iflag_phys',iflag_phys) 395 396 !Config Key = iphysiq 397 !Config Desc = Periode de la physique 398 !Config Def = 5 399 !Config Help = Periode de la physique en pas de temps de la dynamique. 400 iphysiq = 5 401 CALL getin('iphysiq', iphysiq) 402 403 if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm", & 404 "iphysiq must be a multiple of iperiod", 1) 405 406 !Config Key = ip_ebil_dyn 407 !Config Desc = PRINT level for energy conserv. diag. 408 !Config Def = 0 409 !Config Help = PRINT level for energy conservation diag. ; 410 ! les options suivantes existent : 411 !Config 0 pas de print 412 !Config 1 pas de print 413 !Config 2 print, 414 ip_ebil_dyn = 0 415 CALL getin('ip_ebil_dyn',ip_ebil_dyn) 416 417 !cc .... P. Le Van , ajout le 7/03/95 .pour le zoom ... 418 ! ......... ( modif le 17/04/96 ) ......... 419 420 test_etatinit: IF (.not. etatinit) then 421 !Config Key = clon 422 !Config Desc = centre du zoom, longitude 423 !Config Def = 0 424 !Config Help = longitude en degres du centre 425 !Config du zoom 426 clonn = 0. 427 CALL getin('clon',clonn) 428 429 !Config Key = clat 430 !Config Desc = centre du zoom, latitude 431 !Config Def = 0 432 !Config Help = latitude en degres du centre du zoom 433 !Config 434 clatt = 0. 435 CALL getin('clat',clatt) 436 437 IF( ABS(clat - clatt).GE. 0.001 ) THEN 438 write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', & 439 ' est differente de celle lue sur le fichier start ' 453 440 STOP 454 ENDIF 455 456 !Config Key = grossismx 457 !Config Desc = zoom en longitude 458 !Config Def = 1.0 459 !Config Help = facteur de grossissement du zoom, 460 !Config selon la longitude 461 grossismxx = 1.0 462 CALL getin('grossismx',grossismxx) 463 464 465 IF( ABS(grossismx - grossismxx).GE. 0.001 ) THEN 466 write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', 467 & 'run.def est differente de celle lue sur le fichier start ' 441 ENDIF 442 443 !Config Key = grossismx 444 !Config Desc = zoom en longitude 445 !Config Def = 1.0 446 !Config Help = facteur de grossissement du zoom, 447 !Config selon la longitude 448 grossismxx = 1.0 449 CALL getin('grossismx',grossismxx) 450 451 IF( ABS(grossismx - grossismxx).GE. 0.001 ) THEN 452 write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', & 453 'run.def est differente de celle lue sur le fichier start ' 468 454 STOP 469 470 471 !Config Key = grossismy472 !Config Desc = zoom en latitude473 !Config Def = 1.0474 !Config Help = facteur de grossissement du zoom,475 !Config selon la latitude476 477 478 479 480 write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', 481 &'run.def est differente de celle lue sur le fichier start '455 ENDIF 456 457 !Config Key = grossismy 458 !Config Desc = zoom en latitude 459 !Config Def = 1.0 460 !Config Help = facteur de grossissement du zoom, 461 !Config selon la latitude 462 grossismyy = 1.0 463 CALL getin('grossismy',grossismyy) 464 465 IF( ABS(grossismy - grossismyy).GE. 0.001 ) THEN 466 write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', & 467 'run.def est differente de celle lue sur le fichier start ' 482 468 STOP 483 ENDIF 484 485 IF( grossismx.LT.1. ) THEN 486 write(lunout,*) 487 & 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 488 STOP 489 ELSE 490 alphax = 1. - 1./ grossismx 491 ENDIF 492 493 494 IF( grossismy.LT.1. ) THEN 495 write(lunout,*) 496 & 'conf_gcm: *** ATTENTION !! grossismy < 1 . *** ' 497 STOP 498 ELSE 499 alphay = 1. - 1./ grossismy 500 ENDIF 501 502 write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay 503 ! 504 ! alphax et alphay sont les anciennes formulat. des grossissements 505 ! 506 ! 507 508 !Config Key = fxyhypb 509 !Config Desc = Fonction hyperbolique 510 !Config Def = y 511 !Config Help = Fonction f(y) hyperbolique si = .true. 512 !Config sinon sinusoidale 513 fxyhypbb = .TRUE. 514 CALL getin('fxyhypb',fxyhypbb) 515 516 IF( .NOT.fxyhypb ) THEN 517 IF( fxyhypbb ) THEN 518 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 519 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', 520 * 'F alors qu il est T sur run.def ***' 469 ENDIF 470 471 IF( grossismx.LT.1. ) THEN 472 write(lunout,*) & 473 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 474 STOP 475 ELSE 476 alphax = 1. - 1./ grossismx 477 ENDIF 478 479 IF( grossismy.LT.1. ) THEN 480 write(lunout,*) & 481 'conf_gcm: *** ATTENTION !! grossismy < 1 . *** ' 482 STOP 483 ELSE 484 alphay = 1. - 1./ grossismy 485 ENDIF 486 487 write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay 488 489 ! alphax et alphay sont les anciennes formulat. des grossissements 490 491 !Config Key = fxyhypb 492 !Config Desc = Fonction hyperbolique 493 !Config Def = y 494 !Config Help = Fonction f(y) hyperbolique si = .true. 495 !Config sinon sinusoidale 496 fxyhypbb = .TRUE. 497 CALL getin('fxyhypb',fxyhypbb) 498 499 IF( .NOT.fxyhypb ) THEN 500 IF( fxyhypbb ) THEN 501 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 502 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 503 'F alors qu il est T sur run.def ***' 504 STOP 505 ENDIF 506 ELSE 507 IF( .NOT.fxyhypbb ) THEN 508 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 509 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 510 'T alors qu il est F sur run.def **** ' 511 STOP 512 ENDIF 513 ENDIF 514 515 !Config Key = dzoomx 516 !Config Desc = extension en longitude 517 !Config Def = 0 518 !Config Help = extension en longitude de la zone du zoom 519 !Config ( fraction de la zone totale) 520 dzoomxx = 0.0 521 CALL getin('dzoomx',dzoomxx) 522 523 IF( fxyhypb ) THEN 524 IF( ABS(dzoomx - dzoomxx).GE. 0.001 ) THEN 525 write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', & 526 'run.def est differente de celle lue sur le fichier start ' 527 STOP 528 ENDIF 529 ENDIF 530 531 !Config Key = dzoomy 532 !Config Desc = extension en latitude 533 !Config Def = 0 534 !Config Help = extension en latitude de la zone du zoom 535 !Config ( fraction de la zone totale) 536 dzoomyy = 0.0 537 CALL getin('dzoomy',dzoomyy) 538 539 IF( fxyhypb ) THEN 540 IF( ABS(dzoomy - dzoomyy).GE. 0.001 ) THEN 541 write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', & 542 'run.def est differente de celle lue sur le fichier start ' 543 STOP 544 ENDIF 545 ENDIF 546 547 !Config Key = taux 548 !Config Desc = raideur du zoom en X 549 !Config Def = 3 550 !Config Help = raideur du zoom en X 551 tauxx = 3.0 552 CALL getin('taux',tauxx) 553 554 IF( fxyhypb ) THEN 555 IF( ABS(taux - tauxx).GE. 0.001 ) THEN 556 write(lunout,*)'conf_gcm: La valeur de taux passee par ', & 557 'run.def est differente de celle lue sur le fichier start ' 558 STOP 559 ENDIF 560 ENDIF 561 562 !Config Key = tauyy 563 !Config Desc = raideur du zoom en Y 564 !Config Def = 3 565 !Config Help = raideur du zoom en Y 566 tauyy = 3.0 567 CALL getin('tauy',tauyy) 568 569 IF( fxyhypb ) THEN 570 IF( ABS(tauy - tauyy).GE. 0.001 ) THEN 571 write(lunout,*)'conf_gcm: La valeur de tauy passee par ', & 572 'run.def est differente de celle lue sur le fichier start ' 573 STOP 574 ENDIF 575 ENDIF 576 577 !c 578 IF( .NOT.fxyhypb ) THEN 579 580 !Config Key = ysinus 581 !Config IF = !fxyhypb 582 !Config Desc = Fonction en Sinus 583 !Config Def = y 584 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 585 !Config sinon y = latit. 586 ysinuss = .TRUE. 587 CALL getin('ysinus',ysinuss) 588 589 IF( .NOT.ysinus ) THEN 590 IF( ysinuss ) THEN 591 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 592 write(lunout,*)' *** ysinus lu sur le fichier start est F', & 593 ' alors qu il est T sur run.def ***' 521 594 STOP 522 ENDIF523 ELSE524 IF( .NOT.fxyhypbb) THEN525 write(lunout,*)' ******** PBS DANS CONF_GCM ******** '526 write(lunout,*)' *** fxyhypb lu sur le fichier start est ',527 * 'Talors qu il est F sur run.def **** '595 ENDIF 596 ELSE 597 IF( .NOT.ysinuss ) THEN 598 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 599 write(lunout,*)' *** ysinus lu sur le fichier start est T', & 600 ' alors qu il est F sur run.def **** ' 528 601 STOP 529 ENDIF 530 ENDIF 531 ! 532 !Config Key = dzoomx 533 !Config Desc = extension en longitude 534 !Config Def = 0 535 !Config Help = extension en longitude de la zone du zoom 536 !Config ( fraction de la zone totale) 537 dzoomxx = 0.0 538 CALL getin('dzoomx',dzoomxx) 539 540 IF( fxyhypb ) THEN 541 IF( ABS(dzoomx - dzoomxx).GE. 0.001 ) THEN 542 write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', 543 * 'run.def est differente de celle lue sur le fichier start ' 602 ENDIF 603 ENDIF 604 ENDIF ! of IF( .NOT.fxyhypb ) 605 606 !Config Key = offline 607 !Config Desc = Nouvelle eau liquide 608 !Config Def = n 609 !Config Help = Permet de mettre en route la 610 !Config nouvelle parametrisation de l'eau liquide ! 611 offline = .FALSE. 612 CALL getin('offline',offline) 613 IF (offline .AND. adjust) THEN 614 WRITE(lunout,*) & 615 'WARNING : option offline does not work with adjust=y :' 616 WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ', & 617 'and fluxstokev.nc will not be created' 618 WRITE(lunout,*) & 619 'only the file phystoke.nc will still be created ' 620 END IF 621 622 !Config Key = type_trac 623 !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS 624 !Config Def = lmdz 625 !Config Help = 626 !Config 'lmdz' = pas de couplage, pur LMDZ 627 !Config 'inca' = model de chime INCA 628 !Config 'repr' = model de chime REPROBUS 629 type_trac = 'lmdz' 630 CALL getin('type_trac',type_trac) 631 632 !Config Key = config_inca 633 !Config Desc = Choix de configuration de INCA 634 !Config Def = none 635 !Config Help = Choix de configuration de INCA : 636 !Config 'none' = sans INCA 637 !Config 'chem' = INCA avec calcul de chemie 638 !Config 'aero' = INCA avec calcul des aerosols 639 config_inca = 'none' 640 CALL getin('config_inca',config_inca) 641 642 !Config Key = ok_dynzon 643 !Config Desc = calcul et sortie des transports 644 !Config Def = n 645 !Config Help = Permet de mettre en route le calcul des transports 646 !Config 647 ok_dynzon = .FALSE. 648 CALL getin('ok_dynzon',ok_dynzon) 649 650 !Config Key = ok_dyn_ins 651 !Config Desc = sorties instantanees dans la dynamique 652 !Config Def = n 653 !Config Help = 654 !Config 655 ok_dyn_ins = .FALSE. 656 CALL getin('ok_dyn_ins',ok_dyn_ins) 657 658 !Config Key = ok_dyn_ave 659 !Config Desc = sorties moyennes dans la dynamique 660 !Config Def = n 661 !Config Help = 662 !Config 663 ok_dyn_ave = .FALSE. 664 CALL getin('ok_dyn_ave',ok_dyn_ave) 665 666 write(lunout,*)' #########################################' 667 write(lunout,*)' Configuration des parametres du gcm: ' 668 write(lunout,*)' planet_type = ', planet_type 669 write(lunout,*)' calend = ', calend 670 write(lunout,*)' dayref = ', dayref 671 write(lunout,*)' anneeref = ', anneeref 672 write(lunout,*)' nday = ', nday 673 write(lunout,*)' day_step = ', day_step 674 write(lunout,*)' iperiod = ', iperiod 675 write(lunout,*)' nsplit_phys = ', nsplit_phys 676 write(lunout,*)' iconser = ', iconser 677 write(lunout,*)' iecri = ', iecri 678 write(lunout,*)' periodav = ', periodav 679 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 680 write(lunout,*)' dissip_period = ', dissip_period 681 write(lunout,*)' lstardis = ', lstardis 682 write(lunout,*)' nitergdiv = ', nitergdiv 683 write(lunout,*)' nitergrot = ', nitergrot 684 write(lunout,*)' niterh = ', niterh 685 write(lunout,*)' tetagdiv = ', tetagdiv 686 write(lunout,*)' tetagrot = ', tetagrot 687 write(lunout,*)' tetatemp = ', tetatemp 688 write(lunout,*)' coefdis = ', coefdis 689 write(lunout,*)' purmats = ', purmats 690 write(lunout,*)' read_start = ', read_start 691 write(lunout,*)' iflag_phys = ', iflag_phys 692 write(lunout,*)' iphysiq = ', iphysiq 693 write(lunout,*)' clonn = ', clonn 694 write(lunout,*)' clatt = ', clatt 695 write(lunout,*)' grossismx = ', grossismx 696 write(lunout,*)' grossismy = ', grossismy 697 write(lunout,*)' fxyhypbb = ', fxyhypbb 698 write(lunout,*)' dzoomxx = ', dzoomxx 699 write(lunout,*)' dzoomy = ', dzoomyy 700 write(lunout,*)' tauxx = ', tauxx 701 write(lunout,*)' tauyy = ', tauyy 702 write(lunout,*)' offline = ', offline 703 write(lunout,*)' type_trac = ', type_trac 704 write(lunout,*)' config_inca = ', config_inca 705 write(lunout,*)' ok_dynzon = ', ok_dynzon 706 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 707 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 708 else 709 !Config Key = clon 710 !Config Desc = centre du zoom, longitude 711 !Config Def = 0 712 !Config Help = longitude en degres du centre 713 !Config du zoom 714 clon = 0. 715 CALL getin('clon',clon) 716 717 !Config Key = clat 718 !Config Desc = centre du zoom, latitude 719 !Config Def = 0 720 !Config Help = latitude en degres du centre du zoom 721 !Config 722 clat = 0. 723 CALL getin('clat',clat) 724 725 !Config Key = grossismx 726 !Config Desc = zoom en longitude 727 !Config Def = 1.0 728 !Config Help = facteur de grossissement du zoom, 729 !Config selon la longitude 730 grossismx = 1.0 731 CALL getin('grossismx',grossismx) 732 733 !Config Key = grossismy 734 !Config Desc = zoom en latitude 735 !Config Def = 1.0 736 !Config Help = facteur de grossissement du zoom, 737 !Config selon la latitude 738 grossismy = 1.0 739 CALL getin('grossismy',grossismy) 740 741 IF( grossismx.LT.1. ) THEN 742 write(lunout,*) & 743 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 544 744 STOP 545 ENDIF 546 ENDIF 547 548 !Config Key = dzoomy 549 !Config Desc = extension en latitude 550 !Config Def = 0 551 !Config Help = extension en latitude de la zone du zoom 552 !Config ( fraction de la zone totale) 553 dzoomyy = 0.0 554 CALL getin('dzoomy',dzoomyy) 555 556 IF( fxyhypb ) THEN 557 IF( ABS(dzoomy - dzoomyy).GE. 0.001 ) THEN 558 write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', 559 * 'run.def est differente de celle lue sur le fichier start ' 745 ELSE 746 alphax = 1. - 1./ grossismx 747 ENDIF 748 749 IF( grossismy.LT.1. ) THEN 750 write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** ' 560 751 STOP 561 ENDIF 562 ENDIF 563 564 !Config Key = taux 565 !Config Desc = raideur du zoom en X 566 !Config Def = 3 567 !Config Help = raideur du zoom en X 568 tauxx = 3.0 569 CALL getin('taux',tauxx) 570 571 IF( fxyhypb ) THEN 572 IF( ABS(taux - tauxx).GE. 0.001 ) THEN 573 write(lunout,*)'conf_gcm: La valeur de taux passee par ', 574 * 'run.def est differente de celle lue sur le fichier start ' 575 STOP 576 ENDIF 577 ENDIF 578 579 !Config Key = tauyy 580 !Config Desc = raideur du zoom en Y 581 !Config Def = 3 582 !Config Help = raideur du zoom en Y 583 tauyy = 3.0 584 CALL getin('tauy',tauyy) 585 586 IF( fxyhypb ) THEN 587 IF( ABS(tauy - tauyy).GE. 0.001 ) THEN 588 write(lunout,*)'conf_gcm: La valeur de tauy passee par ', 589 * 'run.def est differente de celle lue sur le fichier start ' 590 STOP 591 ENDIF 592 ENDIF 593 594 !c 595 IF( .NOT.fxyhypb ) THEN 596 597 !Config Key = ysinus 598 !Config IF = !fxyhypb 599 !Config Desc = Fonction en Sinus 600 !Config Def = y 601 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 602 !Config sinon y = latit. 603 ysinuss = .TRUE. 604 CALL getin('ysinus',ysinuss) 605 606 IF( .NOT.ysinus ) THEN 607 IF( ysinuss ) THEN 608 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 609 write(lunout,*)' *** ysinus lu sur le fichier start est F', 610 * ' alors qu il est T sur run.def ***' 611 STOP 612 ENDIF 613 ELSE 614 IF( .NOT.ysinuss ) THEN 615 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 616 write(lunout,*)' *** ysinus lu sur le fichier start est T', 617 * ' alors qu il est F sur run.def **** ' 618 STOP 619 ENDIF 620 ENDIF 621 ENDIF ! of IF( .NOT.fxyhypb ) 622 ! 623 !Config Key = offline 624 !Config Desc = Nouvelle eau liquide 625 !Config Def = n 626 !Config Help = Permet de mettre en route la 627 !Config nouvelle parametrisation de l'eau liquide ! 628 offline = .FALSE. 629 CALL getin('offline',offline) 630 IF (offline .AND. adjust) THEN 631 WRITE(lunout,*) 632 & 'WARNING : option offline does not work with adjust=y :' 633 WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ', 634 & 'and fluxstokev.nc will not be created' 635 WRITE(lunout,*) 636 & 'only the file phystoke.nc will still be created ' 637 END IF 638 639 !Config Key = type_trac 640 !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS 641 !Config Def = lmdz 642 !Config Help = 643 !Config 'lmdz' = pas de couplage, pur LMDZ 644 !Config 'inca' = model de chime INCA 645 !Config 'repr' = model de chime REPROBUS 646 type_trac = 'lmdz' 647 CALL getin('type_trac',type_trac) 648 649 !Config Key = config_inca 650 !Config Desc = Choix de configuration de INCA 651 !Config Def = none 652 !Config Help = Choix de configuration de INCA : 653 !Config 'none' = sans INCA 654 !Config 'chem' = INCA avec calcul de chemie 655 !Config 'aero' = INCA avec calcul des aerosols 656 config_inca = 'none' 657 CALL getin('config_inca',config_inca) 658 659 !Config Key = ok_dynzon 660 !Config Desc = calcul et sortie des transports 661 !Config Def = n 662 !Config Help = Permet de mettre en route le calcul des transports 663 !Config 664 ok_dynzon = .FALSE. 665 CALL getin('ok_dynzon',ok_dynzon) 666 667 !Config Key = ok_dyn_ins 668 !Config Desc = sorties instantanees dans la dynamique 669 !Config Def = n 670 !Config Help = 671 !Config 672 ok_dyn_ins = .FALSE. 673 CALL getin('ok_dyn_ins',ok_dyn_ins) 674 675 !Config Key = ok_dyn_ave 676 !Config Desc = sorties moyennes dans la dynamique 677 !Config Def = n 678 !Config Help = 679 !Config 680 ok_dyn_ave = .FALSE. 681 CALL getin('ok_dyn_ave',ok_dyn_ave) 682 683 write(lunout,*)' #########################################' 684 write(lunout,*)' Configuration des parametres du gcm: ' 685 write(lunout,*)' planet_type = ', planet_type 686 write(lunout,*)' calend = ', calend 687 write(lunout,*)' dayref = ', dayref 688 write(lunout,*)' anneeref = ', anneeref 689 write(lunout,*)' nday = ', nday 690 write(lunout,*)' day_step = ', day_step 691 write(lunout,*)' iperiod = ', iperiod 692 write(lunout,*)' nsplit_phys = ', nsplit_phys 693 write(lunout,*)' iconser = ', iconser 694 write(lunout,*)' iecri = ', iecri 695 write(lunout,*)' periodav = ', periodav 696 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 697 write(lunout,*)' dissip_period = ', dissip_period 698 write(lunout,*)' lstardis = ', lstardis 699 write(lunout,*)' nitergdiv = ', nitergdiv 700 write(lunout,*)' nitergrot = ', nitergrot 701 write(lunout,*)' niterh = ', niterh 702 write(lunout,*)' tetagdiv = ', tetagdiv 703 write(lunout,*)' tetagrot = ', tetagrot 704 write(lunout,*)' tetatemp = ', tetatemp 705 write(lunout,*)' coefdis = ', coefdis 706 write(lunout,*)' purmats = ', purmats 707 write(lunout,*)' read_start = ', read_start 708 write(lunout,*)' iflag_phys = ', iflag_phys 709 write(lunout,*)' iphysiq = ', iphysiq 710 write(lunout,*)' clonn = ', clonn 711 write(lunout,*)' clatt = ', clatt 712 write(lunout,*)' grossismx = ', grossismx 713 write(lunout,*)' grossismy = ', grossismy 714 write(lunout,*)' fxyhypbb = ', fxyhypbb 715 write(lunout,*)' dzoomxx = ', dzoomxx 716 write(lunout,*)' dzoomy = ', dzoomyy 717 write(lunout,*)' tauxx = ', tauxx 718 write(lunout,*)' tauyy = ', tauyy 719 write(lunout,*)' offline = ', offline 720 write(lunout,*)' type_trac = ', type_trac 721 write(lunout,*)' config_inca = ', config_inca 722 write(lunout,*)' ok_dynzon = ', ok_dynzon 723 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 724 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 725 726 RETURN 727 ! ............................................... 728 ! 729 100 CONTINUE 730 !Config Key = clon 731 !Config Desc = centre du zoom, longitude 732 !Config Def = 0 733 !Config Help = longitude en degres du centre 734 !Config du zoom 735 clon = 0. 736 CALL getin('clon',clon) 737 738 !Config Key = clat 739 !Config Desc = centre du zoom, latitude 740 !Config Def = 0 741 !Config Help = latitude en degres du centre du zoom 742 !Config 743 clat = 0. 744 CALL getin('clat',clat) 745 746 !Config Key = grossismx 747 !Config Desc = zoom en longitude 748 !Config Def = 1.0 749 !Config Help = facteur de grossissement du zoom, 750 !Config selon la longitude 751 grossismx = 1.0 752 CALL getin('grossismx',grossismx) 753 754 !Config Key = grossismy 755 !Config Desc = zoom en latitude 756 !Config Def = 1.0 757 !Config Help = facteur de grossissement du zoom, 758 !Config selon la latitude 759 grossismy = 1.0 760 CALL getin('grossismy',grossismy) 761 762 IF( grossismx.LT.1. ) THEN 763 write(lunout,*) 764 & 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 765 STOP 766 ELSE 767 alphax = 1. - 1./ grossismx 768 ENDIF 769 770 771 IF( grossismy.LT.1. ) THEN 772 write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** ' 773 STOP 774 ELSE 775 alphay = 1. - 1./ grossismy 776 ENDIF 777 778 write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay 779 ! 780 ! alphax et alphay sont les anciennes formulat. des grossissements 781 ! 782 ! 783 784 !Config Key = fxyhypb 785 !Config Desc = Fonction hyperbolique 786 !Config Def = y 787 !Config Help = Fonction f(y) hyperbolique si = .true. 788 !Config sinon sinusoidale 789 fxyhypb = .TRUE. 790 CALL getin('fxyhypb',fxyhypb) 791 792 !Config Key = dzoomx 793 !Config Desc = extension en longitude 794 !Config Def = 0 795 !Config Help = extension en longitude de la zone du zoom 796 !Config ( fraction de la zone totale) 797 dzoomx = 0.0 798 CALL getin('dzoomx',dzoomx) 799 800 !Config Key = dzoomy 801 !Config Desc = extension en latitude 802 !Config Def = 0 803 !Config Help = extension en latitude de la zone du zoom 804 !Config ( fraction de la zone totale) 805 dzoomy = 0.0 806 CALL getin('dzoomy',dzoomy) 807 808 !Config Key = taux 809 !Config Desc = raideur du zoom en X 810 !Config Def = 3 811 !Config Help = raideur du zoom en X 812 taux = 3.0 813 CALL getin('taux',taux) 814 815 !Config Key = tauy 816 !Config Desc = raideur du zoom en Y 817 !Config Def = 3 818 !Config Help = raideur du zoom en Y 819 tauy = 3.0 820 CALL getin('tauy',tauy) 821 822 !Config Key = ysinus 823 !Config IF = !fxyhypb 824 !Config Desc = Fonction en Sinus 825 !Config Def = y 826 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 827 !Config sinon y = latit. 828 ysinus = .TRUE. 829 CALL getin('ysinus',ysinus) 830 ! 831 !Config Key = offline 832 !Config Desc = Nouvelle eau liquide 833 !Config Def = n 834 !Config Help = Permet de mettre en route la 835 !Config nouvelle parametrisation de l'eau liquide ! 836 offline = .FALSE. 837 CALL getin('offline',offline) 838 IF (offline .AND. adjust) THEN 839 WRITE(lunout,*) 840 & 'WARNING : option offline does not work with adjust=y :' 841 WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ', 842 & 'and fluxstokev.nc will not be created' 843 WRITE(lunout,*) 844 & 'only the file phystoke.nc will still be created ' 845 END IF 846 847 !Config Key = type_trac 848 !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS 849 !Config Def = lmdz 850 !Config Help = 851 !Config 'lmdz' = pas de couplage, pur LMDZ 852 !Config 'inca' = model de chime INCA 853 !Config 'repr' = model de chime REPROBUS 854 type_trac = 'lmdz' 855 CALL getin('type_trac',type_trac) 856 857 !Config Key = config_inca 858 !Config Desc = Choix de configuration de INCA 859 !Config Def = none 860 !Config Help = Choix de configuration de INCA : 861 !Config 'none' = sans INCA 862 !Config 'chem' = INCA avec calcul de chemie 863 !Config 'aero' = INCA avec calcul des aerosols 864 config_inca = 'none' 865 CALL getin('config_inca',config_inca) 866 867 !Config Key = ok_dynzon 868 !Config Desc = sortie des transports zonaux dans la dynamique 869 !Config Def = n 870 !Config Help = Permet de mettre en route le calcul des transports 871 !Config 872 ok_dynzon = .FALSE. 873 CALL getin('ok_dynzon',ok_dynzon) 874 875 !Config Key = ok_dyn_ins 876 !Config Desc = sorties instantanees dans la dynamique 877 !Config Def = n 878 !Config Help = 879 !Config 880 ok_dyn_ins = .FALSE. 881 CALL getin('ok_dyn_ins',ok_dyn_ins) 882 883 !Config Key = ok_dyn_ave 884 !Config Desc = sorties moyennes dans la dynamique 885 !Config Def = n 886 !Config Help = 887 !Config 888 ok_dyn_ave = .FALSE. 889 CALL getin('ok_dyn_ave',ok_dyn_ave) 890 891 !Config Key = use_filtre_fft 892 !Config Desc = flag d'activation des FFT pour le filtre 893 !Config Def = false 894 !Config Help = permet d'activer l'utilisation des FFT pour effectuer 895 !Config le filtrage aux poles. 896 use_filtre_fft=.FALSE. 897 CALL getin('use_filtre_fft',use_filtre_fft) 898 use_filtre_fft_loc=use_filtre_fft 899 900 IF (use_filtre_fft .AND. grossismx /= 1.0) THEN 752 ELSE 753 alphay = 1. - 1./ grossismy 754 ENDIF 755 756 write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay 757 758 ! alphax et alphay sont les anciennes formulat. des grossissements 759 760 !Config Key = fxyhypb 761 !Config Desc = Fonction hyperbolique 762 !Config Def = y 763 !Config Help = Fonction f(y) hyperbolique si = .true. 764 !Config sinon sinusoidale 765 fxyhypb = .TRUE. 766 CALL getin('fxyhypb',fxyhypb) 767 768 !Config Key = dzoomx 769 !Config Desc = extension en longitude 770 !Config Def = 0 771 !Config Help = extension en longitude de la zone du zoom 772 !Config ( fraction de la zone totale) 773 dzoomx = 0.0 774 CALL getin('dzoomx',dzoomx) 775 776 !Config Key = dzoomy 777 !Config Desc = extension en latitude 778 !Config Def = 0 779 !Config Help = extension en latitude de la zone du zoom 780 !Config ( fraction de la zone totale) 781 dzoomy = 0.0 782 CALL getin('dzoomy',dzoomy) 783 784 !Config Key = taux 785 !Config Desc = raideur du zoom en X 786 !Config Def = 3 787 !Config Help = raideur du zoom en X 788 taux = 3.0 789 CALL getin('taux',taux) 790 791 !Config Key = tauy 792 !Config Desc = raideur du zoom en Y 793 !Config Def = 3 794 !Config Help = raideur du zoom en Y 795 tauy = 3.0 796 CALL getin('tauy',tauy) 797 798 !Config Key = ysinus 799 !Config IF = !fxyhypb 800 !Config Desc = Fonction en Sinus 801 !Config Def = y 802 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 803 !Config sinon y = latit. 804 ysinus = .TRUE. 805 CALL getin('ysinus',ysinus) 806 807 !Config Key = offline 808 !Config Desc = Nouvelle eau liquide 809 !Config Def = n 810 !Config Help = Permet de mettre en route la 811 !Config nouvelle parametrisation de l'eau liquide ! 812 offline = .FALSE. 813 CALL getin('offline',offline) 814 IF (offline .AND. adjust) THEN 815 WRITE(lunout,*) & 816 'WARNING : option offline does not work with adjust=y :' 817 WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ', & 818 'and fluxstokev.nc will not be created' 819 WRITE(lunout,*) & 820 'only the file phystoke.nc will still be created ' 821 END IF 822 823 !Config Key = type_trac 824 !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS 825 !Config Def = lmdz 826 !Config Help = 827 !Config 'lmdz' = pas de couplage, pur LMDZ 828 !Config 'inca' = model de chime INCA 829 !Config 'repr' = model de chime REPROBUS 830 type_trac = 'lmdz' 831 CALL getin('type_trac',type_trac) 832 833 !Config Key = config_inca 834 !Config Desc = Choix de configuration de INCA 835 !Config Def = none 836 !Config Help = Choix de configuration de INCA : 837 !Config 'none' = sans INCA 838 !Config 'chem' = INCA avec calcul de chemie 839 !Config 'aero' = INCA avec calcul des aerosols 840 config_inca = 'none' 841 CALL getin('config_inca',config_inca) 842 843 !Config Key = ok_dynzon 844 !Config Desc = sortie des transports zonaux dans la dynamique 845 !Config Def = n 846 !Config Help = Permet de mettre en route le calcul des transports 847 !Config 848 ok_dynzon = .FALSE. 849 CALL getin('ok_dynzon',ok_dynzon) 850 851 !Config Key = ok_dyn_ins 852 !Config Desc = sorties instantanees dans la dynamique 853 !Config Def = n 854 !Config Help = 855 !Config 856 ok_dyn_ins = .FALSE. 857 CALL getin('ok_dyn_ins',ok_dyn_ins) 858 859 !Config Key = ok_dyn_ave 860 !Config Desc = sorties moyennes dans la dynamique 861 !Config Def = n 862 !Config Help = 863 !Config 864 ok_dyn_ave = .FALSE. 865 CALL getin('ok_dyn_ave',ok_dyn_ave) 866 867 !Config Key = use_filtre_fft 868 !Config Desc = flag d'activation des FFT pour le filtre 869 !Config Def = false 870 !Config Help = permet d'activer l'utilisation des FFT pour effectuer 871 !Config le filtrage aux poles. 872 use_filtre_fft=.FALSE. 873 CALL getin('use_filtre_fft',use_filtre_fft) 874 use_filtre_fft_loc=use_filtre_fft 875 876 IF (use_filtre_fft .AND. grossismx /= 1.0) THEN 901 877 write(lunout,*)'WARNING !!! ' 902 write(lunout,*)"Le zoom en longitude est incompatible", 903 & " avec l'utilisation du filtre FFT ", 904 & "---> FFT filter not active" 905 use_filtre_fft=.FALSE. 906 ENDIF 907 908 909 910 !Config Key = use_mpi_alloc 911 !Config Desc = Utilise un buffer MPI en m�moire globale 912 !Config Def = false 913 !Config Help = permet d'activer l'utilisation d'un buffer MPI 914 !Config en m�moire globale a l'aide de la fonction MPI_ALLOC. 915 !Config Cela peut am�liorer la bande passante des transferts MPI 916 !Config d'un facteur 2 917 use_mpi_alloc=.FALSE. 918 CALL getin('use_mpi_alloc',use_mpi_alloc) 919 920 !Config key = ok_strato 921 !Config Desc = activation de la version strato 922 !Config Def = .FALSE. 923 !Config Help = active la version stratosphérique de LMDZ de F. Lott 924 925 ok_strato=.FALSE. 926 CALL getin('ok_strato',ok_strato) 927 928 vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39) 929 CALL getin('vert_prof_dissip', vert_prof_dissip) 930 call assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1, 931 $ "bad value for vert_prof_dissip") 932 933 !Config Key = ok_gradsfile 934 !Config Desc = activation des sorties grads du guidage 935 !Config Def = n 936 !Config Help = active les sorties grads du guidage 937 938 ok_gradsfile = .FALSE. 939 CALL getin('ok_gradsfile',ok_gradsfile) 940 941 !Config Key = ok_limit 942 !Config Desc = creation des fichiers limit dans create_etat0_limit 943 !Config Def = y 944 !Config Help = production du fichier limit.nc requise 945 946 ok_limit = .TRUE. 947 CALL getin('ok_limit',ok_limit) 948 949 !Config Key = ok_etat0 950 !Config Desc = creation des fichiers etat0 dans create_etat0_limit 951 !Config Def = y 952 !Config Help = production des fichiers start.nc, startphy.nc requise 953 954 ok_etat0 = .TRUE. 955 CALL getin('ok_etat0',ok_etat0) 956 957 write(lunout,*)' #########################################' 958 write(lunout,*)' Configuration des parametres de cel0' 959 & //'_limit: ' 960 write(lunout,*)' planet_type = ', planet_type 961 write(lunout,*)' calend = ', calend 962 write(lunout,*)' dayref = ', dayref 963 write(lunout,*)' anneeref = ', anneeref 964 write(lunout,*)' nday = ', nday 965 write(lunout,*)' day_step = ', day_step 966 write(lunout,*)' iperiod = ', iperiod 967 write(lunout,*)' iconser = ', iconser 968 write(lunout,*)' iecri = ', iecri 969 write(lunout,*)' periodav = ', periodav 970 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 971 write(lunout,*)' dissip_period = ', dissip_period 972 write(lunout,*)' lstardis = ', lstardis 973 write(lunout,*)' nitergdiv = ', nitergdiv 974 write(lunout,*)' nitergrot = ', nitergrot 975 write(lunout,*)' niterh = ', niterh 976 write(lunout,*)' tetagdiv = ', tetagdiv 977 write(lunout,*)' tetagrot = ', tetagrot 978 write(lunout,*)' tetatemp = ', tetatemp 979 write(lunout,*)' coefdis = ', coefdis 980 write(lunout,*)' purmats = ', purmats 981 write(lunout,*)' read_start = ', read_start 982 write(lunout,*)' iflag_phys = ', iflag_phys 983 write(lunout,*)' iphysiq = ', iphysiq 984 write(lunout,*)' clon = ', clon 985 write(lunout,*)' clat = ', clat 986 write(lunout,*)' grossismx = ', grossismx 987 write(lunout,*)' grossismy = ', grossismy 988 write(lunout,*)' fxyhypb = ', fxyhypb 989 write(lunout,*)' dzoomx = ', dzoomx 990 write(lunout,*)' dzoomy = ', dzoomy 991 write(lunout,*)' taux = ', taux 992 write(lunout,*)' tauy = ', tauy 993 write(lunout,*)' offline = ', offline 994 write(lunout,*)' type_trac = ', type_trac 995 write(lunout,*)' config_inca = ', config_inca 996 write(lunout,*)' ok_dynzon = ', ok_dynzon 997 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 998 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 999 write(lunout,*)' use_filtre_fft = ', use_filtre_fft 1000 write(lunout,*)' use_mpi_alloc = ', use_mpi_alloc 1001 write(lunout,*)' ok_strato = ', ok_strato 1002 write(lunout,*)' ok_gradsfile = ', ok_gradsfile 1003 write(lunout,*)' ok_limit = ', ok_limit 1004 write(lunout,*)' ok_etat0 = ', ok_etat0 1005 ! 1006 RETURN 1007 END 878 write(lunout,*)"Le zoom en longitude est incompatible", & 879 " avec l'utilisation du filtre FFT ", & 880 "---> FFT filter not active" 881 use_filtre_fft=.FALSE. 882 ENDIF 883 884 !Config Key = use_mpi_alloc 885 !Config Desc = Utilise un buffer MPI en m�moire globale 886 !Config Def = false 887 !Config Help = permet d'activer l'utilisation d'un buffer MPI 888 !Config en m�moire globale a l'aide de la fonction MPI_ALLOC. 889 !Config Cela peut am�liorer la bande passante des transferts MPI 890 !Config d'un facteur 2 891 use_mpi_alloc=.FALSE. 892 CALL getin('use_mpi_alloc',use_mpi_alloc) 893 894 !Config key = ok_strato 895 !Config Desc = activation de la version strato 896 !Config Def = .FALSE. 897 !Config Help = active la version stratosphérique de LMDZ de F. Lott 898 899 ok_strato=.FALSE. 900 CALL getin('ok_strato',ok_strato) 901 902 vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39) 903 CALL getin('vert_prof_dissip', vert_prof_dissip) 904 call assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1, & 905 "bad value for vert_prof_dissip") 906 907 !Config Key = ok_gradsfile 908 !Config Desc = activation des sorties grads du guidage 909 !Config Def = n 910 !Config Help = active les sorties grads du guidage 911 912 ok_gradsfile = .FALSE. 913 CALL getin('ok_gradsfile',ok_gradsfile) 914 915 !Config Key = ok_limit 916 !Config Desc = creation des fichiers limit dans create_etat0_limit 917 !Config Def = y 918 !Config Help = production du fichier limit.nc requise 919 920 ok_limit = .TRUE. 921 CALL getin('ok_limit',ok_limit) 922 923 !Config Key = ok_etat0 924 !Config Desc = creation des fichiers etat0 dans create_etat0_limit 925 !Config Def = y 926 !Config Help = production des fichiers start.nc, startphy.nc requise 927 928 ok_etat0 = .TRUE. 929 CALL getin('ok_etat0',ok_etat0) 930 931 write(lunout,*)' #########################################' 932 write(lunout,*)' Configuration des parametres de cel0' & 933 //'_limit: ' 934 write(lunout,*)' planet_type = ', planet_type 935 write(lunout,*)' calend = ', calend 936 write(lunout,*)' dayref = ', dayref 937 write(lunout,*)' anneeref = ', anneeref 938 write(lunout,*)' nday = ', nday 939 write(lunout,*)' day_step = ', day_step 940 write(lunout,*)' iperiod = ', iperiod 941 write(lunout,*)' iconser = ', iconser 942 write(lunout,*)' iecri = ', iecri 943 write(lunout,*)' periodav = ', periodav 944 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 945 write(lunout,*)' dissip_period = ', dissip_period 946 write(lunout,*)' lstardis = ', lstardis 947 write(lunout,*)' nitergdiv = ', nitergdiv 948 write(lunout,*)' nitergrot = ', nitergrot 949 write(lunout,*)' niterh = ', niterh 950 write(lunout,*)' tetagdiv = ', tetagdiv 951 write(lunout,*)' tetagrot = ', tetagrot 952 write(lunout,*)' tetatemp = ', tetatemp 953 write(lunout,*)' coefdis = ', coefdis 954 write(lunout,*)' purmats = ', purmats 955 write(lunout,*)' read_start = ', read_start 956 write(lunout,*)' iflag_phys = ', iflag_phys 957 write(lunout,*)' iphysiq = ', iphysiq 958 write(lunout,*)' clon = ', clon 959 write(lunout,*)' clat = ', clat 960 write(lunout,*)' grossismx = ', grossismx 961 write(lunout,*)' grossismy = ', grossismy 962 write(lunout,*)' fxyhypb = ', fxyhypb 963 write(lunout,*)' dzoomx = ', dzoomx 964 write(lunout,*)' dzoomy = ', dzoomy 965 write(lunout,*)' taux = ', taux 966 write(lunout,*)' tauy = ', tauy 967 write(lunout,*)' offline = ', offline 968 write(lunout,*)' type_trac = ', type_trac 969 write(lunout,*)' config_inca = ', config_inca 970 write(lunout,*)' ok_dynzon = ', ok_dynzon 971 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 972 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 973 write(lunout,*)' use_filtre_fft = ', use_filtre_fft 974 write(lunout,*)' use_mpi_alloc = ', use_mpi_alloc 975 write(lunout,*)' ok_strato = ', ok_strato 976 write(lunout,*)' ok_gradsfile = ', ok_gradsfile 977 write(lunout,*)' ok_limit = ', ok_limit 978 write(lunout,*)' ok_etat0 = ', ok_etat0 979 end IF test_etatinit 980 981 END SUBROUTINE conf_gcm -
LMDZ5/trunk/libf/dyn3dpar/conf_gcm.F90
r2141 r2142 1 ! 1 2 2 ! $Id$ 3 ! 4 ! 5 ! 6 SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 ) 7 ! 8 USE control_mod 3 4 SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 ) 5 6 USE control_mod 9 7 #ifdef CPP_IOIPSL 10 8 use IOIPSL 11 9 #else 12 ! if not using IOIPSL, we still need to use (a local version of) getin13 10 ! if not using IOIPSL, we still need to use (a local version of) getin 11 use ioipsl_getincom 14 12 #endif 15 use misc_mod 16 use mod_filtre_fft, ONLY : use_filtre_fft 17 use mod_hallo, ONLY : use_mpi_alloc 18 USE infotrac, ONLY : type_trac 19 use assert_m, only: assert 20 21 IMPLICIT NONE 22 !----------------------------------------------------------------------- 23 ! Auteurs : L. Fairhead , P. Le Van . 24 ! 25 ! Arguments : 26 ! 27 ! tapedef : 28 ! etatinit : = TRUE , on ne compare pas les valeurs des para- 29 ! -metres du zoom avec celles lues sur le fichier start . 30 ! clesphy0 : sortie . 31 ! 32 LOGICAL etatinit 33 INTEGER tapedef 34 35 INTEGER longcles 36 PARAMETER( longcles = 20 ) 37 REAL clesphy0( longcles ) 38 ! 39 ! Declarations : 40 ! -------------- 41 #include "dimensions.h" 42 #include "paramet.h" 43 #include "logic.h" 44 #include "serre.h" 45 #include "comdissnew.h" 46 #include "temps.h" 47 #include "comconst.h" 48 49 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique 50 ! #include "clesphys.h" 51 #include "iniprint.h" 52 ! 53 ! 54 ! local: 55 ! ------ 56 57 CHARACTER ch1*72,ch2*72,ch3*72,ch4*12 58 REAL clonn,clatt,grossismxx,grossismyy 59 REAL dzoomxx,dzoomyy, tauxx,tauyy 60 LOGICAL fxyhypbb, ysinuss 61 INTEGER i 62 character(len=*),parameter :: modname="conf_gcm" 63 character (len=80) :: abort_message 13 use misc_mod 14 use mod_filtre_fft, ONLY : use_filtre_fft 15 use mod_hallo, ONLY : use_mpi_alloc 16 USE infotrac, ONLY : type_trac 17 use assert_m, only: assert 18 19 IMPLICIT NONE 20 !----------------------------------------------------------------------- 21 ! Auteurs : L. Fairhead , P. Le Van . 22 23 ! Arguments : 24 25 ! tapedef : 26 ! etatinit : = TRUE , on ne compare pas les valeurs des para- 27 ! -metres du zoom avec celles lues sur le fichier start . 28 ! clesphy0 : sortie . 29 30 LOGICAL etatinit 31 INTEGER tapedef 32 33 INTEGER longcles 34 PARAMETER( longcles = 20 ) 35 REAL clesphy0( longcles ) 36 37 ! Declarations : 38 ! -------------- 39 include "dimensions.h" 40 include "paramet.h" 41 include "logic.h" 42 include "serre.h" 43 include "comdissnew.h" 44 include "temps.h" 45 include "comconst.h" 46 47 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique 48 ! include "clesphys.h" 49 include "iniprint.h" 50 51 ! local: 52 ! ------ 53 54 CHARACTER ch1*72,ch2*72,ch3*72,ch4*12 55 REAL clonn,clatt,grossismxx,grossismyy 56 REAL dzoomxx,dzoomyy, tauxx,tauyy 57 LOGICAL fxyhypbb, ysinuss 58 INTEGER i 59 character(len=*),parameter :: modname="conf_gcm" 60 character (len=80) :: abort_message 64 61 #ifdef CPP_OMP 65 62 integer,external :: OMP_GET_NUM_THREADS 66 63 #endif 67 ! 68 ! -------------------------------------------------------------------69 ! 70 ! ......... Version du 29/04/97 ..........71 ! 72 ! Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot,73 ! tetatemp ajoutes pour la dissipation .74 ! 75 ! Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb **76 ! 77 ! Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb.78 ! Sinon , choix de fxynew , a derivee sinusoidale ..79 ! 80 ! ...... etatinit = . TRUE. si defrun est appele dans ETAT0_LMD ou81 ! LIMIT_LMD pour l'initialisation de start.dat (dic) et82 ! de limit.dat ( dic) ...........83 ! Sinon etatinit = . FALSE .84 ! 85 ! Donc etatinit = .F. si on veut comparer les valeurs de grossismx ,86 ! grossismy,clon,clat, fxyhypb lues sur le fichier start avec87 ! celles passees par run.def , au debut du gcm, apres l'appel a88 ! lectba .89 ! Ces parmetres definissant entre autres la grille et doivent etre90 ! pareils et coherents , sinon il y aura divergence du gcm .91 ! 92 !-----------------------------------------------------------------------93 ! initialisations:94 ! ----------------95 96 !Config Key = lunout97 !Config Desc = unite de fichier pour les impressions98 !Config Def = 699 !Config Help = unite de fichier pour les impressions100 !Config (defaut sortie standard = 6)101 102 103 104 OPEN(UNIT=lunout,FILE='lmdz.out_0000',ACTION='write',105 &STATUS='unknown',FORM='formatted')106 107 108 109 64 65 ! ------------------------------------------------------------------- 66 67 ! ......... Version du 29/04/97 .......... 68 69 ! Nouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot, 70 ! tetatemp ajoutes pour la dissipation . 71 72 ! Autre parametre ajoute en fin de liste de tapedef : ** fxyhypb ** 73 74 ! Si fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb. 75 ! Sinon , choix de fxynew , a derivee sinusoidale .. 76 77 ! ...... etatinit = . TRUE. si defrun est appele dans ETAT0_LMD ou 78 ! LIMIT_LMD pour l'initialisation de start.dat (dic) et 79 ! de limit.dat ( dic) ........... 80 ! Sinon etatinit = . FALSE . 81 82 ! Donc etatinit = .F. si on veut comparer les valeurs de grossismx , 83 ! grossismy,clon,clat, fxyhypb lues sur le fichier start avec 84 ! celles passees par run.def , au debut du gcm, apres l'appel a 85 ! lectba . 86 ! Ces parmetres definissant entre autres la grille et doivent etre 87 ! pareils et coherents , sinon il y aura divergence du gcm . 88 89 !----------------------------------------------------------------------- 90 ! initialisations: 91 ! ---------------- 92 93 !Config Key = lunout 94 !Config Desc = unite de fichier pour les impressions 95 !Config Def = 6 96 !Config Help = unite de fichier pour les impressions 97 !Config (defaut sortie standard = 6) 98 lunout=6 99 CALL getin('lunout', lunout) 100 IF (lunout /= 5 .and. lunout /= 6) THEN 101 OPEN(UNIT=lunout,FILE='lmdz.out_0000',ACTION='write', & 102 STATUS='unknown',FORM='formatted') 103 ENDIF 104 105 adjust=.false. 106 call getin('adjust',adjust) 110 107 111 108 #ifdef CPP_OMP 112 113 !$OMP PARALLEL114 115 write(lunout,*)'conf_gcm: Error, adjust should be set to n'116 &,' when running with OpenMP threads'117 118 119 120 !$OMP END PARALLEL109 ! adjust=y not implemented in case of OpenMP threads... 110 !$OMP PARALLEL 111 if ((OMP_GET_NUM_THREADS()>1).and.adjust) then 112 write(lunout,*)'conf_gcm: Error, adjust should be set to n' & 113 ,' when running with OpenMP threads' 114 abort_message = 'Wrong value for adjust' 115 call abort_gcm(modname,abort_message,1) 116 endif 117 !$OMP END PARALLEL 121 118 #endif 122 119 123 itaumax=0 124 call getin('itaumax',itaumax); 125 if (itaumax<=0) itaumax=HUGE(itaumax) 126 127 !Config Key = prt_level 128 !Config Desc = niveau d'impressions de débogage 129 !Config Def = 0 130 !Config Help = Niveau d'impression pour le débogage 131 !Config (0 = minimum d'impression) 132 prt_level = 0 133 CALL getin('prt_level',prt_level) 134 135 !----------------------------------------------------------------------- 136 ! Parametres de controle du run: 137 !----------------------------------------------------------------------- 138 !Config Key = planet_type 139 !Config Desc = planet type ("earth", "mars", "venus", ...) 140 !Config Def = earth 141 !Config Help = this flag sets the type of atymosphere that is considered 142 planet_type="earth" 143 CALL getin('planet_type',planet_type) 144 145 !Config Key = calend 146 !Config Desc = type de calendrier utilise 147 !Config Def = earth_360d 148 !Config Help = valeur possible: earth_360d, earth_365d, earth_366d 149 !Config 150 calend = 'earth_360d' 151 CALL getin('calend', calend) 152 153 !Config Key = dayref 154 !Config Desc = Jour de l'etat initial 155 !Config Def = 1 156 !Config Help = Jour de l'etat initial ( = 350 si 20 Decembre , 157 !Config par expl. ,comme ici ) ... A completer 158 dayref=1 159 CALL getin('dayref', dayref) 160 161 !Config Key = anneeref 162 !Config Desc = Annee de l'etat initial 163 !Config Def = 1998 164 !Config Help = Annee de l'etat initial 165 !Config ( avec 4 chiffres ) ... A completer 166 anneeref = 1998 167 CALL getin('anneeref',anneeref) 168 169 !Config Key = raz_date 170 !Config Desc = Remise a zero de la date initiale 171 !Config Def = 0 (pas de remise a zero) 172 !Config Help = Remise a zero de la date initiale 173 !Config 0 pas de remise a zero, on garde la date du fichier restart 174 !Config 1 prise en compte de la date de gcm.def avec remise a zero 175 !Config des compteurs de pas de temps 176 raz_date = 0 177 CALL getin('raz_date', raz_date) 178 179 !Config Key = resetvarc 180 !Config Desc = Reinit des variables de controle 181 !Config Def = n 182 !Config Help = Reinit des variables de controle 183 resetvarc = .false. 184 CALL getin('resetvarc',resetvarc) 185 186 !Config Key = nday 187 !Config Desc = Nombre de jours d'integration 188 !Config Def = 10 189 !Config Help = Nombre de jours d'integration 190 !Config ... On pourait aussi permettre des mois ou des annees ! 191 nday = 10 192 CALL getin('nday',nday) 193 194 !Config Key = starttime 195 !Config Desc = Heure de depart de la simulation 196 !Config Def = 0 197 !Config Help = Heure de depart de la simulation 198 !Config en jour 199 starttime = 0 200 CALL getin('starttime',starttime) 201 202 !Config Key = day_step 203 !Config Desc = nombre de pas par jour 204 !Config Def = 240 205 !Config Help = nombre de pas par jour (multiple de iperiod) ( 206 !Config ici pour dt = 1 min ) 207 day_step = 240 208 CALL getin('day_step',day_step) 209 210 !Config Key = nsplit_phys 211 nsplit_phys = 1 212 CALL getin('nsplit_phys',nsplit_phys) 213 214 !Config Key = iperiod 215 !Config Desc = periode pour le pas Matsuno 216 !Config Def = 5 217 !Config Help = periode pour le pas Matsuno (en pas de temps) 218 iperiod = 5 219 CALL getin('iperiod',iperiod) 220 221 !Config Key = iapp_tracvl 222 !Config Desc = frequence du groupement des flux 223 !Config Def = iperiod 224 !Config Help = frequence du groupement des flux (en pas de temps) 225 iapp_tracvl = iperiod 226 CALL getin('iapp_tracvl',iapp_tracvl) 227 228 !Config Key = iconser 229 !Config Desc = periode de sortie des variables de controle 230 !Config Def = 240 231 !Config Help = periode de sortie des variables de controle 232 !Config (En pas de temps) 233 iconser = 240 234 CALL getin('iconser', iconser) 235 236 !Config Key = iecri 237 !Config Desc = periode d'ecriture du fichier histoire 238 !Config Def = 1 239 !Config Help = periode d'ecriture du fichier histoire (en jour) 240 iecri = 1 241 CALL getin('iecri',iecri) 242 243 244 !Config Key = periodav 245 !Config Desc = periode de stockage fichier histmoy 246 !Config Def = 1 247 !Config Help = periode de stockage fichier histmoy (en jour) 248 periodav = 1. 249 CALL getin('periodav',periodav) 250 251 !Config Key = output_grads_dyn 252 !Config Desc = output dynamics diagnostics in 'dyn.dat' file 253 !Config Def = n 254 !Config Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file 255 output_grads_dyn=.false. 256 CALL getin('output_grads_dyn',output_grads_dyn) 257 258 !Config Key = dissip_period 259 !Config Desc = periode de la dissipation 260 !Config Def = 0 261 !Config Help = periode de la dissipation 262 !Config dissip_period=0 => la valeur sera calcule dans inidissip 263 !Config dissip_period>0 => on prend cette valeur 264 dissip_period = 0 265 CALL getin('dissip_period',dissip_period) 266 267 !cc .... P. Le Van , modif le 29/04/97 .pour la dissipation ... 268 !cc 269 270 !Config Key = lstardis 271 !Config Desc = choix de l'operateur de dissipation 272 !Config Def = y 273 !Config Help = choix de l'operateur de dissipation 274 !Config 'y' si on veut star et 'n' si on veut non-start ! 275 !Config Moi y en a pas comprendre ! 276 lstardis = .TRUE. 277 CALL getin('lstardis',lstardis) 278 279 280 !Config Key = nitergdiv 281 !Config Desc = Nombre d'iteration de gradiv 282 !Config Def = 1 283 !Config Help = nombre d'iterations de l'operateur de dissipation 284 !Config gradiv 285 nitergdiv = 1 286 CALL getin('nitergdiv',nitergdiv) 287 288 !Config Key = nitergrot 289 !Config Desc = nombre d'iterations de nxgradrot 290 !Config Def = 2 291 !Config Help = nombre d'iterations de l'operateur de dissipation 292 !Config nxgradrot 293 nitergrot = 2 294 CALL getin('nitergrot',nitergrot) 295 296 297 !Config Key = niterh 298 !Config Desc = nombre d'iterations de divgrad 299 !Config Def = 2 300 !Config Help = nombre d'iterations de l'operateur de dissipation 301 !Config divgrad 302 niterh = 2 303 CALL getin('niterh',niterh) 304 305 306 !Config Key = tetagdiv 307 !Config Desc = temps de dissipation pour div 308 !Config Def = 7200 309 !Config Help = temps de dissipation des plus petites longeur 310 !Config d'ondes pour u,v (gradiv) 311 tetagdiv = 7200. 312 CALL getin('tetagdiv',tetagdiv) 313 314 !Config Key = tetagrot 315 !Config Desc = temps de dissipation pour grad 316 !Config Def = 7200 317 !Config Help = temps de dissipation des plus petites longeur 318 !Config d'ondes pour u,v (nxgradrot) 319 tetagrot = 7200. 320 CALL getin('tetagrot',tetagrot) 321 322 !Config Key = tetatemp 323 !Config Desc = temps de dissipation pour h 324 !Config Def = 7200 325 !Config Help = temps de dissipation des plus petites longeur 326 !Config d'ondes pour h (divgrad) 327 tetatemp = 7200. 328 CALL getin('tetatemp',tetatemp ) 329 330 ! Parametres controlant la variation sur la verticale des constantes de 331 ! dissipation. 332 ! Pour le moment actifs uniquement dans la version a 39 niveaux 333 ! avec ok_strato=y 334 335 dissip_factz=4. 336 dissip_deltaz=10. 337 dissip_zref=30. 338 CALL getin('dissip_factz',dissip_factz ) 339 CALL getin('dissip_deltaz',dissip_deltaz ) 340 CALL getin('dissip_zref',dissip_zref ) 341 342 ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0 343 ! iflag_top_bound=0 for no sponge 344 ! iflag_top_bound=1 for sponge over 4 topmost layers 345 ! iflag_top_bound=2 for sponge from top to ~1% of top layer pressure 346 iflag_top_bound=1 347 CALL getin('iflag_top_bound',iflag_top_bound) 348 349 ! mode_top_bound : fields towards which sponge relaxation will be done: 350 ! mode_top_bound=0: no relaxation 351 ! mode_top_bound=1: u and v relax towards 0 352 ! mode_top_bound=2: u and v relax towards their zonal mean 353 ! mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean 354 mode_top_bound=3 355 CALL getin('mode_top_bound',mode_top_bound) 356 357 ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge 358 tau_top_bound=1.e-5 359 CALL getin('tau_top_bound',tau_top_bound) 360 361 !Config Key = coefdis 362 !Config Desc = coefficient pour gamdissip 363 !Config Def = 0 364 !Config Help = coefficient pour gamdissip 365 coefdis = 0. 366 CALL getin('coefdis',coefdis) 367 368 !Config Key = purmats 369 !Config Desc = Schema d'integration 370 !Config Def = n 371 !Config Help = Choix du schema d'integration temporel. 372 !Config y = pure Matsuno sinon c'est du Matsuno-leapfrog 373 purmats = .FALSE. 374 CALL getin('purmats',purmats) 375 376 !Config Key = ok_guide 377 !Config Desc = Guidage 378 !Config Def = n 379 !Config Help = Guidage 380 ok_guide = .FALSE. 381 CALL getin('ok_guide',ok_guide) 382 383 if (ok_guide .and. adjust) call abort_gcm("conf_gcm", 384 $ "adjust does not work with ok_guide", 1) 385 386 !Config Key = read_start 387 !Config Desc = Initialize model using a 'start.nc' file 388 !Config Def = y 389 !Config Help = y: intialize dynamical fields using a 'start.nc' file 390 ! n: fields are initialized by 'iniacademic' routine 391 read_start= .true. 392 CALL getin('read_start',read_start) 393 394 !Config Key = iflag_phys 395 !Config Desc = Avec ls physique 396 !Config Def = 1 397 !Config Help = Permet de faire tourner le modele sans 398 !Config physique. 399 iflag_phys = 1 400 CALL getin('iflag_phys',iflag_phys) 401 402 403 !Config Key = iphysiq 404 !Config Desc = Periode de la physique 405 !Config Def = 5 406 !Config Help = Periode de la physique en pas de temps de la dynamique. 407 iphysiq = 5 408 CALL getin('iphysiq', iphysiq) 409 410 if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm", 411 $ "iphysiq must be a multiple of iperiod", 1) 412 413 !Config Key = ip_ebil_dyn 414 !Config Desc = PRINT level for energy conserv. diag. 415 !Config Def = 0 416 !Config Help = PRINT level for energy conservation diag. ; 417 ! les options suivantes existent : 418 !Config 0 pas de print 419 !Config 1 pas de print 420 !Config 2 print, 421 ip_ebil_dyn = 0 422 CALL getin('ip_ebil_dyn',ip_ebil_dyn) 423 ! 424 425 426 !cc .... P. Le Van , ajout le 7/03/95 .pour le zoom ... 427 ! ......... ( modif le 17/04/96 ) ......... 428 ! 429 IF( etatinit ) GO TO 100 430 431 !Config Key = clon 432 !Config Desc = centre du zoom, longitude 433 !Config Def = 0 434 !Config Help = longitude en degres du centre 435 !Config du zoom 436 clonn = 0. 437 CALL getin('clon',clonn) 438 439 !Config Key = clat 440 !Config Desc = centre du zoom, latitude 441 !Config Def = 0 442 !Config Help = latitude en degres du centre du zoom 443 !Config 444 clatt = 0. 445 CALL getin('clat',clatt) 446 447 ! 448 ! 449 IF( ABS(clat - clatt).GE. 0.001 ) THEN 450 write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', 451 & ' est differente de celle lue sur le fichier start ' 120 itaumax=0 121 call getin('itaumax',itaumax); 122 if (itaumax<=0) itaumax=HUGE(itaumax) 123 124 !Config Key = prt_level 125 !Config Desc = niveau d'impressions de débogage 126 !Config Def = 0 127 !Config Help = Niveau d'impression pour le débogage 128 !Config (0 = minimum d'impression) 129 prt_level = 0 130 CALL getin('prt_level',prt_level) 131 132 !----------------------------------------------------------------------- 133 ! Parametres de controle du run: 134 !----------------------------------------------------------------------- 135 !Config Key = planet_type 136 !Config Desc = planet type ("earth", "mars", "venus", ...) 137 !Config Def = earth 138 !Config Help = this flag sets the type of atymosphere that is considered 139 planet_type="earth" 140 CALL getin('planet_type',planet_type) 141 142 !Config Key = calend 143 !Config Desc = type de calendrier utilise 144 !Config Def = earth_360d 145 !Config Help = valeur possible: earth_360d, earth_365d, earth_366d 146 !Config 147 calend = 'earth_360d' 148 CALL getin('calend', calend) 149 150 !Config Key = dayref 151 !Config Desc = Jour de l'etat initial 152 !Config Def = 1 153 !Config Help = Jour de l'etat initial ( = 350 si 20 Decembre , 154 !Config par expl. ,comme ici ) ... A completer 155 dayref=1 156 CALL getin('dayref', dayref) 157 158 !Config Key = anneeref 159 !Config Desc = Annee de l'etat initial 160 !Config Def = 1998 161 !Config Help = Annee de l'etat initial 162 !Config ( avec 4 chiffres ) ... A completer 163 anneeref = 1998 164 CALL getin('anneeref',anneeref) 165 166 !Config Key = raz_date 167 !Config Desc = Remise a zero de la date initiale 168 !Config Def = 0 (pas de remise a zero) 169 !Config Help = Remise a zero de la date initiale 170 !Config 0 pas de remise a zero, on garde la date du fichier restart 171 !Config 1 prise en compte de la date de gcm.def avec remise a zero 172 !Config des compteurs de pas de temps 173 raz_date = 0 174 CALL getin('raz_date', raz_date) 175 176 !Config Key = resetvarc 177 !Config Desc = Reinit des variables de controle 178 !Config Def = n 179 !Config Help = Reinit des variables de controle 180 resetvarc = .false. 181 CALL getin('resetvarc',resetvarc) 182 183 !Config Key = nday 184 !Config Desc = Nombre de jours d'integration 185 !Config Def = 10 186 !Config Help = Nombre de jours d'integration 187 !Config ... On pourait aussi permettre des mois ou des annees ! 188 nday = 10 189 CALL getin('nday',nday) 190 191 !Config Key = starttime 192 !Config Desc = Heure de depart de la simulation 193 !Config Def = 0 194 !Config Help = Heure de depart de la simulation 195 !Config en jour 196 starttime = 0 197 CALL getin('starttime',starttime) 198 199 !Config Key = day_step 200 !Config Desc = nombre de pas par jour 201 !Config Def = 240 202 !Config Help = nombre de pas par jour (multiple de iperiod) ( 203 !Config ici pour dt = 1 min ) 204 day_step = 240 205 CALL getin('day_step',day_step) 206 207 !Config Key = nsplit_phys 208 nsplit_phys = 1 209 CALL getin('nsplit_phys',nsplit_phys) 210 211 !Config Key = iperiod 212 !Config Desc = periode pour le pas Matsuno 213 !Config Def = 5 214 !Config Help = periode pour le pas Matsuno (en pas de temps) 215 iperiod = 5 216 CALL getin('iperiod',iperiod) 217 218 !Config Key = iapp_tracvl 219 !Config Desc = frequence du groupement des flux 220 !Config Def = iperiod 221 !Config Help = frequence du groupement des flux (en pas de temps) 222 iapp_tracvl = iperiod 223 CALL getin('iapp_tracvl',iapp_tracvl) 224 225 !Config Key = iconser 226 !Config Desc = periode de sortie des variables de controle 227 !Config Def = 240 228 !Config Help = periode de sortie des variables de controle 229 !Config (En pas de temps) 230 iconser = 240 231 CALL getin('iconser', iconser) 232 233 !Config Key = iecri 234 !Config Desc = periode d'ecriture du fichier histoire 235 !Config Def = 1 236 !Config Help = periode d'ecriture du fichier histoire (en jour) 237 iecri = 1 238 CALL getin('iecri',iecri) 239 240 !Config Key = periodav 241 !Config Desc = periode de stockage fichier histmoy 242 !Config Def = 1 243 !Config Help = periode de stockage fichier histmoy (en jour) 244 periodav = 1. 245 CALL getin('periodav',periodav) 246 247 !Config Key = output_grads_dyn 248 !Config Desc = output dynamics diagnostics in 'dyn.dat' file 249 !Config Def = n 250 !Config Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file 251 output_grads_dyn=.false. 252 CALL getin('output_grads_dyn',output_grads_dyn) 253 254 !Config Key = dissip_period 255 !Config Desc = periode de la dissipation 256 !Config Def = 0 257 !Config Help = periode de la dissipation 258 !Config dissip_period=0 => la valeur sera calcule dans inidissip 259 !Config dissip_period>0 => on prend cette valeur 260 dissip_period = 0 261 CALL getin('dissip_period',dissip_period) 262 263 !cc .... P. Le Van , modif le 29/04/97 .pour la dissipation ... 264 !cc 265 266 !Config Key = lstardis 267 !Config Desc = choix de l'operateur de dissipation 268 !Config Def = y 269 !Config Help = choix de l'operateur de dissipation 270 !Config 'y' si on veut star et 'n' si on veut non-start ! 271 !Config Moi y en a pas comprendre ! 272 lstardis = .TRUE. 273 CALL getin('lstardis',lstardis) 274 275 !Config Key = nitergdiv 276 !Config Desc = Nombre d'iteration de gradiv 277 !Config Def = 1 278 !Config Help = nombre d'iterations de l'operateur de dissipation 279 !Config gradiv 280 nitergdiv = 1 281 CALL getin('nitergdiv',nitergdiv) 282 283 !Config Key = nitergrot 284 !Config Desc = nombre d'iterations de nxgradrot 285 !Config Def = 2 286 !Config Help = nombre d'iterations de l'operateur de dissipation 287 !Config nxgradrot 288 nitergrot = 2 289 CALL getin('nitergrot',nitergrot) 290 291 !Config Key = niterh 292 !Config Desc = nombre d'iterations de divgrad 293 !Config Def = 2 294 !Config Help = nombre d'iterations de l'operateur de dissipation 295 !Config divgrad 296 niterh = 2 297 CALL getin('niterh',niterh) 298 299 !Config Key = tetagdiv 300 !Config Desc = temps de dissipation pour div 301 !Config Def = 7200 302 !Config Help = temps de dissipation des plus petites longeur 303 !Config d'ondes pour u,v (gradiv) 304 tetagdiv = 7200. 305 CALL getin('tetagdiv',tetagdiv) 306 307 !Config Key = tetagrot 308 !Config Desc = temps de dissipation pour grad 309 !Config Def = 7200 310 !Config Help = temps de dissipation des plus petites longeur 311 !Config d'ondes pour u,v (nxgradrot) 312 tetagrot = 7200. 313 CALL getin('tetagrot',tetagrot) 314 315 !Config Key = tetatemp 316 !Config Desc = temps de dissipation pour h 317 !Config Def = 7200 318 !Config Help = temps de dissipation des plus petites longeur 319 !Config d'ondes pour h (divgrad) 320 tetatemp = 7200. 321 CALL getin('tetatemp',tetatemp ) 322 323 ! Parametres controlant la variation sur la verticale des constantes de 324 ! dissipation. 325 ! Pour le moment actifs uniquement dans la version a 39 niveaux 326 ! avec ok_strato=y 327 328 dissip_factz=4. 329 dissip_deltaz=10. 330 dissip_zref=30. 331 CALL getin('dissip_factz',dissip_factz ) 332 CALL getin('dissip_deltaz',dissip_deltaz ) 333 CALL getin('dissip_zref',dissip_zref ) 334 335 ! top_bound sponge: only active if ok_strato=.true. and iflag_top_bound!=0 336 ! iflag_top_bound=0 for no sponge 337 ! iflag_top_bound=1 for sponge over 4 topmost layers 338 ! iflag_top_bound=2 for sponge from top to ~1% of top layer pressure 339 iflag_top_bound=1 340 CALL getin('iflag_top_bound',iflag_top_bound) 341 342 ! mode_top_bound : fields towards which sponge relaxation will be done: 343 ! mode_top_bound=0: no relaxation 344 ! mode_top_bound=1: u and v relax towards 0 345 ! mode_top_bound=2: u and v relax towards their zonal mean 346 ! mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean 347 mode_top_bound=3 348 CALL getin('mode_top_bound',mode_top_bound) 349 350 ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge 351 tau_top_bound=1.e-5 352 CALL getin('tau_top_bound',tau_top_bound) 353 354 !Config Key = coefdis 355 !Config Desc = coefficient pour gamdissip 356 !Config Def = 0 357 !Config Help = coefficient pour gamdissip 358 coefdis = 0. 359 CALL getin('coefdis',coefdis) 360 361 !Config Key = purmats 362 !Config Desc = Schema d'integration 363 !Config Def = n 364 !Config Help = Choix du schema d'integration temporel. 365 !Config y = pure Matsuno sinon c'est du Matsuno-leapfrog 366 purmats = .FALSE. 367 CALL getin('purmats',purmats) 368 369 !Config Key = ok_guide 370 !Config Desc = Guidage 371 !Config Def = n 372 !Config Help = Guidage 373 ok_guide = .FALSE. 374 CALL getin('ok_guide',ok_guide) 375 376 if (ok_guide .and. adjust) call abort_gcm("conf_gcm", & 377 "adjust does not work with ok_guide", 1) 378 379 !Config Key = read_start 380 !Config Desc = Initialize model using a 'start.nc' file 381 !Config Def = y 382 !Config Help = y: intialize dynamical fields using a 'start.nc' file 383 ! n: fields are initialized by 'iniacademic' routine 384 read_start= .true. 385 CALL getin('read_start',read_start) 386 387 !Config Key = iflag_phys 388 !Config Desc = Avec ls physique 389 !Config Def = 1 390 !Config Help = Permet de faire tourner le modele sans 391 !Config physique. 392 iflag_phys = 1 393 CALL getin('iflag_phys',iflag_phys) 394 395 !Config Key = iphysiq 396 !Config Desc = Periode de la physique 397 !Config Def = 5 398 !Config Help = Periode de la physique en pas de temps de la dynamique. 399 iphysiq = 5 400 CALL getin('iphysiq', iphysiq) 401 402 if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm", & 403 "iphysiq must be a multiple of iperiod", 1) 404 405 !Config Key = ip_ebil_dyn 406 !Config Desc = PRINT level for energy conserv. diag. 407 !Config Def = 0 408 !Config Help = PRINT level for energy conservation diag. ; 409 ! les options suivantes existent : 410 !Config 0 pas de print 411 !Config 1 pas de print 412 !Config 2 print, 413 ip_ebil_dyn = 0 414 CALL getin('ip_ebil_dyn',ip_ebil_dyn) 415 416 !cc .... P. Le Van , ajout le 7/03/95 .pour le zoom ... 417 ! ......... ( modif le 17/04/96 ) ......... 418 419 test_etatinit: IF (.not. etatinit) then 420 !Config Key = clon 421 !Config Desc = centre du zoom, longitude 422 !Config Def = 0 423 !Config Help = longitude en degres du centre 424 !Config du zoom 425 clonn = 0. 426 CALL getin('clon',clonn) 427 428 !Config Key = clat 429 !Config Desc = centre du zoom, latitude 430 !Config Def = 0 431 !Config Help = latitude en degres du centre du zoom 432 !Config 433 clatt = 0. 434 CALL getin('clat',clatt) 435 436 IF( ABS(clat - clatt).GE. 0.001 ) THEN 437 write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', & 438 ' est differente de celle lue sur le fichier start ' 452 439 STOP 453 ENDIF 454 455 !Config Key = grossismx 456 !Config Desc = zoom en longitude 457 !Config Def = 1.0 458 !Config Help = facteur de grossissement du zoom, 459 !Config selon la longitude 460 grossismxx = 1.0 461 CALL getin('grossismx',grossismxx) 462 463 464 IF( ABS(grossismx - grossismxx).GE. 0.001 ) THEN 465 write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', 466 & 'run.def est differente de celle lue sur le fichier start ' 440 ENDIF 441 442 !Config Key = grossismx 443 !Config Desc = zoom en longitude 444 !Config Def = 1.0 445 !Config Help = facteur de grossissement du zoom, 446 !Config selon la longitude 447 grossismxx = 1.0 448 CALL getin('grossismx',grossismxx) 449 450 IF( ABS(grossismx - grossismxx).GE. 0.001 ) THEN 451 write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', & 452 'run.def est differente de celle lue sur le fichier start ' 467 453 STOP 468 469 470 !Config Key = grossismy471 !Config Desc = zoom en latitude472 !Config Def = 1.0473 !Config Help = facteur de grossissement du zoom,474 !Config selon la latitude475 476 477 478 479 write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', 480 &'run.def est differente de celle lue sur le fichier start '454 ENDIF 455 456 !Config Key = grossismy 457 !Config Desc = zoom en latitude 458 !Config Def = 1.0 459 !Config Help = facteur de grossissement du zoom, 460 !Config selon la latitude 461 grossismyy = 1.0 462 CALL getin('grossismy',grossismyy) 463 464 IF( ABS(grossismy - grossismyy).GE. 0.001 ) THEN 465 write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', & 466 'run.def est differente de celle lue sur le fichier start ' 481 467 STOP 482 ENDIF 483 484 IF( grossismx.LT.1. ) THEN 485 write(lunout,*) 486 & 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 487 STOP 488 ELSE 489 alphax = 1. - 1./ grossismx 490 ENDIF 491 492 493 IF( grossismy.LT.1. ) THEN 494 write(lunout,*) 495 & 'conf_gcm: *** ATTENTION !! grossismy < 1 . *** ' 496 STOP 497 ELSE 498 alphay = 1. - 1./ grossismy 499 ENDIF 500 501 write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay 502 ! 503 ! alphax et alphay sont les anciennes formulat. des grossissements 504 ! 505 ! 506 507 !Config Key = fxyhypb 508 !Config Desc = Fonction hyperbolique 509 !Config Def = y 510 !Config Help = Fonction f(y) hyperbolique si = .true. 511 !Config sinon sinusoidale 512 fxyhypbb = .TRUE. 513 CALL getin('fxyhypb',fxyhypbb) 514 515 IF( .NOT.fxyhypb ) THEN 516 IF( fxyhypbb ) THEN 517 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 518 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', 519 * 'F alors qu il est T sur run.def ***' 468 ENDIF 469 470 IF( grossismx.LT.1. ) THEN 471 write(lunout,*) & 472 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 473 STOP 474 ELSE 475 alphax = 1. - 1./ grossismx 476 ENDIF 477 478 IF( grossismy.LT.1. ) THEN 479 write(lunout,*) & 480 'conf_gcm: *** ATTENTION !! grossismy < 1 . *** ' 481 STOP 482 ELSE 483 alphay = 1. - 1./ grossismy 484 ENDIF 485 486 write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay 487 488 ! alphax et alphay sont les anciennes formulat. des grossissements 489 490 !Config Key = fxyhypb 491 !Config Desc = Fonction hyperbolique 492 !Config Def = y 493 !Config Help = Fonction f(y) hyperbolique si = .true. 494 !Config sinon sinusoidale 495 fxyhypbb = .TRUE. 496 CALL getin('fxyhypb',fxyhypbb) 497 498 IF( .NOT.fxyhypb ) THEN 499 IF( fxyhypbb ) THEN 500 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 501 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 502 'F alors qu il est T sur run.def ***' 503 STOP 504 ENDIF 505 ELSE 506 IF( .NOT.fxyhypbb ) THEN 507 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 508 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 509 'T alors qu il est F sur run.def **** ' 510 STOP 511 ENDIF 512 ENDIF 513 514 !Config Key = dzoomx 515 !Config Desc = extension en longitude 516 !Config Def = 0 517 !Config Help = extension en longitude de la zone du zoom 518 !Config ( fraction de la zone totale) 519 dzoomxx = 0.0 520 CALL getin('dzoomx',dzoomxx) 521 522 IF( fxyhypb ) THEN 523 IF( ABS(dzoomx - dzoomxx).GE. 0.001 ) THEN 524 write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', & 525 'run.def est differente de celle lue sur le fichier start ' 526 STOP 527 ENDIF 528 ENDIF 529 530 !Config Key = dzoomy 531 !Config Desc = extension en latitude 532 !Config Def = 0 533 !Config Help = extension en latitude de la zone du zoom 534 !Config ( fraction de la zone totale) 535 dzoomyy = 0.0 536 CALL getin('dzoomy',dzoomyy) 537 538 IF( fxyhypb ) THEN 539 IF( ABS(dzoomy - dzoomyy).GE. 0.001 ) THEN 540 write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', & 541 'run.def est differente de celle lue sur le fichier start ' 542 STOP 543 ENDIF 544 ENDIF 545 546 !Config Key = taux 547 !Config Desc = raideur du zoom en X 548 !Config Def = 3 549 !Config Help = raideur du zoom en X 550 tauxx = 3.0 551 CALL getin('taux',tauxx) 552 553 IF( fxyhypb ) THEN 554 IF( ABS(taux - tauxx).GE. 0.001 ) THEN 555 write(lunout,*)'conf_gcm: La valeur de taux passee par ', & 556 'run.def est differente de celle lue sur le fichier start ' 557 STOP 558 ENDIF 559 ENDIF 560 561 !Config Key = tauyy 562 !Config Desc = raideur du zoom en Y 563 !Config Def = 3 564 !Config Help = raideur du zoom en Y 565 tauyy = 3.0 566 CALL getin('tauy',tauyy) 567 568 IF( fxyhypb ) THEN 569 IF( ABS(tauy - tauyy).GE. 0.001 ) THEN 570 write(lunout,*)'conf_gcm: La valeur de tauy passee par ', & 571 'run.def est differente de celle lue sur le fichier start ' 572 STOP 573 ENDIF 574 ENDIF 575 576 !c 577 IF( .NOT.fxyhypb ) THEN 578 579 !Config Key = ysinus 580 !Config IF = !fxyhypb 581 !Config Desc = Fonction en Sinus 582 !Config Def = y 583 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 584 !Config sinon y = latit. 585 ysinuss = .TRUE. 586 CALL getin('ysinus',ysinuss) 587 588 IF( .NOT.ysinus ) THEN 589 IF( ysinuss ) THEN 590 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 591 write(lunout,*)' *** ysinus lu sur le fichier start est F', & 592 ' alors qu il est T sur run.def ***' 520 593 STOP 521 ENDIF522 ELSE523 IF( .NOT.fxyhypbb) THEN524 write(lunout,*)' ******** PBS DANS CONF_GCM ******** '525 write(lunout,*)' *** fxyhypb lu sur le fichier start est ',526 * 'Talors qu il est F sur run.def **** '594 ENDIF 595 ELSE 596 IF( .NOT.ysinuss ) THEN 597 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 598 write(lunout,*)' *** ysinus lu sur le fichier start est T', & 599 ' alors qu il est F sur run.def **** ' 527 600 STOP 528 ENDIF 529 ENDIF 530 ! 531 !Config Key = dzoomx 532 !Config Desc = extension en longitude 533 !Config Def = 0 534 !Config Help = extension en longitude de la zone du zoom 535 !Config ( fraction de la zone totale) 536 dzoomxx = 0.0 537 CALL getin('dzoomx',dzoomxx) 538 539 IF( fxyhypb ) THEN 540 IF( ABS(dzoomx - dzoomxx).GE. 0.001 ) THEN 541 write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', 542 * 'run.def est differente de celle lue sur le fichier start ' 601 ENDIF 602 ENDIF 603 ENDIF ! of IF( .NOT.fxyhypb ) 604 605 !Config Key = offline 606 !Config Desc = Nouvelle eau liquide 607 !Config Def = n 608 !Config Help = Permet de mettre en route la 609 !Config nouvelle parametrisation de l'eau liquide ! 610 offline = .FALSE. 611 CALL getin('offline',offline) 612 IF (offline .AND. adjust) THEN 613 WRITE(lunout,*) & 614 'WARNING : option offline does not work with adjust=y :' 615 WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ', & 616 'and fluxstokev.nc will not be created' 617 WRITE(lunout,*) & 618 'only the file phystoke.nc will still be created ' 619 END IF 620 621 !Config Key = type_trac 622 !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS 623 !Config Def = lmdz 624 !Config Help = 625 !Config 'lmdz' = pas de couplage, pur LMDZ 626 !Config 'inca' = model de chime INCA 627 !Config 'repr' = model de chime REPROBUS 628 type_trac = 'lmdz' 629 CALL getin('type_trac',type_trac) 630 631 !Config Key = config_inca 632 !Config Desc = Choix de configuration de INCA 633 !Config Def = none 634 !Config Help = Choix de configuration de INCA : 635 !Config 'none' = sans INCA 636 !Config 'chem' = INCA avec calcul de chemie 637 !Config 'aero' = INCA avec calcul des aerosols 638 config_inca = 'none' 639 CALL getin('config_inca',config_inca) 640 641 !Config Key = ok_dynzon 642 !Config Desc = calcul et sortie des transports 643 !Config Def = n 644 !Config Help = Permet de mettre en route le calcul des transports 645 !Config 646 ok_dynzon = .FALSE. 647 CALL getin('ok_dynzon',ok_dynzon) 648 649 !Config Key = ok_dyn_ins 650 !Config Desc = sorties instantanees dans la dynamique 651 !Config Def = n 652 !Config Help = 653 !Config 654 ok_dyn_ins = .FALSE. 655 CALL getin('ok_dyn_ins',ok_dyn_ins) 656 657 !Config Key = ok_dyn_ave 658 !Config Desc = sorties moyennes dans la dynamique 659 !Config Def = n 660 !Config Help = 661 !Config 662 ok_dyn_ave = .FALSE. 663 CALL getin('ok_dyn_ave',ok_dyn_ave) 664 665 write(lunout,*)' #########################################' 666 write(lunout,*)' Configuration des parametres du gcm: ' 667 write(lunout,*)' planet_type = ', planet_type 668 write(lunout,*)' calend = ', calend 669 write(lunout,*)' dayref = ', dayref 670 write(lunout,*)' anneeref = ', anneeref 671 write(lunout,*)' nday = ', nday 672 write(lunout,*)' day_step = ', day_step 673 write(lunout,*)' iperiod = ', iperiod 674 write(lunout,*)' nsplit_phys = ', nsplit_phys 675 write(lunout,*)' iconser = ', iconser 676 write(lunout,*)' iecri = ', iecri 677 write(lunout,*)' periodav = ', periodav 678 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 679 write(lunout,*)' dissip_period = ', dissip_period 680 write(lunout,*)' lstardis = ', lstardis 681 write(lunout,*)' nitergdiv = ', nitergdiv 682 write(lunout,*)' nitergrot = ', nitergrot 683 write(lunout,*)' niterh = ', niterh 684 write(lunout,*)' tetagdiv = ', tetagdiv 685 write(lunout,*)' tetagrot = ', tetagrot 686 write(lunout,*)' tetatemp = ', tetatemp 687 write(lunout,*)' coefdis = ', coefdis 688 write(lunout,*)' purmats = ', purmats 689 write(lunout,*)' read_start = ', read_start 690 write(lunout,*)' iflag_phys = ', iflag_phys 691 write(lunout,*)' iphysiq = ', iphysiq 692 write(lunout,*)' clonn = ', clonn 693 write(lunout,*)' clatt = ', clatt 694 write(lunout,*)' grossismx = ', grossismx 695 write(lunout,*)' grossismy = ', grossismy 696 write(lunout,*)' fxyhypbb = ', fxyhypbb 697 write(lunout,*)' dzoomxx = ', dzoomxx 698 write(lunout,*)' dzoomy = ', dzoomyy 699 write(lunout,*)' tauxx = ', tauxx 700 write(lunout,*)' tauyy = ', tauyy 701 write(lunout,*)' offline = ', offline 702 write(lunout,*)' type_trac = ', type_trac 703 write(lunout,*)' config_inca = ', config_inca 704 write(lunout,*)' ok_dynzon = ', ok_dynzon 705 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 706 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 707 else 708 !Config Key = clon 709 !Config Desc = centre du zoom, longitude 710 !Config Def = 0 711 !Config Help = longitude en degres du centre 712 !Config du zoom 713 clon = 0. 714 CALL getin('clon',clon) 715 716 !Config Key = clat 717 !Config Desc = centre du zoom, latitude 718 !Config Def = 0 719 !Config Help = latitude en degres du centre du zoom 720 !Config 721 clat = 0. 722 CALL getin('clat',clat) 723 724 !Config Key = grossismx 725 !Config Desc = zoom en longitude 726 !Config Def = 1.0 727 !Config Help = facteur de grossissement du zoom, 728 !Config selon la longitude 729 grossismx = 1.0 730 CALL getin('grossismx',grossismx) 731 732 !Config Key = grossismy 733 !Config Desc = zoom en latitude 734 !Config Def = 1.0 735 !Config Help = facteur de grossissement du zoom, 736 !Config selon la latitude 737 grossismy = 1.0 738 CALL getin('grossismy',grossismy) 739 740 IF( grossismx.LT.1. ) THEN 741 write(lunout,*) & 742 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 543 743 STOP 544 ENDIF 545 ENDIF 546 547 !Config Key = dzoomy 548 !Config Desc = extension en latitude 549 !Config Def = 0 550 !Config Help = extension en latitude de la zone du zoom 551 !Config ( fraction de la zone totale) 552 dzoomyy = 0.0 553 CALL getin('dzoomy',dzoomyy) 554 555 IF( fxyhypb ) THEN 556 IF( ABS(dzoomy - dzoomyy).GE. 0.001 ) THEN 557 write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', 558 * 'run.def est differente de celle lue sur le fichier start ' 744 ELSE 745 alphax = 1. - 1./ grossismx 746 ENDIF 747 748 IF( grossismy.LT.1. ) THEN 749 write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** ' 559 750 STOP 560 ENDIF 561 ENDIF 562 563 !Config Key = taux 564 !Config Desc = raideur du zoom en X 565 !Config Def = 3 566 !Config Help = raideur du zoom en X 567 tauxx = 3.0 568 CALL getin('taux',tauxx) 569 570 IF( fxyhypb ) THEN 571 IF( ABS(taux - tauxx).GE. 0.001 ) THEN 572 write(lunout,*)'conf_gcm: La valeur de taux passee par ', 573 * 'run.def est differente de celle lue sur le fichier start ' 574 STOP 575 ENDIF 576 ENDIF 577 578 !Config Key = tauyy 579 !Config Desc = raideur du zoom en Y 580 !Config Def = 3 581 !Config Help = raideur du zoom en Y 582 tauyy = 3.0 583 CALL getin('tauy',tauyy) 584 585 IF( fxyhypb ) THEN 586 IF( ABS(tauy - tauyy).GE. 0.001 ) THEN 587 write(lunout,*)'conf_gcm: La valeur de tauy passee par ', 588 * 'run.def est differente de celle lue sur le fichier start ' 589 STOP 590 ENDIF 591 ENDIF 592 593 !c 594 IF( .NOT.fxyhypb ) THEN 595 596 !Config Key = ysinus 597 !Config IF = !fxyhypb 598 !Config Desc = Fonction en Sinus 599 !Config Def = y 600 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 601 !Config sinon y = latit. 602 ysinuss = .TRUE. 603 CALL getin('ysinus',ysinuss) 604 605 IF( .NOT.ysinus ) THEN 606 IF( ysinuss ) THEN 607 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 608 write(lunout,*)' *** ysinus lu sur le fichier start est F', 609 * ' alors qu il est T sur run.def ***' 610 STOP 611 ENDIF 612 ELSE 613 IF( .NOT.ysinuss ) THEN 614 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 615 write(lunout,*)' *** ysinus lu sur le fichier start est T', 616 * ' alors qu il est F sur run.def **** ' 617 STOP 618 ENDIF 619 ENDIF 620 ENDIF ! of IF( .NOT.fxyhypb ) 621 ! 622 !Config Key = offline 623 !Config Desc = Nouvelle eau liquide 624 !Config Def = n 625 !Config Help = Permet de mettre en route la 626 !Config nouvelle parametrisation de l'eau liquide ! 627 offline = .FALSE. 628 CALL getin('offline',offline) 629 IF (offline .AND. adjust) THEN 630 WRITE(lunout,*) 631 & 'WARNING : option offline does not work with adjust=y :' 632 WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ', 633 & 'and fluxstokev.nc will not be created' 634 WRITE(lunout,*) 635 & 'only the file phystoke.nc will still be created ' 636 END IF 637 638 !Config Key = type_trac 639 !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS 640 !Config Def = lmdz 641 !Config Help = 642 !Config 'lmdz' = pas de couplage, pur LMDZ 643 !Config 'inca' = model de chime INCA 644 !Config 'repr' = model de chime REPROBUS 645 type_trac = 'lmdz' 646 CALL getin('type_trac',type_trac) 647 648 !Config Key = config_inca 649 !Config Desc = Choix de configuration de INCA 650 !Config Def = none 651 !Config Help = Choix de configuration de INCA : 652 !Config 'none' = sans INCA 653 !Config 'chem' = INCA avec calcul de chemie 654 !Config 'aero' = INCA avec calcul des aerosols 655 config_inca = 'none' 656 CALL getin('config_inca',config_inca) 657 658 !Config Key = ok_dynzon 659 !Config Desc = calcul et sortie des transports 660 !Config Def = n 661 !Config Help = Permet de mettre en route le calcul des transports 662 !Config 663 ok_dynzon = .FALSE. 664 CALL getin('ok_dynzon',ok_dynzon) 665 666 !Config Key = ok_dyn_ins 667 !Config Desc = sorties instantanees dans la dynamique 668 !Config Def = n 669 !Config Help = 670 !Config 671 ok_dyn_ins = .FALSE. 672 CALL getin('ok_dyn_ins',ok_dyn_ins) 673 674 !Config Key = ok_dyn_ave 675 !Config Desc = sorties moyennes dans la dynamique 676 !Config Def = n 677 !Config Help = 678 !Config 679 ok_dyn_ave = .FALSE. 680 CALL getin('ok_dyn_ave',ok_dyn_ave) 681 682 write(lunout,*)' #########################################' 683 write(lunout,*)' Configuration des parametres du gcm: ' 684 write(lunout,*)' planet_type = ', planet_type 685 write(lunout,*)' calend = ', calend 686 write(lunout,*)' dayref = ', dayref 687 write(lunout,*)' anneeref = ', anneeref 688 write(lunout,*)' nday = ', nday 689 write(lunout,*)' day_step = ', day_step 690 write(lunout,*)' iperiod = ', iperiod 691 write(lunout,*)' nsplit_phys = ', nsplit_phys 692 write(lunout,*)' iconser = ', iconser 693 write(lunout,*)' iecri = ', iecri 694 write(lunout,*)' periodav = ', periodav 695 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 696 write(lunout,*)' dissip_period = ', dissip_period 697 write(lunout,*)' lstardis = ', lstardis 698 write(lunout,*)' nitergdiv = ', nitergdiv 699 write(lunout,*)' nitergrot = ', nitergrot 700 write(lunout,*)' niterh = ', niterh 701 write(lunout,*)' tetagdiv = ', tetagdiv 702 write(lunout,*)' tetagrot = ', tetagrot 703 write(lunout,*)' tetatemp = ', tetatemp 704 write(lunout,*)' coefdis = ', coefdis 705 write(lunout,*)' purmats = ', purmats 706 write(lunout,*)' read_start = ', read_start 707 write(lunout,*)' iflag_phys = ', iflag_phys 708 write(lunout,*)' iphysiq = ', iphysiq 709 write(lunout,*)' clonn = ', clonn 710 write(lunout,*)' clatt = ', clatt 711 write(lunout,*)' grossismx = ', grossismx 712 write(lunout,*)' grossismy = ', grossismy 713 write(lunout,*)' fxyhypbb = ', fxyhypbb 714 write(lunout,*)' dzoomxx = ', dzoomxx 715 write(lunout,*)' dzoomy = ', dzoomyy 716 write(lunout,*)' tauxx = ', tauxx 717 write(lunout,*)' tauyy = ', tauyy 718 write(lunout,*)' offline = ', offline 719 write(lunout,*)' type_trac = ', type_trac 720 write(lunout,*)' config_inca = ', config_inca 721 write(lunout,*)' ok_dynzon = ', ok_dynzon 722 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 723 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 724 725 RETURN 726 ! ............................................... 727 ! 728 100 CONTINUE 729 !Config Key = clon 730 !Config Desc = centre du zoom, longitude 731 !Config Def = 0 732 !Config Help = longitude en degres du centre 733 !Config du zoom 734 clon = 0. 735 CALL getin('clon',clon) 736 737 !Config Key = clat 738 !Config Desc = centre du zoom, latitude 739 !Config Def = 0 740 !Config Help = latitude en degres du centre du zoom 741 !Config 742 clat = 0. 743 CALL getin('clat',clat) 744 745 !Config Key = grossismx 746 !Config Desc = zoom en longitude 747 !Config Def = 1.0 748 !Config Help = facteur de grossissement du zoom, 749 !Config selon la longitude 750 grossismx = 1.0 751 CALL getin('grossismx',grossismx) 752 753 !Config Key = grossismy 754 !Config Desc = zoom en latitude 755 !Config Def = 1.0 756 !Config Help = facteur de grossissement du zoom, 757 !Config selon la latitude 758 grossismy = 1.0 759 CALL getin('grossismy',grossismy) 760 761 IF( grossismx.LT.1. ) THEN 762 write(lunout,*) 763 & 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 764 STOP 765 ELSE 766 alphax = 1. - 1./ grossismx 767 ENDIF 768 769 770 IF( grossismy.LT.1. ) THEN 771 write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** ' 772 STOP 773 ELSE 774 alphay = 1. - 1./ grossismy 775 ENDIF 776 777 write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay 778 ! 779 ! alphax et alphay sont les anciennes formulat. des grossissements 780 ! 781 ! 782 783 !Config Key = fxyhypb 784 !Config Desc = Fonction hyperbolique 785 !Config Def = y 786 !Config Help = Fonction f(y) hyperbolique si = .true. 787 !Config sinon sinusoidale 788 fxyhypb = .TRUE. 789 CALL getin('fxyhypb',fxyhypb) 790 791 !Config Key = dzoomx 792 !Config Desc = extension en longitude 793 !Config Def = 0 794 !Config Help = extension en longitude de la zone du zoom 795 !Config ( fraction de la zone totale) 796 dzoomx = 0.0 797 CALL getin('dzoomx',dzoomx) 798 799 !Config Key = dzoomy 800 !Config Desc = extension en latitude 801 !Config Def = 0 802 !Config Help = extension en latitude de la zone du zoom 803 !Config ( fraction de la zone totale) 804 dzoomy = 0.0 805 CALL getin('dzoomy',dzoomy) 806 807 !Config Key = taux 808 !Config Desc = raideur du zoom en X 809 !Config Def = 3 810 !Config Help = raideur du zoom en X 811 taux = 3.0 812 CALL getin('taux',taux) 813 814 !Config Key = tauy 815 !Config Desc = raideur du zoom en Y 816 !Config Def = 3 817 !Config Help = raideur du zoom en Y 818 tauy = 3.0 819 CALL getin('tauy',tauy) 820 821 !Config Key = ysinus 822 !Config IF = !fxyhypb 823 !Config Desc = Fonction en Sinus 824 !Config Def = y 825 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 826 !Config sinon y = latit. 827 ysinus = .TRUE. 828 CALL getin('ysinus',ysinus) 829 ! 830 !Config Key = offline 831 !Config Desc = Nouvelle eau liquide 832 !Config Def = n 833 !Config Help = Permet de mettre en route la 834 !Config nouvelle parametrisation de l'eau liquide ! 835 offline = .FALSE. 836 CALL getin('offline',offline) 837 IF (offline .AND. adjust) THEN 838 WRITE(lunout,*) 839 & 'WARNING : option offline does not work with adjust=y :' 840 WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ', 841 & 'and fluxstokev.nc will not be created' 842 WRITE(lunout,*) 843 & 'only the file phystoke.nc will still be created ' 844 END IF 845 846 !Config Key = type_trac 847 !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS 848 !Config Def = lmdz 849 !Config Help = 850 !Config 'lmdz' = pas de couplage, pur LMDZ 851 !Config 'inca' = model de chime INCA 852 !Config 'repr' = model de chime REPROBUS 853 type_trac = 'lmdz' 854 CALL getin('type_trac',type_trac) 855 856 !Config Key = config_inca 857 !Config Desc = Choix de configuration de INCA 858 !Config Def = none 859 !Config Help = Choix de configuration de INCA : 860 !Config 'none' = sans INCA 861 !Config 'chem' = INCA avec calcul de chemie 862 !Config 'aero' = INCA avec calcul des aerosols 863 config_inca = 'none' 864 CALL getin('config_inca',config_inca) 865 866 !Config Key = ok_dynzon 867 !Config Desc = sortie des transports zonaux dans la dynamique 868 !Config Def = n 869 !Config Help = Permet de mettre en route le calcul des transports 870 !Config 871 ok_dynzon = .FALSE. 872 CALL getin('ok_dynzon',ok_dynzon) 873 874 !Config Key = ok_dyn_ins 875 !Config Desc = sorties instantanees dans la dynamique 876 !Config Def = n 877 !Config Help = 878 !Config 879 ok_dyn_ins = .FALSE. 880 CALL getin('ok_dyn_ins',ok_dyn_ins) 881 882 !Config Key = ok_dyn_ave 883 !Config Desc = sorties moyennes dans la dynamique 884 !Config Def = n 885 !Config Help = 886 !Config 887 ok_dyn_ave = .FALSE. 888 CALL getin('ok_dyn_ave',ok_dyn_ave) 889 890 !Config Key = use_filtre_fft 891 !Config Desc = flag d'activation des FFT pour le filtre 892 !Config Def = false 893 !Config Help = permet d'activer l'utilisation des FFT pour effectuer 894 !Config le filtrage aux poles. 895 use_filtre_fft=.FALSE. 896 CALL getin('use_filtre_fft',use_filtre_fft) 897 898 IF (use_filtre_fft .AND. grossismx /= 1.0) THEN 751 ELSE 752 alphay = 1. - 1./ grossismy 753 ENDIF 754 755 write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay 756 757 ! alphax et alphay sont les anciennes formulat. des grossissements 758 759 !Config Key = fxyhypb 760 !Config Desc = Fonction hyperbolique 761 !Config Def = y 762 !Config Help = Fonction f(y) hyperbolique si = .true. 763 !Config sinon sinusoidale 764 fxyhypb = .TRUE. 765 CALL getin('fxyhypb',fxyhypb) 766 767 !Config Key = dzoomx 768 !Config Desc = extension en longitude 769 !Config Def = 0 770 !Config Help = extension en longitude de la zone du zoom 771 !Config ( fraction de la zone totale) 772 dzoomx = 0.0 773 CALL getin('dzoomx',dzoomx) 774 775 !Config Key = dzoomy 776 !Config Desc = extension en latitude 777 !Config Def = 0 778 !Config Help = extension en latitude de la zone du zoom 779 !Config ( fraction de la zone totale) 780 dzoomy = 0.0 781 CALL getin('dzoomy',dzoomy) 782 783 !Config Key = taux 784 !Config Desc = raideur du zoom en X 785 !Config Def = 3 786 !Config Help = raideur du zoom en X 787 taux = 3.0 788 CALL getin('taux',taux) 789 790 !Config Key = tauy 791 !Config Desc = raideur du zoom en Y 792 !Config Def = 3 793 !Config Help = raideur du zoom en Y 794 tauy = 3.0 795 CALL getin('tauy',tauy) 796 797 !Config Key = ysinus 798 !Config IF = !fxyhypb 799 !Config Desc = Fonction en Sinus 800 !Config Def = y 801 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 802 !Config sinon y = latit. 803 ysinus = .TRUE. 804 CALL getin('ysinus',ysinus) 805 806 !Config Key = offline 807 !Config Desc = Nouvelle eau liquide 808 !Config Def = n 809 !Config Help = Permet de mettre en route la 810 !Config nouvelle parametrisation de l'eau liquide ! 811 offline = .FALSE. 812 CALL getin('offline',offline) 813 IF (offline .AND. adjust) THEN 814 WRITE(lunout,*) & 815 'WARNING : option offline does not work with adjust=y :' 816 WRITE(lunout,*) 'the files defstoke.nc, fluxstoke.nc ', & 817 'and fluxstokev.nc will not be created' 818 WRITE(lunout,*) & 819 'only the file phystoke.nc will still be created ' 820 END IF 821 822 !Config Key = type_trac 823 !Config Desc = Choix de couplage avec model de chimie INCA ou REPROBUS 824 !Config Def = lmdz 825 !Config Help = 826 !Config 'lmdz' = pas de couplage, pur LMDZ 827 !Config 'inca' = model de chime INCA 828 !Config 'repr' = model de chime REPROBUS 829 type_trac = 'lmdz' 830 CALL getin('type_trac',type_trac) 831 832 !Config Key = config_inca 833 !Config Desc = Choix de configuration de INCA 834 !Config Def = none 835 !Config Help = Choix de configuration de INCA : 836 !Config 'none' = sans INCA 837 !Config 'chem' = INCA avec calcul de chemie 838 !Config 'aero' = INCA avec calcul des aerosols 839 config_inca = 'none' 840 CALL getin('config_inca',config_inca) 841 842 !Config Key = ok_dynzon 843 !Config Desc = sortie des transports zonaux dans la dynamique 844 !Config Def = n 845 !Config Help = Permet de mettre en route le calcul des transports 846 !Config 847 ok_dynzon = .FALSE. 848 CALL getin('ok_dynzon',ok_dynzon) 849 850 !Config Key = ok_dyn_ins 851 !Config Desc = sorties instantanees dans la dynamique 852 !Config Def = n 853 !Config Help = 854 !Config 855 ok_dyn_ins = .FALSE. 856 CALL getin('ok_dyn_ins',ok_dyn_ins) 857 858 !Config Key = ok_dyn_ave 859 !Config Desc = sorties moyennes dans la dynamique 860 !Config Def = n 861 !Config Help = 862 !Config 863 ok_dyn_ave = .FALSE. 864 CALL getin('ok_dyn_ave',ok_dyn_ave) 865 866 !Config Key = use_filtre_fft 867 !Config Desc = flag d'activation des FFT pour le filtre 868 !Config Def = false 869 !Config Help = permet d'activer l'utilisation des FFT pour effectuer 870 !Config le filtrage aux poles. 871 use_filtre_fft=.FALSE. 872 CALL getin('use_filtre_fft',use_filtre_fft) 873 874 IF (use_filtre_fft .AND. grossismx /= 1.0) THEN 899 875 write(lunout,*)'WARNING !!! ' 900 write(lunout,*)"Le zoom en longitude est incompatible", 901 & " avec l'utilisation du filtre FFT ", 902 & "---> FFT filter not active" 903 use_filtre_fft=.FALSE. 904 ENDIF 905 906 907 908 !Config Key = use_mpi_alloc 909 !Config Desc = Utilise un buffer MPI en m�moire globale 910 !Config Def = false 911 !Config Help = permet d'activer l'utilisation d'un buffer MPI 912 !Config en m�moire globale a l'aide de la fonction MPI_ALLOC. 913 !Config Cela peut am�liorer la bande passante des transferts MPI 914 !Config d'un facteur 2 915 use_mpi_alloc=.FALSE. 916 CALL getin('use_mpi_alloc',use_mpi_alloc) 917 918 !Config key = ok_strato 919 !Config Desc = activation de la version strato 920 !Config Def = .FALSE. 921 !Config Help = active la version stratosphérique de LMDZ de F. Lott 922 923 ok_strato=.FALSE. 924 CALL getin('ok_strato',ok_strato) 925 926 vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39) 927 CALL getin('vert_prof_dissip', vert_prof_dissip) 928 call assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1, 929 $ "bad value for vert_prof_dissip") 930 931 !Config Key = ok_gradsfile 932 !Config Desc = activation des sorties grads du guidage 933 !Config Def = n 934 !Config Help = active les sorties grads du guidage 935 936 ok_gradsfile = .FALSE. 937 CALL getin('ok_gradsfile',ok_gradsfile) 938 939 !Config Key = ok_limit 940 !Config Desc = creation des fichiers limit dans create_etat0_limit 941 !Config Def = y 942 !Config Help = production du fichier limit.nc requise 943 944 ok_limit = .TRUE. 945 CALL getin('ok_limit',ok_limit) 946 947 !Config Key = ok_etat0 948 !Config Desc = creation des fichiers etat0 dans create_etat0_limit 949 !Config Def = y 950 !Config Help = production des fichiers start.nc, startphy.nc requise 951 952 ok_etat0 = .TRUE. 953 CALL getin('ok_etat0',ok_etat0) 954 955 write(lunout,*)' #########################################' 956 write(lunout,*)' Configuration des parametres de cel0' 957 & //'_limit: ' 958 write(lunout,*)' planet_type = ', planet_type 959 write(lunout,*)' calend = ', calend 960 write(lunout,*)' dayref = ', dayref 961 write(lunout,*)' anneeref = ', anneeref 962 write(lunout,*)' nday = ', nday 963 write(lunout,*)' day_step = ', day_step 964 write(lunout,*)' iperiod = ', iperiod 965 write(lunout,*)' iconser = ', iconser 966 write(lunout,*)' iecri = ', iecri 967 write(lunout,*)' periodav = ', periodav 968 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 969 write(lunout,*)' dissip_period = ', dissip_period 970 write(lunout,*)' lstardis = ', lstardis 971 write(lunout,*)' nitergdiv = ', nitergdiv 972 write(lunout,*)' nitergrot = ', nitergrot 973 write(lunout,*)' niterh = ', niterh 974 write(lunout,*)' tetagdiv = ', tetagdiv 975 write(lunout,*)' tetagrot = ', tetagrot 976 write(lunout,*)' tetatemp = ', tetatemp 977 write(lunout,*)' coefdis = ', coefdis 978 write(lunout,*)' purmats = ', purmats 979 write(lunout,*)' read_start = ', read_start 980 write(lunout,*)' iflag_phys = ', iflag_phys 981 write(lunout,*)' iphysiq = ', iphysiq 982 write(lunout,*)' clon = ', clon 983 write(lunout,*)' clat = ', clat 984 write(lunout,*)' grossismx = ', grossismx 985 write(lunout,*)' grossismy = ', grossismy 986 write(lunout,*)' fxyhypb = ', fxyhypb 987 write(lunout,*)' dzoomx = ', dzoomx 988 write(lunout,*)' dzoomy = ', dzoomy 989 write(lunout,*)' taux = ', taux 990 write(lunout,*)' tauy = ', tauy 991 write(lunout,*)' offline = ', offline 992 write(lunout,*)' type_trac = ', type_trac 993 write(lunout,*)' config_inca = ', config_inca 994 write(lunout,*)' ok_dynzon = ', ok_dynzon 995 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 996 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 997 write(lunout,*)' use_filtre_fft = ', use_filtre_fft 998 write(lunout,*)' use_mpi_alloc = ', use_mpi_alloc 999 write(lunout,*)' ok_strato = ', ok_strato 1000 write(lunout,*)' ok_gradsfile = ', ok_gradsfile 1001 write(lunout,*)' ok_limit = ', ok_limit 1002 write(lunout,*)' ok_etat0 = ', ok_etat0 1003 ! 1004 RETURN 1005 END 876 write(lunout,*)"Le zoom en longitude est incompatible", & 877 " avec l'utilisation du filtre FFT ", & 878 "---> FFT filter not active" 879 use_filtre_fft=.FALSE. 880 ENDIF 881 882 !Config Key = use_mpi_alloc 883 !Config Desc = Utilise un buffer MPI en m�moire globale 884 !Config Def = false 885 !Config Help = permet d'activer l'utilisation d'un buffer MPI 886 !Config en m�moire globale a l'aide de la fonction MPI_ALLOC. 887 !Config Cela peut am�liorer la bande passante des transferts MPI 888 !Config d'un facteur 2 889 use_mpi_alloc=.FALSE. 890 CALL getin('use_mpi_alloc',use_mpi_alloc) 891 892 !Config key = ok_strato 893 !Config Desc = activation de la version strato 894 !Config Def = .FALSE. 895 !Config Help = active la version stratosphérique de LMDZ de F. Lott 896 897 ok_strato=.FALSE. 898 CALL getin('ok_strato',ok_strato) 899 900 vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39) 901 CALL getin('vert_prof_dissip', vert_prof_dissip) 902 call assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1, & 903 "bad value for vert_prof_dissip") 904 905 !Config Key = ok_gradsfile 906 !Config Desc = activation des sorties grads du guidage 907 !Config Def = n 908 !Config Help = active les sorties grads du guidage 909 910 ok_gradsfile = .FALSE. 911 CALL getin('ok_gradsfile',ok_gradsfile) 912 913 !Config Key = ok_limit 914 !Config Desc = creation des fichiers limit dans create_etat0_limit 915 !Config Def = y 916 !Config Help = production du fichier limit.nc requise 917 918 ok_limit = .TRUE. 919 CALL getin('ok_limit',ok_limit) 920 921 !Config Key = ok_etat0 922 !Config Desc = creation des fichiers etat0 dans create_etat0_limit 923 !Config Def = y 924 !Config Help = production des fichiers start.nc, startphy.nc requise 925 926 ok_etat0 = .TRUE. 927 CALL getin('ok_etat0',ok_etat0) 928 929 write(lunout,*)' #########################################' 930 write(lunout,*)' Configuration des parametres de cel0' & 931 //'_limit: ' 932 write(lunout,*)' planet_type = ', planet_type 933 write(lunout,*)' calend = ', calend 934 write(lunout,*)' dayref = ', dayref 935 write(lunout,*)' anneeref = ', anneeref 936 write(lunout,*)' nday = ', nday 937 write(lunout,*)' day_step = ', day_step 938 write(lunout,*)' iperiod = ', iperiod 939 write(lunout,*)' iconser = ', iconser 940 write(lunout,*)' iecri = ', iecri 941 write(lunout,*)' periodav = ', periodav 942 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 943 write(lunout,*)' dissip_period = ', dissip_period 944 write(lunout,*)' lstardis = ', lstardis 945 write(lunout,*)' nitergdiv = ', nitergdiv 946 write(lunout,*)' nitergrot = ', nitergrot 947 write(lunout,*)' niterh = ', niterh 948 write(lunout,*)' tetagdiv = ', tetagdiv 949 write(lunout,*)' tetagrot = ', tetagrot 950 write(lunout,*)' tetatemp = ', tetatemp 951 write(lunout,*)' coefdis = ', coefdis 952 write(lunout,*)' purmats = ', purmats 953 write(lunout,*)' read_start = ', read_start 954 write(lunout,*)' iflag_phys = ', iflag_phys 955 write(lunout,*)' iphysiq = ', iphysiq 956 write(lunout,*)' clon = ', clon 957 write(lunout,*)' clat = ', clat 958 write(lunout,*)' grossismx = ', grossismx 959 write(lunout,*)' grossismy = ', grossismy 960 write(lunout,*)' fxyhypb = ', fxyhypb 961 write(lunout,*)' dzoomx = ', dzoomx 962 write(lunout,*)' dzoomy = ', dzoomy 963 write(lunout,*)' taux = ', taux 964 write(lunout,*)' tauy = ', tauy 965 write(lunout,*)' offline = ', offline 966 write(lunout,*)' type_trac = ', type_trac 967 write(lunout,*)' config_inca = ', config_inca 968 write(lunout,*)' ok_dynzon = ', ok_dynzon 969 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 970 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 971 write(lunout,*)' use_filtre_fft = ', use_filtre_fft 972 write(lunout,*)' use_mpi_alloc = ', use_mpi_alloc 973 write(lunout,*)' ok_strato = ', ok_strato 974 write(lunout,*)' ok_gradsfile = ', ok_gradsfile 975 write(lunout,*)' ok_limit = ', ok_limit 976 write(lunout,*)' ok_etat0 = ', ok_etat0 977 end IF test_etatinit 978 979 END SUBROUTINE conf_gcm
Note: See TracChangeset
for help on using the changeset viewer.