lammps/unittest/force-styles/test_config.h

117 lines
3.5 KiB
C++

/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
https://www.lammps.org/ Sandia National Laboratories
LAMMPS Development team: developers@lammps.org
Copyright (2003) Sandia Corporation. Under the terms of Contract
DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government retains
certain rights in this software. This software is distributed under
the GNU General Public License.
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
#ifndef TEST_CONFIG_H
#define TEST_CONFIG_H
#include <set>
#include <sstream>
#include <string>
#include <utility>
#include <vector>
struct coord_t {
double x, y, z;
};
struct stress_t {
double xx, yy, zz, xy, xz, yz;
};
class TestConfig {
public:
std::string lammps_version;
std::string date_generated;
std::string basename;
double epsilon;
std::set<std::string> skip_tests;
std::vector<std::pair<std::string, std::string>> prerequisites;
std::vector<std::string> pre_commands;
std::vector<std::string> post_commands;
std::vector<std::string> tags;
std::string input_file;
std::string pair_style;
std::string bond_style;
std::string angle_style;
std::string dihedral_style;
std::string improper_style;
std::string kspace_style;
std::vector<std::string> pair_coeff;
std::vector<std::string> bond_coeff;
std::vector<std::string> angle_coeff;
std::vector<std::string> dihedral_coeff;
std::vector<std::string> improper_coeff;
std::vector<double> equilibrium;
std::vector<std::pair<std::string, int>> extract;
int natoms;
double init_energy;
double run_energy;
double init_vdwl;
double run_vdwl;
double init_coul;
double run_coul;
stress_t init_stress;
stress_t run_stress;
double global_scalar;
std::vector<double> global_vector;
std::vector<coord_t> init_forces;
std::vector<coord_t> run_forces;
std::vector<coord_t> run_pos;
std::vector<coord_t> restart_pos;
std::vector<coord_t> run_vel;
std::vector<coord_t> restart_vel;
TestConfig() :
lammps_version(""), date_generated(""), basename(""), epsilon(1.0e-14), input_file(""),
pair_style("zero"), bond_style("zero"), angle_style("zero"), dihedral_style("zero"),
improper_style("zero"), kspace_style("none"), natoms(0), init_energy(0), run_energy(0),
init_vdwl(0), run_vdwl(0), init_coul(0), run_coul(0), init_stress({0, 0, 0, 0, 0, 0}),
run_stress({0, 0, 0, 0, 0, 0}), global_scalar(0)
{
skip_tests.clear();
prerequisites.clear();
pre_commands.clear();
post_commands.clear();
pair_coeff.clear();
bond_coeff.clear();
angle_coeff.clear();
dihedral_coeff.clear();
improper_coeff.clear();
extract.clear();
init_forces.clear();
run_forces.clear();
run_pos.clear();
restart_pos.clear();
run_vel.clear();
restart_vel.clear();
global_vector.clear();
}
TestConfig(const TestConfig &) = delete;
TestConfig &operator=(const TestConfig &) = delete;
std::string tags_line() const
{
if (tags.size() > 0) {
std::stringstream line;
line << tags[0];
for (size_t i = 1; i < tags.size(); i++) {
line << ", " << tags[i];
}
return line.str();
}
return "generated";
}
};
#endif