Чего я пытаюсь достичь
Я пытаюсь написать подпрограмму, которая принимает матрицу (двумерный массив) в качестве входных данных и красиво печатает ее на стандартный вывод консоли.
Проблема
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")
Я с нетерпением жду получения советов о том, как улучшить этот код и избавиться от него.