Page MenuHomec4science

laws.cpp
No OneTemporary

File Metadata

Created
Sun, Oct 6, 12:20

laws.cpp

#include "catch.hpp"
#include "physics/laws.hpp"
using namespace specmicp;
TEST_CASE("Gas perfect") {
SECTION("Pressure") {
REQUIRE(laws::pressure_perfect_gas(1.0, 1.0, 1.0) == Approx(constants::gas_constant));
REQUIRE(laws::pressure_perfect_gas(2.0, 1.0, 1.0) == Approx(2.0*constants::gas_constant));
REQUIRE(laws::pressure_perfect_gas(1.0, 3.0, 1.0) == Approx(constants::gas_constant/3.0));
REQUIRE(laws::pressure_perfect_gas(1.0, 1.0, 4.0) == Approx(constants::gas_constant*4.0));
REQUIRE(laws::pressure_perfect_gas(2.0, 3.0, 4.0) == Approx(2.0*constants::gas_constant*4.0/3.0));
}
SECTION("Mole") {
REQUIRE(laws::mole_perfect_gas(1.0, 1.0, 1.0) == Approx(1.0/constants::gas_constant));
REQUIRE(laws::mole_perfect_gas(2.0, 1.0, 1.0) == Approx(2.0/constants::gas_constant));
REQUIRE(laws::mole_perfect_gas(1.0, 3.0, 1.0) == Approx(3.0/constants::gas_constant));
REQUIRE(laws::mole_perfect_gas(1.0, 1.0, 4.0) == Approx(1.0/(4.0*constants::gas_constant)));
REQUIRE(laws::mole_perfect_gas(2.0, 3.0, 4.0) == Approx(2.0*3.0/(4.0*constants::gas_constant)));
}
}
TEST_CASE("Debye-Huckel") {
SECTION("Debye-Huckel") {
REQUIRE(laws::debye_huckel(1.0, 1.0, 1.0) == Approx(-(constants::Adebye)/(1+constants::Bdebye)));
REQUIRE(laws::debye_huckel(1.0, 2.0, 1.0) == Approx(-(constants::Adebye*4)/(1+constants::Bdebye)));
REQUIRE(laws::debye_huckel(0.1, 1.0, 1.0) == Approx(-(constants::Adebye*0.1)/(1+constants::Bdebye*0.1)));
REQUIRE(laws::debye_huckel(0.1, 2.0, 1.0) == Approx(-(constants::Adebye*0.1*4)/(1+constants::Bdebye*0.1)));
REQUIRE(laws::debye_huckel(1.0, 1.0, 2.0) == Approx(-(constants::Adebye)/(1+constants::Bdebye*1.0*2.0)));
REQUIRE(laws::debye_huckel(0.1, 2.0, 3.0) == Approx(-(constants::Adebye*0.1*4)/(1+constants::Bdebye*0.1*3.0)));
}
SECTION("Extended Debye-Huckel") {
REQUIRE(laws::extended_debye_huckel(1.0, 1.0, 1.0, 1.0, 1.0) ==
Approx(-(constants::Adebye)/(1.0+constants::Bdebye)+1.0*1.0));
REQUIRE(laws::extended_debye_huckel(1.0, 1.0, 2.0, 1.0, 1.0) ==
Approx(-(constants::Adebye*4.0)/(1.0+constants::Bdebye)+1.0*1.0));
REQUIRE(laws::extended_debye_huckel(1.0, 1.0, 1.0, 1.0, 2.0) ==
Approx(-(constants::Adebye*1.0)/(1.0+constants::Bdebye)+1.0*2.0));
REQUIRE(laws::extended_debye_huckel(0.1, 0.01, 1.0, 1.0, 2.0) ==
Approx(-(constants::Adebye*1.0*0.01)/(1.0+constants::Bdebye*0.01)+2.0*0.1));
REQUIRE(laws::extended_debye_huckel(0.01, 0.1, -2.0, 3.0, 2.0) ==
Approx(-(4*constants::Adebye*1.0*0.1)/(1.0+constants::Bdebye*0.1*3.0)+2.0*0.01));
REQUIRE(laws::extended_debye_huckel(0.01, -2.0, 3.0, 2.0) ==
Approx(-(4*constants::Adebye*1.0*0.1)/(1.0+constants::Bdebye*0.1*3.0)+2.0*0.01));
}
}

Event Timeline