Changeset 9bb6e3 for src/Potentials


Ignore:
Timestamp:
Oct 10, 2016, 1:14:41 PM (9 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Fix_FitPartialCharges
Children:
9c02a8
Parents:
489b9c
Message:

tempcommit: Merge with fdc56798f

Location:
src/Potentials
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • src/Potentials/PartialNucleiChargeFitter.cpp

    r489b9c r9bb6e3  
    309309VectorContent PartialNucleiChargeFitter::calculateResiduum()
    310310{
    311   // need to reconstruct matrix as it was overwritten by SVD
    312   if (PotentialFromCharges == NULL)
    313     constructMatrix();
     311  constructMatrix();
    314312
    315313  // calculate residual vector
     
    319317}
    320318
    321 double PartialNucleiChargeFitter::operator()()
     319void PartialNucleiChargeFitter::prepareCharges(const size_t _size)
    322320{
    323321  // prepare PartialCharges
     
    326324    PartialCharges = NULL;
    327325  }
    328   PartialCharges = new VectorContent(positions.size());
     326  PartialCharges = new VectorContent(_size);
     327}
     328
     329double PartialNucleiChargeFitter::operator()()
     330{
     331  prepareCharges(positions.size());
    329332
    330333  // set up over-determined system's problem matrix A for Ax=b
     
    341344  LOG(2, "DEBUG: Norm of right-hand side is " << SampledPotential.Norm());
    342345
    343   // calculate residuum (force matrix reconstruction)
    344   delete PotentialFromCharges;
     346  // calculate residuum (forces matrix reconstruction)
    345347  VectorContent residuum = calculateResiduum();
    346348
     
    379381
    380382  return residuum.Norm();
     383}
     384
     385bool PartialNucleiChargeFitter::setCharges(const charges_t &_charges)
     386{
     387  // check sizes
     388  if (positions.size() != _charges.size()) {
     389    return false;
     390  }
     391  // (re-)allocate memory
     392  prepareCharges(positions.size());
     393  // and place charges in vector
     394  for(size_t i=0;i<_charges.size();++i)
     395    (*PartialCharges)[i] = _charges[i];
     396
     397  return true;
    381398}
    382399
  • src/Potentials/PartialNucleiChargeFitter.hpp

    r489b9c r9bb6e3  
    114114    *
    115115    * \param _charges solution vector x as type charges_t
     116    * \return false - if charges does not match in size with internal positions
    116117    */
    117    void setCharges(const charges_t &_charges) const;
     118   bool setCharges(const charges_t &_charges);
    118119
    119120   /** Calculates the residuum for the currently set charges.
     
    148149       const Vector &grid_position) const;
    149150
     151   /** Helper function to allocate memory for charges.
     152    *
     153    * \param _size size to allocate
     154    */
     155   void prepareCharges(const size_t _size);
     156
    150157private:
    151158   //!> grid dimensions per axis for internal use
Note: See TracChangeset for help on using the changeset viewer.