/usr/include/liggghts/comm_I.h is in libliggghts-dev 3.0.3+repack-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 | /* ----------------------------------------------------------------------
LIGGGHTS - LAMMPS Improved for General Granular and Granular Heat
Transfer Simulations
LIGGGHTS is part of the CFDEMproject
www.liggghts.com | www.cfdem.com
Christoph Kloss, christoph.kloss@cfdem.com
Copyright 2009-2012 JKU Linz
Copyright 2012- DCS Computing GmbH, Linz
LIGGGHTS is based on LAMMPS
LAMMPS - Large-scale Atomic/Molecular Massively Parallel Simulator
http://lammps.sandia.gov, Sandia National Laboratories
Steve Plimpton, sjplimp@sandia.gov
This software is distributed under the GNU General Public License.
See the README file in the top-level directory.
------------------------------------------------------------------------- */
#ifndef LMP_COMM_I_H
#define LMP_COMM_I_H
#include "atom.h"
#include "domain_wedge.h"
using namespace LAMMPS_NS;
/* ----------------------------------------------------------------------
decide if use comm optimizations for granular systems
don't use for triclinic (current implementation not valid for triclinic,
would have to translate radius into triclinic coordinates)
------------------------------------------------------------------------- */
inline bool Comm::use_gran_opt()
{
return (0 == domain->triclinic && atom->radius);
}
/* ----------------------------------------------------------------------
decide if border element, optimization for granular
------------------------------------------------------------------------- */
inline bool Comm::decide(int i,int dim,double lo,double hi,int ineed)
{
double **x = atom->x;
double *radius = atom->radius;
if( ((ineed % 2 == 0) && x[i][dim] >= lo && x[i][dim] <= (hi + (use_gran_opt()? (radius[i]) : 0.)) ) ||
((ineed % 2 == 1) && x[i][dim] >= (lo - (use_gran_opt()? radius[i] : 0.)) && x[i][dim] <= hi ) )
return true;
return false;
}
/* ----------------------------------------------------------------------
decide if border element for wedge case, optimization for granular
------------------------------------------------------------------------- */
inline bool Comm::decide_wedge(int i,int dim,double lo,double hi,int ineed)
{
double **x = atom->x;
double *radius = atom->radius;
double coo[2],d[2];
coo[0] = x[i][iphi];
coo[1] = x[i][(iphi+1)%3];
if (ineed % 2 == 0)
{
vectorSubtract2D(coo,pleft,d);
if(vectorDot2D(d,nleft) >= -(use_gran_opt()? radius[i] : 0.))
{
return true;
}
}
else if (ineed % 2 == 1)
{
vectorSubtract2D(coo,pright,d);
if(vectorDot2D(d,nright) >= -(use_gran_opt()? radius[i] : 0.))
{
return true;
}
}
return false;
}
#endif
|