当前位置:文档之家› abaqus6.13+vs2012+Intel Fortran 2013 (abaqus6.13中Fortran编译器的配置)

abaqus6.13+vs2012+Intel Fortran 2013 (abaqus6.13中Fortran编译器的配置)

abaqus6.13+vs2012+Intel Fortran 2013 (abaqus6.13中Fortran编译器的配置)
abaqus6.13+vs2012+Intel Fortran 2013 (abaqus6.13中Fortran编译器的配置)

abaqus6.13+vs2012+IntelFortran2013 (abaqus6.13中Fortran编译器的配置)

目前Abaqus的最新版本已经是 6.13-1,Intel Fortran编译器的最新版本也已经到了IntelParallel Studio XE 2013 Fortran Compiler, visual studio的版本也有2012了。

想要在Abaqus里用子程序,必须安装Intel Visual Fortran,而安装Intel Visual Fortran前需要安装Microsoft Visual Studio,做好相关设置后通过Abaqus Verification测试子程序以及其他Abaqus功能是否能正常使用。

一、ABAQUS 与Intel Fortran及Visual Studio的兼容性介绍:

大家知道ABAUQS如果需要用User Subroutine必须有Intel Fortran,而Intel Fortran又必须在Visual Studio的环境下运行。三者之间存在的两两兼容问题,必须引起注意。

目前用的比较多的配搭:

Abaqus 6.9+VS2005+Intel Fortran 9.1/10.0/10.1

Abaqus 6.10/6.11/6.12+VS2008+Intel Fortran 10.1

Abaqus 6.13+VS2012+Intel Fortran XE2013(我所使用的)

二、ABAQUS 、Intel Fortran、Visual Studio的安装顺序及安装方法:

(1)、安装顺序:

step1、安装visual studio(VS)(必须在Intel Fortran XE2013安装之前):

一般而言安装VS没有任何难度,需要注意的一点是对于64位系统需要安装64位支持,而在有些版本中该模块是默认安装中没有选中的。为了避免漏装可以在安装时选择完全安装(complete)。此外,为了避免因为非英文版VS产生的各种不可预料的整合问题,建议使用英文版VS。

step 2、安装intel visual fortran(IVF)。

为了实现IVF和VS的整合(integration to visual studio),step 2需要在step 1之后进行。一般情况下,IVF会在安装时自动检测支持的VS版本并进行整合;对于64位系统同样需要安装64位系统支持,推荐完全安装(For Advanced User)。在VS的help中查看”about Microsoft Visual Studio”,整合成功的话可以在已安装组件列表中找到”Intel(R) Fortran Compiler Integration ”

step 3、安装ABAQUS。

step3 相对前两步相对独立,甚至可以先于1、2进行。

(2)、安装方法及下载地址:

1、Abaqus6.13-1

下载地址:

百度网盘:https://www.doczj.com/doc/be4167586.html,/s/11jTkT

2、visual studio 2012

下载地址:

百度网盘:https://www.doczj.com/doc/be4167586.html,/s/15nF2n

安装方法:

提供Visual Studio 2012 Ultimate旗舰版序列号:

YKCW6-BPFPF-BT8C9-7DCTH-QXGWC

RBCXF-CVBGR-382MK-DFHJ4-C69G8

YQ7PR-QTHDM-HCBCV-9GKGG-TB2TM

点击帮助(help)-注册产品(Register Product)-输入Key就可以了

3、Intel Fortran XE2013

下载地址:

安装方法及注册方法:

a、运行w_fcompxe_novsshell_2013.2.149.exe

b、点击extract,这时运行安装向导

c、在第三步(Activation)中选择Choose alternative activation,点击下一步

d、选择Use a license file

e、选择下载到的lib文件

f、继续安装过程

注:

a、安装Intel Visual Fortran Composer前,请确保已经安装了Microsoft Visual Studio 2008/2010/2012

b、安装过程中没有加以详细说明的步骤,请直接点击下一步。

三、ABAQUS6.13-1、Intel Fortran XE 2013、Visual Studio2012全部安装成功后的关联设置(重点)

(1)Fortran Intel Fortran XE 2013

Intel Fortran Compiler XE 2013的ifortvars.bat批处理文件与10.1有较大的不同,在调用ifortvars.bat时,需要设定两个参数:1-arch;2-vs,第一个参数为系统架构,第二个参数为vs的版本。

格式为: ifortvas.bat [vs]

在我的电脑上,提供两种模式:

对于Visual Studio 2012:

C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files

(x86)\Intel\Composer XE 2013\bin\ipsxe-comp-vars.bat" ia32 vs2012"

C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files

(x86)\Intel\Composer XE 2013\bin\ipsxe-comp-vars.bat" intel64 vs2012"

注:如果是Visual Studio 2010,则为:

C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2013\bin\ipsxe-comp-vars.bat" ia32 vs2010"

C:\Windows\SysWOW64\cmd.exe /E:ON /V:ON /K ""C:\Program Files (x86)\Intel\Composer XE 2013\bin\ipsxe-comp-vars.bat" intel64 vs2010"

