Add datatype introspection methods to library
Adds lammps_extract_atom_datatype and lammps_extract_global_datatype functions to allow extracting type information of properties.
This commit is contained in:
@ -1206,6 +1206,98 @@ void *lammps_extract_atom(void *handle, const char *name)
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
/** Get data type of internal global LAMMPS variables or arrays.
|
||||
*
|
||||
* TODO
|
||||
*
|
||||
* \param handle pointer to a previously created LAMMPS instance
|
||||
* \param name string with the name of the extracted property
|
||||
* \return integer constant encoding the data type of the property
|
||||
or -1 if not found. */
|
||||
|
||||
int lammps_extract_global_datatype(void *handle, const char *name)
|
||||
{
|
||||
LAMMPS *lmp = (LAMMPS *) handle;
|
||||
|
||||
if (strcmp(name,"units") == 0) return LAMMPS_STRING;
|
||||
if (strcmp(name,"dt") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"ntimestep") == 0) return LAMMPS_BIGINT;
|
||||
if (strcmp(name,"boxlo") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"boxhi") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"boxxlo") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"boxxhi") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"boxylo") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"boxyhi") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"boxzlo") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"boxzhi") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"periodicity") == 0) return LAMMPS_INT;
|
||||
if (strcmp(name,"triclinic") == 0) return LAMMPS_INT;
|
||||
if (strcmp(name,"xy") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"xz") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"yz") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"natoms") == 0) return LAMMPS_BIGINT;
|
||||
if (strcmp(name,"nbonds") == 0) return LAMMPS_BIGINT;
|
||||
if (strcmp(name,"nangles") == 0) return LAMMPS_BIGINT;
|
||||
if (strcmp(name,"ndihedrals") == 0) return LAMMPS_BIGINT;
|
||||
if (strcmp(name,"nimpropers") == 0) return LAMMPS_BIGINT;
|
||||
if (strcmp(name,"nlocal") == 0) return LAMMPS_INT;
|
||||
if (strcmp(name,"nghost") == 0) return LAMMPS_INT;
|
||||
if (strcmp(name,"nmax") == 0) return LAMMPS_INT;
|
||||
if (strcmp(name,"ntypes") == 0) return LAMMPS_INT;
|
||||
|
||||
if (strcmp(name,"q_flag") == 0) return LAMMPS_INT;
|
||||
|
||||
// update->atime can be referenced as a pointer
|
||||
// thermo "timer" data cannot be, since it is computed on request
|
||||
// lammps_get_thermo() can access all thermo keywords by value
|
||||
|
||||
if (strcmp(name,"atime") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"atimestep") == 0) return LAMMPS_BIGINT;
|
||||
|
||||
// global constants defined by units
|
||||
|
||||
if (strcmp(name,"boltz") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"hplanck") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"mvv2e") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"ftm2v") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"mv2d") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"nktv2p") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"qqr2e") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"qe2f") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"vxmu2f") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"xxt2kmu") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"dielectric") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"qqrd2e") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"e_mass") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"hhmrr2e") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"mvh2r") == 0) return LAMMPS_DOUBLE;
|
||||
|
||||
if (strcmp(name,"angstrom") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"femtosecond") == 0) return LAMMPS_DOUBLE;
|
||||
if (strcmp(name,"qelectron") == 0) return LAMMPS_DOUBLE;
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
/** Get data type of a LAMMPS per-atom property
|
||||
*
|
||||
* TODO
|
||||
*
|
||||
* \param handle pointer to a previously created LAMMPS instance
|
||||
* \param name string with the name of the extracted property
|
||||
* \return integer constant encoding the data type of the property
|
||||
* or -1 if not found. */
|
||||
|
||||
int lammps_extract_atom_datatype(void *handle, const char *name)
|
||||
{
|
||||
LAMMPS *lmp = (LAMMPS *) handle;
|
||||
return lmp->atom->extract_datatype(name);
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------------------- */
|
||||
|
||||
/** Create N atoms from list of coordinates
|
||||
*
|
||||
\verbatim embed:rst
|
||||
|
||||
Reference in New Issue
Block a user