! $Header$ SUBROUTINE q_sat(np,temp,pres,qsat) IMPLICIT none !====================================================================== ! Autheur(s): Z.X. Li (LMD/CNRS) ! reecriture vectorisee par F. Hourdin. ! Objet: calculer la vapeur d'eau saturante (formule Centre Euro.) !====================================================================== ! Arguments: ! kelvin---input-R: temperature en Kelvin ! millibar--input-R: pression en mb ! q_sat----output-R: vapeur d'eau saturante en kg/kg !====================================================================== integer :: np REAL :: temp(np),pres(np),qsat(np) REAL :: r2es PARAMETER (r2es=611.14 *18.0153/28.9644) REAL :: r3les, r3ies, r3es PARAMETER (R3LES=17.269) PARAMETER (R3IES=21.875) REAL :: r4les, r4ies, r4es PARAMETER (R4LES=35.86) PARAMETER (R4IES=7.66) REAL :: rtt PARAMETER (rtt=273.16) REAL :: retv PARAMETER (retv=28.9644/18.0153 - 1.0) real :: zqsat integer :: ip ! ------------------------------------------------------------------ do ip=1,np ! write(*,*)'kelvin,millibar=',kelvin,millibar ! write(*,*)'temp,pres=',temp(ip),pres(ip) IF (temp(ip) <= rtt) THEN r3es = r3ies r4es = r4ies ELSE r3es = r3les r4es = r4les ENDIF zqsat=r2es/pres(ip)*EXP(r3es*(temp(ip)-rtt)/(temp(ip)-r4es)) zqsat=MIN(0.5,ZQSAT) zqsat=zqsat/(1.-retv *zqsat) qsat(ip)= zqsat ! write(*,*)'qsat=',qsat(ip) enddo END SUBROUTINE q_sat