| 
					
				 | 
			
			
				@@ -119,6 +119,10 @@ namespace shell_generator { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         a[2].real()}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     return c; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   }   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  template<typename T, typename A> inline 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  T  real(std::complex<T> const& a) {     
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    return a.real(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+  }   
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   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 > 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> integral = {0.0, 0.0, 0.0}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     //simple  
			 |