21 #define private public 28 #include <boost/program_options.hpp> 32 namespace po = boost::program_options;
45 po::options_description desc(
"gaussian_potential_test options");
48 (
"gamma", po::value<double>()->
required(),
"scale of secondary gaussian relative to primary")
49 (
"lambda", po::value<double>()->required(),
"geometric distance between gaussians")
50 (
"n_fields", po::value<int>()->required(),
"number of fields in potential")
51 (
"output", po::value<std::string>(),
"output path for field profiles")
52 (
"help",
"print help message");
56 po::parse_command_line(
58 po::command_line_style::unix_style ^ po::command_line_style::allow_short),
61 if (vm.count(
"help")) {
62 std::cout << desc << std::endl;
68 inputs.
gamma = vm[
"gamma"].as<
double>();
69 inputs.
lambda = vm[
"lambda"].as<
double>();
70 inputs.
n_fields = vm[
"n_fields"].as<
int>();
72 if (vm.count(
"output")) {
73 inputs.
output_path = vm[
"output"].as<std::string>();
79 int main(
int argc,
const char* argv[])
87 std::shared_ptr<Kink_profile_guesser> kink_guesser
88 = std::make_shared<Kink_profile_guesser>();
89 std::shared_ptr<Profile_guesser> guesser(kink_guesser);
91 Eigen::VectorXd false_vacuum(Eigen::VectorXd::Zero(input.
n_fields));
92 Eigen::VectorXd true_vacuum(Eigen::VectorXd::Zero(input.
n_fields));
94 for (
int i = 0; i < input.
n_fields; ++i) {
99 potential, true_vacuum, input.
n_fields, -1.0, -1.0, 1.e-3, 100);
101 double alpha = kink_guesser->alpha;
102 std::cout <<
"Alpha: " << alpha <<
'\n';
110 auto convergence_tester = std::make_shared<Relative_convergence_tester>();
111 convergence_tester->set_max_iterations(30);
115 std::vector<std::string> field_names;
116 for (
int i = 0; i < input.
n_fields; ++i) {
117 field_names.push_back(std::to_string(i));
contains the definition of the Field_profiles clas
contains definitions of Gaussian_potential class
void calculate_bubble_profile(Potential &, Observer &)
void set_initial_guesser(std::shared_ptr< Profile_guesser > g)
void set_false_vacuum_loc(const Eigen::VectorXd &fv)
void set_true_vacuum_loc(const Eigen::VectorXd &tv)
double get_euclidean_action() const
Retrieve the action after running calculate_bubble_profile.
void set_convergence_tester(std::shared_ptr< Profile_convergence_tester > ct)
int main(int argc, const char *argv[])
Potential composed of two multivariate Gaussian functions.
Observes the profile during iteration and writes out profile, perturbations and action for each step ...
Gaussian_inputs parse_cmd_line_args(int argc, const char *argv[])
Discretized set of field profiles.
Bounce solver using perturbative method.