Arrays 按元素乘法子数组和数组fortran

Arrays 按元素乘法子数组和数组fortran,arrays,fortran,fortran90,Arrays,Fortran,Fortran90,我想在fortran90中对两个数组A和一个子数组B进行元素相乘 A是4d,B是5d。起初我试过这个,但编译器不喜欢 C(:,:,:,:)=A(:,:,:,:)*B(:,:,:,:,1) 有没有一种简单的方法可以将B:,:,:,:,1提取为4d数组,这样我就可以进行二进制运算* 编辑-来自编译器的错误消息 错误是指用四个索引而不是五个索引声明的数组tbase的秩。编译器是如何抱怨的?错误消息是什么(如果有的话)?您使用的是什么Fortran语言,使用了什么编译器和/或编译器选项?@pierre

我想在fortran90中对两个数组A和一个子数组B进行元素相乘

A是4d,B是5d。起初我试过这个,但编译器不喜欢

C(:,:,:,:)=A(:,:,:,:)*B(:,:,:,:,1)
有没有一种简单的方法可以将B:,:,:,:,1提取为4d数组,这样我就可以进行二进制运算*

编辑-来自编译器的错误消息


错误是指用四个索引而不是五个索引声明的数组tbase的秩。

编译器是如何抱怨的?错误消息是什么(如果有的话)?您使用的是什么Fortran语言,使用了什么编译器和/或编译器选项?@pierredebyl我将在原始帖子中添加错误消息。目前我正在使用gfortran进行编译,不过稍后我可能会转到cray编译器。我是用f90编写的,因为模型的原始代码库就是用f90编写的,但我对Fortran比较陌生,所以不确定添加到post中的数组声明行之间的区别?错误似乎是tbase的级别为4,而不是其他任何级别。我会先检查一下。@Pierredebyl你检查得对,我把tbase放错了分配函数,谢谢!
tracer1_field(:,:,:,:) = tbase(:,:,:,:,1)*domain(:,:,:,:) ! *12*12*!2 due to grid size.
                              1
Error: Rank mismatch in array reference at (1) (5/4)