Page MenuHomec4science

database.hpp
No OneTemporary

File Metadata

Created
Mon, Jul 1, 16:38

database.hpp

/*-------------------------------------------------------
- Module : database
- File : database.hpp
- Author : Fabien Georget
Copyright (c) 2014, Fabien Georget, Princeton University
---------------------------------------------------------*/
#ifndef SPECMICP_DATABASE_DATABASE_HPP
#define SPECMICP_DATABASE_DATABASE_HPP
//! \file database.hpp Database management
#include "reader.hpp"
namespace specmicp {
//! \namespace database Database management
namespace database {
//! \brief Database management
//!
//! Prepare the database for the computation
class Database
{
public:
Database(std::string filepath) {
DataReader reader(filepath);
reader.parse();
data = reader.get_database();
}
//! \brief Transform the database into canonical form
//!
//! This process is necessary before any computation
void make_canonical() {
make_aqueous_canonical();
make_mineral_canonical();
}
//! \brief Return the database
//!
//! Return a smart pointer of a DataCotnainer instance
//! Note : this is a read write access, be careful
std::shared_ptr<DataContainer> get_database() {return data;}
//! \brief Change the basis
//!
//! @param new_basis list of id of the new basis
//!
//! The new basis is a list of id, id = id_component for no swapping
//! or id = id_aqueous + nb_component for swapping a secondary species
void change_basis(std::vector<int> new_basis);
//! \brief Remove components non present in the system
void remove_components(const std::vector<int>& id_components_to_remove);
private:
//! \brief transform the aqueous system into a canonical form
void make_aqueous_canonical();
//! \brief transform the mineral system into a canonical form
void make_mineral_canonical();
//! \brief Swap aqueous parameters during a basis transformation
void swap_aq_param(std::vector<int> new_basis);
//! \brief Swap labels - called during a basis transformation
void swap_labels(std::vector<int> new_basis);
std::shared_ptr<DataContainer> data; //!< The data
};
} // end namespace database
} // end namespace specmicp
#endif // SPECMICP_DATABASE_DATABASE_HPP

Event Timeline