git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@76 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
@ -17,7 +17,7 @@
|
|||||||
</PRE>
|
</PRE>
|
||||||
<UL><LI>ID = user-assigned name for the region
|
<UL><LI>ID = user-assigned name for the region
|
||||||
|
|
||||||
<LI>style = <I>block</I> or <I>sphere</I> or <I>cylinder</I> or <I>union</I> or <I>intersect</I>
|
<LI>style = <I>block</I> or <I>sphere</I> or <I>cylinder</I> or <I>prism</I> or <I>union</I> or <I>intersect</I>
|
||||||
|
|
||||||
<PRE> <I>block</I> args = xlo xhi ylo yhi zlo zhi
|
<PRE> <I>block</I> args = xlo xhi ylo yhi zlo zhi
|
||||||
xlo,xhi,ylo,yhi,zlo,zhi = bounds of block in all
|
xlo,xhi,ylo,yhi,zlo,zhi = bounds of block in all
|
||||||
@ -30,6 +30,12 @@
|
|||||||
c1,c2 = coords of cylinder axis in other 2 dimensions (distance units)
|
c1,c2 = coords of cylinder axis in other 2 dimensions (distance units)
|
||||||
radius = cylinder radius (distance units)
|
radius = cylinder radius (distance units)
|
||||||
lo,hi = bounds of cylinder in dim (distance units)
|
lo,hi = bounds of cylinder in dim (distance units)
|
||||||
|
<I>prism</I> args = xlo xhi ylo yhi zlo zhi yxtilt zxtilt zytilt
|
||||||
|
xlo,xhi,ylo,yhi,zlo,zhi = bounds of untilted prism in all
|
||||||
|
dimensions (distance units)
|
||||||
|
yxtilt = distance to shift upper y in x direction (distance units)
|
||||||
|
zxtilt = distance to shift upper z in x direction (distance units)
|
||||||
|
zytilt = distance to shift upper z in y direction (distance units)
|
||||||
<I>union</I> args = N reg-ID1 reg-ID2 ...
|
<I>union</I> args = N reg-ID1 reg-ID2 ...
|
||||||
N = # of regions to follow, must be 2 or greater
|
N = # of regions to follow, must be 2 or greater
|
||||||
reg-ID1,reg-ID2, ... = IDs of regions to join together
|
reg-ID1,reg-ID2, ... = IDs of regions to join together
|
||||||
@ -55,6 +61,7 @@
|
|||||||
<PRE>region 1 block -3.0 5.0 INF 10.0 INF INF
|
<PRE>region 1 block -3.0 5.0 INF 10.0 INF INF
|
||||||
region 2 sphere 0.0 0.0 0.0 5 side out
|
region 2 sphere 0.0 0.0 0.0 5 side out
|
||||||
region void cylinder y 2 3 5 -5.0 INF units box
|
region void cylinder y 2 3 5 -5.0 INF units box
|
||||||
|
region 1 prism 0 10 0 10 0 10 2 0 0
|
||||||
region outside union 4 side1 side2 side3 side4
|
region outside union 4 side1 side2 side3 side4
|
||||||
</PRE>
|
</PRE>
|
||||||
<P><B>Description:</B>
|
<P><B>Description:</B>
|
||||||
@ -65,10 +72,10 @@ atoms via the <A HREF = "create_atoms.html">create_atoms</A> command. Or the at
|
|||||||
in the region can be identified as a group via the <A HREF = "group.html">group</A>
|
in the region can be identified as a group via the <A HREF = "group.html">group</A>
|
||||||
command, or deleted via the <A HREF = "delete_atoms.html">delete_atoms</A> command.
|
command, or deleted via the <A HREF = "delete_atoms.html">delete_atoms</A> command.
|
||||||
</P>
|
</P>
|
||||||
<P>The lo/hi values for <I>block</I> or <I>cylinder</I> styles can be specified
|
<P>The lo/hi values for <I>block</I> or <I>cylinder</I> or <I>prism</I> styles can be
|
||||||
as INF which means they extend all the way to the global simulation
|
specified as INF which means they extend all the way to the global
|
||||||
box boundary. If a region is defined before the simulation box has
|
simulation box boundary. If a region is defined before the simulation
|
||||||
been created (via <A HREF = "create_box.html">create_box</A> or
|
box has been created (via <A HREF = "create_box.html">create_box</A> or
|
||||||
<A HREF = "read_data.html">read_data</A> or <A HREF = "read_restart.html">read_restart</A>
|
<A HREF = "read_data.html">read_data</A> or <A HREF = "read_restart.html">read_restart</A>
|
||||||
commands), then an INF parameter cannot be used.
|
commands), then an INF parameter cannot be used.
|
||||||
</P>
|
</P>
|
||||||
@ -79,6 +86,19 @@ third example above specifes a cylinder with its axis in the
|
|||||||
y-direction located at x = 2.0 and z = 3.0, with a radius of 5.0, and
|
y-direction located at x = 2.0 and z = 3.0, with a radius of 5.0, and
|
||||||
extending in the y-direction from -5.0 to the upper box boundary.
|
extending in the y-direction from -5.0 to the upper box boundary.
|
||||||
</P>
|
</P>
|
||||||
|
<P>For style <I>prism</I>, a tilted block is defined. The bounds of the
|
||||||
|
untilted axis-aligned block are specified in the same way as for the
|
||||||
|
<I>block</I> style. A tilt factor for each dimension with respect to
|
||||||
|
another dimension is also specified. If the lower xy face of the
|
||||||
|
prism is initially a rectangle (untilted), then the yxtilt factor
|
||||||
|
specifies how far the upper y edge of that face is shifted in the x
|
||||||
|
direction (skewing that face, keeping the xy face a parallelogram). A
|
||||||
|
plus or minus value can be chosen; 0.0 would be no tilt. Similarly,
|
||||||
|
zxtilt and zytilt describe how far the upper xy face of the prism is
|
||||||
|
translated in the x and y directions to further tilt the prism. The
|
||||||
|
final prism shape remains a parallelipiped, with opposing pairs of the
|
||||||
|
6 faces remaining parallel to each other.
|
||||||
|
</P>
|
||||||
<P>The <I>union</I> style creates a region consisting of the volume of all the
|
<P>The <I>union</I> style creates a region consisting of the volume of all the
|
||||||
listed regions combined. The <I>intesect</I> style creates a region
|
listed regions combined. The <I>intesect</I> style creates a region
|
||||||
consisting of the volume that is common to all the listed regions.
|
consisting of the volume that is common to all the listed regions.
|
||||||
@ -96,11 +116,15 @@ both of the spheres.
|
|||||||
to define the region. A <I>box</I> value selects standard distance units
|
to define the region. A <I>box</I> value selects standard distance units
|
||||||
as defined by the <A HREF = "units.html">units</A> command, e.g. Angstroms for units
|
as defined by the <A HREF = "units.html">units</A> command, e.g. Angstroms for units
|
||||||
= real or metal. A <I>lattice</I> value means the distance units are in
|
= real or metal. A <I>lattice</I> value means the distance units are in
|
||||||
cubic lattice spacings. The <A HREF = "lattice.html">lattice</A> command must first
|
lattice spacings. The <A HREF = "lattice.html">lattice</A> command must have been
|
||||||
be used to define a lattice.
|
previously used to define the lattice spacing.
|
||||||
</P>
|
</P>
|
||||||
<P><B>Restrictions:</B> none
|
<P><B>Restrictions:</B> none
|
||||||
</P>
|
</P>
|
||||||
|
<P>A prism cannot be of 0.0 thickness in any dimension; use a small z
|
||||||
|
thickness for 2d simulations. For 2d simulations, the zxtilt and
|
||||||
|
zytilt parameters must be 0.0.
|
||||||
|
</P>
|
||||||
<P><B>Related commands:</B>
|
<P><B>Related commands:</B>
|
||||||
</P>
|
</P>
|
||||||
<P><A HREF = "lattice.html">lattice</A>, <A HREF = "create_atoms.html">create_atoms</A>,
|
<P><A HREF = "lattice.html">lattice</A>, <A HREF = "create_atoms.html">create_atoms</A>,
|
||||||
|
|||||||
@ -13,7 +13,7 @@ region command :h3
|
|||||||
region ID style args keyword value ... :pre
|
region ID style args keyword value ... :pre
|
||||||
|
|
||||||
ID = user-assigned name for the region :ulb,l
|
ID = user-assigned name for the region :ulb,l
|
||||||
style = {block} or {sphere} or {cylinder} or {union} or {intersect} :l
|
style = {block} or {sphere} or {cylinder} or {prism} or {union} or {intersect} :l
|
||||||
{block} args = xlo xhi ylo yhi zlo zhi
|
{block} args = xlo xhi ylo yhi zlo zhi
|
||||||
xlo,xhi,ylo,yhi,zlo,zhi = bounds of block in all
|
xlo,xhi,ylo,yhi,zlo,zhi = bounds of block in all
|
||||||
dimensions (distance units)
|
dimensions (distance units)
|
||||||
@ -25,6 +25,12 @@ style = {block} or {sphere} or {cylinder} or {union} or {intersect} :l
|
|||||||
c1,c2 = coords of cylinder axis in other 2 dimensions (distance units)
|
c1,c2 = coords of cylinder axis in other 2 dimensions (distance units)
|
||||||
radius = cylinder radius (distance units)
|
radius = cylinder radius (distance units)
|
||||||
lo,hi = bounds of cylinder in dim (distance units)
|
lo,hi = bounds of cylinder in dim (distance units)
|
||||||
|
{prism} args = xlo xhi ylo yhi zlo zhi yxtilt zxtilt zytilt
|
||||||
|
xlo,xhi,ylo,yhi,zlo,zhi = bounds of untilted prism in all
|
||||||
|
dimensions (distance units)
|
||||||
|
yxtilt = distance to shift upper y in x direction (distance units)
|
||||||
|
zxtilt = distance to shift upper z in x direction (distance units)
|
||||||
|
zytilt = distance to shift upper z in y direction (distance units)
|
||||||
{union} args = N reg-ID1 reg-ID2 ...
|
{union} args = N reg-ID1 reg-ID2 ...
|
||||||
N = # of regions to follow, must be 2 or greater
|
N = # of regions to follow, must be 2 or greater
|
||||||
reg-ID1,reg-ID2, ... = IDs of regions to join together
|
reg-ID1,reg-ID2, ... = IDs of regions to join together
|
||||||
@ -46,6 +52,7 @@ keyword = {side} or {units} :l
|
|||||||
region 1 block -3.0 5.0 INF 10.0 INF INF
|
region 1 block -3.0 5.0 INF 10.0 INF INF
|
||||||
region 2 sphere 0.0 0.0 0.0 5 side out
|
region 2 sphere 0.0 0.0 0.0 5 side out
|
||||||
region void cylinder y 2 3 5 -5.0 INF units box
|
region void cylinder y 2 3 5 -5.0 INF units box
|
||||||
|
region 1 prism 0 10 0 10 0 10 2 0 0
|
||||||
region outside union 4 side1 side2 side3 side4 :pre
|
region outside union 4 side1 side2 side3 side4 :pre
|
||||||
|
|
||||||
[Description:]
|
[Description:]
|
||||||
@ -56,10 +63,10 @@ atoms via the "create_atoms"_create_atoms.html command. Or the atoms
|
|||||||
in the region can be identified as a group via the "group"_group.html
|
in the region can be identified as a group via the "group"_group.html
|
||||||
command, or deleted via the "delete_atoms"_delete_atoms.html command.
|
command, or deleted via the "delete_atoms"_delete_atoms.html command.
|
||||||
|
|
||||||
The lo/hi values for {block} or {cylinder} styles can be specified
|
The lo/hi values for {block} or {cylinder} or {prism} styles can be
|
||||||
as INF which means they extend all the way to the global simulation
|
specified as INF which means they extend all the way to the global
|
||||||
box boundary. If a region is defined before the simulation box has
|
simulation box boundary. If a region is defined before the simulation
|
||||||
been created (via "create_box"_create_box.html or
|
box has been created (via "create_box"_create_box.html or
|
||||||
"read_data"_read_data.html or "read_restart"_read_restart.html
|
"read_data"_read_data.html or "read_restart"_read_restart.html
|
||||||
commands), then an INF parameter cannot be used.
|
commands), then an INF parameter cannot be used.
|
||||||
|
|
||||||
@ -70,6 +77,19 @@ third example above specifes a cylinder with its axis in the
|
|||||||
y-direction located at x = 2.0 and z = 3.0, with a radius of 5.0, and
|
y-direction located at x = 2.0 and z = 3.0, with a radius of 5.0, and
|
||||||
extending in the y-direction from -5.0 to the upper box boundary.
|
extending in the y-direction from -5.0 to the upper box boundary.
|
||||||
|
|
||||||
|
For style {prism}, a tilted block is defined. The bounds of the
|
||||||
|
untilted axis-aligned block are specified in the same way as for the
|
||||||
|
{block} style. A tilt factor for each dimension with respect to
|
||||||
|
another dimension is also specified. If the lower xy face of the
|
||||||
|
prism is initially a rectangle (untilted), then the yxtilt factor
|
||||||
|
specifies how far the upper y edge of that face is shifted in the x
|
||||||
|
direction (skewing that face, keeping the xy face a parallelogram). A
|
||||||
|
plus or minus value can be chosen; 0.0 would be no tilt. Similarly,
|
||||||
|
zxtilt and zytilt describe how far the upper xy face of the prism is
|
||||||
|
translated in the x and y directions to further tilt the prism. The
|
||||||
|
final prism shape remains a parallelipiped, with opposing pairs of the
|
||||||
|
6 faces remaining parallel to each other.
|
||||||
|
|
||||||
The {union} style creates a region consisting of the volume of all the
|
The {union} style creates a region consisting of the volume of all the
|
||||||
listed regions combined. The {intesect} style creates a region
|
listed regions combined. The {intesect} style creates a region
|
||||||
consisting of the volume that is common to all the listed regions.
|
consisting of the volume that is common to all the listed regions.
|
||||||
@ -87,11 +107,15 @@ The {units} keyword determines the meaning of the distance units used
|
|||||||
to define the region. A {box} value selects standard distance units
|
to define the region. A {box} value selects standard distance units
|
||||||
as defined by the "units"_units.html command, e.g. Angstroms for units
|
as defined by the "units"_units.html command, e.g. Angstroms for units
|
||||||
= real or metal. A {lattice} value means the distance units are in
|
= real or metal. A {lattice} value means the distance units are in
|
||||||
cubic lattice spacings. The "lattice"_lattice.html command must first
|
lattice spacings. The "lattice"_lattice.html command must have been
|
||||||
be used to define a lattice.
|
previously used to define the lattice spacing.
|
||||||
|
|
||||||
[Restrictions:] none
|
[Restrictions:] none
|
||||||
|
|
||||||
|
A prism cannot be of 0.0 thickness in any dimension; use a small z
|
||||||
|
thickness for 2d simulations. For 2d simulations, the zxtilt and
|
||||||
|
zytilt parameters must be 0.0.
|
||||||
|
|
||||||
[Related commands:]
|
[Related commands:]
|
||||||
|
|
||||||
"lattice"_lattice.html, "create_atoms"_create_atoms.html,
|
"lattice"_lattice.html, "create_atoms"_create_atoms.html,
|
||||||
|
|||||||
@ -1,8 +1,10 @@
|
|||||||
# Stillinger-Weber parameters for various elements and mixtures
|
# Stillinger-Weber parameters for various elements and mixtures
|
||||||
# multiple elements can be added to this file, LAMMPS reads the ones it needs
|
# multiple entries can be added to this file, LAMMPS reads the ones it needs
|
||||||
|
|
||||||
# format of a line:
|
# format of an entry (one or more lines):
|
||||||
# element 1, element 2, element 3
|
# element 1, element 2, element 3
|
||||||
# epsilon, sigma, littlea, lambda, gamma, costheta, biga, bigb, powerp, powerq
|
# epsilon, sigma, littlea, lambda, gamma, costheta, biga, bigb, powerp, powerq
|
||||||
|
|
||||||
Si Si Si 2.1683 2.0951 1.80 21.0 1.20 -0.333333333333 7.049556277 0.6022245584 4.0 0.0
|
Si Si Si 2.1683 2.0951 1.80 21.0 1.20 -0.333333333333
|
||||||
|
7.049556277 0.6022245584 4.0 0.0
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@ SHELL = /bin/sh
|
|||||||
|
|
||||||
# System-specific settings
|
# System-specific settings
|
||||||
|
|
||||||
FFTW = /apps/libraries/fftw/nwcc
|
FFTW = /apps/libraries/fftw
|
||||||
|
|
||||||
CC = mpicxx
|
CC = mpicxx
|
||||||
CCFLAGS = -O -DFFT_FFTW -I${FFTW}/include
|
CCFLAGS = -O -DFFT_FFTW -I${FFTW}/include
|
||||||
|
|||||||
@ -12,7 +12,7 @@
|
|||||||
------------------------------------------------------------------------- */
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
#ifndef FIX_WALL_REFLECT_H
|
#ifndef FIX_WALL_REFLECT_H
|
||||||
#define FIX_WALL_REFELCT_H
|
#define FIX_WALL_REFLECT_H
|
||||||
|
|
||||||
#include "fix.h"
|
#include "fix.h"
|
||||||
|
|
||||||
|
|||||||
@ -50,7 +50,7 @@ FILE *LAMMPS::logfile = NULL;
|
|||||||
void LAMMPS::open(int narg, char **arg, MPI_Comm communicator)
|
void LAMMPS::open(int narg, char **arg, MPI_Comm communicator)
|
||||||
{
|
{
|
||||||
sys = new System();
|
sys = new System();
|
||||||
sys->open(narg,arg,MPI_COMM_WORLD);
|
sys->open(narg,arg,communicator);
|
||||||
sys->create();
|
sys->create();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -41,6 +41,7 @@ Region::Region(int narg, char **arg)
|
|||||||
if (strcmp(style,"block") == 0) options(narg-8,&arg[8]);
|
if (strcmp(style,"block") == 0) options(narg-8,&arg[8]);
|
||||||
else if (strcmp(style,"sphere") == 0) options(narg-6,&arg[6]);
|
else if (strcmp(style,"sphere") == 0) options(narg-6,&arg[6]);
|
||||||
else if (strcmp(arg[1],"cylinder") == 0) options(narg-8,&arg[8]);
|
else if (strcmp(arg[1],"cylinder") == 0) options(narg-8,&arg[8]);
|
||||||
|
else if (strcmp(style,"prism") == 0) options(narg-11,&arg[11]);
|
||||||
else if (strcmp(arg[1],"union") == 0) {
|
else if (strcmp(arg[1],"union") == 0) {
|
||||||
if (narg < 5) error->all("Illegal region command");
|
if (narg < 5) error->all("Illegal region command");
|
||||||
n = atoi(arg[2]);
|
n = atoi(arg[2]);
|
||||||
|
|||||||
128
src/region_prism.cpp
Normal file
128
src/region_prism.cpp
Normal file
@ -0,0 +1,128 @@
|
|||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
www.cs.sandia.gov/~sjplimp/lammps.html
|
||||||
|
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
||||||
|
|
||||||
|
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.
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#include "stdlib.h"
|
||||||
|
#include "string.h"
|
||||||
|
#include "region_prism.h"
|
||||||
|
#include "domain.h"
|
||||||
|
#include "force.h"
|
||||||
|
#include "error.h"
|
||||||
|
|
||||||
|
#define MIN(A,B) ((A) < (B)) ? (A) : (B)
|
||||||
|
#define MAX(A,B) ((A) > (B)) ? (A) : (B)
|
||||||
|
|
||||||
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
RegPrism::RegPrism(int narg, char **arg) : Region(narg, arg)
|
||||||
|
{
|
||||||
|
if (strcmp(arg[2],"INF") == 0) {
|
||||||
|
if (domain->box_exist == 0)
|
||||||
|
error->all("Cannot use region INF when box does not exist");
|
||||||
|
xlo = domain->boxxlo;
|
||||||
|
} else xlo = xscale*atof(arg[2]);
|
||||||
|
|
||||||
|
if (strcmp(arg[3],"INF") == 0) {
|
||||||
|
if (domain->box_exist == 0)
|
||||||
|
error->all("Cannot use region INF when box does not exist");
|
||||||
|
xhi = domain->boxxhi;
|
||||||
|
} else xhi = xscale*atof(arg[3]);
|
||||||
|
|
||||||
|
if (strcmp(arg[4],"INF") == 0) {
|
||||||
|
if (domain->box_exist == 0)
|
||||||
|
error->all("Cannot use region INF when box does not exist");
|
||||||
|
ylo = domain->boxylo;
|
||||||
|
} else ylo = yscale*atof(arg[4]);
|
||||||
|
|
||||||
|
if (strcmp(arg[5],"INF") == 0) {
|
||||||
|
if (domain->box_exist == 0)
|
||||||
|
error->all("Cannot use region INF when box does not exist");
|
||||||
|
yhi = domain->boxyhi;
|
||||||
|
} else yhi = yscale*atof(arg[5]);
|
||||||
|
|
||||||
|
if (strcmp(arg[6],"INF") == 0) {
|
||||||
|
if (domain->box_exist == 0)
|
||||||
|
error->all("Cannot use region INF when box does not exist");
|
||||||
|
zlo = domain->boxzlo;
|
||||||
|
} else zlo = zscale*atof(arg[6]);
|
||||||
|
|
||||||
|
if (strcmp(arg[7],"INF") == 0) {
|
||||||
|
if (domain->box_exist == 0)
|
||||||
|
error->all("Cannot use region INF when box does not exist");
|
||||||
|
zhi = domain->boxzhi;
|
||||||
|
} else zhi = zscale*atof(arg[7]);
|
||||||
|
|
||||||
|
yxshift = xscale*atof(arg[8]);
|
||||||
|
zxshift = xscale*atof(arg[9]);
|
||||||
|
zyshift = yscale*atof(arg[10]);
|
||||||
|
|
||||||
|
// error check
|
||||||
|
// prism cannot be 0 thickness in any dim, else inverse blows up
|
||||||
|
|
||||||
|
if (xlo >= xhi || ylo >= yhi || zlo >= zhi)
|
||||||
|
error->all("Illegal region prism command");
|
||||||
|
|
||||||
|
// extent of prism
|
||||||
|
|
||||||
|
extent_xlo = MIN(xlo,xlo+yxshift);
|
||||||
|
extent_xlo = MIN(extent_xlo,extent_xlo+zxshift);
|
||||||
|
extent_xhi = MAX(xhi,xhi+yxshift);
|
||||||
|
extent_xhi = MAX(extent_xhi,extent_xhi+zxshift);
|
||||||
|
extent_ylo = MIN(ylo,ylo+zyshift);
|
||||||
|
extent_yhi = MAX(yhi,yhi+zyshift);
|
||||||
|
extent_zlo = zlo;
|
||||||
|
extent_zhi = zhi;
|
||||||
|
|
||||||
|
// h = transformation matrix from tilt coords (0-1) to box coords (xyz)
|
||||||
|
// columns of h are edge vectors of tilted box
|
||||||
|
// hinv = transformation matrix from box coords to tilt coords
|
||||||
|
// both h and hinv are upper triangular
|
||||||
|
// since 1st edge of prism is along x-axis
|
||||||
|
// and bottom face of prism is in xy plane
|
||||||
|
|
||||||
|
h[0][0] = xhi - xlo;
|
||||||
|
h[0][1] = yxshift;
|
||||||
|
h[1][1] = yhi - ylo;
|
||||||
|
h[0][2] = zxshift;
|
||||||
|
h[1][2] = zyshift;
|
||||||
|
h[2][2] = zhi - zlo;
|
||||||
|
|
||||||
|
hinv[0][0] = 1.0/h[0][0];
|
||||||
|
hinv[0][1] = -h[0][1] / (h[0][0]*h[1][1]);
|
||||||
|
hinv[1][1] = 1.0/h[1][1];
|
||||||
|
hinv[0][2] = (h[0][1]*h[1][2] - h[0][2]*h[1][1]) / (h[0][0]*h[1][1]*h[2][2]);
|
||||||
|
hinv[1][2] = -h[1][2] / (h[1][1]*h[2][2]);
|
||||||
|
hinv[2][2] = 1.0/h[2][2];
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
check xyz against prism
|
||||||
|
abc = Hinv * (xyz - xyzlo)
|
||||||
|
abc = tilt coords (0-1)
|
||||||
|
Hinv = transformation matrix from box coords to tilt coords
|
||||||
|
xyz = box coords
|
||||||
|
xyzlo = lower-left corner of prism
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
int RegPrism::match(double x, double y, double z)
|
||||||
|
{
|
||||||
|
double a = hinv[0][0]*(x-xlo) + hinv[0][1]*(y-ylo) + hinv[0][2]*(z-zlo);
|
||||||
|
double b = hinv[1][1]*(y-ylo) + hinv[1][2]*(z-zlo);
|
||||||
|
double c = hinv[2][2]*(z-zlo);
|
||||||
|
|
||||||
|
int inside;
|
||||||
|
if (a >= 0.0 && a <= 1.0 && b >= 0.0 && b <= 1.0 && c >= 0.0 && c <= 1.0)
|
||||||
|
inside = 1;
|
||||||
|
else inside = 0;
|
||||||
|
|
||||||
|
return !(inside ^ interior); // 1 if same, 0 if different
|
||||||
|
}
|
||||||
33
src/region_prism.h
Normal file
33
src/region_prism.h
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
www.cs.sandia.gov/~sjplimp/lammps.html
|
||||||
|
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
||||||
|
|
||||||
|
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.
|
||||||
|
------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
#ifndef REGION_PRISM_H
|
||||||
|
#define REGION_PRISM_H
|
||||||
|
|
||||||
|
#include "region.h"
|
||||||
|
|
||||||
|
class RegPrism : public Region {
|
||||||
|
friend class FixInsert;
|
||||||
|
|
||||||
|
public:
|
||||||
|
RegPrism(int, char **);
|
||||||
|
~RegPrism() {}
|
||||||
|
int match(double, double, double);
|
||||||
|
|
||||||
|
private:
|
||||||
|
double xlo,xhi,ylo,yhi,zlo,zhi;
|
||||||
|
double yxshift,zxshift,zyshift;
|
||||||
|
double h[3][3],hinv[3][3];
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
@ -247,6 +247,7 @@ PairStyle(yukawa,PairYukawa)
|
|||||||
#include "region_block.h"
|
#include "region_block.h"
|
||||||
#include "region_cylinder.h"
|
#include "region_cylinder.h"
|
||||||
#include "region_intersect.h"
|
#include "region_intersect.h"
|
||||||
|
#include "region_prism.h"
|
||||||
#include "region_sphere.h"
|
#include "region_sphere.h"
|
||||||
#include "region_union.h"
|
#include "region_union.h"
|
||||||
#endif
|
#endif
|
||||||
@ -255,6 +256,7 @@ PairStyle(yukawa,PairYukawa)
|
|||||||
RegionStyle(block,RegBlock)
|
RegionStyle(block,RegBlock)
|
||||||
RegionStyle(cylinder,RegCylinder)
|
RegionStyle(cylinder,RegCylinder)
|
||||||
RegionStyle(intersect,RegIntersect)
|
RegionStyle(intersect,RegIntersect)
|
||||||
|
RegionStyle(prism,RegPrism)
|
||||||
RegionStyle(sphere,RegSphere)
|
RegionStyle(sphere,RegSphere)
|
||||||
RegionStyle(union,RegUnion)
|
RegionStyle(union,RegUnion)
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -0,0 +1,56 @@
|
|||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
www.cs.sandia.gov/~sjplimp/lammps.html
|
||||||
|
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
||||||
|
|
||||||
|
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 AngleInclude
|
||||||
|
#include "angle_class2.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef AngleClass
|
||||||
|
AngleStyle(class2,AngleClass2)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BondInclude
|
||||||
|
#include "bond_class2.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BondClass
|
||||||
|
BondStyle(class2,BondClass2)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DihedralInclude
|
||||||
|
#include "dihedral_class2.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DihedralClass
|
||||||
|
DihedralStyle(class2,DihedralClass2)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ImproperInclude
|
||||||
|
#include "improper_class2.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ImproperClass
|
||||||
|
ImproperStyle(class2,ImproperClass2)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PairInclude
|
||||||
|
#include "pair_lj_class2.h"
|
||||||
|
#include "pair_lj_class2_coul_cut.h"
|
||||||
|
#include "pair_lj_class2_coul_long.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PairClass
|
||||||
|
PairStyle(lj/class2,PairLJClass2)
|
||||||
|
PairStyle(lj/class2/coul/cut,PairLJClass2CoulCut)
|
||||||
|
PairStyle(lj/class2/coul/long,PairLJClass2CoulLong)
|
||||||
|
#endif
|
||||||
|
|||||||
@ -0,0 +1,28 @@
|
|||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
www.cs.sandia.gov/~sjplimp/lammps.html
|
||||||
|
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
||||||
|
|
||||||
|
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 AtomInclude
|
||||||
|
#include "atom_dpd.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef AtomClass
|
||||||
|
AtomStyle(dpd,AtomDPD)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PairInclude
|
||||||
|
#include "pair_dpd.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PairClass
|
||||||
|
PairStyle(dpd,PairDPD)
|
||||||
|
#endif
|
||||||
|
|||||||
@ -0,0 +1,50 @@
|
|||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
www.cs.sandia.gov/~sjplimp/lammps.html
|
||||||
|
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
||||||
|
|
||||||
|
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 AtomInclude
|
||||||
|
#include "atom_granular.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef AtomClass
|
||||||
|
AtomStyle(granular,AtomGranular)
|
||||||
|
# endif
|
||||||
|
|
||||||
|
#ifdef FixInclude
|
||||||
|
#include "fix_freeze.h"
|
||||||
|
#include "fix_gran_diag.h"
|
||||||
|
#include "fix_insert.h"
|
||||||
|
#include "fix_nve_gran.h"
|
||||||
|
#include "fix_shear_history.h"
|
||||||
|
#include "fix_wall_gran.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FixClass
|
||||||
|
FixStyle(freeze,FixFreeze)
|
||||||
|
FixStyle(gran/diag,FixGranDiag)
|
||||||
|
FixStyle(insert,FixInsert)
|
||||||
|
FixStyle(nve/gran,FixNVEGran)
|
||||||
|
FixStyle(SHEAR_HISTORY,FixShearHistory)
|
||||||
|
FixStyle(wall/gran,FixWallGran)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PairInclude
|
||||||
|
#include "pair_gran_hertzian.h"
|
||||||
|
#include "pair_gran_history.h"
|
||||||
|
#include "pair_gran_no_history.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PairClass
|
||||||
|
PairStyle(gran/hertzian,PairGranHertzian)
|
||||||
|
PairStyle(gran/history,PairGranHistory)
|
||||||
|
PairStyle(gran/no_history,PairGranNoHistory)
|
||||||
|
#endif
|
||||||
|
|||||||
@ -0,0 +1,38 @@
|
|||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
www.cs.sandia.gov/~sjplimp/lammps.html
|
||||||
|
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
||||||
|
|
||||||
|
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 KSpaceInclude
|
||||||
|
#include "ewald.h"
|
||||||
|
#include "pppm.h"
|
||||||
|
#include "pppm_tip4p.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef KSpaceClass
|
||||||
|
KSpaceStyle(ewald,Ewald)
|
||||||
|
KSpaceStyle(pppm,PPPM)
|
||||||
|
KSpaceStyle(pppm/tip4p,PPPMTIP4P)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PairInclude
|
||||||
|
#include "pair_buck_coul_long.h"
|
||||||
|
#include "pair_lj_cut_coul_long.h"
|
||||||
|
#include "pair_lj_cut_coul_long_tip4p.h"
|
||||||
|
#include "pair_lj_charmm_coul_long.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PairClass
|
||||||
|
PairStyle(buck/coul/long,PairBuckCoulLong)
|
||||||
|
PairStyle(lj/cut/coul/long,PairLJCutCoulLong)
|
||||||
|
PairStyle(lj/cut/coul/long/tip4p,PairLJCutCoulLongTIP4P)
|
||||||
|
PairStyle(lj/charmm/coul/long,PairLJCharmmCoulLong)
|
||||||
|
#endif
|
||||||
|
|||||||
@ -0,0 +1,24 @@
|
|||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
www.cs.sandia.gov/~sjplimp/lammps.html
|
||||||
|
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
||||||
|
|
||||||
|
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 PairInclude
|
||||||
|
#include "pair_eam.h"
|
||||||
|
#include "pair_eam_alloy.h"
|
||||||
|
#include "pair_eam_fs.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PairClass
|
||||||
|
PairStyle(eam,PairEAM)
|
||||||
|
PairStyle(eam/alloy,PairEAMAlloy)
|
||||||
|
PairStyle(eam/fs,PairEAMFS)
|
||||||
|
#endif
|
||||||
|
|||||||
@ -0,0 +1,116 @@
|
|||||||
|
/* ----------------------------------------------------------------------
|
||||||
|
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
|
||||||
|
www.cs.sandia.gov/~sjplimp/lammps.html
|
||||||
|
Steve Plimpton, sjplimp@sandia.gov, Sandia National Laboratories
|
||||||
|
|
||||||
|
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 AngleInclude
|
||||||
|
#include "angle_charmm.h"
|
||||||
|
#include "angle_cosine.h"
|
||||||
|
#include "angle_cosine_squared.h"
|
||||||
|
#include "angle_harmonic.h"
|
||||||
|
#include "angle_hybrid.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef AngleClass
|
||||||
|
AngleStyle(charmm,AngleCharmm)
|
||||||
|
AngleStyle(cosine,AngleCosine)
|
||||||
|
AngleStyle(cosine/squared,AngleCosineSquared)
|
||||||
|
AngleStyle(harmonic,AngleHarmonic)
|
||||||
|
AngleStyle(hybrid,AngleHybrid)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef AtomInclude
|
||||||
|
#include "atom_angle.h"
|
||||||
|
#include "atom_bond.h"
|
||||||
|
#include "atom_full.h"
|
||||||
|
#include "atom_molecular.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef AtomClass
|
||||||
|
AtomStyle(angle,AtomAngle)
|
||||||
|
AtomStyle(bond,AtomBond)
|
||||||
|
AtomStyle(full,AtomFull)
|
||||||
|
AtomStyle(molecular,AtomMolecular)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BondInclude
|
||||||
|
#include "bond_fene.h"
|
||||||
|
#include "bond_fene_expand.h"
|
||||||
|
#include "bond_harmonic.h"
|
||||||
|
#include "bond_hybrid.h"
|
||||||
|
#include "bond_morse.h"
|
||||||
|
#include "bond_nonlinear.h"
|
||||||
|
#include "bond_quartic.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef BondClass
|
||||||
|
BondStyle(fene,BondFENE)
|
||||||
|
BondStyle(fene/expand,BondFENEExpand)
|
||||||
|
BondStyle(harmonic,BondHarmonic)
|
||||||
|
BondStyle(hybrid,BondHybrid)
|
||||||
|
BondStyle(morse,BondMorse)
|
||||||
|
BondStyle(nonlinear,BondNonlinear)
|
||||||
|
BondStyle(quartic,BondQuartic)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DihedralInclude
|
||||||
|
#include "dihedral_charmm.h"
|
||||||
|
#include "dihedral_harmonic.h"
|
||||||
|
#include "dihedral_helix.h"
|
||||||
|
#include "dihedral_hybrid.h"
|
||||||
|
#include "dihedral_multi_harmonic.h"
|
||||||
|
#include "dihedral_opls.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DihedralClass
|
||||||
|
DihedralStyle(charmm,DihedralCharmm)
|
||||||
|
DihedralStyle(harmonic,DihedralHarmonic)
|
||||||
|
DihedralStyle(helix,DihedralHelix)
|
||||||
|
DihedralStyle(hybrid,DihedralHybrid)
|
||||||
|
DihedralStyle(multi/harmonic,DihedralMultiHarmonic)
|
||||||
|
DihedralStyle(opls,DihedralOPLS)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DumpInclude
|
||||||
|
#include "dump_bond.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef DumpClass
|
||||||
|
DumpStyle(bond,DumpBond)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FixInclude
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef FixClass
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ImproperInclude
|
||||||
|
#include "improper_cvff.h"
|
||||||
|
#include "improper_harmonic.h"
|
||||||
|
#include "improper_hybrid.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef ImproperClass
|
||||||
|
ImproperStyle(cvff,ImproperCvff)
|
||||||
|
ImproperStyle(harmonic,ImproperHarmonic)
|
||||||
|
ImproperStyle(hybrid,ImproperHybrid)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PairInclude
|
||||||
|
#include "pair_lj_charmm_coul_charmm.h"
|
||||||
|
#include "pair_lj_charmm_coul_charmm_implicit.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef PairClass
|
||||||
|
PairStyle(lj/charmm/coul/charmm,PairLJCharmmCoulCharmm)
|
||||||
|
PairStyle(lj/charmm/coul/charmm/implicit,PairLJCharmmCoulCharmmImplicit)
|
||||||
|
#endif
|
||||||
|
|||||||
Reference in New Issue
Block a user