cantera/test/transport/transportModels.cpp

52 lines
1.6 KiB
C++

#include "gtest/gtest.h"
#include "cantera/transport/TransportFactory.h"
#include "cantera/thermo/ThermoFactory.h"
using namespace Cantera;
class WaterTransportTest : public testing::Test
{
public:
WaterTransportTest() {
phase = newPhase("liquid-water.xml");
tran = newDefaultTransportMgr(phase);
}
void check_viscosity(double T, double P, double mu_expected) {
phase->setState_TP(T + 273.15, P);
EXPECT_NEAR(tran->viscosity(), mu_expected, 2e-7);
}
void check_thermal_conductivity(double T, double P, double lambda_expected) {
phase->setState_TP(T + 273.15, P);
EXPECT_NEAR(tran->thermalConductivity(), lambda_expected, 3e-4);
}
ThermoPhase* phase;
Transport* tran;
};
// Reference values taken from tables in the Sengers and Watson paper
// (doi:10.1063/1.555763) which is the source of the interpolating equations.
TEST_F(WaterTransportTest, viscosity)
{
check_viscosity(25, 1e5, 890.5e-6);
check_viscosity(100, 5e5, 281.9e-6);
check_viscosity(100, 1e7, 284.5e-6);
check_viscosity(250, 5e6, 106.4e-6);
check_viscosity(250, 5e7, 117.5e-6);
check_viscosity(350, 1.75e7, 67.0e-6);
check_viscosity(400, 1.5e7, 24.93e-6);
}
TEST_F(WaterTransportTest, thermal_conductivity)
{
check_thermal_conductivity(25, 1e5, 0.6072);
check_thermal_conductivity(100, 5e5, 0.6793);
check_thermal_conductivity(100, 1e7, 0.6845);
check_thermal_conductivity(250, 5e6, 0.6227);
check_thermal_conductivity(250, 5e7, 0.6721);
check_thermal_conductivity(350, 1.75e7, 0.4523);
check_thermal_conductivity(400, 1.5e7, 0.08068);
}