n-Dimensional Fast Methods  0.7
 All Classes Functions Variables Typedefs Pages
DDQM< grid_t > Class Template Reference

Implements Double Dynamic Queue Method. More...

#include <ddqm.hpp>

Inheritance diagram for DDQM< grid_t >:
Collaboration diagram for DDQM< grid_t >:

Public Member Functions

 DDQM (const char *name="DDQM")
 
virtual void setEnvironment (grid_t *g)
 Calls EikonalSolver::setEnvironment() and sets the initial threshold.
 
virtual void setup ()
 Executes EikonalSolver setup and other checks.
 
virtual void computeInternal ()
 Actual method that implements DDQM.
 
void increaseThreshold (std::array< size_t, 2 > &counts)
 Dynamically increases the threshold according to the reference paper.
 
virtual void reset ()
 Clears temporal data, so it is ready to run again.
 
virtual void printRunInfo () const
 
- Public Member Functions inherited from EikonalSolver< grid_t >
 EikonalSolver (const std::string &name)
 
virtual double solveEikonal (const int &idx)
 Solves nD Eikonal equation for cell idx. If heuristics are activated, it will add the estimated travel time to goal with current velocity. More...
 
- Public Member Functions inherited from Solver< grid_t >
 Solver (const std::string &name)
 
virtual void setInitialAndGoalPoints (const std::vector< unsigned int > &init_points, unsigned int goal_idx)
 Sets the initial and goal points by the indices of the grid.
 
virtual void setInitialPoints (const std::vector< unsigned int > &init_points)
 Sets the initial points by the indices of the grid.
 
virtual void setInitialAndGoalPoints (const std::array< unsigned int, grid_t::getNDims()> &init_coord, const std::array< unsigned int, grid_t::getNDims()> &goal_coord)
 Sets the initial and goal points by the coordinates of the grid.
 
virtual void setInitialPoints (const std::array< unsigned int, grid_t::getNDims()> &init_coord)
 Sets the initial point by the coordinates of the grid.
 
void compute ()
 Computes the distances map. Will call setup() if not done already.
 
template<class T >
T * as ()
 Cast this instance to a desired type.
 
template<class T >
const T * as () const
 Cast this instance to a desired type.
 
const std::string & getName () const
 Returns name of the solver.
 
virtual void clear ()
 Clears the solver, it is not recommended to be used out of the destructor.
 
grid_t * getGrid () const
 Returns a pointer to the grid used.
 
virtual double getTime () const
 

Protected Attributes

std::array< std::queue
< unsigned int >, 2 > 
queues_
 Queues which contain the lower and higher cells to be expanded in further iterations.
 
double threshold_
 Current queue cutoff to divide lower and higher queues.
 
double thStep_
 Threshold step for each full iteration.
 
- Protected Attributes inherited from EikonalSolver< grid_t >
std::vector< double > Tvalues_
 Auxiliar vector with values T0,T1...Tn-1 variables in the Discretized Eikonal Equation.
 
std::array< unsigned int,
2 *grid_t::getNDims()> 
neighbors_
 Auxiliar array which stores the neighbor of each iteration of the computeFM() function.
 
- Protected Attributes inherited from Solver< grid_t >
grid_t * grid_
 Grid container.
 
std::string name_
 Solver name.
 
bool setup_
 Setup status.
 
std::vector< unsigned int > init_points_
 Initial index.
 
unsigned int goal_idx_
 Goal index.
 
std::chrono::time_point
< std::chrono::steady_clock > 
start_
 Time measurement variables.
 
std::chrono::time_point
< std::chrono::steady_clock > 
end_
 
double time_
 Time elapsed by the compute method.
 

Additional Inherited Members

- Protected Member Functions inherited from EikonalSolver< grid_t >
double solveEikonalNDims (unsigned int idx, unsigned int dim)
 Solves the Eikonal equation assuming that Tvalues_ is sorted.
 
- Protected Member Functions inherited from Solver< grid_t >
int sanityChecks ()
 Performs different check before a solver can proceed.
 

Detailed Description

template<class grid_t>
class DDQM< grid_t >

Todo:
implement a more robust goal point stopping criterion.

It uses as a main container the nDGridMap class. The nDGridMap type T has to use an FMCell or derived.

The grid is assumed to be squared, that is Delta(x) = Delta(y) = leafsize_

External documentation:
S. Bak, J. McLaughlin, D. Renzi, Some Improvements for the Fast Sweeping Method, SIAM J. Sci. Comput., 32(5), 2853–2874. [More Info]

Copyright (C) 2015 Javier V. Gomez www.javiervgomez.com

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.

Definition at line 41 of file ddqm.hpp.


The documentation for this class was generated from the following file: