【发布时间】:2017-03-08 12:06:36
【问题描述】:
我的工作让我使用基于 C++ 的 OpenFOAM(流体模拟材料)。我对 C++ 一无所知,甚至不知道如何编译一个 hello world 程序。在 OpenFOAM 中,您可以在文本文件中将三维数组作为 ascii 输出。这没关系,因为我的计算不需要很长时间。然后在文件中每行有一个值。这些值的顺序是什么?
所以,在 Fortran 中我可以做到
WRITE(*,*) 3d_array
它会按照保存的顺序显示数组的值,这意味着第一次迭代是x方向,然后是y方向,然后是z方向。输出的顺序与我以这种方式输出的顺序相同:
integer, allocatable, dimension(x,y,z)::3d_array
[...]
do k=1,z
do j=1,y
do i=1,x
write(*,*) 3d_array(i,j,k)
end do
end do
end do
它在 C++ 中是如何工作的?
【问题讨论】:
-
我们需要更多。 c++中数组是如何声明的?
-
我想更好地回答这个问题。该字段的标题为 volScalarField。我知道它是三维的。定义大小的变量也是 x、y、z,它们具有相同的顺序。 volScalarField 是一个 C++ 类。这里有一些关于它的东西:openfoamcfd.sourceforge.net/doc/Doxygen/html/dc/d89/… 但我现在不明白。
-
@DevSolar 我为语气道歉,但我真正想知道的是,数组的默认输出在 C++ 中是怎样的。我不知道没有默认输出,所以现在我知道了,感谢 Quentin。我很生气,因为其他答案/cmets 似乎没有阅读完整的问题。
-
我不必编写 C++ 代码。我只是使用一个用 C++ (OpenFOAM) 编写的程序,它可以在文本文件中输出数组。我使用这个输出来计算 Fortran 中的东西。因为我知道如何编写 Fortran,所以我并没有真正看到那里的问题。
-
@KamaKashkanov:啊,我想我们现在正处于整个事情的关键。您不想知道“默认情况下 C++ 如何输出数组”。您想知道这个特定的 OpenFOAM 程序如何输出其数据,这样您就可以使用您的 Fortran 代码正确解释它! (您首先不知道该程序是否使用任何“默认”方式或自定义输出代码......)此时,您需要查看(或链接到......)程序的文档(如果有的话)或其来源......(我怀疑你可以把它变成一个不会因为离题而关闭的 SO 问题......)