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

#include <Grid2D.h>

Classes

struct  Cell
 

Public Attributes

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

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

Attribute details

◆ bcell

Cell sofaeulerianfluid::Grid2D::bcell

◆ fdata

Cell* sofaeulerianfluid::Grid2D::fdata

◆ fmm_heap

int* sofaeulerianfluid::Grid2D::fmm_heap

◆ fmm_heap_size

int sofaeulerianfluid::Grid2D::fmm_heap_size

◆ fmm_status

int* sofaeulerianfluid::Grid2D::fmm_status

◆ levelset

real* sofaeulerianfluid::Grid2D::levelset

◆ max_pressure

real sofaeulerianfluid::Grid2D::max_pressure

◆ ncell

int sofaeulerianfluid::Grid2D::ncell

◆ nx

int sofaeulerianfluid::Grid2D::nx

◆ ny

int sofaeulerianfluid::Grid2D::ny

◆ obstacles

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

◆ pressure

real* sofaeulerianfluid::Grid2D::pressure

◆ t

real sofaeulerianfluid::Grid2D::t

◆ tend

real sofaeulerianfluid::Grid2D::tend

Constructor details

◆ Grid2D()

sofaeulerianfluid::Grid2D::Grid2D ( )

◆ ~Grid2D()

sofaeulerianfluid::Grid2D::~Grid2D ( )

Function details

◆ clamp_in_x()

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

◆ clamp_in_y()

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

◆ clamp_x()

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

◆ clamp_y()

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

◆ clear()

void sofaeulerianfluid::Grid2D::clear ( int  _nx,
int  _ny 
)

◆ fmm_pop()

int sofaeulerianfluid::Grid2D::fmm_pop ( )

◆ fmm_push()

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

◆ fmm_swap()

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

◆ get() [1/6]

Cell* sofaeulerianfluid::Grid2D::get ( const vec2 p)
inline

◆ get() [2/6]

const Cell* sofaeulerianfluid::Grid2D::get ( const vec2 p) const
inline

◆ get() [3/6]

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

◆ get() [4/6]

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

◆ get() [5/6]

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

◆ get() [6/6]

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

◆ getlevelset() [1/2]

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

◆ getlevelset() [2/2]

real sofaeulerianfluid::Grid2D::getlevelset ( vec2  p)
inline

◆ getpressure() [1/2]

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

◆ getpressure() [2/2]

real sofaeulerianfluid::Grid2D::getpressure ( vec2  p)
inline

◆ impulse() [1/3]

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

◆ impulse() [2/3]

void sofaeulerianfluid::Grid2D::impulse ( const vec2 p,
const vec2 i 
)
inline

◆ impulse() [3/3]

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

◆ index() [1/2]

int sofaeulerianfluid::Grid2D::index ( const vec2 p) const
inline

◆ index() [2/2]

int sofaeulerianfluid::Grid2D::index ( int  x,
int  y 
) const
inline

◆ interp() [1/3]

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

◆ interp() [2/3]

template<int C>
real sofaeulerianfluid::Grid2D::interp ( vec2  p) const
inline

◆ interp() [3/3]

vec2 sofaeulerianfluid::Grid2D::interp ( vec2  p) const
inline

◆ lerp()

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

◆ seed() [1/3]

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

◆ seed() [2/3]

void sofaeulerianfluid::Grid2D::seed ( real  height,
vec2  normal 
)

◆ seed() [3/3]

void sofaeulerianfluid::Grid2D::seed ( vec2  p0,
vec2  p1,
vec2  velocity = vec2(0,0) 
)

◆ step()

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

◆ step_advect()

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

◆ step_color()

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

◆ step_diffuse()

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

◆ step_forces()

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

◆ step_init()

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

◆ step_levelset()

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

◆ step_project()

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

◆ step_surface()

void sofaeulerianfluid::Grid2D::step_surface ( const Grid2D prev,
Grid2D 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