Skip to content
Snippets Groups Projects
Tree.hpp 1000 B
Newer Older
#ifndef TREE_HPP
#define TREE_HPP

#include <vector>
#include <cstdlib>
#include <string>
Paul Heinzlreiter's avatar
Paul Heinzlreiter committed
#include <pthread.h>
#include <stack>
#include "Body.hpp"
#include "Box.hpp"

namespace nbody {
	using namespace std;

	class Node;
		friend class Node;
		Node* nodes;
		//Control control;
		unsigned int maxLeafBodies;
		static vector<Body> dubinskiParse(string filename);

		Tree();
		virtual ~Tree();
		virtual void build(vector<Body> bodies) = 0;
Paul Heinzlreiter's avatar
Paul Heinzlreiter committed
		virtual void build(vector<Body> bodies, Box domain) = 0;
Paul Heinzlreiter's avatar
Paul Heinzlreiter committed
		virtual int numberOfChildren() = 0;
		virtual unsigned long numberOfNodes();
		virtual void accumulateForceOnto(Body& body);
		virtual void computeForces();
Paul Heinzlreiter's avatar
Paul Heinzlreiter committed
		virtual vector<Body> extractLocalBodies();
		virtual vector<Body> copyRefinements(Box domain);
Paul Heinzlreiter's avatar
Paul Heinzlreiter committed
		virtual void rebuild(Box domain);
		virtual Box getRootBB();
		virtual void print();
Paul Heinzlreiter's avatar
Paul Heinzlreiter committed
		virtual bool isCorrect();
		virtual void advance();
		virtual Box getLocalBB();