GEOS_SunGetInsolation
returns the cosine of the solar zenith angle and the
insolation at the top of the atmosphere for the given reference time, latitudes,
longitudes, and orbit. It is overloaded to accept either 1d or 2d
FORTRAN arrays or ESMF arrays of lats and lons and to produce the
corresponding outputs.
The reference time is obtained as follows. If CurrTime is specified, it is used; otherwise, if the optional clock is specified, it is set to the time on that clock. If neither currTime nor clock are given, the time on the attached clock is used.
If the optional time interval is specified, the return values are averages over that interval following the reference time. In this case, the cosine of the solar zenith angle is an insolation-weighted average. The straight average of the zenith angle and the average over the daylight part of the interval (ZTHB,ZTHD) and the values at the beginning and end of the interval (ZTH1,ZTHN) are also optionally available. The last two are supported only for first two (non-ESMF) overloads. PMN Jun 2020: Added optional ZTHP, like ZTHB a pure average of the cosine of the solar zenith angle, except that for ZTHP the value averaged is allowed to be negative (below the horizon). It will be used for Photolysis calculations. Not implemented for ESMF overload.
If the interval is not specified, the values are instantaneous values valid at the reference time.
The optional TIME argument is used to return some specialized insolations. For example, the orbit at any of four Equinox or Solstice positions. If TIME is present, only the time of day is used from the clock, and a time interval, if specified, must be less than 24 hours. It can also be used to return daily-mean insolation for the date on the clock, or the annual-mean insolation for the year on the clock.
The TIME argument can be any of the following:
MAPL_SunAutumnalEquinox
MAPL_SunWinterSolstice
MAPL_SunVernalEquinox
MAPL_SunSummerSolstice
MAPL_SunDailyMean
MAPL_SunAnnualMean
@note Note If ORBIT%EOT is .TRUE., an Equation of Time correction will be applied. This shifts the actual daylight period w.r.t. to mean solar noon, to account for small but cumulative eccentricity and obliquity effects on the actual length of the solar day.
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real, | intent(in) | :: | LONS(:) | |||
real, | intent(in) | :: | LATS(:) | |||
type(MAPL_SunOrbit), | intent(in) | :: | ORBIT | |||
real, | intent(out) | :: | ZTH(:) | |||
real, | intent(out) | :: | SLR(:) | |||
type(ESMF_TimeInterval), | intent(inout), | optional | :: | INTV | ||
type(ESMF_Clock), | intent(in), | optional | :: | CLOCK | ||
integer, | intent(in), | optional | :: | TIME | ||
type(ESMF_Time), | intent(in), | optional | :: | currTime | ||
real, | intent(out), | optional | :: | DIST | ||
real, | intent(out), | optional | :: | ZTHB(:) | ||
real, | intent(out), | optional | :: | ZTHD(:) | ||
real, | intent(out), | optional | :: | ZTH1(:) | ||
real, | intent(out), | optional | :: | ZTHN(:) | ||
real, | intent(out), | optional | :: | ZTHP(:) | ||
real, | intent(in), | optional | :: | STEPSIZE | ||
integer, | intent(out), | optional | :: | RC |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
real, | intent(in) | :: | LONS(:,:) | |||
real, | intent(in) | :: | LATS(:,:) | |||
type(MAPL_SunOrbit), | intent(in) | :: | ORBIT | |||
real, | intent(out) | :: | ZTH(:,:) | |||
real, | intent(out) | :: | SLR(:,:) | |||
type(ESMF_TimeInterval), | intent(inout), | optional | :: | INTV | ||
type(ESMF_Clock), | intent(in), | optional | :: | CLOCK | ||
integer, | intent(in), | optional | :: | TIME | ||
type(ESMF_Time), | intent(in), | optional | :: | currTime | ||
real, | intent(out), | optional | :: | DIST | ||
real, | intent(out), | optional | :: | ZTHB(:,:) | ||
real, | intent(out), | optional | :: | ZTHD(:,:) | ||
real, | intent(out), | optional | :: | ZTH1(:,:) | ||
real, | intent(out), | optional | :: | ZTHN(:,:) | ||
real, | intent(out), | optional | :: | ZTHP(:,:) | ||
real, | intent(in), | optional | :: | STEPSIZE | ||
integer, | intent(out), | optional | :: | RC |
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(ESMF_Array), | intent(in) | :: | LONS | |||
type(ESMF_Array), | intent(in) | :: | LATS | |||
type(MAPL_SunOrbit), | intent(in) | :: | ORBIT | |||
type(ESMF_Array), | intent(out) | :: | ZTH | |||
type(ESMF_Array), | intent(out) | :: | SLR | |||
type(ESMF_TimeInterval), | intent(inout), | optional | :: | INTV | ||
type(ESMF_Clock), | intent(in), | optional | :: | CLOCK | ||
integer, | intent(in), | optional | :: | TIME | ||
type(ESMF_Time), | intent(in), | optional | :: | currTime | ||
real, | intent(out), | optional | :: | DIST | ||
type(ESMF_Array), | intent(out), | optional | :: | ZTHB | ||
type(ESMF_Array), | intent(out), | optional | :: | ZTHD | ||
integer, | intent(out), | optional | :: | RC |
$ character(len=ESMF_MAXSTR) :: IAm = “SunGetInsolationArr” |