Revision 299c7129e98defba256f4be4bada8458664266eb authored by Tobias Meisel on 04 May 2021, 07:45:25 UTC, committed by Dmitry Yu. Naumov on 11 May 2021, 19:02:42 UTC
1 parent 5304566
Raw File
Dump.cpp
/**
 * \file
 * \copyright
 * Copyright (c) 2012-2021, OpenGeoSys Community (http://www.opengeosys.org)
 *            Distributed under a Modified BSD License.
 *              See accompanying file LICENSE.txt or
 *              http://www.opengeosys.org/project/license
 *
 */

#include "Dump.h"

#include <iostream>

namespace ChemistryLib
{
namespace PhreeqcIOData
{
void Dump::print(std::ostream& os, std::size_t const num_chemical_systems) const
{
    os << "DUMP"
       << "\n";
    os << "-file " << dump_file << "\n";
    os << "-append false"
       << "\n";
    os << "-solution 1-" << num_chemical_systems << "\n";
    os << "END"
       << "\n";
}

void Dump::readDumpFile(std::istream& in,
                        std::size_t const num_chemical_systems)
{
    aqueous_solutions_prev.clear();
    aqueous_solutions_prev.reserve(num_chemical_systems);

    std::string line;
    std::string aqueous_solution_prev_;
    std::size_t chemical_system_id = 0;
    while (std::getline(in, line))
    {
        if (line.find("USE reaction_pressure none") != std::string::npos)
        {
            break;
        }

        if (line.find("SOLUTION_RAW") != std::string::npos)
        {
            aqueous_solution_prev_ =
                "SOLUTION_RAW " +
                std::to_string(num_chemical_systems + chemical_system_id + 1) +
                "\n";
            continue;
        }

        aqueous_solution_prev_ += line + "\n";

        if (line.find("-gammas") != std::string::npos)
        {
            aqueous_solutions_prev.push_back(aqueous_solution_prev_);
            aqueous_solution_prev_.clear();
            ++chemical_system_id;
        }
    }
}
}  // namespace PhreeqcIOData
}  // namespace ChemistryLib
back to top