计算化学公社

 找回密码 Forget password
 注册 Register
Views: 5029|回复 Reply: 13
打印 Print 上一主题 Last thread 下一主题 Next thread

[Fortran] 关于FORTRAN77写的代码求助

[复制链接 Copy URL]

58

帖子

0

威望

414

eV
积分
472

Level 3 能力者

跳转到指定楼层 Go to specific reply
楼主
由于本人是从fortran95开始学习的,对于fortran的很多语句标号不清楚,无法了解下面代码的执行流程,想请教一下论坛的大神能否解释下流程
该流程是用于一组平衡组分热力学计算时赋初值代码,B(I,J)-化学矩阵,ACF(J)-化学式的下标:如CaHbOcNd,ACF(1)=a,ACF(2)=b... L-化学式中含有元素种类;x(J)-组分初值 ;LP1,vvv,z-中间变量,I,J-循环变量
PROGRAM main
......
        vvv=1.0
21   vvv=vvv*2.0
      DO 23  J=1,L
      Z=ACF(J)
     DO  22  I=LP1,N
     x(I)=1.3/vvv
22  Z=Z-B(I,J)*x(I)
      x(J)=Z
     IF(x(J))   21,21,23  ------此句话if语句后面的语句标号是什么意思,如果满足if条件,是跳出循环,还是继续循环?不懂这个写法,感觉像个递归过程。
23 continue
    前人写的代码,很不规范,goto满天飞,变量也不做解释,书写的代码很难看懂,需要能看懂人解释一下!不胜感激

353

帖子

0

威望

2029

eV
积分
2382

Level 5 (御坂)

真 掘墓者

2#
发表于 Post on 2017-12-1 12:04:35 | 只看该作者 Only view this author
Arithmetic IF Statement
满足IF条件,执行label编号21,21,23
圣诞刨坟忙

5万

帖子

99

威望

5万

eV
积分
112496

管理员

公社社长

3#
发表于 Post on 2017-12-1 12:48:24 | 只看该作者 Only view this author
IF(x(J))   21,21,23
意思是X(J)<0就goto 21,等于0也goto 21,>0就goto 23

评分 Rate

参与人数
Participants 1
eV +5 收起 理由
Reason
杜黎小松 + 5 谢谢

查看全部评分 View all ratings

北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

58

帖子

0

威望

414

eV
积分
472

Level 3 能力者

4#
 楼主 Author| 发表于 Post on 2017-12-1 14:33:58 | 只看该作者 Only view this author
sobereva 发表于 2017-12-1 12:48
IF(x(J))   21,21,23
意思是X(J)0就goto 23

谢谢sob老师,终于明白了,原来跟C++的3目运算符有相似的地方。这下所有的流程就解释通了。

58

帖子

0

威望

414

eV
积分
472

Level 3 能力者

5#
 楼主 Author| 发表于 Post on 2017-12-19 19:44:51 | 只看该作者 Only view this author
sobereva 发表于 2017-12-1 12:48
IF(x(J))   21,21,23
意思是X(J)0就goto 23

sob老师,还想问你一个问题,就不发新帖占用空间了,
最近开发一个软件,老板要求有可视化界面,于是想到用MFC,而源程序用FORTRAN写好了,便将fortran代码打包为dll文件,供MFC调用,可是出现了如下问题:在我的编译的电脑上整个程序调用fortran的dll没问题,但是一将程序换到另外一个电脑上就始终出现加载dll文件失败的提示,程序的部分功能也就失效了,这是什么原因了,以下是我调用的代码:
FORTRAN接口:
   SUBROUTINE MONOPROPELLANT(molC,molH,molO,molN,Propellantname,NameLength,PropellantDensity,PropellantHf,Tc,Te,Isp,Cm,MolecularAvgMass,Qp,xc,xe)
