fortran调试经验

合集下载

fortran debug案例

fortran debug案例

fortran debug案例
Fortran是一种程序设计语言,其用途广泛,在科学计算和工程领域使用较多。

在编写Fortran程序时,调试是非常重要的,以下是一个Fortran调试的案例。

假设我们有一个Fortran程序,用于计算给定数组的平均值。

然而,当我们运行这个程序时,得到的结果并不正确。

我们需要进行调试来找到问题所在。

首先,我们可以检查程序中的算法。

可以通过在代码中添加打印语句来跟踪程序的执行。

例如,我们可以在计算平均值之前打印出数组的值,以确保数组中的数据正确无误。

其次,我们可以检查数组的大小是否与程序的预期相匹配。

如果数组的大小不正确,程序可能会访问无效的内存位置,导致错误的结果。

在这种情况下,我们需要仔细检查数组的定义和传递给计算平均值函数的参数。

此外,我们还可以使用调试工具来进一步分析程序。

例如,我们可以使用gdb或者Ddt来调试Fortran程序。

这些调试工具可以帮助我们在程序运行时跟踪变量的值,执行代码的流程,并定位错误所在的位置。

最后,一些常见的Fortran调试技巧包括:
1. 使用正确的输出格式打印变量值,以检查其值是否正确。

2. 检查循环和条件语句的逻辑,确保程序按照预期的方式执行。

3. 检查程序中的错误处理机制,例如数组越界或除以零等情况。

总之,Fortran调试是找出程序错误的关键步骤。

通过仔细检查代码逻辑、打印变量值、使用调试工具以及遵循常见的调试技巧,我们可以快速有效地找到问题所在,并修复程序中的错误。

fortran安装调试运行过程中的可能错误及其原因

fortran安装调试运行过程中的可能错误及其原因

fortran安装、调试、运行过程中的【可能错误及其原因】-中英对照楼主鲍炜炜2011-04-18 14:37(欢迎加入气象QQ讨论群:149280902,点击即可加入)安装1.关于Fortran编译器的安装和配置?在安装FEPG之前一般要先安装好Powerstation Fortran 4.0编译器,并设置好Fortran编译器的path、lib 和include路径。

如果你的Powerstation Fortran 4.0编译器安装在目录C:\MSDEV下,设置如下:·在WIN 2000/XP下的设置:a.鼠标移到我的电脑图标,单击右键,然后点击属性;b.点击高级属性;c.点击环境变量,进行系统变量设置;系统变量如下图:d. 如果图上的include、lib、path几个变量没有,请点击新建;如有,点击编辑;按下面变量值进行修改:变量:path值:c:\MSDEV\bin; %path%变量:lib 值:c:\MSDEV\lib;%lib%变量:include值:c:\MSDEV\include;%include%注意:如果path、lib和include变量中有相应新增加的内容,可不增加。

如果编译器装在其它目录,则把C:\MSDEV换为该目录名。

实际上,在安装Powerstation Fortran 4.0时,会出现一个对话框,询问是否增加环境变量,如果选是,这些变量就已经配置好了。

安装fepg,需要用户有管理员权限。

2.运行FEPG命令生成Fortran源程序时,出现fl32不是内部命令也不是外部命令的错误(或fl32 is not internal command)?没配置好Fortran编译器的path路径。

按照上面第1个问题中的解答配置好path路径。

3. 运行FEPG命令生成Fortran源程序时,有些fortran源程序没连接成可执行程序,出现不能发现fepg.lib 库文件的错误?安装FEPG之前,没安装和配置好Fortran编译器所致。

完整word版ABAQUS中Fortran子程序调用方法—自己总结

完整word版ABAQUS中Fortran子程序调用方法—自己总结

第一种方法:在Job模块里,创建工作,在Edit Job对话框中选择General选项卡,在Usersubroutine file中点击Select按钮,从弹出对话框中选择你要调用的子程序文件(后缀为.for或.f)。

第二种方法:1. 建立工作目录?崠2. 将Abaqus安装目录\6.4-pr11\site下的aba_param_dp.inc 或aba_param_sp.inc 拷贝到工作目录,并改名为aba_param.inc;3. 将编译的fortran程序拷贝到工作目录;4.将.obj文件拷贝到工作目录;5. 建立好输入文件.inp;6. 运行abaqus job=inp_name user=fortran name即可。

以下是网上摘录的资料,供参考:用户进行二次开发时,要在命令行窗口执行下面的命令:abaqus job=job_name user=sub_nameABAQUS会把用户的源程序编译成obj文件,然后临时生成一个静态库standardU.lib和动态库standardU.dll,还有其它一些临时文件,而它的主程序(如standard.exe和explicit.exe等)则没有任何改变,由此看来ABAQUS是通过加载上述2个库文件来实现对用户程序的连接,而一旦运行结束则删除所有的临时文件。

