Changeset 1146 for LMDZ4/trunk/libf/phylmd/phytrac.F
- Timestamp:
- Apr 9, 2009, 12:11:35 PM (15 years ago)
- Location:
- LMDZ4/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ4/trunk
-
Property
svn:mergeinfo
set to
/LMDZ4/branches/LMDZ4-dev merged eligible
-
Property
svn:mergeinfo
set to
-
LMDZ4/trunk/libf/phylmd/phytrac.F
r1067 r1146 8 8 I debutphy, 9 9 I lafin, 10 I nqmax,11 10 I nlon, 12 11 I nlev, … … 67 66 USE ioipsl 68 67 USE dimphy 68 USE infotrac 69 69 USE mod_grid_phy_lmdz 70 70 USE mod_phys_lmdz_para … … 80 80 cAA Remarques en vrac: 81 81 cAA-------------------- 82 cAA 1/ le call phytrac se fait avec nqmax-2 donc nous avons bien83 cAA les vrais traceurs (nbtr) dans phytrac (pas la vapeur ni eau liquide)84 82 cAA 2/ Le choix du radon et du pb se fait juste avec un data 85 83 cAA (peu propre). Peut-etre pourrait-on prevoir dans l'avenir … … 93 91 #include "paramet.h" 94 92 #include "control.h" 95 #include "advtrac.h"96 93 #include "thermcell.h" 97 94 c====================================================================== … … 107 104 integer nlon ! nombre de points horizontaux 108 105 integer nlev ! nombre de couches verticales 109 integer nqmax ! nombre de traceurs auxquels on applique la physique110 106 integer nstep ! appel physique 111 107 integer julien !jour julien … … 140 136 141 137 REAL flxmass_w(klon,klev) 142 CHARACTER(len=8) :: solsym(n qmax)138 CHARACTER(len=8) :: solsym(nbtr) 143 139 integer la 144 140 REAL :: tau_inca(klon,klev,9,2) … … 209 205 cAA Pour l'instant seuls les cas du rn et du pb ont ete envisages. 210 206 211 REAL source(klon,n qmax) ! a voir lorsque le flux est prescrit207 REAL source(klon,nbtr) ! a voir lorsque le flux est prescrit 212 208 cAA 213 209 cAA Pour la source de radon et son reservoir de sol … … 216 212 REAL,save,allocatable :: trs(:,:) ! Conc. radon ds le sol 217 213 c$OMP THREADPRIVATE(trs) 218 cym SAVE trs219 214 REAL :: trs_tmp(klon_glo) 220 215 … … 223 218 c (1 = reservoir) ou (possible => 1 ) 224 219 c$OMP THREADPRIVATE(masktr) 225 cym SAVE masktr226 220 REAL,save,allocatable :: fshtr(:,:) ! Flux surfacique dans le reservoir de sol 227 221 c$OMP THREADPRIVATE(fshtr) 228 cym SAVE fshtr229 222 REAL,save,allocatable :: hsoltr(:) ! Epaisseur equivalente du reservoir de sol 230 223 c$OMP THREADPRIVATE(hsoltr) 231 cym SAVE hsoltr232 224 REAL,save,allocatable :: tautr(:) ! Constante de decroissance radioactive 233 225 c$OMP THREADPRIVATE(tautr) 234 cym SAVE tautr235 226 REAL,save,allocatable :: vdeptr(:) ! Vitesse de depot sec dans la couche Brownienne 236 227 c$OMP THREADPRIVATE(vdeptr) 237 cym SAVE vdeptr238 228 REAL,save,allocatable :: scavtr(:) ! Coefficient de lessivage 239 229 c$OMP THREADPRIVATE(scavtr) 240 cym SAVE scavtr241 230 cAA 242 231 CHARACTER*2 itn … … 270 259 logical,save,allocatable :: radio(:) ! radio(it)=true => decroisssance radioactive 271 260 c$OMP THREADPRIVATE(aerosol,clsol,radio) 272 cym save aerosol,clsol,radio273 261 C 274 262 c====================================================================== … … 360 348 print*,'dans phytrac ',pdtphys,ecrit_tra 361 349 362 if(nbtr.lt.nqmax) then363 c print*,'NQMAX=',nqmax364 c print*,'NBTR=',nbtr365 abort_message='See above'366 call abort_gcm(modname,abort_message,1)367 endif368 369 350 inirnpb=rnpb 370 351 PRINT*, 'La frequence de sortie traceurs est ', ecrit_tra … … 406 387 c Initialisation de la nature des traceurs 407 388 c 408 DO it = 1, n qmax389 DO it = 1, nbtr 409 390 aerosol(it) = .FALSE. ! Tous les traceurs sont des gaz par defaut 410 391 radio(it) = .FALSE. ! Par defaut pas de passage par radiornpb … … 533 514 c====================================================================== 534 515 c print*,'Avant convection' 535 do it=1,n qmax516 do it=1,nbtr 536 517 WRITE(itn,'(i2)') it 537 518 c call diagtracphy(tr_seri(:,:,it),paprs,'Avant conv'//itn) … … 541 522 542 523 c print*,'Pas de temps dans phytrac : ',pdtphys 543 DO it=1, nqmax 544 545 IF ( config_inca/='none' .AND. conv_flg(it) == 0 ) CYCLE 524 DO it=1, nbtr 525 526 IF ( config_inca/='none') THEN 527 IF ( conv_flg(it) == 0 ) CYCLE 528 END IF 546 529 547 530 if (iflag_con.lt.2) then … … 574 557 endif ! convection 575 558 c print*,'Apres convection' 576 c do it=1,n qmax559 c do it=1,nbtr 577 560 c WRITE(itn,'(i1)') it 578 561 c call diagtracphy(tr_seri(:,:,it),paprs,'Avant conv'//itn) … … 591 574 592 575 c print*,'masse dans ph ',zmasse 593 do it=1,n qmax576 do it=1,nbtr 594 577 do k=1,klev 595 578 do i=1,klon … … 604 587 c print*,'calcul de leffet des thermiques' 605 588 nsplit=10 606 DO it=1, n qmax589 DO it=1, nbtr 607 590 c WRITE(itn,'(i1)') it 608 591 c CALL minmaxqfi(tr_seri(1,1,it),1.e10,-1.e33,'conv it='//itn) … … 642 625 c====================================================================== 643 626 c print *,'Avant couchelimite' 644 c do it=1,n qmax627 c do it=1,nbtr 645 628 c WRITE(itn,'(i1)') it 646 629 c call diagtracphy(tr_seri(:,:,it),paprs,'Avant CL '//itn) … … 656 639 657 640 C maf modif pour tenir compte du cas rnpb + traceur 658 DO it=1, nqmax 659 660 IF ( config_inca/='none' .AND. pbl_flg(it) == 0 ) CYCLE 641 DO it=1, nbtr 642 643 IF ( config_inca/='none' ) THEN 644 IF( pbl_flg(it) == 0 ) CYCLE 645 END IF 661 646 662 647 c print *,'it',it,clsol(it) … … 686 671 C CALL minmaxqfi(tr_seri(1,1,it),0.,1.e33,'cltracrn it='//itn) 687 672 else ! couche limite avec flux prescrit 688 #ifndef INCA 689 673 674 IF (config_inca == 'none') THEN 690 675 Cmaf provisoire source / traceur a creer 691 DO i=1, klon692 source(i,it) = 0.0 ! pas de source, pour l'instant693 ENDDO694 C 695 #endif 676 DO i=1, klon 677 source(i,it) = 0.0 ! pas de source, pour l'instant 678 ENDDO 679 END IF 680 696 681 CALL cltrac(pdtphys, coefh,t_seri, 697 682 s tr_seri(1,1,it), source(:,it), … … 711 696 712 697 c print*,'Apres couchelimite' 713 c do it=1,n qmax698 c do it=1,nbtr 714 699 c WRITE(itn,'(i1)') it 715 700 c call diagtracphy(tr_seri(:,:,it),paprs,'Avant CL '//itn) … … 726 711 call radiornpb (tr_seri,pdtphys,tautr,d_tr_dec) 727 712 C 728 DO it=1,n qmax713 DO it=1,nbtr 729 714 if(radio(it)) then 730 715 DO k = 1, nlev … … 755 740 c tendance des aerosols nuclees et impactes 756 741 c 757 DO it = 1, n qmax742 DO it = 1, nbtr 758 743 IF (aerosol(it)) THEN 759 744 DO k = 1, nlev … … 774 759 c call dump2d(iim,jjm-1,frac_nucl(2:klon-1,10),'FRACNUCL') 775 760 c call dump2d(iim,jjm-1,tr_seri(2:klon-1,10,3),'TRACEUR3') 776 DO it = 1, n qmax761 DO it = 1, nbtr 777 762 c print*,'IT=',it,aerosol(it) 778 763 IF (aerosol(it)) THEN … … 790 775 c Flux lessivage total 791 776 c 792 DO it = 1, n qmax777 DO it = 1, nbtr 793 778 DO k = 1, nlev 794 779 DO i = 1, klon
Note: See TracChangeset
for help on using the changeset viewer.