Ignore:
Timestamp:
Aug 20, 2014, 1:06:16 PM (11 years ago)
Author:
Frederik Heber <heber@…>
Children:
f5fa48
Parents:
c8d2e7
git-author:
Frederik Heber <heber@…> (07/18/14 16:24:53)
git-committer:
Frederik Heber <heber@…> (08/20/14 13:06:16)
Message:

Added getAssociatedPoints().

  • the general problem with getRemainingPoints() for saturating fragments with dangling bonds is that we violate the "Saturation Consistency Principle": Common saturation hydrogens for a specific fragments must remain at the exact same position for all containing fragments.
  • only there do we ascertain that the eigenvalue is (due to the invariance of hydrogen to changes in its chemical neighborhood, valid to a good degree) actually removed by higher order fragments.
  • this function is the first step to calculate a "global" set of saturation positions per atom.
  • added also getIdentityAssociation() in case the association is trivial (i.e. in case of only bonds of degree 1).
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/Fragmentation/Exporters/SphericalPointDistribution.hpp

    rc8d2e7 rce0ca4  
    126126    IndexList_t indices;
    127127  };
     128
     129  struct PolygonWithIndexTuples
     130  {
     131    //!> array with points
     132    VectorArray_t polygon;
     133    //!> list with tuples of indices for the above points, defining subset
     134    IndexTupleList_t indices;
     135  };
     136
     137  /** Returns associated \a _N points equally distributed on a sphere's surface
     138   * with respect to the given set of points \a _polygon.
     139   *
     140   * This function is similar to getRemainingPoints() in that both calculate
     141   * a matching between the given points \a _polygon and the \a _N equally
     142   * distributed points. The difference is that getRemainingPoints() returns
     143   * the unmatched points. This function however is supposed to match (almost)
     144   * all and return for each of the points a respective set of points where to
     145   * place saturation hydrogens.
     146   *
     147   * This set of points is then used as a "global" reference set over all
     148   * fragments (\sa FragmentationFragmentationAction::performCall()) such that
     149   * the common saturation hydrogens for the same atom over all containing
     150   * fragments remain at exactly the same position, the saturation consistency
     151   * principle. Only by that do we maintain same eigenvalues and hence minimal
     152   * disturbance (due to approximate invariance of hydrogen to its chemical
     153   * neighborhood) when using the fragmention method with closed-shell
     154   * calculations requiring this saturation of dangling bonds.
     155   *
     156   * \param _polygon already filled places to match
     157   * \param _N desired total number fo points
     158   * \return a set of positions and a list of tuples of indices such that each
     159   *        point in \a _polygon is related to one of the tuples and designates
     160   *        those positions where a number of hydrogens should be placed when
     161   *        the bond associated with this point is removed, i.e. the bond
     162   *        becomes a dangling one.
     163   */
     164  PolygonWithIndexTuples getAssociatedPoints(
     165      const WeightedPolygon_t &_polygon,
     166      const int _N);
     167
     168  static PolygonWithIndexTuples getIdentityAssociation(
     169      const WeightedPolygon_t &_polygon);
    128170
    129171  static Vector calculateCenterOfMinimumDistance(
Note: See TracChangeset for help on using the changeset viewer.