Changeset 1519 for trunk/LMDZ.VENUS/libf


Ignore:
Timestamp:
Mar 23, 2016, 12:09:36 PM (9 years ago)
Author:
slebonnois
Message:

SL: volcanisme et traceurs sur Venus

Location:
trunk/LMDZ.VENUS/libf/phyvenus
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.VENUS/libf/phyvenus/physiq.F

    r1506 r1519  
    227227      EXTERNAL diagphy
    228228      EXTERNAL mucorr
    229       EXTERNAL phytrac
    230229      EXTERNAL nirco2abs
    231230      EXTERNAL nir_leedat
  • trunk/LMDZ.VENUS/libf/phyvenus/phytrac_emiss.F

    r1443 r1519  
    3333      use dimphy
    3434      USE comgeomphy
     35      USE chemparam_mod,only:M_tr
    3536      IMPLICIT none
    3637#include "YOMCST.h"
     
    6566cAA ----------------------------
    6667
    67 C les traceurs
    68 
    69 c===================
    70 c it--------indice de traceur
    71 c k,i---------indices long, vert
    72 c===================
    7368c pour emission volcan
    7469      real :: deltatr(klon,klev,nqtot)
    7570
    76       integer,parameter :: nbsrc=2,nblat=5,nblon=4
    77 !     integer,parameter :: Nemiss=1   ! duree emission (Ed)
    78       integer,save :: Nemiss(nbsrc)      ! duration emission (Ed)
    79       real,save :: source_volcan(nbsrc)  ! flux emission (kg/s)
     71      integer,parameter :: nblat=5,nblon=4,nbz=3
     72      integer,parameter :: Nemiss=1     ! duree emission (Ed)
     73      integer,save :: Nheight(nbz)      ! layer emission
     74      real,save :: so2_quantity         ! quantity so2 (kg)
    8075      real,save :: lat_volcan(nblat),lon_volcan(nblon)
    8176      real,save :: area_emiss(nblat,nblon)
    8277      integer,save :: ig_volcan(nblat,nblon)
    8378
    84 c======================================================================
    85 
    8679      INTEGER i, k, it
    87       integer ilat,ilon,iemiss
     80      integer ilat,ilon,iz
    8881      real    deltalat,deltalon
    89 
    90 c Variables liees a l'ecriture de la bande histoire physique
    91 
    92 c Variables locales pour effectuer les appels en serie
    93 c----------------------------------------------------
    94 
    95       REAL d_tr(nlon,nlev) ! tendances de traceurs
    96 
    97       character*20 modname
    98       character*80 abort_message
    99 
    100 c======================================================================
    101 
    102       modname = 'phytrac_emiss'
     82c======================================================================
     83
    10384c EMISSION TRACEURS
    10485
    10586c---------
    10687c debutphy
    107 c---------
     88c---------     
    10889      if (debutphy) then
    109          print*,"DEBUT PHYTRAC"
    110          print*,"PHYTRAC: EMISSION"
    111 
    112 c=============================================================
    113 c=============================================================
    114 c=============================================================
    115 c   Initialisation des traceurs
    116 c=============================================================
    117 c=============================================================
    118 c=============================================================
    119 
    120 C=========================================================================
     90
     91        print*,"DEBUT PHYTRAC"
     92        print*,"PHYTRAC: EMISSION"
     93
     94        ALLOCATE(M_tr(nqtot))
     95        M_tr(:)=64.                 ! SO2
     96       
    12197C=========================================================================
    12298c Caracteristiques des traceurs emis:
     99C=========================================================================
    123100
    124101c nombre total de traceur
    125          if (nbsrc*nblat*nblon .gt. nqtot) then
     102         if (nbz*nblat*nblon .gt. nqtot) then
     103            print*, nbz*nblat*nblon, nqtot
    126104            write(*,*) "Attention, pas assez de traceurs"
    127105            write(*,*) "le dernier sera bien le dernier"
    128106         endif
    129107
    130 c source en kg/s
    131          source_volcan(1) = 1.
    132          source_volcan(2) = 1000.
    133 c duration in Ed
    134          Nemiss(1) = 1
    135          Nemiss(2) = 10
     108c quantite en kg
     109         so2_quantity = 20.*10.**9.
     110
     111c height (in layer index)
     112         Nheight(1) =  6  ! ~ 1 km
     113         Nheight(2) = 16  ! ~ 25 km
     114         Nheight(3) = 24  ! ~ 50 km
     115
    136116c localisation volcan
    137117         lat_volcan(1) =  70.
     
    140120         lat_volcan(4) = -35.
    141121         lat_volcan(5) = -70.
    142          lon_volcan(1) = -120.
    143          lon_volcan(2) =  -30.
    144          lon_volcan(3) =   60.
    145          lon_volcan(4) =  150.
    146 
     122         lon_volcan(1) = -125.
     123         lon_volcan(2) =  -35.
     124         lon_volcan(3) =   55.
     125         lon_volcan(4) =  145.
     126         
     127         ig_volcan(ilat,ilon)= 0
    147128         deltalat = 180./jjm
    148          deltalon = 360./jjm
     129         deltalon = 360./iim
     130
    149131         do i=1,nlon
    150132          do ilat=1,nblat
     
    156138             ig_volcan(ilat,ilon)= i
    157139             area_emiss(ilat,ilon) = airephy(i)
    158             endif
    159            enddo
    160           enddo
    161          enddo
    162 
    163 C=========================================================================
    164 C=========================================================================
    165 
     140             print*,"Lat,lon=",ilat,ilon," OK"
     141            end if
     142           end do
     143          end do
     144         end do
     145
     146c Reinit des traceurs si necessaire
     147         if (reinit_trac) then
     148           tr_seri(:,:,:)=0.
     149         endif
     150         
     151C=========================================================================
     152C=========================================================================
     153      ENDIF  ! fin debutphy
    166154c-------------
    167155c fin debutphy
    168156c-------------
    169       ENDIF  ! fin debutphy
    170157
    171158c======================================================================
    172159c Emission d'un traceur pendant un certain temps
    173 c======================================================================
    174          do i = 1,nlon
    175           do iemiss = 1,nbsrc
    176            do ilat  = 1,nblat
    177             do ilon  = 1,nblon
    178              it=(iemiss-1)*nblat*nblon+(ilat-1)*nblon+ilon
    179              it=min(it,nqtot)
    180              deltatr(i,1,it) = 0.
    181 
    182              if (i .eq. ig_volcan(ilat,ilon)) then
     160c necessite raz_date=1 dans run.def
     161c et reinit_trac=y
     162c======================================================================
     163       deltatr(:,:,:) = 0.
    183164
    184165c source appliquee pendant Nemiss Ed
    185                if (timesimu .lt. 86400.*Nemiss(iemiss)) then
    186 
     166       if (timesimu .lt. 86400*Nemiss) then
     167
     168c emet les traceurs qui sont presents sur la grille
     169        do ilat  = 1,nblat
     170        do ilon  = 1,nblon
     171         if (ig_volcan(ilat,ilon).ne.0) then
     172         
     173          do iz = 1,nbz
     174           it=min( (iz-1)*nblat*nblon+(ilat-1)*nblon+ilon , nqtot )         
     175           i=ig_volcan(ilat,ilon)
     176           
     177c injection dans une seule cellule:
    187178c source en kg/kg/s
    188            deltatr(i,1,it) = source_volcan(iemiss)*RG
    189      $     /(area_emiss(ilat,ilon)*(paprs(i,1) - paprs(i,2)))
    190            tr_seri(i,1,it) = tr_seri(i,1,it) + deltatr(i,1,it)*pdtphys
    191 
    192                end if  ! duree emission
    193              end if ! i localisation
    194             end do
    195            end do
     179c            deltatr(i,Nheight(iz),it) = so2_quantity/(86400.*Nemiss) ! kg/s
     180c     $ *RG/( area_emiss(ilat,ilon)
     181c     $      *(paprs(i,Nheight(iz))-paprs(i,Nheight(iz)+1)) )    ! /kg (masse cellule)
     182     
     183c            tr_seri(i,Nheight(iz),it) = tr_seri(i,Nheight(iz),it)
     184c     $      + deltatr(i,Nheight(iz),it)*pdtphys
     185
     186c injection dans toute la colonne (a faire):
     187            do k=1,Nheight(iz)
     188             deltatr(i,k,it) = so2_quantity/(86400.*Nemiss) ! kg/s
     189     $  *RG/( area_emiss(ilat,ilon)
     190     $       *(paprs(i,1)-paprs(i,Nheight(iz)+1)) )    ! /kg (masse colonne)
     191     
     192             tr_seri(i,k,it) = tr_seri(i,k,it)+deltatr(i,k,it)*pdtphys
     193            end do
     194           
    196195          end do
    197          end do
     196         
     197         endif  ! ig_volcan!=0
     198        end do
     199        end do
     200
     201       end if  ! duree emission
     202       
    198203c======================================================================
    199204c======================================================================
  • trunk/LMDZ.VENUS/libf/phyvenus/phytrac_relax.F

    r1443 r1519  
    3030      use dimphy
    3131      USE comgeomphy
     32      USE chemparam_mod,only:M_tr
    3233      IMPLICIT none
    3334#include "YOMCST.h"
     
    9596      nqCO_OCS   = 6
    9697
     98c !!!!!! ATTENTION: A REVOIR / A VERIFIER
     99c   les traceurs sont en mass mixing ratio dans la dyn
     100c   et convertis en frac mol avec M_tr dans les sorties...
     101c   Mettre le profil de rappel en mass mixing ratio !!
     102
     103      print*,"METTRE A JOUR phytrac_relax"
     104      stop
     105
    97106c---------
    98107c debutphy
     
    103112         allocate(zprof(nlev,nqtot),tau(nlev,nqtot))
    104113
     114         ALLOCATE(M_tr(nqtot))
     115     
    105116c=============================================================
    106117c=============================================================
     
    144155      do it=1,3
    145156       print*,"INIT ZPROF ",tname(it)
     157       M_tr(it)=28.       ! CO
    146158       do k=1,nlev
    147159         zprof(k,it)=0.
     
    183195c OCS
    184196       print*,"INIT ZPROF ",tname(it+3)
     197       M_tr(it+3)=60.       ! OCS
    185198       do k=1,nlev
    186199         zprof(k,it+3)=0.
Note: See TracChangeset for help on using the changeset viewer.