Go to the documentation of this file.00001 #include <iostream>
00002 #include <Eigen/Core>
00003
00004 using namespace Eigen;
00005
00006 #ifndef SCALAR
00007 #define SCALAR float
00008 #endif
00009
00010 #ifndef SIZE
00011 #define SIZE 10000
00012 #endif
00013
00014 #ifndef REPEAT
00015 #define REPEAT 10000
00016 #endif
00017
00018 typedef Matrix<SCALAR, Eigen::Dynamic, 1> Vec;
00019
00020 using namespace std;
00021
00022 SCALAR E_VDW(const Vec &interactions1, const Vec &interactions2)
00023 {
00024 return (interactions2.cwise()/interactions1)
00025 .cwise().cube()
00026 .cwise().square()
00027 .cwise().square()
00028 .sum();
00029 }
00030
00031 int main()
00032 {
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043 Vec interactions1(SIZE), interactions2(SIZE);
00044
00045 SCALAR rab = 1.0;
00046 interactions1.setConstant(2.4);
00047 interactions2.setConstant(rab);
00048
00049
00050 SCALAR energy = 0.0;
00051 for (unsigned int i = 0; i<REPEAT; ++i) {
00052 energy += E_VDW(interactions1, interactions2);
00053 energy *= 1 + 1e-20 * i;
00054 }
00055 cout << "energy = " << energy << endl;
00056 }