| 
														
															@@ -119,6 +119,10 @@ namespace shell_generator { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         a[2].real()}; 
														 | 
														
														 | 
														
															                         a[2].real()}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     return c; 
														 | 
														
														 | 
														
															     return c; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   }   
														 | 
														
														 | 
														
															   }   
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  template<typename T, typename A> inline 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  T  real(std::complex<T> const& a) {     
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return a.real(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  }   
														 | 
													
												
											
												
													
														| 
														 | 
														
															   template<typename T, typename A>  
														 | 
														
														 | 
														
															   template<typename T, typename A>  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   std::vector< std::complex<T>,A > vconj(std::vector< std::complex<T>,A > const& a) { 
														 | 
														
														 | 
														
															   std::vector< std::complex<T>,A > vconj(std::vector< std::complex<T>,A > const& a) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     std::vector< std::complex<T>,A > b = {std::conj(a[0]), 
														 | 
														
														 | 
														
															     std::vector< std::complex<T>,A > b = {std::conj(a[0]), 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -245,6 +249,49 @@ namespace shell_generator { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // ********************************************************************** // 
														 | 
														
														 | 
														
															   // ********************************************************************** // 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // ********************************************************************** // 
														 | 
														
														 | 
														
															   // ********************************************************************** // 
														 | 
													
												
											
												
													
														| 
														 | 
														
															    
														 | 
														
														 | 
														
															    
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  std::vector<double> ShellGenerator::IntegrateByComp() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    std::vector<double> integral = {0.0, 0.0, 0.0}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    //simple  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    for (unsigned int i=0; i<E_.size(); ++i) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      auto E = E_[i]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      //auto H = 377.0*H_[i]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      auto H = H_[i]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      auto vert = vertices_[i]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      std::cout <<"E "<<E[0]<<", "<< E[1] <<", "<<E[2] << std::endl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      std::cout <<"H "<<H[0]<<", "<< H[1] <<", "<<H[2] << std::endl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      std::cout <<"vert "<<vert[0]<<", "<< vert[1] <<", "<<vert[2] << std::endl<<std::endl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      // Vector to unit product 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      double r = norm(vert); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      std::vector<double> n = { vert[0]/r, vert[1]/r, vert[2]/r}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      // std::cout << norm(unit) << std::endl; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      //const double pi = 3.1415926535897932384626433832795; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      const std::vector< std::vector<double> > d = {{1.0, 0.0, 0.0}, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                                    {0.0, 1.0, 0.0}, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                                                    {0.0, 0.0, 1.0}}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+       
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      std::vector<double> F = {0.0, 0.0, 0.0}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      std::complex<double> S(0.0); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      for (int ii = 0; ii < 3; ++ii) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        S += E[ii]*E[ii] + H[ii]*H[ii]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      std::vector< std::vector<double> >  T = {{0.0, 0.0, 0.0}, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                               {0.0, 0.0, 0.0}, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                               {0.0, 0.0, 0.0}}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      for (int i = 0; i < 3; ++i) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        for (int j = 0; j < 3; ++j) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+          T[i][j] = (1/(2.0/* *4.0*pi */)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            * real(E[i]*E[j] + H[i]*H[j] 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                   -1.0/2.0*S*d[i][j]); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+          F[i] += T[i][j]*n[j]; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      integral = integral + per_vertice_area_*F; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    return integral; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  // ********************************************************************** // 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  // ********************************************************************** // 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  // ********************************************************************** // 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+   
														 | 
													
												
											
												
													
														| 
														 | 
														
															   std::vector<double> ShellGenerator::Integrate() { 
														 | 
														
														 | 
														
															   std::vector<double> ShellGenerator::Integrate() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     std::vector<double> integral = {0.0, 0.0, 0.0}; 
														 | 
														
														 | 
														
															     std::vector<double> integral = {0.0, 0.0, 0.0}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     //simple  
														 | 
														
														 | 
														
															     //simple  
														 |