上调用方式。如下图:

%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio

11.0\VC\vcvarsall.bat"" x86_arm

%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio

11.0\VC\vcvarsall.bat"" x86_amd64

%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio

11.0\VC\vcvarsall.bat"" amd64

打开:开始所有程序->IntelParallel Studio XE 2013 ->CommandPrompt->Parallel Studio XE with Intel Compiler XE v13.0->{IA-32mode;intel 64 mode; }

如果是64位系统,打开intel 64 mode:

输入:%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio

11.0\VC\vcvarsall.bat"" x86_amd64,然后Enter运行

(3)Abaqus6.13-1的设置

记事本打开批处理文件: abq6131.bat(或者右键编辑)

默认位置为:C:\SIMULIA\Abaqus\Commands\abq6131.bat

将abq6131.bat中的内容由

@echo off

"C:\SIMULIA\Abaqus\6.13-1\code\bin\abq6131.exe" %*

修改为

call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86_amd64 call "C:\Program Files (x86)\Intel\Composer XE 2013\bin\ifortvars.bat" intel64 vs2012

@echo off

"C:\SIMULIA\Abaqus\6.13-1\code\bin\abq6131.exe" %*

打开:开始->所有程序->Abaqus 6.13-1 ->AbaqusVerification

运行AbaqusVerification

查看verify.log文件

Abaqus Product Install Verification...

Subroutine部分:pass,则关联成功

fortran调试经验

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.)这个比较运算符,因为任何数据,别看着在现实中它们一定相等,在程序中就不一定了。一旦经过了计算,就不可避免的产生了舍入误差,对于整数和有限几位循环的有理数都问题不大,可一旦是一个无理数或者无限循环的小数,只有在判断了小数点后的每一位都相等的时候,程序才判断为相等成立。这个相等的标准是非常苛刻的,所以一般情况下,可行的方法是将

fortran常见问题解决

楼主为了减少重复回答问题,特编此帖,并不定期添加和更新内容。 错误难免,欢迎讨论,仅供参考。 很多人问哪里可以找到Fortran编译器,有不少热心学友提供网址,特汇集在这里。虽然俺检验过这些链接,但是它们不一定总有效。 Fortran编译器下载: CVF? FTN95(License:Freeforpersonaluse) 以下操作,如无特别说明,都是以为例。 1.如何加大Stacksize? 选Project=>Settings=>Link=>Category:Output=>? Stackallocations Reserve:这里填新值(默认为1M,若需要10M,则填) 2.如何用Fortran批量生成文件? 设要生成4000个文件,文件名为AA1-AA4000,如何写循环生成文件,而不用写4000次write 命令呢? 用内部文件: character(len=80)::filename,form integer::i doi=1,4000 selectcase(i) case(1:9) write(form,'(i1)')i case(10:99) write(form,'(i2)')i case(100:999) write(form,'(i3)')i case(1000:9999) write(form,'(i4)')i endselect write(filename,*)"AA",trim(form),".TXT" open(10,file=filename) write(10,*)i close(10)

enddo? stop end 3.如何用Fortran动态生成输出格式? 设有一个数组data(100),输出时,希望每行输出num个数,而num由用户输入,如何实现? 用内部文件: character(len=80)::form real::data(100) integer::i,num data=(/(i,i=1,100)/)/ read(*,*)num write(form,*)"(",num,"" write(*,form)data stop end 4.MS是不是很垃圾? 是垃圾,其中Bug太多,多到不可用的地步! 在这个主题里,换了CVF后问题就没了的人已有相当的数目。 如果你用,遇到莫名其妙的错误,建议换,这是一个比较成熟的编译器。 5.如何用F90/95生成随机数? 注意: 现在计算机产生的随机数都是伪随机数。 random_number(x)产生一个0到1之间的随机数(x可以是向量),但是每次总是那几个数。用了random_seed()后,系统根据日期和时间随机地提供种子,使得随机数更随机了。 programrandom implicitnone real::x callrandom_seed()!系统根据日期和时间随机地提供种子 callrandom_number(x)!每次的随机数就都不一样了 write(*,*)x stop endprogramrandom 6.函数/子程序超载的例子

(9)第九章 会计报表

第九章会计报表习题及答案 复习思考题 1、什么是会计报表?编制会计报表的作用是什么? 2、编制会计报表有哪些编制要求? 3、会计报表有哪些种类? 4、资产负债表的格式是怎样的? 5、怎样计算利润总额? 6、资产负债表上的数据从哪里来? 7、利润表上的数据从哪里来? 8、资产负债表上的项目有哪些填列方法? 名词解释 1、资产负债表 2、利润表 3、现金流量表 4、所有者权益变动表 5、会计报表 一、判断题 1、月度会计报表通常应于月度终了后6天内对外提供;季报应于季度终了后15天内对外提供。() 2、资产负债表是反映企业在一定会计期间所拥有的资产、需偿还的债务以及股东(投资者)拥有的净资产情况的报表。() 3、利润表是反映企业在某一特定日期经营成果的报表。() 4、会计报表按照所反映的经济内容不同,可分为个别财务报表和合并财务报表。 () 5、中期会计报表可以不包括所有者权益变动表。() 6、我国采用的是账户式资产负债表。() 7、资产负债表的左方资产项目,按照流动性的小到大排列,流动性越小,变现能力越弱的排列在前;流动性越大,变现能力越强的排列在后。() 8、“长期借款” 项目,应根据“长期借款”、总账账户的期末余额减去所属明细账户中将于一年内(包括一年)到期部分后的金额填列。将于一年内(包括一年)到期的长期借款在“短期借款” 项目中填列。() 9、利润表上的数据来源于损益类账户的本期发生额。()

