推板造波-不规则波
-
求助各位大佬,我用openfoam9自定义了一个推板造波边界条件的代码,代码中植入了Jonswap谱想要模拟不规则波,代码编译没有问题,设置算例后运行没有问题,在波高监测点得到的波形图像也没有问题,但是得到的波高和我设置的有效波高差距很大,差了一个数量级是什么原因呢,试了好多次都解决不了,有没有大佬懂的,下面是我的代码还有算例设置
code_text ````scalar randomwaveDisplacementPointPatchVectorField:: beita() { return (0.06238/(0.23+0.0336*gama_-0.185*pow((1.9+gama_),-1)))*(1.094-0.01916*log(gama_)); } scalar Foam::randomwaveDisplacementPointPatchVectorField:: k1(scalar x) { scalar k1=x*x/g_; int maxIter =200; scalar tol = 1e-12; for (int iter = 0; iter < maxIter; iter++) { scalar k_new = x*x/g_/ tanh(k1*depth_); if (mag(k_new - k1)<tol) break; k1 = k_new; } return k1; } void Foam:: randomwaveDisplacementPointPatchVectorField::updateCoeffs() { if (updated()) { return; } scalar t = this->db().time().value(); scalar deltaf=(fmax_-fmin_)/n_; vector sumpushU = vector::zero; for (int i=0; i<n_; i++) { scalar f0=fmin_+i*deltaf; scalar f1=fmin_+(i+1)*deltaf; scalar f= (f0+f1)/2; scalar sigma = (f <= f_p) ? 0.07 : 0.09; scalar omega=2*PI*f; scalar k=k1(omega); std::random_device rd; std::mt19937 gen(rd()); std::uniform_real_distribution<> dis(0,2*PI); scalar theta =dis(gen); scalar Sf=beita_*pow(height_,2)*pow(T_p,-4)*pow(f,-5)*exp(-1.25*pow((T_p*f),-4))*pow(gama_,exp(-pow(((f-f_p)/(sigma*f_p)),2)/2)); scalar A = sqrt(2*Sf*deltaf); scalar w = (4*pow(sinh(k*depth_),2)/(2*k*depth_+sinh(2*k*depth_))); vector pushU = vector(((omega * A *cos(omega * t + theta))/w),0,0); sumpushU +=pushU } vector pushU=sumpushU; Field<vector>::operator=(pushU); Info << "Time = " << t; Info << "regular Wave" << "push Vector is" << pushU.component(0); fixedValuePointPatchField::updateCoeffs(); } code_text
internalField uniform (0 0 0); boundaryField { #includeEtc "caseDicts/setConstraintTypes" left { type randomwaveDisplacement; height 0.08; depth 0.6; T_p 2.0; f_p 0.5; gama 3.3; n 100; fmin 0.1; fmax 10; waveType randomwave; value uniform (0 0 0); } right { type fixedValue; value uniform (0 0 0); } top { type slip; } bottom { type slip; } }
-
添加湍流模型了吗?如果采用层流,正常造波应该差距不大,如果采用了湍流模型,可能存在波浪衰减问题,数值造波的时候由于湍流所导致的能量耗散,可能会使得造波精度差距有点大。但是采用层流那正常应该差距不大,可能就是其他问题了
-
@chenboyao 并没有添加湍流模型,目前都是采用的层流造波
-
此回复已被删除!
-
@chenboyao 好的感谢大佬回复,我去尝试一下
-
@chenboyao 好的感谢大佬,目前我还没有加湍流模型,我先改一下时间格式看看能不能行
2025年4月11日 06:22
7/8
2025年4月14日 08:01