!-------------------------------------- LICENCE BEGIN ------------------------------------
!Environment Canada - Atmospheric Science and Technology License/Disclaimer,
! version 3; Last Modified: May 7, 2008.
!This is free but copyrighted software; you can use/redistribute/modify it under the terms
!of the Environment Canada - Atmospheric Science and Technology License/Disclaimer
!version 3 or (at your option) any later version that should be found at:
!http://collaboration.cmc.ec.gc.ca/science/rpn.comm/license.html
!
!This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
!without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
!See the above mentioned License/Disclaimer for more details.
!You should have received a copy of the License/Disclaimer along with this software;
!if not, you can write to: EC-RPN COMM Group, 2121 TransCanada, suite 500, Dorval (Quebec),
!CANADA, H9P 1J3; or send e-mail to service.rpn@ec.gc.ca
!-------------------------------------- LICENCE END --------------------------------------
!
SUBROUTINE VISOCN(SZ,SATZ,RZ,ANISOT,ZLAMB,ZCLOUD,IER) 1,13
***subroutine VISOCN
*
*auteur LOUIS GARAND 1985
*
*REVISION 001 JACQUES HALLE - DDO - DORVAL - 421-4660
* Decembre 1995
* Generaliser pour toutes les plateformes satellitaires.
*
*langage fortran 5
*
*objet THIS ROUTINE PROVIDES THE CORRECTIVE FACTORS FOR THE ANISOTROPY
* OF REFLECTANCE OVER CLEAR OCEAN.
*
*
*appel CALL VISOCN(SZ,SATZ,RZ,ANISOT,ZLAMB,ZCLOUD,IER)
*
*arguments sz - input - SUN ZENITH ANGLE IN DEGREES (0 TO 90)
* satz - input - SATELLITE ZENITH ANGLE (0 TO 90)
* rz - input - RELATIVE ANGLE IN DEGREES (0 TO 180) WITH
* 0 AS BACKSCATTERING AND
* 180 AS FORWARD SCATTERING
* anisot - output - ANISOTROPIC CORRECTIVE FACTOR
* (KHI IN MINNIS-HARRISSON)
* zlamb - output - CORRECTIVE FACTOR FOR LAMBERTIAN REFLECTANCE
* (DELTA """") ZLAMB IS A FUNCTION OF SZ ONLY.
* THIS IS FOR OCEAN SURFACE.
* zcloud - output - SAME AS ZLAMB BUT FOR CLOUD SURFACE
* ier - output - error code (0=ok; -1=problem with interpolation)
*
*notes OBTAINED FROM DR PAT MINNIS,LANGLEY , AND BASED ON THE WORK
* OF MINNIS AND HARRISSON,JCAM 1984,P993.
* THE ROUTINE IS A LOOK UP TABLE ALONG WITH INTERPOLATION ON THE
* THREE ANGLES.
**
implicit none
c
integer ier, i1, i2, j1, j2, k1, k2, l, i, n, m, j, k
c
real SZ, SATZ, RZ, ANISOT ,ZLAMB, ZCLOUD
real pi, fac, cc, d1, d2, slop, cept, x1, x2
real g1, g2
real drm, drcld
real VNORM(11,10,13),S(11),V(10),R(13),DA(2),DD(2)
c
external drcld, drm, lineq
c
DATA S/0.0,18.19,31.79,41.41,49.46,56.63,63.26,69.51,75.52,81.37,
X 87.13/
c
DATA R/0.0,15.0,30.0,45.0,60.0,75.0,90.0,105.0,120.0,135.0,150.0,
X 165.0,180.0/
c
DATA V/0.0,10.0,20.0,30.0,40.0,50.0,60.0,70.0,80.0,90.0/
c
DATA ((VNORM(1,J,K),J=1,10),K=1,13)/
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174,
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174,
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174,
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174,
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174,
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174,
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174,
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174,
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174,
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174,
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174,
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174,
1 2.668,2.210,1.105,0.979,0.810,0.735,0.785,0.979,1.092,1.174/
c
DATA ((VNORM(2,J,K),J=1,10),K=1,13)/
1 1.154, .960, .896, .818, .748, .825, .922,1.018,1.179,1.334,
2 1.154, .954, .838, .799, .735, .786, .883, .960,1.128,1.250,
3 1.514, .973, .825, .786, .722, .754,0.838,0.922,1.063,1.160,
4 1.514,0.967,0.864,0.818,0.715,0.728,0.793,0.876,1.005,1.102,
5 1.514,0.967,0.896,0.889,0.702,0.696,0.773,0.851,0.954,1.038,
6 1.514,1.070,0.986,0.922,0.677,0.696,0.754,0.838,0.922,1.012,
7 1.514,1.270,0.967,0.870,0.677,0.664,0.709,0.773,0.857,0.954,
8 1.514,1.495,1.166,0.960,0.683,0.690,0.728,0.806,0.896,0.999,
9 1.514,1.959,1.534,1.025,0.973,0.709,0.754,0.857,0.954,1.050,
O 1.514,2.165,2.165,1.270,1.038,0.760,0.812,0.902,1.012,1.115,
1 1.514,2.275,2.262,1.688,1.115,0.780,0.857,0.954,1.070,1.173,
2 1.514,2.326,2.520,2.172,1.257,0.812,0.883,1.005,1.108,1.212,
3 1.514,2.359,2.951,2.255,1.411,0.980,0.915,1.050,1.160,1.295/
c
DATA ((VNORM(3,J,K),J=1,10),K=1,13)/
1 0.897,0.792,0.765,0.765,0.778,0.897,0.996,1.095,1.306,1.431,
2 0.897,0.712,0.739,0.745,0.765,0.891,0.970,1.069,1.214,1.359,
3 0.897,0.666,0.699,0.745,0.759,0.811,0.917,1.042,1.148,1.306,
4 0.897,0.646,0.693,0.739,0.693,0.752,0.858,0.989,1.102,1.234,
5 0.897,0.686,0.679,0.726,0.679,0.693,0.792,0.924,1.049,1.154,
6 0.897,0.660,0.673,0.693,0.646,0.660,0.759,0.858,1.003,1.102,
7 0.897,0.673,0.765,0.792,0.712,0.600,0.699,0.811,0.963,1.055,
8 0.897,0.706,0.772,0.917,0.904,0.613,0.726,0.858,1.055,1.121,
9 0.897,0.825,0.924,0.996,0.989,0.686,0.778,0.937,1.115,1.181,
O 0.897,1.036,1.253,1.286,1.260,0.778,0.858,0.996,1.181,1.260,
1 0.897,1.201,1.788,1.986,1.827,0.884,0.851,1.062,1.227,1.333,
2 0.897,1.530,2.249,2.546,2.381,1.352,0.891,1.108,1.286,1.405,
3 0.897,1.854,2.401,3.325,2.559,1.590,0.937,1.168,1.214,1.425/
c
DATA ((VNORM(4,J,K),J=1,10),K=1,13)/
1 0.752,0.800,0.745,0.717,0.759,0.891,1.149,1.309,1.469,1.650,
2 0.752,0.773,0.717,0.703,0.752,0.835,1.065,1.246,1.406,1.552,
3 0.752,0.731,0.689,0.703,0.745,0.814,0.988,1.176,1.323,1.476,
4 0.752,0.689,0.675,0.654,0.696,0.752,0.940,1.100,1.246,1.378,
5 0.752,0.675,0.661,0.633,0.668,0.717,0.877,1.030,1.176,1.309,
6 0.752,0.647,0.640,0.620,0.613,0.682,0.814,0.947,1.107,1.232,
7 0.752,0.633,0.620,0.613,0.606,0.640,0.773,0.898,1.044,1.162,
8 0.752,0.626,0.626,0.626,0.620,0.654,0.821,0.947,1.128,1.225,
9 0.752,0.633,0.633,0.633,0.647,0.675,0.877,1.009,1.183,1.274,
O 0.752,0.682,0.717,0.961,1.023,0.968,0.940,1.142,1.274,1.413,
1 0.752,0.856,1.037,1.434,1.594,1.441,1.044,1.225,1.323,1.545,
2 0.752,1.044,1.295,2.207,1.610,2.311,1.385,1.274,1.441,1.636,
3 0.752,1.079,1.524,2.541,3.564,3.014,1.942,1.462,1.552,1.726/
c
DATA ((VNORM(5,J,K),J=1,10),K=1,13)/
1 0.552,0.588,0.617,0.638,0.724,0.860,1.133,1.362,1.556,1.678,
2 0.552,0.581,0.602,0.617,0.652,0.803,1.075,1.326,1.484,1.592,
3 0.552,0.559,0.588,0.595,0.617,0.731,1.018,1.283,1.412,1.527,
4 0.552,0.531,0.538,0.574,0.595,0.710,0.946,1.240,1.341,1.463,
5 0.552,0.516,0.523,0.552,0.559,0.695,0.911,1.226,1.291,1.412,
6 0.552,0.516,0.523,0.538,0.538,0.652,0.882,1.154,1.240,1.348,
7 0.552,0.516,0.523,0.538,0.523,0.595,0.774,1.075,1.169,1.269,
8 0.552,0.531,0.545,0.552,0.566,0.609,0.817,1.140,1.248,1.369,
9 0.552,0.538,0.545,0.566,0.581,0.645,0.911,1.240,1.319,1.441,
O 0.552,0.566,0.552,0.574,0.710,0.839,0.982,1.298,1.391,2.323,
1 0.552,0.566,0.559,0.710,1.147,1.176,1.040,1.348,1.671,2.674,
2 0.552,0.588,1.133,1.355,2.194,2.803,2.201,2.459,2.904,3.126,
3 0.552,0.710,1.341,1.757,3.026,3.900,4.445,4.503,4.445,4.503/
c
DATA ((VNORM(6,J,K),J=1,10),K=1,13)/
1 0.551,0.627,0.665,0.734,0.826,0.971,1.231,1.537,1.721,1.866,
2 0.551,0.604,0.619,0.665,0.765,0.895,1.185,1.476,1.568,1.652,
3 0.551,0.597,0.604,0.619,0.734,0.849,1.101,1.346,1.453,1.568,
4 0.551,0.581,0.589,0.597,0.665,0.795,1.032,1.262,1.346,1.445,
5 0.551,0.558,0.558,0.566,0.612,0.727,0.987,1.201,1.262,1.399,
6 0.551,0.505,0.505,0.512,0.566,0.696,0.925,1.117,1.185,1.308,
7 0.551,0.474,0.497,0.512,0.535,0.673,0.864,1.048,1.124,1.216,
8 0.551,0.497,0.505,0.520,0.551,0.681,0.902,1.124,1.201,1.323,
9 0.551,0.535,0.535,0.551,0.566,0.711,1.017,1.201,1.269,1.422,
O 0.551,0.535,0.543,0.558,0.704,1.193,1.247,1.285,1.346,1.950,
1 0.551,0.543,0.551,0.581,0.994,1.545,1.583,1.354,2.019,2.883,
2 0.551,0.566,0.612,0.788,1.468,2.233,2.340,2.531,2.983,3.365,
3 0.551,0.658,0.665,1.101,2.134,3.120,4.221,4.856,4.956,5.613/
c
DATA ((VNORM(7,J,K),J=1,10),K=1,13)/
1 0.545,0.606,0.683,0.744,0.798,0.990,1.228,1.704,1.850,2.049,
2 0.545,0.576,0.583,0.714,0.783,0.952,1.144,1.573,1.758,1.888,
3 0.545,0.560,0.568,0.629,0.744,0.875,1.105,1.504,1.642,1.788,
4 0.545,0.553,0.560,0.599,0.629,0.791,1.028,1.420,1.527,1.696,
5 0.545,0.545,0.553,0.599,0.606,0.714,0.990,1.335,1.451,1.581,
6 0.545,0.530,0.537,0.568,0.583,0.683,0.890,1.243,1.351,1.489,
7 0.545,0.491,0.499,0.507,0.576,0.622,0.791,1.182,1.282,1.389,
8 0.545,0.507,0.514,0.507,0.576,0.675,0.890,1.197,1.328,1.451,
9 0.545,0.522,0.537,0.522,0.591,0.760,0.944,1.259,1.389,1.527,
O 0.545,0.537,0.545,0.553,0.614,0.906,1.028,1.389,1.504,2.533,
1 0.545,0.553,0.553,0.576,0.637,1.036,1.550,1.658,1.934,3.277,
2 0.545,0.560,0.568,0.606,1.174,1.781,2.563,3.170,3.791,4.966,
3 0.545,0.591,0.614,1.259,2.065,2.824,3.761,4.498,5.902,6.148/
c
DATA ((VNORM(8,J,K),J=1,10),K=1,13)/
1 0.514,0.539,0.596,0.694,0.832,1.004,1.444,1.869,2.203,2.538,
2 0.514,0.539,0.571,0.645,0.751,0.906,1.387,1.779,2.056,2.317,
3 0.514,0.547,0.555,0.612,0.702,0.824,1.281,1.681,1.934,2.203,
4 0.514,0.539,0.555,0.588,0.653,0.743,1.028,1.404,1.624,2.024,
5 0.514,0.539,0.547,0.555,0.588,0.710,0.889,1.191,1.420,1.820,
6 0.514,0.522,0.522,0.539,0.563,0.710,0.849,1.044,1.208,1.534,
7 0.514,0.481,0.506,0.514,0.539,0.694,0.824,1.028,1.200,1.371,
8 0.514,0.481,0.514,0.547,0.563,0.702,0.898,1.134,1.297,1.501,
9 0.514,0.490,0.514,0.555,0.588,0.726,0.955,1.265,1.379,1.648,
O 0.514,0.547,0.547,0.571,0.604,0.767,1.036,1.355,1.550,3.142,
1 0.514,0.563,0.579,0.604,0.612,0.832,1.909,2.848,3.917,4.790,
2 0.514,0.522,0.563,0.677,0.767,1.420,2.040,3.158,4.863,6.291,
3 0.514,0.588,0.588,0.612,0.824,2.032,3.109,4.969,6.846,7.695/
c
DATA ((VNORM(9,J,K),J=1,10),K=1,13)/
1 0.572,0.608,0.679,0.751,0.831,1.001,1.377,1.913,2.512,2.879,
2 0.572,0.572,0.608,0.679,0.760,0.930,1.243,1.707,2.369,2.700,
3 0.572,0.563,0.590,0.644,0.706,0.831,1.171,1.618,2.190,2.378,
4 0.572,0.554,0.563,0.599,0.662,0.760,1.010,1.502,2.011,2.235,
5 0.572,0.545,0.563,0.590,0.626,0.715,0.885,1.323,1.815,2.119,
6 0.572,0.527,0.554,0.572,0.608,0.670,0.724,1.144,1.618,1.868,
7 0.572,0.545,0.572,0.572,0.599,0.662,0.724,1.117,1.484,1.761,
8 0.572,0.554,0.590,0.599,0.608,0.679,0.760,1.216,1.582,1.922,
9 0.572,0.572,0.599,0.608,0.635,0.715,0.822,1.377,1.707,2.056,
O 0.572,0.590,0.608,0.635,0.662,0.742,0.912,1.529,3.075,4.693,
1 0.572,0.590,0.626,0.644,0.670,0.760,1.109,1.564,3.111,4.702,
2 0.572,0.599,0.644,0.662,0.688,0.822,1.788,2.816,5.346,7.295,
3 0.572,0.608,0.662,0.670,0.715,1.851,3.227,4.810,6.669,9.557/
c
DATA ((VNORM(10,J,K),J=1,10),K=1,13)/
1 0.552,0.606,0.639,0.671,0.704,0.899,1.223,2.479,3.194,3.573,
2 0.552,0.574,0.606,0.628,0.682,0.855,1.148,2.339,2.642,3.378,
3 0.552,0.563,0.552,0.595,0.639,0.834,1.061,2.014,2.404,2.891,
4 0.552,0.563,0.509,0.552,0.628,0.801,0.985,1.689,2.176,2.653,
5 0.552,0.574,0.509,0.520,0.585,0.747,0.888,1.332,1.970,2.458,
6 0.552,0.531,0.509,0.509,0.531,0.682,0.801,1.191,1.819,2.425,
7 0.552,0.498,0.498,0.498,0.520,0.639,0.747,1.126,1.711,2.317,
8 0.552,0.498,0.509,0.509,0.541,0.671,0.780,1.278,1.862,2.598,
9 0.552,0.498,0.509,0.520,0.574,0.693,0.812,1.602,2.035,2.793,
O 0.552,0.520,0.520,0.531,0.595,0.725,0.844,1.916,2.588,3.768,
1 0.552,0.531,0.541,0.574,0.628,0.780,1.039,2.349,3.313,5.652,
2 0.552,0.574,0.563,0.606,0.660,0.812,1.797,3.010,5.478,7.492,
3 0.552,0.650,0.671,0.704,0.801,1.029,2.436,3.465,7.828,10.578/
c
DATA ((VNORM(11,J,K),J=1,10),K=1,13)/
1 0.518,0.576,0.605,0.633,0.662,0.864,1.238,2.620,3.455,3.887,
2 0.518,0.547,0.576,0.576,0.633,0.835,1.123,2.447,2.821,3.656,
3 0.518,0.518,0.518,0.547,0.605,0.806,1.036,2.102,2.533,3.080,
4 0.518,0.518,0.461,0.518,0.576,0.777,0.950,1.727,2.274,2.821,
5 0.518,0.547,0.461,0.489,0.547,0.720,0.864,1.353,2.044,2.591,
6 0.518,0.489,0.461,0.461,0.489,0.662,0.777,1.180,1.871,2.562,
7 0.518,0.461,0.461,0.461,0.489,0.605,0.720,1.123,1.756,2.418,
8 0.518,0.461,0.461,0.461,0.518,0.633,0.749,1.296,1.929,2.764,
9 0.518,0.461,0.461,0.489,0.547,0.662,0.777,1.641,2.130,2.994,
O 0.518,0.489,0.489,0.489,0.547,0.691,0.806,1.986,2.735,4.117,
1 0.518,0.489,0.489,0.547,0.576,0.749,1.008,2.476,3.599,6.334,
2 0.518,0.547,0.518,0.576,0.633,0.777,1.842,3.224,6.132,8.550,
3 0.518,0.605,0.633,0.662,0.777,1.008,2.562,3.771,8.953,12.293/
C
C COMPUTE SUN ZENITH BIN
PI = ACOS(-1.)
FAC = PI/180.
CC = COS(SZ*FAC)
I1 = 12.-(CC+0.05)*10.
I2 = I1+1
IF(I1.GE.11)I1=11
IF(I1.EQ.11)I2=I1
c
C COMPUTE SAT ZENITH BIN
J1 = IFIX(SATZ/10.)+1
J2 = J1+1
IF(J1.EQ.10)J2=J1
c
C COMPUTE RELATIVE AZIMUTH BIN
K1 = RZ/15.+1.
K2 = K1+1
IF(K1.EQ.13)K2=K1
c
C INTERPOLATE
IER = 0
DO 30 L=I1,I2
I = L-I1+1
c
C BETWEEN R'S FOR CONSTANT S
DO 20 N=K1,K2
c
C BETWEEN V'S FOR CONSTANT R AND S
M = N-K1+1
D1 = VNORM(L,J1,N)
D2 = VNORM(L,J2,N)
IF(D1.EQ.D2)THEN
DA(M) = D1
ELSE
CALL LINEQ
(V(J1),V(J2),D1,D2,SLOP,CEPT,IER)
DA(M) = SLOP*SATZ+CEPT
ENDIF
20 CONTINUE
IF(K1.EQ.K2) THEN
DD(I) = DA(1)
ELSE
CALL LINEQ
(R(K1),R(K2),DA(1),DA(2),SLOP,CEPT,IER)
DD(I) = SLOP*RZ+CEPT
ENDIF
30 CONTINUE
c
C BETWEEN S'S USING RESULT OF OTHER INTERPOLATIONS
IF(I1.EQ.I2)THEN
ZLAMB = DRM
(I1)
ZCLOUD = DRCLD
(I1)
ANISOT = DD(1)
ELSE
X1 = COS(S(I1)*FAC)
X2 = COS(S(I2)*FAC)
CALL LINEQ
(X1,X2,DD(1),DD(2),SLOP,CEPT,IER)
ANISOT = SLOP*CC+CEPT
G1 = DRM
(I1)
G2 = DRM
(I2)
CALL LINEQ
(X1,X2,G1,G2,SLOP,CEPT,IER)
ZLAMB = SLOP*CC+CEPT
G1 = DRCLD
(I1)
G2 = DRCLD
(I2)
CALL LINEQ
(X1,X2,G1,G2,SLOP,CEPT,IER)
ZCLOUD = SLOP*CC+CEPT
ENDIF
c
IF(ANISOT.LT.0.) THEN
IER = -1
ANISOT = 1.
ZLAMB = DRM
(I1)
ZCLOUD = DRCLD
(I1)
ENDIF
c
RETURN
END