even2004: 采用C++编制CFD程序时三维数组的建立方法 本人打算用C++编制CFD分析程序,对于三维问题,需要用三维数组来记录每个流场网格上 的流动数据。目前我知道的有三种方法: 其一是用一维数组加偏移地址的方法,每一个三维网格点可以用网格块编号和ijk指标来计算其在一维数组中的偏移地址,但这样太麻烦,随时都要计算偏移地址; 其二是定义三级指针double ***a,然后a=new double**[n],a=new double*[n],a[j]=new double[n],这种方法在建立数组a[][][]的同时建立了二维指针数组a[][](实际上数值计算时用不 到这个数组),个人觉得浪费空间; 第三种方法是采用容器的办法,vector > vecInt(m, vector (n)),这种办法看似方便,实际上对于CFD计算,其效率显著低于数组。请问哪位达人可以提供一种高效的且省内存的操作方便的方法来建立三维数组?
|
|