Fortran Coder

查看: 14201|回复: 5
打印 上一主题 下一主题

[数值问题] fortran二维数组如何赋值给四维数组???

[复制链接]

6

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
23 点
跳转到指定楼层
楼主
发表于 2019-11-14 17:40:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
各位大佬们,请问二维数组如何赋值给四维数组呢?我是这样写的,但出错了:
[Fortran] 纯文本查看 复制代码
do i=1,64
	do j=1,64
					
		B(i,j,1,1)=A11(i,j)
		B(i,j,1,2)=A12(i,j)
		B(i,j,2,1)=A21(i,j)
		B(i,j,2,2)=A22(i,j)
					
	enddo
enddo


劳烦各位大佬们帮忙看看,具体该如何实现呢?谢谢啦!
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

954

帖子

0

主题

0

精华

大师

F 币
184 元
贡献
75 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
沙发
发表于 2019-11-14 19:32:47 | 只看该作者
本帖最后由 vvt 于 2019-11-14 19:33 编辑

Fortran是矢量化的语言,所以很多操作不需要循环
如果数组的大小是一样的,都是64的话。
real :: B(64,64,2,2) , A11(64,64) , A12(64,64) , A21(64,64) , A22(64,64)

这么一句话就可以了。

B = reshape([A11,A12,A21,A22],shape(b))



6

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
23 点
板凳
 楼主| 发表于 2019-11-15 10:47:32 | 只看该作者
vvt 发表于 2019-11-14 19:32
Fortran是矢量化的语言,所以很多操作不需要循环
如果数组的大小是一样的,都是64的话。
real :: B(64,64,2 ...

非常感谢,问题已解决!!

1

帖子

0

主题

0

精华

新人

F 币
14 元
贡献
5 点
地板
发表于 2019-11-16 13:06:04 | 只看该作者
本帖最后由 GuihangShao 于 2019-11-16 13:11 编辑

按照楼主代码,在vs2012+ivf2013环境下并没有报错。

代码:

[Fortran] 纯文本查看 复制代码
    program ex_fcode
    implicit none
    integer :: i,j
    real*8 A11(64,64),A12(64,64),A21(64,64),A22(64,64),B(64,64,2,2)
    
    A11=0.0d0
    A12=0.0d0
    A21=0.0d0
    A22=0.0d0
    
    do i=1,64
        do j=1,64
            B(i,j,1,1)=A11(i,j)
            B(i,j,1,2)=A12(i,j)
            B(i,j,2,1)=A21(i,j)
            B(i,j,2,2)=A22(i,j)
        enddo
    enddo
    
    pause
    endprogram ex_fcode
    

   
结果截图:

D:\MarineCode\20181022Test\20191116forFcode

6

帖子

2

主题

0

精华

入门

F 币
52 元
贡献
23 点
5#
 楼主| 发表于 2019-11-20 11:24:27 | 只看该作者
GuihangShao 发表于 2019-11-16 13:06
按照楼主代码,在vs2012+ivf2013环境下并没有报错。

代码:

恩恩,非常感谢您,我后面也发现这样是可以的!!

250

帖子

2

主题

0

精华

宗师

F 币
1730 元
贡献
872 点

规矩勋章

6#
发表于 2019-11-26 11:03:52 | 只看该作者
我感觉下面这样比较直观
real*8 A11(64,64),A12(64,64),A21(64,64),A22(64,64),B(64,64,2,2)
B(:,:,1,1)=A11
B(:,:,1,2)=A12
B(:,:,2,1)=A21
B(:,:,2,2)=A22
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-5-5 21:50

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表