git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@14331 f3b2605a-c512-4ea7-a41b-209d697bcdaa

This commit is contained in:
sjplimp 2015-12-09 21:44:39 +00:00
parent 87a47d8b99
commit 493f9c469b
5 changed files with 49 additions and 14 deletions

View File

@ -37,6 +37,7 @@ ComputeTempDrude::ComputeTempDrude(LAMMPS *lmp, int narg, char **arg) :
if (narg != 3) error->all(FLERR,"Illegal compute temp command"); if (narg != 3) error->all(FLERR,"Illegal compute temp command");
vector_flag = 1; vector_flag = 1;
scalar_flag = 1;
size_vector = 6; size_vector = 6;
extscalar = 0; extscalar = 0;
extvector = -1; extvector = -1;
@ -216,3 +217,9 @@ void ComputeTempDrude::compute_vector()
vector[5] = kineng_drude; vector[5] = kineng_drude;
} }
double ComputeTempDrude::compute_scalar(){
compute_vector();
scalar = vector[0];
return scalar;
}

View File

@ -32,6 +32,7 @@ class ComputeTempDrude : public Compute {
void init(); void init();
void setup(); void setup();
void compute_vector(); void compute_vector();
double compute_scalar();
int modify_param(int, char **); int modify_param(int, char **);
private: private:

View File

@ -19,6 +19,8 @@
#include "modify.h" #include "modify.h"
#include "error.h" #include "error.h"
#include "memory.h" #include "memory.h"
#include "molecule.h"
#include "atom_vec.h"
#include <set> #include <set>
#include <vector> #include <vector>
@ -38,6 +40,7 @@ FixDrude::FixDrude(LAMMPS *lmp, int narg, char **arg) :
comm_border = 1; // drudeid comm_border = 1; // drudeid
special_alter_flag = 1; special_alter_flag = 1;
create_attribute = 1; create_attribute = 1;
is_reduced = false;
memory->create(drudetype, atom->ntypes+1, "fix_drude::drudetype"); memory->create(drudetype, atom->ntypes+1, "fix_drude::drudetype");
for (int i=3; i<narg; i++) { for (int i=3; i<narg; i++) {
@ -109,13 +112,38 @@ void FixDrude::build_drudeid(){
partner_set = new std::set<tagint>[nlocal]; // Temporary sets of bond partner tags partner_set = new std::set<tagint>[nlocal]; // Temporary sets of bond partner tags
sptr = this; sptr = this;
// Build list of my atoms' bond partners if (atom->molecular == 1)
for (int i=0; i<nlocal; i++){ {
if (drudetype[type[i]] == NOPOL_TYPE) continue; // Build list of my atoms' bond partners
drudeid[i] = 0; for (int i=0; i<nlocal; i++){
for (int k=0; k<atom->num_bond[i]; k++){ if (drudetype[type[i]] == NOPOL_TYPE) continue;
core_drude_vec.push_back(atom->tag[i]); drudeid[i] = 0;
core_drude_vec.push_back(atom->bond_atom[i][k]); for (int k=0; k<atom->num_bond[i]; k++){
core_drude_vec.push_back(atom->tag[i]);
core_drude_vec.push_back(atom->bond_atom[i][k]);
}
}
}
else
{
// Template case
class Molecule **atommols;
atommols = atom->avec->onemols;
// Build list of my atoms' bond partners
for (int i=0; i<nlocal; i++){
int imol = atom->molindex[i];
int iatom = atom->molatom[i];
tagint *batom = atommols[imol]->bond_atom[iatom];
tagint tagprev = atom->tag[i] - iatom - 1;
int nbonds = atommols[imol]->num_bond[iatom];
if (drudetype[type[i]] == NOPOL_TYPE) continue;
drudeid[i] = 0;
for (int k=0; k<nbonds; k++){
core_drude_vec.push_back(atom->tag[i]);
core_drude_vec.push_back(batom[k]+tagprev);
}
} }
} }
// Loop on procs to fill my atoms' sets of bond partners // Loop on procs to fill my atoms' sets of bond partners
@ -275,6 +303,9 @@ void FixDrude::rebuild_special(){
tagint **special = atom->special; tagint **special = atom->special;
int *type = atom->type; int *type = atom->type;
if (atom->molecular != 1)
return;
// Make sure that drude partners know each other // Make sure that drude partners know each other
//build_drudeid(); //build_drudeid();

View File

@ -44,13 +44,9 @@ FixLangevinDrude::FixLangevinDrude(LAMMPS *lmp, int narg, char **arg) :
// Langevin thermostat should be applied every step // Langevin thermostat should be applied every step
nevery = 1; nevery = 1;
vector_flag = 1;
global_freq = nevery; global_freq = nevery;
extvector = 0;
size_vector = 6;
comm_reverse = 3; comm_reverse = 3;
//extscalar = 1;
// core temperature // core temperature
tstr_core = NULL; tstr_core = NULL;
if (strstr(arg[3],"v_") == arg[3]) { if (strstr(arg[3],"v_") == arg[3]) {

View File

@ -577,7 +577,7 @@ void PairLJCutTholeLong::read_restart_settings(FILE *fp)
void PairLJCutTholeLong::write_data(FILE *fp) void PairLJCutTholeLong::write_data(FILE *fp)
{ {
for (int i = 1; i <= atom->ntypes; i++) for (int i = 1; i <= atom->ntypes; i++)
fprintf(fp,"%d %g %g\n",i,epsilon[i][i],sigma[i][i]); fprintf(fp,"%d %g %g %g %g\n",i,epsilon[i][i],sigma[i][i],polar[i][i],thole[i][i]);
} }
/* ---------------------------------------------------------------------- /* ----------------------------------------------------------------------
@ -588,7 +588,7 @@ void PairLJCutTholeLong::write_data_all(FILE *fp)
{ {
for (int i = 1; i <= atom->ntypes; i++) for (int i = 1; i <= atom->ntypes; i++)
for (int j = i; j <= atom->ntypes; j++) for (int j = i; j <= atom->ntypes; j++)
fprintf(fp,"%d %d %g %g %g\n",i,j,epsilon[i][j],sigma[i][j],cut_lj[i][j]); fprintf(fp,"%d %d %g %g %g %g %g\n",i,j,epsilon[i][j],sigma[i][j],polar[i][j],thole[i][j],cut_lj[i][j]);
} }
/* ---------------------------------------------------------------------- */ /* ---------------------------------------------------------------------- */