【问题标题】:element wise multiply sub-array and array fortran逐元素乘子数组和数组fortran
【发布时间】:2018-02-01 04:10:46
【问题描述】:

我想在 fortran(90) 中将两个数组 A 和 B 的子数组相乘

A 是 4d,B 是 5d。最初我尝试过,但编译器不喜欢它

C(:,:,:,:)=A(:,:,:,:)*B(:,:,:,:,1)

有没有一种简单的方法可以将 B(:,:,:,:,1) 提取为 4d 数组,以便我可以进行二元运算 *?

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

tracer1_field(:,:,:,:) = tbase(:,:,:,:,1)*domain(:,:,:,:) ! *12*12*!2 due to grid size.
                              1
Error: Rank mismatch in array reference at (1) (5/4)

【问题讨论】:

  • 编译器是怎么抱怨的?如果有的话,错误信息是什么?您使用的是什么 Fortran 习语以及使用了哪些编译器和/或编译器选项?
  • @PierredeBuyl 我会将错误消息添加到原始帖子中。我目前正在使用 gfortran 进行编译,尽管稍后我可能会转到 cray 编译器。我在 f90 中编写它,因为这是模型的原始代码库中编写的,但我对 Fortran 比较陌生,所以不确定习语之间的区别
  • 您可以在帖子中添加数组的声明行吗?错误似乎是 tbase 排名第 4,而不是其他任何东西。我会先检查一下。
  • @PierredeBuyl 你说得对,我把 tbase 放入了错误的分配函数中,谢谢!

标签: arrays fortran fortran90


【解决方案1】:

错误是指数组tbase 的排名,该数组用四个索引而不是五个索引声明。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    • 2021-08-31
    • 1970-01-01
    相关资源
    最近更新 更多