10、“未分配利润” 项目应根据“利润分配” 账户的期末余额直接填列。() 二、单项选择题 1、按照()分类,可将会计报表分为中期会计报表和年度会计报表。 A所反映的经济内容 B报送对象 C编报期间 D编报主体 2、资产负债表上下列()是根据总账账户的期末余额直接填列。 A存货 B短期借款 C无形资产 D应付账款 3、资产负债表各项目的填列根据主要是()。 A总账的期末余额 B总账和有关明细账的期末余额 C总账的本期发生额 D总账和有关明细账的本期发生额 4、会计报表使用者可以从()中了解到企业在某一特定日期所掌握的经济资源、需偿还的债务、以及股东(投资者)拥有的权益等情况。 A资产负债表 B利润表 C现金流量表 D所有者权益变动表 5、资产负债表中负债的排列顺序是依据()。 A项目的流动性 B项目的收益性 C项目的重要性 D项目的时间性 6、假定某企业未设置“预付账款”和“预收账款”账户,则资产负债表中“应付账款”项目应根据()填列。

fortran基本函数

FORTRAN 90标准函数(一) (2012-07-03 17:14:57) 转载▼ 分类:学习 标签: fortran 函数 教育 符号约定: ●I代表整型;R代表实型;C代表复型;CH代表字符型;S代表字符串;L代表逻辑型;A代表数组;P代表指针;T代表派生类型;AT为任意类型。 ●s:P表示s类型为P类型(任意kind值)。s:P(k)表示s类型为P类型(kind值=k)。 ●[…]表示可选参数。 ●*表示常用函数。

注:三角函数名前有C、D的函数为复数、双精度型函数。 注:指数函数名、平方根函数名、对数函数名前有C、D的函数为复数、双精度型函数。 表4 参数查询函数

atan2函数的值域是多少?我从网上找到一个fortran函数的日志,说此值域是-π~π,但正常反正切函数的值域应该是-π/2~π/2。对atan2函数不够了解,所以不知道你的答案对不对,我个人认为不对。我是用正常的反正切函数atan(v/u)来算的: FORTRAN: if (u>0..and.v>0.) dir=270-atan(v/u)*180/pi if (u<0..and.v>0.) dir=90-atan(v/u)*180/pi if (u<0..and.v<0.) dir=90-atan(v/u)*180/pi if (u>0..and.v<0.) dir=270-atan(v/u)*180/pi if (u==0..and.v>0.) dir=180 if (u==0..and.v<0.) dir=0 if (u>0..and.v==0.) dir=270 if (u<0..and.v==0.) dir=90 if (u==0..and.v==0.) dir=999 其中uv等于零的五种情况要单独挑出来,不然程序会有瑕疵。atan函数换成atand函数的话直接是度数,不用*180/pi 我四个象限和轴都试了,应该没错。 最需要注意的问题,一个是函数值域,另一个是uv矢量方向和风向是反着的,并且风向角度数是从正Y轴开始顺时针算,和三角函数里度数从正X轴开始逆时针算不一样。

Fortran95程序设计课后习题答案(word版方便)

