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)许多次。

Win10下安装Visual Studio2017和Intel Visual Fortran2019具体步骤及初始调试过程。

Win10下安装Visual Studio2017和Intel Visual Fortran2019具体步骤及初始调试过程。

Win10下安装Visual Studio2017和Intel Visual Fortran2019具体步骤及初始调试过程。

先装Visual Studio2017。

安装步骤省略。

(可在网上找到)再装Intel Visual Fortran2019。

由于涉及到版权问题,如果需要链接的可以联系我。

安装步骤如下。

(1)下载之后会有这么几个压缩包。

(2)只需解压其中的Part1即可。

解压之后如下图所示:(3)以管理员身份运行parallel_studio_xe_2019_cluster_edition_setup.exe。

(4)然后会出现一个对话框。

可以直接默认对话框的内容不用改变(安装之后不会影响计算机内存)。

点击Extract。

(5)进入安装界面。

慢慢等待,当出现“选择安装目录和组件”需要选择安装目录(Destination Directory)时,可以自行选择安装目。

其余可以直接默认,点击Next.(6)然后选择接受协议(I consent to the collection of my information )即可。

然后点击Next.(7)选择License注册。

在对话框中选中“License file activation”,然后点击“browse”,选择解压文件中的License。

点击License文件夹之后,里面有好几个License文件,随意选择其中之一即可。

(8)点击OK即可,耐心等待安装,直至完成。

整个过程大概需要40分钟。

安装完成之后,打开Visual Studio2017,新建项目。

写入程序进行调试,会出现如下所示的问题。

为了解决这个问题。

可按照如下步骤进行。

(1)点击如下按钮。

出现如图所示的对话框,按照图中顺序进行设置。

将其换成64位的。

如下图所示:再点击“调试”按钮时,此时会出现如下图所示的情况(无法查找或者打开PDB文件)。

此时,点击“工具”>“选项”。

然后出现一个对话框,选择“调试”>“常规”>选择“启用源服务器支持”。

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 的数组元素之间不能用空格。

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

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

第一种方法: 在Job模块里,创建工作,在Edit Job对话框中选择General选项卡,在User subroutine 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,如果两者都没有,就会报错误信息。

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

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

第一种方法:在Job模块里,创建工作,在Edit Job对话框中选择General选项卡,在User subroutine 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\LocalSettings\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第十四讲-GDB调试

Fortran第十四讲-GDB调试

COMMON语句 用BLOCK DATA初始化COMMON块中的数据 BLOCK DATA initial INTEGER var1,var2 COMMON /mydata/ var1,var2 DATA var1,var2 /1,2/ END BLOCK DATA
四条不必要的子程序特性
另一子程序的返回点 另一入口点 语句函数 将内置函数作为参数传递 语句函数 PAUSE STOP END
注释 有效语句位置 续行
行号
在1-5列
每行程序的最前面
DATA语句的使用 变量初始化: DATA a,b,c /1.0,2*2.0/ 数组初始化: REAL a(2,2) DATA a /1.,2.,3.,4./ !按列优先 旧的PARAMETER 语句: INTEGER SIZE PARAMETER (SIZE=1000)
14.10 显示源代码
GDB 可以打印出所调试程序的源代码,当然,在程 序编译时一定要加上-g的参数,把源程序信息编 译到执行文件中。不然就看不到源程序了。当程 序停下来以后,GDB会报告程序停在了那个文件 的第几行上。你可以用list命令来打印程序的源代 码。 list <linenum> 显示程序第linenum行的周围的源程序。
如果需要调试程序,编译的时候添加-g选项 gfortran –g example.f90 –o example 生成的example.exe文件就是可执行文件 此时,可以输入 gdb example 进入调试程序
14.6 GDB 使用概述


GDB的命令可以输入help查看 输入命令时,可以不用输入完整的命令,只需要 前面几个字母,当然,这前面几个字母应该唯一 区分了该命令 输入一个或多个字母后,连按两次TAB键,可以 列出所有以该字母打头的命令

Fortran的debug与release

Fortran的debug与release

fortran debug模式设置和技巧慧慧转载2010-01-26 16:17:52 阅读152 评论0 字号:大中小订阅CVF中有两种编译(连接、执行)模式:release模式和debug模式。

调试程序时,宜用debug模式;调好后再用release模式,得到高效的执行程序。

设定debug模式:点击菜单Build/Set Active Project Configuration,选*- Win32 Debug,OK,即设定为debug模式。

以debug模式执行:点击“Go (F5)”按钮,或直接按F5键,则执行程序,并在第一个出错语句处停止,在该语句前有一个小黄色箭头。

若程序没错,则一直执行完毕,自动关闭dos窗口。

此时,宜用“!”按钮或“Ctrl+F5”键,执行完成后,dos窗口等待用户关闭。

设置断点:若希望执行时在某一语句处暂停,可将光标置于该语句,点击“手”形状的按钮,或按F9键,则程序执行到该语句时停在该语句处。

