This note describes the calibration equations and coefficients for the GOES-8 Imager, based on the GOES Project documentation of GVAR and on a memo by Mike Weinreb at NOAA-NESDIS.
There are ninteen GOES-8 Sounder channels, each with 4 detectors, for a total of 76 sets calibration coefficients. It is busy work to convert convert the raw data to radiances, and then albedo or brightness temperatures.
Radiance = [counts - ScalingBias]/ScalingGain
The biases are fractional floating-point numbers, while the raw counts are 16-bit integers (range 0-65k). So, count-minus-bias differences always have a fractional part, and you never get a pixel that is exactly zero radiance to worry about when computing the brightness temperature from the inverse of the Plank Function. You will get negative radiances, however, due to random noise and calibration errors.
To convert to brightness temperatures, use the inverse Plank function with the wavenumber for the channel (Nu).
The inverse Plank function for brightness temperature is:
Btemp = [c2*Nu]/ln{1+[(c1*Nu^3)/Radiance]}
where
c1 = 2hc^2 = 1.191066E-5 mW/(m^2 sterradian cm^-4)
c2 = hc/k = 1.438833 K/cm^-1
Nu is in wavenumbers cm^-1
Rad is in radiance W/(m^-2 sec sterradian cm^-1)
Btemp is in Kelvin K
NOAA suggests additional fudge factors, C and M, to create a "scene temperature", compensating for the small shift in effective wavenumber with scene brightness.
Tscene = C + M*Btemp
So, each detector has 5 calibration coefficients: Gain, Bias, Nu, C and M. For example, here are the 5 values for Sounder Channel 10 Detector 2:
#define S10D2Nu 1339.150 #define S10D2BtC -0.138050 #define S10D2BtM 1.000410 #define S10D2ScalingGain 1126.22412109375 #define S10D2ScalingBias 900.9794921875A complete set of all 76 groups is listed at the end of this note.
Note that the effective wavenumber (Nu) and scene temperature factors are slightly different for each detector. Curiously, ITT did not supply detector-dependent coefficients for the shortwave channels on GOES-8, and the NOAA sounding group at SSEC does not seem to care. The detector/side information often gets lost before you get the raw data, and so these scene temperature corrections are difficult to apply.
Radiance = m * counts + b
However, we do not yet understand NOAA's coefficients for channel 19.
The m and b values are fractional floating-point numbers, while the raw counts are 10-bit integers. As a side-effect of mixing integers with fractions, you never get a visible pixel that is exactly zero radiance.
To convert a GOES-8 visible Imager radiance (Watts/etc.) to albedo (a fractional value between zero and one), apply the following formula to every detector:
Albedo = c * Radiance
For GOES-8, NOAA declares:
#define SVISRadianceToAlbedo 9.45236E6
However, we do not yet understand this large value.
Sunlight inevitably gets into the Imager's aperture near sub-satellite midnight, confounding the internal calibation system, especially in the shortwave channels from 3.7 to 5 microns. NOAA/NESDIS may time-interpolate the calibration coefficients between the hours before and after midnidnight, since this is better than using sun-contaminated coefficients.
Finally, there is a problem with the infrared emissivity of the scan mirror being angle-dependent. Consequently, outer space appears brighter on one side of the Earth than the other by a few dozen counts, especially in the longwave channels. In June 1995, this mirror emissivity effect will be minimized by new pre-processing software before the data is broadcast in GVAR.
Date: Wed, 28 Feb 1996 11:28:37 +0500
From: mweinreb@nesdis.noaa.gov (Mike Weinreb)
Subject: GOES Calibration Changes
THIS IS IMPORTANT!!
In approximately two weeks, NOAA will migrate ("rehost") the
operational processing for calibrating the GOES-9 sounder to a new computer
at Wallops. This constitutes a major change in the calibration software.
MUCH OF THE EXISTING SOUNDER CALIBRATION WILL BE INCORPORATED IN NEW CODE,
and some modifications in the processing--to alleviate the effects of
certain instrument problems--will be introduced. Also, the way we process
visible data from the both the sounder and the imager will be changed.
THUS, THE IMAGER PROCESSING--FOR THE VISIBLE CHANNEL ONLY--WILL BE AFFECTED,
TOO.
The tentative time and date of the GOES-9 rehost is 1550Z on March
11, 1996. I will keep you informed of any changes in this date.
PLEASE INSPECT YOUR GOES-9 DATA CAREFULLY AFTER 1550Z ON MARCH 11.
Notify me, the sooner the better, if you detect any new problems. Until
March 14, we will be able to move the processing back to the old system
fairly easily if problems occur. After that, we will begin making hardware
changes in the other computers, and it will be harder to go back. We have
been testing, and we continue to test, the new code off line as much as is
practical, but we cannot test under all possible real-life situations. So
there is a chance that some unforeseen problems could surface during the
initial operations.
Assuming the GOES-9 processing is successfully rehosted, we expect
to rehost the GOES-8 processing on or about March 25. I will keep you informed.
The following are the main calibration modifications in the rehosted
software:
SOUNDER
1. A correction for the east-west variation in the reflectance of the
scan mirror in the midwave and longwave channels. This will change the
overall "brightness" of frames slightly and will essentially eliminate the
artificial east-west gradients in those channels.
2. "Relativization" of the data in the visible channel (channel 19).
Relativization equalizes the offsets of the four detectors in this channel
by adjusting their outputs on space to a single time-invariant constant.
Currently, detector-to-detector differences on space are approximately ten
counts (out of 8192), and this causes east-west stripes in the images.
Furthermore, there are diurnal and seasonal cycles, fifteen counts or less
(out of 8192) in amplitude, in the outputs of each detector. Relativization
will reduce the striping on dark scenes and eliminate the diurnal and
seasonal cycles.
3. A change in the procedure for monitoring of the results of the
electronic calibration of the infrared channels. This change will have no
effect on the radiances. Only those who look at the electronic calibration
data in the Sounder ECAL Block 11 in GVAR will notice anything. I can
supply details on request.
First, clip all scene temperatures to be in the range 163K to 330K
Then
Mode-A (counts) = 418K - Tscene (for Tscene between 163K and 242K)
Mode-A (counts) = 660K - 2*Tscene (for Tscene between 242K and 330K)
This inverts the intensity: 330K corresponds to zero counts, while 163K corresponds to 255 counts.
It also maps the warmest 88K into the first 176 counts (0.5K/count), and maps the coldest 80K into the last 80 counts (1.0K/count).
Consequently, typical scene temperatures between 220K and 300K map into middle-grey levels between 200 and 60 counts, respectively.
MODE-A lookup table Tscene (K) ModeA (count) 330 0 329.5 1 329 2 328.5 3 328 4 327.5 5 327 6 326.5 7 326 8 325.5 9 325 10 324.5 11 324 12 323.5 13 323 14 322.5 15 322 16 321.5 17 321 18 320.5 19 320 20 319.5 21 319 22 318.5 23 318 24 317.5 25 317 26 316.5 27 316 28 315.5 29 315 30 314.5 31 314 32 313.5 33 313 34 312.5 35 312 36 311.5 37 311 38 310.5 39 310 40 309.5 41 309 42 308.5 43 308 44 307.5 45 307 46 306.5 47 306 48 305.5 49 305 50 304.5 51 304 52 303.5 53 303 54 302.5 55 302 56 301.5 57 301 58 300.5 59 300 60 299.5 61 299 62 298.5 63 298 64 297.5 65 297 66 296.5 67 296 68 295.5 69 295 70 294.5 71 294 72 293.5 73 293 74 292.5 75 292 76 291.5 77 291 78 290.5 79 290 80 289.5 81 289 82 288.5 83 288 84 287.5 85 287 86 286.5 87 286 88 285.5 89 285 90 284.5 91 284 92 283.5 93 283 94 282.5 95 282 96 281.5 97 281 98 280.5 99 280 100 279.5 101 279 102 278.5 103 278 104 277.5 105 277 106 276.5 107 276 108 275.5 109 275 110 274.5 111 274 112 273.5 113 273 114 272.5 115 272 116 271.5 117 271 118 270.5 119 270 120 269.5 121 269 122 268.5 123 268 124 267.5 125 267 126 266.5 127 266 128 265.5 129 265 130 264.5 131 264 132 263.5 133 263 134 262.5 135 262 136 261.5 137 261 138 260.5 139 260 140 259.5 141 259 142 258.5 143 258 144 257.5 145 257 146 256.5 147 256 148 255.5 149 255 150 254.5 151 254 152 253.5 153 253 154 252.5 155 252 156 251.5 157 251 158 250.5 159 250 160 249.5 161 249 162 248.5 163 248 164 247.5 165 247 166 246.5 167 246 168 245.5 169 245 170 244.5 171 244 172 243.5 173 243 174 242.5 175 242 176 241 177 240 178 239 179 238 180 237 181 236 182 235 183 234 184 233 185 232 186 231 187 230 188 229 189 228 190 227 191 226 192 225 193 224 194 223 195 222 196 221 197 220 198 219 199 218 200 217 201 216 202 215 203 214 204 213 205 212 206 211 207 210 208 209 209 208 210 207 211 206 212 205 213 204 214 203 215 202 216 201 217 200 218 199 219 198 220 197 221 196 222 195 223 194 224 193 225 192 226 191 227 190 228 189 229 188 230 187 231 186 232 185 233 184 234 183 235 182 236 181 237 180 238 179 239 178 240 177 241 176 242 175 243 174 244 173 245 172 246 171 247 170 248 169 249 168 250 167 251 166 252 165 253 164 254 163 255
#define S1D0Nu 680.650 #define S1D0BtC 0.019904 #define S1D0BtM 0.999967 #define S1D0ScalingGain 528.977294921875 #define S1D0ScalingBias 1745.62 #define S1D1Nu 680.750 #define S1D1BtC 0.012638 #define S1D1BtM 0.999994 #define S1D1ScalingGain 528.977294921875 #define S1D1ScalingBias 1745.625 #define S1D2Nu 680.450 #define S1D2BtC 0.022469 #define S1D2BtM 0.999958 #define S1D2ScalingGain 528.977294921875 #define S1D2ScalingBias 1745.625 #define S1D3Nu 680.550 #define S1D3BtC 0.017141 #define S1D3BtM 0.999971 #define S1D3ScalingGain 528.97729492187 #define S1D3ScalingBias 1745.625 #define S2D0Nu 695.750 #define S2D0BtC -0.038501 #define S2D0BtM 1.000128 #define S2D0ScalingGain 540.004882812 #define S2D0ScalingBias 1566.013916015625 #define S2D1Nu 696.05 #define S2D1BtC -0.55461 #define S2D1BtM 1.000166 #define S2D1ScalingGain 540.0048828125 #define S2D1ScalingBias 1566.013916015625 #define S2D2Nu 695.850 #define S2D2BtC -0.045730 #define S2D2BtM 1.000139 #define S2D2ScalingGain 540.004882812 #define S2D2ScalingBias 1566.01391601562 #define S2D3Nu 695.850 #define S2D3BtC -0.046514 #define S2D3BtM 1.000142 #define S2D3ScalingGain 540.0048828125 #define S2D3ScalingBias 1566.013916015625 #define S3D0Nu 711.750 #define S3D0BtC 0.006436 #define S3D0BtM 1.000015 #define S3D0ScalingGain 485.624267578125 #define S3D0ScalingBias 1311.18603515625 #define S3D1Nu 711.950 #define S3D1BtC -0.006230 #define S3D1BtM 1.000045 #define S3D1ScalingGain 485.62426757812 #define S3D1ScalingBias 1311.18603515625 #define S3D2Nu 711.850 #define S3D2BtC -0.010018 #define S3D2BtM 1.000055 #define S3D2ScalingGain 485.62426757812 #define S3D2ScalingBias 1311.18603515625 #define S3D3Nu 711.750 #define S3D3BtC -0.010737 #define S3D3BtM 1.000077 #define S3D3ScalingGain 485.624267578125 #define S3D3ScalingBias 1311.18603515625 #define S4D0Nu 732.450 #define S4D0BtC -0.008454 #define S4D0BtM 1.000059 #define S4D0ScalingGain 394.5751953125 #define S4D0ScalingBias 887.794189453125 #define S4D1Nu 732.450 #define S4D1BtC 0.011943 #define S4D1BtM 0.999979 #define S4D1ScalingGain 394.575195312 #define S4D1ScalingBias 887.79418945312 #define S4D2Nu 732.350 #define S4D2BtC 0.005760 #define S4D2BtM 1.000018 #define S4D2ScalingGain 394.5751953125 #define S4D2ScalingBias 887.794189453125 #define S4D3Nu 732.450 #define S4D3BtC -0.005157 #define S4D3BtM 1.000053 #define S4D3ScalingGain 394.5751953125 #define S4D3ScalingBias 887.794189453125 #define S5D0Nu 747.450 #define S5D0BtC -0.008830 #define S5D0BtM 1.000044 #define S5D0ScalingGain 357.802001953125 #define S5D0ScalingBias 787.164306640625 #define S5D1Nu 747.550 #define S5D1BtC -0.025683 #define S5D1BtM 1.000096 #define S5D1ScalingGain 357.802001953125 #define S5D1ScalingBias 787.164306640625 #define S5D2Nu 747.450 #define S5D2BtC -0.009995 #define S5D2BtM 1.000051 #define S5D2ScalingGain 357.802001953125 #define S5D2ScalingBias 787.164306640625 #define S5D3Nu 747.750 #define S5D3BtC -0.036353 #define S5D3BtM 1.000113 #define S5D3ScalingGain 357.802001953125 #define S5D3ScalingBias 787.164306640625 #define S6D0Nu 791.350 #define S6D0BtC -0.131993 #define S6D0BtM 1.000354 #define S6D0ScalingGain 334.1748046875 #define S6D0ScalingBias 417.718505859375 #define S6D1Nu 790.350 #define S6D1BtC -0.089511 #define S6D1BtM 1.000277 #define S6D1ScalingGain 334.1748046875 #define S6D1ScalingBias 417.718505859375 #define S6D2Nu 790.350 #define S6D2BtC -0.085445 #define S6D2BtM 1.000270 #define S6D2ScalingGain 334.1748046875 #define S6D2ScalingBias 417.718505859375 #define S6D3Nu 790.550 #define S6D3BtC -0.087292 #define S6D3BtM 1.000270 #define S6D3ScalingGain 334.1748046875 #define S6D3ScalingBias 417.718505859375 #define S7D0Nu 827.550 #define S7D0BtC 0.029007 #define S7D0BtM 1.000240 #define S7D0ScalingGain 311.522705078125 #define S7D0ScalingBias 249.21800231933594 #define S7D1Nu 829.250 #define S7D1BtC -0.120689 #define S7D1BtM 1.000499 #define S7D1ScalingGain 311.522705078125 #define S7D1ScalingBias 249.21800231933594 #define S7D2Nu 830.350 #define S7D2BtC -0.189531 #define S7D2BtM 1.000616 #define S7D2ScalingGain 311.522705078125 #define S7D2ScalingBias 249.21800231933594 #define S7D3Nu 827.550 #define S7D3BtC -0.004756 #define S7D3BtM 1.000293 #define S7D3ScalingGain 311.522705078125 #define S7D3ScalingBias 249.21800231933594 #define S8D0Nu 907.550 #define S8D0BtC -0.199301 #define S8D0BtM 1.000511 #define S8D0ScalingGain 314.603271484375 #define S8D0ScalingBias 251.68260192871094 #define S8D1Nu 906.850 #define S8D1BtC -0.182261 #define S8D1BtM 1.000510 #define S8D1ScalingGain 314.603271484375 #define S8D1ScalingBias 251.68260192871094 #define S8D2Nu 906.150 #define S8D2BtC -0.148690 #define S8D2BtM 1.000478 #define S8D2ScalingGain 314.603271484375 #define S8D2ScalingBias 251.68260192871094 #define S8D3Nu 906.750 #define S8D3BtC -0.142073 #define S8D3BtM 1.000456 #define S8D3ScalingGain 314.603271484375 #define S8D3ScalingBias 251.68260192871094 #define S9D0Nu 1029.350 #define S9D0BtC -0.028735 #define S9D0BtM 1.000121 #define S9D0ScalingGain 434.351806640625 #define S9D0ScalingBias 716.680419921875 #define S9D1Nu 1029.250 #define S9D1BtC -0.038677 #define S9D1BtM 1.000140 #define S9D1ScalingGain 434.351806640625 #define S9D1ScalingBias 716.680419921875 #define S9D2Nu 1029.650 #define S9D2BtC -0.040076 #define S9D2BtM 1.000141 #define S9D2ScalingGain 434.351806640625 #define S9D2ScalingBias 716.680419921875 #define S9D3Nu 1029.650 #define S9D3BtC -0.032243 #define S9D3BtM 1.000120 #define S9D3ScalingGain 434.351806640625 #define S9D3ScalingBias 716.680419921875 #define S10D0Nu 1339.450 #define S10D0BtC -0.138544 #define S10D0BtM 1.000387 #define S10D0ScalingGain 1126.22412109375 #define S10D0ScalingBias 900.9794921875 #define S10D1Nu 1339.450 #define S10D1BtC -0.140583 #define S10D1BtM 1.000394 #define S10D1ScalingGain 1126.22412109375 #define S10D1ScalingBias 900.9794921875 #define S10D2Nu 1339.150 #define S10D2BtC -0.138050 #define S10D2BtM 1.000410 #define S10D2ScalingGain 1126.22412109375 #define S10D2ScalingBias 900.9794921875 #define S10D3Nu 1339.750 #define S10D3BtC 0.152064 #define S10D3BtM 1.000376 #define S10D3ScalingGain 1126.22412109375 #define S10D3ScalingBias 900.9794921875 #define S11D0Nu 1422.350 #define S11D0BtC -0.252788 #define S11D0BtM 1.000700 #define S11D0ScalingGain 1899.56494140625 #define S11D0ScalingBias 1139.739013671875 #define S11D1Nu 1420.650 #define S11D1BtC -0.2111198 #define S11D1BtM 1.000795 #define S11D1ScalingGain 1899.56494140625 #define S11D1ScalingBias 1139.739013671875 #define S11D2Nu 1421.850 #define S11D2BtC -0.247773 #define S11D2BtM 1.000698 #define S11D2ScalingGain 1899.56494140625 #define S11D2ScalingBias 1139.739013671875 #define S11D3Nu 1421.050 #define S11D3BtC -0.232015 #define S11D3BtM 1.000759 #define S11D3ScalingGain 1899.56494140625 #define S11D3ScalingBias 1139.739013671875 #define S12D0Nu 1535.050 #define S12D0BtC -0.166728 #define S12D0BtM 1.000268 #define S12D0ScalingGain 2874.342041015625 #define S12D0ScalingBias 2155.757080078125 #define S12D1Nu 1537.450 #define S12D1BtC -0.234580 #define S12D1BtM 1.000101 #define S12D1ScalingGain 2874.342041015625 #define S12D1ScalingBias 2155.757080078125 #define S12D2Nu 1535.250 #define S12D2BtC -0.139640 #define S12D2BtM 1.000294 #define S12D2ScalingGain 2874.342041015625 #define S12D2ScalingBias 2155.757080078125 #define S12D3Nu 1536.250 #define S12D3BtC -0.162133 #define S12D3BtM 1.000206 #define S12D3ScalingGain 2874.342041015625 #define S12D3ScalingBias 2155.757080078125 #define S13D0Nu 2184.750 #define S13D0BtC -0.019012 #define S13D0BtM 1.000084 #define S13D0ScalingGain 9642.74609375 #define S13D0ScalingBias 626.778564453125 #define S13D1Nu 2184.750 #define S13D1BtC -0.19012 #define S13D1BtM 1.000084 #define S13D1ScalingGain 9642.74609375 #define S13D1ScalingBias 626.778564453125 #define S13D2Nu 2184.750 #define S13D2BtC -0.019012 #define S13D2BtM 1.000084 #define S13D2ScalingGain 9642.74609375 #define S13D2ScalingBias 626.778564453125 #define S13D3Nu 2184.750 #define S13D3BtC 0.019012 #define S13D3BtM 1.000084 #define S13D3ScalingGain 9642.74609375 #define S13D3ScalingBias 626.778564453125 #define S14D0Nu 2207.550 #define S14D0BtC 0.014675 #define S14D0BtM 0.999987 #define S14D0ScalingGain 14105.37890625 #define S14D0ScalingBias 916.849609375 #define S14D1Nu 2207.550 #define S14D1BtC -0.14675 #define S14D1BtM 0.999987 #define S14D1ScalingGain 14105.37890625 #define S14D1ScalingBias 916.849609375 #define S14D2Nu 2207.550 #define S14D2BtC -0.14675 #define S14D2BtM 0.999987 #define S14D2ScalingGain 14105.37890625 #define S14D2ScalingBias 916.849609375 #define S14D3Nu 2207.550 #define S14D3BtC -0.14675 #define S14D3BtM 0.999987 #define S14D3ScalingGain 14105.37890625 #define S14D3ScalingBias 916.849609375 #define S15D0Nu 2247.550 #define S15D0BtC -0.033804 #define S15D0BtM 0.999936 #define S15D0ScalingGain 26221.33984375 #define S15D0ScalingBias 1704.386962890625 #define S15D1Nu 2247.550 #define S15D1BtC -0.33804 #define S15D1BtM 0.999936 #define S15D1ScalingGain 26221.33984375 #define S15D1ScalingBias 1704.386962890625 #define S15D2Nu 2247.550 #define S15D2BtC -0.033804 #define S15D2BtM 0.999936 #define S15D2ScalingGain 26221.33984375 #define S15D2ScalingBias 1704.386962890625 #define S15D3Nu 2247.550 #define S15D3BtC -0.033804 #define S15D3BtM 0.999936 #define S15D3ScalingGain 26221.33984375 #define S15D3ScalingBias 1704.386962890625 #define S16D0Nu 2422.050 #define S16D0BtC -0.054633 #define S16D0BtM 0.999976 #define S16D0ScalingGain 10720.6015625 #define S16D0ScalingBias 428.823974609375 #define S16D1Nu 2422.050 #define S16D1BtC -0.054633 #define S16D1BtM 0.999976 #define S16D1ScalingGain 10720.6015625 #define S16D1ScalingBias 428.823974609375 #define S16D2Nu 2422.050 #define S16D2BtC -0.054633 #define S16D2BtM 0.999976 #define S16D2ScalingGain 10720.6015625 #define S16D2ScalingBias 428.823974609375 #define S16D3Nu 2422.050 #define S16D3BtC -0.054633 #define S16D3BtM 0.999976 #define S16D3ScalingGain 10720.6015625 #define S16D3ScalingBias 428.823974609375 #define S17D0Nu 2509.350 #define S17D0BtC -0.059776 #define S17D0BtM 1.000129 #define S17D0ScalingGain 12136.109375 #define S17D0ScalingBias 497.58056640625 #define S17D1Nu 2509.350 #define S17D1BtC -0.059776 #define S17D1BtM 1.000129l #define S17D1ScalingGain 12136.109375 #define S17D1ScalingBias 497.58056640625 #define S17D2Nu 2509.350 #define S17D2BtC -0.059776 #define S17D2BtM 1.000129 #define S17D2ScalingGain 12136.109375 #define S17D2ScalingBias 497.58056640625 #define S17D3Nu 2509.350 #define S17D3BtC -0.059776 #define S17D3BtM 1.000129 #define S17D3ScalingGain 12136.109375 #define S17D3ScalingBias 497.58056640625 #define S18D0Nu 2664.650 #define S18D0BtC -0.341234 #define S18D0BtM 1.000939 #define S18D0ScalingGain 19358.12890625 #define S18D0ScalingBias 348.4462890625 #define S18D1Nu 2644.650 #define S18D1BtC -0.341234 #define S18D1BtM 1.000939 #define S18D1ScalingGain 19358.12890625 #define S18D1ScalingBias 348.4462890625 #define S18D2Nu 2664.650 #define S18D2BtC -0.341234 #define S18D2BtM 1.000939 #define S18D2ScalingGain 19358.12890625 #define S18D2ScalingBias 348.4462890625 #define S18D3Nu 2664.650 #define S18D3BtC -0.341234 #define S18D3BtM 1.000939 #define S18D3ScalingGain 19358.12890625 #define S18D3ScalingBias 348.4462890625 #define SVISRadianceToAlbedo 9.45236E6 #define S19D0Nu 0.697 #define S19D0BtC -0.000257 #define S19D0BtM 0.999424 #define S19D0ScalingM 0.064825296401977539 #define S19D0ScalingC -60.329986572265625 #define S19D1Nu 0.697 #define S19D1BtC -0.000257 #define S19D1BtM 0.999424 #define S19D1ScalingM 0.06522214412689209 #define S19D1ScalingC -60.159988403320313 #define S19D2Nu 0.697 #define S19D2BtC -0.000257 #define S19D2BtM 0.999424 #define S19D2ScalingM 0.065602421760559082 #define S19D2ScalingC -61.769989013671875 #define S19D3Nu 0.697 #define S19D3BtC -0.000257 #define S19D3BtM 0.999424 #define S19D3ScalingM 0.066420197486877441 #define S19D3ScalingC -61.499984741210938