Fortran Coder

查看: 20952|回复: 6
打印 上一主题 下一主题

[求助] unexpected junk after else statement at

[复制链接]

10

帖子

4

主题

0

精华

入门

F 币
65 元
贡献
31 点
跳转到指定楼层
楼主
发表于 2019-11-13 19:56:04 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
[Fortran] 纯文本查看 复制代码
01MODULE MOD_FUNC
02 
03! module contains functions for P and S-wave velocities, density and
04! quality factors in sediments (1st layer)
05 
06IMPLICIT NONE
07 
08CONTAINS
09!==================== 1D INHOMOGENEOUS MEDIUM =========================
10!------------------------------------------------- P or S-wave velocity
11  FUNCTION FUNCV (Z)
12 
13    USE NRTYPE, ONLY: WP
14 
15    REAL(WP), INTENT(IN) :: Z
16    REAL(WP)             :: FUNCV
17 
18    if (z<5) then
19      !layer
20      funcv = 180
21    else if(5<=z<18) then
22      !layer
23      funcv = 200
24    else if(18<=z<54) then
25      !layer
26      funcv = 360
27    else if(54<=z<92) then
28      !layer
29      funcv = 400
30    else if(92<=z<130) then
31      !layer
32      funcv = 440
33    else if(130<=z<165) then
34      !layer
35      funcv = 460
36 
37    else
38      !halfspace
39      funcv = 970
40    end if
41 
42  END FUNCTION FUNCV
43 
44!--------------------------------------------------------------- Density
45  FUNCTION FUNCRHO (Z)
46 
47    USE NRTYPE, ONLY: WP
48 
49    REAL(WP), INTENT(IN) :: Z
50    REAL(WP)             :: FUNCRHO
51 
52 
53    if(z<5) then
54      !layer
55      funcrho = 1220
56    else if(5<=z<18) then
57      !layer
58      funcrho = 1487
59    else if(18<=z<54) then
60      !layer
61      funcrho = 1945
62    else if(54<=z<92) then
63      !layer
64      funcrho = 1966
65    else if(92<=z<130) then
66      !layer
67      funcrho = 1966
68    else if(130<=z<165) then
69      !layer
70      funcrho = 1966
71    else
72      !halfspace
73      funcrho = 2123
74    end if
75 
76  END FUNCTION FUNCRHO
77 
78!------------------------------------------- P or S-wave quality factor
79  FUNCTION FUNCQ (Z)
80 
81    USE NRTYPE, ONLY: WP
82 
83    REAL(WP), INTENT(IN) :: Z
84    REAL(WP)             :: FUNCQ
85 
86    if(z<165) then
87      !layer
88      funcq = 50
89    else
90      !halfspace
91      funcq = 10000
92    end if
93  END FUNCTION FUNCQ
94 
95END MODULE

这是代码,运行后出现图片的错误,unexpected junk after else statement

2019-11-13 19-02-53 的屏幕截图.png (69.85 KB, 下载次数: 427)

出现这种错误

出现这种错误
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

2038

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1676 元
贡献
715 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

沙发
发表于 2019-11-14 08:46:52 | 只看该作者
130<=z .and. z<165

2038

帖子

12

主题

5

精华

论坛跑堂

臭石头雪球

F 币
1676 元
贡献
715 点

美女勋章热心勋章星光勋章新人勋章贡献勋章管理勋章帅哥勋章爱心勋章规矩勋章元老勋章水王勋章

板凳
发表于 2019-11-14 09:01:23 | 只看该作者
其实你的函数可以简化一下。
[Fortran] 纯文本查看 复制代码
01FUNCTION FUNCRHO (Z)
02  USE NRTYPE, ONLY: WP
03  REAL(WP), INTENT(IN) :: Z
04  REAL(WP)             :: FUNCRHO
05  Real(WP) , parameter :: zList(*) = [-huge(z),5._WP,18._WP,54._WP,92._WP,130._WP,165._WP,huge(z)]
06  Real(WP) , parameter :: fList(*) = [1220._WP,1487._WP,1945._WP,1966._WP,1966._WP,1966._WP,2123._WP]
07  integer :: i
08  Do i = 1 , size(zList)-1
09    if( zList(i) <= z .and. z < zList(i+1) ) then
10      funcRho = fList(i)
11      return
12    end if
13  End Do   
14END FUNCTION FUNCRHO


这样更易读、易修改、易扩展

250

帖子

2

主题

0

精华

宗师

F 币
1731 元
贡献
872 点

规矩勋章

地板
发表于 2019-11-14 09:02:23 | 只看该作者
5<=z<18
这是新的写法吗?可以编译成功但是结果不对。

10

帖子

4

主题

0

精华

入门

F 币
65 元
贡献
31 点
5#
 楼主| 发表于 2019-11-14 15:44:58 | 只看该作者
fcode 发表于 2019-11-14 09:01
其实你的函数可以简化一下。
[mw_shl_code=fortran,true]  FUNCTION FUNCRHO (Z)
    USE NRTYPE, ONLY: WP ...

谢谢了。改了就对了

955

帖子

0

主题

0

精华

大师

F 币
188 元
贡献
77 点

规矩勋章元老勋章新人勋章水王勋章热心勋章

QQ
6#
发表于 2019-11-14 19:38:36 | 只看该作者
本帖最后由 vvt 于 2019-11-14 19:40 编辑

5<=z<18
等效于
(5<=z)<18
那么

情况1:
如果 5<=z 是 .true.
而.true. 一般在内存里是 0x01 或 0x0001 之类,或者 0xFF 之类的
.true. < 18 等效于 1<18 或 -1<18,结果是 .true.

情况2:
如果 5<=z 是 .false
而.false. 一般在内存里是 0x00 或 0x0000 之类的
.false. < 18 等效于 0<18,结果也是 .true.

所以,不管怎样,这个表达式的结果都是 .true.


250

帖子

2

主题

0

精华

宗师

F 币
1731 元
贡献
872 点

规矩勋章

7#
发表于 2019-11-15 09:21:23 | 只看该作者

明白了,谢谢
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2025-5-2 15:32

Powered by Discuz! X3.4

© 2013-2025 Comsenz Inc.

快速回复 返回顶部 返回列表