由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 在C/Fortran之间传递2维数组
相关主题
那个语言最适合做科学计算软件问个c调用fortran函数的问题
也问个二维数组的函数传递问题[转载] CS Algorithm Interview question
关于数组动态分配的疑问???static function and static variable?
如何动态分配一个2维数组?请教一个排序的问题。
回答C++的弱问题急问大牛们:关于fortran堆栈溢出
[合集] [求助]C程序数组的问题怎样解决fortran程序中的common块的问题
符号%在FORTRAN 中是什么意思?菜鸟弱问FORTRAN的一个小问题
fortran 77 introduction book recommendation?求教:32位Fortran DLL 用于 64位ExceL macro
相关话题的讨论汇总
话题: fortran话题: zzz话题: 数组话题: 传递话题: arrays
进入Programming版参与讨论
1 (共1页)
i****d
发帖数: 255
1
问题:
在C中定义一个二维数组的指针 double **zzz,动态分配其空间.希望传递
zzz到一个Fortran 77子程序中操作,如何实现?
多谢!
附我的理解和尝试
1)如果zzz本身是一个静态二维数组,比如 zzz[5][3], 我们知道可以用
fsub_(zzz[][3])
传递,没有问题.
2) 我的问题中zzz所指的二维数组有一维的长度是固定的,比如说3.我试了用

fsub_(zzz[][3])
不成功.
3) 查了一些网上的例子. 有在Fortran中动态分配数组然后传回C的,但没有和我类似的
例子.
o**o
发帖数: 3964
2
不要搞2维数组。开线性的整块内存,自己管理维数。维数作为参数传给子程序。
唯一要注意的是Fortran是列优先,所以相对于C的行和列的定义是反的。
具体可以参考CLAPACK的接口是怎么定义的。撇开数组指针和动态分配,能更好
地把注意力集中到Fortran擅长的任务上。

【在 i****d 的大作中提到】
: 问题:
: 在C中定义一个二维数组的指针 double **zzz,动态分配其空间.希望传递
: zzz到一个Fortran 77子程序中操作,如何实现?
: 多谢!
: 附我的理解和尝试
: 1)如果zzz本身是一个静态二维数组,比如 zzz[5][3], 我们知道可以用
: fsub_(zzz[][3])
: 传递,没有问题.
: 2) 我的问题中zzz所指的二维数组有一维的长度是固定的,比如说3.我试了用
:

r*********r
发帖数: 3195
3
是练手还是实用?
要实用的, boost::multi_array 不错.
可以规定内存用fortran的方式存放.
i****d
发帖数: 255
4
谢谢二位!
实用。自己的C程序和别人的Fortran程序。

【在 r*********r 的大作中提到】
: 是练手还是实用?
: 要实用的, boost::multi_array 不错.
: 可以规定内存用fortran的方式存放.

O******e
发帖数: 734
5
Don't use anything like **x in Fortran. It is detrimental to optimization.
Fortran arrays regardless of dimensionality are basically C pointers like *x.
Fortran pointers have no equivalent in C.
If you insist on using a Fortran equivalence of **x for 2D arrays, read the
C interoperability chapter in Metcalf, Reid, and Cohen's Fortran 2003
Explained.
Also look up "assumed-shape arrays" in a good Fortran textbook.

【在 i****d 的大作中提到】
: 问题:
: 在C中定义一个二维数组的指针 double **zzz,动态分配其空间.希望传递
: zzz到一个Fortran 77子程序中操作,如何实现?
: 多谢!
: 附我的理解和尝试
: 1)如果zzz本身是一个静态二维数组,比如 zzz[5][3], 我们知道可以用
: fsub_(zzz[][3])
: 传递,没有问题.
: 2) 我的问题中zzz所指的二维数组有一维的长度是固定的,比如说3.我试了用
:

k******n
发帖数: 35
6
I believe most people use Fortran for some computational libs. In these
cases, you do not need two dimensional array. One dimensional will serve
most purposes.
1 (共1页)
进入Programming版参与讨论
相关主题
求教:32位Fortran DLL 用于 64位ExceL macro回答C++的弱问题
perl二维数组一问[合集] [求助]C程序数组的问题
请问C#里面,如何对N个数组设置循环访问?符号%在FORTRAN 中是什么意思?
关于java的二维数组的问题fortran 77 introduction book recommendation?
那个语言最适合做科学计算软件问个c调用fortran函数的问题
也问个二维数组的函数传递问题[转载] CS Algorithm Interview question
关于数组动态分配的疑问???static function and static variable?
如何动态分配一个2维数组?请教一个排序的问题。
相关话题的讨论汇总
话题: fortran话题: zzz话题: 数组话题: 传递话题: arrays