Added adiabatic_temperature_gradient function

This commit is contained in:
Daniele Tricoli 2011-01-15 03:12:45 +01:00
parent fe1b33507b
commit bd47fb6f18
3 changed files with 28 additions and 0 deletions

View File

@ -179,3 +179,16 @@ double specific_heat(double salinity, double temperature, double pressure)
return cp0 + cp1 + cp2;
}
double adiabatic_temperature_gradient(double salinity, double temperature,
double pressure)
{
salinity = salinity - 35.0;
return (((-2.1687e-16 * temperature + 1.8676e-14) * temperature -
4.6206e-13) * pressure + ((2.7759e-12 * temperature - 1.1351e-10) *
salinity + ((-5.4481e-14 * temperature + 8.733e-12) * temperature -
6.7795e-10) * temperature + 1.8741e-8)) * pressure + (-4.2393e-8 *
temperature + 1.8932e-6) * salinity + ((6.6228e-10 * temperature -
6.836e-8) * temperature + 8.5258e-6) * temperature + 3.5803e-5;
}

View File

@ -8,5 +8,7 @@ double specific_volume_anomaly(double salinity, double temperature,
double depth(double pressure, double latitude);
double freezing_point(double salinity, double pressure);
double specific_heat(double salinity, double temperature, double pressure);
double adiabatic_temperature_gradient(double salinity, double temperature,
double pressure);
#endif

View File

@ -82,6 +82,18 @@ START_TEST(test_specific_heat)
}
END_TEST
START_TEST(test_adiabatic_temperature_gradient)
{
ck_assert(cmp_double(adiabatic_temperature_gradient(25, 0, 0),
1.687100e-05));
ck_assert(cmp_double(adiabatic_temperature_gradient(30, 20, 9000),
2.416120e-04));
ck_assert(cmp_double(adiabatic_temperature_gradient(40, 40, 10000),
3.255976e-04));
}
END_TEST
Suite *oceanography_suite(void)
{
Suite *s = suite_create("Oceanography");
@ -92,6 +104,7 @@ Suite *oceanography_suite(void)
tcase_add_test(tc_core, test_depth);
tcase_add_test(tc_core, test_freezing_point);
tcase_add_test(tc_core, test_specific_heat);
tcase_add_test(tc_core, test_adiabatic_temperature_gradient);
suite_add_tcase(s, tc_core);
return s;