OOFEM 3.0
Loading...
Searching...
No Matches
oofem::FastMarchingMethod Class Reference

#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)
void solve (FloatArray &dmanValues, const std ::list< int > &bcDofMans, double F)
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.
void updateTrialValue (FloatArray &dmanValues, int id, double F)
 Updates the distance of trial node with given id).
int getSmallestTrialDofMan ()
 Get the trial point with smallest T; zero if empty.

Protected Attributes

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

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

◆ FNM_Status_Type

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

◆ FastMarchingMethod()

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.

References dmanTrialQueue, dmanValuesPtr, and domain.

Member Function Documentation

◆ getSmallestTrialDofMan()

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 solve().

◆ giveClassName()

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

Definition at line 119 of file fastmarchingmethod.h.

◆ initialize()

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

Initialize receiver.

Todo
This uses "i" which will always be equal to "node" from the earlier loop. Unsafe coding.

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::Element::giveDofManArray(), oofem::ConnectivityTable::giveDofManConnectivityArray(), and updateTrialValue().

Referenced by solve().

◆ solve()

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::Element::giveDofManArray(), oofem::ConnectivityTable::giveDofManConnectivityArray(), initialize(), and updateTrialValue().

Referenced by oofem::LevelSetPCS::FMMReinitialization().

◆ updateTrialValue()

Member Data Documentation

◆ dmanRecords

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().

◆ dmanTrialQueue

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 FastMarchingMethod(), getSmallestTrialDofMan(), and updateTrialValue().

◆ dmanValuesPtr

const FloatArray* oofem::FastMarchingMethod::dmanValuesPtr
protected

Pointer to working set of dmanValues.

Definition at line 74 of file fastmarchingmethod.h.

Referenced by FastMarchingMethod(), and solve().

◆ domain

Domain* oofem::FastMarchingMethod::domain
protected

Domain.

Definition at line 90 of file fastmarchingmethod.h.

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


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

This page is part of the OOFEM-3.0 documentation. Copyright Copyright (C) 1994-2025 Borek Patzak Bořek Patzák
Project e-mail: oofem@fsv.cvut.cz
Generated at for OOFEM by doxygen 1.15.0 written by Dimitri van Heesch, © 1997-2011