diff --git a/src/pair_tersoff_mod_c.cpp b/src/pair_tersoff_mod_c.cpp deleted file mode 100644 index 712e0482a..000000000 --- a/src/pair_tersoff_mod_c.cpp +++ /dev/null @@ -1,196 +0,0 @@ -/* ---------------------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - 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. -------------------------------------------------------------------------- */ - -/* ---------------------------------------------------------------------- - Contributing author: Ganga P Purja Pun (George Mason University, Fairfax) -------------------------------------------------------------------------- */ - -#include <math.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include "pair_tersoff_mod_c.h" -#include "atom.h" -#include "neighbor.h" -#include "neigh_list.h" -#include "neigh_request.h" -#include "force.h" -#include "comm.h" -#include "memory.h" -#include "error.h" - -#include "math_const.h" - -using namespace LAMMPS_NS; -using namespace MathConst; - -#define MAXLINE 1024 -#define DELTA 4 - -/* ---------------------------------------------------------------------- */ - -void PairTersoffMODC::read_file(char *file) -{ - int params_per_line = 21; - char **words = new char*[params_per_line+1]; - - memory->sfree(params); - params = NULL; - nparams = maxparam = 0; - - // open file on proc 0 - - FILE *fp; - if (comm->me == 0) { - fp = force->open_potential(file); - if (fp == NULL) { - char str[128]; - sprintf(str,"Cannot open Tersoff potential file %s",file); - error->one(FLERR,str); - } - } - - // read each line out of file, skipping blank lines or leading '#' - // store line of params if all 3 element tags are in element list - - int n,nwords,ielement,jelement,kelement; - char line[MAXLINE],*ptr; - int eof = 0; - - while (1) { - if (comm->me == 0) { - ptr = fgets(line,MAXLINE,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - - // strip comment, skip line if blank - - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - if (nwords == 0) continue; - - // concatenate additional lines until have params_per_line words - - while (nwords < params_per_line) { - n = strlen(line); - if (comm->me == 0) { - ptr = fgets(&line[n],MAXLINE-n,fp); - if (ptr == NULL) { - eof = 1; - fclose(fp); - } else n = strlen(line) + 1; - } - MPI_Bcast(&eof,1,MPI_INT,0,world); - if (eof) break; - MPI_Bcast(&n,1,MPI_INT,0,world); - MPI_Bcast(line,n,MPI_CHAR,0,world); - if ((ptr = strchr(line,'#'))) *ptr = '\0'; - nwords = atom->count_words(line); - } - - if (nwords != params_per_line) - error->all(FLERR,"Incorrect format in Tersoff potential file"); - - // words = ptrs to all words in line - - nwords = 0; - words[nwords++] = strtok(line," \t\n\r\f"); - while ((words[nwords++] = strtok(NULL," \t\n\r\f"))) continue; - - // ielement,jelement,kelement = 1st args - // if all 3 args are in element list, then parse this line - // else skip to next line - - for (ielement = 0; ielement < nelements; ielement++) - if (strcmp(words[0],elements[ielement]) == 0) break; - if (ielement == nelements) continue; - for (jelement = 0; jelement < nelements; jelement++) - if (strcmp(words[1],elements[jelement]) == 0) break; - if (jelement == nelements) continue; - for (kelement = 0; kelement < nelements; kelement++) - if (strcmp(words[2],elements[kelement]) == 0) break; - if (kelement == nelements) continue; - - // load up parameter settings and error check their values - - if (nparams == maxparam) { - maxparam += DELTA; - params = (Param *) memory->srealloc(params,maxparam*sizeof(Param), - "pair:params"); - } - - params[nparams].ielement = ielement; - params[nparams].jelement = jelement; - params[nparams].kelement = kelement; - params[nparams].powerm = atof(words[3]); - params[nparams].lam3 = atof(words[4]); - params[nparams].h = atof(words[5]); - params[nparams].powern = atof(words[6]); - params[nparams].beta = atof(words[7]); - params[nparams].lam2 = atof(words[8]); - params[nparams].bigb = atof(words[9]); - params[nparams].bigr = atof(words[10]); - params[nparams].bigd = atof(words[11]); - params[nparams].lam1 = atof(words[12]); - params[nparams].biga = atof(words[13]); - params[nparams].powern_del = atof(words[14]); - params[nparams].c1 = atof(words[15]); - params[nparams].c2 = atof(words[16]); - params[nparams].c3 = atof(words[17]); - params[nparams].c4 = atof(words[18]); - params[nparams].c5 = atof(words[19]); - params[nparams].c0 = atof(words[20]); - - // currently only allow m exponent of 1 - - params[nparams].powermint = int(params[nparams].powerm); - - if ( - params[nparams].lam3 < 0.0 || params[nparams].powern < 0.0 || - params[nparams].beta < 0.0 || params[nparams].lam2 < 0.0 || - params[nparams].bigb < 0.0 || params[nparams].bigr < 0.0 || - params[nparams].bigd < 0.0 || - params[nparams].bigd > params[nparams].bigr || - params[nparams].lam3 < 0.0 || params[nparams].biga < 0.0 || - params[nparams].powerm - params[nparams].powermint != 0.0 || - (params[nparams].powermint != 3 && params[nparams].powermint != 1)) - error->all(FLERR,"Illegal Tersoff parameter"); - - nparams++; - } - - delete [] words; -} - -/* ---------------------------------------------------------------------- */ - -void PairTersoffMODC::repulsive(Param *param, double rsq, double &fforce, - int eflag, double &eng) -{ - double r,tmp_fc,tmp_fc_d,tmp_exp; - - r = sqrt(rsq); - tmp_fc = ters_fc(r,param); - tmp_fc_d = ters_fc_d(r,param); - tmp_exp = exp(-param->lam1 * r); - fforce = -param->biga * tmp_exp * (tmp_fc_d - tmp_fc * param->lam1) / r - param->c0 * tmp_fc_d / r; - if (eflag) eng = tmp_fc * param->biga * tmp_exp + param->c0 * tmp_fc; -} - diff --git a/src/pair_tersoff_mod_c.h b/src/pair_tersoff_mod_c.h deleted file mode 100644 index 5372bc2b1..000000000 --- a/src/pair_tersoff_mod_c.h +++ /dev/null @@ -1,66 +0,0 @@ -/* -*- c++ -*- ---------------------------------------------------------- - LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator - http://lammps.sandia.gov, Sandia National Laboratories - Steve Plimpton, sjplimp@sandia.gov - - 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. -------------------------------------------------------------------------- */ - -#ifdef PAIR_CLASS - -PairStyle(tersoff/mod/c,PairTersoffMODC) - -#else - -#ifndef LMP_PAIR_TERSOFF_MOD_C_H -#define LMP_PAIR_TERSOFF_MOD_C_H - -#include "pair_tersoff_mod.h" - -namespace LAMMPS_NS { - -class PairTersoffMODC : public PairTersoffMOD { - public: - PairTersoffMODC(class LAMMPS *lmp) : PairTersoffMOD(lmp) {}; - ~PairTersoffMODC() {} - - protected: - void read_file(char *); - void repulsive(Param *, double, double &, int, double &); -}; - -} - -#endif -#endif - -/* ERROR/WARNING messages: - -E: Cannot open Tersoff potential file %s - -The specified potential file cannot be opened. Check that the path -and name are correct. - -E: Incorrect format in Tersoff potential file - -Incorrect number of words per line in the potential file. - -E: Illegal Tersoff parameter - -One or more of the coefficients defined in the potential file is -invalid. - -E: Potential file has duplicate entry - -The potential file has more than one entry for the same element. - -E: Potential file is missing an entry - -The potential file does not have a needed entry. - -*/