Added depth function

This commit is contained in:
Daniele Tricoli 2011-01-15 01:10:12 +01:00
parent 3abc34747f
commit 3783770460
3 changed files with 25 additions and 0 deletions

View File

@ -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;
}

View File

@ -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

View File

@ -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;