diff --git a/lib/node.cpp b/lib/node.cpp index 23f2b9bcbe5cd51eb55415b444207d5b6a68800c..b7ce061636b8daef52de34c0987fd88c527f7554 100644 --- a/lib/node.cpp +++ b/lib/node.cpp @@ -36,6 +36,7 @@ Node::Node(Node* root, Node* parent, double* masses, double* particles, unsigned } // allocate children + // check if child contains no particles, in that case set child to nullptr // TODO } @@ -63,11 +64,14 @@ Node& Node::operator=(const Node& other) { double* Node::calculateForce(unsigned particle) { // calculate theta - double lambda = std::sqrt((center_[0] - particles_[3*particle + 0])*(center_[0] - particles_[3*particle + 0]) - + (center_[1] - particles_[3*particle + 1])*(center_[1] - particles_[3*particle + 1]) - + (center_[2] - particles_[3*particle + 2])*(center_[2] - particles_[3*particle + 2])); + double px = particles_[3*particle + 0]; + double py = particles_[3*particle + 1]; + double pz = particles_[3*particle + 2]; + double lambda = std::sqrt((center_[0] - px)*(center_[0] - px) + + (center_[1] - py)*(center_[1] - py) + + (center_[2] - pz)*(center_[2] - pz)); double theta = size_/lambda; - // if angle too large, calculate force on particle from children + // if angle too large, call this function for every child. If a child is a nullptr, calculate force on particle from particles in this node // else calculate force on particle from particles in this node if (theta > theta0_) { // TODO diff --git a/lib/tree.cpp b/lib/tree.cpp index 61ccfa1e7d1bb049cef1cf5247b54225629b00be..15a4f9b7d408bedd705bfe02cfb09887390d50ab 100644 --- a/lib/tree.cpp +++ b/lib/tree.cpp @@ -27,12 +27,4 @@ void Tree::calculateForce(unsigned particle) { void Tree::update() { // TODO -} - -void Tree::drift(double dt) { - // TODO -} - -void Tree::kick(double dt) { - // TODO } \ No newline at end of file diff --git a/lib/tree.hpp b/lib/tree.hpp index 261647deb19a4f16f65d7f9067e84c582b6a9c49..deca6ebecae263acc8faba48682b01e962844fe7 100644 --- a/lib/tree.hpp +++ b/lib/tree.hpp @@ -14,10 +14,6 @@ public: void calculateForce(unsigned particle); // update tree: visit each node, check if it needs to be split or merged (for example if a particle has left the region) void update(); - // drift tree: visit each node, update positions - void drift(double dt); - // kick tree: visit each node, update velocities - void kick(double dt); private: Node* root_; double* masses_;