OOFEM
2.4
OOFEM.org - Object Oriented Finite Element Solver
|
Fast Marching Method for unstructured grids. More...
#include <fastmarchingmethod.h>
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_DofmanRecord > | dmanRecords |
Array of DofManager records. More... | |
const FloatArray * | dmanValuesPtr |
Pointer to working set of dmanValues. More... | |
Domain * | domain |
Domain. More... | |
std::priority_queue< int, std::vector< int >, FMM_DofmanRecordDelegate_greater > | dmanTrialQueue |
Priority queue for trial T values. More... | |
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.
|
protected |
Type describing node status for fast marching method.
Definition at line 58 of file fastmarchingmethod.h.
|
inline |
Constructor.
Takes two two arguments. Creates FastMarchingMethod material interface instance with given number and belonging to given domain.
d | Domain to which component belongs to. |
Definition at line 101 of file fastmarchingmethod.h.
|
inline |
Definition at line 104 of file fastmarchingmethod.h.
References solve().
|
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().
|
inline |
Definition at line 120 of file fastmarchingmethod.h.
References getSmallestTrialDofMan(), initialize(), and updateTrialValue().
|
protected |
Initialize receiver.
Definition at line 82 of file fastmarchingmethod.C.
References dmanRecords, domain, FMM_Status_FAR, FMM_Status_KNOWN, FMM_Status_KNOWN_BOUNDARY, FMM_Status_TRIAL, oofem::Domain::giveConnectivityTable(), oofem::Element::giveDofManArray(), oofem::ConnectivityTable::giveDofManConnectivityArray(), oofem::Domain::giveElement(), oofem::Domain::giveNumberOfDofManagers(), and updateTrialValue().
Referenced by giveClassName(), and solve().
void oofem::FastMarchingMethod::solve | ( | FloatArray & | dmanValues, |
const std::list< int > & | bcDofMans, | ||
double | F | ||
) |
Solution of problem.
[in,out] | dmanValues | On input should contain boundary values for those dofnam that are known; on output will contain solution. |
bcDofMans | A 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). | |
F | is 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().
|
protected |
Updates the distance of trial node with given id).
Definition at line 133 of file fastmarchingmethod.C.
References oofem::FloatArray::at(), oofem::FloatArray::beDifferenceOf(), oofem::cubic3r(), oofem::FloatArray::distance(), dmanRecords, dmanTrialQueue, domain, oofem::FloatArray::dotProduct(), FMM_Status_FAR, FMM_Status_KNOWN, FMM_Status_TRIAL, oofem::Domain::giveConnectivityTable(), oofem::Node::giveCoordinates(), oofem::Element::giveDofManagerNumber(), oofem::ConnectivityTable::giveDofManConnectivityArray(), oofem::Domain::giveElement(), oofem::Element::giveGeometryType(), oofem::Domain::giveNode(), oofem::max(), oofem::min(), oofem::FloatArray::normalize(), and oofem::sgn().
Referenced by giveClassName(), initialize(), and solve().
|
protected |
Array of DofManager records.
Definition at line 72 of file fastmarchingmethod.h.
Referenced by initialize(), solve(), and updateTrialValue().
|
protected |
Priority queue for trial T values.
Definition at line 93 of file fastmarchingmethod.h.
Referenced by getSmallestTrialDofMan(), and updateTrialValue().
|
protected |
Pointer to working set of dmanValues.
Definition at line 74 of file fastmarchingmethod.h.
Referenced by solve().
|
protected |
Definition at line 90 of file fastmarchingmethod.h.
Referenced by initialize(), solve(), and updateTrialValue().