org.mbari.model.solar
Class FrouinIrradianceModel
java.lang.Object
org.mbari.model.solar.FrouinIrradianceModel
- public class FrouinIrradianceModel
- extends java.lang.Object
|
Method Summary |
double[] |
calcIrradiance(int year,
int month,
int day,
double time,
double lat,
double lon)
Haven't checked this yet |
double[] |
calcIrradiance(long millis,
double lat,
double lon)
|
double[] |
calcIrradiance(long millis,
double lat,
double lon,
double TauA865,
double Angstrom,
double Dobson)
This subroutine calculates the incoming clear-sky solar irradiance
just above the surface at SeaWiFS wavelengths (412, 443, 490, 510,
555, 670 nm), using this equation:
E = E0 * ESfactor * COS(SolZen) * TransG * TransA / (1 - (Sa * As))
where:
E0 = extra-terrestrial solar irradiance (mW/cm^2/um)
ESfactor = Earth-Sun distance factor
SolZen = solar zenith angle (deg). |
double[] |
getWavelength()
|
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
FrouinIrradianceModel
public FrouinIrradianceModel(double[] lambda)
calcIrradiance
public double[] calcIrradiance(long millis,
double lat,
double lon,
double TauA865,
double Angstrom,
double Dobson)
- This subroutine calculates the incoming clear-sky solar irradiance
just above the surface at SeaWiFS wavelengths (412, 443, 490, 510,
555, 670 nm), using this equation:
E = E0 * ESfactor * COS(SolZen) * TransG * TransA / (1 - (Sa * As))
where:
E0 = extra-terrestrial solar irradiance (mW/cm^2/um)
ESfactor = Earth-Sun distance factor
SolZen = solar zenith angle (deg).
TransG = gaseous transmittance
TransA = diffuse atmospheric transmittance
Sa = spherical albedo of the atmosphere
As = albedo of the ocean
[note: Routine estimates SolZen from input parameters.
Valid for 0 -- 90 deg, but for SolZen > 80 deg,
the above formula and the approximations used for the various
atmospheric functions are not very accurate.]
Routine Inputs:
year: 4-digit integer (y2k compliant ;-)
month: 2-digit integer
day: 2-digit integer
hour: decimal GMT hours, 24-hour clock
lat: latitude (deg)
lon: longitude (deg)
TauA865 *: aerosol optical thickness, 865 nm
Angstrom *: Angstrom coefficient ( convention: Angstrom > 0 )
Dobson *: ozone amount in Dobson units
[note: inputs labelled with '*' may be missing. If so, they
should be given values of -999 or less. The subroutine will
fill in appropriate default values.]
Output:
E: surface solar irradiance (mW/cm^2/um)
[note: if the SolZen is found to be > 90 deg (sun below horizon),
then routine fails cleanly. Output 'E' values set to missing
value -999 or less. This should be checked for in the calling
program.]
Sample run input (from a MOBY site):
1998 3 16 23.0 20.83 -157.19 0.08 0.5 325.
Output:
year, month, day, GMT time, lat, lon, sun zenith angle,
and the 6 E's.
1998 3 16 23.000 20.830 -157.190 23.1
133.52 154.19 162.95 159.29 156.78 135.45
Authors: Robert Frouin , scientific algorithms
John McPherson , program structure
References:
Frouin, R., D. W. Ligner, and C. Gautier, 1989: A Simple analytical formula
to compute clear sky total and photosynthetically available solar irradiance
at the ocean surface. J. Geophys. Res., 94, 9731-9742.
Tanre, D., M. Herman, P.-Y. Deschamps, and A. De Leffe, 1979: Atmospheric
modeling for Space measurements of ground reflectances, including
bi-directional properties. Appl. Optics, 18, 21,3587-21,3597.
calcIrradiance
public double[] calcIrradiance(long millis,
double lat,
double lon)
calcIrradiance
public double[] calcIrradiance(int year,
int month,
int day,
double time,
double lat,
double lon)
- Haven't checked this yet
getWavelength
public double[] getWavelength()