第四章 1.program main implicit none write(*,*) "Have a good time." write(*,*) "That's not bad." write(*,*) '"Mary" isn''t my name.' end program 2.program main real, parameter :: PI=3 implicit none.14159 real radius write(*,*) "请输入半径长" read(*,*) radius write(*,"(' 面积='f8. 3)") radius*radius*PI end program 3.program main implicit none real grades write(*,*) "请输入成绩" read(*,*) grades write(*,"(' 调整后成绩为'f8.3)") SQRT(grades)*10.0 end program 4.integer a,b real ra,rb a=2 b=3 ra=2.0 rb=3.0 write(*,*) b/a ! 输出1, 因为使用整数计算, 小数部分会无条件舍去write(*,*) rb/ra ! 输出1.5 5.p rogram main implicit none type distance real meter, inch, cm end type type(distance) :: d write(*,*) "请输入长度:" read(*,*) d%meter d%cm = d%meter*100 d%inch = d%cm/2.54 write(*,"(f8.3'米='f8.3'厘米='f8.3'英寸')") d%meter, d%cm, d%inch end program 第五章 1.program main implicit none integer money real tax write(*,*) "请输入月收入" read(*,*) money if ( money<1000 ) then tax = 0.03 else if ( money<5000) then tax = 0.1 else tax = 0.15 end if write(*,"(' 税金为'I8)") nint(money*tax) end program 2.program main implicit none integer day character(len=20) :: tv write(*,*) "请输入星期几" read(*,*) day select case(day) case(1,4) tv = "新闻" case(2,5) tv = "电视剧" case(3,6) tv = "卡通" case(7) tv = "电影" case default write(*,*) "错误的输入" stop end select write(*,*) tv end program 3.program main implicit none integer age, money real tax write(*,*) "请输入年龄" read(*,*) age write(*,*) "请输入月收入" read(*,*) money if ( age<50 ) then if ( money<1000 ) then tax = 0.03 else if ( money<5000 )then tax = 0.10 else tax = 0.15 end if else if ( money<1000 ) then tax = 0.5 else if ( money<5000 )then tax = 0.7 else tax = 0.10 end if end if write(*,"(' 税金为'I8)") nint(money*tax) end program 4.program main implicit none integer year, days logical mod_4, mod_100, mod_400 write(*,*) "请输入年份" read(*,*) year mod_4 = ( MOD(year,4) == 0 ) mod_100 = ( MOD(year,100) == 0 ) mod_400 = ( MOD(year,400) == 0 ) if ( (mod_4 .NEQV. mod_100) .or. mod_400 ) then days = 366 else days = 365 end if write(*,"('这一年有'I3'天')") days stop end program 第六章 1.program main implicit none integer i do i=1,5 write(*,*) "Fortran" end do stop end program 2.program main implicit none integer i,sum sum = 0 do i=1,99,2 sum = sum+i end do write(*,*) sum stop end program 3.program main implicit none integer, parameter :: answer = 45 integer, parameter :: max = 5 integer weight, i do i=1,max write(*,*) "请输入体重" read(*,*) weight if ( weight==answer ) exit end do if ( i<=max ) then write(*,*) "猜对了" else write(*,*) "猜错了" end if stop end program 4.program main implicit none integer, parameter :: max=10 integer i real item real ans ans = 1.0 item = 1.0 do i=2,max item = item/real(i) ans = ans+item

fortran课后习题答案

