Fortran Coder

标题: 这段一直提醒语法错误,想请帮忙看一下 [打印本页]

作者: 沧海    时间: 2019-9-17 10:28
标题: 这段一直提醒语法错误,想请帮忙看一下
kk=0
do ii=1,60
do jj=2,61         
!射线向右 判断射线与边界有几条交点
           if ((pointx(ii)>xm .and. pointxx(jj)>xm) .or. (pointx(ii)>xm .and. pointxx(jj)<xm) .or. (pointx(ii)<xm .and. pointxx(jj)>xm)) then
              if (pointy(ii)>=ym .and. pointyy(jj)<ym) .or. (pointy(ii)<=ym .and. pointyy(jj)>ym) then
                 if (MOD(kk+1,2.)/=0.) then
                 kk=kk+1
                 ux(i,j,k)=0.
                 uy(i,j,k)=0.
                 uz(i,j,k)=0.
                 ep1(i,j,k)=1.
                 end if
              end if
           end if
    stop
end do
end do
return


一直提示语法错误,错误提示在截图上
请帮忙看一下,谢谢了






作者: 胡文刚    时间: 2019-9-17 12:00
if (pointy(ii)>=ym .and. pointyy(jj)<ym) .or. (pointy(ii)<=ym .and. pointyy(jj)>ym) then
更改为
if ((pointy(ii)>=ym .and. pointyy(jj)<ym) .or. (pointy(ii)<=ym .and. pointyy(jj)>ym)) then
作者: 沧海    时间: 2019-9-17 14:52
胡文刚 发表于 2019-9-17 12:00
if (pointy(ii)>=ym .and. pointyy(jj)=ym .and. pointyy(jj)

这个改了,可是上边那一句
if ((pointx(ii)>xm .and. pointxx(jj)>xm) .or. (pointx(ii)>xm .and. pointxx(jj)<xm) .or. (pointx(ii)<xm .and. pointxx(jj)>xm)) then
还是会提示出错  还是开始同要的错误,您在帮忙看一下 ,谢谢了

作者: 沧海    时间: 2019-9-17 15:39
有没有人帮忙看一下
作者: 胡文刚    时间: 2019-9-17 16:12
续个行吧
或者编译时加选项
-ffree-line-length-none
作者: 沧海    时间: 2019-9-17 16:16
胡文刚 发表于 2019-9-17 16:12
续个行吧
或者编译时加选项
-ffree-line-length-none

您好,什么意思啊。不明白

作者: 胡文刚    时间: 2019-9-17 20:58
额,额,哪儿不明白?
作者: 沧海    时间: 2019-9-18 09:51
胡文刚 发表于 2019-9-17 20:58
额,额,哪儿不明白?

您说的续行或者编译时加选项
作者: 沧海    时间: 2019-9-18 10:00
胡文刚 发表于 2019-9-17 20:58
额,额,哪儿不明白?

明白了  出来了 加了一个续行符,非常感谢
作者: 胡文刚    时间: 2019-9-18 11:06
你编译时的命令,后面那些:
-O3
-funroll-loops
-ftree-vectorize
-fcray-pointer
-cpp
都是编译选项呀。
现在,你可以增加一个选项
-ffree-line-length-none
这样,你就不需要续行了。
作者: 沧海    时间: 2019-9-18 17:28
胡文刚 发表于 2019-9-18 11:06
你编译时的命令,后面那些:
-O3
-funroll-loops

您好,我是刚接触fortran,怎么增加选项啊
作者: fcode    时间: 2019-9-18 17:36
你是怎么编译的?
如果用的 makefile,需要编辑一下这个文件。
作者: 沧海    时间: 2019-9-18 22:06
fcode 发表于 2019-9-18 17:36
你是怎么编译的?
如果用的 makefile,需要编辑一下这个文件。

就是用的Makefile, Makefile.f90 (2.33 KB, 下载次数: 4) 因为Makefile文件不支持上传我就改成了.f格式了,这个怎么加,我找了百度都是一些解释编译选项是干啥的,没有怎么加,我这是改别人的代码,自己是一个新手,帮忙解释一下谢谢了。

作者: 胡文刚    时间: 2019-9-19 08:17
第43行
OPTFC = -O3 -funroll-loops -ftree-vectorize -fcray-pointer -cpp
改成
OPTFC = -O3 -funroll-loops -ftree-vectorize -fcray-pointer -cpp -ffree-line-length-none
作者: 沧海    时间: 2019-9-24 09:06
胡文刚 发表于 2019-9-19 08:17
第43行
OPTFC = -O3 -funroll-loops -ftree-vectorize -fcray-pointer -cpp
改成

非常感谢
作者: 沧海    时间: 2019-9-24 09:44
胡文刚 发表于 2019-9-19 08:17
第43行
OPTFC = -O3 -funroll-loops -ftree-vectorize -fcray-pointer -cpp
改成

您好我想在问一下,如果是单个程序想加编译选项的时候(没有Makefile文件)应该怎么加呢?是不是直接加到程序中就像图一这样(去掉注释符) 程序的说明是图二 您在帮忙看一下谢谢了。

作者: 胡文刚    时间: 2019-9-24 12:09
你在源代码里写编译选项,是没用的。(如果不是注释,还会报错)
对于编译选项,每个编译器会有区别。同一款编译器的windows版和linux版可能也有差异。
你需要查阅编译器的帮助文档。

对于你提到的这几个选项,在windows上的VS里,可以这样设置:
项目菜单,属性。
-assume byterecl :   展开 Fortran,在Data分类里找到:Use Bytes as RECL= Unit for Unformatted files ,设置为 Yes
-mcmodel :   在 windows 上没有对应选项,无需设置
-shared-intel  :  在 windows 上没有对应选项,无需设置
作者: 沧海    时间: 2019-9-25 10:29
胡文刚 发表于 2019-9-24 12:09
你在源代码里写编译选项,是没用的。(如果不是注释,还会报错)
对于编译选项,每个编译器会有区别。同一 ...

您好,我使用的是linux系统gfortran编译器,我想问一下这些编译选项怎么加 这些知识点在哪找,我直接百度搜都搜不到,我想学习一下。还是这些编译器的帮助文档里面有说明?




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2