1c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <iostream> 2c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#include <Eigen/Core> 3c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 4c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathusing namespace Eigen; 5c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 6c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#ifndef SCALAR 7c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define SCALAR float 8c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#endif 9c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 10c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#ifndef SIZE 11c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define SIZE 10000 12c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#endif 13c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 14c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#ifndef REPEAT 15c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#define REPEAT 10000 16c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath#endif 17c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 18c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathtypedef Matrix<SCALAR, Eigen::Dynamic, 1> Vec; 19c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 20c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathusing namespace std; 21c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 22c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan KamathSCALAR E_VDW(const Vec &interactions1, const Vec &interactions2) 23c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{ 24c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath return (interactions2.cwise()/interactions1) 25c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath .cwise().cube() 26c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath .cwise().square() 27c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath .cwise().square() 28c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath .sum(); 29c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath} 30c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 31c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamathint main() 32c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath{ 33c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // 34c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // 1 2 3 4 ... (interactions) 35c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // ka . . . . ... 36c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // rab . . . . ... 37c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // energy . . . . ... 38c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // ... ... ... ... ... ... 39c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // (variables 40c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // for 41c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // interaction) 42c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // 43c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath Vec interactions1(SIZE), interactions2(SIZE); // SIZE is the number of vdw interactions in our system 44c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // SetupCalculations() 45c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath SCALAR rab = 1.0; 46c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath interactions1.setConstant(2.4); 47c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath interactions2.setConstant(rab); 48c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath 49c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath // Energy() 50c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath SCALAR energy = 0.0; 51c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath for (unsigned int i = 0; i<REPEAT; ++i) { 52c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath energy += E_VDW(interactions1, interactions2); 53c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath energy *= 1 + 1e-20 * i; // prevent compiler from optimizing the loop 54c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath } 55c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath cout << "energy = " << energy << endl; 56c981c48f5bc9aefeffc0bcb0cc3934c2fae179ddNarayan Kamath} 57