Polyhedral Homotopy Continuation Method for solving sparse polynomial system, optimized by only tracing real zeros
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

66 lines
1.9 KiB

// This file is part of Bertini 2.
//
// blackbox/algorithm_builder.hpp is free software: you can redistribute it
// and/or modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation, either version 3 of the License,
// or (at your option) any later version.
//
// blackbox/algorithm_builder.hpp is distributed in the hope that it will be
// useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with blackbox/algorithm_builder.hpp. If not, see
// <http://www.gnu.org/licenses/>.
//
// Copyright(C) 2017-2021 by Bertini2 Development Team
//
// See <http://www.gnu.org/licenses/> for a copy of the license,
// as well as COPYING. Bertini2 is provided with permitted
// additional terms in the b2/licenses/ directory.
//
// individual authors of this file include
//
// silviana amethyst, university of wisconsin-eau claire
/**
\file include/blackbox/algorithm_builder.hpp
\brief A type which determines which algorithms etc, to run, and sets them up.
*/
#pragma once
#include "io/file_utilities.hpp"
namespace bertini {
namespace blackbox {
/**
\brief A de-serializer, whose responsibility it is to construct runnable objects
based on input files.
This class is inspired by the SimBuilder class from Hythem Sidky's SAPHRON
package for molecular dynamics.
*/
class AlgoBuilder {
public:
AlgoBuilder() = default;
/**
\brief Method for constructing an algorithm from a bertini classic input file
*/
int ClassicBuild(boost::filesystem::path const& input_file);
/**
\brief Returns a non-owning pointer to the built algorithm
*/
AnyAlgorithm* GetAlg() { return alg_.get(); }
private:
std::unique_ptr<AnyAlgorithm> alg_;
};
} // namespace blackbox
} // namespace bertini