diff --git a/src/atom.cpp b/src/atom.cpp index bef3d991e8..39b1841955 100644 --- a/src/atom.cpp +++ b/src/atom.cpp @@ -261,10 +261,20 @@ void Atom::create_avec(const char *style, int narg, char **arg, char *suffix) rmass_flag = radius_flag = omega_flag = torque_flag = angmom_flag = 0; vfrac_flag = spin_flag = eradius_flag = ervel_flag = erforce_flag = 0; - avec = new_avec(style,narg,arg,suffix); - int n = strlen(style) + 1; - atom_style = new char[n]; - strcpy(atom_style,style); + int sflag; + avec = new_avec(style,narg,arg,suffix,sflag); + + if (sflag) { + char estyle[256]; + sprintf(estyle,"%s/%s",style,suffix); + int n = strlen(estyle) + 1; + atom_style = new char[n]; + strcpy(atom_style,estyle); + } else { + int n = strlen(style) + 1; + atom_style = new char[n]; + strcpy(atom_style,style); + } // if molecular system, default is to have array map @@ -276,14 +286,13 @@ void Atom::create_avec(const char *style, int narg, char **arg, char *suffix) generate an AtomVec class, first with suffix appended ------------------------------------------------------------------------- */ -AtomVec *Atom::new_avec(const char *style, int narg, char **arg, char *suffix) +AtomVec *Atom::new_avec(const char *style, int narg, char **arg, + char *suffix, int &sflag) { - int success = 0; - if (suffix) { + sflag = 1; char estyle[256]; sprintf(estyle,"%s/%s",style,suffix); - success = 1; if (0) return NULL; @@ -294,20 +303,19 @@ AtomVec *Atom::new_avec(const char *style, int narg, char **arg, char *suffix) #undef AtomStyle #undef ATOM_CLASS - else success = 0; } - if (!success) { - if (0) return NULL; + sflag = 0; + + if (0) return NULL; #define ATOM_CLASS #define AtomStyle(key,Class) \ - else if (strcmp(style,#key) == 0) return new Class(lmp,narg,arg); + else if (strcmp(style,#key) == 0) return new Class(lmp,narg,arg); #include "style_atom.h" #undef ATOM_CLASS - else error->all("Invalid atom style"); - } + else error->all("Invalid atom style"); return NULL; } diff --git a/src/atom.h b/src/atom.h index 8d971a9faf..e4972b27e6 100644 --- a/src/atom.h +++ b/src/atom.h @@ -115,7 +115,7 @@ class Atom : protected Pointers { void settings(class Atom *); void create_avec(const char *, int, char **, char *suffix = NULL); - class AtomVec *new_avec(const char *, int, char **, char *suffix = NULL); + class AtomVec *new_avec(const char *, int, char **, char *, int &); void init(); void setup(); diff --git a/src/force.cpp b/src/force.cpp index 867101dac4..3c6e280f64 100644 --- a/src/force.cpp +++ b/src/force.cpp @@ -122,24 +122,32 @@ void Force::create_pair(const char *style, char *suffix) delete [] pair_style; if (pair) delete pair; - pair = new_pair(style,suffix); - int n = strlen(style) + 1; - pair_style = new char[n]; - strcpy(pair_style,style); + int sflag; + pair = new_pair(style,suffix,sflag); + + if (sflag) { + char estyle[256]; + sprintf(estyle,"%s/%s",style,suffix); + int n = strlen(estyle) + 1; + pair_style = new char[n]; + strcpy(pair_style,estyle); + } else { + int n = strlen(style) + 1; + pair_style = new char[n]; + strcpy(pair_style,style); + } } /* ---------------------------------------------------------------------- generate a pair class, first with suffix appended ------------------------------------------------------------------------- */ -Pair *Force::new_pair(const char *style, char *suffix) +Pair *Force::new_pair(const char *style, char *suffix, int &sflag) { - int success = 0; - if (suffix) { + sflag = 1; char estyle[256]; sprintf(estyle,"%s/%s",style,suffix); - success = 1; if (0) return NULL; @@ -150,20 +158,19 @@ Pair *Force::new_pair(const char *style, char *suffix) #undef PairStyle #undef PAIR_CLASS - else success = 0; } - if (!success) { - if (strcmp(style,"none") == 0) return NULL; + sflag = 0; + + if (strcmp(style,"none") == 0) return NULL; #define PAIR_CLASS #define PairStyle(key,Class) \ - else if (strcmp(style,#key) == 0) return new Class(lmp); + else if (strcmp(style,#key) == 0) return new Class(lmp); #include "style_pair.h" #undef PAIR_CLASS - else error->all("Invalid pair style"); - } + else error->all("Invalid pair style"); return NULL; } diff --git a/src/force.h b/src/force.h index d8b4a20136..9f20b4c66c 100644 --- a/src/force.h +++ b/src/force.h @@ -65,7 +65,7 @@ class Force : protected Pointers { void init(); void create_pair(const char *, char *suffix = NULL); - class Pair *new_pair(const char *, char *suffix = NULL); + class Pair *new_pair(const char *, char *, int &); class Pair *pair_match(const char *, int); void create_bond(const char *);