OctTree is now a full template

This commit is contained in:
Guilhem Lavaux 2015-01-26 18:20:56 +01:00
parent 730185ff89
commit 29f991f0d4
3 changed files with 15 additions and 7 deletions

View File

@ -6,7 +6,6 @@ SET(CosmoTool_SRCS
load_data.cpp
loadGadget.cpp
loadRamses.cpp
octTree.cpp
powerSpectrum.cpp
miniargs.cpp
growthFactor.cpp

View File

@ -186,4 +186,6 @@ namespace CosmoTool
};
#include "octTree.tcc"
#endif

View File

@ -39,8 +39,9 @@ knowledge of the CeCILL license and that you accept its terms.
#include "config.hpp"
#include "octTree.hpp"
namespace CosmoTool {
using namespace std;
using namespace CosmoTool;
//#define VERBOSE
@ -59,7 +60,8 @@ static uint32_t mypow(uint32_t i, uint32_t p)
return j*j*i;
}
OctTree::OctTree(const FCoordinates *particles, octPtr numParticles,
template<typename Updater, typename T>
OctTree<Updater,T>::OctTree(const FCoordinates *particles, octPtr numParticles,
uint32_t maxMeanTreeDepth, uint32_t maxAbsoluteDepth,
uint32_t threshold)
{
@ -94,7 +96,7 @@ OctTree::OctTree(const FCoordinates *particles, octPtr numParticles,
}
cout << xMin[0] << " " << xMin[1] << " " << xMin[2] << " lNorm=" << lenNorm << endl;
cells = new OctCell[numCells];
cells = new OctCell<T>[numCells];
Lbox = (float)(octCoordTypeNorm+1);
cells[0].numberLeaves = 0;
@ -110,12 +112,14 @@ OctTree::OctTree(const FCoordinates *particles, octPtr numParticles,
//#endif
}
OctTree::~OctTree()
template<typename Updater, typename T>
OctTree<Updater,T>::~OctTree()
{
delete cells;
}
void OctTree::buildTree(uint32_t maxAbsoluteDepth)
template<typename Updater, typename T>
void OctTree<Updater,T>::buildTree(uint32_t maxAbsoluteDepth)
{
for (octPtr i = 0; i < numParticles; i++)
{
@ -129,7 +133,8 @@ void OctTree::buildTree(uint32_t maxAbsoluteDepth)
}
void OctTree::insertParticle(octPtr node,
template<typename Updater, typename T>
void OctTree<Updater,T>::insertParticle(octPtr node,
const OctCoords& icoord,
octCoordType halfNodeLength,
octPtr particleId,
@ -208,3 +213,5 @@ void OctTree::insertParticle(octPtr node,
cells[node].children[octPos] = newNode;
}
};