mirror of
				https://github.com/PaddlePaddle/FastDeploy.git
				synced 2025-10-31 11:56:44 +08:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| #include <Eigen/Core>
 | |
| #include <iostream>
 | |
| 
 | |
| using namespace Eigen;
 | |
| 
 | |
| #ifndef SCALAR
 | |
| #define SCALAR float
 | |
| #endif
 | |
| 
 | |
| #ifndef SIZE
 | |
| #define SIZE 10000
 | |
| #endif
 | |
| 
 | |
| #ifndef REPEAT
 | |
| #define REPEAT 10000
 | |
| #endif
 | |
| 
 | |
| typedef Matrix<SCALAR, Eigen::Dynamic, 1> Vec;
 | |
| 
 | |
| using namespace std;
 | |
| 
 | |
| SCALAR E_VDW(const Vec &interactions1, const Vec &interactions2) {
 | |
|   return (interactions2.cwise() / interactions1)
 | |
|       .cwise()
 | |
|       .cube()
 | |
|       .cwise()
 | |
|       .square()
 | |
|       .cwise()
 | |
|       .square()
 | |
|       .sum();
 | |
| }
 | |
| 
 | |
| int main() {
 | |
|   //
 | |
|   //          1   2   3   4  ... (interactions)
 | |
|   // ka       .   .   .   .  ...
 | |
|   // rab      .   .   .   .  ...
 | |
|   // energy   .   .   .   .  ...
 | |
|   // ...     ... ... ... ... ...
 | |
|   // (variables
 | |
|   //    for
 | |
|   // interaction)
 | |
|   //
 | |
|   Vec interactions1(SIZE),
 | |
|       interactions2(
 | |
|           SIZE);  // SIZE is the number of vdw interactions in our system
 | |
|   // SetupCalculations()
 | |
|   SCALAR rab = 1.0;
 | |
|   interactions1.setConstant(2.4);
 | |
|   interactions2.setConstant(rab);
 | |
| 
 | |
|   // Energy()
 | |
|   SCALAR energy = 0.0;
 | |
|   for (unsigned int i = 0; i < REPEAT; ++i) {
 | |
|     energy += E_VDW(interactions1, interactions2);
 | |
|     energy *= 1 + 1e-20 * i;  // prevent compiler from optimizing the loop
 | |
|   }
 | |
|   cout << "energy = " << energy << endl;
 | |
| }
 | 
