una - `Error de tiempo de ejecución de Fortran: Fin del archivo` en Amber12
manejo de archivos en fortran (2)
Comentario extendido en lugar de una respuesta. Las dos causas comunes del mensaje de error que está recibiendo, es decir
At line 524 of file mdread.F90 (unit = 5, file = ''min.in'') Fortran runtime error: End of file
son
- El archivo que se lee no está donde el programa lo está buscando.
- El programa intenta leer más datos del archivo que el archivo contiene.
Según lo que publicó, parece que (1) es improbable, pero puede verificarlo insertando una instrucción INQUIRE
para verificar la existencia del archivo antes de abrirlo. Alternativamente, puede utilizar la palabra clave STATUS=''old''
(y el valor) en su declaración OPEN
archivo, si el archivo no existe, el programa informará un error.
En cuanto a (2), estás más o menos solo. Nadie aquí (a menos que tenga mucha suerte) es probable que tenga una pista de lo que su programa espera leer del archivo de entrada, y usted no publicará ninguno de los códigos relevantes. Puede importar modificar las declaraciones READ
del archivo para incorporar un argumento END=
keyword para eliminar el origen del error.
Supongo que los proveedores de Amber12 probablemente conozcan mejor su código que la comunidad de SO; su pregunta sería mejor dirigida a ellos.
Por lo que vale, creo que el problema no está relacionado con el compilador que está utilizando.
Estoy usando el software amber12 utilizado para campos de fuerzas mecánicas moleculares para la simulación de biomoléculas, sigo las instrucciones de instalación descritas en el siguiente enlace Intallation of ambar en Mac OS X el programa realmente funciona pero cuando intento ejecutar una parte del programa del programa se detiene y dice
Error de tiempo de ejecución de Fortran: fin del archivo
1.Así que esto es lo que hago, primero acceda a la carpeta de archivos que contiene los archivos
N-terminal-2:~ javieralejandrorendoncarrillo$ cd Desktop/amber/Complex1
2. luego establecer el camino
N-terminal-2:Complex1 javieralejandrorendoncarrillo$ export AMBERHOME=/Users/javieralejandrorendoncarrillo/amber/amber12
3.y finalmente ejecuta el programa con la siguiente línea de comando:
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$
El archivo min.in
se guarda en la carpeta de archivos Complex 1
donde estoy ejecutando la simulación, esta es la secuencia de comandos para min.in
Initial minimisation of our complex
&cntrl
imin=1, maxcyc=3000, ncyc=2500,
cut=16, ntb=0, igb=1,
&end
¿Cómo resuelvo este problema? Es la sintaxis incorrecta? ¿Alguien sabe cómo ejecutar o qué tipo de lenguaje de programación es este?
Esta es la versión instalada de gfortran que tengo
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)
Tuve el mismo mensaje de error: ..file mdread.F90 (unit = 5, file = ''min_all.in'')..
Al investigar esto, por alguna razón descubrí que al cambiar el ntpr=5
a 6
en el archivo min_all.in me deshice del problema:
&cntrl
imin=1, maxcyc=200,
ntpr=6,
&end
Al no ser el cuchillo más afilado en el cajón sobre estas cosas, me cuesta trabajo ver por qué me lo resolvió.
El valor ntpr
solo define la frecuencia con la que se deben enviar las coordenadas de la trayectoria al archivo ntpr
, en este caso cada 6 pasos en lugar de cada 5 pasos.