第一章 FORTRAN程序设计基础第15页 1、2 1.简述程序设计的步骤。 “程序设计”:反映了利用计算机解决问题的全过程,通常要经过以下四个基本步骤:(1)分析问题,确定数学模型或方法;(2)设计算法,画出流程图;(3)选择编程工具,编写程序;(4)调试程序,分析输出结果。 2. 什么是算法?它有何特征?如何描述算法? 解决问题的方法和步骤称为算法。 算法的五个特征:(1) 有穷性。 (2) 确定性。 (3) 有效性。 (4) 要有数据输入。(5) 要有结果输出。 算法的描述有许多方法,常用的有:自然语言、一般流程图、N-S图等。 第二章顺序结构程序设计 第29页 1、2、3、4、5、6、7、8、9 1.简述符号常量与变量的区别? 符号常量在程序运行过程中其值不能改变。变量在程序运行过程中其值可以改变。 2. 下列符号中为合法的FORTRAN 90标识符的有哪些? (1) A123B (2) M%10 (3) X_C2 (4) 5YZ (5) X+Y (6) F(X) (7) COS(X) (8) A.2 (9) ‘A’ONE (10) U.S.S.R. (11) min*2 (12) PRINT 3. 下列数据中哪一些是合法的FORTRAN常量? (1) 9,87 (2) .0 (3) 25.82(4) -356231 (5) 3.57*E2 (6) 3.57E2.1 (7) 3.57E+2(8) 3,57E-2 4. 已知A=2,B=3,C=5(REAL);且I=2,J=3(INTEGER),求下列表达式的值: (1) A*B+C 表达式的值: 11 (2) A*(B+C) 表达式的值: 16 (3) B/C*A 表达式的值: 1.2 (4) B/(C*A) 表达式的值: 0.3 (5) A/I/J 表达式的值: 0.33 (6) I/J/A 表达式的值: 0 (7) A*B**I/A**J*2 表达式的值: 4.5 (8) C+(B/A)**3/B*2. 表达式的值: 7.25 (9) A**B**I 表达式的值: 512 5. 将下列数学表达式写成相应的FORTRAN表达式: (1) 1E-2 (2)(-B+SQRT(B*B-4*A*C)/(2*A) (3) 1+X+X*X/2+X**3/2/3 (4) COS(ATAN((A**3+B**3)**(1.0/3)/(C*C+1))) (5) EXP(A*X**2+B*X+C) (6) COS(X*Y/SQRT(X*X+Y*Y))**3 6. 用FORTRAN语句完成下列操作: (1) 将变量I的值增加1。I=I+1 (2) I的立方加上J,并将结果保存到I中。 I=I**3+J (3) 将E和F中大者存储到G中。G=Max(E,F) (4) 将两位自然数N的个位与十位互换,得到一个新的数存储到M中(不考虑个位为0的情况) M=MOD(N,10)*10+N/10 第三章选择结构程序设计第43页 1、2、3、5、6、7、9 1.分析下列程序运行结果 (1) LOGICAL P INTEGER I,I1,I2,I3 P=.FALSE. READ*,I I1=MOD(I,10) I2=MOD(I/10,10) I3=I/100

(9)第九章 会计报表

(9)第九章会计报表

第九章会计报表习题及答案 复习思考题 1、什么是会计报表?编制会计报表的作用是什么? 2、编制会计报表有哪些编制要求? 3、会计报表有哪些种类? 4、资产负债表的格式是怎样的? 5、怎样计算利润总额? 6、资产负债表上的数据从哪里来? 7、利润表上的数据从哪里来? 8、资产负债表上的项目有哪些填列方法? 名词解释 1、资产负债表 2、利润表 3、现金流量表 4、所有者权益变动表 5、会计报表 一、判断题 1、月度会计报表通常应于月度终了后6天内对外提供;季报应于季度终了后15天内对外提供。() 2、资产负债表是反映企业在一定会计期间所拥有的资产、需偿还的债务以及股东(投资者)拥有的净资产情况的报表。() 3、利润表是反映企业在某一特定日期经营成果的报表。() 4、会计报表按照所反映的经济内容不同,可分为个别财务报表和合并财务报表。 () 5、中期会计报表可以不包括所有者权益变动表。() 6、我国采用的是账户式资产负债表。() 7、资产负债表的左方资产项目,按照流动性的小到大排列,流动性越小,变现能力越弱的排列在前;流动性越大,变现能力越强的排列在后。() 8、“长期借款” 项目,应根据“长期借款”、总账账户的期末余额减去所属明细账户中将于一年内(包括一年)到期部分后的金额填列。将于一年内(包括一年)到期的长期借款在“短期借款” 项目中填列。() 9、利润表上的数据来源于损益类账户的本期发生额。() 10、“未分配利润” 项目应根据“利润分配” 账户的期末余额直接填列。() 二、单项选择题 1、按照()分类,可将会计报表分为中期会计报表和年度会计报表。 A所反映的经济内容 B报送对象 C编报期间

fortran常见错误

FAQ之常见错误 2014-02-02 13:45:35 来源:Fcode研讨团队评论:2点击:4419 本文从编译错误,链接错误,运行时错误,计算结果错误等四个方面介绍了常见的错误及解决思路。适合初学者阅读。 首先应该明确:错误有哪几种?我们当前遇到的是何种错误? 阐述这些问题前,我们先讨论一下常规的应用程序开发的过程: 1>>编写代码,使用一个或多个源代码文件。 2>>对第一步的每一个源代码文件执行编译操作。得到一个或若干个目标代码。 3>>将目标代码,运行时库(Run-time Library)和其他使用到的函数库链接起来。得到一个可执行文件(EXE 或其他) 4>>编写程序的说明书,必要的(输入)数据文件 5>>将上述得到的结果发布给用户。(发布的方式可以是刻录成光盘,销售,放在网站上供别人下载,或者其他) 6>>用户得到程序后,运行,输入数据,得到计算结果。 对于很多 Fortran 程序员来说,可能用户就是自己,也可能仅仅是自己教研室的同事同学。所以第4,5,6步骤很多时候不明显。而如果使用集成开发环境(IDE)进行开发,第1,2,3步骤又可以一键完成。因此,很多初学者就认为,写程序就是:输入代码,运行,得到结果。这样的理解太狭义。 不管我们面对什么使用者来写代码,程序开发应该是上述的过程。我们的编译器,编译环境,也是为这个过程而设计的。 于是,我们将错误分为四种: 一. 编译错误(发生在第2步) 编译错误,一般是源代码书写格式不正确,不符合语法要求。 二. 链接错误(发生在第3步) 链接错误,一般是源代码结构不完整,运行时库或函数库使用不合理。 三. 运行时错误(发生在第6步) 运行时错误,一般是执行代码时,遇到了事先未料及的错误。比如内存不足了,磁盘空间不够了,输入文件格式不对了,输出文件写入失败了等等。 四. 计算结果不符合预期(程序代码不规范,或不符合你的设想) 计算结果不符合预期,可能性就很多了。语法与你的想法不一致,超出函数库的适用范围,执行流程控制不当等等。 这四种错误,其排查难度依次增大。也就是,编译错误最容易排查和修改,而计算结果不正确,最让人头疼。

计算机技术基础(Fortran)试题库

一、选择题 1、下列关于"SUBROUTINE MAP(X,Y)"语句行的叙述中,不正确的是( ) A) 这是子程序的第一个语句B) 字符串"MAP"是子程序名 C) 变量X是子程序的形参D) 子程序执行后,MAP将返回整型数据 2、FORTRAN表达式"2/4+"的值是( ) A) B) 1 C) D) 0 3、阅读下列FORTRAN程序: PI=3. WRITE(*,' ')PI END 程序运行后输出结果是( ) A) B) 3.1415 C) D) 4、圆的直径存放在整型变量K之中,下列计算圆面积的表达式中正确的是( ) A) *K*K/4 B) *(K*K/4) C) *(K/2)**2 D) *(K/2)*(K/2) 5、要判断"月收入M在2000元以上(含2000元)且5000元以下)不含5000元)"的职工,应该使用的逻辑表达式是( ) A) M .GE. 2000 .AND. M .LE. 5000 B) M .GE. 2000 .OR. M .LE. 5000 C) M .GE. 2000 .AND. M .LT. 5000 D) M .GE. 2000 .OR. M .LT. 5000 6、设FORTRAN子程序如下: SUBROUTINE SUB(I,X) B=I+1 X=X+B END 若主程序中的变量M,B已按I-N规则赋值,则调用上述子程序的语句中正确的是( ) A) CALL SUB(M,M) B) CALL SUB(M+4,B) C) CALL SUB(B,B) D) CALL SUB(M,B+4) 7、下列不是FORTRAN常量的是( ) A) , B) +00 C) 2/3 D) 'Very good!' 8、阅读下列FORTRAN程序: F= DO 20 K=3, 7, 3 DO 20 L=K-1, K