这种运行机制与ANSYS、LS-DYNA、marc等都不同。

这些生成的临时文件要到文件夹C:\Documents and Settings\Administrator\Local Settings\Temp\中才能找到,这也是6楼所说的藏了一些工作吧,大家不妨试一下。

1子程序格式(程序后缀是.f; .f90; .for;.obj??)答:我试过,.for格是应该是不可以的,至少6.2和6.3版本应该是不行,其他的没用过,没有发言权。

在Abaqus中,运行abaqus j=jobname user=username时,默认的用户子程序后缀名是.for(.f,.f90应该都不行的,手册上也有讲过),只有在username.for文件没有找到的情况下,才会去搜索username.obj,如果两者都没有,就会报错误信息。

FORTRAN学习中的一些小心得

FORTRAN学习中的一些小心得

FORTRAN 心得第一部分:一些小心得1Fortran不区分大小写2 Fortran有5种基本数据类型,integer,real, character, logical, complex3 fortran fixed format格式中的变量赋初值一般用DATA,因为它不能用::4 real(kind=8) a这种格式只使用于Fortran90,Fortran77中要使用real*8或real(8)5 FORTRAN中FREE与FIXED两种格式do循环的区别:Fortran 95使用end do来结束循环。

Fortran 77使用DO循环要麻烦一点,它不使用END DO来结束循环,而是使用行号来结束循环,程序代码要在DO的后面写清楚这个循环到哪一行程序代码结束。

Fortran 77中,经常会使用CONTINUE这个命令来结束循环。

因为CONTINUE这个命令没有实际的用途,刚好可以拿来做封装使用。

6 循环的流程控制:循环中的cycle命令相当于c++里的continue命令,用于结束一次循环循环中的exit命令好比c里面的break,用于结束循环7 不使用do循环,单纯用GOTO语句也能设计循环程序,但不推荐使用GOTO语句7 fortran有等价声明:即用equivalence(a,b),这样使得a,b使用同一块内存,这样可以节省内存,有时可精简代码。

8 fortran77中只能用单引号。

(还有疑问,因为fixed format能用双引号)9 逻辑运算符== /= > >= < <= !Fortran90用法.EQ. .NE. .GT. GE. .LT. .LE. !Fortran77用法9 PAUSE,CONTINUE,STOPpause 暂停程序执行,按enter可继续执行continue 貌似没什么用处,可用作封装程序的标志STOP 命令用来结束程序,要谨慎使用10 数组元素之间要用逗号分隔,而不能像matlab一样既可以用逗号也可以用空格,fortran 的数组元素之间不能用空格。

fortran编译器操作

fortran编译器操作

fortran编译器操作关于fortran语⾔的编译器使⽤问题此⽂是⼀个简明教程,仅适合初学者来使⽤。

⽼鸟们⼤⽜们就不⽤在看了。

本⽂档的⽬的是为了⽅便初学者快速的掌握基本的fortran编译器的使⽤。

⼀、关于cvf(compaq virtual fortran)CVF操作⽅便,限制不多。

⼀般常⽤的有两种新建⼯程的⽅法:a)打开cvf,点击新建file----new,弹出选择对话框,简单的程序可以选择fortran console application。

在左侧projectname处填写⼯程名字,在location处填写(选择)⼯程保存路径。

注意cvf中要求不允许出现汉语路径。

操作顺序图如下第⼀步:第⼆步:第三步:第四步:运⾏⾄此,所有步骤完成。

b)直接打开cvf,点击新建⽂档(new)然后单击保存,弹出保存对话框,选择保存路径及⽂件夹,⽂件名改为“⼯程名.f90”格式此处注意如果是fortran⾃由格式,请保存为*.f90或*.f95格式,如果是固定格式请保存为*.for或*.f格式。

因为编译器是根据后缀的不同调⽤不同的语⾔编译器,否则将出错。

保存⽂件的路径和⽂件夹即为该⼯程所在的路径和⽂件夹。

同样不能有汉语。

⽰意图如下:第⼀步第⼆步、第三步、⾄此,所有的⼯程完成。

⼆、关于CVF的调试(debug)在相应代码编辑框左侧发灰⾊的竖线部分,⿏标变为反三⾓⽅向的形状时即可右键⿏标,选择insert/remove BreakPoint选项,在代码左侧可以看到⼀个红⾊的标⽰(代码⾏尽量不要设在代码最后。

可以设置到⾃认为可能发⽣错误的地⽅。

或者尽量靠前设置),此时就可以按F5进⼊调试状态。

可以在watch窗⼝查看各个变量,数组的值与内容。

按F11进⾏单步运⾏。

查看错误出处。

