Changeset 2142 for LMDZ5/trunk/libf
- Timestamp:
- Nov 14, 2014, 2:32:39 PM (11 years ago)
- Location:
- LMDZ5/trunk/libf
- Files:
-
- 3 copied
-
dyn3d/conf_gcm.F90 (copied) (copied from LMDZ5/trunk/libf/dyn3d/conf_gcm.F) (1 diff)
-
dyn3dmem/conf_gcm.F90 (copied) (copied from LMDZ5/trunk/libf/dyn3dmem/conf_gcm.F) (1 diff)
-
dyn3dpar/conf_gcm.F90 (copied) (copied from LMDZ5/trunk/libf/dyn3dpar/conf_gcm.F) (1 diff)
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 use IOIPSL8 use IOIPSL 11 9 #else 12 ! if not using IOIPSL, we still need to use (a local version of) getin13 use ioipsl_getincom10 ! 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 ENDIF443 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 grossismyy = 1.0450 CALL getin('grossismy',grossismyy)451 452 IF( ABS(grossismy - grossismyy).GE. 0.001 ) THEN453 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 ENDIF862 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 ok_strato=.FALSE.869 CALL getin('ok_strato',ok_strato)870 871 vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39)872 CALL getin('vert_prof_dissip', vert_prof_dissip)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 ok_gradsfile = .FALSE.882 CALL getin('ok_gradsfile',ok_gradsfile)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 ok_limit = .TRUE.890 CALL getin('ok_limit',ok_limit)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 ok_etat0 = .TRUE.898 CALL getin('ok_etat0',ok_etat0)899 900 write(lunout,*)' #########################################'901 write(lunout,*)' Configuration des parametres de cel0'902 &//'_limit: '903 write(lunout,*)' planet_type = ', planet_type904 write(lunout,*)' calend = ', calend905 write(lunout,*)' dayref = ', dayref906 write(lunout,*)' anneeref = ', anneeref907 write(lunout,*)' nday = ', nday908 write(lunout,*)' day_step = ', day_step909 write(lunout,*)' iperiod = ', iperiod910 write(lunout,*)' iconser = ', iconser911 write(lunout,*)' iecri = ', iecri912 write(lunout,*)' periodav = ', periodav913 write(lunout,*)' output_grads_dyn = ', output_grads_dyn914 write(lunout,*)' dissip_period = ', dissip_period915 write(lunout,*)' lstardis = ', lstardis916 write(lunout,*)' nitergdiv = ', nitergdiv917 write(lunout,*)' nitergrot = ', nitergrot918 write(lunout,*)' niterh = ', niterh919 write(lunout,*)' tetagdiv = ', tetagdiv920 write(lunout,*)' tetagrot = ', tetagrot921 write(lunout,*)' tetatemp = ', tetatemp922 write(lunout,*)' coefdis = ', coefdis923 write(lunout,*)' purmats = ', purmats924 write(lunout,*)' read_start = ', read_start925 write(lunout,*)' iflag_phys = ', iflag_phys926 write(lunout,*)' iphysiq = ', iphysiq927 write(lunout,*)' clon = ', clon928 write(lunout,*)' clat = ', clat929 write(lunout,*)' grossismx = ', grossismx930 write(lunout,*)' grossismy = ', grossismy931 write(lunout,*)' fxyhypb = ', fxyhypb932 write(lunout,*)' dzoomx = ', dzoomx933 write(lunout,*)' dzoomy = ', dzoomy934 write(lunout,*)' taux = ', taux935 write(lunout,*)' tauy = ', tauy936 write(lunout,*)' offline = ', offline937 write(lunout,*)' type_trac = ', type_trac938 write(lunout,*)' config_inca = ', config_inca939 write(lunout,*)' ok_dynzon = ', ok_dynzon940 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins941 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave942 write(lunout,*)' ok_strato = ', ok_strato943 write(lunout,*)' ok_gradsfile = ', ok_gradsfile944 write(lunout,*)' ok_limit = ', ok_limit945 write(lunout,*)' ok_etat0 = ', ok_etat0946 ! 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 use IOIPSL8 use IOIPSL 11 9 #else 12 ! if not using IOIPSL, we still need to use (a local version of) getin13 use ioipsl_getincom10 ! 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 integer,external :: OMP_GET_NUM_THREADS63 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 lunout=6103 CALL getin('lunout', lunout)104 IF (lunout /= 5 .and. lunout /= 6) THEN105 OPEN(UNIT=lunout,FILE='lmdz.out_0000',ACTION='write',106 &STATUS='unknown',FORM='formatted')107 ENDIF108 109 adjust=.false.110 call getin('adjust',adjust)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 ! adjust=y not implemented in case of OpenMP threads...114 !$OMP PARALLEL115 if ((OMP_GET_NUM_THREADS()>1).and.adjust) then116 write(lunout,*)'conf_gcm: Error, adjust should be set to n'117 &,' when running with OpenMP threads'118 abort_message = 'Wrong value for adjust'119 call abort_gcm(modname,abort_message,1)120 endif121 !$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 ENDIF470 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 grossismyy = 1.0477 CALL getin('grossismy',grossismyy)478 479 IF( ABS(grossismy - grossismyy).GE. 0.001 ) THEN480 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 use IOIPSL8 use IOIPSL 11 9 #else 12 ! if not using IOIPSL, we still need to use (a local version of) getin13 use ioipsl_getincom10 ! 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 integer,external :: OMP_GET_NUM_THREADS62 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 lunout=6102 CALL getin('lunout', lunout)103 IF (lunout /= 5 .and. lunout /= 6) THEN104 OPEN(UNIT=lunout,FILE='lmdz.out_0000',ACTION='write',105 &STATUS='unknown',FORM='formatted')106 ENDIF107 108 adjust=.false.109 call getin('adjust',adjust)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 ! adjust=y not implemented in case of OpenMP threads...113 !$OMP PARALLEL114 if ((OMP_GET_NUM_THREADS()>1).and.adjust) then115 write(lunout,*)'conf_gcm: Error, adjust should be set to n'116 &,' when running with OpenMP threads'117 abort_message = 'Wrong value for adjust'118 call abort_gcm(modname,abort_message,1)119 endif120 !$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 ENDIF469 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 grossismyy = 1.0476 CALL getin('grossismy',grossismyy)477 478 IF( ABS(grossismy - grossismyy).GE. 0.001 ) THEN479 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.
