sofa::component::behaviormodel::eulerianfluid::Grid2D Class Reference

#include <Grid2D.h>

Collaboration diagram for sofa::component::behaviormodel::eulerianfluid::Grid2D:

Collaboration graph
[legend]

Data Structures

struct  Cell

Public Types

enum  { PART_EMPTY = 0, PART_WALL = -1, PART_FULL = 1 }
enum  Status { FMM_FRONT0 = 0, FMM_FAR = -1, FMM_KNOWN = -2, FMM_BORDER = -3 }
typedef float real
typedef Vec< 2, real > vec2

Public Member Functions

 Grid2D ()
 ~Grid2D ()
void clear (int _nx, int _ny)
int clamp_x (int x)
int clamp_y (int y)
int clamp_in_x (int x)
int clamp_in_y (int y)
int index (int x, int y) const
int index (const vec2 &p) const
Cell * get (int x, int y, Cell *base) const
const Cell * get (int x, int y, const Cell *base) const
Cell * get (int x, int y)
const Cell * get (int x, int y) const
Cell * get (const vec2 &p)
const Cell * get (const vec2 &p) const
template<int C>
real interp (const Cell *base, real fx, real fy) const
template<int C>
real interp (vec2 p) const
vec2 interp (vec2 p) const
template<int C>
void impulse (Cell *base, real fx, real fy, real i)
template<int C>
void impulse (vec2 p, real i)
void impulse (const vec2 &p, const vec2 &i)
real * getpressure (int x, int y)
real getpressure (vec2 p)
real * getlevelset (int x, int y)
real getlevelset (vec2 p)
void seed (real height)
void seed (real height, vec2 normal)
void seed (vec2 p0, vec2 p1, vec2 velocity=vec2(0, 0))
void step (Grid2D *prev, Grid2D *temp, real dt=0.04, real diff=0.00001)
void step_init (const Grid2D *prev, Grid2D *temp, real dt, real diff)
void step_levelset (Grid2D *prev, Grid2D *temp, real dt, real diff)
void step_forces (const Grid2D *prev, Grid2D *temp, real dt, real diff, real scale=1.0)
void step_surface (const Grid2D *prev, Grid2D *temp, real dt, real diff)
void step_advect (const Grid2D *prev, Grid2D *temp, real dt, real diff)
void step_diffuse (const Grid2D *prev, Grid2D *temp, real dt, real diff)
void step_project (const Grid2D *prev, Grid2D *temp, real dt, real diff)
void step_color (const Grid2D *prev, Grid2D *temp, real dt, real diff)
int fmm_pop ()
void fmm_push (int index)
void fmm_swap (int entry1, int entry2)

Static Public Member Functions

template<class T >
static T lerp (T a, T b, real f)

Data Fields

int nx
int ny
int ncell
Cell * fdata
real * pressure
real * levelset
real t
real tend
real max_pressure
Cell bcell
int * fmm_status
int * fmm_heap
int fmm_heap_size

Static Public Attributes

static const unsigned long * obstacles = NULL

Detailed Description

Definition at line 53 of file Grid2D.h.


Member Typedef Documentation

Definition at line 57 of file Grid2D.h.

Definition at line 58 of file Grid2D.h.


Member Enumeration Documentation

anonymous enum

Enumerator:
PART_EMPTY 
PART_WALL 
PART_FULL 

Definition at line 74 of file Grid2D.h.

Enumerator:
FMM_FRONT0 
FMM_FAR 
FMM_KNOWN 
FMM_BORDER 

Definition at line 267 of file Grid2D.h.


Constructor & Destructor Documentation

sofa::component::behaviormodel::eulerianfluid::Grid2D::Grid2D (  ) 

sofa::component::behaviormodel::eulerianfluid::Grid2D::~Grid2D (  ) 

Definition at line 101 of file Grid2D.cpp.

References fdata, fmm_heap, fmm_status, levelset, and pressure.


Member Function Documentation

int sofa::component::behaviormodel::eulerianfluid::Grid2D::clamp_in_x ( int  x  )  [inline]

Definition at line 107 of file Grid2D.h.

References nx.

int sofa::component::behaviormodel::eulerianfluid::Grid2D::clamp_in_y ( int  y  )  [inline]

Definition at line 112 of file Grid2D.h.

References ny.

int sofa::component::behaviormodel::eulerianfluid::Grid2D::clamp_x ( int  x  )  [inline]

Definition at line 97 of file Grid2D.h.

References nx.

int sofa::component::behaviormodel::eulerianfluid::Grid2D::clamp_y ( int  y  )  [inline]

