二階Navier Stoke數值水槽造波
周期2s
波長5.2m
水深用於1m
使用CG_MOTION 給定最左側的牆一個反覆速度(sin function)的指令推動水面造波
#include "udf.h"
#include "dynamesh_tools.h"
#include "math.h"
DEFINE_CG_MOTION(oscillate,dt,vel,omega,time,dtime)
{
Thread *t;
face_t f; /* define the variables */
t = DT_THREAD(dt);
begin_f_loop(f,t) /* loop over each face in the zone to create an array of data */
{
vel[0]=0.086*3.1416*sin(3.1416*time)-0.0013*cos(2*3.1416*time);
}
end_f_loop(f,t)
}
for i = 1:20
Lm = L-g*T^2/(2*pi())*tanh(2*pi()*h/L);
Ln = 1+(g*h*T^2)*(sech(2*pi()*h/L))^2/L^2;
L = L - Lm/Ln;
end
%% wave number k
k=1;
for i =1:20
s=(2*pi/T)^2-g* k*tanh(k*h);
ss=-g*( tanh(k*h)+k*h*(sech(k*h))^2);
k = k-s/ss;
end
%%
aa=g*T^2/(2*pi())*(tanh((2*pi()*h/(g*T^2/(2*pi())))^0.75))^(2/3);
relative_error_length = abs((L-aa)/L*100);
L_third=g*T^2*tanh(k*h)/(2*pi)* (1+ (k*a)^2*(cosh(4*k*h)+8)/(8*(sinh(k*h))^4));
%% Boussi
for z = 0:100
SSS(z+1,1) = z/L;
end
for z = 0: 100
ic=0;
for i = -2*L:0.05:2*L
ic=ic+1;
shear(ic,1) =((2*z^2)/pi() * ( (i)*sin( 2*pi()*i / (L) ) ) / ( ( (-i)^2+z^2 )^2 ))*0.05 ;
D(z+1,1)=sum(shear(:,1));
end
end
% for z = 0 : 100
% stress=0;
% for i = 1:122
%
% stress = stress + (2*z^2/pi())*((i)*sin(2*pi()*pi()*i/(122.0948*180))/((i)^2+z^2)^2);
%
%
% D(z+1,1)= stress;
%
% end
% end
评论1