Changeset 3412 for trunk/LMDZ.PLUTO/libf/phypluto/physiq_mod.F90
- Timestamp:
- Aug 21, 2024, 3:46:54 PM (3 months ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.PLUTO/libf/phypluto/physiq_mod.F90
r3411 r3412 54 54 fast,fasthaze,haze,metcloud,monoxcloud,& 55 55 n2cond,nearn2cond,noseason_day,conservn2, & 56 convergeps,kbo,triton,paleo,paleoyears, &56 convergeps,kbo,triton,paleo,paleoyears,glaflow, & 57 57 carbox, methane,& 58 58 oldplutovdifc,oldplutocorrk,oldplutosedim, & 59 aerohaze,haze_proffix,source_haze,& 59 aerohaze,haze_proffix,source_haze, tsurfmax, & 60 albmin_ch4, & 60 61 season, sedimentation,generic_condensation, & 61 62 specOLR, & … … 291 292 REAL zplev(ngrid,nlayer+1),zplay(ngrid,nlayer) 292 293 294 REAL,SAVE :: ptime0 ! store the first time 295 REAL dstep 296 REAL,SAVE :: glastep=20 ! step in pluto day to spread glacier 293 297 294 298 … … 617 621 albedo_snow_SPECTV(:)=0.0 618 622 albedo_n2_ice_SPECTV(:)=0.0 623 624 ptime0=ptime 625 write (*,*) 'In physiq ptime0 =', ptime 626 619 627 call surfini(ngrid,nq,qsurf,albedo,albedo_bareground,albedo_snow_SPECTV,albedo_n2_ice_SPECTV) 620 628 … … 759 767 taux(1:ngrid) = 0.0 760 768 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 761 774 762 775 zday=pday+ptime ! Compute time, in sols (and fraction thereof). … … 848 861 enddo 849 862 endif 863 864 if (conservn2) then 865 write(*,*) 'conservn2 thermo' 866 call testconservmass(ngrid,nlayer,pplev(:,1),qsurf(:,1)) 867 endif 868 850 869 !--------------------------------- 851 870 ! II. Compute radiative tendencies … … 1094 1113 !! call writediagfi(ngrid,"vdifc_pre_qsurf"," "," ",2,qsurf(1:ngrid,igcm_h2o_gas)) 1095 1114 1115 if (conservn2) then 1116 write(*,*) 'conservn2 radiat' 1117 call testconservmass(ngrid,nlayer,pplev(:,1),qsurf(:,1)) 1118 endif 1096 1119 1097 1120 ! -------------------------------------------- … … 1229 1252 endif ! end of 'calldifv' 1230 1253 1254 if (conservn2) then 1255 write(*,*) 'conservn2 diff' 1256 call testconservmass(ngrid,nlayer,pplev(:,1),qsurf(:,1)+ & 1257 dqsurf(:,1)*ptimestep) 1258 endif 1231 1259 1232 1260 !------------------- … … 1322 1350 endif ! end of 'n2cond' 1323 1351 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 1324 1357 1325 1358 !--------------------------------------------- … … 1592 1625 if (conservn2) then 1593 1626 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)) 1596 1629 endif 1597 1630 … … 1646 1679 1647 1680 1648 ! ! Increment surface temperature 1649 ! if(ok_slab_ocean)then !AF24: removed 1650 1681 ! VII.1 Increment surface temperature 1682 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1651 1683 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 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1653 1698 if (callsoil) then 1654 1699 call soil(ngrid,nsoilmx,.false.,lastcall,inertiedat, & … … 1656 1701 endif 1657 1702 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 1660 1708 1661 1709 ! Test energy conservation … … 1665 1713 endif 1666 1714 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 1667 1760 1668 1761 !--------------------------------------------------- … … 1816 1909 1817 1910 1818 ! ! Test for water conservation. !AF24: removed1819 1911 1820 1912 ! Calculate RH_generic (Generic Relative Humidity) for diagnostic. … … 2271 2363 2272 2364 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)) 2274 2366 ! call writediagfi(ngrid,trim(noms(iq))//'_surf',trim(noms(iq))//'_surf', & 2275 2367 ! '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) ) 2278 2370 ! call writediagfi(ngrid,trim(noms(iq))//'_surf',trim(noms(iq))//'_surf', & 2279 2371 ! 'kg m^-2',2,qsurf(1,iq) )
Note: See TracChangeset
for help on using the changeset viewer.