fortran中批处理实现

********************************************* fortran中批处理命令的实现函数: 利用systemqq命令(需要调用DFLIB 数据库) ********************************************* 例1: USE DFLIB character*100 CMD LOGICAL(4) res CMD="dir/a-d/b/s "//trim(fPath)//" >"//trim(outPut) res=SYSTEMQQ(CMD) 例2: USE DFLIB LOGICAL(4) result result = SYSTEMQQ('copy e:\dir.txt e:\test\dir.txt') !将e:\dir.txt 复制到e:\test\dir.txt文件中。!****************实例3:复制文件************************* 例3: programmain_pro USE DFLIB implicit none integer,parameter::sta_num=123 character(5),dimension(sta_num)::sta_ID character(500)::filein,fileout character(5000)::cmd logical(4)::judge

integer::status,is open(1,file='山东.txt',status='old',action='read',iostat=status) read(1,*) do is=1,sta_num read(1,*) sta_ID(is) filein='Z:\data\降水逐小时数据-戴至修\precip_data\'//sta_ID(is)//'_precip.txt' open(2,file= filein,status='old',action='read',iostat=status) if(status/=0) goto 1000 fileout='Z:\data\降水逐小时数据-戴至修\山东省-降水数据\'//sta_ID(is)//'_precip.txt' cmd='copy '//filein//' '//fileout judge=SYSTEMQQ( cmd) 1000 continue enddo end program

计算机程序设计语言(FORTRAN语言)

计算机程序设计语言(FORTRAN语言) 1. 编译程序能将高级语言编写的源程序转换成。 A.解释程序 B.汇编程序 C.映象程序 D.目标程序 答案:D 2. 一个完整的FORTRAN源程序。 A.至少包括一个主程序 B.至少包括一个主程序和一个子程序 C.由一个主程序与一个以上的子程序组成 D.由一个主程序与一个子程序组成 答案:A 3. 语句函数定义语句在程序内合法的位置是。 A.在程序块开头语句之后,END语句之前 B.在程序块开头语句之后,可执行语句之前 C.在说明语句之后,END语句之前 D.在说明语句之后,可执行语句之前 答案:D 4. 下列关于函数子程序虚实参数的错误说法是。 A.可以没有形参数 B.虚实结合的数组长度可以不同

C.实参表与虚参表类型可以不同 D.函数名可以作为虚参 答案:C 5. 下列叙述中正确的是。 A.FORTRAN程序块中,无名公用语句只能有一个 B.FORTRAN子程序中,至少应有一个RETURN语句 C.FORTRAN程序块中,最后一行必须是END语句 D.FORTRAN程序块中,必须有变量说明语句 答案:C 6. 运行下面的程序时得不到所需的结果,其主要原因是。 INTEGER X(11) DATA X/9,8,7,6,5,4,3,2,1,0,-1/ DO 10 1=1,X(1) ,-1 WRITE(*,*)1.0/SQRT(25.0-REAL(X(1) )* * 2) 10 CONTINUE END A.没有给X(11) 赋初值 B.发生除以零的情况 C.发生负数开平方的情况 D.循环参数设置错误 答案:D 7. 下列数据中,不符合FORTRAN常量表示法的是。 A.-25.6 B.2.758D3

fortran问题

imsl7.0中用use linear_operators这句话是会出错的,当时intel论坛上也有人问,后来intel 给出了个X64 imsl的补丁,但是32位的没有。 要使用包含在linear_operators这个库中的函数时,要用use+原函数 例如:上面那个例子把use linear_operators改成use operation_xt即可 另外,imsl7.0引用函数和以前版本不一样的 补充一点: linear_operators这个文件是这样子的(一看就知道原因了): modulelinear_operators usecond_int usedet_int usediag_int usediagonals_int usefft_int useifft_int useeye_int uselin_eig_self_int uselin_sol_self_int usenorm_int useoperation_i useoperation_ix useoperation_t useoperation_h useoperation_tx useoperation_hx useoperation_x useoperation_xi useoperation_xt useoperation_xh useorth_int userand_int userank_int usesvd_int useunit_int useeig_int usechol_int useisnan_int end module 1. 如何加大Stack size? 选Project => Settings => Link => Category: Output =>

