Ignore:
Timestamp:
May 4, 2005, 5:11:29 PM (19 years ago)
Author:
Laurent Fairhead
Message:

Modifications faites à la physique pour la rendre parallele YM
Une branche de travail LMDZ4_par_0 a été créée provisoirement afin de tester
les modifs pleinement avant leurs inclusions dans le tronc principal
LF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • LMDZ4/branches/LMDZ4_par_0/libf/phylmd/phytrac.F

    r633 r634  
    6464
    6565      USE ioipsl
    66 
     66      USE dimphy
     67      USE comgeomphy
     68      USE iophy
     69#ifdef CPP_PARALLEL
     70      USE vampir
     71#endif
    6772#ifdef INCA
    6873      USE sflx
     
    7681#ifdef INCA_AER
    7782      USE AEROSOL_MOD, only : ntr,trmx,trnx
     83cym      USE AEROSOL_DIAG, only : cla,las,tausum,angst,aload,scon
     84cym     .                            ,scavcoef_st,scavcoef_cv
     85cym      USE AEROSOL_PROGNOS, ONLY : md
    7886      USE AEROSOL_DIAG,only : cla,las,tausum,angst,aload,cload,totaerh2o,tau,
    7987     $  emiss20,sconc,scavcoef_st,scavcoef_cv
     
    103111#include "YOMCST.h"
    104112#include "dimensions.h"
    105 #include "dimphy.h"
     113cym#include "dimphy.h"
    106114#include "indicesol.h"
    107115#include "temps.h"
    108116#include "paramet.h"
    109117#include "control.h"
    110 #include "comgeomphy.h"
     118cym#include "comgeomphy.h"
    111119#include "advtrac.h"
    112120c======================================================================
     
    225233cAA ................................................
    226234 
    227       REAL trs(klon,nbtr)    ! Conc. radon ds le sol
    228       SAVE trs
    229 
    230       REAL masktr(klon,nbtr) ! Masque reservoir de sol traceur
     235      REAL,save,allocatable :: trs(:,:)    ! Conc. radon ds le sol
     236cym      SAVE trs
     237      REAL :: trs_tmp(klon2)
     238     
     239      REAL,save,allocatable :: masktr(:,:) ! Masque reservoir de sol traceur
    231240c                            Masque de l'echange avec la surface
    232241c                           (1 = reservoir) ou (possible => 1 )
    233       SAVE masktr
    234       REAL fshtr(klon,nbtr)  ! Flux surfacique dans le reservoir de sol
    235       SAVE fshtr
    236       REAL hsoltr(nbtr)      ! Epaisseur equivalente du reservoir de sol
    237       SAVE hsoltr
    238       REAL tautr(nbtr)       ! Constante de decroissance radioactive
    239       SAVE tautr
    240       REAL vdeptr(nbtr)      ! Vitesse de depot sec dans la couche Brownienne
    241       SAVE vdeptr
    242       REAL scavtr(nbtr)      ! Coefficient de lessivage
    243       SAVE scavtr
     242cym      SAVE masktr
     243      REAL,save,allocatable :: fshtr(:,:)  ! Flux surfacique dans le reservoir de sol
     244cym      SAVE fshtr
     245      REAL,save,allocatable :: hsoltr(:)      ! Epaisseur equivalente du reservoir de sol
     246cym      SAVE hsoltr
     247      REAL,save,allocatable :: tautr(:)       ! Constante de decroissance radioactive
     248cym      SAVE tautr
     249      REAL,save,allocatable :: vdeptr(:)      ! Vitesse de depot sec dans la couche Brownienne
     250cym      SAVE vdeptr
     251      REAL,save,allocatable :: scavtr(:)      ! Coefficient de lessivage
     252cym      SAVE scavtr
    244253cAA
    245254      CHARACTER*2 itn
     
    273282C nature du traceur
    274283c
    275       logical aerosol(nbtr)  ! Nature du traceur
     284      logical,save,allocatable :: aerosol(:)  ! Nature du traceur
    276285c                            ! aerosol(it) = true  => aerosol
    277286c                            ! aerosol(it) = false => gaz
    278287c                            ! nat_trac(it) = 1. aerosol
    279       logical clsol(nbtr)    ! clsol(it) = true => CL sol calculee
    280       logical radio(nbtr)    ! radio(it)=true => decroisssance radioactive
    281       save aerosol,clsol,radio
     288      logical,save,allocatable :: clsol(:)    ! clsol(it) = true => CL sol calculee
     289      logical,save,allocatable :: radio(:)    ! radio(it)=true => decroisssance radioactive
     290cym      save aerosol,clsol,radio
    282291C
    283292c======================================================================
     
    298307      REAL d_tr(klon,klev), d_trs(klon) ! tendances de traceurs
    299308      REAL d_tr_cl(klon,klev,nbtr) ! tendance de traceurs  couche limite
    300       REAL d_tr_cv(klon,klev,nbtr) ! tendance de traceurs  conv pour chq traceur
     309      REAL d_tr_cli(klon,klev,nbtr) ! tendance de traceurs  CL pour chq traceur
     310      REAL d_tr_cv(klon,klev,nbtr) ! tendance de traceurs  convection
     311      REAL d_tr_cvi(klon,klev,nbtr) ! tendance de traceurs  conv pour chq traceur
    301312      REAL d_tr_th(klon,klev,nbtr) ! la tendance des thermiques
    302313      REAL d_tr_dec(klon,klev,nbtr) ! la tendance de la decroissance
     
    367378#endif
    368379     .                                         /)
    369 
    370 
    371       REAL, PARAMETER   :: dry_mass = 28.966
    372       REAL, POINTER     :: hbuf(:)
    373       REAL, ALLOCATABLE :: obuf(:)
    374       REAL              :: calday
    375       REAL              :: pdel(klon,klev)
    376       REAL              :: dummy(klon,klev) = 0.
    377 #endif
    378 #ifdef INCA_AER
    379       integer la
     380      dummy(:,:)=0.
    380381#endif
    381382c
     
    386387
    387388         if (debutphy) then
     389           allocate( trs(klon,nbtr) ) 
     390           allocate( masktr(klon,nbtr))
     391           allocate( fshtr(klon,nbtr) )
     392           allocate( hsoltr(nbtr))
     393           allocate( tautr(nbtr))
     394           allocate( vdeptr(nbtr))
     395           allocate( scavtr(nbtr))
     396           allocate( aerosol(nbtr))
     397           allocate( clsol(nbtr))
     398           allocate( radio(nbtr))
    388399
    389400          ecrit_tra = NINT(86400./pdtphys *ecritphy)
     
    416427c        print*,'valeur de debut dans phytrac :',debutphy
    417428         trs(:,:) = 0.
    418 
    419          open (99,file='starttrac',status='old',
     429         
     430       if (phy_rank==0) then
     431         trs_tmp(:)=0.
     432         open (99,file='starttrac',status='old',
    420433     .         err=999,form='formatted')
    421          read(99,*) (trs(i,1),i=1,klon)
     434         read(99,*) (trs_tmp(i),i=1,klon2)
    422435999      close(99)
     436       endif
     437       call ScatterField(trs_tmp,trs(:,1),1)
    423438c         print*, 'apres starttrac'
    424439
     
    451466      endif
    452467#ifdef INCA
     468      call VTe(VTphysiq)
     469      call VTb(VTinca)
    453470!======================================================================
    454471!     Chimie
     
    539556      END DO
    540557#endif
     558      call VTe(VTinca)
     559      call VTb(VTphysiq)
    541560#else
    542561
     
    861880      if (lafin) then
    862881         print*, 'c est la fin de la physique'
    863          open (99,file='restarttrac',  form='formatted')
    864          do i=1,klon
    865              write(99,*) trs(i,1)
    866          enddo
    867          PRINT*, 'Ecriture du fichier restarttrac'
    868          close(99)
     882         
     883         call GatherField(trs(:,1),trs_tmp,1)
     884         if (phy_rank==0) then
     885         
     886           open (99,file='restarttrac',  form='formatted')
     887           do i=1,klon
     888               write(99,*) trs_tmp(i)
     889           enddo
     890           PRINT*, 'Ecriture du fichier restarttrac'
     891           close(99)
     892         endif
    869893      else
    870894         print*, 'physique pas fini'
Note: See TracChangeset for help on using the changeset viewer.