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. <type>Field的一些问题

<type>Field的一些问题

已定时 已固定 已锁定 已移动 OpenFOAM
6 帖子 2 发布者 3.9k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • S 离线
    S 离线
    Samuel-Tu
    写于 最后由 编辑
    #1

    最近写程序的时候需要用到数组,但是我需要每次循环中改变数组的大小。而静态数组不能用变量声明数组大小,因此我灵机一动想到能不能用tensorField来当作数组呢?因此我做了如下尝试:

    int N=10;
    tensorField euler(N*2,tensor(-3,-1,-1,-1,-1,-1,-1,-1,-2));
    

    发现竟然可以定义,运行后尝试输出张量场,发现可以正确输出。因此我在想是否可以将N定义为全局变量,将tensorField定义为局部变量,这样就可以在循环中改变N的大小,然后每次循环开始时重新定义张量场。从而达到我改变数组大小的目的。不过这个方法我还没有尝试,不知道是否有更好的办法??
    另我又做了另一个试验,就是输出euler[1][8],为-2。而输出euler[1][9]则为-3。实际上euler[1]作为一个张量应该只有9个元素,因此euler[1][9]是越界了,但是似乎是自动引用了euler[2][0],感觉就像是数组一样,没有进行越界检查,但是可以继续按着储存顺序往下引用。

    1 条回复 最后回复
  • Y 离线
    Y 离线
    yfclark 神
    写于 最后由 编辑
    #2

    应该没有问题,另外你可以使用new申请内存,每个时间步完了用delete释放一下

    S 2 条回复 最后回复
  • S 离线
    S 离线
    Samuel-Tu
    在 中回复了 yfclark 最后由 编辑
    #3

    @yfclark 感谢,这个方法好像更好,代码更清晰

    1 条回复 最后回复
  • S 离线
    S 离线
    Samuel-Tu
    在 中回复了 yfclark 最后由 编辑
    #4

    @yfclark 感觉你说的方法更好

    1 条回复 最后回复
  • S 离线
    S 离线
    Samuel-Tu
    写于 最后由 编辑
    #5

    更新一下。最近看epsilonWallFunction.C的时候发现了DynamicList(动态列表?),代码如下:

    DynamicList<label> epsilonPatches(bf.size());
    

    比较奇怪这个的用法,bf.size()是指边界场patch的个数,那么上述代码像是给epsilonPatches一个大小,然而实际上epsilonPatches一般都是少于bf.size()的,而且是靠append往里面添加内容的,如下

    epsilonPatches.append(patchi);
    

    那么bf.size()的作用到底是啥呢?
    另外,如果这个是动态列表,是否需要显式地释放内存呢?但是我没看见相关的delete。

    1 条回复 最后回复
  • Y 离线
    Y 离线
    yfclark 神
    写于 最后由 编辑
    #6

    @Samuel-Tu DynamicField虽然叫Dynamic但声明的时候必须先给定大小,一般先选一个大一点的size初始化,用append添加元素,再用shrink删除多余的空元素。

    1 条回复 最后回复

  • 登录

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