Fortran基本用法小结档

Fortran基本用法小结 目录: 一、说明 二、概述 三、数据类型及基本输入输出 四、流程控制 五、循环 六、数组 七、函数 八、文件 一、说明 本文多数内容是我读彭国伦《Fortran 95 程序设计》的笔记。只读到第九章,主要是3~9章,都是些最基本的用法(原书共16章)。这里主要摘录了我看书过程中总结的一些Fortran和C不同的地方,主要是语法方面。希望这份笔记能够给学过C但没有接触过Fortran的同学带去一些帮助。要想弄得更清楚些,推荐看一下原书,觉得作者真的写得很好,很清楚;如果有C语言的基础,看完前九章应该很快的,花一两天就行了。觉得如果耐心看完本文,基本功能应该也可以顺利用起来了。 另外,由于我之前没有用过Fortran,这次为了赶文档看书又看得很粗浅,大多数东西看过之后都没来得及仔细想,只是按着作者的意思去理解。所以这份笔记还处于纸上谈兵的层次。如果有不妥的地方,希望大家指正。谢谢! 文中蓝色的部分是程序代码,!后面的内容为注释。 二、概述 1、名词解释 Fortran=Formula Translator/Translation 一看就知道有什么特色了:可以把接近数学语言的文本翻译成机械语言。的确,从一开始,IBM设计它的时候就是为了方便数值计算和科学数据处理。设计强大的数组操作就是为了实现这一目标。Fortran奠定了高级语言发展的基础。现在Fortran在科研和机械方面应用很广。 2、Fortran的主要版本及差别 按其发展历史,Fortran编译器的版本其实很多。现在在广泛使用的是Fortran 77和Fortran90。Fortran 90在Fortran 77基础上添加了不少使用的功能,并且改良了77编程的版面格式,所以编程时推荐使用90。鉴于很多现成的程序只有77版本,有必要知道77的一些基本常识,至少保证能够看懂77程序。以下是77和90的一些格式上的区别。

Fortran 运行中给出的系统错误及解决方法

. Fortran 运行中给出的系统错误及解决方法 以下均为linker tools errors and warnings Linker Tools Error LNK1000 unknown error; consult documentation for technical support options Note the circumstances of the error, try to isolate the problem and create a reproducible test case, then contact technical support. Linker Tools Error LNK1101 incorrect MSPDBxx.DLL version; recheck installation of this product The version of MSPDBxx.DLL available on your system does not match the version required by this tool. Linker Tools Error LNK1102 out of memory There was not enough memory for the tool to run. Probably the paging file exceeded available disk space. If a shortage of disk space is not the cause, note the circumstances of the error, try to isolate the problem and create a reproducible test case, then request technical support. Linker Tools Error LNK1103 debugging information corrupt; recompile module Probably the compilation was terminated before a valid object file was created.Recompile the given object file. If recompiling does not correct the problem,note the circumstances of the error, try to isolate the problem and create a reproducible test case, then consult technical support. Linker Tools Error LNK1104 cannot open file "filename" The tool could not open the given file. One of the following may be a cause: l There was not enough disk space. l The file does not exist. l The filename or its path was incorrectly specified. l The specified drive is invalid. l The file does not have the appropriate permissions. l The path for filename expands to more than 260 characters. l If the given file is named LNKn, which is a filename generated by the linker for a temporary file, then the directory specified in the TMP environment variable may not exist, or more than one directory is specified for the TMP environment variable. (Only one directory path should be specified for the TMP environment variable.) l If the error occurs on the executable filename, an earlier version of the executable may still be running. You will need to terminate the executable before linking it. In Windows NT (including Windows 2000) or Windows 95,you can use the utility PVIEW to look for and kill instances of the application. l If the error message occurs for a library name, and you recently ported the .MAK file from a previous Microsoft Visual C++ development

第九章 会计报表

