SOFA plugin: SofaEulerianFluid  master
Open source framework for multi-physics simuation
sofaeulerianfluid::Grid3D Class Reference

#include <Grid3D.h>

Classes

struct  Cell
 

Public Attributes

int nx
 
int ny
 
int nz
 
int nxny
 
int ncell
 
Cellfdata
 
realpressure
 
reallevelset
 
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
 

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
 
Cellget (int x, int y, int z, Cell *base) const
 
const Cellget (int x, int y, int z, const Cell *base) const
 
Cellget (int x, int y, int z)
 
const Cellget (int x, int y, int z) const
 
Cellget (const vec3 &p)
 
const Cellget (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)
 
realgetpressure (int x, int y, int z)
 
real getpressure (vec3 p)
 
realgetlevelset (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)
 

Attribute details

◆ bcell

Cell sofaeulerianfluid::Grid3D::bcell

◆ fdata

Cell* sofaeulerianfluid::Grid3D::fdata

◆ fmm_heap

int* sofaeulerianfluid::Grid3D::fmm_heap

◆ fmm_heap_size

int sofaeulerianfluid::Grid3D::fmm_heap_size

◆ fmm_status

int* sofaeulerianfluid::Grid3D::fmm_status

◆ gravity

vec3 sofaeulerianfluid::Grid3D::gravity

◆ levelset

real* sofaeulerianfluid::Grid3D::levelset

◆ max_pressure

real sofaeulerianfluid::Grid3D::max_pressure

◆ ncell

int sofaeulerianfluid::Grid3D::ncell

◆ nx

int sofaeulerianfluid::Grid3D::nx

◆ nxny

int sofaeulerianfluid::Grid3D::nxny

◆ ny

int sofaeulerianfluid::Grid3D::ny

◆ nz

int sofaeulerianfluid::Grid3D::nz

◆ obstacles

const unsigned long * sofaeulerianfluid::Grid3D::obstacles = NULL
static

◆ pressure

real* sofaeulerianfluid::Grid3D::pressure

◆ t

real sofaeulerianfluid::Grid3D::t

◆ tend

real sofaeulerianfluid::Grid3D::tend

Constructor details

◆ Grid3D()

sofaeulerianfluid::Grid3D::Grid3D ( )

◆ ~Grid3D()

sofaeulerianfluid::Grid3D::~Grid3D ( )

Function details

◆ clamp_in_x()

int sofaeulerianfluid::Grid3D::clamp_in_x ( int  x)
inline

◆ clamp_in_y()

int sofaeulerianfluid::Grid3D::clamp_in_y ( int  y)
inline

◆ clamp_in_z()

int sofaeulerianfluid::Grid3D::clamp_in_z ( int  z)
inline

◆ clamp_x()

int sofaeulerianfluid::Grid3D::clamp_x ( int  x)
inline

◆ clamp_y()

int sofaeulerianfluid::Grid3D::clamp_y ( int  y)
inline

◆ clamp_z()

int sofaeulerianfluid::Grid3D::clamp_z ( int  z)
inline

◆ clear()

void sofaeulerianfluid::Grid3D::clear ( int  _nx,
int  _ny,
int  _nz 
)

◆ fmm_pop()

int sofaeulerianfluid::Grid3D::fmm_pop ( )

◆ fmm_push()

void sofaeulerianfluid::Grid3D::fmm_push ( int  index)

◆ fmm_swap()

void sofaeulerianfluid::Grid3D::fmm_swap ( int  entry1,
int  entry2 
)
inline

◆ get() [1/6]

Cell* sofaeulerianfluid::Grid3D::get ( const vec3 p)
inline

◆ get() [2/6]

const Cell* sofaeulerianfluid::Grid3D::get ( const vec3 p) const
inline

◆ get() [3/6]

Cell* sofaeulerianfluid::Grid3D::get ( int  x,
int  y,
int  z 
)
inline

◆ get() [4/6]

const Cell* sofaeulerianfluid::Grid3D::get ( int  x,
int  y,
int  z 
) const
inline

◆ get() [5/6]

Cell* sofaeulerianfluid::Grid3D::get ( int  x,
int  y,
int  z,
Cell base 
) const
inline

