| 57 |
|
#include "brains/Exclude.hpp" |
| 58 |
|
#include "io/Globals.hpp" |
| 59 |
|
#include "math/Vector3.hpp" |
| 60 |
+ |
#include "math/SquareMatrix3.hpp" |
| 61 |
|
#include "types/MoleculeStamp.hpp" |
| 62 |
|
#include "UseTheForce/ForceField.hpp" |
| 63 |
|
#include "utils/PropertyMap.hpp" |
| 95 |
|
* @param simParams |
| 96 |
|
* @note |
| 97 |
|
*/ |
| 98 |
< |
SimInfo(MakeStamps* stamps, std::vector<std::pair<MoleculeStamp*, int> >& molStampPairs, ForceField* ff, Globals* simParams); |
| 98 |
> |
SimInfo(ForceField* ff, Globals* simParams); |
| 99 |
|
virtual ~SimInfo(); |
| 100 |
|
|
| 101 |
|
/** |
| 256 |
|
|
| 257 |
|
/** Returns the center of the mass of the whole system.*/ |
| 258 |
|
Vector3d getCom(); |
| 259 |
+ |
/** Returns the center of the mass and Center of Mass velocity of the whole system.*/ |
| 260 |
+ |
void getComAll(Vector3d& com,Vector3d& comVel); |
| 261 |
+ |
|
| 262 |
+ |
/** Returns intertia tensor for the entire system and system Angular Momentum.*/ |
| 263 |
+ |
void getInertiaTensor(Mat3x3d &intertiaTensor,Vector3d &angularMomentum); |
| 264 |
+ |
|
| 265 |
+ |
/** Returns system angular momentum */ |
| 266 |
+ |
Vector3d getAngularMomentum(); |
| 267 |
|
|
| 268 |
|
/** main driver function to interact with fortran during the initialization and molecule migration */ |
| 269 |
|
void update(); |
| 299 |
|
return i != molecules_.end() ? i->second : NULL; |
| 300 |
|
} |
| 301 |
|
|
| 293 |
– |
/** Calculate the maximum cutoff radius based on the atom types */ |
| 294 |
– |
double calcMaxCutoffRadius(); |
| 295 |
– |
|
| 302 |
|
double getRcut() { |
| 303 |
|
return rcut_; |
| 304 |
|
} |
| 305 |
|
|
| 306 |
|
double getRsw() { |
| 307 |
|
return rsw_; |
| 308 |
+ |
} |
| 309 |
+ |
|
| 310 |
+ |
double getList() { |
| 311 |
+ |
return rlist_; |
| 312 |
|
} |
| 313 |
|
|
| 314 |
|
std::string getFinalConfigFileName() { |
| 439 |
|
/** Figure out the radius of cutoff, radius of switching function and pass them to fortran */ |
| 440 |
|
void setupCutoff(); |
| 441 |
|
|
| 442 |
+ |
/** Figure out which coulombic correction method to use and pass to fortran */ |
| 443 |
+ |
void setupElectrostaticSummationMethod( int isError ); |
| 444 |
+ |
|
| 445 |
+ |
/** Figure out which polynomial type to use for the switching function */ |
| 446 |
+ |
void setupSwitchingFunction(); |
| 447 |
+ |
|
| 448 |
|
/** Calculates the number of degress of freedom in the whole system */ |
| 449 |
|
void calcNdf(); |
| 450 |
|
void calcNdfRaw(); |
| 451 |
|
void calcNdfTrans(); |
| 452 |
|
|
| 453 |
+ |
ForceField* forceField_; |
| 454 |
+ |
Globals* simParams_; |
| 455 |
+ |
|
| 456 |
+ |
std::map<int, Molecule*> molecules_; /**< Molecule array */ |
| 457 |
+ |
|
| 458 |
|
/** |
| 459 |
|
* Adds molecule stamp and the total number of the molecule with same molecule stamp in the whole |
| 460 |
|
* system. |
| 461 |
|
*/ |
| 462 |
|
void addMoleculeStamp(MoleculeStamp* molStamp, int nmol); |
| 442 |
– |
|
| 443 |
– |
MakeStamps* stamps_; |
| 444 |
– |
ForceField* forceField_; |
| 445 |
– |
Globals* simParams_; |
| 446 |
– |
|
| 447 |
– |
std::map<int, Molecule*> molecules_; /**< Molecule array */ |
| 463 |
|
|
| 464 |
|
//degress of freedom |
| 465 |
|
int ndf_; /**< number of degress of freedom (excludes constraints), ndf_ is local */ |
| 522 |
|
|
| 523 |
|
double rcut_; /**< cutoff radius*/ |
| 524 |
|
double rsw_; /**< radius of switching function*/ |
| 525 |
+ |
double rlist_; /**< neighbor list radius */ |
| 526 |
|
|
| 527 |
|
bool fortranInitialized_; /**< flag indicate whether fortran side is initialized */ |
| 528 |
|
|