program SSMI c c This program uses algorithms described in chapter 12 c to estimate the rainfall, wind and precipitable water c from SSM/I input data. c 100 sample ssm/i brightness temperatures are given on c a (10,10) grid . All 7 channels are provided . the domain c considered for this input extends from 157.5 east to c 167.625 east and from 0.561 north to 10.654 north . c c Parameters : c c i85chk : is a flag for using the 85 Ghz. channel c isfcl : is a flag for land-sea mask c isfcl = 5 : (ocean) c isfcl = 1 : (vegetated land) c isfcl = 0 : (land) c tb7 : is an input array containing ssm/i data c for the 7 channels ,on a 10x10 matrix. c logical i85chk real tb7(7,10,10),rws(10,10,3) c c Open the input and output files c open (10,file='ssmitb7 ',status='old') open (11,file='rws10.dat',status='unknown') c i85chk = .true. c c Note that all points in this domain are c located over ocean c isfcl = 5 c c Read input data c read(10,'(7f7.2)') tb7 c c Perform calculations one grid point at a time. c do 200 j = 1, 10 do 200 i = 1, 10 c c In the following variable names , the number c refers to the channel and the v and h refers c to the polarization . c rh85 = tb7(1,i,j) rv85 = tb7(2,i,j) rh37 = tb7(3,i,j) rv37 = tb7(4,i,j) rv22 = tb7(5,i,j) rh19 = tb7(6,i,j) rv19 = tb7(7,i,j) c c NOTE : The screening logic for the ocean c and land algorithms follows the reports : c 'Recommended Algorithms for the Retrieval c of Rainfall Rates in the Tropics Using the c SSM/I ( DMSP-8) ' W.S. Olson ,et al.(1990). c And 'DMSP Special Sensor Microwave/Imager c Calibration/Validation' Coordinated by c J.P Hollinger . c c c Initialize the precipitation field. c pcp is given in (mm/hr) c pcp = 0.0 c c Ocean Algorithm c if (isfcl.eq.5 ) then if((-11.7939-.02727*rv37+.09920*rh37).gt.0.0) then c c Use algorithm defined for the 85 Ghz. channel c if(i85chk)then c c Hughes' negative polarization test for bad data. c if((rv85-rh85).lt.-2.) then pcp = 0.0 else pcp = exp ( 3.06231 - .0056036*rv85 + .0029478*rh85 & - .0018119*rv37 - .00750*rv22 + .009755*rv19) & - 8.0 endif else c c Use algorithm defined for the 37 Ghz. channel c pcp = exp (5.10196 - .05378*rv37 + .02766*rh37 & + .01373*rv19) - 2.0 endif endif endif c c Land and vegetated-land Algorithms c if (isfcl.eq.0.or.isfcl.eq.1) then c c Use algorithm defined for the 85 Ghz. channel c if(i85chk) then c c Hughes' negative polarization test for bad data. c if ((rv85-rh85).lt.-2.) then pcp = 0.0 else c c Check for measurments over vegetated land. c if ((rv22-rv19.le.4.0.and.(rv19+rv37)/2.-(rh19+rh37)/2. + .le.4.0.and.rv85-rv37.lt.-1.0.and.rv19.gt.268.) .or. c c Check for measurments over bare land. c + (rv22-rv19.le.4.0.and.(rv19+rv37)/2.-(rh19+rh37)/2. + .gt.4.0.and.rv37-rv19.lt.-3.0.and.rv85-rv37.lt.-5.0 + .and.rh85-rh37.lt.-4.1.and.rv19.gt.268.)) c + pcp = exp(3.29716 - .01290*rv85 + .00877*rh85) + - 8.0 endif else c c Calculations in the case the 85 Ghz. channel is not available. c if((rv22-rv19.le.4.0.and.(rv19+rv37)/2.-(rh19+rh37)/2. + .le.4.0.and.rv37-rv19.lt.-6.4.and.rv19.gt.268.) .or. + (rv22-rv19.le.4.0.and.(rv19+rv37)/2.-(rh19+rh37)/2. + .gt.4.0.and.rv37-rv19.lt.-6.4.and.rv19.gt.268)) + pcp = exp(-17.76849 - .09612*rv37 + .15678*rv19) + - 1.0 endif endif c c Set the precipitation to zero in case it is negative, c and convert it to mm/day. c if (pcp.lt.0.0) pcp = 0.0 pcp = pcp * 24.0 c c Compute wind speed (m/s) c spd = 0.0 if (pcp.le.0.0.and.isfcl.eq.5) ! why & spd = 147.9 + 1.0969*rv19 - 0.455*rv22 & - 1.7600*rv37 + 0.786*rh37 if (spd.lt.0.0) spd = 0.0 c c Compute integrated water vapor (g/cm**2) c wtvap = 0.0 rh19c = 0.948*rh19+8.3 rv19c = 0.927*rv19+12.3 rv22c = 0.91 *rv22+17.4 if (rh19c.lt.280..and.rv19c.lt.280..and.rv22c.lt.280..and. & rh37.lt.280..and.rv37.lt.280..and.isfcl.eq.5) & wtvap = 20.75 - 2.582*log(280.-rh19c) - 0.3919*log(280.-rv19c) & - 3.6100*log(280.-rv22c) + 2.729*log(280.-rh37) & - 0.5118*log(280.-rv37) c c Save calculated values in rws array c and continue for next grid point. c rws(i,j,1) = pcp rws(i,j,2) = wtvap rws(i,j,3) = spd c 200 continue c c Display output c 1001 format(/,15x,'ssm/i rainfall field ',/) 1002 format(/,15x,'ssm/i precipitable water field ',/) 1003 format(/,15x,'ssm/i wind speed field ',/) write (6,1001) write(6,'(10f7.2)') ((rws(i,j,1),i=1,10),j=1,10) write (6,1002) write(6,'(10f7.2)') ((rws(i,j,2),i=1,10),j=1,10) write (6,1003) write(6,'(10f7.2)') ((rws(i,j,3),i=1,10),j=1,10) stop end