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中文网

  1. CFD中文网
  2. OpenFOAM
  3. 如何在动网格(被动运动)过程中施加主动运动(指定的冲击,类似脉冲函数)

如何在动网格(被动运动)过程中施加主动运动(指定的冲击,类似脉冲函数)

已定时 已固定 已锁定 已移动 OpenFOAM
3 帖子 2 发布者 822 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • I 在线
    I 在线
    ice_flow
    写于2024年10月14日 10:26 最后由 编辑
    #1

    各位老师好,

    我想要在运动系统中增加一个冲击位移,尝试了很多办法不能实现。
    静止系统中的冲击可以用自定义边界条件来实现,我尝试了一个简单脉冲函数,可以很好的反映这个冲击。

    如下在pointDisplacement文件中自定义待冲击的边界即可

    {
    type codedFixedValue;
    value uniform (0 0 0); // 初始位移
    name pulseDisplacement; // 自定义边界条件的名称
    code
    #{
    const scalar t = this->db().time().value();
    const scalar t0 = 5; // 位移脉冲的发生时刻
    const vector pulseAmplitude = vector(0, 0.001, 0); // 脉冲幅度
    if (t >= t0 && t < t0 + this->db().time().deltaT().value())
    {
    operator==(pulseAmplitude);
    }
    else
    {
    operator==(vector::zero);
    }
    #};
    }

    但是6DOF运动中,pointDisplacement会被占用,他必须定义为sixdofsover里的边界(例如caculate)。这样上面静止系统的方案就不可行了。
    我又尝试在pimpleFoam主程序中将位移写为附加项,想在6dof更新状态时加上去

    if (currentTime >= pulseTime && currentTime < pulseTime + runTime.deltaT().value())
    {
    // 获取当前位移状态
    vector currentDisplacement = motion.centreOfRotation(); // 获取当前的中心位置
    // 将脉冲位移量叠加到当前位移
    vector newDisplacement = currentDisplacement + pulseDisplacement;
    // 使用 transform() 更新刚体的位置
    tensor identity(1, 0, 0, 0, 1, 0, 0, 0, 1); // 单位张量,不涉及旋转
    // 调用合适的方法来更新位移
    motion.update(false, newDisplacement, vector(0, 0, 0), runTime.deltaT().value(), runTime.deltaT().value()); // 调用更新方法
    Info << "Pulse applied at time " << currentTime << " with displacement: " << pulseDisplacement << endl;
    }

    这个方案也不可行,我估计是6dof不仅涉及到刚体位置的变换还有对应网格的更新。请各位老师帮忙看下。

    1 条回复 最后回复
  • L 离线
    L 离线
    lwjetmann
    写于2024年10月15日 09:24 最后由 编辑
    #2

    如果原本不支持叠加的话,这种可能只有基于sixDoFRigidBodyMotion自定义一个动网格求解器了。

    I 1 条回复 最后回复 2024年11月5日 14:16
  • I 在线
    I 在线
    ice_flow
    在 2024年11月5日 14:16 中回复了 lwjetmann 最后由 编辑
    #3

    @lwjetmann 多谢,我自己增加了一个solver,确实是可行的。

    1 条回复 最后回复
2024年10月14日 10:26

3/3

2024年11月5日 14:16

2024年11月5日 14:16
  • 登录

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