ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/trunk/src/flucq/FluctuatingChargePropagator.cpp
(Generate patch)

Comparing branches/development/src/flucq/FluctuatingChargePropagator.cpp (file contents):
Revision 1754 by jmichalk, Wed Jun 13 14:45:59 2012 UTC vs.
Revision 1766 by gezelter, Thu Jul 5 17:08:25 2012 UTC

# Line 48 | Line 48
48   #include "optimization/StatusFunction.hpp"
49   #include "optimization/OptimizationFactory.hpp"
50  
51
52
51   #ifdef IS_MPI
52   #include <mpi.h>
53   #endif
# Line 57 | Line 55 | namespace OpenMD {
55   using namespace QuantLib;
56   namespace OpenMD {
57  
58 <  FluctuatingChargePropagator::FluctuatingChargePropagator(SimInfo* info,
59 <                                                           ForceManager* fm) :
62 <    info_(info), forceMan_(fm), hasFlucQ_(false) {
58 >  FluctuatingChargePropagator::FluctuatingChargePropagator(SimInfo* info) :
59 >    info_(info), hasFlucQ_(false), forceMan_(NULL) {
60      
61 +    Globals* simParams = info_->getSimParams();
62 +    fqParams_ = simParams->getFluctuatingChargeParameters();
63 +
64 +  }
65 +
66 +  void FluctuatingChargePropagator::setForceManager(ForceManager* forceMan) {
67 +    forceMan_ = forceMan;
68 +  }
69 +
70 +  void FluctuatingChargePropagator::initialize() {
71 +
72      if (info_->usesFluctuatingCharges()) {
73        if (info_->getNFluctuatingCharges() > 0) {
66        
74          hasFlucQ_ = true;
75 <        Globals* simParams = info_->getSimParams();
69 <        fqParams_ = simParams->getFluctuatingChargeParameters();
70 <        fqConstraints_ = new FluctuatingChargeConstraints(info_);
71 <        
75 >        fqConstraints_ = new FluctuatingChargeConstraints(info_);        
76        }
77      }
74  }
78  
76  void FluctuatingChargePropagator::initialize() {
77
79      if (!hasFlucQ_) return;
80  
81      SimInfo::MoleculeIterator i;
# Line 90 | Line 91 | namespace OpenMD {
91          atom->setFlucQVel(0.0);
92        }
93      }
93
94    std::cerr << "doing a minimization\n";
94      
95      fqConstraints_ = new FluctuatingChargeConstraints(info_);
96      FluctuatingChargeObjectiveFunction flucQobjf(info_, forceMan_, fqConstraints_);    
# Line 100 | Line 99 | namespace OpenMD {
99      EndCriteria endCriteria(1000, 100, 1e-5, 1e-5, 1e-5);      
100      OptimizationMethod* minim = OptimizationFactory::getInstance()->createOptimization("SD", info_);
101  
102 <    DumpStatusFunction dsf(info_);                           // we want a dump file written every iteration
102 >    DumpStatusFunction dsf(info_);  // we want a dump file written every iteration
103  
104      minim->minimize(problem, endCriteria);
105 <    cerr << "Finished minimization\n";
107 <    for (mol = info_->beginMolecule(i); mol != NULL;
108 <         mol = info_->nextMolecule(i)) {
109 <      for (atom = mol->beginFluctuatingCharge(j); atom != NULL;
110 <           atom = mol->nextFluctuatingCharge(j)) {
111 <        cerr << atom->getType() << "\tQ Pos: " << atom->getFlucQPos() << "\n";
112 <      }
113 <    }
105 >
106    }
107  
116
108    void FluctuatingChargePropagator::applyConstraints() {
109      if (!hasFlucQ_) return;
110  

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines