Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
File io Fortran77中高效的文件I/O_File Io_Fortran_Fortran77 - Fatal编程技术网

File io Fortran77中高效的文件I/O

File io Fortran77中高效的文件I/O,file-io,fortran,fortran77,File Io,Fortran,Fortran77,由于实现限制,我不得不使用Fortran77 一些上下文-我正在编写一个有限元代码,对于每个元素,我都用F77编写了材料定律。对于我的物质法则,我需要来自外部文本文件的信息——因此对于每个元素,我打开一个文本文件,从中读取(2D数组)并关闭它。可以想象,随着元素数量的增加,I/O的数量变得非常高正在读取的文本文件是静态的-不随元素或时间而改变。 当前读取块如下所示: open (xx, file='C:\Users\myfile.txt',status='old'

由于实现限制,我不得不使用Fortran77

一些上下文-我正在编写一个有限元代码,对于每个元素,我都用F77编写了材料定律。对于我的物质法则,我需要来自外部文本文件的信息——因此对于每个元素,我打开一个文本文件,从中读取(2D数组)并关闭它。可以想象,随着元素数量的增加,I/O的数量变得非常高正在读取的文本文件是静态的-不随元素或时间而改变。

当前读取块如下所示:

                open (xx, file='C:\Users\myfile.txt',status='old')
                C loop over the data points
                do k = 1, k_tot
                    do j = 1, j_tot
                          read(xx,*) alpha(j,1), alpha(j,k+1)
                    end do
                C close the file
                close (xx)
我的问题是-执行此I/O的最有效方法是什么? 一次读取整个数组并没有真正起作用-没有编译器错误,但数组元素是未赋值的,即

                open (xx, file='C:\Users\myfile.txt',status='old')
                read(xx,*) alpha
                close (xx)
也不是


任何帮助都将不胜感激,谢谢

欢迎光临。请对所有Fortran问题使用tag。你能解释一下为什么你必须使用Fortran 77吗?例如,您展示的一次读取整个数组的示例是Fortran 90。请解释什么是“它不起作用”。这句话没有任何用处。它编译了吗?它跑了吗?有错误信息吗?结果正确吗?它是慢还是快?没有。如果你需要文本文件,你可以做很多。文本文件总是很慢。编译器必须将文本翻译成数字。如果您需要。请快速,您需要二进制(未格式化)文件。请具体说明商业代码需要f77。在任何情况下,您都应该知道文件是文本还是二进制文件,那么您为什么要尝试双向读取呢?abaqus根本不需要f77。为了获得最佳性能,请使用具有
access=stream
的二进制文件(这是fortran 2003左右)。建议在将二进制文件放入用户子程序之前,先练习编写一些独立程序来读取二进制文件。Abaqus不需要Fortran 77.Welcome。请对所有Fortran问题使用tag。你能解释一下为什么你必须使用Fortran 77吗?例如,您展示的一次读取整个数组的示例是Fortran 90。请解释什么是“它不起作用”。这句话没有任何用处。它编译了吗?它跑了吗?有错误信息吗?结果正确吗?它是慢还是快?没有。如果你需要文本文件,你可以做很多。文本文件总是很慢。编译器必须将文本翻译成数字。如果您需要。请快速,您需要二进制(未格式化)文件。请具体说明商业代码需要f77。在任何情况下,您都应该知道文件是文本还是二进制文件,那么您为什么要尝试双向读取呢?abaqus根本不需要f77。为了获得最佳性能,请使用具有
access=stream
的二进制文件(这是fortran 2003左右)。建议在将二进制文件放入用户子程序之前,先练习编写一些独立程序来读取二进制文件。Abaqus不需要Fortran 77。
                open (xx, file='C:\Users\myfile.txt',status='old', format = 'unformatted')
                read(xx) alpha
                close (xx)