Ignore:
Timestamp:
Aug 21, 2024, 3:46:54 PM (3 months ago)
Author:
afalco
Message:

Pluto PCM: Imported glaciers & conserv mass routines from pluto.old.
AF

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/LMDZ.PLUTO/libf/phypluto/physiq_mod.F90

    r3411 r3412  
    5454                              fast,fasthaze,haze,metcloud,monoxcloud,&
    5555                              n2cond,nearn2cond,noseason_day,conservn2, &
    56                               convergeps,kbo,triton,paleo,paleoyears, &
     56                              convergeps,kbo,triton,paleo,paleoyears,glaflow, &
    5757                              carbox, methane,&
    5858                              oldplutovdifc,oldplutocorrk,oldplutosedim, &
    59                               aerohaze,haze_proffix,source_haze,&
     59                              aerohaze,haze_proffix,source_haze, tsurfmax, &
     60                              albmin_ch4, &
    6061                              season, sedimentation,generic_condensation, &
    6162                              specOLR, &
     
    291292      REAL zplev(ngrid,nlayer+1),zplay(ngrid,nlayer)
    292293
     294      REAL,SAVE :: ptime0    ! store the first time
     295      REAL dstep
     296      REAL,SAVE :: glastep=20   ! step in pluto day to spread glacier
    293297
    294298
     
    617621         albedo_snow_SPECTV(:)=0.0
    618622         albedo_n2_ice_SPECTV(:)=0.0
     623
     624         ptime0=ptime
     625         write (*,*) 'In physiq ptime0 =', ptime
     626
    619627         call surfini(ngrid,nq,qsurf,albedo,albedo_bareground,albedo_snow_SPECTV,albedo_n2_ice_SPECTV)
    620628
     
    759767      taux(1:ngrid) = 0.0
    760768      tauy(1:ngrid) = 0.0
     769
     770      if (conservn2) then
     771         write(*,*) 'conservn2 iniloop'
     772         call testconservmass(ngrid,nlayer,pplev(:,1),qsurf(:,1))
     773      endif
    761774
    762775      zday=pday+ptime ! Compute time, in sols (and fraction thereof).
     
    848861       enddo
    849862      endif
     863
     864      if (conservn2) then
     865         write(*,*) 'conservn2 thermo'
     866         call testconservmass(ngrid,nlayer,pplev(:,1),qsurf(:,1))
     867      endif
     868
    850869!---------------------------------
    851870! II. Compute radiative tendencies
     
    10941113!!      call writediagfi(ngrid,"vdifc_pre_qsurf"," "," ",2,qsurf(1:ngrid,igcm_h2o_gas))
    10951114
     1115   if (conservn2) then
     1116      write(*,*) 'conservn2 radiat'
     1117      call testconservmass(ngrid,nlayer,pplev(:,1),qsurf(:,1))
     1118   endif
    10961119
    10971120!  --------------------------------------------
     
    12291252      endif ! end of 'calldifv'
    12301253
     1254      if (conservn2) then
     1255        write(*,*) 'conservn2 diff'
     1256        call testconservmass(ngrid,nlayer,pplev(:,1),qsurf(:,1)+ &
     1257                                       dqsurf(:,1)*ptimestep)
     1258      endif
    12311259
    12321260!-------------------
     
    13221350      endif  ! end of 'n2cond'
    13231351
     1352      if (conservn2) then
     1353       write(*,*) 'conservn2 n2cond'
     1354       call testconservmass(ngrid,nlayer,pplev(:,1)+ &
     1355           pdpsrf(:)*ptimestep,qsurf(:,1)+dqsurf(:,1)*ptimestep)
     1356      endif
    13241357
    13251358!---------------------------------------------
     
    15921625      if (conservn2) then
    15931626         write(*,*) 'conservn2 tracer'
    1594          ! call testconservmass(ngrid,nlayer,pplev(:,1)+   &
    1595          !    pdpsrf(:)*ptimestep,qsurf(:,1))
     1627         call testconservmass(ngrid,nlayer,pplev(:,1)+   &
     1628            pdpsrf(:)*ptimestep,qsurf(:,1))
    15961629      endif
    15971630
     
    16461679
    16471680
    1648       ! ! Increment surface temperature
    1649       ! if(ok_slab_ocean)then  !AF24: removed
    1650 
     1681! VII.1 Increment surface temperature
     1682!   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    16511683      tsurf(1:ngrid)=tsurf(1:ngrid)+ptimestep*zdtsurf(1:ngrid)
    1652       ! Compute soil temperatures and subsurface heat flux.
     1684
     1685      ! Prevent surface (.e.g. non volatile ch4) to exceed max temperature
     1686      ! Lellouch et al., 2000,2011
     1687      IF (tsurfmax) THEN
     1688        DO ig=1,ngrid
     1689         if (albedo_equivalent(ig).gt.albmin_ch4.and. &
     1690                           qsurf(ig,igcm_n2).eq.0.) then
     1691              tsurf(ig)=min(tsurf(ig),54.)
     1692         endif
     1693        ENDDO
     1694      ENDIF
     1695
     1696! VII.2 Compute soil temperatures and subsurface heat flux.
     1697!   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    16531698      if (callsoil) then
    16541699         call soil(ngrid,nsoilmx,.false.,lastcall,inertiedat,   &
     
    16561701      endif
    16571702
    1658 
    1659 !       if (ok_slab_ocean) then !AF24: removed
     1703      ! ! For output :
     1704      ! tidat_out(:,:)=0.
     1705      ! DO l=1,min(nlayermx,nsoilmx)
     1706      !    tidat_out(:,l)=tidat(:,l)
     1707      ! ENDDO
    16601708
    16611709      ! Test energy conservation
     
    16651713      endif
    16661714
     1715
     1716
     1717!   VII.3 multiply tendencies of cond/subli for paleo loop only in the
     1718!       last Pluto year of the simulation
     1719!       Year day must be adapted in the startfi for each object
     1720!       Paleo uses year_day to calculate the annual mean tendancies
     1721!   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     1722      IF (paleo) then
     1723         if (zday.gt.day_ini+ptime0+nday-year_day) then
     1724            DO iq=1,nq
     1725             DO ig=1,ngrid
     1726               qsurfyear(ig,iq)=qsurfyear(ig,iq)+ &
     1727                             (qsurf(ig,iq)-qsurf1(ig,iq))  !kg m-2 !ptimestep
     1728             ENDDO
     1729            ENDDO
     1730         endif
     1731      endif
     1732
     1733!   VII.4 Glacial flow at each timestep glastep or at lastcall
     1734!   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     1735      IF (fast.and.glaflow) THEN
     1736         if ((mod(zday-day_ini-ptime0,glastep)).lt.1. &
     1737                                                   .or.lastcall) then
     1738           IF (lastcall) then
     1739            dstep=mod(zday-day_ini-ptime0,glastep)*daysec
     1740           else
     1741            dstep=glastep*daysec
     1742           endif
     1743           zdqflow(:,:)=qsurf(:,:)
     1744           IF (paleo) then
     1745             call spreadglacier_paleo(ngrid,nq,qsurf, &
     1746                                    phisfinew,dstep,tsurf)
     1747           else
     1748             call spreadglacier_simple(ngrid,nq,qsurf,dstep)
     1749           endif
     1750           zdqflow(:,:)=(zdqflow(:,:)-qsurf(:,:))/dstep
     1751
     1752           if (conservn2) then
     1753            write(*,*) 'conservn2 glaflow'
     1754            call testconservmass(ngrid,nlayer,pplev(:,1)+ &
     1755            pdpsrf(:)*ptimestep,qsurf(:,1))
     1756           endif
     1757
     1758         endif
     1759      ENDIF
    16671760
    16681761!---------------------------------------------------
     
    18161909
    18171910
    1818       ! ! Test for water conservation. !AF24: removed
    18191911
    18201912      ! Calculate RH_generic (Generic Relative Humidity) for diagnostic.
     
    22712363
    22722364         do iq=1,nq
    2273           ! call writediagfi(ngrid,noms(iq),noms(iq),'kg/kg',3,zq(1,1,iq))
     2365          call writediagfi(ngrid,noms(iq),noms(iq),'kg/kg',3,zq(1,1,iq))
    22742366          !  call writediagfi(ngrid,trim(noms(iq))//'_surf',trim(noms(iq))//'_surf',  &
    22752367          !                   'kg m^-2',2,qsurf_hist(1,iq) )
    2276           ! call writediagfi(ngrid,trim(noms(iq))//'_col',trim(noms(iq))//'_col',    &
    2277           !                  'kg m^-2',2,qcol(1,iq) )
     2368          call writediagfi(ngrid,trim(noms(iq))//'_col',trim(noms(iq))//'_col',    &
     2369                           'kg m^-2',2,qcol(1,iq) )
    22782370!          call writediagfi(ngrid,trim(noms(iq))//'_surf',trim(noms(iq))//'_surf',  &
    22792371!                          'kg m^-2',2,qsurf(1,iq) )
Note: See TracChangeset for help on using the changeset viewer.