Ошибка компиляции Fortran-DVMH программы: несоответствие фактических и формальных аргументов
При использовании современных версий Фортран компилятора GNU (gfortran) для компиляции DVMH программ возможно возникновение ошибок аналогичных следующей:
Error: Type mismatch between actual argument at (1) and actual argument at (2) (INTEGER(4)/INTEGER(8)).
jac.DVMH.f:41:25:
34 | dvm000(2) = getai (dvm000(1))
| 2
......
41 | dvm000(9) = getai (i0000m(1))
Данная ошибка связана с тем, что некоторые функции системы поддержки DVMH могут быть вызваны с разным числом параметров разных типов. Современные компиляторы пытаясь гарантировать корректность вызова функций могут запрещать такое поведение. Чтобы данные ошибки трактовались компилятором как предупреждения можно добавить опцию -fallow-argument-mismatch
.
Допустим один из двух вариантов.
Можно в скрипте dvm
раскомментировать и изменить переменную PFORT
:
export PFORT='mpifort -g -O2 -fopenmp -fallow-argument-mismatch'
Иди можно задать переменную PFORT
в файле, определяющем конфигурацию сборки DVM системы. Имя конфигурации указано в файле …/dvm_sys/platform
. Файл, совпадающий с именем конфигурации, необходимо найти директории …/dvm_sys/platforms
. Необходимо внести изменения в данный файл:
PFORT='mpifort -g -O2 -fopenmp -fallow-argument-mismatch'