452 |
|
int* indexOfZConsMols; //index of local Z-Constraint Molecules |
453 |
|
double* fz; |
454 |
|
double* curZPos; |
455 |
– |
|
456 |
– |
|
455 |
|
|
456 |
+ |
double zconsFixTime; |
457 |
+ |
double zconsGap; |
458 |
+ |
bool hasZConsGap; |
459 |
+ |
vector<double> endFixTime; |
460 |
+ |
|
461 |
|
int whichDirection; //constraint direction |
462 |
|
|
463 |
|
private: |
470 |
|
double calcMovingMolsCOMVel(); |
471 |
|
double calcSysCOMVel(); |
472 |
|
double calcTotalForce(); |
473 |
+ |
void updateZPos(); |
474 |
|
|
475 |
|
ForceSubtractionPolicy* forcePolicy; //force subtraction policy |
476 |
|
friend class ForceSubtractionPolicy; |
478 |
|
}; |
479 |
|
|
480 |
|
/* |
481 |
< |
class OOPSEMinimizerBase : public RealIntegrator { |
481 |
> |
//Steered Molecular Dynamics |
482 |
> |
template<typename T> class SMD : public T{ |
483 |
|
public: |
484 |
< |
|
485 |
< |
OOPSEMinimizerBase ( SimInfo *theInfo, ForceFields* the_ff ); |
486 |
< |
virtual ~OOPSEMinimizerBase(); |
487 |
< |
|
488 |
< |
double calcGradient(vector<double>& x, vector<double>& grad); |
484 |
< |
void setCoor(vector<double>& x); |
485 |
< |
vector<double> getCoor(); |
486 |
< |
void output(vector<double>& x, int iteration); |
487 |
< |
int getDim() {return dim;} |
488 |
< |
void constraintMove(); |
489 |
< |
void shakeF(); |
490 |
< |
void shakeR(); |
491 |
< |
protected: |
492 |
< |
|
493 |
< |
int dim; |
494 |
< |
void calcDim(); |
484 |
> |
SMD( SimInfo *theInfo, ForceFields* the_ff); |
485 |
> |
~SMD(); |
486 |
> |
|
487 |
> |
virtual void integrate(); |
488 |
> |
virtual void calcForce( int calcPot, int calcStress ); |
489 |
|
}; |
490 |
< |
|
497 |
< |
//template<typename TMinimizer> class OOPSEMinimizer : public OOPSEMinimizerBase, TMinimizer{ |
498 |
< |
// public: |
499 |
< |
// void writeOutput(); |
500 |
< |
//}; |
501 |
< |
*/ |
490 |
> |
*/ |
491 |
|
#endif |