Changeset 2056 for LMDZ5/branches/testing/libf/dyn3d
- Timestamp:
- Jun 11, 2014, 3:46:46 PM (11 years ago)
- Location:
- LMDZ5/branches/testing
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ5/branches/testing
- Property svn:mergeinfo changed
/LMDZ5/trunk merged: 1998,2000-2023,2025-2029,2032,2034,2036-2049,2051-2055
- Property svn:mergeinfo changed
-
LMDZ5/branches/testing/libf/dyn3d/calfis.F
r1999 r2056 163 163 REAL unskap, pksurcp 164 164 c 165 cIM diagnostique PVteta, Amip2166 INTEGER,PARAMETER :: ntetaSTD=3167 REAL,SAVE :: rtetaSTD(ntetaSTD)=(/350.,380.,405./) ! Earth-specific, beware !!168 REAL PVteta(ngridmx,ntetaSTD)169 c170 165 REAL flxwfi(ngridmx,llm) ! Flux de masse verticale sur la grille physiq 171 166 c … … 431 426 432 427 ENDDO 433 c434 if (planet_type=="earth") then435 #ifdef CPP_PHYS436 ! PVtheta calls tetalevel, which is in the physics437 cIM calcul PV a teta=350, 380, 405K438 CALL PVtheta(ngridmx,llm,pucov,pvcov,pteta,439 $ ztfi,zplay,zplev,440 $ ntetaSTD,rtetaSTD,PVteta)441 #endif442 endif443 428 c 444 429 c On change de grille, dynamique vers physiq, pour le flux de masse verticale … … 491 476 . zdqfi, 492 477 . zdpsrf, 493 cIM diagnostique PVteta, Amip2 494 . pducov, 495 . PVteta) 478 . pducov) 496 479 497 480 else if ( planet_type=="generic" ) then -
LMDZ5/branches/testing/libf/dyn3d/conf_gcm.F
r1999 r2056 2 2 ! $Id$ 3 3 ! 4 c 5 c 4 ! 5 ! 6 6 SUBROUTINE conf_gcm( tapedef, etatinit, clesphy0 ) 7 c 7 ! 8 8 USE control_mod 9 9 #ifdef CPP_IOIPSL … … 17 17 18 18 IMPLICIT NONE 19 c-----------------------------------------------------------------------20 cAuteurs : L. Fairhead , P. Le Van .21 c 22 cArguments :23 c 24 ctapedef :25 cetatinit : = TRUE , on ne compare pas les valeurs des para-26 c-metres du zoom avec celles lues sur le fichier start .27 cclesphy0 : sortie .28 c 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 29 LOGICAL etatinit 30 30 INTEGER tapedef … … 33 33 PARAMETER( longcles = 20 ) 34 34 REAL clesphy0( longcles ) 35 c 36 cDeclarations :37 c--------------35 ! 36 ! Declarations : 37 ! -------------- 38 38 #include "dimensions.h" 39 39 #include "paramet.h" … … 47 47 ! #include "clesphys.h" 48 48 #include "iniprint.h" 49 c 50 c 51 clocal:52 c------49 ! 50 ! 51 ! local: 52 ! ------ 53 53 54 54 CHARACTER ch1*72,ch2*72,ch3*72,ch4*12 … … 58 58 INTEGER i 59 59 LOGICAL use_filtre_fft 60 c 61 c-------------------------------------------------------------------62 c 63 c......... Version du 29/04/97 ..........64 c 65 cNouveaux parametres nitergdiv,nitergrot,niterh,tetagdiv,tetagrot,66 ctetatemp ajoutes pour la dissipation .67 c 68 cAutre parametre ajoute en fin de liste de tapedef : ** fxyhypb **69 c 70 cSi fxyhypb = .TRUE. , choix de la fonction a derivee tangente hyperb.71 cSinon , choix de fxynew , a derivee sinusoidale ..72 c 73 c...... etatinit = . TRUE. si defrun est appele dans ETAT0_LMD ou74 cLIMIT_LMD pour l'initialisation de start.dat (dic) et75 cde limit.dat ( dic) ...........76 cSinon etatinit = . FALSE .77 c 78 cDonc etatinit = .F. si on veut comparer les valeurs de grossismx ,79 cgrossismy,clon,clat, fxyhypb lues sur le fichier start avec80 ccelles passees par run.def , au debut du gcm, apres l'appel a81 clectba .82 cCes parmetres definissant entre autres la grille et doivent etre83 cpareils et coherents , sinon il y aura divergence du gcm .84 c 85 c-----------------------------------------------------------------------86 cinitialisations:87 c----------------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 88 89 89 !Config Key = lunout … … 95 95 CALL getin('lunout', lunout) 96 96 IF (lunout /= 5 .and. lunout /= 6) THEN 97 OPEN(UNIT=lunout,FILE='lmdz.out',ACTION='write', 97 OPEN(UNIT=lunout,FILE='lmdz.out',ACTION='write', & 98 98 & STATUS='unknown',FORM='formatted') 99 99 ENDIF … … 107 107 CALL getin('prt_level',prt_level) 108 108 109 c-----------------------------------------------------------------------110 cParametres de controle du run:111 c-----------------------------------------------------------------------109 !----------------------------------------------------------------------- 110 ! Parametres de controle du run: 111 !----------------------------------------------------------------------- 112 112 !Config Key = planet_type 113 113 !Config Desc = planet type ("earth", "mars", "venus", ...) … … 232 232 CALL getin('dissip_period',dissip_period) 233 233 234 ccc .... P. Le Van , modif le 29/04/97 .pour la dissipation ...235 ccc234 !cc .... P. Le Van , modif le 29/04/97 .pour la dissipation ... 235 !cc 236 236 237 237 !Config Key = lstardis … … 348 348 CALL getin('ok_guide',ok_guide) 349 349 350 c...............................................................350 ! ............................................................... 351 351 352 352 !Config Key = read_start … … 390 390 ENDDO 391 391 392 ccc .... P. Le Van , ajout le 7/03/95 .pour le zoom ...393 c......... ( modif le 17/04/96 ) .........394 c 392 !cc .... P. Le Van , ajout le 7/03/95 .pour le zoom ... 393 ! ......... ( modif le 17/04/96 ) ......... 394 ! 395 395 IF( etatinit ) GO TO 100 396 396 … … 411 411 CALL getin('clat',clatt) 412 412 413 c 414 c 413 ! 414 ! 415 415 IF( ABS(clat - clatt).GE. 0.001 ) THEN 416 write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', 416 write(lunout,*)'conf_gcm: La valeur de clat passee par run.def', & 417 417 & ' est differente de celle lue sur le fichier start ' 418 418 STOP … … 429 429 430 430 IF( ABS(grossismx - grossismxx).GE. 0.001 ) THEN 431 write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', 431 write(lunout,*)'conf_gcm: La valeur de grossismx passee par ', & 432 432 & 'run.def est differente de celle lue sur le fichier start ' 433 433 STOP … … 443 443 444 444 IF( ABS(grossismy - grossismyy).GE. 0.001 ) THEN 445 write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', 445 write(lunout,*)'conf_gcm: La valeur de grossismy passee par ', & 446 446 & 'run.def est differente de celle lue sur le fichier start ' 447 447 STOP … … 449 449 450 450 IF( grossismx.LT.1. ) THEN 451 write(lunout,*) 451 write(lunout,*) & 452 452 & 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 453 453 STOP … … 458 458 459 459 IF( grossismy.LT.1. ) THEN 460 write(lunout,*) 460 write(lunout,*) & 461 461 & 'conf_gcm: *** ATTENTION !! grossismy < 1 . *** ' 462 462 STOP … … 466 466 467 467 write(lunout,*)'conf_gcm: alphax alphay',alphax,alphay 468 c 469 calphax et alphay sont les anciennes formulat. des grossissements470 c 471 c 468 ! 469 ! alphax et alphay sont les anciennes formulat. des grossissements 470 ! 471 ! 472 472 473 473 !Config Key = fxyhypb … … 482 482 IF( fxyhypbb ) THEN 483 483 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 484 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', 485 *'F alors qu il est T sur run.def ***'484 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 485 & 'F alors qu il est T sur run.def ***' 486 486 STOP 487 487 ENDIF … … 489 489 IF( .NOT.fxyhypbb ) THEN 490 490 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 491 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', 492 *'T alors qu il est F sur run.def **** '491 write(lunout,*)' *** fxyhypb lu sur le fichier start est ', & 492 & 'T alors qu il est F sur run.def **** ' 493 493 STOP 494 494 ENDIF 495 495 ENDIF 496 c 496 ! 497 497 !Config Key = dzoomx 498 498 !Config Desc = extension en longitude … … 505 505 IF( fxyhypb ) THEN 506 506 IF( ABS(dzoomx - dzoomxx).GE. 0.001 ) THEN 507 write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', 508 *'run.def est differente de celle lue sur le fichier start '507 write(lunout,*)'conf_gcm: La valeur de dzoomx passee par ', & 508 & 'run.def est differente de celle lue sur le fichier start ' 509 509 STOP 510 510 ENDIF … … 521 521 IF( fxyhypb ) THEN 522 522 IF( ABS(dzoomy - dzoomyy).GE. 0.001 ) THEN 523 write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', 524 *'run.def est differente de celle lue sur le fichier start '523 write(lunout,*)'conf_gcm: La valeur de dzoomy passee par ', & 524 & 'run.def est differente de celle lue sur le fichier start ' 525 525 STOP 526 526 ENDIF … … 536 536 IF( fxyhypb ) THEN 537 537 IF( ABS(taux - tauxx).GE. 0.001 ) THEN 538 write(lunout,*)'conf_gcm: La valeur de taux passee par ', 539 *'run.def est differente de celle lue sur le fichier start '538 write(lunout,*)'conf_gcm: La valeur de taux passee par ', & 539 & 'run.def est differente de celle lue sur le fichier start ' 540 540 STOP 541 541 ENDIF … … 551 551 IF( fxyhypb ) THEN 552 552 IF( ABS(tauy - tauyy).GE. 0.001 ) THEN 553 write(lunout,*)'conf_gcm: La valeur de tauy passee par ', 554 *'run.def est differente de celle lue sur le fichier start '553 write(lunout,*)'conf_gcm: La valeur de tauy passee par ', & 554 & 'run.def est differente de celle lue sur le fichier start ' 555 555 STOP 556 556 ENDIF 557 557 ENDIF 558 558 559 cc559 !c 560 560 IF( .NOT.fxyhypb ) THEN 561 561 … … 572 572 IF( ysinuss ) THEN 573 573 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 574 write(lunout,*)' *** ysinus lu sur le fichier start est F', 575 *' alors qu il est T sur run.def ***'574 write(lunout,*)' *** ysinus lu sur le fichier start est F', & 575 & ' alors qu il est T sur run.def ***' 576 576 STOP 577 577 ENDIF … … 579 579 IF( .NOT.ysinuss ) THEN 580 580 write(lunout,*)' ******** PBS DANS CONF_GCM ******** ' 581 write(lunout,*)' *** ysinus lu sur le fichier start est T', 582 *' alors qu il est F sur run.def **** '581 write(lunout,*)' *** ysinus lu sur le fichier start est T', & 582 & ' alors qu il est F sur run.def **** ' 583 583 STOP 584 584 ENDIF 585 585 ENDIF 586 586 ENDIF ! of IF( .NOT.fxyhypb ) 587 c 587 ! 588 588 !Config Key = offline 589 589 !Config Desc = Nouvelle eau liquide … … 682 682 683 683 RETURN 684 c...............................................685 c 684 ! ............................................... 685 ! 686 686 100 CONTINUE 687 687 !Config Key = clon … … 718 718 719 719 IF( grossismx.LT.1. ) THEN 720 write(lunout,*) 721 & 'conf_gcm: *** ATTENTION !! grossismx < 1 . *** ' 720 write(lunout,*)'conf_gcm: ***ATTENTION !! grossismx < 1 . *** ' 722 721 STOP 723 722 ELSE … … 727 726 728 727 IF( grossismy.LT.1. ) THEN 729 write(lunout,*) 730 & 'conf_gcm: *** ATTENTION !! grossismy < 1 . *** ' 728 write(lunout,*) 'conf_gcm: ***ATTENTION !! grossismy < 1 . *** ' 731 729 STOP 732 730 ELSE … … 735 733 736 734 write(lunout,*)'conf_gcm: alphax alphay ',alphax,alphay 737 c 738 calphax et alphay sont les anciennes formulat. des grossissements739 c 740 c 735 ! 736 ! alphax et alphay sont les anciennes formulat. des grossissements 737 ! 738 ! 741 739 742 740 !Config Key = fxyhypb … … 786 784 ysinus = .TRUE. 787 785 CALL getin('ysinus',ysinus) 788 c 786 ! 789 787 !Config Key = offline 790 788 !Config Desc = Nouvelle eau liquide … … 864 862 vert_prof_dissip = merge(1, 0, ok_strato .and. llm==39) 865 863 CALL getin('vert_prof_dissip', vert_prof_dissip) 866 call assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1, 867 $"bad value for vert_prof_dissip")864 call assert(vert_prof_dissip == 0 .or. vert_prof_dissip == 1, & 865 & "bad value for vert_prof_dissip") 868 866 869 867 !Config Key = ok_gradsfile … … 892 890 893 891 write(lunout,*)' #########################################' 894 write(lunout,*)' Configuration des parametres de cel0' 892 write(lunout,*)' Configuration des parametres de cel0' & 895 893 & //'_limit: ' 896 894 write(lunout,*)' planet_type = ', planet_type … … 937 935 write(lunout,*)' ok_limit = ', ok_limit 938 936 write(lunout,*)' ok_etat0 = ', ok_etat0 939 c 937 ! 940 938 RETURN 941 939 END -
LMDZ5/branches/testing/libf/dyn3d/gcm.F
r1999 r2056 105 105 REAL ps(ip1jmp1) ! pression au sol 106 106 REAL p (ip1jmp1,llmp1 ) ! pression aux interfac.des couches 107 REAL pks(ip1jmp1) ! exner au sol108 REAL pk(ip1jmp1,llm) ! exner au milieu des couches109 REAL pkf(ip1jmp1,llm) ! exner filt.au milieu des couches110 107 REAL masse(ip1jmp1,llm) ! masse d'air 111 108 REAL phis(ip1jmp1) ! geopotentiel au sol … … 131 128 data call_iniphys/.true./ 132 129 133 REAL alpha(ip1jmp1,llm),beta(ip1jmp1,llm)134 130 c+jld variables test conservation energie 135 131 c REAL ecin(ip1jmp1,llm),ecin0(ip1jmp1,llm) … … 466 462 467 463 468 day_end = day_ini + nday 464 if (nday>=0) then 465 day_end = day_ini + nday 466 else 467 day_end = day_ini - nday/day_step 468 endif 469 469 WRITE(lunout,300)day_ini,day_end 470 470 300 FORMAT('1'/,15x,'run du jour',i7,2x,'au jour',i7//) -
LMDZ5/branches/testing/libf/dyn3d/guide_mod.F90
r2024 r2056 593 593 SUBROUTINE guide_interp(psi,teta) 594 594 595 use exner_hyb_m, only: exner_hyb 596 use exner_milieu_m, only: exner_milieu 595 597 IMPLICIT NONE 596 598 … … 614 616 REAL, DIMENSION (iip1,jjm,llm) :: pbary 615 617 ! Variables pour fonction Exner (P milieu couche) 616 REAL, DIMENSION (iip1,jjp1,llm) :: pk, pkf 617 REAL, DIMENSION (iip1,jjp1,llm) :: alpha, beta 618 REAL, DIMENSION (iip1,jjp1,llm) :: pk 618 619 REAL, DIMENSION (iip1,jjp1) :: pks 619 620 REAL :: prefkap,unskap … … 680 681 CALL pression( ip1jmp1, ap, bp, psi, p ) 681 682 if (pressure_exner) then 682 CALL exner_hyb(ip1jmp1,psi,p, alpha,beta,pks,pk,pkf)683 CALL exner_hyb(ip1jmp1,psi,p,pks,pk) 683 684 else 684 CALL exner_milieu(ip1jmp1,psi,p, beta,pks,pk,pkf)685 CALL exner_milieu(ip1jmp1,psi,p,pks,pk) 685 686 endif 686 687 ! .... Calcul de pls , pression au milieu des couches ,en Pascals -
LMDZ5/branches/testing/libf/dyn3d/iniacademic.F90
r1910 r2056 14 14 #endif 15 15 USE Write_Field 16 use exner_hyb_m, only: exner_hyb 17 use exner_milieu_m, only: exner_milieu 16 18 17 19 ! Author: Frederic Hourdin original: 15/01/93 … … 54 56 REAL pks(ip1jmp1) ! exner au sol 55 57 REAL pk(ip1jmp1,llm) ! exner au milieu des couches 56 REAL pkf(ip1jmp1,llm) ! exner filt.au milieu des couches57 58 REAL phi(ip1jmp1,llm) ! geopotentiel 58 59 REAL ddsin,zsig,tetapv,w_pv ! variables auxiliaires … … 70 71 integer idum 71 72 72 REAL alpha(ip1jmp1,llm),beta(ip1jmp1,llm),zdtvr73 REAL zdtvr 73 74 74 75 character(len=*),parameter :: modname="iniacademic" … … 223 224 CALL pression ( ip1jmp1, ap, bp, ps, p ) 224 225 if (pressure_exner) then 225 CALL exner_hyb( ip1jmp1, ps, p, alpha,beta, pks, pk, pkf)226 else 227 call exner_milieu(ip1jmp1,ps,p, beta,pks,pk,pkf)226 CALL exner_hyb( ip1jmp1, ps, p, pks, pk) 227 else 228 call exner_milieu(ip1jmp1,ps,p,pks,pk) 228 229 endif 229 230 CALL massdair(p,masse) -
LMDZ5/branches/testing/libf/dyn3d/leapfrog.F
r1999 r2056 19 19 & iecri, ip_ebil_dyn, ok_dynzon, ok_dyn_ins, 20 20 & periodav, ok_dyn_ave, output_grads_dyn 21 use exner_hyb_m, only: exner_hyb 22 use exner_milieu_m, only: exner_milieu 23 21 24 IMPLICIT NONE 22 25 … … 158 161 character*10 string10 159 162 160 REAL alpha(ip1jmp1,llm),beta(ip1jmp1,llm)161 163 REAL :: flxw(ip1jmp1,llm) ! flux de masse verticale 162 164 … … 196 198 197 199 198 itaufin = nday*day_step 200 if (nday>=0) then 201 itaufin = nday*day_step 202 else 203 itaufin = -nday 204 endif 199 205 itaufinp1 = itaufin +1 200 206 itau = 0 … … 217 223 CALL pression ( ip1jmp1, ap, bp, ps, p ) 218 224 if (pressure_exner) then 219 CALL exner_hyb( ip1jmp1, ps, p, alpha,beta,pks, pk, pkf )225 CALL exner_hyb( ip1jmp1, ps, p, pks, pk, pkf ) 220 226 else 221 CALL exner_milieu( ip1jmp1, ps, p, beta,pks, pk, pkf )227 CALL exner_milieu( ip1jmp1, ps, p, pks, pk, pkf ) 222 228 endif 223 229 … … 373 379 CALL pression ( ip1jmp1, ap, bp, ps, p ) 374 380 if (pressure_exner) then 375 CALL exner_hyb( ip1jmp1, ps, p, alpha,beta,pks, pk, pkf )381 CALL exner_hyb( ip1jmp1, ps, p,pks, pk, pkf ) 376 382 else 377 CALL exner_milieu( ip1jmp1, ps, p, beta,pks, pk, pkf )383 CALL exner_milieu( ip1jmp1, ps, p, pks, pk, pkf ) 378 384 endif 385 386 ! Appel a geopot ajoute le 2014/05/08 pour garantir la convergence numerique 387 ! avec dyn3dmem 388 CALL geopot ( ip1jmp1, teta , pk , pks, phis , phi ) 379 389 380 390 ! rdaym_ini = itau * dtvr / daysec … … 448 458 CALL massdair(p,masse) 449 459 if (pressure_exner) then 450 CALL exner_hyb(ip1jmp1,ps,p, alpha,beta,pks,pk,pkf)460 CALL exner_hyb(ip1jmp1,ps,p,pks,pk,pkf) 451 461 else 452 CALL exner_milieu(ip1jmp1,ps,p, beta,pks,pk,pkf)462 CALL exner_milieu(ip1jmp1,ps,p,pks,pk,pkf) 453 463 endif 454 464 … … 506 516 CALL pression ( ip1jmp1, ap, bp, ps, p ) 507 517 if (pressure_exner) then 508 CALL exner_hyb( ip1jmp1, ps, p, alpha,beta,pks, pk, pkf )518 CALL exner_hyb( ip1jmp1, ps, p, pks, pk, pkf ) 509 519 else 510 CALL exner_milieu( ip1jmp1, ps, p, beta,pks, pk, pkf )520 CALL exner_milieu( ip1jmp1, ps, p, pks, pk, pkf ) 511 521 endif 512 522 CALL massdair(p,masse)
Note: See TracChangeset
for help on using the changeset viewer.