Fortran编程中的常见问题

Fortran编程中的常见问题
Fortran编程中的常见问题

Fortran常见问题汇总

1. 如何加大Stack size?

选Project => Settings => Link => Category: Output =>

Stack allocations

Reserve: 这里填新值(默认为1M,若需要10M,则填10000000)

2. 如何用Fortran批量生成文件?

设要生成4000个文件,文件名为AA1-AA4000,如何写循环生成文件,而不用写4000次write命令呢?

用内部文件:

character(len=80) :: filename,form

integer :: i

do i=1,4000

select case (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

end select

write(filename,*) "AA",trim(form),".TXT"

open(10,file=filename)

write(10,*) i

close(10)

end do

stop

end

3. 如何用Fortran动态生成输出格式?

设有一个数组data(100),输出时,希望每行输出num个数,而num由用户输入,如何实现?

用内部文件:

character(len=80) :: form

real :: data(100)

integer :: i,num

data = (/ (i,i=1,100) /)/10.0

read(*,*) num

write(form,*) "(",num,"f10.3)"

write(*,form) data

stop

end

4. MS POWERSTATION4.0是不是很垃圾?

POWERSTATION4.0是垃圾,其中Bug太多,多到不可用的地步!

在这个主题里,换了CVF后问题就没了的人已有相当的数目。

如果你用POWERSTATION4.0,遇到莫名其妙的错误,建议换CVF6.6,这是一个比较成熟的编译器。

5. 如何用F90/95生成随机数?

注意:

现在计算机产生的随机数都是伪随机数。

random_number(x) 产生一个0到1之间的随机数(x可以是向量),但是每次总是那几个数。

用了random_seed ()后,系统根据日期和时间随机地提供种子,使得随机数更随机了。program random

implicit none

real :: x

call random_seed () ! 系统根据日期和时间随机地提供种子

call random_number (x) ! 每次的随机数就都不一样了

write(*,*) x

stop

end program random

6. 函数/子程序超载的例子

设要编一个两个变量值互换的子程序swap(a,b),哑元a,b可能是实型数,整型数,数组,矩阵,字符串,派生类型等等。但是希望只用一个子程序接口swap(a,b)来实现。F90可以用类属接口来实现这种子程序超载:

module Utilities

implicit none

private I_Swap,R_Swap,RVec_Swap,RMat_Swap,Type_Swap

public :: Swap

interface Swap

module procedure I_Swap,R_Swap,RVec_Swap,RMat_Swap,Type_Swap end interface

contains

subroutine i_swap (a,b) ! 整型置换

integer (ikind),intent(in out) :: a,b

integer (ikind) :: t

。。。 ! 略

end subroutine i_swap

subroutine r_swap (a,b) ! 实型置换

real (rkind), intent(in out) :: a,b

real (rkind) :: t

t = a

a = b

b = t

return

end subroutine r_swap

subroutine RVec_swap (a,b) ! 实型向量置换

real (rkind), intent(in out) :: a(:),b(:)

integer (ikind) :: i

do i=1, size(a)

call R_Swap (a(i),b(i))

end do

return

end subroutine RVec_swap

subroutine RMat_swap (a,b) ! 实型矩阵置换

。。。 ! 略

end subroutine RMat_swap

subroutine Type_swap (a,b) ! 派生类型置换

。。。 ! 略

end subroutine Type_swap

end module Utilities

7. 如何在CVF中为多行代码加注释?

见:https://www.360docs.net/doc/c09370224.html,/club/showbbs.asp?id=124318

8. 推荐好的代码风格

根据F90子集语言ELF90和F的要求整理(部分)。

“强迫用”的语言特性:

+ F90的自由格式的源代码。

+ implicit none。

+ 子过程的哑元都要有intent属性。

+ 函数子程序的哑元必须指定为intent(in)。

+ 所有子程序和函数都放在模块(module)中,然后引用(use)该模块;或者放在program 中。

+ 数组哑元要求是假定形状的,或者有固定的维数和大小。字符哑元要求是假定长度的。+ 对于recursive function(递归函数)语句,必须有result子句。

+ 在所有派生类型(type)的定义语句中,必须用双冒号分隔符(::)。

+ 主程序要求有program语句。

+ 在程序单元的end语句中要求后跟程序单元的类型和名称。

+ 在end type语句中要求后跟类型的名称。

+ end program前必须有stop语句以表示停止执行。

+ 子过程中必须有return语句,以表示返回。

+ subroutine s( )并且call s( ),即必须有括号。

“不得用”的语言特性:

- allocatable、intent、pointer、save、dimension、parameter和target语句形式。

(用属性形式代替。)

- external语句形式。(用显式的接口代替。)

- assign、赋值go to、交错return、continue、entry、和计算go to 语句。

- include文件。(用模块代替。)

- data和block data。(在类型声明语句中进行初始化或赋值。)

- common块。(将全局数据放在模块中,用模块代替。)

- equivalence。(被认为是许多难以查找的编程错误的来源。)

- double precision语句。(用real语句声明双精度的实型数。)

- 语句函数。(用内部函数代替。)

- 专用固有函数。(用类属函数代替。)

- 假定大小数组。(用假定形状数组代替。)

- do n (其中n为语句标号)。(用do和end do代替。)

- 非整数do变量和表达式。

- 同一行上多条语句。

- 逻辑型case表达式。

- 从if块外面分支到end if。

- where语句形式。(用where结构形式。)

- 在open和inquire语句中的blank= 说明符。

- 双字关键词之间要求有空格:in out,go to。不能写为inout,goto。

9. 将字符串改为大写的子程序

subroutine UpCase (str)

!=========================================

! change to upper case

!=========================================

character(len=*),intent(in out) :: str

integer(4) :: icha,LL,icval

integer(4),parameter :: diff = ichar('a') - ichar('A')

LL = len_trim(str)

do icha=1,LL

icval = ichar(str(icha:icha))

if (icval>=ichar('a') .and. icval<=ichar('z')) then

str(icha:icha) = char(icval-diff)

end if

end do

return

end subroutine UpCase

10. CVF中源代码信息浏览

默认情况下,代码信息浏览是失效的(Go to Definition/Reference都不起作用),你可以将其启用:

1. Project/Settings/Fortran, 选中Generate Source Browse Information。

2. 选BrowseInfo卡页,选中Build Browse info file,点击OK。

3. Build程序。代码浏览器仅当成功Build程序后才可应用。

4. Tools/Source Browser。

5. 在Browse对话框底部,找到Case sensitive复选框。Fortran是大小写不敏感的语言,去除Case sensitive的选中。点击OK。

6. 现在可以用Browse对话框来浏览函数调用关系以及变量声明和引用关系。

7. 光标置于一个变量名或函数名中,鼠标右键:Go to Definition使光标跳到该变量声明或函数定义语句;Go to Reference使光标跳到该变量的引用或函数引用语句。

注:(Addison提供)

IVF中现在不适用,因为此技术是属于MS的,不是INTEL的,所以,intel正在与MS就有关问题进行磋商,目前的进展比较顺利,可能要在9.1以后的版本中支持,目前还没有时间表。

***以上操作,如无特别说明,都是以CVF6.6为例。

2010-11-26

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

华测静态数据处理流程

静态数据处理 一.静态测量的准备工作(简单介绍) (2) 二.数据下载: (3) 安装主机USB驱动: (3) 打开下载软件hcloader: (3) 输入测站信息: (3) 下载数据: (3) 三.数据处理操作过程 (4) 软件安装: (4) 安装软件狗驱动: (4) 数据处理过程 (4) 文件>新建项目 导入观测数据 查看,设置坐标系 基线处理 网平差 成果报告 附C、D、E 级GPS测量手簿记录格式 (6)

一.静态测量的准备工作(简单介绍) 在室内选点的时候要注意控制网的网形:正三角形是最好的网形(如上图),特长或特短边的出现(如下图)都会使误差增大。 在野外勘测时,尽量选择周围无遮挡、无高压线、无强电磁干扰的地方进行定点,观测,这样不仅可以保证精度,也可以减少内业处理的很多麻烦。 在外业测量时,切换到静态后,要查看数据记录指示灯(黄灯)是否有规律闪烁(间隔5秒),否则重新启动接收机,重新切换到静态。 外业观测时记录数据要全面(仪器号、点号、开机时间、关机时间、仪器高、等)。 已知控制点 未知待定点

二.数据下载: 安装主机USB驱动: 当第一次使用主机USB下载数据时,电脑会提示发现硬件,出现驱动程序安装向导, 选择驱动的保存路径(默认在COMP SS的安装路径下有`river/USB),点“下一步”即可完成安装; 打开下载软仦hcloader: 开始>娋序>华测静态处理>文件下载,点击即可。 设置连接端口:connection>settings>com选择USB、band rate选115200。 列表框里就会显示主机里有的文件(如果没有可以点击Update,稍等即可): 输入测站信息: 根据野外记录输入测站名(不超过4个字符,一般为?下端的4位仪器号)、时段(在同一点上不同时间观测的数据,目的是区别文件名)、天线高(野外实地所量测的仪器高,一般为仪器的斜高),选择文件类型(一般默认),确认即可。 下载数据: 选择需要下载的数据文件(可多选),右击鼠标数据导出,数据自动导出到之前指定的下载路径中。 下载完毕关闭软件即可。

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.函数/子程序超载的例子

华测常见问题解决办法

华测常见问题解决办法 一、蓝牙问题:手簿显示打开端口失败 1、点击配置——手簿端口配置——配置,查看蓝牙是否打开。 2、点击配置——手簿端口配置,查看连接类似是否是蓝牙,端口是否是COM8 或者是COM9,再点击确定就能连上。 3、手簿和移动站的距离太远了,手簿靠近移动站2米内的距离,点击配置—— 手簿端口配置——确定。 4、通过以上操作还是显示打开端口失败的话,就把移动站主机关机开机下,等 待10秒后,点击配置——手簿端口配置——确定,就可以连上蓝牙了。 5、通过关机开机还是显示打开端口失败的话,开机查看是否显示所有灯都同时 闪3次,然后红色灯是否单独闪3次,如果是红色灯有闪3次表示蓝牙启动起来;否则蓝牙未启动起来。蓝牙未启动情况,请拨打技术电话联系厂家技术员。 二、仪器的问题:手簿一直显示正在搜星。 1、点击仪器——仪器接收机复位下,稍等会便可以固定了。 2、把仪器关机开机下,稍等会便可以固定了。 3、如果以上操作还是不行,请联系厂家技术员。 三、点校正的问题:点校正里面找不到所测量的GPS点。 1、在配置——移动站参数——移动站选项里,把使用VRS打上勾,便可以在点 校正里找到所测量的GPS点。 六、点校正计算后,水平残差和垂直残差超出误差范围,水平残差很大。(水平 残差大于0.02,垂直残差大于0.03) 1、检查坐标系统和中央子午线是否输错,一般坐标系统用北京54或西安80, 福建这边中央子午线(宁德,福州,莆田的中央子午线是120,南平,三明,龙岩的中央子午线输117,厦门输118.30),关于工程设计资料上都有提供的,请翻阅查看。 2、检查输入的已知点坐标是否正确。 3、检查实际测量的GPS点是否正确,会不会在实地测量测错了。 4、检查点校正时,是否不小心把对应的点对应错了,已知点和测量的GPS点要 一一对应起来。 点校正时的注意事项: 1、已知点最好要分布在整个作业区域的边缘,能控制整个区域,并避免短边控制长边。例如,如果用四个点做点校正的话,那么测量作业的区域最好在这四个点连成的四边形内部; 2、一定要避免已知点的线形分布。例如,如果用三个已知点进行点校正,这三

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

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步) 运行时错误,一般是执行代码时,遇到了事先未料及的错误。比如内存不足了,磁盘空间不够了,输入文件格式不对了,输出文件写入失败了等等。 四. 计算结果不符合预期(程序代码不规范,或不符合你的设想) 计算结果不符合预期,可能性就很多了。语法与你的想法不一致,超出函数库的适用范围,执行流程控制不当等等。 这四种错误,其排查难度依次增大。也就是,编译错误最容易排查和修改,而计算结果不正确,最让人头疼。

华测静态数据处理流程

静态数据处理 一.静态测量得准备工作(简单介绍) ............................................................................................... 2 二.数据下载: (3) 安装主机USB 驱动: ................................................................................................................ 3 打开下载软件hcloader: ........................................................................................................... 3 输入测站信息:.......................................................................................................................... 3 下载数据: ................................................................................................................................. 3 三.数据处理操作过程 . (4) 软件安装: ................................................................................................................................. 4 安装软件狗驱动:...................................................................................................................... 4 数据处理过程 (4) 文件>新建项目 导入观测数据 查瞧,设置坐标系 基线处理 网平差 成果报告 附 C 、D 、E 级GPS 测量手簿记录格式 (6) 一.静态测量得准备工作(简单介绍) (如上图),特长或特短边得出现(如下图)都会使误差增大。 在野外勘测时,尽量选择周围无遮挡、无高压线、无强电磁干扰得地方进行定点,观测,这样不仅可以保证精度,也可以减少内业处理得很多麻烦。 在外业测量时,切换到静态后,要查瞧数据记录指示灯(黄灯)就是否有规律闪烁(间隔5秒),否则重新启动接收机,重新切换到静态。 已知控制点 未知待定点

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问题

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 =>

华测静态数据处理流程.

静态数据处理 一.静态测量的准备工作(简单介绍 (2) 二.数据下载: ............................................................................................................... 3 安装主机 USB 驱动:................................................................................................ 3 打开下载软件 hcloader : ........................................................................................... 3 输入测站信息: ........................................................................................................ 3 下载数据: ............................................................................................................... 3 三.数据处理操作过程 ..................................................................................................... 4 软件安 装: ............................................................................................................... 4 安装软件狗驱动:..................................................................................................... 4 数据处理过 程 ............................................................................................................ 4文件 >新建项目 导入观测数据 查看,设置坐标系 基线处理 网平差 成果报告 附 C 、 D 、 E 级 GPS 测量手簿记录格 式 (6) 一.静态测量的准备工作(简单介绍

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.快速入门 1.1 新建任务 执行【开始】→【所有程序】→【华测静态处理专业版】→【主程序】→【COMPASS 静态处理专业版】,启动本软件 图1 新建项目 选择【文件】→【新建项目】进入项目设置窗口。选择 GPS观测数据所在目录作为项目文件存放的路径,右上方的输入新项目名自动取文件夹名(可更改),选择坐标系如“北京-54”,新项目路径中显示的是现有项目路径,创建完成新项目的创建工作。 图2 任务设置 系统将在数据文件所在目录下创建如“Res”,“Mov”,“Rinex”等目录,存放解算结果文件,以及空白的项目:

图3 空白项目 1.2 导入数据 图4 导入数据 项目建完后,需要加载 GPS 数据观测文件。选择【文件】→【导入】,在弹出的对话框中选择需要加载的数据类型,确定进入文件选择对话框: 图5 选择 HCN 数据

选择 *.HCN 文件(可同时按“CTRL”或“SHIFT”键进行多选),单击打开,将数据文件导入。 图6 录入数据后的窗口 当数据加载完成后,系统会显示所有的 GPS 基线向量,各条基线的相关信息暂时为空。同时,综合网图会显示整个 GPS 网的情况。 1.3 处理基线 图7 处理全部基线

单击【静态基线】→【处理全部基线】,系统将采用默认的基线处理设置,处理 所有的基线向量。 图8 基线处理过程 处理过程中,显示整个基线处理过程的进度。从中也可以看出每条基线的处理情 况。 图9 基线解算后的结果 基线解算的时间由基线的数目、基线观测时间的长短、基线处理设置的情况,以及计算机的速度决定。处理全部基线向量后,基线列表窗口中会列出所有基线解的情况,网图中原来未解算的基线也由原来的浅色改变为深色。

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就表示包含子目录,但是,这样会有一个问题,那就是,批处理的时候必须获得正确的路径才能操作,这样得到的子目录里面的文件不会有任何标志说

华测RTK常见问题

华测GPS常见问题 普遍问题 流动站长时间不固定 在流动站长时间不固定的时候,检查一下周围的环境和当时卫星的数量及其分布情况: 1.首先确定基准站架设在视野开阔和空旷的地方,其次观察一下流动站所处位置周围的环境,视野是否开阔,有无树木和房屋的遮挡,如有遮挡尽量离的远一些,保证接收机能够接收到足够的卫星进行差分解算; 2.查看一下流动站接收机接收到的卫星的数量,如果少于5颗的话,就无法进行RTK的测量;如果有5颗以上的卫星但是卫星的分布不是很均匀的话,也就是说几乎所有的卫星都分布在天空的一侧,这样卫星的PDOP值就会很大,也无法进行RTK测量。解决这种情况的方法就是提前看好星历预报,尽量避开每天卫星分布不好的时段工作; 3.尽量把流动站接收机的电台接收天线对着基准站方向,在6公里以上的地方对电台信号的接收有一定的作用; 4.电台模式作业时,对于基准站的,发射天线的架设要离主机的架设得远一些,一般要求3米以上。 5.电台模式下作业,尽量把电台的发射功率降低一些,一般在5-10瓦左右即可。 RTK的作业距离和精度的关系 RTK接收机10km里内为窄带解(精度一般为几毫米,最好可在1毫米左右);10km以上为宽带解,精度稍差;不论用什么传输方式,RTK测量不可超过30km。请根据需要决定基站和流动站间的距离。 每次工作以前建议检查所有电缆

很多的问题都是因为电缆及其接头的连接断开所致,每次工作以前建议检查所有电缆都能正常工作 接收机或手簿不能开机或无法正常工作 如遇到接收机或手簿不能开机或无法正常工作的情况,先检查一下电池是否有电;虽然这个一个小的问题,但很容易被忽略。 GPS接收机常见问题 接收机差分一会就不差分了 当接收机差分一会就不差分了的时候,最大可能是波特率的关系。其中有一个版本的软件,用蓝牙连接和用串口连接的波特率不一样。当用蓝牙连接后,在没有重新开关机的情况下用串口线连接就会造成这样的问题 不能正常读写频率和正常接收无线电,卫星灯也不闪烁,但当切换到静态模式,卫星灯又正常 不能正常读写频率,也不能正常接收无线电, 卫星灯也不闪烁,但当切换到静态模式.卫星灯又正常.这是因为电台信息丢失,只要按住切换键开机再写频即可. 流动站接收机开机后电台信号闪几下就不闪 流动站接收机开机后电台信号闪几下就不闪,一般认为是不能正常接收到电台信号,其实是把流动站设置过基站,只要复位即可. 不记录静态数据 当不记录静态数据的时候: 1. 确定接收机已切换成静态数据记录;

华测检测发展之路的启示

华测检测发展之路的启示 以华测检测发展的成功案例为切入点进行深入的分析与总结,为计量检定机构改革、事业单位的转型发展方向提出一些思考。 标签:华测检测计量检定改革市场需求 深圳市华测检测技术股份有限公司(以下简称“华测检测”)是国内一家第三方检测服务机构,上市公司,主要工作是为多种行业和产品提供一站式的全面质量解决方案,提升自身产品品质,保证企业综合竞争实力。其所涉及的领域十分广泛,主要包括消费品、工业品、生命科学和贸易保障等方面的技术检测。在全国各地拥有30余家分支机构,旗下实验室囊括了电磁类、物理类、化学类、机械类等多领域,这些实验室均得到了CNAS国家合格评定委员会和检查机构的认可,并且取得了CMA计量认证,同时遵从国际ISO17025 、ISO17020的统一管理。 1 计量检定机构及华测检测的发展历程 1.1 计量检定机构计量发展已有五千年的历史,新中国成立后,我国政府高度重视计量工作,基本建立了一个包含法律法规、行政管理和技术保障的计量体系。计量行政管理以国家质检总局和省、地(市)、县三级质量技术监督局为主,负责组织《计量法》的实施,行政授权的法定计量技术检定机构承担着包括科学计量、法制计量、工程计量三方面的任务。 1.2 华测检测2002年经过修订的《中华人民共和国进出口商品检验法》明确指出,获取国家合法商检部门认证的检测机构可以接受国外检验检测机构或对外贸易关系人的合法委托,对所出口的商品进行质量检测。从此,检测行业由国家一统的局面被打破,民营资本正式涌入检测行业。据不完全统计,2002年以后,检测行业逐渐成为服务业中前景最好、发展速度最快的一支。在公开资料统计中可以看出,民营和外资的第三方检测机构以平均每年28%的增长势头发展,2013年第三方检测市场规模超过550亿元。而华测检测的成功之处就在于能够把握住市场动向,及时搭上了政府体制改革的顺风车,成为第三方检测机构发展的“领头羊”。一是市场导向与技术导向结合,通过初期在市场的“高举高打”取得一定的市场成功后,便及时地设立研究院进行前沿领域的研究,开展检验检测等以技术为导向的业务;二是利益相关方的整合,和政府共建测试平台、实行内部持股的激励措施、使客户多了检测渠道的选择,形成利益相关方共赢的局面;三是宏观经济环境所要求,华测投入大量的资金使检测能力与资质能够及时地做到与时俱进,赢得更多的生存和发展的空间,强者恒强。 2 两种检测体制的对比 2.1 体制的对比2003年以前,法定计量检测机构伴随着国家计划经济,长期在各个行业履职检测职能,为国民生产提供量值传递、保障量值准确发挥了有

fluent常见错误汇总 (1)

Fluent 计算错误汇总 1. .fluent 不能显示图像 在运行fluent 时,导入case 后,检查完grid ,在显示grid 时,总是出现这样的错误 Error message from graphics function Update_Display: Unable to Set OpenGL Rendering Context Error: FLUENT received a fatal signal (SEGMENTATION VIOLATION). Error Object: () 解决办法解决办法:: 右键单击快捷方式,把目标由x:fluent.incntbinntx86fluent.exe 改成: x:fluent.incntbinntx86fluent.exe 2d -driver msw 如果还有三维的,可以再建立一个快捷方式改成: x:fluent.incntbinntx86fluent.exe 3d -driver msw 这就可以直接调用了。如果不是以上原因引起的话,也有可能是和别的软件冲突,如MATLAB 等,这也会使fluent 无法显示图像。 Q1:GAMBIT 安装后无法运行,出错信息是“unable find Exceed X Server” A. GAMBIT 需要装EXCEED 才能用。 gambit 的运行:先运行命令提示符,输入gambit,回车 fluent 的运行:直接在开始-程序-Fluent Inc 里面 Q2:Fluent 安装后无法运行,出错信息是“unable find/open license.dat" A. FLUENT 和GAMBIT 需要把相应license.dat 文件拷贝到FLUENT.INC/license 目录下 Q3:出错信息:运行gambit 时提示找不到gambit 文件? A. FLUENT 和GAMBIT 推荐使用默认安装设置, 安装完GAMBIT 请设置环境变量, 设置办法“开始-程序-FLUENT INC-Set Environment" 另外设置完环境变量需要重启一下,否则仍会提示找不到环境变量。 Q4:使用Fluent 和Gambit 需要注意什么问题? A. 安装好FLUENT 和GAMBIT 最好设置一下用户默认路径 推荐设置办法,在非系统分区建一个目录,如d:\users a) win2k 用户在控制面板-用户和密码-高级-高级,在使用fluent 用户的配置文件 修改本地路径为d:\users,重起到该用户运行命令提示符,检查用户路径是否修改 b) xp 用户,把命令提示符发送到桌面快捷方式,右键单击命令提示符快捷方式 在快捷方式-起始位置加入D:\users,重起检查

相关文档
最新文档