mirror of https://github.com/lammps/lammps.git
replace non-portable file globbing with LAMMPS utility functions
This commit is contained in:
parent
fdeeb3fdbc
commit
b543c4caa3
|
@ -34,7 +34,6 @@
|
|||
|
||||
#include <algorithm>
|
||||
#include <cmath>
|
||||
#include <glob.h>
|
||||
#include <random>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
@ -43,18 +42,6 @@ using namespace LAMMPS_NS;
|
|||
|
||||
#define MAXLINE 1024
|
||||
|
||||
std::vector<std::string> static globVector(const std::string& pattern, std::vector<std::string> & files)
|
||||
{
|
||||
glob_t glob_result;
|
||||
glob(pattern.c_str(),GLOB_TILDE,NULL,&glob_result);
|
||||
for(unsigned int i=0;i<glob_result.gl_pathc;++i){
|
||||
std::string s = std::string(glob_result.gl_pathv[i]);
|
||||
files.push_back(s);
|
||||
}
|
||||
globfree(&glob_result);
|
||||
return files;
|
||||
}
|
||||
|
||||
void CFITPOD::command(int narg, char **arg)
|
||||
{
|
||||
if (narg < 2) utils::missing_cmd_args(FLERR, "fitpod", error);
|
||||
|
@ -236,21 +223,26 @@ void CFITPOD::read_data_file(double *fitting_weights, std::string &file_format,
|
|||
}
|
||||
}
|
||||
|
||||
void CFITPOD::get_exyz_files(std::vector<std::string>& files, std::string datapath, std::string extension)
|
||||
void CFITPOD::get_exyz_files(std::vector<std::string>& files, const std::string &datapath,
|
||||
const std::string &extension)
|
||||
{
|
||||
std::vector<std::string> res = globVector(datapath + "/*." + extension, files);
|
||||
auto allfiles = platform::list_directory(datapath);
|
||||
for (auto fname : allfiles) {
|
||||
if (utils::strmatch(fname, fmt::format(".*\\.{}$", extension)))
|
||||
files.push_back(datapath + platform::filepathsep + fname);
|
||||
}
|
||||
}
|
||||
|
||||
int CFITPOD::get_number_atom_exyz(std::vector<int>& num_atom, int& num_atom_sum, std::string file)
|
||||
{
|
||||
std::string filename = file;
|
||||
FILE *fp;
|
||||
//if (comm->me == 0){
|
||||
if (comm->me == 0) {
|
||||
|
||||
fp = utils::open_potential(filename,lmp,nullptr);
|
||||
if (fp == nullptr)
|
||||
error->one(FLERR,"Cannot open POD coefficient file {}: ", filename, utils::getsyserror());
|
||||
//}
|
||||
}
|
||||
|
||||
char line[MAXLINE],*ptr;
|
||||
int eof = 0;
|
||||
|
@ -481,6 +473,8 @@ void CFITPOD::get_data(datastruct &data, std::vector<std::string> species)
|
|||
utils::logmesg(lmp, "number of atoms in all files: {}\n", data.num_atom_sum);
|
||||
}
|
||||
|
||||
if (data.data_files.size() < 1) error->all(FLERR, "Cannot fit potential without data files");
|
||||
|
||||
int n = data.num_config_sum;
|
||||
memory->create(data.lattice, 9*n, "fitpod:lattice");
|
||||
memory->create(data.stress, 9*n, "fitpod:stress");
|
||||
|
|
|
@ -121,7 +121,7 @@ public:
|
|||
void command(int, char **) override;
|
||||
void read_data_file(double *fitting_weights, std::string &file_format, std::string &file_extension,
|
||||
std::string &test_path, std::string &training_path, const std::string &data_file);
|
||||
void get_exyz_files(std::vector<std::string>& files, std::string datapath, std::string extension);
|
||||
void get_exyz_files(std::vector<std::string> &, const std::string &, const std::string &);
|
||||
int get_number_atom_exyz(std::vector<int>& num_atom, int& num_atom_sum, std::string file);
|
||||
int get_number_atoms(std::vector<int>& num_atom, std::vector<int> &num_atom_sum, std::vector<int>& num_config, std::vector<std::string> training_files);
|
||||
void read_exyz_file(double *lattice, double *stress, double *energy, double *pos, double *forces,
|
||||
|
|
Loading…
Reference in New Issue