!DEC$ ATTRIBUTES DLLEXPORT::MONOPROPELLANT
!DEC$ ATTRIBUTES REFERENCE::molC,molH,molO,molN,Propellantname,PropellantDensity,PropellantHf,Tc,Te,Isp,Cm,MolecularAvgMass,Qp,xc,xe
USE Constant
USE thermo
....
END SUBROUTINE MONOPROPELLANT
MFC中的C++代码:
   void CMonopropellant::OnBnClickedOk()
{
        UpdateData(TRUE);
        typedef void ( _cdecl* wndProc)(double& ,double& ,double& ,double& ,
                char* ,int& ,double& ,double& ,
                double& ,double& ,double& ,double& ,double& ,double&,
                double[],double[]);
        HINSTANCE hIns;
        hIns = LoadLibraryEx(_T("Monopropellant_dll.dll"),NULL,NULL);
        if(!hIns)
        {
                MessageBox(L"加载动态链接库:Monopropellant_dll.dll失败",L"ERROR",MB_OK);
                return;
        }
        wndProc propellant= (wndProc)GetProcAddress(hIns,"MONOPROPELLANT");
        if(!propellant)
        {
                MessageBox(L"加载函数失败",L"ERROR",MB_OK);
                ::FreeLibrary(hIns);
                return;
        }
        CString txt=_T(".txt");
        CString outputfilename;
        outputfilename.Format(_T("%s %s"),propellant_name,txt);
        wchar_t *p=outputfilename.GetBuffer(outputfilename.GetLength());
        outputfilename.ReleaseBuffer();
        int iSize;
        char *pName;
        iSize=WideCharToMultiByte(CP_ACP,0,p,-1,NULL,0,NULL,NULL);
        pName=(char*)malloc((iSize+1));
        WideCharToMultiByte(CP_ACP,0,p,-1,pName,iSize,NULL,NULL);
        int len=strlen(pName);
        double Tc,Te,Isp,Cm,MolecularAvgMass,Qp;
        double xc[25],xe[25];
        propellant(NumC,NumH,NumO,NumN,pName,len,propellant_density,propellant_Hf,Tc,Te,Isp,Cm,MolecularAvgMass,Qp,xc,xe);
        ::FreeLibrary(hIns);
        ...
}
很困扰,sob老师可否解答一下?   

3814

帖子

4

威望

8002

eV
积分
11896

Level 6 (一方通行)

MOKIT开发者

6#
发表于 Post on 2017-12-19 19:52:14 | 只看该作者 Only view this author
我说实话,我是比较反感一个老板让学生写可视化界面的。。。又不是专业设计GUI的,这种事应该请专门写GUI的码农或者社会上聘用相关人才来写。学生科研阶段,最多完善好比较好用的命令行参数和输入文件格式就可以了(像gjf)。学生写GUI又不额外给工资。
自动做多参考态计算的程序MOKIT

5万

帖子

99

威望

5万

eV
积分
112496

管理员

公社社长

7#
发表于 Post on 2017-12-19 19:55:31 | 只看该作者 Only view this author
zjxitcc 发表于 2017-12-19 19:52
我说实话,我是比较反感一个老板让学生写可视化界面的。。。又不是专业设计GUI的,这种事应该请专门写GUI的 ...

如果学生之后不打算继续搞科研,会写GUI出路倒是广得多
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

5万

帖子

99

威望

5万

eV
积分
112496

管理员

公社社长

8#
发表于 Post on 2017-12-19 19:56:49 | 只看该作者 Only view this author
杜黎小松 发表于 2017-12-19 19:44
sob老师,还想问你一个问题,就不发新帖占用空间了,
最近开发一个软件,老板要求有可视化界面,于是想到 ...

MFC我都10年没用了,基本忘光了...
其实Fortran程序加个图形界面,要求不高的话,用DISLIN库是个好的选择,Multiwfn就是这样,还能完美跨平台。
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

3814

帖子

4

威望

8002

eV
积分
11896

Level 6 (一方通行)

MOKIT开发者

9#
发表于 Post on 2017-12-19 20:00:30 | 只看该作者 Only view this author
sobereva 发表于 2017-12-19 19:55
如果学生之后不打算继续搞科研,会写GUI出路倒是广得多

