Skip to content
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
CFD中文网

CFD中文网

B

bcp

@bcp
关于
帖子
11
主题
3
群组
0
粉丝
0
关注
1

帖子

最新

  • 推板造波-不规则波
    B bcp

    @chenboyao 好的感谢大佬,目前我还没有加湍流模型,我先改一下时间格式看看能不能行


  • 推板造波-不规则波
    B bcp

    @chenboyao 好的感谢大佬回复,我去尝试一下:xinxin2:


  • 推板造波-不规则波
    B bcp

    @chenboyao 并没有添加湍流模型,目前都是采用的层流造波


  • 推板造波-不规则波
    B bcp

    求助各位大佬,我用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;
        }
    }

  • 量纲不匹配
    B bcp

    @学流体的小明 后来我看了一下运行日志发现量纲不匹配并不是动量方程的量纲不匹配,是我在定义阻尼区起点的时候没有定义量纲所以会一直报错,后来把阻尼区起点定义量纲之后就可以啦,整个代码是这样的。```

     dimensionedScalar r0
    (
        "r0",
        dimensionSet(0,0,-1,0,0,0,0),
        0
    );
    
    dimensionedScalar r1
    (
        "r1",
        dimensionSet(0,0,-1,0,0,0,0),
        5
    );
    
    dimensionedScalar x1 = max(mesh.Cf().component(vector::X))-min(mesh.Cf().component(vector::X));
    
    dimensionedScalar x0
    (
       "x0",
       dimensionSet(0,1,0,0,0,0,0),
       12
    );
    
    
    volScalarField R
    (
           "R",
           max(r1*(mesh.C().component(vector::X)-x0)/(x1-x0),r0)
    );
    
    
    fvVectorMatrix UEqn
    (
        fvm::ddt(rho, U) + fvm::div(rhoPhi, U)
        - fvm::laplacian(muf,U)
        - (fvc::grad(U)&fvc::grad(muf))
        + rho*U*R
    );
    

  • 量纲不匹配
    B bcp

    @学流体的小明 感谢大佬,问题已经解决啦:146:


  • 量纲不匹配
    B bcp

    @学流体的小明 感谢大佬回复,我是这样定义的,我在rField之前定义了r1和r0,这两者的量纲都是(0 0 -1 0 0 0 0),然后rField是根据r1和r0通过公式求得的,这种情况下rFiedl的量纲和r1和r0相同吗


  • 量纲不匹配
    B bcp

    求助各位大佬,我想要在interFoam求解器的动量方程加阻尼消波项,修改UEqn.H,编译可以通过,运行算咧的时候报错量纲不匹配,改了好多次一直都是这个问题,是我定义的有问题吗

    dimensionedScalar nu1
    (
        "nu1",
        dimensionSet(0,2,-1,0,0,0,0),
        1.48e-05
    );
    dimensionedScalar nu2
    (
        "nu2",
        dimensionSet(0,2,-1,0,0,0,0),
        1.0e-6
    );
    // Need to store rho for ddt(rho, U)
    volScalarField rho
    (
        IOobject
        (
            "rho",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT
        ),
        alpha1*rho1 + alpha2*rho2
    );
    
    volScalarField nu
    (
        IOobject
        (
            "nu",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT
        ),
        alpha1*nu1+alpha2*nu2
    );
    
    
    volScalarField muf
    (
        IOobject
        (
            "muf",
            runTime.timeName(),
            mesh,
            IOobject::READ_IF_PRESENT
        ),
        rho*nu
    );
    ![3.png](/assets/uploads/files/1734663338888-3.png) 
    
     dimensionedScalar r0
        (
            "r0",
            dimensionSet(0,0,-1,0,0,0,0),
            0
        );
    
        dimensionedScalar r1
        (
            "r1",
            dimensionSet(0,0,-1,0,0,0,0),
            5
        );
    
        dimensionedScalar x1 = max(mesh.Cf().component(vector::X))-min(mesh.Cf().component(vector::X));
    
        dimensionedScalar x0
        (
           "x0",
           2.4
        );
    
        volScalarField rField
        (
            "rField",
            max(r1*(mesh.C().component(vector::X)-x0)/(x1-x0),r0)
        );
    
        fvVectorMatrix UEqn
        (
            fvm::ddt(rho, U) + fvm::div(rhoPhi, U)
            - fvm::laplacian(muf,U)
            - rho*U*rField
        );
    
    

  • solids4Foam
    B bcp

    @李东岳 老师您好,solids4foam安装之后一直到编译都是正常的,编译之后也有提示enjoy solids4foam,就是算例测试全部有错误不知道为啥:136:


  • solids4Foam
    B bcp

    求助,本人纯小白,想请教一下大佬们solids4foam下载完成之后算例测试39个,全部失败是什么原因呢,如何解决啊!算力测试.png

  • 登录

  • 登录或注册以进行搜索。
  • 第一个帖子
    最后一个帖子
0
  • 最新
  • 版块
  • 东岳流体
  • 随机看[请狂点我]