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