Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F91820045
neigh_list.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
Thu, Nov 14, 19:19
Size
4 KB
Mime Type
text/x-c
Expires
Sat, Nov 16, 19:19 (1 d, 21 h)
Engine
blob
Format
Raw Data
Handle
22329175
Attached To
rLAMMPS lammps
neigh_list.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.
------------------------------------------------------------------------- */
#ifndef LMP_NEIGH_LIST_H
#define LMP_NEIGH_LIST_H
#include "pointers.h"
#include "my_page.h"
namespace
LAMMPS_NS
{
class
NeighList
:
protected
Pointers
{
public:
int
index
;
// index of which neigh list it is
// needed when a class invokes it directly
// also indexes the request it came from
int
buildflag
;
// 1 if pair_build invoked every reneigh
int
growflag
;
// 1 if stores atom-based arrays & pages
int
stencilflag
;
// 1 if stores stencil arrays
int
ghostflag
;
// 1 if it stores neighbors of ghosts
// data structs to store neighbor pairs I,J and associated values
int
inum
;
// # of I atoms neighbors are stored for
int
gnum
;
// # of ghost atoms neighbors are stored for
int
*
ilist
;
// local indices of I atoms
int
*
numneigh
;
// # of J neighbors for each I atom
int
**
firstneigh
;
// ptr to 1st J int value of each I atom
double
**
firstdouble
;
// ptr to 1st J double value of each I atom
int
pgsize
;
// size of each page
int
oneatom
;
// max size for one atom
int
dnum
;
// # of doubles per neighbor, 0 if none
MyPage
<
int
>
*
ipage
;
// pages of neighbor indices
MyPage
<
double
>
*
dpage
;
// pages of neighbor doubles, if dnum > 0
bigint
last_build
;
// timestep of last build for occasional lists
// atom types to skip when building list
// iskip,ijskip are just ptrs to corresponding request
int
*
iskip
;
// iskip[i] = 1 if atoms of type I are not in list
int
**
ijskip
;
// ijskip[i][j] = 1 if pairs of type I,J are not in list
// settings and pointers for related neighbor lists and fixes
NeighList
*
listgranhistory
;
// point at list storing shear history
class
FixShearHistory
*
fix_history
;
// fix that stores history info
int
respamiddle
;
// 1 if this respaouter has middle list
NeighList
*
listinner
;
// me = respaouter, point to respainner
NeighList
*
listmiddle
;
// me = respaouter, point to respamiddle
NeighList
*
listfull
;
// me = half list, point to full I derive from
NeighList
*
listcopy
;
// me = copy list, point to list I copy from
NeighList
*
listskip
;
// me = skip list, point to list I skip from
// USER-DPD package and Shardlow Splitting Algorithm (SSA) support
int
ssaflag
;
// 1 if the list has the ndxAIR_ssa array
uint16_t
(
*
ndxAIR_ssa
)[
8
];
// for each atom, last neighbor index of each AIR
int
*
bins_ssa
;
// index of next atom in each bin
int
maxbin_ssa
;
// size of bins_ssa array
int
*
binhead_ssa
;
// index of 1st local atom in each bin
int
*
gbinhead_ssa
;
// index of 1st ghost atom in each bin
int
maxhead_ssa
;
// size of binhead_ssa and gbinhead_ssa arrays
// stencils of bin indices for neighbor finding
int
maxstencil
;
// max size of stencil
int
nstencil
;
// # of bins in stencil
int
*
stencil
;
// list of bin offsets
int
**
stencilxyz
;
// bin offsets in xyz dims
int
maxstencil_multi
;
// max sizes of stencils
int
*
nstencil_multi
;
// # bins in each type-based multi stencil
int
**
stencil_multi
;
// list of bin offsets in each stencil
double
**
distsq_multi
;
// sq distances to bins in each stencil
NeighList
(
class
LAMMPS
*
);
virtual
~
NeighList
();
void
setup_pages
(
int
,
int
,
int
);
// setup page data structures
void
grow
(
int
);
// grow maxlocal
void
stencil_allocate
(
int
,
int
);
// allocate stencil arrays
void
copy_skip_info
(
int
*
,
int
**
);
// copy skip info from a neigh request
void
print_attributes
();
// debug routine
int
get_maxlocal
()
{
return
maxatoms
;}
bigint
memory_usage
();
protected:
int
maxatoms
;
// size of allocated atom arrays
};
}
#endif
Event Timeline
Log In to Comment