Ignore:
Timestamp:
Apr 9, 2009, 12:11:35 PM (15 years ago)
Author:
Laurent Fairhead
Message:

Réintegration dans le tronc des modifications issues de la branche LMDZ-dev
comprises entre la révision 1074 et 1145
Validation: une simulation de 1 jour en séquentiel sur PC donne les mêmes
résultats entre la trunk et la dev
LF

Location:
LMDZ4/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/trunk

  • LMDZ4/trunk/libf/phylmd/phytrac.F

    r1067 r1146  
    88     I                    debutphy,
    99     I                    lafin,
    10      I                    nqmax,
    1110     I                    nlon,
    1211     I                    nlev,
     
    6766      USE ioipsl
    6867      USE dimphy
     68      USE infotrac
    6969      USE mod_grid_phy_lmdz
    7070      USE mod_phys_lmdz_para
     
    8080cAA Remarques en vrac:
    8181cAA--------------------
    82 cAA 1/ le call phytrac se fait avec nqmax-2 donc nous avons bien
    83 cAA les vrais traceurs (nbtr) dans phytrac (pas la vapeur ni eau liquide)
    8482cAA 2/ Le choix du radon et du pb se fait juste avec un data
    8583cAA    (peu propre). Peut-etre pourrait-on prevoir dans l'avenir
     
    9391#include "paramet.h"
    9492#include "control.h"
    95 #include "advtrac.h"
    9693#include "thermcell.h"
    9794c======================================================================
     
    107104      integer nlon  ! nombre de points horizontaux
    108105      integer nlev  ! nombre de couches verticales
    109       integer nqmax ! nombre de traceurs auxquels on applique la physique
    110106      integer nstep  ! appel physique
    111107      integer julien !jour julien
     
    140136
    141137      REAL flxmass_w(klon,klev)
    142       CHARACTER(len=8) :: solsym(nqmax)
     138      CHARACTER(len=8) :: solsym(nbtr)
    143139      integer la
    144140      REAL              ::    tau_inca(klon,klev,9,2)
     
    209205cAA Pour l'instant seuls les cas du rn et du pb ont ete envisages.
    210206
    211       REAL source(klon,nqmax)       ! a voir lorsque le flux est prescrit
     207      REAL source(klon,nbtr)       ! a voir lorsque le flux est prescrit
    212208cAA
    213209cAA Pour la source de radon et son reservoir de sol
     
    216212      REAL,save,allocatable :: trs(:,:)    ! Conc. radon ds le sol
    217213c$OMP THREADPRIVATE(trs)
    218 cym      SAVE trs
    219214      REAL :: trs_tmp(klon_glo)
    220215     
     
    223218c                           (1 = reservoir) ou (possible => 1 )
    224219c$OMP THREADPRIVATE(masktr)
    225 cym      SAVE masktr
    226220      REAL,save,allocatable :: fshtr(:,:)  ! Flux surfacique dans le reservoir de sol
    227221c$OMP THREADPRIVATE(fshtr)
    228 cym      SAVE fshtr
    229222      REAL,save,allocatable :: hsoltr(:)      ! Epaisseur equivalente du reservoir de sol
    230223c$OMP THREADPRIVATE(hsoltr)
    231 cym      SAVE hsoltr
    232224      REAL,save,allocatable :: tautr(:)       ! Constante de decroissance radioactive
    233225c$OMP THREADPRIVATE(tautr)
    234 cym      SAVE tautr
    235226      REAL,save,allocatable :: vdeptr(:)      ! Vitesse de depot sec dans la couche Brownienne
    236227c$OMP THREADPRIVATE(vdeptr)
    237 cym      SAVE vdeptr
    238228      REAL,save,allocatable :: scavtr(:)      ! Coefficient de lessivage
    239229c$OMP THREADPRIVATE(scavtr)
    240 cym      SAVE scavtr
    241230cAA
    242231      CHARACTER*2 itn
     
    270259      logical,save,allocatable :: radio(:)    ! radio(it)=true => decroisssance radioactive
    271260c$OMP THREADPRIVATE(aerosol,clsol,radio) 
    272 cym      save aerosol,clsol,radio
    273261C
    274262c======================================================================
     
    360348          print*,'dans phytrac ',pdtphys,ecrit_tra
    361349
    362          if(nbtr.lt.nqmax) then
    363 c           print*,'NQMAX=',nqmax
    364 c           print*,'NBTR=',nbtr
    365            abort_message='See above'
    366            call abort_gcm(modname,abort_message,1)
    367          endif
    368 
    369350         inirnpb=rnpb
    370351         PRINT*, 'La frequence de sortie traceurs est  ', ecrit_tra
     
    406387c Initialisation de la nature des traceurs
    407388c
    408          DO it = 1, nqmax
     389         DO it = 1, nbtr
    409390            aerosol(it) = .FALSE.  ! Tous les traceurs sont des gaz par defaut
    410391            radio(it) = .FALSE.    ! Par defaut pas de passage par radiornpb
     
    533514c======================================================================
    534515c     print*,'Avant convection'
    535        do it=1,nqmax
     516       do it=1,nbtr
    536517          WRITE(itn,'(i2)') it
    537518c        call diagtracphy(tr_seri(:,:,it),paprs,'Avant conv'//itn)
     
    541522
    542523c      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
    546529
    547530      if (iflag_con.lt.2) then
     
    574557      endif ! convection
    575558c        print*,'Apres convection'
    576 c      do it=1,nqmax
     559c      do it=1,nbtr
    577560c         WRITE(itn,'(i1)') it
    578561c        call diagtracphy(tr_seri(:,:,it),paprs,'Avant conv'//itn)
     
    591574
    592575c      print*,'masse dans ph ',zmasse
    593       do it=1,nqmax
     576      do it=1,nbtr
    594577         do k=1,klev
    595578            do i=1,klon
     
    604587c        print*,'calcul de leffet des thermiques'
    605588        nsplit=10
    606         DO it=1, nqmax
     589        DO it=1, nbtr
    607590c        WRITE(itn,'(i1)') it
    608591c        CALL minmaxqfi(tr_seri(1,1,it),1.e10,-1.e33,'conv it='//itn)
     
    642625c======================================================================
    643626c       print *,'Avant couchelimite'
    644 c      do it=1,nqmax
     627c      do it=1,nbtr
    645628c         WRITE(itn,'(i1)') it
    646629c        call diagtracphy(tr_seri(:,:,it),paprs,'Avant CL  '//itn)
     
    656639
    657640C 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
    661646
    662647c     print *,'it',it,clsol(it)
     
    686671C         CALL minmaxqfi(tr_seri(1,1,it),0.,1.e33,'cltracrn it='//itn)
    687672      else ! couche limite avec flux prescrit
    688 #ifndef INCA
    689 
     673
     674         IF (config_inca == 'none') THEN
    690675Cmaf provisoire source / traceur a creer
    691         DO i=1, klon
    692           source(i,it) = 0.0 ! pas de source, pour l'instant
    693         ENDDO
    694 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
    696681          CALL cltrac(pdtphys, coefh,t_seri,
    697682     s               tr_seri(1,1,it), source(:,it),
     
    711696
    712697c      print*,'Apres couchelimite'
    713 c      do it=1,nqmax
     698c      do it=1,nbtr
    714699c         WRITE(itn,'(i1)') it
    715700c        call diagtracphy(tr_seri(:,:,it),paprs,'Avant CL  '//itn)
     
    726711        call radiornpb (tr_seri,pdtphys,tautr,d_tr_dec)
    727712C
    728         DO it=1,nqmax
     713        DO it=1,nbtr
    729714            if(radio(it)) then
    730715            DO k = 1, nlev
     
    755740c tendance des aerosols nuclees et impactes
    756741c
    757        DO it = 1, nqmax
     742       DO it = 1, nbtr
    758743         IF (aerosol(it)) THEN
    759744           DO k = 1, nlev
     
    774759c      call dump2d(iim,jjm-1,frac_nucl(2:klon-1,10),'FRACNUCL')
    775760c      call dump2d(iim,jjm-1,tr_seri(2:klon-1,10,3),'TRACEUR3')
    776        DO it = 1, nqmax
     761       DO it = 1, nbtr
    777762c         print*,'IT=',it,aerosol(it)
    778763         IF (aerosol(it)) THEN
     
    790775c Flux lessivage total
    791776c
    792       DO it = 1, nqmax
     777      DO it = 1, nbtr
    793778           DO k = 1, nlev
    794779            DO i = 1, klon
Note: See TracChangeset for help on using the changeset viewer.