那是
自动做多参考态计算的程序MOKIT

58

帖子

0

威望

414

eV
积分
472

Level 3 能力者

10#
 楼主 Author| 发表于 Post on 2017-12-19 20:10:41 | 只看该作者 Only view this author
zjxitcc 发表于 2017-12-19 19:52
我说实话,我是比较反感一个老板让学生写可视化界面的。。。又不是专业设计GUI的,这种事应该请专门写GUI的 ...

没法啊,老板要求一个简单的界面,

58

帖子

0

威望

414

eV
积分
472

Level 3 能力者

11#
 楼主 Author| 发表于 Post on 2017-12-19 20:12:33 | 只看该作者 Only view this author
sobereva 发表于 2017-12-19 19:56
MFC我都10年没用了,基本忘光了...
其实Fortran程序加个图形界面,要求不高的话,用DISLIN库是个好的选 ...

哦,那这样的话sob老师,国内哪个C++论坛比较好,我去找论坛上问一下,可能上面的人懂?DISLIN库还没听过,只知道IMSL库,我也去详细了解下.

5万

帖子

99

威望

5万

eV
积分
112496

管理员

公社社长

12#
发表于 Post on 2017-12-19 20:14:34 | 只看该作者 Only view this author
杜黎小松 发表于 2017-12-19 20:12
哦,那这样的话sob老师,国内哪个C++论坛比较好,我去找论坛上问一下,可能上面的人懂?DISLIN库还没听过 ...


http://www.mps.mpg.de/dislin
主页里面有一些DISLIN构建的图形界面程序的例子,如果觉得够用了,比起折腾MFC方便多了
北京科音自然科学研究中心http://www.keinsci.com)致力于计算化学的发展和传播,长期开办高质量的各种计算化学类培训:初级量子化学培训班中级量子化学培训班高级量子化学培训班量子化学波函数分析与Multiwfn程序培训班分子动力学与GROMACS培训班CP2K第一性原理计算培训班,内容介绍以及往届资料购买请点击相应链接查看。这些培训是计算化学从零快速入门以及进一步全面系统性提升研究水平的高速路!培训各种常见问题见《北京科音办的培训班FAQ》
欢迎加入“北京科音”微信公众号获取北京科音培训的最新消息、避免错过网上有价值的计算化学文章!
欢迎加入人气非常高、专业性特别强的综合性理论与计算化学交流QQ群“思想家公社QQ群”:1号:18616395,2号:466017436,3号:764390338,搜索群号能搜到哪个说明目前哪个能加,合计9000人。北京科音培训班的学员在群中可申请VIP头衔,提问将得到群主Sobereva的最优先解答。
思想家公社的门口Blog:http://sobereva.com(发布大量原创计算化学相关博文)
Multiwfn主页:http://sobereva.com/multiwfn(十分强大的量子化学波函数分析程序)
ResearchGate:https://www.researchgate.net/profile/Tian_Lu
Money and papers are rubbish, get a real life!

417

帖子

1

威望

2200

eV
积分
2637

Level 5 (御坂)

13#
发表于 Post on 2017-12-20 21:08:12 | 只看该作者 Only view this author
本人迄今为止唯一一次用上GUI的,是大一时C语言课的大作业,根据老师的提示用了个EasyX(一个简单低幼至极点的图形库)。。。。。。之后就与GUI无缘了。。。。。。

58

帖子

0

威望

414

eV
积分
472

Level 3 能力者

14#
 楼主 Author| 发表于 Post on 2017-12-22 15:29:02 | 只看该作者 Only view this author
Daniel_Arndt 发表于 2017-12-20 21:08
本人迄今为止唯一一次用上GUI的,是大一时C语言课的大作业,根据老师的提示用了个EasyX(一个简单低幼至极 ...

哈哈,同乐

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2024-11-27 10:15 , Processed in 0.484298 second(s), 22 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list