force_type operator()(NODE n, double t) { (void) t; force_type force = force_type(0,0,0); Node node2; double distance; double initial_spring_length; double sprint_const_this_edge; // iterate through each neighboring node and add spring forces for(auto it = n.edge_begin(); it != n.edge_end(); ++it) { node2 = (*it).node2(); sprint_const_this_edge = (*it).value().spring_constant; initial_spring_length = (*it).value().initial_length; distance = norm(n.position()-node2.position()); // Euclidean distance force += (-1)*sprint_const_this_edge*(n.position()-node2.position())*(distance-initial_spring_length)/distance; } return force; }