| 查看: 2941 | 回复: 21 | ||||||||
[求助]
FORTRAN 基础知识讲解
|
||||||||
|
1. EXTERNAL 声明外部函数的名称 是不是在整个程序当中都能用?怎么用?在其他子程序中可以直接call吗? 2. INTENT 说明过程哑元的用意 过程哑元 什么是过程哑元? 3. INTRINSIC 声明一个内部函数 只能在这个子程序里面运行? 4. OPTIONAL 允许过程被调用时哑元 过程哑元 什么意思? 5. 在F90中,每个变量名都应该在说明部分中说明其类型,不应该使用隐式说明、为了抑制隐式说明发生作用,应该在程序说明部分开始就写出语句: IMIPLlCIT NONE 既声明不使用隐式说明 什么是隐式说明? 6.程序变量定义的时候这两句话什么意思? TYPE (wavedes) WDES TYPE (latt) LATT_CUR,LATT_INI 7. 另外 INQUIRE(FILE=DIR_APP(1 IR_LEN)//'WAVECAR.'//EXT,EXIST=junk)这个DIR_APP(1 IR_LEN)//'WAVECAR.'//EXT中,'WAVECAR.'两端的东东什么意思?,知道这是个函数,不能明确什么意思。那么在一般情况下,文件名前后加上一些东西是为了什么?8. 程序中常看到。 LATT_INI%A=LATT_CUR%A 这个%是什么运算?还是只是当做变量名中和字母作用一个字符? 9. 程序里面有很多退出的关键字 exit 是退出当前的循环或者判断语句种吗? stop 退出主程序? break 呢? 根据具体情况给分!多答多得! |
» 收录本帖的淘帖专辑推荐
先进材料与分子模拟 | 第一性原理 | 有用的呦 | 基础知识 |
lyl的 | Fortran |
» 猜你喜欢
A期刊撤稿
已经有3人回复
职称评审没过,求安慰
已经有34人回复
垃圾破二本职称评审标准
已经有17人回复
回收溶剂求助
已经有6人回复
投稿Elsevier的Neoplasia杂志,到最后选publishing options时页面空白,不能完成投稿
已经有22人回复
申请26博士
已经有5人回复
EST投稿状态问题
已经有7人回复
毕业后当辅导员了,天天各种学生超烦
已经有4人回复
求助文献
已经有3人回复
投稿返修后收到这样的回复,还有希望吗
已经有8人回复
» 本主题相关价值贴推荐,对您同样有帮助:
中科院国家科学图书馆讲座:专利文献基础知识及检索
已经有85人回复
【求助】药学基础知识
已经有10人回复
【讨论】做(计算流体力学和计算传热学)相关的请进
已经有37人回复

snoopyzhao
至尊木虫 (职业作家)
- 程序强帖: 16
- 应助: 157 (高中生)
- 贵宾: 0.02
- 金币: 18844.7
- 红花: 29
- 帖子: 3803
- 在线: 1422.4小时
- 虫号: 183750
- 注册: 2006-02-13
- 专业: 污染生态化学
【答案】应助回帖
★ ★
贺仪(金币+2): 多谢 2011-10-30 18:43:57
jjdg(金币+1): 感谢参与 2011-10-31 00:51:24
余泽成(金币+1): 辛苦了! 2011-11-02 10:33:58
ben_ladeng: 专家考核存档 2011-11-09 00:17:24
贺仪(金币+2): 多谢 2011-10-30 18:43:57
jjdg(金币+1): 感谢参与 2011-10-31 00:51:24
余泽成(金币+1): 辛苦了! 2011-11-02 10:33:58
ben_ladeng: 专家考核存档 2011-11-09 00:17:24
|
这些都不是标准的 Fortran 语句,你可以去看一些前处理的语法…… 多半是一些跨平台的源代码中才会包括这些吧,至少这类程序不作处理是不能使用 Fortran 的编译器编译的…… 一般使用 Fortran pre-processor 对这类程序进行前处理,如果用 gfortran 的话,那么一般直接加一个 -cpp 选项就可以了…… |
9楼2011-10-30 18:35:54
snoopyzhao
至尊木虫 (职业作家)
- 程序强帖: 16
- 应助: 157 (高中生)
- 贵宾: 0.02
- 金币: 18844.7
- 红花: 29
- 帖子: 3803
- 在线: 1422.4小时
- 虫号: 183750
- 注册: 2006-02-13
- 专业: 污染生态化学
【答案】应助回帖
★
jjdg(金币+1): 感谢参与 2011-10-29 23:02:17
ben_ladeng: 专家考核存档 2011-10-30 07:11:16
贺仪(金币+30): 多谢你的热心帮助! 2011-10-30 09:48:21
jjdg(金币+1): 感谢参与 2011-10-29 23:02:17
ben_ladeng: 专家考核存档 2011-10-30 07:11:16
贺仪(金币+30): 多谢你的热心帮助! 2011-10-30 09:48:21
|
这个不清楚你想表达什么意思?比如我自己写了一个外部函数,叫 sqrt,因为 Fortran 内置了 sqrt,但我希望我的程序用我自己写的这个,这个时候就需要用 external sqrt 来声明。在每个调用该函数的程序/子程序中都应该这样声明。 INTENT 主要是说明函数或者子程度的变量(哑元)是输入变量(in),还是输出变量(out),还是既有输入也有输出(inout)的。所谓的哑元,就是程序后面的那些个变量,比如 subroutine sub (a,b,c) 中的 a, b, c,呵呵……如果是属性是 in,那么表示这个哑元的值不能被改变。如果是 out,表示该程序会输出这个变量,如果是 inout,表明它的值在调用前后会发生变化。 只是表明这个程序是内置的函数,与 external 是对应的…… 如果函数 subroutine sub(a,b,c) 中的 c 是一个 optional 哑元,那么调用这个函数是可以用 call sub(a, b)…… |
2楼2011-10-29 11:59:43
snoopyzhao
至尊木虫 (职业作家)
- 程序强帖: 16
- 应助: 157 (高中生)
- 贵宾: 0.02
- 金币: 18844.7
- 红花: 29
- 帖子: 3803
- 在线: 1422.4小时
- 虫号: 183750
- 注册: 2006-02-13
- 专业: 污染生态化学
【答案】应助回帖
★
jjdg(金币+1): 感谢参与 2011-10-29 23:02:26
ben_ladeng: 专家考核存档 2011-10-30 07:11:22
贺仪(金币+30): 多谢你的热心帮助 2011-10-30 09:48:56
jjdg(金币+1): 感谢参与 2011-10-29 23:02:26
ben_ladeng: 专家考核存档 2011-10-30 07:11:22
贺仪(金币+30): 多谢你的热心帮助 2011-10-30 09:48:56
|
隐式声明是 fortran 的特色,默认情况下,所有以 I、J、K、L、M、N 开头的变量都是整型,所有以这些字母以外字母开头的变量都是实型。如果你希望以 A 开头的也是实型,你可以用 implicit integer (A) 来声明所有以 A 开头的也是整型。除非你显示地声明了变量的类型。 如果使用 implicit none, 那么以上的规则就不再算数了,所有的变量都必须声明。 这应该是较新的 Fortran 才引入的特性,允许自定义数据的类型,因此,上面的两句话声明 WDES 是 wavedes 一类的变量,而 LATT_CUR, LATT_INI 是 latt 一类的变量。 字符串后的 // 表示将 // 前后的两个字符串联接起来。因为在上面这句话中,前后两个都是变量,所以不能直接写成一个字符串(写成字符串后就没有办法获得变的真实取值了,所以用 // 来连接…… 这里的 LATT_INI 应该是一组变量的一个综合体,如: 这里的 D 就相当于你的 LATT_INI,它应该包括了三个变量,即 Day, Month, Year,如果你想对 D 中的 Day 赋值,那就要用 D%Day = 25... exit 表示退出循环 stop 表示停止整个程序的运行,不管是不是在主程序中…… break 不是 Fortran 中的,至少我没有看到过用 break 的…… |
3楼2011-10-29 12:16:13
sinsia
新虫 (小有名气)
- 应助: 4 (幼儿园)
- 金币: 2064.5
- 红花: 2
- 帖子: 130
- 在线: 119.3小时
- 虫号: 855559
- 注册: 2009-09-24
- 性别: MM
- 专业: 流体力学
4楼2011-10-30 10:34:52

5楼2011-10-30 16:19:23
snoopyzhao
至尊木虫 (职业作家)
- 程序强帖: 16
- 应助: 157 (高中生)
- 贵宾: 0.02
- 金币: 18844.7
- 红花: 29
- 帖子: 3803
- 在线: 1422.4小时
- 虫号: 183750
- 注册: 2006-02-13
- 专业: 污染生态化学
6楼2011-10-30 17:39:17
mickk
铁杆木虫 (职业作家)
- 应助: 11 (小学生)
- 金币: 9196.3
- 散金: 1002
- 红花: 3
- 帖子: 4608
- 在线: 643.3小时
- 虫号: 179848
- 注册: 2006-02-09
- 性别: GG
- 专业: 光子与光电子器件
7楼2011-10-30 17:59:20

8楼2011-10-30 18:19:03
xzhdty: 欢迎讨论交流 2011-11-11 18:21:16
|
7. 另外 INQUIRE(FILE=DIR_APP(1IR_LEN)//'WAVECAR.'//EXT,EXIST=junk) 这个DIR_APP(1IR_LEN)//'WAVECAR.'//EXT中,'WAVECAR.'两端的东东什么意思?,知道这是个函数,不能明确什么意思。那么在一般情况下,文件名前后加上一些东西是为了什么? %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 这里的 inquire 是查询文件是否存在的函数,"file="后面的是文件名,因为含有变量和字符串所以用//连接。 |
10楼2011-11-01 12:12:58













IR_LEN)//'WAVECAR.'//EXT,EXIST=junk)
回复此楼
我天天用fortran编程,楼主这么一问,感觉啥也不懂了