Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F91434548
compute_chunk_atom.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Mon, Nov 11, 02:11
Size
6 KB
Mime Type
text/x-c
Expires
Wed, Nov 13, 02:11 (2 d)
Engine
blob
Format
Raw Data
Handle
22202523
Attached To
rLAMMPS lammps
compute_chunk_atom.h
View Options
/* -*- c++ -*- ----------------------------------------------------------
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
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 COMPUTE_CLASS
ComputeStyle
(
chunk
/
atom
,
ComputeChunkAtom
)
#else
#ifndef LMP_COMPUTE_CHUNK_ATOM_H
#define LMP_COMPUTE_CHUNK_ATOM_H
#include "compute.h"
#include <map>
namespace
LAMMPS_NS
{
class
ComputeChunkAtom
:
public
Compute
{
public:
int
nchunk
,
ncoord
,
compress
,
idsflag
,
lockcount
;
int
computeflag
;
// 1 if this compute invokes other computes
double
chunk_volume_scalar
;
double
*
chunk_volume_vec
;
double
**
coord
;
int
*
ichunk
,
*
chunkID
;
ComputeChunkAtom
(
class
LAMMPS
*
,
int
,
char
**
);
~
ComputeChunkAtom
();
void
init
();
void
setup
();
void
compute_peratom
();
void
set_arrays
(
int
);
double
memory_usage
();
void
lock
(
class
Fix
*
,
bigint
,
bigint
);
void
unlock
(
class
Fix
*
);
int
setup_chunks
();
void
compute_ichunk
();
private:
int
which
,
binflag
;
int
regionflag
,
nchunksetflag
,
nchunkflag
,
discard
;
int
limit
,
limitstyle
,
limitfirst
;
int
scaleflag
,
pbcflag
;
double
xscale
,
yscale
,
zscale
;
int
argindex
;
char
*
cfvid
;
// xyz spatial bins
int
ndim
;
int
dim
[
3
],
originflag
[
3
],
nlayers
[
3
];
int
minflag
[
3
],
maxflag
[
3
];
double
origin
[
3
],
delta
[
3
];
double
offset
[
3
],
invdelta
[
3
];
double
minvalue
[
3
],
maxvalue
[
3
];
// spherical spatial bins
double
sorigin_user
[
3
];
double
sorigin
[
3
];
double
sradmin_user
,
sradmax_user
;
double
sradmin
,
sradmax
,
sinvrad
;
int
nsbin
;
// cylindrical spatial bins
double
corigin_user
[
3
];
double
corigin
[
3
];
double
cradmin_user
,
cradmax_user
;
double
cradmin
,
cradmax
,
cinvrad
;
int
cdim1
,
cdim2
;
int
ncbin
,
ncplane
;
char
*
idregion
;
class
Region
*
region
;
class
Compute
*
cchunk
;
class
Fix
*
fchunk
;
int
vchunk
;
int
maxvar
;
double
*
varatom
;
char
*
id_fix
;
class
FixStore
*
fixstore
;
class
Fix
*
lockfix
;
// ptr to FixAveChunk that is locking out setups
// NULL if no lock currently in place
bigint
lockstart
,
lockstop
;
// timesteps for start and stop of locking
bigint
invoked_setup
;
// last timestep setup_chunks and nchunk calculated
bigint
invoked_ichunk
;
// last timestep ichunk values calculated
int
nmax
,
nmaxint
;
double
*
chunk
;
int
molcheck
;
// one-time check if all molecule atoms in chunk
int
*
exclude
;
// 1 if atom is not assigned to any chunk
std
::
map
<
tagint
,
int
>
*
hash
;
// store original chunks IDs before compression
// static variable for ring communication callback to access class data
// callback functions for ring communication
static
ComputeChunkAtom
*
cptr
;
static
void
idring
(
int
,
char
*
);
void
assign_chunk_ids
();
void
compress_chunk_ids
();
void
check_molecules
();
int
setup_xyz_bins
();
int
setup_sphere_bins
();
int
setup_cylinder_bins
();
void
bin_volumes
();
void
atom2bin1d
();
void
atom2bin2d
();
void
atom2bin3d
();
void
atom2binsphere
();
void
atom2bincylinder
();
void
readdim
(
int
,
char
**
,
int
,
int
);
};
}
#endif
#endif
/* ERROR/WARNING messages:
E: Illegal ... command
Self-explanatory. Check the input script syntax and compare to the
documentation for the command. You can use -echo screen as a
command-line option when running LAMMPS to see the offending line.
E: Region ID for compute chunk/atom does not exist
Self-explanatory.
E: Compute chunk/atom molecule for non-molecular system
Self-explanatory.
E: Compute chunk/atom without bins cannot use discard mixed
That discard option only applies to the binning styles.
E: Compute chunk/atom sphere z origin must be 0.0 for 2d
Self-explanatory.
E: Compute chunk/atom cylinder axis must be z for 2d
Self-explanatory.
E: Compute ID for compute chunk /atom does not exist
Self-explanatory.
E: Compute chunk/atom compute does not calculate per-atom values
Self-explanatory.
E: Compute chunk/atom compute does not calculate a per-atom vector
Self-explanatory.
E: Compute chunk/atom compute does not calculate a per-atom array
Self-explanatory.
E: Compute chunk/atom compute array is accessed out-of-range
The index for the array is out of bounds.
E: Fix ID for compute chunk/atom does not exist
Self-explanatory.
E: Compute chunk/atom fix does not calculate per-atom values
Self-explanatory.
E: Compute chunk/atom fix does not calculate a per-atom vector
Self-explanatory.
E: Compute chunk/atom fix does not calculate a per-atom array
Self-explanatory.
E: Compute chunk/atom fix array is accessed out-of-range
the index for the array is out of bounds.
E: Variable name for compute chunk/atom does not exist
Self-explanatory.
E: Compute chunk/atom variable is not atom-style variable
Self-explanatory.
E: Compute chunk/atom for triclinic boxes requires units reduced
Self-explanatory.
E: Compute ID for compute chunk/atom does not exist
Self-explanatory.
E: Molecule IDs too large for compute chunk/atom
The IDs must not be larger than can be stored in a 32-bit integer
since chunk IDs are 32-bit integers.
E: Compute chunk/atom ids once but nchunk is not once
You cannot assign chunks IDs to atom permanently if the number of
chunks may change.
E: Two fix ave commands using same compute chunk/atom command in incompatible ways
They are both attempting to "lock" the chunk/atom command so that the
chunk assignments persist for some number of timesteps, but are doing
it in different ways.
E: Fix used in compute chunk/atom not computed at compatible time
The chunk/atom compute cannot query the output of the fix on a timestep
it is needed.
W: One or more chunks do not contain all atoms in molecule
This may not be what you intended.
E: Invalid bin bounds in compute chunk/atom
The lo/hi values are inconsistent.
E: Compute chunk/atom bin/sphere radius is too large for periodic box
Radius cannot be bigger than 1/2 of any periodic dimention.
E: Compute chunk/atom bin/cylinder radius is too large for periodic box
Radius cannot be bigger than 1/2 of a non-axis periodic dimention.
E: Cannot use compute chunk/atom bin z for 2d model
Self-explanatory.
*/
Event Timeline
Log In to Comment