• 大小: 15.91MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-21
  • 语言: 其他
  • 标签: SPH代码  

资源简介

自己最近用SPH方法做的一个经典流体模拟实例,花了很长时间才圆满完成,已实测,可行!

资源截图

代码片段和文件信息

/*A 3D Real Time Fluid Solver Demo.
 *Currentlythe grid size is M*N*O(16*16*16) you can modify them depend on your hardware performance.
 *Also you can modify temp step diffuse factor viscous factor force and source added each time.
 *Press ‘SPACE‘ key to add source of fluid ‘W‘ or ‘S‘ or ‘D‘  key to add force.
 *Right click and hold to rotate. Left click and hold to move. Hold Left and Right buttons to zoom. 
 *Press ‘V‘ key to display velocity field ‘D‘  to display density field ‘C‘ to clear display ‘H‘ to toggle help information.
 *The code is only for research. 
 *By SoRoMan.
 */

#include 
#include 
#include  /* must include this before GL/gl.h */
/*#include */ /* OpenGL header file */
/*#include */ /* OpenGL utilities header file */
#include 


/* macros */
#define IX(ijk) ((i)+(M+2)*(j) + (M+2)*(N+2)*(k)) 
#define MAX(ab)            (((a) > (b)) ? (a) : (b))

#define WINDOW_title “Fluid Solver 2.0 Demo“
#define WINDOW_WIDTH 512
#define WINDOW_HEIGHT 512

/* external definitions */
extern void dens_step ( int M int N int O float * x float * x0 float * u float * v float * w float diff float dt );
extern void vel_step (int M int N int O float * u float * v  float * w float * u0 float * v0 float * w0 float visc float dt );

/* game console*/
int Game_Init(void);
int Game_Shutdown(void);
int Game_Main(void);
void Game_Reset();
void display();

/* global variables */
/*fluid field information*/
static int M = 16; /*grid size x*/
static int N = 16; /*grid size y*/
static int O = 16; /*grid size z*/
static float dt = 0.4f; /*time step*/
static float diff = 0.0f; /*diffuse factor*/
static float visc = 0.0f; /*viscous factor*/
static float force = 10.0f;  /*force added each time*/
static float source = 200.0f; /*source added each time*/

static boolean addforce[3] = {FALSE FALSE FALSE};
static boolean addsource = FALSE;

static float * u * v *w * u_prev * v_prev * w_prev;
static float * dens * dens_prev;

/*draw information*/
static int dvel = 0;
static int dhelp = 1;

char fpsinfo[255];
char fieldinfo[255];

/*window*/
static int win_id;
static int win_x win_y;
static int mouse_down[3];
static int omx omy mx my;

static float alpha[8];
static float ex = 2.718282;

enum { 
PAN = 1 /* pan state bit */
ROTATE /* rotate state bits */
ZOOM /* zoom state bit */
};


HDC hDC; /* device context */
HPALETTE hPalette = 0; /* custom palette (if needed) */

/* 3d control. Like Li*/
GLfloat trans[3]; /* current translation */
GLfloat rot[2]; /* current rotation */

static void free_data ( void )
{
if ( u ) free ( u );
if ( v ) free ( v );
if ( w ) free ( w );
if ( u_prev ) free ( u_prev );
if ( v_prev ) free ( v_prev );
if ( w_prev ) free ( w_prev );
if ( dens ) free ( dens );
if ( dens_prev ) free ( dens_prev );
}

static void c

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-08-01 10:02  一个经典的流体模拟源代码,花了很长时间在网上找到的\
     目录           0  2018-08-01 10:02  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\
     文件         398  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\BscMake.command.1.tlog
     文件       14156  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\CL.read.1.tlog
     文件        1158  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\CL.write.1.tlog
     文件     4287488  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\FluidSolver2.bsc
     文件      465920  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\FluidSolver2.exe
     文件         406  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\FluidSolver2.exe.embed.manifest
     文件         472  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\FluidSolver2.exe.embed.manifest.res
     文件         381  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\FluidSolver2.exe.intermediate.manifest
     文件     1146168  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\FluidSolver2.ilk
     文件          70  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\FluidSolver2.lastbuildstate
     文件        4084  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\FluidSolver2.log
     文件     1887232  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\FluidSolver2.pdb
     文件         713  2018-07-30 16:51  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\FluidSolver2.vcxprojResolveAssemblyReference.cache
     文件           0  2018-07-30 16:51  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\FluidSolver2.write.1.tlog
     文件         220  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\FluidSolver2_manifest.rc
     文件         652  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\bscmake.read.1.tlog
     文件         380  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\bscmake.write.1.tlog
     文件        1450  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\cl.command.1.tlog
     文件           2  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\link-cvtres.read.1.tlog
     文件           2  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\link-cvtres.write.1.tlog
     文件           2  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\link.10556-cvtres.read.1.tlog
     文件           2  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\link.10556-cvtres.write.1.tlog
     文件           2  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\link.10556.read.1.tlog
     文件           2  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\link.10556.write.1.tlog
     文件        1734  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\link.command.1.tlog
     文件        4036  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\link.read.1.tlog
     文件         996  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\link.write.1.tlog
     文件       70314  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\main.obj
     文件           0  2018-07-30 17:06  一个经典的流体模拟源代码,花了很长时间在网上找到的\Debug\main.sbr
............此处省略26个文件信息

评论

共有 条评论

相关资源