Definition at line 102 of file Grid2D.h.

References ny.

void sofa::component::behaviormodel::eulerianfluid::Grid2D::clear ( int  _nx,
int  _ny 
)

int sofa::component::behaviormodel::eulerianfluid::Grid2D::fmm_pop (  ) 

Definition at line 471 of file Grid2D.cpp.

References fmm_heap, fmm_heap_size, FMM_KNOWN, fmm_status, fmm_swap(), levelset, and nx.

void sofa::component::behaviormodel::eulerianfluid::Grid2D::fmm_push ( int  index  ) 

Definition at line 527 of file Grid2D.cpp.

References FMM_FRONT0, fmm_heap, fmm_heap_size, fmm_status, fmm_swap(), levelset, and nx.

void sofa::component::behaviormodel::eulerianfluid::Grid2D::fmm_swap ( int  entry1,
int  entry2 
) [inline]

Definition at line 461 of file Grid2D.cpp.

References FMM_FRONT0, fmm_heap, and fmm_status.

Referenced by fmm_pop(), and fmm_push().

const Cell* sofa::component::behaviormodel::eulerianfluid::Grid2D::get ( const vec2 &  p  )  const [inline]

Definition at line 166 of file Grid2D.h.

References sofa::helper::rnear().

Cell* sofa::component::behaviormodel::eulerianfluid::Grid2D::get ( const vec2 &  p  )  [inline]

Definition at line 161 of file Grid2D.h.

References sofa::helper::rnear().

const Cell* sofa::component::behaviormodel::eulerianfluid::Grid2D::get ( int  x,
int  y 
) const [inline]

Definition at line 149 of file Grid2D.h.

References bcell, fdata, nx, and ny.

Cell* sofa::component::behaviormodel::eulerianfluid::Grid2D::get ( int  x,
int  y 
) [inline]

Definition at line 137 of file Grid2D.h.

References bcell, fdata, nx, and ny.

const Cell* sofa::component::behaviormodel::eulerianfluid::Grid2D::get ( int  x,
int  y,
const Cell *  base 
) const [inline]

Definition at line 132 of file Grid2D.h.

References index().

Cell* sofa::component::behaviormodel::eulerianfluid::Grid2D::get ( int  x,
int  y,
Cell *  base 
) const [inline]

Definition at line 127 of file Grid2D.h.

References index().

Referenced by sofa::component::behaviormodel::eulerianfluid::Fluid2D::drawVisual().

real sofa::component::behaviormodel::eulerianfluid::Grid2D::getlevelset ( vec2  p  )  [inline]

Definition at line 235 of file Grid2D.h.

References getlevelset(), index(), lerp(), and sofa::helper::rfloor().

real* sofa::component::behaviormodel::eulerianfluid::Grid2D::getlevelset ( int  x,
int  y 
) [inline]

real sofa::component::behaviormodel::eulerianfluid::Grid2D::getpressure ( vec2  p  )  [inline]

Definition at line 219 of file Grid2D.h.

References getpressure(), index(), lerp(), and sofa::helper::rfloor().

real* sofa::component::behaviormodel::eulerianfluid::Grid2D::getpressure ( int  x,
int  y 
) [inline]

Definition at line 214 of file Grid2D.h.

References index(), and pressure.

Referenced by getpressure().

void sofa::component::behaviormodel::eulerianfluid::Grid2D::impulse ( const vec2 &  p,
const vec2 &  i 
) [inline]

Definition at line 208 of file Grid2D.h.

template<int C>
void sofa::component::behaviormodel::eulerianfluid::Grid2D::impulse ( vec2  p,
real  i 
) [inline]

Definition at line 199 of file Grid2D.h.

References sofa::helper::rfloor().

template<int C>
void sofa::component::behaviormodel::eulerianfluid::Grid2D::impulse ( Cell *  base,
real  fx,
real  fy,
real  i 
) [inline]

Definition at line 191 of file Grid2D.h.

int sofa::component::behaviormodel::eulerianfluid::Grid2D::index ( const vec2 &  p  )  const [inline]

Definition at line 122 of file Grid2D.h.

References index(), and sofa::helper::rnear().

int sofa::component::behaviormodel::eulerianfluid::Grid2D::index ( int  x,
int  y 
) const [inline]

Definition at line 117 of file Grid2D.h.

References nx.

Referenced by get(), getlevelset(), getpressure(), index(), step_advect(), step_diffuse(), step_forces(), step_project(), and step_surface().

vec2 sofa::component::behaviormodel::eulerianfluid::Grid2D::interp ( vec2  p  )  const [inline]

