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

This commit is contained in:
sjplimp
2007-06-05 20:03:04 +00:00
parent 4c6adae250
commit 5e75cd9d49
4 changed files with 27 additions and 13 deletions

View File

@ -11,6 +11,10 @@
See the README file in the top-level LAMMPS directory.
------------------------------------------------------------------------- */
/* ----------------------------------------------------------------------
Contributing author (triclinic) : Pieter in 't Veld (SNL)
------------------------------------------------------------------------- */
#include "mpi.h"
#include "stdlib.h"
#include "string.h"
@ -645,7 +649,7 @@ void Domain::unmap(double *x, int image)
void Domain::set_lattice(int narg, char **arg)
{
delete lattice;
if (lattice) delete lattice;
lattice = new Lattice(lmp,narg,arg);
if (lattice->style == 0) {
delete lattice;
@ -661,11 +665,7 @@ void Domain::add_region(int narg, char **arg)
{
if (narg < 2) error->all("Illegal region command");
// error checks
for (int iregion = 0; iregion < nregion; iregion++)
if (strcmp(arg[0],regions[iregion]->id) == 0)
error->all("Reuse of region ID");
if (find_region(arg[0]) >= 0) error->all("Reuse of region ID");
// extend Region list if necessary
@ -691,6 +691,18 @@ void Domain::add_region(int narg, char **arg)
nregion++;
}
/* ----------------------------------------------------------------------
return region index if name matches existing region ID
return -1 if no such region
------------------------------------------------------------------------- */
int Domain::find_region(char *name)
{
for (int iregion = 0; iregion < nregion; iregion++)
if (strcmp(name,regions[iregion]->id) == 0) return iregion;
return -1;
}
/* ----------------------------------------------------------------------
boundary settings from the input script
------------------------------------------------------------------------- */

View File

@ -91,6 +91,7 @@ class Domain : protected Pointers {
void minimum_image(double *);
void set_lattice(int, char **);
void add_region(int, char **);
int find_region(char *);
void set_boundary(int, char **);
void print_box(char *);

View File

@ -33,6 +33,9 @@ enum{NONE,SC,BCC,FCC,DIAMOND,SQ,SQ2,HEX,CUSTOM};
Lattice::Lattice(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
{
nbasis = 0;
basis = NULL;
// parse style arg
if (narg < 1) error->all("Illegal lattice command");
@ -76,9 +79,6 @@ Lattice::Lattice(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
// x,y,z = fractional coords within unit cell
// style CUSTOM will be defined by optional args
nbasis = 0;
basis = NULL;
if (style == SC) {
add_basis(0.0,0.0,0.0);
} else if (style == BCC) {
@ -158,9 +158,9 @@ Lattice::Lattice(LAMMPS *lmp, int narg, char **arg) : Pointers(lmp)
} else if (strcmp(arg[iarg],"spacings") == 0) {
if (iarg+4 > narg) error->all("Illegal lattice command");
spaceflag = 1;
xlattice = atoi(arg[iarg+1]);
ylattice = atoi(arg[iarg+2]);
zlattice = atoi(arg[iarg+3]);
xlattice = atof(arg[iarg+1]);
ylattice = atof(arg[iarg+2]);
zlattice = atof(arg[iarg+3]);
iarg += 4;
} else if (strcmp(arg[iarg],"a1") == 0) {

View File

@ -22,9 +22,11 @@ class Lattice : protected Pointers {
public:
int style; // enum list of NONE,SC,FCC,etc
double xlattice,ylattice,zlattice; // lattice scale factors in 3 dims
double a1[3],a2[3],a3[3]; // vectors that bound unit cell
int nbasis; // # of atoms in basis of unit cell
double **basis; // fractional coords of each basis atom
// within unit cell (0 <= coord < 1)
Lattice(class LAMMPS *, int, char **);
~Lattice();
void lattice2box(double &, double &, double &);
@ -38,7 +40,6 @@ private:
int orientx[3]; // lattice orientation vecs
int orienty[3]; // orientx = what lattice dir lies
int orientz[3]; // along x dim in box
double a1[3],a2[3],a3[3]; // vectors that bound unit cell
double primitive[3][3]; // lattice <-> box transform matrices
double priminv[3][3];