diff --git a/doc/src/Section_errors.txt b/doc/src/Section_errors.txt index 23942a75e5..4fe6766d12 100644 --- a/doc/src/Section_errors.txt +++ b/doc/src/Section_errors.txt @@ -4696,9 +4696,9 @@ Self-explanatory. :dd {Fix bond/create induced too many angles/dihedrals/impropers per atom} :dt -See the read_data command for info on setting the "extra angle per -atom", etc header values to allow for additional angles, etc to be -formed. :dd +See the read_data command for info on using the "extra/angle/per/atom", +(or dihedral, improper) keywords to allow for additional +angles, dihedrals, and impropers to be formed. :dd {Fix bond/create needs ghost atoms from further away} :dt @@ -7876,18 +7876,20 @@ See the setting for tagint in the src/lmptype.h file. :dd {New bond exceeded bonds per atom in create_bonds} :dt -See the read_data command for info on setting the "extra bond per -atom" header value to allow for additional bonds to be formed. :dd +See the read_data command for info on using the "extra/bond/per/atom" +keyword to allow for additional bonds to be formed {New bond exceeded bonds per atom in fix bond/create} :dt -See the read_data command for info on setting the "extra bond per -atom" header value to allow for additional bonds to be formed. :dd +See the read_data command for info on using the "extra/bond/per/atom" +keyword to allow for additional bonds to be formed :dd {New bond exceeded special list size in fix bond/create} :dt -See the special_bonds extra command for info on how to leave space in -the special bonds list to allow for additional bonds to be formed. :dd +See the "special_bonds extra" command +(or the "read_data extra/special/per/atom" command) +for info on how to leave space in the special bonds +list to allow for additional bonds to be formed. :dd {Newton bond change after simulation box is defined} :dt @@ -9664,9 +9666,10 @@ you are running. :dd {Special list size exceeded in fix bond/create} :dt -See the read_data command for info on setting the "extra special per -atom" header value to allow for additional special values to be -stored. :dd +See the special_bonds extra command +(or the read_data extra/special/per/atom command) +for info on how to leave space in the special bonds +list to allow for additional bonds to be formed. :dd {Specified processors != physical processors} :dt @@ -9683,23 +9686,25 @@ Self-explanatory. :dd {Subsequent read data induced too many angles per atom} :dt -See the create_box extra/angle/per/atom or read_data "extra angle per -atom" header value to set this limit larger. :dd +See the read_data or create_box commands for info on using the +"extra/angle/per/atom" keyword to allow for additional angles to be formed :dd {Subsequent read data induced too many bonds per atom} :dt -See the create_box extra/bond/per/atom or read_data "extra bond per -atom" header value to set this limit larger. :dd +See the read_data or create_box commands for info on using the +"extra/bond/per/atom" keyword to allow for additional bonds to be formed :dd {Subsequent read data induced too many dihedrals per atom} :dt -See the create_box extra/dihedral/per/atom or read_data "extra -dihedral per atom" header value to set this limit larger. :dd +See the read_data or create_box commands for info on using the +"extra/dihedral/per/atom" keyword to allow for additional +dihedrals to be formed :dd {Subsequent read data induced too many impropers per atom} :dt -See the create_box extra/improper/per/atom or read_data "extra -improper per atom" header value to set this limit larger. :dd +See the read_data or create_box commands for info on using the +"extra/improper/per/atom" keyword to allow for additional +impropers to be formed :dd {Substitution for illegal variable} :dt diff --git a/doc/src/read_data.txt b/doc/src/read_data.txt index b9924989a6..732578b9f4 100644 --- a/doc/src/read_data.txt +++ b/doc/src/read_data.txt @@ -32,6 +32,11 @@ keyword = {add} or {offset} or {shift} or {extra/atom/types} or {extra/bond/type {extra/angle/types} arg = # of extra angle types {extra/dihedral/types} arg = # of extra dihedral types {extra/improper/types} arg = # of extra improper types + {extra/bond/per/atom} arg = leave space for this many new bonds per atom + {extra/angle/per/atom} arg = leave space for this many new angles per atom + {extra/dihedral/per/atom} arg = leave space for this many new dihedrals per atom + {extra/improper/per/atom} arg = leave space for this many new impropers per atom + {extra/special/per/atom} arg = leave space for extra 1-2,1-3,1-4 interactions per atom {group} args = groupID groupID = add atoms in data file to this group {nocoeff} = ignore force field parameters diff --git a/src/read_data.cpp b/src/read_data.cpp index d6a33d6e9d..e44c6b7417 100644 --- a/src/read_data.cpp +++ b/src/read_data.cpp @@ -211,13 +211,51 @@ void ReadData::command(int narg, char **arg) if (extra_improper_types < 0) error->all(FLERR,"Illegal read_data command"); iarg += 2; - + } else if (strcmp(arg[iarg],"extra/bond/per/atom") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_data command"); + if (! atom->molecular) + error->all(FLERR,"No bonds allowed with this atom style"); + atom->extra_bond_per_atom = force->inumeric(FLERR,arg[iarg+1]); + if (atom->extra_bond_per_atom < 0) + error->all(FLERR,"Illegal read_data command"); + iarg += 2; + } else if (strcmp(arg[iarg],"extra/angle/per/atom") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_data command"); + if (! atom->molecular) + error->all(FLERR,"No angles allowed with this atom style"); + atom->extra_angle_per_atom = force->inumeric(FLERR,arg[iarg+1]); + if (atom->extra_angle_per_atom < 0) + error->all(FLERR,"Illegal read_data command"); + iarg += 2; + } else if (strcmp(arg[iarg],"extra/dihedral/per/atom") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_data command"); + if (! atom->molecular) + error->all(FLERR,"No dihedrals allowed with this atom style"); + atom->extra_dihedral_per_atom = force->inumeric(FLERR,arg[iarg+1]); + if (atom->extra_dihedral_per_atom < 0) + error->all(FLERR,"Illegal read_data command"); + iarg += 2; + } else if (strcmp(arg[iarg],"extra/improper/per/atom") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_data command"); + if (! atom->molecular) + error->all(FLERR,"No impropers allowed with this atom style"); + atom->extra_improper_per_atom = force->inumeric(FLERR,arg[iarg+1]); + if (atom->extra_improper_per_atom < 0) + error->all(FLERR,"Illegal read_data command"); + iarg += 2; + } else if (strcmp(arg[iarg],"extra/special/per/atom") == 0) { + if (iarg+2 > narg) error->all(FLERR,"Illegal read_data command"); + if (! atom->molecular) + error->all(FLERR,"No bonded interactions allowed with this atom style"); + force->special_extra = force->inumeric(FLERR,arg[iarg+1]); + if (force->special_extra < 0) + error->all(FLERR,"Illegal read_data command"); + iarg += 2; } else if (strcmp(arg[iarg],"group") == 0) { if (iarg+2 > narg) error->all(FLERR,"Illegal read_data command"); int igroup = group->find_or_create(arg[iarg+1]); groupbit = group->bitmask[igroup]; iarg += 2; - } else if (strcmp(arg[iarg],"fix") == 0) { if (iarg+4 > narg) error->all(FLERR,"Illegal read_data command");