- Timestamp:
- Feb 26, 2025, 8:51:12 PM (5 months ago)
- Location:
- trunk/LMDZ.PLUTO/libf/phypluto
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.PLUTO/libf/phypluto/callkeys_mod.F90
r3572 r3652 73 73 logical,save :: condmetsurf,condcosurf,vertdiff 74 74 !$OMP THREADPRIVATE(condmetsurf,condcosurf,vertdiff) 75 logical,save :: convergeps,conservn2,condensn2,no_n2frost 76 !$OMP THREADPRIVATE(convergeps,conservn2,condensn2,no_n2frost )75 logical,save :: convergeps,conservn2,condensn2,no_n2frost,no_ch4frost 76 !$OMP THREADPRIVATE(convergeps,conservn2,condensn2,no_n2frost,no_ch4frost) 77 77 logical,save :: conservch4 78 78 !$OMP THREADPRIVATE(conservch4) -
trunk/LMDZ.PLUTO/libf/phypluto/ch4surf.F
r3539 r3652 2 2 & pdtsurf,pplev,pdpsurf,pq,pdq,pqsurf,pdqsurf,pdqch4,pdqsch4) 3 3 4 use callkeys_mod, only: dayfrac, thresh_non2 4 use callkeys_mod, only: dayfrac, thresh_non2, no_ch4frost 5 5 use comcstfi_mod, only: g, r 6 6 use comgeomfi_h … … 93 93 DO ig=1,ngrid 94 94 95 !! Take into account activity coefficient96 gamm(ig)=499.9-21.8*ztsurf(ig)+0.249*ztsurf(ig)**297 & -1.3*(zq_ch4(ig)*98 & mmol(igcm_n2)/mmol(igcm_ch4_gas)*100.-0.6)/0.399 gamm(ig)=max(gamm(ig),1.)100 !qsat(ig)=qsat(ig)*gamm(ig)95 !! Take into account activity coefficient 96 ! gamm(ig)=499.9-21.8*ztsurf(ig)+0.249*ztsurf(ig)**2 97 ! & -1.3*(zq_ch4(ig)* 98 ! & mmol(igcm_n2)/mmol(igcm_ch4_gas)*100.-0.6)/0.3 99 ! gamm(ig)=max(gamm(ig),1.) 100 ! qsat(ig)=qsat(ig)*gamm(ig) 101 101 102 rho = zpsrf(ig) / (r * tsurf(ig) ) 103 !! Condensation Flux 104 pdqsch4(ig)=(-rho*uv*cdrag*(qsat(ig)-zq_ch4(ig))) 102 !! option to not form any CH4 frost 103 if (no_ch4frost.and.pqsurf(ig,igcm_ch4_ice).lt.5000.) then 105 104 106 if (dayfrac.gt.0.and.zq_n2surf(ig).gt.thresh_non2) then 105 pdqch4(ig)=0. 106 pdqsch4(ig)=0. 107 108 else 109 110 rho = zpsrf(ig) / (r * tsurf(ig) ) 111 !! Condensation Flux 112 pdqsch4(ig)=(-rho*uv*cdrag*(qsat(ig)-zq_ch4(ig))) 113 114 if (dayfrac.gt.0.and.zq_n2surf(ig).gt.thresh_non2) then 107 115 if (dayfrac.gt.1.) then 108 116 pdqsch4(ig)=min(pdqsch4(ig),0.) … … 112 120 endif 113 121 endif 114 endif122 endif 115 123 116 !! Conserve mass if reservoir depleted117 if ((-pdqsch4(ig)*ptimestep).gt.124 !! Conserve mass if reservoir depleted 125 if ((-pdqsch4(ig)*ptimestep).gt. 118 126 & (pqsurf(ig,igcm_ch4_ice))) then 119 127 pdqsch4(ig)=-pqsurf(ig,igcm_ch4_ice)/ptimestep 128 endif 129 130 if (pdqsch4(ig)*ptimestep.gt.zq_ch4(ig)*zpsrf(ig)/g) then 131 pdqsch4(ig)=zq_ch4(ig)/ptimestep*zpsrf(ig)/g 132 endif 133 134 !! Security to avoid large changes in temperatures due to 135 !latent heat 136 if (lw_ch4*pdqsch4(ig)*ptimestep/capcal(ig).gt.1.) then 137 pdqsch4(ig)=1./(lw_ch4*ptimestep)*capcal(ig) 138 endif 139 if (lw_ch4*pdqsch4(ig)*ptimestep/capcal(ig).lt.-1.) then 140 pdqsch4(ig)=-1./(lw_ch4*ptimestep)*capcal(ig) 141 endif 142 !if (pdqsch4(ig)*ptimestep.gt.0.25) then 143 ! pdqsch4(ig)=0.25/ptimestep 144 !endif 145 !if (pdqsch4(ig)*ptimestep.lt.-0.25) then 146 ! pdqsch4(ig)=-0.25/ptimestep 147 !endif 148 149 !! Atm tendency 150 pdqch4(ig)=-pdqsch4(ig)*g/zpsrf(ig) 151 120 152 endif 121 122 if (pdqsch4(ig)*ptimestep.gt.zq_ch4(ig)*zpsrf(ig)/g) then123 pdqsch4(ig)=zq_ch4(ig)/ptimestep*zpsrf(ig)/g124 endif125 126 !! Security to avoid large changes in temperatures due to127 !latent heat128 if (lw_ch4*pdqsch4(ig)*ptimestep/capcal(ig).gt.1.) then129 pdqsch4(ig)=1./(lw_ch4*ptimestep)*capcal(ig)130 endif131 if (lw_ch4*pdqsch4(ig)*ptimestep/capcal(ig).lt.-1.) then132 pdqsch4(ig)=-1./(lw_ch4*ptimestep)*capcal(ig)133 endif134 !if (pdqsch4(ig)*ptimestep.gt.0.25) then135 ! pdqsch4(ig)=0.25/ptimestep136 !endif137 !if (pdqsch4(ig)*ptimestep.lt.-0.25) then138 ! pdqsch4(ig)=-0.25/ptimestep139 !endif140 141 !! Atm tendency142 pdqch4(ig)=-pdqsch4(ig)*g/zpsrf(ig)143 153 144 154 ENDDO -
trunk/LMDZ.PLUTO/libf/phypluto/inifis_mod.F90
r3650 r3652 599 599 if (is_master)write(*,*)trim(rname)//& 600 600 " condmetsurf = ",condmetsurf 601 if (is_master)write(*,*)trim(rname)//& 602 "call no CH4 frost formation?" 603 no_ch4frost=.false. ! default value 604 call getin_p("no_ch4frost",no_ch4frost) 605 if (is_master)write(*,*)trim(rname)//& 606 "no_ch4frost = ",no_ch4frost 601 607 602 608 if (is_master)write(*,*)trim(rname)//&
Note: See TracChangeset
for help on using the changeset viewer.