Definition at line 186 of file Grid2D.h.

template<int C>
real sofa::component::behaviormodel::eulerianfluid::Grid2D::interp ( vec2  p  )  const [inline]

Definition at line 177 of file Grid2D.h.

References sofa::helper::rfloor().

template<int C>
real sofa::component::behaviormodel::eulerianfluid::Grid2D::interp ( const Cell *  base,
real  fx,
real  fy 
) const [inline]

Definition at line 171 of file Grid2D.h.

References lerp().

Referenced by step_levelset().

template<class T >
static T sofa::component::behaviormodel::eulerianfluid::Grid2D::lerp ( T  a,
T  b,
real  f 
) [inline, static]

Definition at line 95 of file Grid2D.h.

Referenced by getlevelset(), getpressure(), and interp().

void sofa::component::behaviormodel::eulerianfluid::Grid2D::seed ( vec2  p0,
vec2  p1,
vec2  velocity = vec2(0,0) 
)

void sofa::component::behaviormodel::eulerianfluid::Grid2D::seed ( real  height,
vec2  normal 
)

void sofa::component::behaviormodel::eulerianfluid::Grid2D::seed ( real  height  ) 

Definition at line 145 of file Grid2D.cpp.

References fdata, FOR_ALL_CELLS, and levelset.

Referenced by sofa::component::behaviormodel::eulerianfluid::Fluid2D::init().

void sofa::component::behaviormodel::eulerianfluid::Grid2D::step ( Grid2D *  prev,
Grid2D *  temp,
real  dt = 0.04,
real  diff = 0.00001 
)

void sofa::component::behaviormodel::eulerianfluid::Grid2D::step_advect ( const Grid2D *  prev,
Grid2D *  temp,
real  dt,
real  diff 
)

void sofa::component::behaviormodel::eulerianfluid::Grid2D::step_color ( const Grid2D *  prev,
Grid2D *  temp,
real  dt,
real  diff 
)

void sofa::component::behaviormodel::eulerianfluid::Grid2D::step_diffuse ( const Grid2D *  prev,
Grid2D *  temp,
real  dt,
real  diff 
)

void sofa::component::behaviormodel::eulerianfluid::Grid2D::step_forces ( const Grid2D *  prev,
Grid2D *  temp,
real  dt,
real  diff,
real  scale = 1.0 
)

void sofa::component::behaviormodel::eulerianfluid::Grid2D::step_init ( const Grid2D *  prev,
Grid2D *  temp,
real  dt,
real  diff 
)

void sofa::component::behaviormodel::eulerianfluid::Grid2D::step_levelset ( Grid2D *  prev,
Grid2D *  temp,
real  dt,
real  diff 
)

Definition at line 262 of file Grid2D.cpp.

References FOR_INNER_CELLS, getlevelset(), interp(), levelset, and sofa::helper::rabs().

Referenced by step().

void sofa::component::behaviormodel::eulerianfluid::Grid2D::step_project ( const Grid2D *  prev,
Grid2D *  temp,
real  dt,
real  diff 
)

void sofa::component::behaviormodel::eulerianfluid::Grid2D::step_surface ( const Grid2D *  prev,
Grid2D *  temp,
real  dt,
real  diff 
)


Field Documentation

Definition at line 85 of file Grid2D.h.

Referenced by get(), and Grid2D().

Definition at line 269 of file Grid2D.h.

Referenced by clear(), fmm_pop(), fmm_push(), fmm_swap(), and ~Grid2D().

Definition at line 270 of file Grid2D.h.

Referenced by fmm_pop(), and fmm_push().

Definition at line 268 of file Grid2D.h.

Referenced by clear(), fmm_pop(), fmm_push(), fmm_swap(), and ~Grid2D().

Definition at line 84 of file Grid2D.h.

Referenced by step_project().

Definition at line 72 of file Grid2D.h.

Referenced by clear(), step_advect(), step_diffuse(), and step_project().

Definition at line 72 of file Grid2D.h.

Referenced by clamp_in_x(), clamp_x(), clear(), fmm_pop(), fmm_push(), get(), index(), seed(), and step_init().

Definition at line 72 of file Grid2D.h.

Referenced by clamp_in_y(), clamp_y(), clear(), get(), seed(), and step_init().

Definition at line 87 of file Grid2D.h.

Referenced by step_init().

Definition at line 77 of file Grid2D.h.

Referenced by clear(), getpressure(), step_project(), and ~Grid2D().


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

Generated on Sun Nov 23 04:13:34 2008 for Sofa by  doxygen 1.5.7.1