Page MenuHomec4science

database.hpp
No OneTemporary

File Metadata

Created
Mon, Jul 1, 21:40

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:
//! \brief Default constructor
//!
//! the method parse_database must be called to parse the json database
Database() {}
//! \brief Initialise the database py parsing 'filepath'
Database(std::string filepath) {
parse_database(filepath);
make_canonical();
}
//! \brief initialise the database with the raw database
Database(std::shared_ptr<DataContainer> raw_data):
data(raw_data)
{}
//! \brief Parse the database 'filepath'
void parse_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();
//! \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:
std::shared_ptr<DataContainer> data; //!< The data
};
} // end namespace database
} // end namespace specmicp
#endif // SPECMICP_DATABASE_DATABASE_HPP

Event Timeline