Added specific volume anomaly (svan) function with pressure=0 case
This commit is contained in:
parent
da253867e3
commit
ccc8b31ffc
|
@ -66,3 +66,31 @@ double conductivity(double salinity, double temperature, double pressure)
|
|||
|
||||
return 0.5 * r / A(temperature);
|
||||
}
|
||||
|
||||
double specific_volume_anomaly(double salinity, double temperature,
|
||||
double pressure, double *sigma)
|
||||
{
|
||||
double sig, sr, r1, r2, r3, r4;
|
||||
double a, b, c, d, e, a1, b1, aw, bw, k, ko, kw, k35, v350p, sva;
|
||||
|
||||
double r3500 = 1028.1063;
|
||||
double dr350 = 28.106331;
|
||||
r4 = 4.8314e-4;
|
||||
|
||||
pressure = pressure / 10.;
|
||||
sr = sqrt(fabs(salinity));
|
||||
|
||||
r1 = ((((6.536332e-9 * temperature - 1.120083e-6) * temperature +
|
||||
1.001685e-4) * temperature - 9.095290e-3) * temperature +
|
||||
6.793952e-2) * temperature - 28.263737;
|
||||
r2 = (((5.3875e-9 * temperature - 8.2467e-7) * temperature + 7.6438e-5) *
|
||||
temperature - 4.0899e-3) * temperature + 8.24493e-1;
|
||||
r3 = (-1.6546e-6 * temperature + 1.0227e-4) * temperature - 5.72466e-3;
|
||||
sig = (r4 * salinity + r3 * sr + r2) * salinity + r1;
|
||||
v350p = 1.0 / r3500;
|
||||
sva = -sig * v350p / (r3500 + sig);
|
||||
*sigma = sig + dr350;
|
||||
if (pressure == 0.0)
|
||||
return sva * 1.0e+8;
|
||||
|
||||
}
|
||||
|
|
|
@ -3,5 +3,7 @@
|
|||
|
||||
double salinity(double conductivity, double temperature, double pressure);
|
||||
double conductivity(double salinity, double temperature, double pressure);
|
||||
double specific_volume_anomaly(double salinity, double temperature,
|
||||
double pressure, double *sigma);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -35,12 +35,24 @@ START_TEST(test_conductivity)
|
|||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_specific_volume_anomaly)
|
||||
{
|
||||
double sigma;
|
||||
ck_assert(cmp_double(specific_volume_anomaly(0, 0, 0, &sigma),
|
||||
2749.539368));
|
||||
ck_assert(cmp_double(sigma, -0.1574));
|
||||
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
||||
Suite *oceanography_suite(void)
|
||||
{
|
||||
Suite *s = suite_create("Oceanography");
|
||||
TCase *tc_core = tcase_create("Core");
|
||||
tcase_add_test(tc_core, test_salinity);
|
||||
tcase_add_test(tc_core, test_conductivity);
|
||||
tcase_add_test(tc_core, test_specific_volume_anomaly);
|
||||
suite_add_tcase(s, tc_core);
|
||||
|
||||
return s;
|
||||
|
|
Loading…
Reference in New Issue