资源简介
波浪模拟UDF程序,可以模拟二位数值水槽产生波浪,便于应用fluent求解波浪模拟问题
代码片段和文件信息
#include
#include
#include
#include
#include
#define H 2.0 /*波高*/
#define M 10 /*叠加波的个数*/
#define N 10
#define g 9.81/*重力加速度*/
#define pi 3.1415925
#define delta 0.0001 /*步长*/
#define LL 10.0 /*波长*/
#define Tau 500 /*时间常数*/
FILE *in1;
using namespace std;
float main()
{
char argv[30];
int ijiijjiiiaabb;
int k;
float c[10000]={0.0};
float t[100][100]={0.0};
float x0[100]={0.0};
float x1[100]={0.0};
float a=0;
float b=0;
float omega=0;
float ds1=0;
float s1=0;/*频谱面积*/
float s2=0;
float u=0.0;
float www=0;
float sss;
float ss;
float w1=0w2=0;
float w[M*N]ww[M][N]ee[M][N]sita[M][N];/*ww[M][N]组成波的频率,ee[M][N]组成波的初始相位,
sita[M][N]组成波的方向角*/
float SM[M][N]A[M][N]kk[M][N];/*SM[M][N]频率为ww[M][N]的能量,A[M][N]波幅,kk[M][N]组成波数*/
float w_const = 2.0*pi/LL;
float sita_const = 0; /*相位角*/
float k_const = 4;
a=8.1*pow(0.13)*g;
b=3.11/(H*H);
for(omega=0.0001; omega<1000; omega += delta)/*计算波动总能量*/
{
ds1 = a/(pow(omega 2))*exp(-b/pow(omega 5));
s1 = s1 + ds1*delta;
}
for(omega=0.0001;omega<1000;omega += delta)/*计算组成频率上下限*/
{
ds1 = a/(pow(omega 2))*exp(-b/pow(omega 5));
s2 = s2 + ds1*delta;
if(s2>0.03*s1)
{ w1=omega;
break;
}
}
s2=0;
for(omega=1000;omega>1;omega-= delta)
{
ds1 = a/(pow(omega 2))*exp(-b/pow(omega 5));
s2 = s2 + ds1*delta;
if(s2>0.03*s1)
{ w2=omega;
break;
}
}
ss=0.94*s1 /(double)(M*N); /*能量等分*/
w[0] = w1;
for(ii = 0; ii < M*N ; ii++)
{
sss=0;
for( www = w[ii]; www < w2; www += delta)
{
sss=sss+a/(pow(www 2))*exp(-b/pow(www 5))*delta;
if(sss>=ss)
{
w[ii+1]=www;
www = w2;
}
}
}
for(ii = 0; ii < M; ii++)
for(jj =0; jj < N; jj++)
{
ww[ii][jj] = w[ii*N + jj];
}
/*计算波数*/
for(ii = 0; ii < M; ii++)
for(jj = 0; jj < N; jj++)
{
kk[ii][jj]=ww[ii][jj]*ww[ii][jj]/g;
}
/*初相位*/
for(ii = 0; ii < M; ii++)
for(jj = 0; jj < N; jj++)
{
ee[ii][jj] = 2*3.14/32767;
}
/*方向角*/
for(ii = 0; ii < M; ii++)
for(jj = 0; jj < N; jj++)
{
sita[jj][ii] = 3.14/2 +(ii - 1)*3.14/N;
/*cout< }
for(i = 0; i < M; i++)
for(j = 0; j < N; j++)
{
SM[i][j] = a/(pow(ww[i][j] 2))*exp(-b/pow(ww[i][j] 5));
/*cout< if(j < N -1)
A[i][j] = sqrt(2.0*(SM[i][j])*(ww[i][j+1]-ww[i][j])*3.14/N);
else if((j = N-1) && (i!= M-1))
A[i][j] = sqrt(2.0*(SM[i][j])*(ww[i+1][0]-ww[i][j])*3.14/N);
else
A[i][j] = sqrt(2.0*(SM[i][j])*(ww[M-1][N-1]-ww[M-1][N-2])*3.14/N);
}
k=0;
for(i=0;i<100;i++)
{
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6403 2011-01-16 01:08 CWaveSimulation\WaveSimulation\Debug\BuildLog.htm
文件 30069 2011-01-16 01:08 CWaveSimulation\WaveSimulation\Debug\hyy1.obj
文件 117760 2011-01-16 01:08 CWaveSimulation\WaveSimulation\Debug\vc70.idb
文件 118784 2011-01-16 01:08 CWaveSimulation\WaveSimulation\Debug\vc70.pdb
文件 159744 2011-01-16 01:08 CWaveSimulation\WaveSimulation\Debug\WaveSimulation.exe
文件 488728 2011-01-16 01:08 CWaveSimulation\WaveSimulation\Debug\WaveSimulation.ilk
文件 519168 2011-01-16 01:08 CWaveSimulation\WaveSimulation\Debug\WaveSimulation.pdb
文件 4403 2011-01-16 01:08 CWaveSimulation\WaveSimulation\hyy1.cpp
文件 292 2011-01-16 01:03 CWaveSimulation\WaveSimulation\Unti
文件 3383 2011-01-10 00:48 CWaveSimulation\WaveSimulation\WaveSimulation.vcproj
文件 120912 2011-01-16 01:09 CWaveSimulation\WaveSimulation\x-velocity.dat
文件 27648 2011-01-16 01:11 CWaveSimulation\WaveSimulation .ncb
文件 932 2011-01-09 18:25 CWaveSimulation\WaveSimulation .sln
..A..H. 8704 2011-01-16 01:11 CWaveSimulation\WaveSimulation .suo
目录 0 2011-01-16 20:54 CWaveSimulation\WaveSimulation\Debug
目录 0 2011-01-16 01:08 CWaveSimulation\WaveSimulation
目录 0 2011-01-16 00:18 CWaveSimulation
----------- --------- ---------- ----- ----
1606930 17
- 上一篇:Qt局域网聊天软件
- 下一篇:先进先出库存管理excel表格.rar
评论
共有 条评论