FUNCTION profoz(tomsoz, pt, success) c c PROCEDURE NAME: profoz c PROCEDURE TYPE: fortran function c VERSION DATE: 27.VI.97 c c PURPOSE: c Calculates TOMS profile ozone for a given TOMS total ozone above c the terrain. c c The convention in the TOMS data products is to report the total c column ozone above the terrain. However, the ozone values in c the radiative transfer tables (e.g. from tomrad) refer to profiles c that run from the surface to the top of the atmosphere. C. Seftor c provided the values of the tropospheric ozone between 1.0 and 0.4 c atm pressure levels (array tropoz below) for each of the 26 standard c TOMS ozone profiles. c c This program performs a linear interpolation w.r.t. pressure to c determine the profile ozone amount from the TOMS column ozone. c c CALLING PARAMETERS: c Name Type i/o units Description c -------- ---- --- ----- -------------- c profoz R8 o DU Profile ozone c tomsoz R8 i DU TOMS ozone c pt R8 i atm Terrain pressure c success L o Successful completion flag c c NOTES & CAVEATS: c for now, we assume midlatitude profiles, starting with index number 6, c where the ozone value is 125 DU c c REVISION HISTORY: c 27.VI.97 Version reviewed. REAL*4 variables changed to REAL*8 c c============================================================================ IMPLICIT NONE c----------------------------------------------------------------------- c Calling parameters c REAL*8 profoz, tomsoz, pt LOGICAL success c----------------------------------------------------------------------- c Local variables c REAL*8 fp, f, profc INTEGER ic c----------------------------------------------------------------------- c profile tropospheric ozone between 1.0 and 0.4 atm pressure levels c REAL*4 tropoz(0:25) / 2*18.5, 4*18.4, !Low-lat & 11.1, 11.2, 19.7, 20.0, 20.0, 20.0, 19.8, 20.2, 20.5, 21.8, !Mid-lat & 11.1, 11.2, 12.0, 17.4, 17.9, 18.3, 18.7, 19.8, 21.2, 21.8 / !High-lat fp= (1.0-pt)/0.6 ic= int((tomsoz - 125.)/50.) + 6 IF (ic .GT. 14) ic= 14 profc= 125. + 50.*(ic-6) f= (tomsoz - profc + fp*tropoz(ic)) / & (50. - fp*(tropoz(ic+1) - tropoz(ic))) IF (f .GT. 1. .AND. ic .NE. 15) THEN ic= ic + 1 profc= profc + 50. f= (tomsoz - profc + fp*tropoz(ic)) / & (50. - fp*(tropoz(ic+1) - tropoz(ic))) END IF profoz= profc + 50.*f success= .TRUE. RETURN END