Added depth function
This commit is contained in:
parent
3abc34747f
commit
3783770460
|
@ -124,3 +124,17 @@ double specific_volume_anomaly(double salinity, double temperature,
|
|||
|
||||
return sva * 1.0e+8;
|
||||
}
|
||||
|
||||
double depth(double pressure, double latitude)
|
||||
{
|
||||
double x, gr, depth;
|
||||
|
||||
x = sin(latitude / 57.29578);
|
||||
x = x * x;
|
||||
gr = 9.780318 * (1.0 + (5.2788e-3 + 2.36e-5 * x) * x) + 1.092e-6 *
|
||||
pressure;
|
||||
depth = (((-1.82e-15 * pressure + 2.279e-10) * pressure - 2.2512e-5) *
|
||||
pressure + 9.72659) * pressure;
|
||||
|
||||
return depth / gr;
|
||||
}
|
||||
|
|
|
@ -5,5 +5,6 @@ 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);
|
||||
double depth(double pressure, double latitude);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
#define EPSILON 0.00001
|
||||
|
||||
|
||||
static int cmp_double(double x, double y)
|
||||
{
|
||||
return fabs(x - y) < EPSILON;
|
||||
|
@ -57,6 +58,14 @@ START_TEST(test_specific_volume_anomaly)
|
|||
}
|
||||
END_TEST
|
||||
|
||||
START_TEST(test_depth)
|
||||
{
|
||||
ck_assert(cmp_double(depth(500, 0), 496.652992));
|
||||
ck_assert(cmp_double(depth(10000, 30), 9712.653072));
|
||||
ck_assert_msg(cmp_double(depth(10000, 90), 9674.231441));
|
||||
}
|
||||
END_TEST
|
||||
|
||||
|
||||
Suite *oceanography_suite(void)
|
||||
{
|
||||
|
@ -65,6 +74,7 @@ Suite *oceanography_suite(void)
|
|||
tcase_add_test(tc_core, test_salinity);
|
||||
tcase_add_test(tc_core, test_conductivity);
|
||||
tcase_add_test(tc_core, test_specific_volume_anomaly);
|
||||
tcase_add_test(tc_core, test_depth);
|
||||
suite_add_tcase(s, tc_core);
|
||||
|
||||
return s;
|
||||
|
|
Loading…
Reference in New Issue