Ignore:
Timestamp:
Jul 8, 2014, 2:21:53 PM (10 years ago)
Author:
slebonnois
Message:

SL: VENUS PHOTOCHEMISTRY. Needs Lapack (see arch files...)

File:
1 edited

Legend:

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

    r1301 r1305  
    5656      USE ioipsl
    5757!      USE histcom ! not needed; histcom is included in ioipsl
     58      USE chemparam_mod
    5859      USE infotrac
    5960      USE control_mod
     
    6566      USE iophy
    6667      use cpdet_mod, only: cpdet, t2tpot
     68      use ieee_arithmetic
    6769      IMPLICIT none
    6870c======================================================================
     
    198200      REAL uq(klon) ! integr. verticale du transport zonal de l'eau
    199201c
     202      REAL Fsedim(klon,klev+1)  ! Flux de sedimentation (kg.m-2)
    200203
    201204c======================================================================
     
    285288      REAL u_seri(klon,klev), v_seri(klon,klev)
    286289c
    287       REAL tr_seri(klon,klev,nqmax)
    288       REAL d_tr(klon,klev,nqmax)
     290      REAL :: tr_seri(klon,klev,nqmax)
     291      REAL :: d_tr(klon,klev,nqmax)
     292
     293c Variables tendance sedimentation
     294
     295      REAL :: d_tr_sed(klon,klev,2)
     296      REAL :: d_tr_ssed(klon)
    289297c
    290298c pour ioipsl
     
    530538      ENDDO
    531539
     540c---------
     541c       Ecriture fichier initialisation
     542c       PRINT*,'Ecriture Initial_State.csv'
     543c       OPEN(88,file='Trac_Point.csv',
     544c     & form='formatted')
     545c---------
     546     
     547c---------
     548c       Initialisation des parametres des nuages
     549c===============================================
     550     
     551      if ((nlon .EQ. 1) .AND. ok_cloud) then
     552        PRINT*,'Open profile_cloud_parameters.csv'
     553        OPEN(66,file='profile_cloud_parameters.csv',
     554     &   form='formatted')
     555      endif
     556
     557      if ((nlon .EQ. 1) .AND. ok_sedim) then
     558        PRINT*,'Open profile_cloud_sedim.csv'
     559        OPEN(77,file='profile_cloud_sedim.csv',
     560     &   form='formatted')
     561      endif
     562           
     563      if ((nlon .GT. 1) .AND. ok_chem) then
     564c !!! DONC 3D !!!
     565        CALL chemparam_ini()
     566      endif
    532567         
     568      if ((nlon .GT. 1) .AND. ok_cloud) then
     569c !!! DONC 3D !!!
     570        CALL cloud_ini(nlon,nlev)
     571      endif
     572       
    533573      ENDIF ! debut
    534574c====================================================================
     
    704744       if (tr_scheme.eq.1) then
    705745! Case 1: pseudo-chemistry with relaxation toward fixed profile
     746
    706747         call phytrac_relax (debut,lafin,nqmax,
    707748     I                   nlon,nlev,dtime,pplay,
     
    713754! However, the variable 'source' could be used in physiq
    714755! so the call to phytrac_emiss could be to initialise it.
     756
    715757         call phytrac_emiss ( (rjourvrai+gmtime)*RDAY,
    716758     I                   debut,lafin,nqmax,
     
    718760     I                   rlatd,rlond,
    719761     O                   tr_seri)
    720        elseif (tr_scheme.eq.3) then
    721 ! Case 3: Full chemistry
    722 !        call phytrac_chem ( ?? )
    723          print*,"Chemistry not yet implemented..."
    724          print*,"See Aurelien Stolzenbach"
    725        endif
    726       endif
     762
     763       elseif (tr_scheme.eq.3) then  ! identical to ok_chem.or.ok_cloud
     764! Case 3: Full chemistry and/or clouds
     765
     766         call phytrac_chimie(                 
     767     I             debut,
     768     I             gmtime,
     769     I             nqmax,
     770     I             nlon,
     771     I             rlatd,
     772     I             rlond,
     773     I             nlev,
     774     I             dtime,
     775     I             t_seri,pplay,
     776     O             tr_seri,
     777     O             NBRTOT,
     778     O             WH2SO4,
     779     O             rho_droplet)
     780
     781c        CALL WriteField_phy('Pression',pplay,nlev)
     782c        CALL WriteField_phy('PressionBnd',paprs,nlev+1)
     783c        CALL WriteField_phy('Temp',t_seri,nlev)
     784c        IF (ok_cloud) THEN
     785c          CALL WriteField_phy('NBRTOT',NBRTOT,nlev)
     786c        ENDIF
     787c        CALL WriteField_phy('SAl',tr_seri(:,:,i_h2so4liq),nlev)
     788c        CALL WriteField_phy('SAg',tr_seri(:,:,i_h2so4),nlev)
     789
     790         if (ok_sedim) then
     791
     792           CALL new_cloud_sedim(
     793     I               klon,
     794     I               nlev,
     795     I               dtime,
     796     I               pplay,
     797     I               paprs,
     798     I               t_seri,
     799     I               WH2SO4,
     800     I               tr_seri,
     801     I               nqmax,
     802     I               NBRTOT,
     803     I               rho_droplet,
     804     O               Fsedim,
     805     O               d_tr_sed,
     806     O               d_tr_ssed)
     807
     808          DO k = 1, klev
     809           DO i = 1, klon
     810     
     811c        WRITE(88,"(11(e15.8,','))") pplay(5,25),
     812c     &  t_seri(5,25),tr_seri(5,25,i_h2oliq),
     813c     &  tr_seri(5,25,i_h2o),tr_seri(5,25,i_h2so4liq),
     814c     &  tr_seri(5,25,i_h2so4),NBRTOT(5,25),WH2SO4(5,25),
     815c     &  Fsedim(5,25),d_tr_sed(5,25,1),d_tr_sed(5,25,2)
     816
     817c--------------------
     818c   Ce test est necessaire pour eviter Xliq=NaN   
     819        IF (ieee_is_nan(d_tr_sed(i,k,1)).OR.
     820     &  ieee_is_nan(d_tr_sed(i,k,2))) THEN
     821        PRINT*,'sedim NaN PROBLEM'
     822        PRINT*,'d_tr_sed Nan?',d_tr_sed(i,k,:),'Temp',t_seri(i,k)
     823        PRINT*,'lat-lon',i,'level',k,'dtime',dtime
     824        PRINT*,'NBRTOT',NBRTOT(i,k),'F_sed',Fsedim(i,k)
     825        PRINT*,'==============================================='
     826                d_tr_sed(i,k,:)=0.
     827        ENDIF
     828c--------------------
     829
     830        tr_seri(i,k,i_h2so4liq) = tr_seri(i,k,i_h2so4liq)+
     831     &                            d_tr_sed(i,k,1)
     832        tr_seri(i,k,i_h2oliq)   = tr_seri(i,k,i_h2oliq)+
     833     &                            d_tr_sed(i,k,2)
     834        d_tr_sed(i,k,:) = d_tr_sed(i,k,:) / dtime
     835        Fsedim(i,k)     = Fsedim(i,k) / dtime
     836     
     837           ENDDO
     838          ENDDO
     839     
     840        Fsedim(:,klev+1) = 0.
     841
     842         endif ! ok_sedim
     843
     844       endif   ! tr_scheme
     845      endif    ! iflag_trac
    727846
    728847c
Note: See TracChangeset for help on using the changeset viewer.