arrays - 违反 Fortran 形状匹配规则
问题描述
我想达到什么目的
我试图编写一个以矩阵(2D 数组)作为输入的子例程,并将其很好地打印到标准控制台输出。
问题
error #6634: The shape matching rules of actual arguments and dummy arguments have been violated. ['U']
代码
打印矩阵的子程序在这个模块中
模块
MODULE LinearSystems
IMPLICIT NONE
private
...
public showMatrix
...
contains
subroutine showMatrix(a, n, m, name)
implicit none
double precision, dimension(:,:), intent(in) :: a
character, dimension(:), intent(in), optional :: name
integer, intent(in) :: n,m
integer :: i, j
write(*,*) "*** Show Matrix ", name, " ***"
do i = 1, n
do j = 1, m
write(*,'(F8.4)',advance="no") a(i,j)
end do
write(*,*)
end do
end subroutine showMatrix
主程序调用它
主程序
program PoisonEquation
...
use LinearSystems
implicit none
double precision, dimension(:,:), allocatable :: u,...
integer :: n = 700
allocate(u(n-1,n-1))
...
call showMatrix(u, n-1,n-1, "U")
我期待收到有关如何改进此代码并使其无错误的提示。
解决方案
name dummy 参数是一个假定的形状数组(参见dimension(:)
声明)。用于实际参数的“U”字面量是标量(错误消息指的是这个字面量)。
如果虚拟参数是假定形状数组,则实际参数的等级应与虚拟参数的等级相同(F2018 15.5.2.4p16)。
弄清楚您是要传递/接收数组还是标量,然后修复代码。
推荐阅读
- ruby-on-rails - .旋转!在 before_create 方法中抛出 NoMethodError,但 .rotate 没有
- c# - 异步更新属性 c# MVVM
- amazon-web-services - 从 AWS Opsworks Stacks Chef 11 迁移到 Chef 12 - 堆栈属性问题
- python - 使python键入下标泛型(实例)可检查
- html - How to center Text Under iFrame when text is wrapped around it
- r - 汇总 2 个样本 t 检验中的分组因素
- javascript - 无法弄清楚为什么 React 代码不起作用
- javascript - 在我让 Puppeteer 截取页面截图之前,有没有办法让 Puppeteer 执行页面操作(比如扩展维基百科条目)?
- aws-lambda - 部署到 AWS Lambda 时,Python 库文件不在文件夹内
- azure-logic-apps - 如何正确地将 JSON 数据提取/转换为对象?