346 |
|
template<typename T> class ZConstraint : public T { |
347 |
|
|
348 |
|
public: |
349 |
< |
class ForceSubstractionPolicy{ |
349 |
> |
class ForceSubtractionPolicy{ |
350 |
|
public: |
351 |
< |
ForceSubstractionPolicy(ZConstraint<T>* integrator) {zconsIntegrator = integrator;} |
351 |
> |
ForceSubtractionPolicy(ZConstraint<T>* integrator) {zconsIntegrator = integrator;} |
352 |
|
|
353 |
|
virtual void update() = 0; |
354 |
|
virtual double getZFOfFixedZMols(Molecule* mol, Atom* atom, double totalForce) = 0; |
360 |
|
ZConstraint<T>* zconsIntegrator;; |
361 |
|
}; |
362 |
|
|
363 |
< |
class PolicyByNumber : ForceSubstractionPolicy{ |
363 |
> |
class PolicyByNumber : public ForceSubtractionPolicy{ |
364 |
|
public: |
365 |
< |
PolicyByNumber(ZConstraint<T>* integrator) :ForceSubstractionPolicy(integrator) {} |
365 |
> |
PolicyByNumber(ZConstraint<T>* integrator) :ForceSubtractionPolicy(integrator) {} |
366 |
|
virtual void update(); |
367 |
|
virtual double getZFOfFixedZMols(Molecule* mol, Atom* atom, double totalForce) ; |
368 |
|
virtual double getZFOfMovingMols(Atom* atom, double totalForce) ; |
373 |
|
int totNumOfMovingAtoms; |
374 |
|
}; |
375 |
|
|
376 |
< |
class PolicyByMass :ForceSubstractionPolicy{ |
376 |
> |
class PolicyByMass : public ForceSubtractionPolicy{ |
377 |
|
public: |
378 |
< |
PolicyByMass(ZConstraint<T>* integrator) :ForceSubstractionPolicy(integrator) {} |
378 |
> |
PolicyByMass(ZConstraint<T>* integrator) :ForceSubtractionPolicy(integrator) {} |
379 |
|
|
380 |
|
virtual void update(); |
381 |
|
virtual double getZFOfFixedZMols(Molecule* mol, Atom* atom, double totalForce) ; |
467 |
|
double calcSysCOMVel(); |
468 |
|
double calcTotalForce(); |
469 |
|
|
470 |
< |
ForceSubstractionPolicy* forcePolicy; //force substration policy |
471 |
< |
friend class ForceSubstractionPolicy; |
470 |
> |
ForceSubtractionPolicy* forcePolicy; //force substration policy |
471 |
> |
friend class ForceSubtractionPolicy; |
472 |
|
|
473 |
|
}; |
474 |
|
|