From c0689e695685ebb41390fbcd9fb146b35080eb90 Mon Sep 17 00:00:00 2001
From: Olivier Coulaud <Olivier.Coulaud@inria.fr>
Date: Sun, 6 Jul 2014 14:52:51 +0200
Subject: [PATCH] Add operator<< for debug

---
 Src/Kernels/Chebyshev/FChebCell.hpp | 207 +++++++++++++++-------------
 1 file changed, 113 insertions(+), 94 deletions(-)

diff --git a/Src/Kernels/Chebyshev/FChebCell.hpp b/Src/Kernels/Chebyshev/FChebCell.hpp
index 699104f73..52684a63d 100755
--- a/Src/Kernels/Chebyshev/FChebCell.hpp
+++ b/Src/Kernels/Chebyshev/FChebCell.hpp
@@ -15,6 +15,7 @@
 // ===================================================================================
 #ifndef FCHEBCELL_HPP
 #define FCHEBCELL_HPP
+#include <iostream>
 
 #include "../../Components/FBasicCell.hpp"
 #include "../../Extensions/FExtendMortonIndex.hpp"
@@ -36,110 +37,128 @@ class FChebCell : public FBasicCell
 {
 	// nnodes = ORDER^3
 	// we multiply by 2 because we store the  Multipole expansion end the compressed one.
-  static const int VectorSize = TensorTraits<ORDER>::nnodes * 2;
+	static const int VectorSize = TensorTraits<ORDER>::nnodes * 2;
 
-  FReal multipole_exp[NRHS * NVALS * VectorSize]; //< Multipole expansion
-  FReal         local_exp[NLHS * NVALS * VectorSize]; //< Local expansion
+	FReal multipole_exp[NRHS * NVALS * VectorSize]; //< Multipole expansion
+	FReal         local_exp[NLHS * NVALS * VectorSize]; //< Local expansion
 
 public:
-  FChebCell(){
-    memset(multipole_exp, 0, sizeof(FReal) * NRHS * NVALS * VectorSize);
-    memset(local_exp, 0, sizeof(FReal) * NLHS * NVALS * VectorSize);
-  }
-
-  ~FChebCell() {}
-	
-  /** Get Multipole */
-  const FReal* getMultipole(const int inRhs) const
-  {	return this->multipole_exp + inRhs*VectorSize;
-  }
-  /** Get Local */
-  const FReal* getLocal(const int inRhs) const{
-    return this->local_exp + inRhs*VectorSize;
-  }
-	
-  /** Get Multipole */
-  FReal* getMultipole(const int inRhs){
-    return this->multipole_exp + inRhs*VectorSize;
-  }
-  /** Get Local */
-  FReal* getLocal(const int inRhs){
-    return this->local_exp + inRhs*VectorSize;
-  }
-
-  /** To get the leading dim of a vec */
-  int getVectorSize() const{
-    return VectorSize;
-  }
-
-  /** Make it like the begining */
-  void resetToInitialState(){
-    memset(multipole_exp, 0, sizeof(FReal) * NRHS * NVALS * VectorSize);
-    memset(local_exp, 0, sizeof(FReal) * NLHS * NVALS * VectorSize);
-  }
-  
-  ///////////////////////////////////////////////////////
-  // to extend FAbstractSendable
-  ///////////////////////////////////////////////////////
-  template <class BufferWriterClass>
-  void serializeUp(BufferWriterClass& buffer) const{
-    buffer.write(multipole_exp, VectorSize*NVALS*NRHS);
-  }
-  template <class BufferReaderClass>
-  void deserializeUp(BufferReaderClass& buffer){
-    buffer.fillArray(multipole_exp, VectorSize*NVALS*NRHS);
-  }
-  
-  template <class BufferWriterClass>
-  void serializeDown(BufferWriterClass& buffer) const{
-    buffer.write(local_exp, VectorSize*NVALS*NLHS);
-  }
-  template <class BufferReaderClass>
-  void deserializeDown(BufferReaderClass& buffer){
-    buffer.fillArray(local_exp, VectorSize*NVALS*NLHS);
-  }
-  
-  ///////////////////////////////////////////////////////
-  // to extend Serializable
-  ///////////////////////////////////////////////////////
-  template <class BufferWriterClass>
-  void save(BufferWriterClass& buffer) const{
-    FBasicCell::save(buffer);
-    buffer.write(multipole_exp, VectorSize*NVALS*NRHS);
-    buffer.write(local_exp, VectorSize*NVALS*NLHS);
-  }
-  template <class BufferReaderClass>
-  void restore(BufferReaderClass& buffer){
-    FBasicCell::restore(buffer);
-    buffer.fillArray(multipole_exp, VectorSize*NVALS*NRHS);
-    buffer.fillArray(local_exp, VectorSize*NVALS*NLHS);
-  }
-  
-  static constexpr int GetSize(){
-    return int(sizeof(FReal)) * VectorSize*(NRHS+NLHS)*NVALS;
-  }
+	FChebCell(){
+		memset(multipole_exp, 0, sizeof(FReal) * NRHS * NVALS * VectorSize);
+		memset(local_exp, 0, sizeof(FReal) * NLHS * NVALS * VectorSize);
+	}
+
+	~FChebCell() {}
+
+	/** Get Multipole */
+	const FReal* getMultipole(const int inRhs) const
+	{	return this->multipole_exp + inRhs*VectorSize;
+	}
+	/** Get Local */
+	const FReal* getLocal(const int inRhs) const{
+		return this->local_exp + inRhs*VectorSize;
+	}
+
+	/** Get Multipole */
+	FReal* getMultipole(const int inRhs){
+		return this->multipole_exp + inRhs*VectorSize;
+	}
+	/** Get Local */
+	FReal* getLocal(const int inRhs){
+		return this->local_exp + inRhs*VectorSize;
+	}
+
+	/** To get the leading dim of a vec */
+	int getVectorSize() const{
+		return VectorSize;
+	}
+
+	/** Make it like the begining */
+	void resetToInitialState(){
+		memset(multipole_exp, 0, sizeof(FReal) * NRHS * NVALS * VectorSize);
+		memset(local_exp,         0, sizeof(FReal) * NLHS * NVALS * VectorSize);
+	}
+
+	///////////////////////////////////////////////////////
+	// to extend FAbstractSendable
+	///////////////////////////////////////////////////////
+	template <class BufferWriterClass>
+	void serializeUp(BufferWriterClass& buffer) const{
+		buffer.write(multipole_exp, VectorSize*NVALS*NRHS);
+	}
+	template <class BufferReaderClass>
+	void deserializeUp(BufferReaderClass& buffer){
+		buffer.fillArray(multipole_exp, VectorSize*NVALS*NRHS);
+	}
+
+	template <class BufferWriterClass>
+	void serializeDown(BufferWriterClass& buffer) const{
+		buffer.write(local_exp, VectorSize*NVALS*NLHS);
+	}
+	template <class BufferReaderClass>
+	void deserializeDown(BufferReaderClass& buffer){
+		buffer.fillArray(local_exp, VectorSize*NVALS*NLHS);
+	}
+
+	///////////////////////////////////////////////////////
+	// to extend Serializable
+	///////////////////////////////////////////////////////
+	template <class BufferWriterClass>
+	void save(BufferWriterClass& buffer) const{
+		FBasicCell::save(buffer);
+		buffer.write(multipole_exp, VectorSize*NVALS*NRHS);
+		buffer.write(local_exp, VectorSize*NVALS*NLHS);
+	}
+	template <class BufferReaderClass>
+	void restore(BufferReaderClass& buffer){
+		FBasicCell::restore(buffer);
+		buffer.fillArray(multipole_exp, VectorSize*NVALS*NRHS);
+		buffer.fillArray(local_exp, VectorSize*NVALS*NLHS);
+	}
+
+	static constexpr int GetSize(){
+		return int(sizeof(FReal)) * VectorSize*(NRHS+NLHS)*NVALS;
+	}
+//	template <class StreamClass>
+//	const void print(StreamClass& output) const{
+ template <class StreamClass>
+	friend StreamClass& operator<<(StreamClass& output, const FChebCell<ORDER, NRHS, NLHS, NVALS>&  cell){
+//	const void print() const{
+		output <<"  Multipole exp NRHS " <<NRHS <<" NVALS "  <<NVALS << " VectorSize/2 "  << cell.getVectorSize() *0.5<< std::endl;
+		for (int rhs= 0 ; rhs < NRHS ; ++rhs) {
+			const FReal* pole = cell.getMultipole(rhs);
+			for (int val= 0 ; val < NVALS ; ++val) {
+				output<< "      val : " << val << " exp: " ;
+				for (int i= 0 ; i < cell.getVectorSize()/2  ; ++i) {
+					output<< pole[i] << " ";
+				}
+				output << std::endl;
+			}
+		}
+		return output;
+	}
 
 };
 
 template <int ORDER, int NRHS = 1, int NLHS = 1, int NVALS = 1>
 class FTypedChebCell : public FChebCell<ORDER,NRHS,NLHS,NVALS>, public FExtendCellType {
 public:
-  template <class BufferWriterClass>
-  void save(BufferWriterClass& buffer) const{
-    FChebCell<ORDER,NRHS,NLHS,NVALS>::save(buffer);
-    FExtendCellType::save(buffer);
-  }
-  template <class BufferReaderClass>
-  void restore(BufferReaderClass& buffer){
-    FChebCell<ORDER,NRHS,NLHS,NVALS>::restore(buffer);
-    FExtendCellType::restore(buffer);
-  }
-  void resetToInitialState(){
-    FChebCell<ORDER,NRHS,NLHS,NVALS>::resetToInitialState();
-    FExtendCellType::resetToInitialState();
-  }
-};
+	template <class BufferWriterClass>
+	void save(BufferWriterClass& buffer) const{
+		FChebCell<ORDER,NRHS,NLHS,NVALS>::save(buffer);
+		FExtendCellType::save(buffer);
+	}
+	template <class BufferReaderClass>
+	void restore(BufferReaderClass& buffer){
+		FChebCell<ORDER,NRHS,NLHS,NVALS>::restore(buffer);
+		FExtendCellType::restore(buffer);
+	}
+	void resetToInitialState(){
+		FChebCell<ORDER,NRHS,NLHS,NVALS>::resetToInitialState();
+		FExtendCellType::resetToInitialState();
+	}
 
+};
 #endif //FCHEBCELL_HPP
 
 
-- 
GitLab