具体的更细致的调试,请参看相关⽂献或书籍。

这类书籍不少。

具体操作如下:6三、关于IVF (intel virtual fortran )编译器的使⽤由于ivf 要求⽐较严格,且⾃⾝不带IDE 窗⼝。

ABAQUS中Fortran子程序调用方法—自己总结

ABAQUS中Fortran子程序调用方法—自己总结

第一种方法:在Job模块里,创建工作,在Edit Job对话框中选择General选项卡,在User subroutine file中点击Select按钮,从弹出对话框中选择你要调用的子程序文件(后缀为.for 或.f)。

第二种方法:1. 建立工作目录2. 将Abaqus安装目录\\site下的或拷贝到工作目录,并改名为;3. 将编译的fortran程序拷贝到工作目录;4. 将.obj文件拷贝到工作目录;5. 建立好输入文件.inp;6. 运行abaqus job=inp_name user=fortran name即可。

以下是网上摘录的资料,供参考:用户进行二次开发时,要在命令行窗口执行下面的命令:abaqus job=job_name user=sub_nameABAQUS会把用户的源程序编译成obj文件,然后临时生成一个静态库和动态库,还有其它一些临时文件,而它的主程序(如和等)则没有任何改变,由此看来ABAQUS是通过加载上述2个库文件来实现对用户程序的连接,而一旦运行结束则删除所有的临时文件。

这种运行机制与ANSYS、LS-DYNA、marc等都不同。

这些生成的临时文件要到文件夹C:\Documents and Settings\Administrator\LocalSettings\Temp\中才能找到,这也是6楼所说的藏了一些工作吧,大家不妨试一下。

1 子程序格式(程序后缀是.f; .f90; .for;.obj)答:我试过,.for格是应该是不可以的,至少和版本应该是不行,其他的没用过,没有发言权。

在Abaqus中,运行abaqus j=jobname user=username时,默认的用户子程序后缀名是.for (.f,.f90应该都不行的,手册上也有讲过),只有在文件没有找到的情况下,才会去搜索,如果两者都没有,就会报错误信息。

如果username包括扩展名for或obj,那么就根据各自的扩展名ABAQUS会自动选择进行操作。

fortran

fortran

