Changeset 2724 for trunk/LMDZ.GENERIC
- Timestamp:
- Jun 21, 2022, 11:05:46 AM (3 years ago)
- Location:
- trunk/LMDZ.GENERIC/libf/phystd
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/libf/phystd/condensation_generic_mod.F90
r2722 r2724 5 5 6 6 subroutine condensation_generic(ngrid,nlayer,nq,ptimestep, pplev, pplay, & 7 pt, pq, pdt, pdq, pdtlsc, pdqvaplsc, pdqliqlsc )7 pt, pq, pdt, pdq, pdtlsc, pdqvaplsc, pdqliqlsc, rneb) 8 8 use ioipsl_getin_p_mod, only: getin_p !-> to get the metallicity 9 9 use generic_cloud_common_h … … 43 43 REAL, intent(out) :: pdqvaplsc(ngrid,nlayer,nq) ! incrementation de la vapeur du traceur 44 44 REAL, intent(out) :: pdqliqlsc(ngrid,nlayer,nq) ! incrementation du traceur liquide 45 REAL, intent(out) :: rneb(ngrid,nlayer,nq) ! fraction nuageuse 45 46 46 47 ! Options : … … 95 96 qevap(1:ngrid,1:nlayer,1:nq)=0.0 96 97 tevap(1:ngrid,1:nlayer)=0.0 98 rneb(1:ngrid,1:nlayer,1:nq) = 0.0 97 99 ! Let's loop on tracers 98 100 do iq=1,nq … … 138 140 End do ! niter 139 141 zcond(i)=MAX(zcond(i),-(pq(i,k,igcm_generic_ice)+pdq(i,k,igcm_generic_ice)*ptimestep)) 142 143 if (zcond(i) .gt. 0.) then 144 rneb(i,k,iq)=1 145 else 146 rneb(i,k,iq)=0. 147 endif 148 140 149 zcond(i) = zcond(i)/ptimestep 141 150 ENDDO ! i=1,ngrid -
trunk/LMDZ.GENERIC/libf/phystd/physiq_mod.F90
r2722 r2724 17 17 use radinc_h, only : L_NSPECTI,L_NSPECTV,naerkind 18 18 use watercommon_h, only : RLVTT, Psat_water,epsi,su_watercycle, RV, T_h2o_ice_liq 19 use generic_cloud_common_h, only : Psat_generic 19 20 use thermcell_mod, only: init_thermcell_mod 20 21 use gases_h, only: gnom, gfrac … … 415 416 real RH(ngrid,nlayer) ! Relative humidity. 416 417 real psat_tmp 418 419 real qsat_generic(ngrid,nlayer,nq) ! generic condensable tracers (GCS) specific concentration at saturation (kg/kg_of_air). 420 real RH_generic(ngrid,nlayer,nq) ! generic condensable tracers (GCS) Relative humidity. 421 real rneb_generic(ngrid,nlayer,nq) ! GCS cloud fraction (generic condensation). 422 real psat_tmp_generic 423 real metallicity 417 424 418 425 logical clearsky ! For double radiative transfer call. By BC … … 1559 1566 call condensation_generic(ngrid,nlayer,nq,ptimestep,pplev,pplay, & 1560 1567 pt,pq,pdt,pdq,dtlscale_generic, & 1561 dqvaplscale_generic,dqcldlscale_generic )1568 dqvaplscale_generic,dqcldlscale_generic,rneb_generic) 1562 1569 pdt(1:ngrid,1:nlayer) = pdt(1:ngrid,1:nlayer)+dtlscale_generic(1:ngrid,1:nlayer) 1563 1570 pdq(1:ngrid,1:nlayer,1:nq) = pdq(1:ngrid,1:nlayer,1:nq)+dqvaplscale_generic(1:ngrid,1:nlayer,1:nq) … … 1573 1580 if (is_master) print*,'In generic condensation atmospheric energy change =',dEtot,' W m-2' 1574 1581 end if 1582 1583 if (.not. water) then ! Compute GCS cloud fraction. For now we can not have both water cloud fraction and GCS cloud fraction 1584 1585 ! Let's loop on tracers 1586 do iq=1,nq 1587 1588 call generic_tracer_index(nq,iq,igcm_generic_vap,igcm_generic_ice,call_ice_vap_generic) 1589 1590 if (call_ice_vap_generic) then ! to call only one time the ice/vap pair of a tracer 1591 do l = 1, nlayer 1592 do ig=1,ngrid 1593 cloudfrac(ig,l)=MAX(rneb_generic(ig,l,iq),rneb_man(ig,l)) 1594 ! To be improved : for now, cloudfrac is only the cloudfrac of the last generic tracer 1595 ! Because it is rewritten every tracer 1596 ! One should create a cloudfrac_generic(ngrid,nlayer,nq) 1597 enddo 1598 enddo 1599 endif 1600 end do ! do iq=1,nq loop on tracers 1601 endif ! .not. water 1602 1575 1603 endif !generic_condensation 1576 1604 … … 2083 2111 endif ! end of 'water' 2084 2112 2113 ! Calculate RH_generic (Generic Relative Humidity) for diagnostic. 2114 if(generic_condensation)then 2115 do iq=1,nq 2116 2117 call generic_tracer_index(nq,iq,igcm_generic_vap,igcm_generic_ice,call_ice_vap_generic) 2118 2119 if (call_ice_vap_generic) then ! to call only one time the ice/vap pair of a tracer 2120 2121 do l = 1, nlayer 2122 do ig=1,ngrid 2123 metallicity = 0. 2124 call Psat_generic(zt(ig,l),pplay(ig,l),metallicity,psat_tmp_generic,qsat_generic(ig,l,iq)) 2125 RH_generic(ig,l,iq) = zq(ig,l,igcm_generic_vap) / qsat_generic(ig,l,iq) 2126 enddo 2127 enddo 2128 2129 end if 2130 2131 end do ! iq=1,nq 2132 2133 endif ! end of 'generic_condensation' 2134 2085 2135 2086 2136 if (is_master) print*,'--> Ls =',zls*180./pi … … 2423 2473 call writediagfi(ngrid,"snow","snowfall","kg m-2 s-1",2,zdqssnow) 2424 2474 call writediagfi(ngrid,"reevap","reevaporation of precipitation","kg m-2 s-1",2,reevap_precip) 2475 endif 2476 2477 if(generic_condensation)then 2478 call writediagfi(ngrid,"rneb_generic","GCS cloud fraction (generic condensation)"," ",3,rneb_generic) 2479 call writediagfi(ngrid,"CLF","GCS cloud fraction"," ",3,cloudfrac) 2480 call writediagfi(ngrid,"RH_generic","GCS relative humidity"," ",3,RH_generic) 2425 2481 endif 2426 2482
Note: See TracChangeset
for help on using the changeset viewer.