sofa::component::behaviormodel::eulerianfluid::Grid3D Class Reference

#include <Grid3D.h>

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

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< 3, real > vec3

Public Member Functions

 Grid3D ()
 ~Grid3D ()
void clear (int _nx, int _ny, int _nz)
int clamp_x (int x)
int clamp_y (int y)
int clamp_z (int z)
int clamp_in_x (int x)
int clamp_in_y (int y)
int clamp_in_z (int z)
int index (int x, int y, int z) const
int index (const vec3 &p) const
Cell * get (int x, int y, int z, Cell *base) const
const Cell * get (int x, int y, int z, const Cell *base) const
Cell * get (int x, int y, int z)
const Cell * get (int x, int y, int z) const
Cell * get (const vec3 &p)
const Cell * get (const vec3 &p) const
template<int C>
real interp (const Cell *base, real fx, real fy, real fz) const
template<int C>
real interp (vec3 p) const
vec3 interp (vec3 p) const
template<int C>
void impulse (Cell *base, real fx, real fy, real fz, real i)
template<int C>
void impulse (vec3 p, real i)
void impulse (const vec3 &p, const vec3 &i)
real * getpressure (int x, int y, int z)
real getpressure (vec3 p)
real * getlevelset (int x, int y, int z)
real getlevelset (vec3 p)
void seed (real height)
void seed (real height, vec3 normal)
void seed (vec3 p0, vec3 p1, vec3 velocity=vec3(0, 0, 0))
void step (Grid3D *prev, Grid3D *temp, real dt=0.04, real diff=0.00001)
void step_init (const Grid3D *prev, Grid3D *temp, real dt, real diff)
void step_levelset (Grid3D *prev, Grid3D *temp, real dt, real diff)
void step_forces (const Grid3D *prev, Grid3D *temp, real dt, real diff, real scale=1.0)
void step_surface (const Grid3D *prev, Grid3D *temp, real dt, real diff)
void step_advect (const Grid3D *prev, Grid3D *temp, real dt, real diff)
void step_diffuse (const Grid3D *prev, Grid3D *temp, real dt, real diff)
void step_project (const Grid3D *prev, Grid3D *temp, real dt, real diff)
void step_color (const Grid3D *prev, Grid3D *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 nz
int nxny
int ncell
Cell * fdata
real * pressure
real * levelset
real t
real tend
real max_pressure
Cell bcell
vec3 gravity
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 Grid3D.h.


Member Typedef Documentation

Definition at line 57 of file Grid3D.h.

Definition at line 58 of file Grid3D.h.


Member Enumeration Documentation

anonymous enum

Enumerator:
PART_EMPTY 
PART_WALL 
PART_FULL 

Definition at line 73 of file Grid3D.h.

Enumerator:
FMM_FRONT0 
FMM_FAR 
FMM_KNOWN 
FMM_BORDER 

Definition at line 298 of file Grid3D.h.


Constructor & Destructor Documentation

sofa::component::behaviormodel::eulerianfluid::Grid3D::Grid3D (  ) 

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

Definition at line 108 of file Grid3D.cpp.

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


Member Function Documentation

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

Definition at line 113 of file Grid3D.h.

References nx.

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

Definition at line 118 of file Grid3D.h.

References ny.

int sofa::component::behaviormodel::eulerianfluid::Grid3D::clamp_in_z ( int  z  )  [inline]

Definition at line 123 of file Grid3D.h.

References nz.

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

Definition at line 98 of file Grid3D.h.

References nx.

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

Definition at line 103 of file Grid3D.h.

References ny.

int sofa::component::behaviormodel::eulerianfluid::Grid3D::clamp_z ( int  z  )  [inline]

Definition at line 108 of file Grid3D.h.

References nz.

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

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

Definition at line 501 of file Grid3D.cpp.

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

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

Definition at line 557 of file Grid3D.cpp.

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

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

Definition at line 491 of file Grid3D.cpp.

References FMM_FRONT0, fmm_heap, and fmm_status.

Referenced by fmm_pop(), and fmm_push().

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

Definition at line 177 of file Grid3D.h.

References sofa::helper::rnear().

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

Definition at line 172 of file Grid3D.h.

References sofa::helper::rnear().

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

Definition at line 160 of file Grid3D.h.

References bcell, fdata, nx, ny, and nz.

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

Definition at line 148 of file Grid3D.h.

References bcell, fdata, nx, ny, and nz.

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

Definition at line 143 of file Grid3D.h.

References index().

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

Definition at line 138 of file Grid3D.h.

References index().

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

real sofa::component::behaviormodel::eulerianfluid::Grid3D::getlevelset ( vec3  p  )  [inline]

Definition at line 261 of file Grid3D.h.

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

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

real sofa::component::behaviormodel::eulerianfluid::Grid3D::getpressure ( vec3  p  )  [inline]

Definition at line 240 of file Grid3D.h.

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

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

Definition at line 235 of file Grid3D.h.

References index(), and pressure.

Referenced by getpressure().

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

Definition at line 228 of file Grid3D.h.

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

Definition at line 218 of file Grid3D.h.

References sofa::helper::rfloor().

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

Definition at line 206 of file Grid3D.h.

int sofa::component::behaviormodel::eulerianfluid::Grid3D::index ( const vec3 &  p  )  const [inline]

Definition at line 133 of file Grid3D.h.

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

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

Definition at line 128 of file Grid3D.h.

References nx, and nxny.

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

vec3 sofa::component::behaviormodel::eulerianfluid::Grid3D::interp ( vec3  p  )  const [inline]

Definition at line 201 of file Grid3D.h.

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

Definition at line 191 of file Grid3D.h.

References sofa::helper::rfloor().

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

Definition at line 182 of file Grid3D.h.

References lerp().

Referenced by step_levelset().

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

Definition at line 96 of file Grid3D.h.

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

void sofa::component::behaviormodel::eulerianfluid::Grid3D::seed ( vec3  p0,
vec3  p1,
vec3  velocity = vec3(0,0,0) 
)

void sofa::component::behaviormodel::eulerianfluid::Grid3D::seed ( real  height,
vec3  normal 
)

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

Definition at line 152 of file Grid3D.cpp.

References fdata, FOR_ALL_CELLS, and levelset.

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

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

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

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

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

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

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

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

Definition at line 280 of file Grid3D.cpp.

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

Referenced by step().

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

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


Field Documentation

Definition at line 84 of file Grid3D.h.

Referenced by get(), and Grid3D().

Definition at line 300 of file Grid3D.h.

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

Definition at line 301 of file Grid3D.h.

Referenced by fmm_pop(), and fmm_push().

Definition at line 299 of file Grid3D.h.

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

Definition at line 83 of file Grid3D.h.

Referenced by step_project().

Definition at line 71 of file Grid3D.h.

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

Definition at line 71 of file Grid3D.h.

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

Definition at line 71 of file Grid3D.h.

Referenced by clear(), fmm_pop(), fmm_push(), and index().

Definition at line 71 of file Grid3D.h.

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

Definition at line 71 of file Grid3D.h.

Referenced by clamp_in_z(), clamp_z(), clear(), get(), seed(), and step_init().

Definition at line 88 of file Grid3D.h.

Referenced by step_init().

Definition at line 76 of file Grid3D.h.

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


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

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