Friday, October 28, 2011
Fortran读取的数据文件
Fortran在读取数据文件的时候一定要输入空格,不能使用tab键,因为在按照字符个数读取的时候是计数文件中的字符位的个数,所以如果使用tab这样的字符出现在数据文件,会导致读写不正确。
file name specification error, unit 45, file "Unknown"
今天在用XCode+IVF调试程序的时候,发生了这个错误:
文件名的打开,或者读写出现问题,所打开的文件的序号是45,如果知道了45的这个信息,就很容易在程序中快速定位错误的位置所在。另外"Unknown"表示的是打开文件的方式,比如“New”,“Old”,“Replace”什么都是类似的。
Tuesday, October 25, 2011
outlook中文“回复”
今天郁闷的发现,outlook发邮件,回复的时候,都是回复:......
时间啊什么的都是中文的,很郁闷,
终于费了牛劲,找到了在 工具——》选项——》邮件格式——》国际选项里面
时间啊什么的都是中文的,很郁闷,
终于费了牛劲,找到了在 工具——》选项——》邮件格式——》国际选项里面
Sunday, October 23, 2011
fortran77与fortran90主程序与子程序之间参数的传递
两者之间传递变量是没有任何问题的。
但是问题在于传递数组。由于在fortran90中可以使用可变大小的数组,而在fortran77钟不支持这种功能,只能是固定大小的数组,所以当作为子程序的fotran90中为可变数组,而主程序的fortran77是一个固定数组,这样两者是没有办法传递数组的,只有把子程序中在传参这一步的时候也改成固定数组,参能完成主程序与子程序,数组参数的传递。
但是问题在于传递数组。由于在fortran90中可以使用可变大小的数组,而在fortran77钟不支持这种功能,只能是固定大小的数组,所以当作为子程序的fotran90中为可变数组,而主程序的fortran77是一个固定数组,这样两者是没有办法传递数组的,只有把子程序中在传参这一步的时候也改成固定数组,参能完成主程序与子程序,数组参数的传递。
Saturday, October 22, 2011
升级papers2的方法
如果已经安装了papers2的软件,下载新版本后是没法通过直接覆盖的方法进行安装。正确的安装方法如下:
1. 在下载的镜像中打开papers2,这样会通过新的镜像打开你原来papers2链接的数据库
2. 然后关闭这个镜像中打开的papers,推出,会自动弹出提示,你还没有升级papers2
3. 然后点击升级,一会个功夫,就会提示升级成功。
1. 在下载的镜像中打开papers2,这样会通过新的镜像打开你原来papers2链接的数据库
2. 然后关闭这个镜像中打开的papers,推出,会自动弹出提示,你还没有升级papers2
3. 然后点击升级,一会个功夫,就会提示升级成功。
Monday, October 17, 2011
使用Microsoft Visual 2008 + Intel Fortran 调试 SHTOOL2.5
这个程序需要LAPACK以及BLAS的库文件,这两个库文件不需要下在LAPACK的源代码,然后自己生成。可以直接从LAPACK的网站上面下载,网址链接:http://icl.cs.utk.edu/lapack-for-windows/lapack/#running
然后就是创建SHTOOLS的库文件,在其原代码的文件夹中一共有91个文件(77+7+7),这91个文件77个是公用的,然后后面的各7个分成两组,第一组是一般的编译器可以使用的,另外一组是对于大小写敏感的编译器使用的,两者在文件名上的区别是,第二组的文件名的最后面都有一个‘2’。所以在创建这个库文件的时候一定要注意上面的细节,保证这个库里有84个文件。(这个线索可以在scr的文件夹中的makefile文件中看到)
在最后编译程序的时候,比如以恶小amples\SHExpandLSQ为例,把所有三个库文件,主文件,以及一个SHTOOLS.f90的文件放在一起编译,首先编译SHTOOLS.f90,然后再把所有的文件放在一起进行编译。
在运行SHExpandLSQ的时候,还要注意,文件名的语句进行更改:infile = "C:\UNB_software\post\SHTOOLS2.5\SHTOOLS\examples\ExampleDataFiles\Mars2000.shape"
(仅仅把所有的lib文件和f90文件放在一个工程中就可以,更改一下Fortran\Data和Fortran\Diagnostics,Fortran\General,然后不必要更改Linker中的目录)
然后就是创建SHTOOLS的库文件,在其原代码的文件夹中一共有91个文件(77+7+7),这91个文件77个是公用的,然后后面的各7个分成两组,第一组是一般的编译器可以使用的,另外一组是对于大小写敏感的编译器使用的,两者在文件名上的区别是,第二组的文件名的最后面都有一个‘2’。所以在创建这个库文件的时候一定要注意上面的细节,保证这个库里有84个文件。(这个线索可以在scr的文件夹中的makefile文件中看到)
在最后编译程序的时候,比如以恶小amples\SHExpandLSQ为例,把所有三个库文件,主文件,以及一个SHTOOLS.f90的文件放在一起编译,首先编译SHTOOLS.f90,然后再把所有的文件放在一起进行编译。
在运行SHExpandLSQ的时候,还要注意,文件名的语句进行更改:infile = "C:\UNB_software\post\SHTOOLS2.5\SHTOOLS\examples\ExampleDataFiles\Mars2000.shape"
(仅仅把所有的lib文件和f90文件放在一个工程中就可以,更改一下Fortran\Data和Fortran\Diagnostics,Fortran\General,然后不必要更改Linker中的目录)
Friday, October 14, 2011
Compiling .f95/.F95 code with Intel compilers
> From various bits of documentation, it is obvious that the
> Intel compiler will handle F95 and even parts of F03 but I
> seem to be blind as I cannot find how to make the compiler
> recognize .f95/.F95 files as valid fortran files and compile
> them. As I am using my files across compilers and platforms
> I am loath to rename the files to .f90 (though when I did the
> compiler does work). Any suggestions for what compile option
> will make these files (.f95/.F95) files recognized?
In my opinion, the use of .f95 to mean "Fortran 95 source" is misguided.
It is unfortunate that the industry settled on .f90 to mean "free-form
source" as many people mistakenly assumed that this was somehow tied to
the particular variant of the language. Some compilers do recognize
.f95 (and perhaps even now .f03?), but some do not.
For the Intel compiler, the way to do this is:
ifort -Tf filemane.f95 -free
The -Tf tells the ifort driver that the following filename is a Fortran
source file, no matter what the file type. By default, such files are
treated as fixed-form source, so you would then add -free to have it be
recognized as free-form source (assuming that it is.)
My advice is to use the .f90 file type consistently, as it is pretty
much universally implemented.
> Intel compiler will handle F95 and even parts of F03 but I
> seem to be blind as I cannot find how to make the compiler
> recognize .f95/.F95 files as valid fortran files and compile
> them. As I am using my files across compilers and platforms
> I am loath to rename the files to .f90 (though when I did the
> compiler does work). Any suggestions for what compile option
> will make these files (.f95/.F95) files recognized?
In my opinion, the use of .f95 to mean "Fortran 95 source" is misguided.
It is unfortunate that the industry settled on .f90 to mean "free-form
source" as many people mistakenly assumed that this was somehow tied to
the particular variant of the language. Some compilers do recognize
.f95 (and perhaps even now .f03?), but some do not.
For the Intel compiler, the way to do this is:
ifort -Tf filemane.f95 -free
The -Tf tells the ifort driver that the following filename is a Fortran
source file, no matter what the file type. By default, such files are
treated as fixed-form source, so you would then add -free to have it be
recognized as free-form source (assuming that it is.)
My advice is to use the .f90 file type consistently, as it is pretty
much universally implemented.
Friday, October 7, 2011
在使用windows下的Microsoft Studio调试程序时发现问题
原来是在linux下面写的程序,当把这个程序放在windows下面使用Microsoft Studio 2008+Intel Fortran调试的时候,应该注意计数的问题
n=0
n=n+1
在linux下面有时候n=0这个语句是不用写的,因为在整数生成的时候默认情况下就是n=0,但是在Windows下面整数生成时的初始值是一个很大的值,所以如果在linux下面写的程序,有可能忽略的n=0的语句,在windows下面调试的时候一定要把这个语句加上,否则会出现诡异的错误。
比如我在调试电离层模型的时候,在post这个程序中,isc和nobss这两个变量都没有在刚开始的时候赋初值,所以会导致在windows下面运行的时候出现错误。应该在程序的开头加上两个语句:
isc=0
nobss=0
n=0
n=n+1
在linux下面有时候n=0这个语句是不用写的,因为在整数生成的时候默认情况下就是n=0,但是在Windows下面整数生成时的初始值是一个很大的值,所以如果在linux下面写的程序,有可能忽略的n=0的语句,在windows下面调试的时候一定要把这个语句加上,否则会出现诡异的错误。
比如我在调试电离层模型的时候,在post这个程序中,isc和nobss这两个变量都没有在刚开始的时候赋初值,所以会导致在windows下面运行的时候出现错误。应该在程序的开头加上两个语句:
isc=0
nobss=0
Subscribe to:
Posts (Atom)