37     const int writeOption = 0;
 
  113     const int nMPM = particles.
getCount();
 
  117     const shared_ptr<VecD3Array>& MPM_Points = solid.
getCoordinates();
 
  118     const shared_ptr<VecD3Array>& MPM_Vels = solid.
getVelocities();
 
  119     const shared_ptr<Array<int> >& particleTypes = solid.
getTypes();
 
  123     cout<<
"count of cells is "<<nCells<<endl;
 
  142       for(
int p=0; p<nMPM; p++){
 
  143         const VecD3 MPM_point = (*MPM_Points)[p];
 
  144         MPM_PointstoCells[p]=-1;
 
  145         const int nearestCell = O.
getNode(MPM_point);
 
  147         int inCellorNot=
inCell(nearestCell, MPM_point, faceCells, cellFaces,
 
  148                                faceArea,faceCentroid);
 
  149         if (inCellorNot==1) {
 
  151           MPM_PointstoCells[p]=nearestCell;
 
  154         while (flag == 0 && levelCount <= 2){
 
  156           const int nc = cellCells.
getCount(nearestCell);
 
  157           for (
int c = 0; c < nc; c ++){
 
  158             int cellCandidate = cellCells(nearestCell, c);
 
  159             inCellorNot=
inCell(cellCandidate, MPM_point, faceCells, cellFaces,
 
  160                                faceArea,faceCentroid);
 
  161             if (inCellorNot==1) {
 
  163               MPM_PointstoCells[p]=cellCandidate;
 
  176       const double radius = 2.5;
 
  177       for(
int p=0; p<nMPM; p++){
 
  178         const VecD3 MPM_point = (*MPM_Points)[p];
 
  179         vector<int> cellIndexList;
 
  180         O.
getNodes(MPM_point, radius, cellIndexList);
 
  181         MPM_PointstoCells[p]=-1;
 
  182         for (
int i=0; i< (int) cellIndexList.size(); i++)    {
 
  183           int cellCandidate = cellIndexList[i];
 
  184           const int inCellorNot=
inCell(cellCandidate, MPM_point, faceCells, cellFaces,
 
  185                                        faceArea,faceCentroid);
 
  187             MPM_PointstoCells[p]=cellCandidate;
 
  211        for(
int p=0; p<nMPM; p++){
 
  212          VecD3 MPM_point = (*MPM_Points)[p];
 
  213          MPM_PointstoCells[p]=-1;
 
  214          for(
int i=0; i< nCells; i++)    {
 
  215             const int inCellorNot=
inCell(i, MPM_point, faceCells, cellFaces,
 
  216                                        faceArea,faceCentroid);
 
  218               MPM_PointstoCells[p]=i;
 
  228     string fileName20=fileBase+
"particles.dat";
 
  230     file20=&fileName20[0];
 
  232     fp=fopen(file20,
"w");
 
  233     for (
int c=0; c<nMPM; c++){
 
  234       if((*particleTypes)[c]==1){
 
  235         fprintf(fp, 
"%i\t%e\t%e\t%e\n", c, (*MPM_Points)[c][0],(*MPM_Points)[c][1],(*MPM_Points)[c][2]);
 
  243     shared_ptr<CRConnectivity> particleCellsCR  =
 
  255     string fileName14=fileBase+
"particletocells.dat";
 
  257     file14=&fileName14[0];
 
  259     fp=fopen(file14,
"w");
 
  262     for(
int c=0; c<nMPM; c++){
 
  266       for(
int p=0; p<np; p++){
 
  267         fprintf(fp, 
"%i\t%i\n", c, particleCells(c, p));
 
  275     shared_ptr<CRConnectivity> cellParticlesCR = (*particleCellsCR).getTranspose();
 
  287     string fileName13=fileBase+
"celltoparticles.dat";
 
  289     file13=&fileName13[0];
 
  291     fp=fopen(file13,
"w");
 
  293     for(
int c=0; c<nCells; c++){
 
  297       for(
int p=0; p<np; p++){
 
  300         int pID = cellParticles(c,p);
 
  301         if ((*particleTypes)[pID] == 1)
 
  302         fprintf(fp,
"%i\t%e\t%e\t%e\t%i\n", c, (*MPM_Points)[pID][0],(*MPM_Points)[pID][1],(*MPM_Points)[pID][2],(*particleTypes)[pID]);
 
  311     markCell ( mesh, nCells,nSelfCells, cellParticles, cellCells);
 
  331     string fileName15=fileBase+
"ibfaces.dat";
 
  333     file15=&fileName15[0];
 
  335     fp=fopen(file15,
"w");
 
  337     for(
int f=0; f<ibFaces.
getCount(); f++){
 
  338       int fID = ibFaceList[f];
 
  339       fprintf(fp,
"%i\t%e\t%e\t%e\n", fID, faceCentroid[fID][0],faceCentroid[fID][1],faceCentroid[fID][2]);
 
  349     shared_ptr<CRConnectivity> ibFaceParticlesCR = 
 
  350       setibFaceParticles (mesh, ibFaces, ibFaceList, particles,faceCells, cellParticles, cellCells,  *particleTypes);
 
  361      shared_ptr<CRConnectivity> ibFaceCellsCR = 
 
  362        setibFaceCells (mesh, ibFaceList, ibFaces,  cells, faceCells, cellFaces, faceCentroid);
 
  373      string fileName11=fileBase+
"ibfacetoparticle.dat";
 
  375      file11=&fileName11[0];
 
  377      fp=fopen(file11,
"w");
 
  379      for(
int f=0; f<ibFaces.
getCount(); f++){
 
  380        const int faceIndex = ibFaceList[f];
 
  383       int nc = ibFaceParticles.
getCount(f);
 
  385       for(
int c=0; c<nc; c++){
 
  386         int pID = ibFaceParticles(f,c);
 
  389         fprintf(fp, 
"%i\t%i\t%e\t%e\t%e\t%i\n", faceIndex,pID, (*MPM_Points)[pID][0],(*MPM_Points)[pID][1],(*MPM_Points)[pID][2],(*particleTypes)[pID]);
 
  395      string fileName12=fileBase+
"ibfacetocell.dat";
 
  397      file12=&fileName12[0];
 
  399      fp=fopen(file12,
"w");
 
  401      for(
int f=0; f<ibFaces.
getCount(); f++){
 
  402        const int faceIndex = ibFaceList[f];
 
  407       for(
int c=0; c<nc; c++){
 
  410         int cID = ibFaceCells(f,c);
 
  411         fprintf(fp, 
"%i\t%i\t%e\t%e\t%e\n",faceIndex,cID, (cellCentroid)[cID][0],(cellCentroid)[cID][1],(cellCentroid)[cID][2]);
 
void checkIBFaces(const Array< int > &ibFaceList, const VectorT3Array &faceArea, const CRConnectivity &faceCells, const Mesh &mesh)
 
int getCount(const int i) const 
 
const shared_ptr< Array< VecD3 > > & getCoordinates()
 
const StorageSite & getIBFaces() const 
 
const CRConnectivity & getConnectivity(const StorageSite &from, const StorageSite &to) const 
 
void CellMark_Impl(Mesh &mesh, const GeomFields &geomFields, const string fileBase, Octree &O, MPM &solid, const int option)
 
const shared_ptr< CRConnectivity > setParticleCells(const StorageSite &rowSite, const StorageSite &colSite, const Array< int > &connectivity)
 
const Array< int > & getIBFaceList() const 
 
const shared_ptr< Array< VecD3 > > & getVelocities()
 
void setConnectivity(const StorageSite &rowSite, const StorageSite &colSite, shared_ptr< CRConnectivity > conn)
 
void markCell(Mesh &mesh, const int nCells, const int nSelfCells, const CRConnectivity &cellParticles, const CRConnectivity &cellCells)
 
void markIBFaces(Mesh &mesh, const int nFaces, const CRConnectivity &faceCells)
 
const CRConnectivity & getAllFaceCells() const 
 
const CRConnectivity & getCellFaces() const 
 
Array< VecD3 > VecD3Array
 
const StorageSite & getParticles() const 
 
void getNodes(const VectorT3 coordinate, const double radius, vector< int > &cellList)
Get all objects closest to a x/y/z within a radius. search mechanism similar to getNode(coordinate) ...
 
const StorageSite & getFaces() const 
 
const CRConnectivity & getCellCells() const 
 
const StorageSite & getCells() const 
 
const int getNode(const double x, const double y, const double z)
 
int inCell(const int cellIndex, const VectorT3 &point, const CRConnectivity &faceCells, const CRConnectivity &cellFaces, const VectorT3Array &faceArea, const VectorT3Array &faceCentroid)
 
void reportCellMark(const Mesh &mesh, const int nCells, const VectorT3Array &cellCentroid, const string fileBase)
 
const shared_ptr< CRConnectivity > setibFaceCells(const Mesh &mesh, const Array< int > &ibFaceList, const StorageSite &ibFaces, const StorageSite &cells, const CRConnectivity &faceCells, const CRConnectivity &cellFaces, const VecD3Array &faceCentroid)
 
const shared_ptr< Array< int > > & getTypes()
 
const shared_ptr< CRConnectivity > setibFaceParticles(const Mesh &mesh, const StorageSite &ibFaces, const Array< int > &ibFaceList, const StorageSite &particles, const CRConnectivity &faceCells, const CRConnectivity &cellParticles, const CRConnectivity &cellCells, const Array< int > &particleType)
 
Vector< double, 3 > VecD3