上机流程之STEP2:编译源程序
具体操作:单击菜单项 Build→Compile 文件名.扩展名或单击
编辑窗口上方的相应工具栏图标即可。 注:如若还未建立项目(或工程)区,则会出现一提示对话框, 询问是否生成项目(工程)工作区,单击“是”,则开始进行编译; 如若已经建立并打开了项目(或工程)区,则直接开始编译源程序。
• 使用上下文相关的帮助 F1 • 其它帮助途径
上机流程之STEP1:编辑源程序
创建Fortran程序:
1、建立新文件:选择菜单项 File→New,进入文件 类型Files选 择对话框,选择固定格式(Fortran Fixed Format Source File)文 件,然后单击“Ok”按钮就可生成一个新的文件,并进入文件编辑 窗口。 2、打开文件:选择菜单项 File→Open 或单击工具栏中的图标, 进入打开文件对话框,在文件名对话框中输入要打开的文件的名 称,或单击浏览窗口中所列出的要编辑的文件,然后单击“打开” 按钮就可进入文件编辑窗口。
在Windows下直接运行 Compaq Fortran V6.5光盘 中的Setup.exe文件,然后按照提示一步一步安装即 可。
3.2 工作方式: 1、可视化开发工作台(Windows) 2、命令行(DF命令)
3.3 启动Compaq Fortran V6.5
•单击开始→程序→ Compaq Visual Fortran6 →Developer Studio
POWER STATION 1.0 到FORTRAN POWER STATION4.0编译器后 将其卖给了DEC公司。
DEC随即推出了DVF5.0(Digital Visual FORTRAN 5.0),
其工作环境与MFC5.0完全一致。接着又推出了DVF 6.0(Digital Visual FORTRAN 6.0,其工作环境与MFC6.0完 全一致。后来,DEC又将其卖给了COMPAQ。

fortran调试技巧

fortran调试技巧

功能强大的vc6调试器(适用于Compaq Fortran Debug)作者:yy2better要成为一位优秀的软件工程师,调试能力必不可缺。

本文将较详细介绍VC6调试器的主要用法。

windows平台的调试器主要分为两大类:1用户模式(user-mode)调试器:它们都基于win32Debugging API,有使用方便的界面,主要用于调试用户模式下的应用程序。

这类调试器包括Visual C++调试器、WinDBG、BoundChecker、Borland C++Builder调试器、NTSD等。

2内核模式(kernel-mode)调试器:内核调试器位于CPU和操作系统之间,一旦启动,操作系统也会中止运行,主要用于调试驱动程序或用户模式调试器不易调试的程序。

这类调试器包括WDEB386、WinDBG和softice等。

其中WinDBG 和softice也可以调试用户模式代码。

国外一位调试高手曾说,他70%调试时间是在用VC++,其余时间是使用WinDBG和softice。

毕竟,调试用户模式代码,VC6调试器的效率是非常高的。

因此,我将首先在本篇介绍VC6调试器的主要用法,其他调试器的用法及一些调试技能在后续文章中阐述。

一位置断点(Location Breakpoint)大家最常用的断点是普通的位置断点,在源程序的某一行按F9就设置了一个位置断点。

但对于很多问题,这种朴素的断点作用有限。

譬如下面这段代码:void CForDebugDlg::OnOK(){for(int i=0;i<1000;i++)//A{int k=i*10-2;//B SendTo(k);//C int tmp=DoSome(i);//D int j=i/ tmp;//E}}执行此函数,程序崩溃于E行,发现此时tmp为0,假设tmp本不应该为0,怎么这个时候为0呢?所以最好能够跟踪此次循环时DoSome函数是如何运行的,但由于是在循环体内,如果在E行设置断点,可能需要按F5(GO)许多次。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FORTRAN调试程序的时候注意的问题
调试程序的时候注意的问题。

程序编好,能够直接运行而且完全正确,基本不可能,这就有调试程序的问题。

主要有一下几个方面:
其一,在每个子程序被调用的时候留个心眼,写个输出语句,表示程序已经运行到了这里。

这样一个小提示会给调试带来巨大的方便,如果程序运行出错,至少你可以知道它是在运行到哪里出的错,这样,直接去检查那个程序就可以了。

不必重头开始检查。

其二,注意对中间计算结果的输出。

有时候,而且是很多的时候,程序编译成功,运行也没有问题,就是结果不对,这肯定是计算原理有问题,此时,输入一些重要步骤的中间结果,往往可以检查出问题所在。

同时,就算查出了问题所在,也可以不删除这段输出中间计算结果的代码,有可能后面还会有用处,此时,在每行输出语句前加一个感叹号,把代码变成注释的绿体字就可以了。

等到再次需要输出的时候,直接删除一个“!”比再写一遍输出代码,当然要简单的多。

其三,对WATCH功能的应用,FORTRAN提供的这个功能很实用,可以查很多问题,尤其是程序中间计算值,这个和上述的中间结果的输出有点相似。

但两者的不同是前者可以进行中间结果的输出控制,就是只有符合了某个条件的才能被输出,这样可以便捷程序的调试,同时对中间结果输出后可以直接用STOP停止程序的运行,这样对于大型程序来说,节省了很多后面继续计算的时间——因为前面的结果已经不对了,后面的算也是白算。

其四,对中间结算结果输出形式的控制,一般来说,FORTRAN计算结果可以输出到文件里面和计算界面两个地方。

对较大的计算结果,可以输出到文件里面,反之较少的结果可以直接输出到屏幕上,为了增强数据的可读性,最好进行有格式的数据输出,以利于相同性质的数据的比较。

输出到屏幕上的结果直接用WRITE(6,*)就可以(无格式),对于输出到文件里面的数据,可以省些事情,直接用WRITE(X,*)就可以,其中X是一个任意的正整数,最好大于10,也不用事先对这个X设备进行说明,程序会将结果输出到一个FORT.X的文件里面,例如10,就是FORT.10,此时,用NOTEPAD或者ULTRA-EDIT都可以把它打开——FORT.10实质上就是一个.DAT的文件,你可以把它重命名。

3.对数据计算时的误差控制。

以前觉得小数点后的误差不是那回事,没有太在意,可经过实战,终于明白了小小的误差完全可以改变整个计算的结果。

因此,如果程序能够输入结果而不正确时,除了寻找算法的问题,不要忽略的误差。

一般认为,FORTRAN的REAL变量小数点后8位数字误差定义已经足够,而事实上,这个精度可能在一些情况下不满足,这个时候,需要用更精确的变量类型——REAL(8),同理,当要判断两个数是否相等的时候,一定要慎用相等判断(.EQ.)这个比较运算符,因为任何数据,别看着在现实中它们一定相等,在程序中就不一定了。

一旦经过了计算,就不可避免的产生了舍入误差,对于整数和有限几位循环的有理数都问题不大,可一旦是一个无理数或者无限循环的小数,只有在判断了小数点后的每一位都相等的时候,程序才判断为相等成立。

这个相等的标准是非常苛刻的,所以一般情况下,可行的方法是将
两个数相减,再取其绝对值,当这个绝对值小于一个预先设定的误差范围ε,比如0.001时,就判断为相等成立。

这样以来,便可避免这个问题。

相关文档
最新文档