◆ get() [6/6]

const Cell* sofaeulerianfluid::Grid3D::get ( int  x,
int  y,
int  z,
const Cell base 
) const
inline

◆ getlevelset() [1/2]

real* sofaeulerianfluid::Grid3D::getlevelset ( int  x,
int  y,
int  z 
)
inline

◆ getlevelset() [2/2]

real sofaeulerianfluid::Grid3D::getlevelset ( vec3  p)
inline

◆ getpressure() [1/2]

real* sofaeulerianfluid::Grid3D::getpressure ( int  x,
int  y,
int  z 
)
inline

◆ getpressure() [2/2]

real sofaeulerianfluid::Grid3D::getpressure ( vec3  p)
inline

◆ impulse() [1/3]

template<int C>
void sofaeulerianfluid::Grid3D::impulse ( Cell base,
real  fx,
real  fy,
real  fz,
real  i 
)
inline

◆ impulse() [2/3]

void sofaeulerianfluid::Grid3D::impulse ( const vec3 p,
const vec3 i 
)
inline

◆ impulse() [3/3]

template<int C>
void sofaeulerianfluid::Grid3D::impulse ( vec3  p,
real  i 
)
inline

◆ index() [1/2]

int sofaeulerianfluid::Grid3D::index ( const vec3 p) const
inline

◆ index() [2/2]

int sofaeulerianfluid::Grid3D::index ( int  x,
int  y,
int  z 
) const
inline

◆ interp() [1/3]

template<int C>
real sofaeulerianfluid::Grid3D::interp ( const Cell base,
real  fx,
real  fy,
real  fz 
) const
inline

◆ interp() [2/3]

template<int C>
real sofaeulerianfluid::Grid3D::interp ( vec3  p) const
inline

◆ interp() [3/3]

vec3 sofaeulerianfluid::Grid3D::interp ( vec3  p) const
inline

◆ lerp()

template<class T >
static T sofaeulerianfluid::Grid3D::lerp ( a,
b,
real  f 
)
inlinestatic

◆ seed() [1/3]

void sofaeulerianfluid::Grid3D::seed ( real  height)

◆ seed() [2/3]

void sofaeulerianfluid::Grid3D::seed ( real  height,
vec3  normal 
)

◆ seed() [3/3]

void sofaeulerianfluid::Grid3D::seed ( vec3  p0,
vec3  p1,
vec3  velocity = vec3(0,0,0) 
)

◆ step()

void sofaeulerianfluid::Grid3D::step ( Grid3D prev,
Grid3D temp,
real  dt = 0.04,
real  diff = 0.00001 
)

◆ step_advect()

void sofaeulerianfluid::Grid3D::step_advect ( const Grid3D prev,
Grid3D temp,
real  dt,
real  diff 
)

◆ step_color()

void sofaeulerianfluid::Grid3D::step_color ( const Grid3D prev,
Grid3D temp,
real  dt,
real  diff 
)

◆ step_diffuse()

void sofaeulerianfluid::Grid3D::step_diffuse ( const Grid3D prev,
Grid3D temp,
real  dt,
real  diff 
)

◆ step_forces()

void sofaeulerianfluid::Grid3D::step_forces ( const Grid3D prev,
Grid3D temp,
real  dt,
real  diff,
real  scale = 1.0 
)

◆ step_init()

void sofaeulerianfluid::Grid3D::step_init ( const Grid3D prev,
Grid3D temp,
real  dt,
real  diff 
)

◆ step_levelset()

void sofaeulerianfluid::Grid3D::step_levelset ( Grid3D prev,
Grid3D temp,
real  dt,
real  diff 
)

◆ step_project()

void sofaeulerianfluid::Grid3D::step_project ( const Grid3D prev,
Grid3D temp,
real  dt,
real  diff 
)

◆ step_surface()

void sofaeulerianfluid::Grid3D::step_surface ( const Grid3D prev,
Grid3D temp,
real  dt,
real  diff 
)

Enum details

◆ anonymous enum

anonymous enum
Enumerator
PART_EMPTY 
PART_WALL 
PART_FULL 

◆ Status

Enumerator
FMM_FRONT0 
FMM_FAR 
FMM_KNOWN 
FMM_BORDER