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. precice tourorials中的受力问题

precice tourorials中的受力问题

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

    openfoam的受力分析需要在controldict中添加force子字典,但是我在运行preCICE的教程时发现有些教程的concroldict中没有这个部分的,但他依旧实现了force和displacement的互相传递,这个是怎么做到的?
    如果是它是通过的adapter所实现的内容能否推荐以下对应的博客,我在precice官方的页面https://precice.org/adapter-openfoam-overview.html看不到这样的功能
    ps:以下是这个问题在外站的提问,里边有截图,本站附图的方式我暂时没学会https://www.zhihu.com/question/4035300749

    L 1 条回复 最后回复 2024年11月18日 03:10
  • L 离线
    L 离线
    lwjetmann
    在 2024年11月18日 03:10 中回复了 RolandLent 最后由 编辑
    #2

    @RolandLent 源码在openfoam-adapter的FSI/Force.C和ForceBase.C中

    R 1 条回复 最后回复 2024年11月18日 07:58
  • R 离线
    R 离线
    RolandLent
    在 2024年11月18日 07:58 中回复了 lwjetmann 最后由 编辑
    #3

    @lwjetmann好的,谢谢

    1 条回复 最后回复
  • M 离线
    M 离线
    Mina Lee
    写于2024年11月20日 16:02 最后由 编辑
    #4

    因为你编译的openfoam-adapter里,已经对流固耦合交界面的force变量引用了,OF在运行完成后,adapter会引用force变量,precice运行完毕后,会覆盖这个force变量。
    precice就是给openfoam施加了一个狄利克雷位移边界条件-理解了这句话就全明白了。

    R 2 条回复 最后回复 2024年11月21日 03:16
  • R 离线
    R 离线
    RolandLent
    在 2024年11月21日 03:16 中回复了 Mina Lee 最后由 编辑
    #5
    此回复已被删除!
    1 条回复 最后回复
    • R 离线
      R 离线
      RolandLent
      在 2024年11月21日 03:44 中回复了 Mina Lee 最后由 编辑
      #6

      @Mina-Lee 在 precice tourorials中的受力问题 中说:

      因为你编译的openfoam-adapter里,已经对流固耦合交界面的force变量引用了,OF在运行完成后,adapter会引用force变量,precice运行完毕后,会覆盖这个force变量。
      precice就是给openfoam施加了一个狄利克雷位移边界条件-理解了这句话就全明白了。

      其他的能理解,但是这个“precice运行完毕后,会覆盖这个force变量”指的是
      在controldict中定义了“forces”那么openfoam输出的forec是重新计算的,与流固耦合过程中交换的不是一个值的意思吗

      M 1 条回复 最后回复 2024年11月22日 12:14
    • M 离线
      M 离线
      Mina Lee
      在 2024年11月22日 12:14 中回复了 RolandLent 最后由 编辑
      #7

      @RolandLent precice中没有计算OF力的能力,力都是在OF里计算的。OF中的力也是通过force函数计算的。
      pecice只干三件事:
      1、引用of中的力变量,提取流固耦合交界面的力变量;引用位移变量。2、precice内部运算。3、覆盖引用的位移变量。

      R 1 条回复 最后回复 2024年11月22日 12:36
    • R 离线
      R 离线
      RolandLent
      在 2024年11月22日 12:36 中回复了 Mina Lee 最后由 编辑
      #8

      @Mina-Lee 在 precice tourorials中的受力问题 中说:

      @RolandLent precice中没有计算OF力的能力,力都是在OF里计算的。OF中的力也是通过force函数计算的。
      pecice只干三件事:
      1、引用of中的力变量,提取流固耦合交界面的力变量;引用位移变量。2、precice内部运算。3、覆盖引用的位移变量。

      我阅读了第一位回答者的源代码,力的计算是precice的of适配器实现的,我在适配器的forcebase类里边找到了计算力的方法,这里附上计算压力和黏性力的部分

      if (solverType_.compare("incompressible") == 0)
              {
                  forceField.boundaryFieldRef()[patchID] =
                      surface * pb[patchID] * rhob[patchID];
              }
              else if (solverType_.compare("compressible") == 0)
              {
                  forceField.boundaryFieldRef()[patchID] =
                      surface * pb[patchID];
              }
      
      forceField.boundaryFieldRef()[patchID] +=
                  surface & devRhoReffb[patchID];
      

      如果是用of的solid求解器就是向您这样的执行方式了

      // Check if a force field with the requested name exists.
          // If yes (e.g., solids4Foam), bind Force_ to that field.
          // If not (e.g., pimpleFoam without the Forces function object), create it.
          if (mesh_.foundObject<volVectorField>(nameForce))
          {
              Force_ =
                  &const_cast<volVectorField&>(
                      mesh_.lookupObject<volVectorField>(nameForce));
          }
          else
          {
              ForceOwning_.reset(new volVectorField(
                  IOobject(
                      nameForce,
                      mesh_.time().timeName(),
                      mesh,
                      IOobject::NO_READ,
                      IOobject::AUTO_WRITE),
                  mesh,
                  dimensionedVector(
                      "fdim",
                      dimensionSet(1, 1, -2, 0, 0, 0, 0),
                      Foam::vector::zero)));
      
              Force_ = ForceOwning_.get();
          }
      
      1 条回复 最后回复
    2024年11月17日 11:56

    8/8

    2024年11月22日 12:36

    2024年11月22日 12:36
    • 登录

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