Changeset 1212 for LMDZ4/branches


Ignore:
Timestamp:
Jul 21, 2009, 9:59:02 AM (15 years ago)
Author:
jghattas
Message:
  • Correction dans la recherche du traceur Berelium
  • Correction des messages d'erreurs
  • Enleve allocate pas necessaire
  • Ajoute argument d'entree pour traclmdz bientot necessaire (pour parametrization Cariolle)
Location:
LMDZ4/branches/LMDZ4-dev/libf/phylmd
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4-dev/libf/phylmd/phytrac.F90

    r1192 r1212  
    235235     
    236236     CALL traclmdz(&
    237           pdtphys,  t_seri,                         &
     237          nstep,    pdtphys,      t_seri,           &
    238238          paprs,    pplay,        cdragh,  coefh,   &
    239239          yu1,      yv1,          ftsol,   pctsrf,  &
  • LMDZ4/branches/LMDZ4-dev/libf/phylmd/traclmdz_mod.F90

    r1209 r1212  
    5757    ! Allocate restart variables trs
    5858    ALLOCATE( trs(klon,nbtr), stat=ierr)
    59     IF (ierr /= 0) CALL abort_gcm('traclmdz_start', 'pb in allocation 1',1)
     59    IF (ierr /= 0) CALL abort_gcm('traclmdz_from_restart', 'pb in allocation 1',1)
    6060   
    6161    ! Initialize trs with values read from restart file
     
    9090
    9191    ALLOCATE( scavtr(nbtr), stat=ierr)
    92     IF (ierr /= 0) CALL abort_gcm('phytrac', 'pb in allocation 9',1)
     92    IF (ierr /= 0) CALL abort_gcm('traclmdz_init', 'pb in allocation 9',1)
    9393    scavtr(:)=1.
    9494   
    9595    ALLOCATE( radio(nbtr), stat=ierr)
    96     IF (ierr /= 0) CALL abort_gcm('phytrac', 'pb in allocation 11',1)
     96    IF (ierr /= 0) CALL abort_gcm('traclmdz_init', 'pb in allocation 11',1)
    9797    radio(:) = .false.    ! Par defaut pas decroissance radioactive
    9898   
    9999    ALLOCATE( masktr(klon,nbtr), stat=ierr)
    100     IF (ierr /= 0) CALL abort_gcm('phytrac', 'pb in allocation 2',1)
     100    IF (ierr /= 0) CALL abort_gcm('traclmdz_init', 'pb in allocation 2',1)
    101101   
    102102    ALLOCATE( fshtr(klon,nbtr), stat=ierr)
    103     IF (ierr /= 0) CALL abort_gcm('phytrac', 'pb in allocation 3',1)
     103    IF (ierr /= 0) CALL abort_gcm('traclmdz_init', 'pb in allocation 3',1)
    104104   
    105105    ALLOCATE( hsoltr(nbtr), stat=ierr)
    106     IF (ierr /= 0) CALL abort_gcm('phytrac', 'pb in allocation 4',1)
     106    IF (ierr /= 0) CALL abort_gcm('traclmdz_init', 'pb in allocation 4',1)
    107107   
    108108    ALLOCATE( tautr(nbtr), stat=ierr)
    109     IF (ierr /= 0) CALL abort_gcm('phytrac', 'pb in allocation 5',1)
     109    IF (ierr /= 0) CALL abort_gcm('traclmdz_init', 'pb in allocation 5',1)
    110110    tautr(:)  = 0.
    111111   
    112112    ALLOCATE( vdeptr(nbtr), stat=ierr)
    113     IF (ierr /= 0) CALL abort_gcm('phytrac', 'pb in allocation 6',1)
     113    IF (ierr /= 0) CALL abort_gcm('traclmdz_init', 'pb in allocation 6',1)
    114114    vdeptr(:) = 0.
    115115
     
    121121! Recherche des traceurs connus : Be7, CO2,...
    122122! --------------------------------------------
     123    id_be=0
    123124    DO it=1,nbtr
    124125       iiq=niadv(it+2)
    125        !
    126        ! Recherche du Beryllium 7
    127        !
    128126       IF ( tname(iiq) == "BE" .OR. tname(iiq) == "Be" .OR.  &
    129127            tname(iiq) == "BE7" .OR. tname(iiq) == "Be7" ) THEN 
     128          ! Recherche du Beryllium 7
    130129          id_be=it
    131130          ALLOCATE( srcbe(klon,klev) )
     
    134133          CALL init_be(pctsrf,masktr(:,id_be),tautr(id_be),vdeptr(id_be),scavtr(id_be),srcbe)
    135134          WRITE(*,*) 'Initialisation srcBe: OK'
    136        ELSE
    137           id_be=0
    138        END IF
    139        
    140        ! Placer ici la recherche de nouveaux traceurs
    141        ! ...
     135       END IF   
    142136    END DO
    143137!
     
    159153
    160154  SUBROUTINE traclmdz(                           &
    161        pdtphys,  t_seri,                         &
     155       nstep,    pdtphys,      t_seri,           &
    162156       paprs,    pplay,        cdragh,  coefh,   &
    163157       yu1,      yv1,          ftsol,   pctsrf,  &
     
    180174!
    181175!Configuration grille,temps:
     176    INTEGER,INTENT(IN) :: nstep      ! nombre d'appels de la physiq
    182177    REAL,INTENT(IN)    :: pdtphys    ! Pas d'integration pour la physique (seconde) 
    183178    REAL,DIMENSION(klon),INTENT(IN) :: xlat    ! latitudes pour chaque point
     
    218213
    219214    INTEGER :: i, k, it
    220  
    221215
    222216    REAL,DIMENSION(klon)           :: d_trs    ! Td dans le reservoir
     
    250244
    251245    IF (couchelimite) THEN             
    252        DO it=1, nbtr
    253           IF ( it == id_be ) THEN
    254              DO i=1, klon
    255                 zrho = pplay(i,1)/t_seri(i,1)/RD
    256                 source(i,it) = - vdeptr(it)*tr_seri(i,1,it)*zrho
    257              END DO
    258           ELSE
    259              source(:,it) = 0.0 
    260           END IF
    261        END DO
     246       source(:,:) = 0.0
     247
     248       IF (id_be /=0) THEN
     249          DO i=1, klon
     250             zrho = pplay(i,1)/t_seri(i,1)/RD
     251             source(i,id_be) = - vdeptr(id_be)*tr_seri(i,1,id_be)*zrho
     252          END DO
     253       END IF
     254
    262255    END IF
    263256   
     
    307300       END IF
    308301    END DO
    309    
    310302
    311303  END SUBROUTINE traclmdz
     
    322314    REAL,DIMENSION(klon,nbtr), INTENT(OUT) :: trs_out
    323315    INTEGER :: ierr
    324     !AJ-beg -
    325     ALLOCATE( trs(klon,nbtr), stat=ierr )
    326     IF (ierr == 0) THEN
    327     ! no previous allocate [case create_etat0_limit.e]
    328          trs_out(:,:) = 0.0
     316
     317    IF ( ALLOCATED(trs) ) THEN
     318       trs_out(:,:) = trs(:,:)
    329319    ELSE
    330     ! already allocate by traclmdz_from_restart() [case gcm.e]
    331          trs_out(:,:) = trs(:,:)
     320       ! No previous allocate of trs. This is the case for create_etat0_limit.
     321       trs_out(:,:) = 0.0
    332322    END IF
    333     !cAJ-end -
     323   
    334324  END SUBROUTINE traclmdz_to_restart
    335325 
Note: See TracChangeset for help on using the changeset viewer.