CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    OF如何输出header

    OpenFOAM
    2
    9
    1083
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • S
      Samuel-Tu 最后由 编辑

      我想把一个scalarField规范输出到文本文件里面,以便下次计算直接可以读取。但是由于IO读取的时候似乎要检查header,例如下面这样。如何规范地输出scalarField呢?

      /*--------------------------------*- C++ -*----------------------------------*\
      | =========                 |                                                 |
      | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
      |  \\    /   O peration     | Version:  v1806                                 |
      |   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
      |    \\/     M anipulation  |                                                 |
      \*---------------------------------------------------------------------------*/
      FoamFile
      {
          version     2.0;
          format      ascii;
          class       dictionary;
          location    "constant";
          object      transportProperties;
      }
      
      1 条回复 最后回复 回复 引用
      • S
        Samuel-Tu 最后由 编辑

        如何把表头也输出到文件里面呢,或者能不能IO的时候直接write好这个scalarField呢

        1 条回复 最后回复 回复 引用
        • S
          Samuel-Tu 最后由 编辑

          又是搜索的一晚上,还好查出来了。通过scalarIOField来定义想输出的scalarField,在scalarFiled里面用IOobject来初始化。最后用write()来输出到指定文件夹。这样输出的文件就有header了。以后OF也可以读取了,很棒!!
          不过有个问题是,我在IOobject里面设置的路径是runTime.path()/“postProcessing”,发现结果却没有输出到postProcessing这个文件夹里面。而是输出到了runTime.timeName()文件夹里。不知道是怎么回事。
          看起来像是不能识别postProcessing文件夹路径,而默认到了runTime.timeName()路径里面去。不知道怎么解决这个问题

          S 1 条回复 最后回复 回复 引用
          • S
            Samuel-Tu 最后由 编辑

            另外并行计算的mesh.constant()路径是processor里面的constant文件夹。有没有命令能够直接得到processor外面的那个constant文件路径呢

            1 条回复 最后回复 回复 引用
            • 李东岳
              李东岳 管理员 最后由 编辑

              感谢分享
              试试runTime.path()/"postProcessing"/"sets"/name()? see streamlines.C

              CFD高性能服务器 http://dyfluid.com/servers.html
              2023年,线下CFD课,预热一下 http://dyfluid.com/class.html

              S 1 条回复 最后回复 回复 引用
              • S
                Samuel-Tu @Samuel-Tu 最后由 编辑

                @Samuel-Tu 在 OF如何输出header 中说:

                scalarIOField
                OF1806对应的是IOField<scalar>

                1 条回复 最后回复 回复 引用
                • S
                  Samuel-Tu @李东岳 最后由 编辑

                  @东岳 还是不行,首先是没有name()这个函数,去掉name()后识别不出来postProcessing,还是输出到runTime.timeName()里面了

                  1 条回复 最后回复 回复 引用
                  • S
                    Samuel-Tu 最后由 编辑

                    此贴终结,完美输出方式被我找到了!!!!!!

                        IOField<scalar> utau
                        (
                            IOobject
                            (
                                "utau",
                                 runTime.constant(),
                                "../postProcessing",
                                mesh,
                                IOobject::NO_READ,
                                IOobject::AUTO_WRITE 
                            ),
                            scalarField(totalFSize,0.0)
                        );
                    

                    这样就可以输出到想要的文件夹(此处是postProcessing)了

                    1 条回复 最后回复 回复 引用
                    • 李东岳
                      李东岳 管理员 最后由 编辑

                      感谢分享!!!收录在此 https://www.cfd-china.com/topic/3499/openfoam小代码

                      CFD高性能服务器 http://dyfluid.com/servers.html
                      2023年,线下CFD课,预热一下 http://dyfluid.com/class.html

                      1 条回复 最后回复 回复 引用
                      • First post
                        Last post