fix for multiple sources

This commit is contained in:
Christina Vaz 2018-06-18 19:11:51 -04:00
parent 8f5c2e92bc
commit 46f11a0a29
1 changed files with 8 additions and 6 deletions

View File

@ -28,7 +28,7 @@
#include <set> #include <set>
#include <CGAL/property_map.h> #include <CGAL/property_map.h>
#include <CGAL/double.h>
#include <Eigen/Cholesky> #include <Eigen/Cholesky>
#include <Eigen/Sparse> #include <Eigen/Sparse>
@ -357,7 +357,7 @@ namespace Heat_method_3 {
Eigen::VectorXd value_at_source_set(const Eigen::VectorXd& phi, int dimension) const Eigen::VectorXd value_at_source_set(const Eigen::VectorXd& phi, int dimension) const
{ {
Eigen::VectorXd source_set_val(dimension,1); Eigen::VectorXd source_set_val(dimension,1);
if(!(sources.empty())) if(sources.empty())
{ {
for(int k = 0; k<dimension; k++) for(int k = 0; k<dimension; k++)
{ {
@ -369,7 +369,7 @@ namespace Heat_method_3 {
{ {
for(int i = 0; i<dimension; i++) for(int i = 0; i<dimension; i++)
{ {
int min_val = INT_MAX; double min_val = INT_MAX;
vertex_iterator current; vertex_iterator current;
Index current_Index; Index current_Index;
current = sources.begin(); current = sources.begin();
@ -377,9 +377,10 @@ namespace Heat_method_3 {
for(int j = 0; j<sources.size(); j++) for(int j = 0; j<sources.size(); j++)
{ {
current_Index = get(vertex_id_map, *current); current_Index = get(vertex_id_map, *current);
if(std::abs(phi.coeff(i,0)-phi.coeff(current_Index,0))< min_val) double new_d = fabs(-phi.coeff(current_Index,0)+phi.coeff(i,0));
if(new_d < min_val)
{ {
min_val = std::abs(phi.coeff(i,0)-phi.coeff(current_Index,0)); min_val = new_d;
} }
current = ++current; current = ++current;
} }
@ -422,7 +423,8 @@ namespace Heat_method_3 {
build(); build();
BOOST_FOREACH(vertex_descriptor vd, vertices(tm)){ BOOST_FOREACH(vertex_descriptor vd, vertices(tm)){
Index i_d = get(vertex_id_map, vd); Index i_d = get(vertex_id_map, vd);
d =solved_phi(i_d,0); d = solved_phi(i_d,0);
std::cout<<d<<"\n";
put(vdm,vd,d); put(vdm,vd,d);
} }
} }