OOFEM  2.4
OOFEM.org - Object Oriented Finite Element Solver
oofem::FastMarchingMethod Class Reference

Fast Marching Method for unstructured grids. More...

#include <fastmarchingmethod.h>

+ Collaboration diagram for oofem::FastMarchingMethod:

Classes

class  FMM_DofmanRecord
 DofManager Fast Marching data record. More...
 
struct  FMM_DofmanRecordDelegate_greater
 

Public Member Functions

 FastMarchingMethod (Domain *d)
 Constructor. More...
 
 ~FastMarchingMethod ()
 
void solve (FloatArray &dmanValues, const std::list< int > &bcDofMans, double F)
 Solution of problem. More...
 
const char * giveClassName () const
 

Protected Types

enum  FNM_Status_Type { FMM_Status_FAR, FMM_Status_TRIAL, FMM_Status_KNOWN, FMM_Status_KNOWN_BOUNDARY }
 Type describing node status for fast marching method. More...
 

Protected Member Functions

void initialize (FloatArray &dmanValues, const std::list< int > &bcDofMans, double F)
 Initialize receiver. More...
 
void updateTrialValue (FloatArray &dmanValues, int id, double F)
 Updates the distance of trial node with given id). More...
 
int getSmallestTrialDofMan ()
 Get the trial point with smallest T; zero if empty. More...
 

Protected Attributes

std::vector< FMM_DofmanRecorddmanRecords
 Array of DofManager records. More...
 
const FloatArraydmanValuesPtr
 Pointer to working set of dmanValues. More...
 
Domaindomain
 Domain. More...
 
std::priority_queue< int, std::vector< int >, FMM_DofmanRecordDelegate_greaterdmanTrialQueue
 Priority queue for trial T values. More...
 

Detailed Description

Fast Marching Method for unstructured grids.

Used to solve Eikonal equation and especially to construct signed distance function.

Definition at line 53 of file fastmarchingmethod.h.

Member Enumeration Documentation

Type describing node status for fast marching method.

Enumerator
FMM_Status_FAR 

Nodes not yet visited.

FMM_Status_TRIAL 

Trial nodes, candidates for known (accepted).

FMM_Status_KNOWN 

Accepted nodes.

FMM_Status_KNOWN_BOUNDARY 

Boundary nodes, from which the front will not propagate.

Definition at line 58 of file fastmarchingmethod.h.

Constructor & Destructor Documentation

oofem::FastMarchingMethod::FastMarchingMethod ( Domain d)
inline

Constructor.

Takes two two arguments. Creates FastMarchingMethod material interface instance with given number and belonging to given domain.

Parameters
dDomain to which component belongs to.

Definition at line 101 of file fastmarchingmethod.h.

oofem::FastMarchingMethod::~FastMarchingMethod ( )
inline

Definition at line 104 of file fastmarchingmethod.h.

References solve().

Member Function Documentation

int oofem::FastMarchingMethod::getSmallestTrialDofMan ( )
protected

Get the trial point with smallest T; zero if empty.

Definition at line 250 of file fastmarchingmethod.C.

References dmanTrialQueue.

Referenced by giveClassName(), and solve().

const char* oofem::FastMarchingMethod::giveClassName ( ) const
inline

Definition at line 120 of file fastmarchingmethod.h.

References getSmallestTrialDofMan(), initialize(), and updateTrialValue().

void oofem::FastMarchingMethod::initialize ( FloatArray dmanValues,
const std::list< int > &  bcDofMans,
double  F 
)
protected
void oofem::FastMarchingMethod::solve ( FloatArray dmanValues,
const std::list< int > &  bcDofMans,
double  F 
)

Solution of problem.

Parameters
[in,out]dmanValuesOn input should contain boundary values for those dofnam that are known; on output will contain solution.
bcDofMansA list containing IDs (numbers) of those dofmans, for which boundary value is known. If this number is positive, then the front will propagate from this dofman, if negative, then the front will not propagate from this dofman (usefull, when one needs to construct "one sided" solution).
Fis the front propagation speed.

Definition at line 46 of file fastmarchingmethod.C.

References dmanRecords, dmanValuesPtr, domain, FMM_Status_KNOWN, getSmallestTrialDofMan(), oofem::Domain::giveConnectivityTable(), oofem::Element::giveDofManArray(), oofem::ConnectivityTable::giveDofManConnectivityArray(), oofem::Domain::giveElement(), initialize(), and updateTrialValue().

Referenced by oofem::LevelSetPCS::FMMReinitialization(), and ~FastMarchingMethod().

Member Data Documentation

std :: vector< FMM_DofmanRecord > oofem::FastMarchingMethod::dmanRecords
protected

Array of DofManager records.

Definition at line 72 of file fastmarchingmethod.h.

Referenced by initialize(), solve(), and updateTrialValue().

std :: priority_queue< int, std :: vector< int > , FMM_DofmanRecordDelegate_greater > oofem::FastMarchingMethod::dmanTrialQueue
protected

Priority queue for trial T values.

Definition at line 93 of file fastmarchingmethod.h.

Referenced by getSmallestTrialDofMan(), and updateTrialValue().

const FloatArray* oofem::FastMarchingMethod::dmanValuesPtr
protected

Pointer to working set of dmanValues.

Definition at line 74 of file fastmarchingmethod.h.

Referenced by solve().

Domain* oofem::FastMarchingMethod::domain
protected

Domain.

Definition at line 90 of file fastmarchingmethod.h.

Referenced by initialize(), solve(), and updateTrialValue().


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

This page is part of the OOFEM documentation. Copyright (c) 2011 Borek Patzak
Project e-mail: info@oofem.org
Generated at Tue Jan 2 2018 20:07:35 for OOFEM by doxygen 1.8.11 written by Dimitri van Heesch, © 1997-2011