OctTree is now a full template
This commit is contained in:
parent
730185ff89
commit
29f991f0d4
@ -6,7 +6,6 @@ SET(CosmoTool_SRCS
|
|||||||
load_data.cpp
|
load_data.cpp
|
||||||
loadGadget.cpp
|
loadGadget.cpp
|
||||||
loadRamses.cpp
|
loadRamses.cpp
|
||||||
octTree.cpp
|
|
||||||
powerSpectrum.cpp
|
powerSpectrum.cpp
|
||||||
miniargs.cpp
|
miniargs.cpp
|
||||||
growthFactor.cpp
|
growthFactor.cpp
|
||||||
|
@ -186,4 +186,6 @@ namespace CosmoTool
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#include "octTree.tcc"
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -39,8 +39,9 @@ knowledge of the CeCILL license and that you accept its terms.
|
|||||||
#include "config.hpp"
|
#include "config.hpp"
|
||||||
#include "octTree.hpp"
|
#include "octTree.hpp"
|
||||||
|
|
||||||
|
namespace CosmoTool {
|
||||||
|
|
||||||
using namespace std;
|
using namespace std;
|
||||||
using namespace CosmoTool;
|
|
||||||
|
|
||||||
//#define VERBOSE
|
//#define VERBOSE
|
||||||
|
|
||||||
@ -59,7 +60,8 @@ static uint32_t mypow(uint32_t i, uint32_t p)
|
|||||||
return j*j*i;
|
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 maxMeanTreeDepth, uint32_t maxAbsoluteDepth,
|
||||||
uint32_t threshold)
|
uint32_t threshold)
|
||||||
{
|
{
|
||||||
@ -94,7 +96,7 @@ OctTree::OctTree(const FCoordinates *particles, octPtr numParticles,
|
|||||||
}
|
}
|
||||||
cout << xMin[0] << " " << xMin[1] << " " << xMin[2] << " lNorm=" << lenNorm << endl;
|
cout << xMin[0] << " " << xMin[1] << " " << xMin[2] << " lNorm=" << lenNorm << endl;
|
||||||
|
|
||||||
cells = new OctCell[numCells];
|
cells = new OctCell<T>[numCells];
|
||||||
Lbox = (float)(octCoordTypeNorm+1);
|
Lbox = (float)(octCoordTypeNorm+1);
|
||||||
|
|
||||||
cells[0].numberLeaves = 0;
|
cells[0].numberLeaves = 0;
|
||||||
@ -110,12 +112,14 @@ OctTree::OctTree(const FCoordinates *particles, octPtr numParticles,
|
|||||||
//#endif
|
//#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
OctTree::~OctTree()
|
template<typename Updater, typename T>
|
||||||
|
OctTree<Updater,T>::~OctTree()
|
||||||
{
|
{
|
||||||
delete cells;
|
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++)
|
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,
|
const OctCoords& icoord,
|
||||||
octCoordType halfNodeLength,
|
octCoordType halfNodeLength,
|
||||||
octPtr particleId,
|
octPtr particleId,
|
||||||
@ -208,3 +213,5 @@ void OctTree::insertParticle(octPtr node,
|
|||||||
cells[node].children[octPos] = newNode;
|
cells[node].children[octPos] = newNode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
};
|
Loading…
Reference in New Issue
Block a user