Page MenuHomec4science

variables.cpp
No OneTemporary

File Metadata

Created
Mon, Nov 4, 16:58

variables.cpp

#include "catch.hpp"
#include "utils.hpp"
#include "reactmicp/systems/saturated_diffusion/variables.hpp"
#include "reactmicp/meshes/uniform_mesh1d.hpp"
using namespace specmicp;
using namespace specmicp::reactmicp;
using namespace specmicp::reactmicp::systems::siasaturated;
TEST_CASE("SIA Variables", "[Variables, Secondary variables, SIA]") {
std::shared_ptr<database::DataContainer> database = get_test_carbo_database();
int nb_nodes = 5;
mesh::Mesh1DPtr themesh = mesh::uniform_mesh1d(nb_nodes, 1e-3, 0.001);
auto parameters = std::make_shared<SaturatedDiffusionTransportParameters>(nb_nodes, 1e-6, 0.2);
SECTION("Initialization") {
SIASaturatedVariables variables(database, themesh, parameters);
REQUIRE_NOTHROW( variables.component_concentration(0, 2) );
REQUIRE_NOTHROW( variables.component_concentration(2, 2) );
REQUIRE_NOTHROW( variables.component_concentration(4, 4) );
REQUIRE_NOTHROW( variables.component_concentration(3, 1) );
REQUIRE_NOTHROW( variables.log_component_concentration(3, 3) );
REQUIRE_NOTHROW( variables.log_gamma_component(4, 2) );
}
SECTION("Ionic strength computation") {
SIASaturatedVariables variables(database, themesh, parameters);
database::Database database_handler(database);
variables.log_component_concentration(1, database_handler.component_label_to_id("Ca[2+]")) = -3;
variables.log_component_concentration(1, database_handler.component_label_to_id("HO[-]")) = -3;
variables.log_component_concentration(1, database_handler.component_label_to_id("HCO3[-]")) = -3;
variables.log_component_concentration(1, database_handler.component_label_to_id("SiO(OH)3[-]")) = -3;
variables.nodal_ionic_strength(1);
REQUIRE( variables.ionic_strength(1) == (4*1e-3 +3*1e-3)*0.5 );
variables.secondary_concentration(1, database_handler.aqueous_label_to_id("CO3[2-]")) = 1e-2;
variables.nodal_ionic_strength(1);
REQUIRE( variables.ionic_strength(1) == (4*1e-3 +3*1e-3 + 4*1e-2)*0.5 );
variables.secondary_concentration(1, database_handler.aqueous_label_to_id("CO2")) = 1e-1;
variables.nodal_ionic_strength(1);
REQUIRE( variables.ionic_strength(1) == (4*1e-3 +3*1e-3 + 4*1e-2)*0.5 );
}
SECTION("Update") {
SIASaturatedVariables variables(database, themesh, parameters);
EquilibriumState composition = sample_carbo_composition(database);
variables.update_composition(1, composition);
REQUIRE(variables.component_concentration(1, 1) == composition.molality_component(1));
REQUIRE(variables.total_mobile_concentration(1, 1) == composition.total_aqueous_concentration_component(1));
}
}

Event Timeline