use KIM-API calls to query simulator model info
This commit is contained in:
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
Contributing authors: Ryan S. Elliott (UMinn)
|
Contributing authors: Ryan S. Elliott (UMinn)
|
||||||
|
Axel Kohlmeyer (Temple U)
|
||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
/* ----------------------------------------------------------------------
|
/* ----------------------------------------------------------------------
|
||||||
@ -61,6 +62,7 @@
|
|||||||
#include "pair_kim.h"
|
#include "pair_kim.h"
|
||||||
#include "atom.h"
|
#include "atom.h"
|
||||||
#include "comm.h"
|
#include "comm.h"
|
||||||
|
#include "universe.h"
|
||||||
#include "force.h"
|
#include "force.h"
|
||||||
#include "neighbor.h"
|
#include "neighbor.h"
|
||||||
#include "neigh_list.h"
|
#include "neigh_list.h"
|
||||||
@ -132,6 +134,14 @@ PairKIM::~PairKIM()
|
|||||||
// clean up kim_modelname
|
// clean up kim_modelname
|
||||||
if (kim_modelname != 0) delete [] kim_modelname;
|
if (kim_modelname != 0) delete [] kim_modelname;
|
||||||
|
|
||||||
|
if (simulatorModel) {
|
||||||
|
KIM::SimulatorModel::Destroy(&simulatorModel);
|
||||||
|
|
||||||
|
// clean up KIM interface (if necessary)
|
||||||
|
kim_free();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// clean up lammps atom species number to unique particle names mapping
|
// clean up lammps atom species number to unique particle names mapping
|
||||||
if (lmps_unique_elements)
|
if (lmps_unique_elements)
|
||||||
for (int i = 0; i < lmps_num_unique_elements; i++)
|
for (int i = 0; i < lmps_num_unique_elements; i++)
|
||||||
@ -330,9 +340,40 @@ void PairKIM::settings(int narg, char **arg)
|
|||||||
// initialize KIM Model
|
// initialize KIM Model
|
||||||
kim_init();
|
kim_init();
|
||||||
|
|
||||||
// initialize LAMMPS Simulator model
|
// Set up and initialize LAMMPS Simulator model
|
||||||
|
|
||||||
if (simulatorModel) {
|
if (simulatorModel) {
|
||||||
printf("LAMMPS simulator model: %s\n",kim_modelname);
|
const std::string *sim_name, *sim_version;
|
||||||
|
simulatorModel->GetSimulatorName(&sim_name);
|
||||||
|
simulatorModel->GetSimulatorVersion(&sim_version);
|
||||||
|
|
||||||
|
if (comm->me == 0) {
|
||||||
|
std::string mesg("Using KIM Simulator Model : ");
|
||||||
|
mesg += kim_modelname;
|
||||||
|
mesg += "\n";
|
||||||
|
mesg += "For Simulator : ";
|
||||||
|
mesg += *sim_name + " " + *sim_version + "\n";
|
||||||
|
mesg += "Running on : LAMMPS ";
|
||||||
|
mesg += universe->version;
|
||||||
|
mesg += "\n";
|
||||||
|
|
||||||
|
if (screen) fputs(mesg.c_str(),screen);
|
||||||
|
if (logfile) fputs(mesg.c_str(),logfile);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*sim_name != "LAMMPS")
|
||||||
|
error->all(FLERR,"Incompatible KIM Simulator Model");
|
||||||
|
|
||||||
|
int sim_fields, sim_lines;
|
||||||
|
const std::string *sim_field, *sim_value;
|
||||||
|
simulatorModel->GetNumberOfSimulatorFields(&sim_fields);
|
||||||
|
printf("sim_fields=%d\n",sim_fields);
|
||||||
|
for (int i=0; i < sim_fields; ++i) {
|
||||||
|
simulatorModel->GetSimulatorFieldMetadata(i,&sim_lines,&sim_field);
|
||||||
|
printf("i=%d: %s (%d)\n",i,sim_field->c_str(),sim_lines);
|
||||||
|
// for (int j=0; j <
|
||||||
|
// simulatorModel->GetSimulatorFieldLine(i,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user