境界条件について困って折ります。
波の無反射条件として以下のプログラムがあるのですが、
流速を持った初期水位に対しては反射が起きてしまいます。
高さを0に設定すると反対の壁から水を入れるよりも
抜けていく方が早く、水位が下がってしまい、一定の水位を保てません。
なにかよい条件の書き方はないでしょうか。
rightWall
{
type codedMixed;
refValue uniform 0;
refGradient uniform 0;
valueFraction uniform 0;
redirectType noreflect;
codeInclude
#{
#include "uniformDimensionedFields.H"
#};
code
#{
const uniformDimensionedVectorField& g =
db().lookupObject<uniformDimensionedVectorField>("g");
const fvPatchField<scalar>& rho =
patch().lookupPatchField<volScalarField, scalar>("rho");
valueFraction() = 0.;
refGrad() = -rho.snGrad()*(g.value() & patch().Cf());
vector gn(g.value()/mag(g).value());
forAll(patch().Cf(), fI)
{
scalar h(-gn & patch().Cf()[fI]);
if(h > 0.1)//水位判定部
{
valueFraction()[fI] = 1.;
refValue()[fI] = 0.;
}
}
#};
}