SUBROUTINE radlow( rs, sza_v, az_v, sat_v, pt_v, outrad, outtcl, & nout, success) c c PROCEDURE NAME: radlow c PROCEDURE TYPE: fortran subroutine c VERSION DATE: 27.VI.97 c c PURPOSE: c Use interpolation of the low-radiance table to generate a set c of (cloud optical thickness, radiance) pairs for subsequent use c in determining cloud optical thickness from the radiance. c c CALLING PARAMETERS: c Name Type i/o units Description c -------- ---- --- ----- -------------- c rs R8 i frac Surface reflectivity c sza_v R8 i deg Solar zenith angle c az_v R8 i deg Solar-FOV-satellite azimuth angle c sat_v R8 i deg Satellite zenith angle c pt_v R8 i atm Terrain pressure c outrad R8 o I/F radiances at reflectivity wavelength c outtcl R8 o corresponding cloud optical thicknesses c nout I4 o Number of elements in outrad & outtcl c success L o Successful completion flag c c c EXTERNAL ROUTINES REQUIRED: c lagrangeco determine appropriate degree and coefficients c for Lagrange interpolation. c c NOTES & CAVEATS: c c REVISION HISTORY: c 27.VI.97 Documentation added (eac). c c============================================================================ IMPLICIT NONE INTEGER*4 nsza_p, naz_p, nsat_p, ntcl_p, npt_p PARAMETER(nsza_p=11, naz_p=7, nsat_p=9, ntcl_p=5, npt_p=2) c----------------------------------------------------------------------- c Calling parameters c REAL*8 rs, sza_v, az_v, sat_v, pt_v REAL*8 outrad(0:ntcl_l-1), outtcl(0:ntcl_l-1) INTEGER*4 nout LOGICAL success c----------------------------------------------------------------------- c Common blocks c INTEGER*4 nsza_l, naz_l, nsat_l, ntcl_l, npt_l REAL*8 sza_l(0:nsza_p-1), az_l(0:naz_p-1), sat_l(0:nsat_p-1), & tcl_l(0:ntcl_p-1), pt_l(0:npt_p-1), & rad_l(0:nsza_p-1, 0:naz_p-1, 0:nsat_p-1, 0:ntcl_p-1, 0:npt_p-1), & tprm_l(0:nsat_p-1, 0:ntcl_p-1, 0:npt_p-1), & flxd_l(0:nsza_p-1, 0:ntcl_p-1, 0:npt_p-1), & sbar_l(0:ntcl_p-1, 0:npt_p-1) COMMON /radlowcom/ sza_l, az_l, sat_l, tcl_l, pt_l, & rad_l, flxd_l, tprm_l, sbar_l, & nsza_l, naz_l, nsat_l, ntcl_l, npt_l c----------------------------------------------------------------------- c Local variables c REAL*8 szacoef(0:3), azcoef(0:3), satcoef(0:3), ptcoef(0:3) INTEGER*4 sza_0, szadeg, szain INTEGER*4 az_0, azdeg, azin INTEGER*4 sat_0, satdeg, satin INTEGER*4 pt_0, ptdeg, ptin REAL*8 sum INTEGER*4 itcl, isza, iaz, isat, ipt d write(6,*)'> radlow' nout= ntcl_l CALL lagrangeco(sza_v,sza_l,nsza_l,sza_0,szadeg,szacoef,szain) CALL lagrangeco(az_v, az_l, naz_l, az_0, azdeg, azcoef, azin) CALL lagrangeco(sat_v,sat_l,nsat_l,sat_0,satdeg,satcoef,satin) CALL lagrangeco(pt_v,pt_l,npt_l,pt_0,ptdeg,ptcoef,ptin) DO itcl=0, ntcl_l-1 sum=0.d0 DO isza= 0, szadeg DO iaz= 0, azdeg DO isat= 0, satdeg DO ipt= 0, ptdeg d write(6,*)itcl, isza, iaz, isat, ipt sum= sum + & ( & szacoef(isza)*azcoef(iaz)*satcoef(isat)*ptcoef(ipt) & ) * & ( & rad_l(isza+sza_0,iaz+az_0,isat+sat_0,itcl,ipt+pt_0) + & ( & rs*tprm_l(isat+sat_0,itcl,ipt+pt_0)* & flxd_l(isza+sza_0,itcl,ipt+pt_0) & ) / & ( & 1.D0 - rs*sbar_l(itcl,ipt+pt_0) & ) & ) END DO !ipt END DO !isat END DO !iaz END DO !isza outrad(itcl)= sum outtcl(itcl)= tcl_l(itcl) END DO !itcl success=.TRUE. d write(6,*)'< radlow' RETURN END