Changeset 1391 for trunk/LMDZ.COMMON/libf/dyn3d
- Timestamp:
- Mar 6, 2015, 3:12:12 PM (10 years ago)
- Location:
- trunk/LMDZ.COMMON/libf/dyn3d
- Files:
-
- 5 edited
- 1 moved
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.COMMON/libf/dyn3d/abort_gcm.F
r1 r1391 12 12 USE ioipsl_getincom 13 13 #endif 14 15 #ifdef CPP_XIOS 16 ! ug Pour les sorties XIOS 17 USE wxios 18 #endif 19 14 20 #include "iniprint.h" 15 21 … … 22 28 C ierr = severity of situation ( = 0 normal ) 23 29 24 character(len=*) modname25 integer ierr26 character(len=*) message30 character(len=*), intent(in):: modname 31 integer, intent(in):: ierr 32 character(len=*), intent(in):: message 27 33 28 34 write(lunout,*) 'in abort_gcm' 35 36 #ifdef CPP_XIOS 37 !Fermeture propre de XIOS 38 CALL wxios_close() 39 #endif 40 29 41 #ifdef CPP_IOIPSL 30 42 call histclo -
trunk/LMDZ.COMMON/libf/dyn3d/conf_gcm.F90
r1390 r1391 1 1 ! 2 2 ! $Id: conf_gcm.F 1418 2010-07-19 15:11:24Z jghattas $ 3 ! 4 ! 5 ! 6 SUBROUTINE conf_gcm( tapedef, etatinit ) 7 ! 8 USE control_mod 3 4 SUBROUTINE conf_gcm( tapedef, etatinit ) 5 6 USE control_mod 9 7 #ifdef CPP_IOIPSL 10 8 use IOIPSL 11 9 #else 12 ! if not using IOIPSL, we still need to use (a local version of) getin13 10 ! if not using IOIPSL, we still need to use (a local version of) getin 11 use ioipsl_getincom 14 12 #endif 15 16 17 18 19 13 USE infotrac, ONLY : type_trac 14 use assert_m, only: assert 15 use sponge_mod, only: callsponge,mode_sponge,nsponge,tetasponge 16 17 IMPLICIT NONE 20 18 !----------------------------------------------------------------------- 21 19 ! Auteurs : L. Fairhead , P. Le Van . … … 27 25 ! -metres du zoom avec celles lues sur le fichier start . 28 26 ! 29 30 27 LOGICAL etatinit 28 INTEGER tapedef 31 29 32 30 ! Declarations : 33 31 ! -------------- 34 #include "dimensions.h"35 #include "paramet.h"36 #include "logic.h"37 #include "serre.h"38 #include "comdissnew.h"39 #include "iniprint.h"40 #include "temps.h"41 #include "comconst.h"32 include "dimensions.h" 33 include "paramet.h" 34 include "logic.h" 35 include "serre.h" 36 include "comdissnew.h" 37 include "iniprint.h" 38 include "temps.h" 39 include "comconst.h" 42 40 43 41 ! FH 2008/05/09 On elimine toutes les clefs physiques dans la dynamique … … 48 46 ! ------ 49 47 50 51 52 53 54 55 48 CHARACTER ch1*72,ch2*72,ch3*72,ch4*12 49 REAL clonn,clatt,grossismxx,grossismyy 50 REAL dzoomxx,dzoomyy, tauxx,tauyy 51 LOGICAL fxyhypbb, ysinuss 52 INTEGER i 53 LOGICAL use_filtre_fft 56 54 ! 57 55 ! ------------------------------------------------------------------- … … 88 86 !Config Help = unite de fichier pour les impressions 89 87 !Config (defaut sortie standard = 6) 90 91 92 93 OPEN(UNIT=lunout,FILE='lmdz.out',ACTION='write',&94 &STATUS='unknown',FORM='formatted')95 88 lunout=6 89 CALL getin('lunout', lunout) 90 IF (lunout /= 5 .and. lunout /= 6) THEN 91 OPEN(UNIT=lunout,FILE='lmdz.out',ACTION='write', & 92 STATUS='unknown',FORM='formatted') 93 ENDIF 96 94 97 95 !Config Key = prt_level … … 100 98 !Config Help = Niveau d'impression pour le débogage 101 99 !Config (0 = minimum d'impression) 102 103 100 prt_level = 0 101 CALL getin('prt_level',prt_level) 104 102 105 103 !----------------------------------------------------------------------- … … 110 108 !Config Def = earth 111 109 !Config Help = this flag sets the type of atymosphere that is considered 112 113 110 planet_type="earth" 111 CALL getin('planet_type',planet_type) 114 112 115 113 !Config Key = calend … … 118 116 !Config Help = valeur possible: earth_360d, earth_365d, earth_366d 119 117 !Config 120 121 118 calend = 'earth_360d' 119 CALL getin('calend', calend) 122 120 123 121 !Config Key = dayref … … 126 124 !Config Help = Jour de l'etat initial ( = 350 si 20 Decembre , 127 125 !Config par expl. ,comme ici ) ... A completer 128 129 126 dayref=1 127 CALL getin('dayref', dayref) 130 128 131 129 !Config Key = anneeref … … 134 132 !Config Help = Annee de l'etat initial 135 133 !Config ( avec 4 chiffres ) ... A completer 136 137 134 anneeref = 1998 135 CALL getin('anneeref',anneeref) 138 136 139 137 !Config Key = raz_date … … 144 142 !Config 1 prise en compte de la date de gcm.def avec remise a zero 145 143 !Config des compteurs de pas de temps 146 147 144 raz_date = 0 145 CALL getin('raz_date', raz_date) 148 146 149 147 !Config Key = resetvarc … … 151 149 !Config Def = n 152 150 !Config Help = Reinit des variables de controle 153 154 151 resetvarc = .false. 152 CALL getin('resetvarc',resetvarc) 155 153 156 154 !Config Key = nday … … 159 157 !Config Help = Nombre de jours d'integration 160 158 !Config ... On pourait aussi permettre des mois ou des annees ! 161 162 163 164 165 166 167 159 nday = 10 160 CALL getin('nday',nday) 161 162 ! alternative to specifying nday (see also 'less1day' and 'fractday' 163 ! options below: sopecify numbre of dynamic steps to run: 164 ndynstep = -9999 ! default value ; if ndynstep <0 then option not used. 165 call getin('ndynstep',ndynstep) 168 166 169 167 !Config Key = starttime … … 172 170 !Config Help = Heure de depart de la simulation 173 171 !Config en jour 174 175 172 starttime = 0 173 CALL getin('starttime',starttime) 176 174 177 178 179 180 175 ! Mars: time of start for run in "start.nc" (when there are multiple time 176 ! steps stored in the file) 177 timestart=-9999 ! default value; if <0, use last stored time 178 call getin("timestart",timestart) 181 179 182 180 !Config Key = less1day … … 184 182 !Config Def = n 185 183 !Config Help = Possibilite d'integrer moins d'un jour 186 187 184 less1day = .false. 185 CALL getin('less1day',less1day) 188 186 189 187 !Config Key = fractday … … 191 189 !Config Def = 0.01 192 190 !Config Help = integration sur une fraction de jour 193 194 191 fractday = 0.01 192 CALL getin('fractday',fractday) 195 193 196 194 !Config Key = day_step … … 199 197 !Config Help = nombre de pas par jour (multiple de iperiod) ( 200 198 !Config ici pour dt = 1 min ) 201 202 199 day_step = 240 200 CALL getin('day_step',day_step) 203 201 204 202 !Config Key = nsplit_phys … … 206 204 !Config Def = 1 207 205 !Config Help = nombre de subdivisions par pas physique 208 209 206 nsplit_phys = 1 207 CALL getin('nsplit_phys',nsplit_phys) 210 208 211 209 !Config Key = iperiod … … 213 211 !Config Def = 5 214 212 !Config Help = periode pour le pas Matsuno (en pas de temps) 215 216 213 iperiod = 5 214 CALL getin('iperiod',iperiod) 217 215 218 216 !Config Key = iapp_tracvl … … 220 218 !Config Def = iperiod 221 219 !Config Help = frequence du groupement des flux (en pas de temps) 222 223 220 iapp_tracvl = iperiod 221 CALL getin('iapp_tracvl',iapp_tracvl) 224 222 225 223 !Config Key = iconser … … 228 226 !Config Help = periode de sortie des variables de controle 229 227 !Config (En pas de temps) 230 231 228 iconser = 240 229 CALL getin('iconser', iconser) 232 230 233 231 !Config Key = iecri … … 235 233 !Config Def = 1 236 234 !Config Help = periode d'ecriture du fichier histoire (en jour) 237 238 235 iecri = 1 236 CALL getin('iecri',iecri) 239 237 240 238 … … 243 241 !Config Def = 1 244 242 !Config Help = periode de stockage fichier histmoy (en jour) 245 246 243 periodav = 1. 244 CALL getin('periodav',periodav) 247 245 248 246 !Config Key = output_grads_dyn … … 250 248 !Config Def = n 251 249 !Config Help = output dynamics diagnostics in Grads-readable 'dyn.dat' file 252 253 250 output_grads_dyn=.false. 251 CALL getin('output_grads_dyn',output_grads_dyn) 254 252 255 253 !Config Key = dissip_period … … 259 257 !Config dissip_period=0 => la valeur sera calcule dans inidissip 260 258 !Config dissip_period>0 => on prend cette valeur 261 262 263 264 259 dissip_period = 0 260 call getin('idissip',dissip_period) ! old Mars/Genreic model parameter 261 ! if there is a "dissip_period" in run.def, it overrides "idissip" 262 CALL getin('dissip_period',dissip_period) 265 263 266 264 !cc .... P. Le Van , modif le 29/04/97 .pour la dissipation ... … … 273 271 !Config 'y' si on veut star et 'n' si on veut non-start ! 274 272 !Config Moi y en a pas comprendre ! 275 276 273 lstardis = .TRUE. 274 CALL getin('lstardis',lstardis) 277 275 278 276 … … 282 280 !Config Help = nombre d'iterations de l'operateur de dissipation 283 281 !Config gradiv 284 285 282 nitergdiv = 1 283 CALL getin('nitergdiv',nitergdiv) 286 284 287 285 !Config Key = nitergrot … … 290 288 !Config Help = nombre d'iterations de l'operateur de dissipation 291 289 !Config nxgradrot 292 293 290 nitergrot = 2 291 CALL getin('nitergrot',nitergrot) 294 292 295 293 … … 299 297 !Config Help = nombre d'iterations de l'operateur de dissipation 300 298 !Config divgrad 301 302 299 niterh = 2 300 CALL getin('niterh',niterh) 303 301 304 302 … … 308 306 !Config Help = temps de dissipation des plus petites longeur 309 307 !Config d'ondes pour u,v (gradiv) 310 311 308 tetagdiv = 7200. 309 CALL getin('tetagdiv',tetagdiv) 312 310 313 311 !Config Key = tetagrot … … 316 314 !Config Help = temps de dissipation des plus petites longeur 317 315 !Config d'ondes pour u,v (nxgradrot) 318 319 316 tetagrot = 7200. 317 CALL getin('tetagrot',tetagrot) 320 318 321 319 !Config Key = tetatemp … … 324 322 !Config Help = temps de dissipation des plus petites longeur 325 323 !Config d'ondes pour h (divgrad) 326 327 324 tetatemp = 7200. 325 CALL getin('tetatemp',tetatemp ) 328 326 329 327 ! For Earth model only: … … 333 331 ! avec ok_strato=y 334 332 335 336 337 338 339 340 333 dissip_factz=4. 334 dissip_deltaz=10. 335 dissip_zref=30. 336 CALL getin('dissip_factz',dissip_factz ) 337 CALL getin('dissip_deltaz',dissip_deltaz ) 338 CALL getin('dissip_zref',dissip_zref ) 341 339 342 340 ! For other planets: … … 345 343 ! Actifs uniquement avec ok_strato=y 346 344 347 348 349 350 351 352 353 354 355 356 345 dissip_fac_mid=2. 346 dissip_fac_up=10. 347 dissip_deltaz=10.! Intervalle (km) pour le changement mid / up 348 dissip_hdelta=5. ! scale height (km) dans la zone de la transition(m) 349 dissip_pupstart=1.e3 ! pression (Pa) au bas la transition mid / up 350 CALL getin('dissip_fac_mid',dissip_fac_mid ) 351 CALL getin('dissip_fac_up',dissip_fac_up ) 352 CALL getin('dissip_deltaz',dissip_deltaz ) 353 CALL getin('dissip_hdelta',dissip_hdelta ) 354 CALL getin('dissip_pupstart',dissip_pupstart ) 357 355 358 356 ! top_bound sponge: only active if iflag_top_bound!=0 … … 360 358 ! iflag_top_bound=1 for sponge over 4 topmost layers 361 359 ! iflag_top_bound=2 for sponge from top to ~1% of top layer pressure 362 363 360 iflag_top_bound=0 361 CALL getin('iflag_top_bound',iflag_top_bound) 364 362 365 363 ! mode_top_bound : fields towards which sponge relaxation will be done: … … 368 366 ! mode_top_bound=2: u and v relax towards their zonal mean 369 367 ! mode_top_bound=3: u,v and pot. temp. relax towards their zonal mean 370 371 368 mode_top_bound=3 369 CALL getin('mode_top_bound',mode_top_bound) 372 370 373 371 ! top_bound sponge : inverse of charactericstic relaxation time scale for sponge 374 375 372 tau_top_bound=1.e-5 373 CALL getin('tau_top_bound',tau_top_bound) 376 374 377 375 ! the other possible sponge layer (sponge_mod) 378 379 380 381 382 383 384 385 write(lunout,*)'But both sponge models should not be',386 &' used simultaneously!'387 388 376 callsponge=.false. ! default value; don't use the sponge 377 call getin("callsponge",callsponge) 378 ! check that user is not trying to use both sponge models 379 if ((iflag_top_bound.ge.1).and.callsponge) then 380 write(lunout,*)'Bad choice of options:' 381 write(lunout,*)' iflag_top_bound=',iflag_top_bound 382 write(lunout,*)' and callsponge=.true.' 383 write(lunout,*)'But both sponge models should not be', & 384 ' used simultaneously!' 385 stop 386 endif 389 387 390 388 ! nsponge: number of atmospheric layers over which the sponge extends 391 392 389 nsponge=3 ! default value 390 call getin("nsponge",nsponge) 393 391 394 392 ! mode_sponge: (quenching is towards ... over the upper nsponge layers) … … 396 394 ! 1: (h=hmean,u=umean,v=0) 397 395 ! 2: (h=hmean,u=umean,v=vmean)" 398 399 396 mode_sponge=2 ! default value 397 call getin("mode_sponge",mode_sponge) 400 398 401 399 ! tetasponge: characteristic time scale (seconds) at topmost layer 402 400 ! (time scale then doubles with decreasing layer index)." 403 404 401 tetasponge=50000.0 402 call getin("tetasponge",tetasponge) 405 403 406 404 ! FOR TITAN: tidal forces 407 tidal=.TRUE. 408 CALL getin('tidal',tidal) 405 if (planet_type=="titan") then 406 tidal=.TRUE. 407 CALL getin('tidal',tidal) 408 else 409 tidal=.false. 410 endif 409 411 410 412 !Config Key = coefdis … … 412 414 !Config Def = 0 413 415 !Config Help = coefficient pour gamdissip 414 415 416 coefdis = 0. 417 CALL getin('coefdis',coefdis) 416 418 417 419 !Config Key = purmats … … 420 422 !Config Help = Choix du schema d'integration temporel. 421 423 !Config y = pure Matsuno sinon c'est du Matsuno-leapfrog 422 423 424 purmats = .FALSE. 425 CALL getin('purmats',purmats) 424 426 425 427 !Config Key = ok_guide … … 427 429 !Config Def = n 428 430 !Config Help = Guidage 429 ok_guide = .FALSE. 430 CALL getin('ok_guide',ok_guide) 431 432 ! ............................................................... 431 ok_guide = .FALSE. 432 CALL getin('ok_guide',ok_guide) 433 433 434 434 !Config Key = read_start … … 437 437 !Config Help = y: intialize dynamical fields using a 'start.nc' file 438 438 ! n: fields are initialized by 'iniacademic' routine 439 440 439 read_start= .true. 440 CALL getin('read_start',read_start) 441 441 442 442 !Config Key = iflag_phys … … 445 445 !Config Help = Permet de faire tourner le modele sans 446 446 !Config physique. 447 iflag_phys = 1 448 CALL getin('iflag_phys',iflag_phys) 449 447 iflag_phys = 1 448 CALL getin('iflag_phys',iflag_phys) 450 449 451 450 !Config Key = iphysiq … … 453 452 !Config Def = 5 454 453 !Config Help = Periode de la physique en pas de temps de la dynamique. 455 456 454 iphysiq = 5 455 CALL getin('iphysiq', iphysiq) 457 456 458 457 !Config Key = iflag_trac … … 461 460 !Config Help = Permet de faire tourner le modele sans traceurs 462 461 !Config 463 464 462 iflag_trac = 1 463 CALL getin('iflag_trac',iflag_trac) 465 464 466 465 !Config Key = ip_ebil_dyn … … 472 471 !Config 1 pas de print 473 472 !Config 2 print, 474 475 473 ip_ebil_dyn = 0 474 CALL getin('ip_ebil_dyn',ip_ebil_dyn) 476 475 477 476 !Config Key = offline … … 480 479 !Config Help = Permet de mettre en route la 481 480 !Config nouvelle parametrisation de l'eau liquide ! 482 483 481 offline = .FALSE. 482 CALL getin('offline',offline) 484 483 485 484 !Config Key = type_trac … … 490 489 !Config 'inca' = model de chime INCA 491 490 !Config 'repr' = model de chime REPROBUS 492 493 491 type_trac = 'lmdz' 492 CALL getin('type_trac',type_trac) 494 493 495 494 !Config Key = config_inca … … 500 499 !Config 'chem' = INCA avec calcul de chemie 501 500 !Config 'aero' = INCA avec calcul des aerosols 502 503 501 config_inca = 'none' 502 CALL getin('config_inca',config_inca) 504 503 505 504 !Config Key = ok_dynzon … … 508 507 !Config Help = Permet de mettre en route le calcul des transports 509 508 !Config 510 511 509 ok_dynzon = .FALSE. 510 CALL getin('ok_dynzon',ok_dynzon) 512 511 513 512 !Config Key = ok_dyn_ins … … 516 515 !Config Help = 517 516 !Config 518 519 517 ok_dyn_ins = .FALSE. 518 CALL getin('ok_dyn_ins',ok_dyn_ins) 520 519 521 520 !Config Key = ok_dyn_ave … … 524 523 !Config Help = 525 524 !Config 526 527 525 ok_dyn_ave = .FALSE. 526 CALL getin('ok_dyn_ave',ok_dyn_ave) 528 527 529 528 !Config Key = use_filtre_fft … … 533 532 !Config le filtrage aux poles. 534 533 ! Le filtre fft n'est pas implemente dans dyn3d 535 536 537 538 539 540 541 542 534 use_filtre_fft=.FALSE. 535 CALL getin('use_filtre_fft',use_filtre_fft) 536 537 IF (use_filtre_fft) THEN 538 write(lunout,*)'STOP !!!' 539 write(lunout,*)'use_filtre_fft n est pas implemente dans dyn3d' 540 STOP 1 541 ENDIF 543 542 544 543 !Config key = ok_strato … … 547 546 !Config Help = active la version stratosphérique de LMDZ de F. Lott 548 547 549 550 548 ok_strato=.TRUE. 549 CALL getin('ok_strato',ok_strato) 551 550 552 551 ! NB: vert_prof_dissip is Earth-specific; should not impact other models 553 554 555 556 call assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1,557 $"bad value for vert_prof_dissip")558 559 560 561 562 563 552 if (planet_type=="earth") then 553 vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39) 554 CALL getin('vert_prof_dissip', vert_prof_dissip) 555 call assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1, & 556 "bad value for vert_prof_dissip") 557 else 558 vert_prof_dissip=0 ! default for planets ! 559 if (planet_type=="mars") then 560 vert_prof_dissip=1 ! use fac_mid & fac_up & startalt & delta 561 endif 562 endif 564 563 565 564 !Config Key = ok_gradsfile … … 568 567 !Config Help = active les sorties grads du guidage 569 568 570 571 569 ok_gradsfile = .FALSE. 570 CALL getin('ok_gradsfile',ok_gradsfile) 572 571 573 572 !Config Key = ok_limit … … 576 575 !Config Help = production du fichier limit.nc requise 577 576 578 579 577 ok_limit = .TRUE. 578 CALL getin('ok_limit',ok_limit) 580 579 581 580 !Config Key = ok_etat0 … … 584 583 !Config Help = production des fichiers start.nc, startphy.nc requise 585 584 586 587 585 ok_etat0 = .TRUE. 586 CALL getin('ok_etat0',ok_etat0) 588 587 589 588 !---------------------------------------- 590 589 ! Parameters for zonal averages in the case of Titan 591 592 593 594 595 596 590 moyzon_mu = .false. 591 moyzon_ch = .false. 592 if (planet_type=="titan") then 593 CALL getin('moyzon_mu', moyzon_mu) 594 CALL getin('moyzon_ch', moyzon_ch) 595 endif 597 596 !---------------------------------------- 598 597 … … 604 603 ! 605 604 !---------------------------------------- 606 IF( etatinit ) then 607 608 !Config Key = clon 609 !Config Desc = centre du zoom, longitude 610 !Config Def = 0 611 !Config Help = longitude en degres du centre 612 !Config du zoom 613 clon = 0. 614 CALL getin('clon',clon) 615 616 !Config Key = clat 617 !Config Desc = centre du zoom, latitude 618 !Config Def = 0 619 !Config Help = latitude en degres du centre du zoom 620 !Config 621 clat = 0. 622 CALL getin('clat',clat) 623 624 !Config Key = grossismx 625 !Config Desc = zoom en longitude 626 !Config Def = 1.0 627 !Config Help = facteur de grossissement du zoom, 628 !Config selon la longitude 629 grossismx = 1.0 630 CALL getin('grossismx',grossismx) 631 632 !Config Key = grossismy 633 !Config Desc = zoom en latitude 634 !Config Def = 1.0 635 !Config Help = facteur de grossissement du zoom, 636 !Config selon la latitude 637 grossismy = 1.0 638 CALL getin('grossismy',grossismy) 639 640 IF( grossismx.LT.1. ) THEN 641 write(lunout,*) & 642 & 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 643 STOP 644 ELSE 645 alphax = 1. - 1./ grossismx 646 ENDIF 647 648 649 IF( grossismy.LT.1. ) THEN 650 write(lunout,*) & 651 & 'conf_gcm: *** ATTENTION !! grossismy < 1 . *** ' 652 STOP 653 ELSE 654 alphay = 1. - 1./ grossismy 655 ENDIF 656 657 write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay 658 ! 659 ! alphax et alphay sont les anciennes formulat. des grossissements 660 ! 661 ! 662 663 !Config Key = fxyhypb 664 !Config Desc = Fonction hyperbolique 665 !Config Def = y 666 !Config Help = Fonction f(y) hyperbolique si = .true. 667 !Config sinon sinusoidale 668 fxyhypb = .TRUE. 669 CALL getin('fxyhypb',fxyhypb) 670 671 !Config Key = dzoomx 672 !Config Desc = extension en longitude 673 !Config Def = 0 674 !Config Help = extension en longitude de la zone du zoom 675 !Config ( fraction de la zone totale) 676 dzoomx = 0.0 677 CALL getin('dzoomx',dzoomx) 678 679 !Config Key = dzoomy 680 !Config Desc = extension en latitude 681 !Config Def = 0 682 !Config Help = extension en latitude de la zone du zoom 683 !Config ( fraction de la zone totale) 684 dzoomy = 0.0 685 CALL getin('dzoomy',dzoomy) 686 687 !Config Key = taux 688 !Config Desc = raideur du zoom en X 689 !Config Def = 3 690 !Config Help = raideur du zoom en X 691 taux = 3.0 692 CALL getin('taux',taux) 693 694 !Config Key = tauy 695 !Config Desc = raideur du zoom en Y 696 !Config Def = 3 697 !Config Help = raideur du zoom en Y 698 tauy = 3.0 699 CALL getin('tauy',tauy) 700 701 !Config Key = ysinus 702 !Config IF = !fxyhypb 703 !Config Desc = Fonction en Sinus 704 !Config Def = y 705 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 706 !Config sinon y = latit. 707 ysinus = .TRUE. 708 CALL getin('ysinus',ysinus) 709 c 710 c---------------------------------------- 711 else ! etatinit=false 712 c---------------------------------------- 713 714 !Config Key = clon 715 !Config Desc = centre du zoom, longitude 716 !Config Def = 0 717 !Config Help = longitude en degres du centre 718 !Config du zoom 719 clonn = 0. 720 CALL getin('clon',clonn) 721 722 !Config Key = clat 723 !Config Desc = centre du zoom, latitude 724 !Config Def = 0 725 !Config Help = latitude en degres du centre du zoom 726 !Config 727 clatt = 0. 728 CALL getin('clat',clatt) 729 730 c 731 c 732 IF( ABS(clat - clatt).GE. 0.001 ) THEN 733 write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', & 734 & ' est differente de celle lue sur le fichier start ' 605 test_etatinit: IF (.not. etatinit) then 606 !Config Key = clon 607 !Config Desc = centre du zoom, longitude 608 !Config Def = 0 609 !Config Help = longitude en degres du centre 610 !Config du zoom 611 clonn = 0. 612 CALL getin('clon',clonn) 613 614 !Config Key = clat 615 !Config Desc = centre du zoom, latitude 616 !Config Def = 0 617 !Config Help = latitude en degres du centre du zoom 618 !Config 619 clatt = 0. 620 CALL getin('clat',clatt) 621 622 IF( ABS(clat - clatt).GE. 0.001 ) THEN 623 write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', & 624 ' est differente de celle lue sur le fichier start ' 735 625 STOP 736 ENDIF 737 738 !Config Key = grossismx 739 !Config Desc = zoom en longitude 740 !Config Def = 1.0 741 !Config Help = facteur de grossissement du zoom, 742 !Config selon la longitude 743 grossismxx = 1.0 744 CALL getin('grossismx',grossismxx) 745 746 747 IF( ABS(grossismx - grossismxx).GE. 0.001 ) THEN 748 write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', & 749 & 'run.def est differente de celle lue sur le fichier start ' 626 ENDIF 627 628 !Config Key = grossismx 629 !Config Desc = zoom en longitude 630 !Config Def = 1.0 631 !Config Help = facteur de grossissement du zoom, 632 !Config selon la longitude 633 grossismxx = 1.0 634 CALL getin('grossismx',grossismxx) 635 636 IF( ABS(grossismx - grossismxx).GE. 0.001 ) THEN 637 write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', & 638 'run.def est differente de celle lue sur le fichier start ' 750 639 STOP 751 752 753 !Config Key = grossismy754 !Config Desc = zoom en latitude755 !Config Def = 1.0756 !Config Help = facteur de grossissement du zoom,757 !Config selon la latitude758 759 760 761 762 write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', 763 &'run.def est differente de celle lue sur le fichier start '640 ENDIF 641 642 !Config Key = grossismy 643 !Config Desc = zoom en latitude 644 !Config Def = 1.0 645 !Config Help = facteur de grossissement du zoom, 646 !Config selon la latitude 647 grossismyy = 1.0 648 CALL getin('grossismy',grossismyy) 649 650 IF( ABS(grossismy - grossismyy).GE. 0.001 ) THEN 651 write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', & 652 'run.def est differente de celle lue sur le fichier start ' 764 653 STOP 765 ENDIF 766 767 IF( grossismx.LT.1. ) THEN 768 write(lunout,*) & 769 & 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 770 STOP 771 ELSE 772 alphax = 1. - 1./ grossismx 773 ENDIF 774 775 776 IF( grossismy.LT.1. ) THEN 777 write(lunout,*) & 778 & 'conf_gcm: *** ATTENTION !! grossismy < 1 . *** ' 779 STOP 780 ELSE 781 alphay = 1. - 1./ grossismy 782 ENDIF 783 784 write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay 785 ! 786 ! alphax et alphay sont les anciennes formulat. des grossissements 787 ! 788 ! 789 790 !Config Key = fxyhypb 791 !Config Desc = Fonction hyperbolique 792 !Config Def = y 793 !Config Help = Fonction f(y) hyperbolique si = .true. 794 !Config sinon sinusoidale 795 fxyhypbb = .TRUE. 796 CALL getin('fxyhypb',fxyhypbb) 797 798 IF( .NOT.fxyhypb ) THEN 799 IF( fxyhypbb ) THEN 800 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 801 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 802 & 'F alors qu il est T sur run.def ***' 654 ENDIF 655 656 IF( grossismx.LT.1. ) THEN 657 write(lunout,*) & 658 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 659 STOP 660 ELSE 661 alphax = 1. - 1./ grossismx 662 ENDIF 663 664 IF( grossismy.LT.1. ) THEN 665 write(lunout,*) & 666 'conf_gcm: *** ATTENTION !! grossismy < 1 . *** ' 667 STOP 668 ELSE 669 alphay = 1. - 1./ grossismy 670 ENDIF 671 672 write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay 673 674 ! alphax et alphay sont les anciennes formulat. des grossissements 675 676 !Config Key = fxyhypb 677 !Config Desc = Fonction hyperbolique 678 !Config Def = y 679 !Config Help = Fonction f(y) hyperbolique si = .true. 680 !Config sinon sinusoidale 681 fxyhypbb = .TRUE. 682 CALL getin('fxyhypb',fxyhypbb) 683 684 IF( .NOT.fxyhypb ) THEN 685 IF( fxyhypbb ) THEN 686 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 687 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 688 'F alors qu il est T sur run.def ***' 689 STOP 690 ENDIF 691 ELSE 692 IF( .NOT.fxyhypbb ) THEN 693 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 694 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 695 'T alors qu il est F sur run.def **** ' 696 STOP 697 ENDIF 698 ENDIF 699 700 !Config Key = dzoomx 701 !Config Desc = extension en longitude 702 !Config Def = 0 703 !Config Help = extension en longitude de la zone du zoom 704 !Config ( fraction de la zone totale) 705 dzoomxx = 0.0 706 CALL getin('dzoomx',dzoomxx) 707 708 IF( fxyhypb ) THEN 709 IF( ABS(dzoomx - dzoomxx).GE. 0.001 ) THEN 710 write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', & 711 'run.def est differente de celle lue sur le fichier start ' 712 STOP 713 ENDIF 714 ENDIF 715 716 !Config Key = dzoomy 717 !Config Desc = extension en latitude 718 !Config Def = 0 719 !Config Help = extension en latitude de la zone du zoom 720 !Config ( fraction de la zone totale) 721 dzoomyy = 0.0 722 CALL getin('dzoomy',dzoomyy) 723 724 IF( fxyhypb ) THEN 725 IF( ABS(dzoomy - dzoomyy).GE. 0.001 ) THEN 726 write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', & 727 'run.def est differente de celle lue sur le fichier start ' 728 STOP 729 ENDIF 730 ENDIF 731 732 !Config Key = taux 733 !Config Desc = raideur du zoom en X 734 !Config Def = 3 735 !Config Help = raideur du zoom en X 736 tauxx = 3.0 737 CALL getin('taux',tauxx) 738 739 IF( fxyhypb ) THEN 740 IF( ABS(taux - tauxx).GE. 0.001 ) THEN 741 write(lunout,*)'conf_gcm: La valeur de taux passee par ', & 742 'run.def est differente de celle lue sur le fichier start ' 743 STOP 744 ENDIF 745 ENDIF 746 747 !Config Key = tauyy 748 !Config Desc = raideur du zoom en Y 749 !Config Def = 3 750 !Config Help = raideur du zoom en Y 751 tauyy = 3.0 752 CALL getin('tauy',tauyy) 753 754 IF( fxyhypb ) THEN 755 IF( ABS(tauy - tauyy).GE. 0.001 ) THEN 756 write(lunout,*)'conf_gcm: La valeur de tauy passee par ', & 757 'run.def est differente de celle lue sur le fichier start ' 758 STOP 759 ENDIF 760 ENDIF 761 762 !c 763 IF( .NOT.fxyhypb ) THEN 764 765 !Config Key = ysinus 766 !Config IF = !fxyhypb 767 !Config Desc = Fonction en Sinus 768 !Config Def = y 769 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 770 !Config sinon y = latit. 771 ysinuss = .TRUE. 772 CALL getin('ysinus',ysinuss) 773 774 IF( .NOT.ysinus ) THEN 775 IF( ysinuss ) THEN 776 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 777 write(lunout,*)' *** ysinus lu sur le fichier start est F', & 778 ' alors qu il est T sur run.def ***' 803 779 STOP 804 ENDIF805 ELSE806 IF( .NOT.fxyhypbb) THEN807 write(lunout,*)' ******** PBS DANS CONF_GCM ******** '808 write(lunout,*)' *** fxyhypb lu sur le fichier start est ',&809 & 'Talors qu il est F sur run.def **** '780 ENDIF 781 ELSE 782 IF( .NOT.ysinuss ) THEN 783 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 784 write(lunout,*)' *** ysinus lu sur le fichier start est T', & 785 ' alors qu il est F sur run.def **** ' 810 786 STOP 811 ENDIF 812 ENDIF 813 ! 814 !Config Key = dzoomx 815 !Config Desc = extension en longitude 816 !Config Def = 0 817 !Config Help = extension en longitude de la zone du zoom 818 !Config ( fraction de la zone totale) 819 dzoomxx = 0.0 820 CALL getin('dzoomx',dzoomxx) 821 822 IF( fxyhypb ) THEN 823 IF( ABS(dzoomx - dzoomxx).GE. 0.001 ) THEN 824 write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', & 825 & 'run.def est differente de celle lue sur le fichier start ' 787 ENDIF 788 ENDIF 789 ENDIF ! of IF( .NOT.fxyhypb ) 790 else 791 !Config Key = clon 792 !Config Desc = centre du zoom, longitude 793 !Config Def = 0 794 !Config Help = longitude en degres du centre 795 !Config du zoom 796 clon = 0. 797 CALL getin('clon',clon) 798 799 !Config Key = clat 800 !Config Desc = centre du zoom, latitude 801 !Config Def = 0 802 !Config Help = latitude en degres du centre du zoom 803 !Config 804 clat = 0. 805 CALL getin('clat',clat) 806 807 !Config Key = grossismx 808 !Config Desc = zoom en longitude 809 !Config Def = 1.0 810 !Config Help = facteur de grossissement du zoom, 811 !Config selon la longitude 812 grossismx = 1.0 813 CALL getin('grossismx',grossismx) 814 815 !Config Key = grossismy 816 !Config Desc = zoom en latitude 817 !Config Def = 1.0 818 !Config Help = facteur de grossissement du zoom, 819 !Config selon la latitude 820 grossismy = 1.0 821 CALL getin('grossismy',grossismy) 822 823 IF( grossismx.LT.1. ) THEN 824 write(lunout,*) & 825 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 826 826 STOP 827 ENDIF 828 ENDIF 829 830 !Config Key = dzoomy 831 !Config Desc = extension en latitude 832 !Config Def = 0 833 !Config Help = extension en latitude de la zone du zoom 834 !Config ( fraction de la zone totale) 835 dzoomyy = 0.0 836 CALL getin('dzoomy',dzoomyy) 837 838 IF( fxyhypb ) THEN 839 IF( ABS(dzoomy - dzoomyy).GE. 0.001 ) THEN 840 write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', & 841 & 'run.def est differente de celle lue sur le fichier start ' 827 ELSE 828 alphax = 1. - 1./ grossismx 829 ENDIF 830 831 IF( grossismy.LT.1. ) THEN 832 write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** ' 842 833 STOP 843 ENDIF 844 ENDIF 845 846 !Config Key = taux 847 !Config Desc = raideur du zoom en X 848 !Config Def = 3 849 !Config Help = raideur du zoom en X 850 tauxx = 3.0 851 CALL getin('taux',tauxx) 852 853 IF( fxyhypb ) THEN 854 IF( ABS(taux - tauxx).GE. 0.001 ) THEN 855 write(lunout,*)'conf_gcm: La valeur de taux passee par ', & 856 & 'run.def est differente de celle lue sur le fichier start ' 857 STOP 858 ENDIF 859 ENDIF 860 861 !Config Key = tauyy 862 !Config Desc = raideur du zoom en Y 863 !Config Def = 3 864 !Config Help = raideur du zoom en Y 865 tauyy = 3.0 866 CALL getin('tauy',tauyy) 867 868 IF( fxyhypb ) THEN 869 IF( ABS(tauy - tauyy).GE. 0.001 ) THEN 870 write(lunout,*)'conf_gcm: La valeur de tauy passee par ', & 871 & 'run.def est differente de celle lue sur le fichier start ' 872 STOP 873 ENDIF 874 ENDIF 875 876 cc 877 IF( .NOT.fxyhypb ) THEN 878 879 !Config Key = ysinus 880 !Config IF = !fxyhypb 881 !Config Desc = Fonction en Sinus 882 !Config Def = y 883 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 884 !Config sinon y = latit. 885 ysinuss = .TRUE. 886 CALL getin('ysinus',ysinuss) 887 888 IF( .NOT.ysinus ) THEN 889 IF( ysinuss ) THEN 890 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 891 write(lunout,*)' *** ysinus lu sur le fichier start est F', & 892 & ' alors qu il est T sur run.def ***' 893 STOP 894 ENDIF 895 ELSE 896 IF( .NOT.ysinuss ) THEN 897 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 898 write(lunout,*)' *** ysinus lu sur le fichier start est T', & 899 & ' alors qu il est F sur run.def **** ' 900 STOP 901 ENDIF 902 ENDIF 903 ENDIF ! of IF( .NOT.fxyhypb ) 904 905 endif ! etatinit 834 ELSE 835 alphay = 1. - 1./ grossismy 836 ENDIF 837 838 write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay 839 840 ! alphax et alphay sont les anciennes formulat. des grossissements 841 842 !Config Key = fxyhypb 843 !Config Desc = Fonction hyperbolique 844 !Config Def = y 845 !Config Help = Fonction f(y) hyperbolique si = .true. 846 !Config sinon sinusoidale 847 fxyhypb = .TRUE. 848 CALL getin('fxyhypb',fxyhypb) 849 850 !Config Key = dzoomx 851 !Config Desc = extension en longitude 852 !Config Def = 0 853 !Config Help = extension en longitude de la zone du zoom 854 !Config ( fraction de la zone totale) 855 dzoomx = 0.0 856 CALL getin('dzoomx',dzoomx) 857 858 !Config Key = dzoomy 859 !Config Desc = extension en latitude 860 !Config Def = 0 861 !Config Help = extension en latitude de la zone du zoom 862 !Config ( fraction de la zone totale) 863 dzoomy = 0.0 864 CALL getin('dzoomy',dzoomy) 865 866 !Config Key = taux 867 !Config Desc = raideur du zoom en X 868 !Config Def = 3 869 !Config Help = raideur du zoom en X 870 taux = 3.0 871 CALL getin('taux',taux) 872 873 !Config Key = tauy 874 !Config Desc = raideur du zoom en Y 875 !Config Def = 3 876 !Config Help = raideur du zoom en Y 877 tauy = 3.0 878 CALL getin('tauy',tauy) 879 880 !Config Key = ysinus 881 !Config IF = !fxyhypb 882 !Config Desc = Fonction en Sinus 883 !Config Def = y 884 !Config Help = Fonction f(y) avec y = Sin(latit.) si = .true. 885 !Config sinon y = latit. 886 ysinus = .TRUE. 887 CALL getin('ysinus',ysinus) 888 889 end IF test_etatinit 906 890 !---------------------------------------- 907 891 908 892 909 write(lunout,*)' #########################################' 910 write(lunout,*)' Configuration des parametres lus via run.def ' 911 write(lunout,*)' planet_type = ', planet_type 912 write(lunout,*)' calend = ', calend 913 write(lunout,*)' dayref = ', dayref 914 write(lunout,*)' anneeref = ', anneeref 915 write(lunout,*)' nday = ', nday 916 if (ndynstep.ne.-9999) write(lunout,*)' ndynstep = ', ndynstep 917 if (less1day) write(lunout,*)' fractday = ', fractday 918 write(lunout,*)' day_step = ', day_step 919 write(lunout,*)' iperiod = ', iperiod 920 write(lunout,*)' nsplit_phys = ', nsplit_phys 921 write(lunout,*)' iconser = ', iconser 922 write(lunout,*)' iecri = ', iecri 923 write(lunout,*)' periodav = ', periodav 924 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 925 write(lunout,*)' dissip_period = ', dissip_period 926 write(lunout,*)' lstardis = ', lstardis 927 write(lunout,*)' nitergdiv = ', nitergdiv 928 write(lunout,*)' nitergrot = ', nitergrot 929 write(lunout,*)' niterh = ', niterh 930 write(lunout,*)' tetagdiv = ', tetagdiv 931 write(lunout,*)' tetagrot = ', tetagrot 932 write(lunout,*)' tetatemp = ', tetatemp 933 write(lunout,*)' coefdis = ', coefdis 934 write(lunout,*)' purmats = ', purmats 935 write(lunout,*)' read_start = ', read_start 936 write(lunout,*)' iflag_phys = ', iflag_phys 937 write(lunout,*)' iphysiq = ', iphysiq 938 write(lunout,*)' iflag_trac = ', iflag_trac 939 write(lunout,*)' clon = ', clon 940 write(lunout,*)' clat = ', clat 941 write(lunout,*)' grossismx = ', grossismx 942 write(lunout,*)' grossismy = ', grossismy 943 write(lunout,*)' fxyhypb = ', fxyhypb 944 write(lunout,*)' dzoomx = ', dzoomx 945 write(lunout,*)' dzoomy = ', dzoomy 946 write(lunout,*)' taux = ', taux 947 write(lunout,*)' tauy = ', tauy 948 write(lunout,*)' offline = ', offline 949 write(lunout,*)' type_trac = ', type_trac 950 write(lunout,*)' config_inca = ', config_inca 951 write(lunout,*)' ok_dynzon = ', ok_dynzon 952 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 953 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 954 write(lunout,*)' ok_strato = ', ok_strato 955 write(lunout,*)' ok_gradsfile = ', ok_gradsfile 956 write(lunout,*)' ok_limit = ', ok_limit 957 write(lunout,*)' ok_etat0 = ', ok_etat0 958 if (planet_type=="titan") then 959 write(lunout,*)' moyzon_mu = ', moyzon_mu 960 write(lunout,*)' moyzon_ch = ', moyzon_ch 961 endif 962 963 RETURN 964 END 893 write(lunout,*)' #########################################' 894 write(lunout,*)' Configuration des parametres lus via run.def ' 895 write(lunout,*)' planet_type = ', planet_type 896 write(lunout,*)' calend = ', calend 897 write(lunout,*)' dayref = ', dayref 898 write(lunout,*)' anneeref = ', anneeref 899 write(lunout,*)' nday = ', nday 900 if (ndynstep.ne.-9999) write(lunout,*)' ndynstep = ', ndynstep 901 if (less1day) write(lunout,*)' fractday = ', fractday 902 write(lunout,*)' day_step = ', day_step 903 write(lunout,*)' iperiod = ', iperiod 904 write(lunout,*)' nsplit_phys = ', nsplit_phys 905 write(lunout,*)' iconser = ', iconser 906 write(lunout,*)' iecri = ', iecri 907 write(lunout,*)' periodav = ', periodav 908 write(lunout,*)' output_grads_dyn = ', output_grads_dyn 909 write(lunout,*)' dissip_period = ', dissip_period 910 write(lunout,*)' lstardis = ', lstardis 911 write(lunout,*)' nitergdiv = ', nitergdiv 912 write(lunout,*)' nitergrot = ', nitergrot 913 write(lunout,*)' niterh = ', niterh 914 write(lunout,*)' tetagdiv = ', tetagdiv 915 write(lunout,*)' tetagrot = ', tetagrot 916 write(lunout,*)' tetatemp = ', tetatemp 917 write(lunout,*)' coefdis = ', coefdis 918 write(lunout,*)' purmats = ', purmats 919 write(lunout,*)' read_start = ', read_start 920 write(lunout,*)' iflag_phys = ', iflag_phys 921 write(lunout,*)' iphysiq = ', iphysiq 922 write(lunout,*)' iflag_trac = ', iflag_trac 923 write(lunout,*)' clon = ', clon 924 write(lunout,*)' clat = ', clat 925 write(lunout,*)' grossismx = ', grossismx 926 write(lunout,*)' grossismy = ', grossismy 927 write(lunout,*)' fxyhypb = ', fxyhypb 928 write(lunout,*)' dzoomx = ', dzoomx 929 write(lunout,*)' dzoomy = ', dzoomy 930 write(lunout,*)' taux = ', taux 931 write(lunout,*)' tauy = ', tauy 932 write(lunout,*)' offline = ', offline 933 write(lunout,*)' type_trac = ', type_trac 934 write(lunout,*)' config_inca = ', config_inca 935 write(lunout,*)' ok_dynzon = ', ok_dynzon 936 write(lunout,*)' ok_dyn_ins = ', ok_dyn_ins 937 write(lunout,*)' ok_dyn_ave = ', ok_dyn_ave 938 write(lunout,*)' ok_strato = ', ok_strato 939 write(lunout,*)' ok_gradsfile = ', ok_gradsfile 940 write(lunout,*)' ok_limit = ', ok_limit 941 write(lunout,*)' ok_etat0 = ', ok_etat0 942 if (planet_type=="titan") then 943 write(lunout,*)' moyzon_mu = ', moyzon_mu 944 write(lunout,*)' moyzon_ch = ', moyzon_ch 945 endif 946 947 END SUBROUTINE conf_gcm -
trunk/LMDZ.COMMON/libf/dyn3d/gcm.F
r1302 r1391 180 180 !#ifdef CPP_IOIPSL 181 181 CALL conf_gcm( 99, .TRUE. ) 182 if (mod(iphysiq, iperiod) /= 0) call abort_gcm("conf_gcm", 183 s "iphysiq must be a multiple of iperiod", 1) 182 184 !#else 183 185 ! CALL defrun( 99, .TRUE. , clesphy0 ) -
trunk/LMDZ.COMMON/libf/dyn3d/getparam.F90
r1 r1391 11 11 12 12 INTERFACE getpar 13 MODULE PROCEDURE ini_getparam,fin_getparam,getparamr,getparami,getparaml13 MODULE PROCEDURE getparamr,getparami,getparaml 14 14 END INTERFACE 15 private getparamr,getparami,getparaml 15 16 16 17 INTEGER, PARAMETER :: out_eff=99 -
trunk/LMDZ.COMMON/libf/dyn3d/guide_mod.F90
r1302 r1391 71 71 INCLUDE "netcdf.inc" 72 72 73 ! For grossismx: 74 include "serre.h" 75 73 76 INTEGER :: error,ncidpl,rid,rcod 74 77 CHARACTER (len = 80) :: abort_message … … 87 90 CALL getpar('guide_teta',.false.,guide_teta,'guidage de T par Teta') 88 91 89 CALL getpar('guide_add',.false.,guide_add,'for �age constant?')92 CALL getpar('guide_add',.false.,guide_add,'for�age constant?') 90 93 CALL getpar('guide_zon',.false.,guide_zon,'guidage moy zonale') 94 if (guide_zon .and. abs(grossismx - 1.) > 0.01) & 95 call abort_gcm("guide_init", & 96 "zonal nudging requires grid regular in longitude", 1) 91 97 92 98 ! Constantes de rappel. Unite : fraction de jour … … 104 110 CALL getpar('guide_BL',.true.,guide_BL,'guidage dans C.Lim') 105 111 106 ! Sauvegarde du for �age112 ! Sauvegarde du for�age 107 113 CALL getpar('guide_sav',.false.,guide_sav,'sauvegarde guidage') 108 114 CALL getpar('iguide_sav',4,iguide_sav,'freq. sauvegarde guidage') 109 115 ! frequences f>0: fx/jour; f<0: tous les f jours; f=0: 1 seule fois. 110 116 IF (iguide_sav.GT.0) THEN 111 iguide_sav=day_step/iguide_sav 117 iguide_sav=day_step/iguide_sav 118 ELSE if (iguide_sav == 0) then 119 iguide_sav = huge(0) 112 120 ELSE 113 121 iguide_sav=day_step*iguide_sav 114 122 ENDIF 115 123 … … 125 133 ! Parametres pour lecture des fichiers 126 134 CALL getpar('iguide_read',4,iguide_read,'freq. lecture guidage') 127 CALL getpar('iguide_int',4,iguide_int,'freq. lecture guidage') 128 IF (iguide_int.GT.0) THEN 135 CALL getpar('iguide_int',4,iguide_int,'freq. interpolation vert') 136 IF (iguide_int.EQ.0) THEN 137 iguide_int=1 138 ELSEIF (iguide_int.GT.0) THEN 129 139 iguide_int=day_step/iguide_int 130 140 ELSE … … 1003 1013 ENDIF ! guide_reg 1004 1014 1015 if (.not. guide_add) alpha = 1. - exp(- alpha) 1016 1005 1017 END SUBROUTINE tau2alpha 1006 1018 … … 1578 1590 #endif 1579 1591 ! -------------------------------------------------------------------- 1580 ! Cr �ation des variables sauvegard�es1592 ! Cr�ation des variables sauvegard�es 1581 1593 ! -------------------------------------------------------------------- 1582 1594 ierr = NF_REDEF(nid) … … 1681 1693 !=========================================================================== 1682 1694 END MODULE guide_mod 1683 -
trunk/LMDZ.COMMON/libf/dyn3d/integrd.F
r907 r1391 109 109 write(lunout,*) " psm1(ij)=",psm1(ij)," dt=",dt, 110 110 & " dp(ij)=",dp(ij) 111 stop111 call abort_gcm("integrd", "", 1) 112 112 ENDIF 113 113 ENDDO
Note: See TracChangeset
for help on using the changeset viewer.