第九章会计报表 一、名词解释 1.会计报表2.资产负债表3.利润表 二、填空题 1.会计报表按照所反映的经济内容不同,分为________、________和________。 2.会计报表按照编报时间不同分为________、________、__ ______。 3.编制会计报表应做到________、________、________、___ _____。 4.资产负债表左边的________与右边的___ _________________应平衡。 三、判断正误 1.资产负债表是以“资产=负债+所有者权益”的平衡式为依据的。() 2.企业的利润总额反映的是企业一定时期实现的营业利润。() 3.企业的资产负债表是一张需要按年编制的报表。() 4.资产负债表是反映企业某一特定日期财务状况的报表。() 5.《现金流量表》中的“现金”指库存现金以及可以随时用于支付的存款。() 6.企业主管部门审核报表时发现问题应在报表上及时进行纠正。() 7.我国企业损益表一般采用多步报告式结构。() 8.企业的年报即决算报表。() 9.现金流量主要指企业现金流入量。() 10.会计报表的使用人主要是企业内部管理部门。() 四、单项选择题 1.资产负债表是反映企业在()财务状况的报表。 A.某一特定时期B.某一特定会计期间C.一定时间D.某一特定日期 2.根据“资产=负债+所有者权益”填列的会计报表是()。 A.主营业务收支表B.损益表C.资产负债表D.现金流量表 3.根据“收入-费用=利润”填列的会计报表是()。 A.利润分配表B.资产负债表C.现金流量表D.损益表 4.现金流量表是综合反映企业()流动资金来源和运用及其增减变动情况的会计报表。 A.月末B.一定会计期间C.年内D.季末 5.月度报表应在月份终了后()日报出。 A.3 B.5 C.3-5 D.3-6 6.下列报表属于成本报表的是()。A.损益表B.利润表C.管理费用表D.利润分配表

Fortran中批量处理文件的方法总结

Fortran中批量处理文件的方法总结 —循环读取目录下的所有符合条件的文件 一、简单的介绍 在一年之前,我写过一个程序,主要是对Micaps资料进行批量处理,将逐日资料处理为旬、月的数据,在那个程序中,始终有一个问题困扰我,就是如何自动生成该读取的下一个文件名,这使我真正开始关注fortran中的批处理,时隔一年,决定写下这些文字,将我用到的一些fortran批处理的方法和大家共享,交流。 对于那些只要会用程序,不求其中原理的朋友,请马上跳过这些文字,直接去下载附件吧!程序里有使用说明,但是,如果你不懂原理,估计现成的程序你使用起来也会碰壁哦! 这里所说的批处理是指对某一个目录下的指定后缀的文件的批量读取和处理。 我总结的批处理方法大概可以用下面这个示意图来说明: | | |将文件目录写入一个文本文件,供fortran循环读取 |————手动输入文件名 |————运行程序之前命令行工具导出文件名 |————程序运行后,未开始计算之前,生成文件名 | ————调用CMD命令生成 | ————GETFILEINFOQQ方法生成 | ————调用WIN32API生成 | |在程序运行时动态生成文件名 | | 对于第一种方法,我将主要介绍如何将目录写入文件,然后举出一个小的示例来验证。第二种方法主要是说明其思路。 二、方法的介绍 1、将文件目录写入一个文本文件,供fortran循环读取

1.1、手动输入文件名 这是最基本的方法啦,如果文件个数不多,而且文件名中包含了空格等特殊字符的话,建议使用这种方法,在这里就不多说啦,至于在fortran中的处理,等几个小方法介绍完之后会有一个例子来说明。 1.2、运行程序之前命令行工具导出文件名 这是一个既高效又保险的方法,主要思路就是通过强大的CMD命令列出目录下的文件到一个指定的文件中,然后由fortran去循环读取该文件中的文件名信息,从而批量处理。 a、从运行工具打开你的CMD窗口; b、转到要处理的当前目录(可省略):CD /d 路径,如: CD /d e:\test 这样可以快速到达e:\test目录 c、使用DIR命令列出文件目录信息到指定的文件,通常使用的 Dir *.*>新文件名这个命令在这里已经不能满足要求,因为会列出一堆对于我们处理而言无用的信息,现在要使用的命令是: DIR /b filter>newfile 注意,其中的filter为文件筛选,必须自己修改为所需的,比如你可以把它改成*.txt,这样,就会列出当前目录下的所有txt结尾的文件了。 Newfile就是你需要存放文件名的那个文件,比如可以是 dir.txt,这样就成了 dir /b*.txt>dir.txt,就会把当前目录下的所有文件都列出到dir.txt文件中,当然,由于dir.txt也在当前目录,所以也会被算进去,这在处理的时候是需要注意的,下面几种方法中同样考虑了这个问题。你可以选择手动删掉,或者把dir.txt这个文件存到其他地方去,或者,不要和你需要的文件具有相同的后缀也行,比如:dir /b *.txt>e:\dir.txt (假设当前目录是e:\test) 如果省略了第二步中的转到当前目录的话,就需要在dir命令后输入完整的路径了,而且新生成的文件也要选择有权限建立新文件的地方存放,比如你在c:\users目录下输入:dir /b e:\test\*.txt>e:\dir.txt,这个命令和上面先转到e:\test目录下的效果是一样的。 现在你是不是比较好奇,/b 是干嘛的,其实就是只列出文件名,不要其他的附件信息,比如创建时间,文件大小等等这些对于我们批处理无关的信息。 如果你想包含某个目录下的子目录,那么,就可以这样写: Dir /b/s filter>newfile /s就表示包含子目录,但是,这样会有一个问题,那就是,批处理的时候必须获得正确的路径才能操作,这样得到的子目录里面的文件不会有任何标志说

相关主题
文本预览
相关文档 最新文档