! $Id: qsat_fast.code,v 1.1 2005-06-06 17:18:25 f4mjs Exp $ real :: TT, DD integer :: IT, I, J #ifdef LIKE_NCAR #ifdef SCALAR if (TLTMAX) then TT = TMAX else TT = TL end if TT = TT - (TMIN-1) IT = int(TT) Qsat = (TT-IT)*(ESTBLX(IT+1) - ESTBLX(IT)) + ESTBLX(IT) DD = (PL - ERFAC*Qsat) if(DD<.01) DD=.01 Qsat = Qsat / DD #elif RANK_==1 do I=1,size(TL,1) if (TL(I)TMAX) then TT = TMAX else TT = TL(I) end if TT = TT - (TMIN-1) IT = int(TT) Qsat(I) = (TT-IT)*(ESTBLX(IT+1) - ESTBLX(IT)) + ESTBLX(IT) DD = (PL(I) - ERFAC*Qsat(I)) if(DD<.01) DD=.01 Qsat(I) = Qsat(I) / DD end do #elif RANK_==2 do J=1,size(TL,2) do I=1,size(TL,1) if (TL(I,J)TMAX) then TT = TMAX else TT = TL(I,J) end if TT = TT - (TMIN-1) IT = int(TT) Qsat(I,J) = (TT-IT)*(ESTBLX(IT+1) - ESTBLX(IT)) + ESTBLX(IT) DD = (PL(I,J) - ERFAC*Qsat(I,J)) if(DD<.01) DD=.01 Qsat(I,J) = Qsat(I,J) / DD end do end do #endif #else QSAT = GEOS_QSAT(TL,PL) #endif return