`Ошибка выполнения Fortran: конец файла` в Amber12

Я использую программное обеспечение amber12, используемое для молекулярно-механических силовых полей для моделирования биомолекул, я следую инструкциям по установке, описанным в следующей ссылке Установка янтаря в Mac OS X программа на самом деле работает, но при попытке выполнить программную часть программного обеспечения она останавливается и говорит

Ошибка выполнения Fortran: конец файла

1. Итак, вот что я делаю: сначала откройте папку с файлами, содержащую файлы

N-terminal-2:~ javieralejandrorendoncarrillo$ cd Desktop/amber/Complex1

2.затем указать путь

N-terminal-2:Complex1 javieralejandrorendoncarrillo$ export AMBERHOME=/Users/javieralejandrorendoncarrillo/amber/amber12

3. и, наконец, запустите программу со следующей командной строкой:

N-terminal-2:Complex1 javieralejandrorendoncarrillo$ $AMBERHOME/bin/sander.MPI -O -i min.in -o min_complex.out -p complex.prmtop -c complex.inpcrd -r complex_min.crd &
[2] 13377
N-terminal-2:Complex1 javieralejandrorendoncarrillo$ At line 524 of file mdread.F90 (unit = 5, file = 'min.in')
Fortran runtime error: End of file

[2]-  Exit 2                  $AMBERHOME/bin/sander.MPI -O -i min.in -o min_complex.out -p complex.prmtop -c complex.inpcrd -r complex_min.crd
N-terminal-2:Complex1 javieralejandrorendoncarrillo$ 

Файл min.in сохраняется в папке с файлами Complex 1, где я запускаю симуляцию, это скрипт для min.in

Initial minimisation of our complex
 &cntrl
  imin=1, maxcyc=3000, ncyc=2500,
  cut=16, ntb=0, igb=1,
 &end

Как решить эту проблему? Синтаксис неправильный? Кто-нибудь знает, как выполнить или что это за язык программирования?

Это версия gfortran, которая у меня установлена.

N-terminal-2:~ javieralejandrorendoncarrillo$ gfortran -v
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/opt/local/libexec/gcc/x86_64-apple-darwin12/4.7.2/lto-wrapper
Target: x86_64-apple-darwin12
Configured with: ../gcc-4.7.2/configure --prefix=/opt/local --build=x86_64-apple-darwin12 --enable-languages=c,c++,objc,obj-c++,lto,fortran,java --libdir=/opt/local/lib/gcc47 --includedir=/opt/local/include/gcc47 --infodir=/opt/local/share/info --mandir=/opt/local/share/man --datarootdir=/opt/local/share/gcc-4.7 --with-libiconv-prefix=/opt/local --with-local-prefix=/opt/local --with-system-zlib --disable-nls --program-suffix=-mp-4.7 --with-gxx-include-dir=/opt/local/include/gcc47/c++/ --with-gmp=/opt/local --with-mpfr=/opt/local --with-mpc=/opt/local --with-ppl=/opt/local --with-cloog=/opt/local --enable-cloog-backend=isl --disable-cloog-version-check --enable-stage1-checking --disable-multilib --enable-lto --enable-libstdcxx-time --with-as=/opt/local/bin/as --with-ld=/opt/local/bin/ld --with-ar=/opt/local/bin/ar --with-bugurl=https://trac.macports.org/newticket --disable-ppl-version-check --with-pkgversion='MacPorts gcc47 4.7.2_2'
Thread model: posix
gcc version 4.7.2 (MacPorts gcc47 4.7.2_2) 

person Alex RendOn    schedule 18.04.2013    source источник


Ответы (3)


У меня было такое же сообщение об ошибке: ..file mdread.F90 (unit = 5, file = 'min_all.in')...

При исследовании этого я по какой-то причине обнаружил, что изменение ntpr=5 на 6 в файле min_all.in избавило от проблемы:

 &cntrl
  imin=1, maxcyc=200,
  ntpr=6,
 &end

Не будучи самым острым ножом в ящике в этих вещах, я с трудом понимаю, почему это решило это для меня.

Значение ntpr определяет только то, как часто координаты траектории должны отправляться в выходной файл, в данном случае каждые 6 шагов вместо каждых 5 шагов.

person MackieTheKnife    schedule 17.10.2017

Расширенный комментарий, а не ответ. Две распространенные причины сообщения об ошибке, которое вы получаете, то есть

At line 524 of file mdread.F90 (unit = 5, file = 'min.in') Fortran runtime error: End of file

являются

  1. Читаемый файл находится не там, где его ищет программа.
  2. Программа пытается прочитать больше данных из файла, чем содержит файл.

Из того, что вы опубликовали, кажется, что (1) маловероятно, но вы можете проверить это, вставив оператор INQUIRE, чтобы проверить существование файла перед его открытием. В качестве альтернативы вы можете использовать ключевое слово STATUS='old' (и значение) в своем операторе файла OPEN, если файл не существует, программа сообщит об ошибке.

Что касается (2), вы в значительной степени сами по себе. Никто здесь (если только вам не очень-очень повезло), скорее всего, не имеет ни малейшего представления о том, что ваша программа ожидает прочитать из входного файла, и вы не публикуете какой-либо соответствующий код. Возможно, вы захотите изменить операторы файла READ, включив в них аргумент ключевого слова END=, чтобы выявить источник ошибки.

Я предполагаю, что сами поставщики Amber12, вероятно, лучше осведомлены о своем коде, чем сообщество SO; Ваш вопрос лучше адресовать им.

Для чего это стоит, я думаю, что проблема не связана с используемым вами компилятором.

person High Performance Mark    schedule 19.04.2013
comment
скрипт должен выглядеть так Начальная минимизация нашего комплекса &cntrl imin=1, maxcyc=3000, ncyc=2500, cut=16, ntb=0, igb=1, / и командная строка $ sander.MPI -O -i / Users/javieralejandrorendoncarrillo/Desktop/Amber/COMPLEX1/min.in -o min_complex.out -p complex.prmtop -c complex.inpcrd -r complex_min.crd - person Alex RendOn; 20.04.2013

Строка '&end' или '/' не должна быть последней строкой в ​​вашем сценарии ввода. Добавьте новую пустую строку после строки '&end' или '\', в зависимости от того, что вы используете. Это решило проблему для меня.

person JafetGado    schedule 04.07.2018
comment
да. это тоже случилось со мной. Это сработало после того, как я добавил лишнюю пустую строку после «\» - person JY078; 16.08.2018