单步执行:F10(不进入子过程程序段)或者F11(遇到子过程进入子过程程序段继续单步执行)。

在工具栏上都有相应的按钮。

查看变量值:小黄箭头停在某语句时,按下Variable按钮,显示当前程序段的变量值;对于简单变量,将光标放在该变量上,则即时显示该变量值。

先简单说这么多。

如何用Debug模式获得更多的提示信息依次选择/打开:Project => Settings => Fortran => Compilation Diagnostics建议选中以下各项:Argument Mismatch (类型不一致)Data Alignment (数据排列错位)Uncalled Routines (从无调用的子过程)Undeclared Symbols (未声明变量、过程等)Uninitialized Variables (未赋初始值的变量)Unused Variables (从未用到的变量)Usage (用法)用了这些选项,可以对很多潜在的问题给予警告,使代码更为规范安全。

fortran调试经验

fortran调试经验

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

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

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

不必重头开始检查。

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

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

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

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

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

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

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

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

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

Gfortran 使用说明

Gfortran 使用说明

1、source中未使用外部库链接的,直接执行:gfortran foo.f/f90 -o foo./foo如没有"-o"选项,生成a.out文件,这显然不是我想要的。

:D2、gFortran分两部分:compiler and library。

如果gFortran不是标准安装的,编译source后执行,可能找不到lib,这时可以加入"-static"选项:gfortran -static foo.f/f90 -o foogFortran会将库建在所生成程序内部。

3、FortranSource有77和90两种书写格式,gFortran默认根据后缀进行compile。

如果想自定义,例如foo.f是用90格式写的,可执行:gfortran -ffree-form foo.f -o foo大写的后缀名,gFortran会预执行该程序。

4、多source文件时,先compile不含PROGRAM语句段的source文件,各自生成foo1.o,foo2.o等。

再一起编译。

例如:gfortran -c foo1.f/f90gfortran -c foo2.f/f90gfortran main.f/f90 foo1.o foo2.o -o main5、foo.f95的,加选项"-std=f95",.f2003的,目前支持尚不完整。

顺便说,gFortran unstable版4.3.x将支持pointer。

下面还有一些可能常用到的options。

"-fbounds-check":检查列表序列脚标是否超出"-ffree/ffix-line-length-n":设置最大columns。

77默认:72;90默认:132。

n若设为"0"或"none",则不限有效行数"-fimplicit-none":等同于在f90每段sub中声明"IMPLICIT NONE",且source中implicit语句优先"-fmax-error-n":意义如词义"-fsyntax-only":不编译,只检查语法"-fexternal-blas":使用BLAS库函数,替代gFortran默认的函数感谢9楼。

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

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

第一种方法:在Job模块里,创建工作,在Edit Job对话框中选择General选项卡,在User subroutine 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时,默认的用户子程序后缀名是。

win7-32位系统下abaqus6.9安装intel visual fortran11历程和setenv调用故障的解决

win7-32位系统下abaqus6.9安装intel visual fortran11历程和setenv调用故障的解决

win7-32位系统下abaqus6.9安装intel visual fortran11历程和setenv调用故障的解决2013-04-04 21:52:44| 分类:默认分类| 标签:|字号大中小订阅本人菜鸟一枚。

由于要学习abaqus的子程序使用方法,所以要在电脑上安装ivf(intel visual fortran)才行。

根据网上的教程,我鼓捣了三四天才顺利装上。

其间遇到了一些问题,网上很难找到答案。

为了避免大家再受到相同的折磨,现将安装日志记录如下。

1. 需要的软件。

abaqus的子程序是用fortran语言编写的,要调用必须安装ivf。

但是ivf只有程序编译功能(胡乱解释),需要依靠microsoft visual studio软件进行连接。

所以要首先安装vs(visual studio)。

2.软件版本。

win7-32位系统,abaqus6.9(版本较老,懒得换)。

vs2008中文版(有的网友说中文版的不行,但是我的经历证明是可以的)需要在ivf之前安装,abaqus安装次序无所谓。

ivf11.1.038版本,必须在vs2008之后安装。

3.设置。

网上有两种方法,一种需要改环境变量,另一种不需要,本人较驽钝,选第二种。

打开abaqus安装文件夹C:\SIMULIA\Abaqus\Commands(看自己的安装路径了),找到abq691.bat 文件,右键选择“编辑”。

在原有文字之前加上@call "C:\Program Files\Intel\Compiler\11.1\038\bin\ia32\ifortvars_ia32.bat",包括引号在内哦。

4.开始菜单——〉所有程序——〉abaqus6.9——〉abaqus verification,进行安装验证,完成后会自动生成并打开验证结果文件,各项都是“PASS”,表示安装成功。

5.经验教训。

软件版本不对是不行的。

  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时,就判断为相等成立。

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

相关文档
最新文档