Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/analysis_correlation.cpp

    rbd61b41 r790807  
    267267        Log() << Verbose(3) << "Current atom is " << *Walker << "." << endl;
    268268        if ((type == NULL) || (Walker->type == type)) {
    269           triangle = Surface->FindClosestTriangleToPoint(Walker->node, LC );
     269          triangle = Surface->FindClosestTriangleToVector(Walker->node, LC );
    270270          if (triangle != NULL) {
    271271            distance = DistanceToTrianglePlane(Walker->node, triangle);
     
    308308  }
    309309  outmap = new CorrelationToSurfaceMap;
     310  double ShortestDistance = 0.;
     311  BoundaryTriangleSet *ShortestTriangle = NULL;
    310312  for (MoleculeList::const_iterator MolWalker = molecules->ListOfMolecules.begin(); MolWalker != molecules->ListOfMolecules.end(); MolWalker++)
    311313    if ((*MolWalker)->ActiveFlag) {
     
    321323          periodicX.MatrixMultiplication(FullInverseMatrix);  // x now in [0,1)^3
    322324          // go through every range in xyz and get distance
     325          ShortestDistance = -1.;
    323326          for (n[0]=-ranges[0]; n[0] <= ranges[0]; n[0]++)
    324327            for (n[1]=-ranges[1]; n[1] <= ranges[1]; n[1]++)
     
    327330                checkX.AddVector(&periodicX);
    328331                checkX.MatrixMultiplication(FullMatrix);
    329                 triangle = Surface->FindClosestTriangleToPoint(&checkX, LC );
    330                 if (triangle != NULL) {
    331                   distance = DistanceToTrianglePlane(&checkX, triangle);
    332                   outmap->insert ( pair<double, pair<atom *, BoundaryTriangleSet*> >(distance, pair<atom *, BoundaryTriangleSet*> (Walker, triangle) ) );
     332                triangle = Surface->FindClosestTriangleToVector(&checkX, LC);
     333                distance = Surface->GetDistanceSquaredToTriangle(checkX, triangle);
     334                if ((ShortestDistance == -1.) || (distance < ShortestDistance)) {
     335                  ShortestDistance = distance;
     336                  ShortestTriangle = triangle;
    333337                }
    334           }
     338              }
     339          // insert
     340          ShortestDistance = sqrt(ShortestDistance);
     341          outmap->insert ( pair<double, pair<atom *, BoundaryTriangleSet*> >(ShortestDistance, pair<atom *, BoundaryTriangleSet*> (Walker, ShortestTriangle) ) );
     342          //Log() << Verbose(1) << "INFO: Inserting " << Walker << " with distance " << ShortestDistance << " to " << *ShortestTriangle << "." << endl;
    335343        }
    336344      }
     
    342350};
    343351
    344 /** Returns the index of the bin for a given value.
     352/** Returns the start of the bin for a given value.
    345353 * \param value value whose bin to look for
    346354 * \param BinWidth width of bin
    347355 * \param BinStart first bin
    348356 */
    349 int GetBin ( const double value, const double BinWidth, const double BinStart )
    350 {
    351   Info FunctionInfo(__func__);
    352   int bin =(int) (floor((value - BinStart)/BinWidth));
    353   return (bin);
     357double GetBin ( const double value, const double BinWidth, const double BinStart )
     358{
     359  Info FunctionInfo(__func__);
     360  double bin =(double) (floor((value - BinStart)/BinWidth));
     361  return (bin*BinWidth+BinStart);
    354362};
    355363
     
    362370{
    363371  Info FunctionInfo(__func__);
    364   *file << "# BinStart\tCount" << endl;
     372  *file << "BinStart\tCount" << endl;
    365373  for (BinPairMap::const_iterator runner = map->begin(); runner != map->end(); ++runner) {
    366374    *file << runner->first << "\t" << runner->second << endl;
     
    375383{
    376384  Info FunctionInfo(__func__);
    377   *file << "# BinStart\tAtom1\tAtom2" << endl;
     385  *file << "BinStart\tAtom1\tAtom2" << endl;
    378386  for (PairCorrelationMap::const_iterator runner = map->begin(); runner != map->end(); ++runner) {
    379387    *file << runner->first << "\t" << *(runner->second.first) << "\t" << *(runner->second.second) << endl;
     
    388396{
    389397  Info FunctionInfo(__func__);
    390   *file << "# BinStart\tAtom::x[i]-point.x[i]" << endl;
     398  *file << "BinStart\tAtom::x[i]-point.x[i]" << endl;
    391399  for (CorrelationToPointMap::const_iterator runner = map->begin(); runner != map->end(); ++runner) {
    392400    *file << runner->first;
     
    404412{
    405413  Info FunctionInfo(__func__);
    406   *file << "# BinStart\tTriangle" << endl;
     414  *file << "BinStart\tTriangle" << endl;
    407415  for (CorrelationToSurfaceMap::const_iterator runner = map->begin(); runner != map->end(); ++runner) {
    408     *file << runner->first << "\t" << *(runner->second.second) << endl;
    409   }
    410 };
    411 
     416    *file << runner->first << "\t" << *(runner->second.first) << "\t" << *(runner->second.second) << endl;
     417  }
     418};
     419
Note: See TracChangeset for help on using the changeset viewer.