aspenfortran子程序的编译、连接、运行
Aspen plus fortran 子程序的编译、连接与运行
Aspen Plus可以用来模拟反应精馏,但提供的动力学方程形式比较死板,很多类型的动力学方程都不能直接输入,不得不外接一个fortran 子程序。
本来用到fortran 的机会就不多,所以会的人也不多。
何况编写好fortran 子程序后,还要用fortran 编译器来编译生成obj
文件,而且每次运行的时候都得连接一次,比较麻烦。
我的电脑以前是装了编译器这些软件
的,但最近出了问题,只能编译fortran 子程序,运行aspen外接fortran 子程序的时候就会出错。
恰好这几天要帮师兄写个fortran 子程序,写完后需要调试,但又运行不了,重装
呢也没把握,想起网上有兄弟说过可以用asplink命令生成一个dll文件,这样就不用运行
aspen的时候每次都连接编译器了。
于是找来资料学习学习,居然成功了,欣喜之余,分享给大家。
第一步当然是编写动力学子程序了(此处省略若干字)
第二步编译写好的动力学子程序(以网友soaty的动力学子程序为例)
打开Aspen Plus Simulation Engine
JS M...
打开后是这样的
接下来改变文件夹路径,转到存放动力学子程序的那个文件夹
比如我的文件路径是C:\ProgramData\Aspe nTech\Aspen Plus \IPP
于是输入cd C:\ProgramData\AspenTech\Aspen Plus \IPP
回车后就转到这个文件夹了,这时候就可以进行编译了:编译命令:aspcomp
输入命令aspcomp ,回车
到文件夹一看你会发现已经生成了obj文件了,
compil&Jog
[2)Ripp 白.f
詮R]PPA.obj'
第二步就完成了
第三步:生成obj文件的OPT文件
这个很简单,只需要在文件夹里面先新建一个文本文件,然后把名字改为
RIPPA_LIST_OBJ双击打开文本文件,在里面先添加上刚刚生成的obj文件的路径(就是我们第一步提到的那个文件夹路径加上最后生成的就可以了
僅改叶期大沪__ compile』og2013/5/26 20:34 1 KB Bl Rippa.f2013/5/23 9:38Fortran Source11 KB
也R]PPA.obj2013/^/26 20:34Object File 4 KB 匚RlPPA_LISTj3BJ.btt2013/5/26 20:43文本交栏1KB
RlPPA_Ll5T,OBJ.txt -记事苯
文件旧巒(町搐式Q)童看(V)裡助(H)
C:\PrograoData\AspenTech\Asp en Plus V7.1\IPP\RIPF扎obj
最后把txt格式改成opt格式就行了
compile.log
IB RippaJ
豹RTPPA.obj
.,RlPPA_UST,OBJ.Q P t
第四步:链接第二步生成的OBJ文件,生成dll文件
命令格式:ASPLINK [DLOPT dloptfile] lib name
Dloptfile 是在刚刚生成的OPT文件的文件名,
Lib name 是给要生成的dll文件指定一个文件名
于是我们输入aspli nk [dlopt ] RIPPA 回车
(这里如果输入的命令是ASPLINK lib name 就会链接这个文件夹下所有的OBJ文件,如果你的文件夹下刚好有多个OBJ文件,那么一般不能成功生成dll文件)
第五步:生成
dll文件的opt文件,贴
个图好了,大家参考第三步
和第三步类似
三*| _0953ngi.def2013/5/26 21:09Export Definiti©"...IKE [j _BaF222,trnp2013/5/2& 2110TMP文件15 K&两radfracfanyingjinglicidcnglixue2.bkp2013/5/26 15:56Aspen Plus Back..134 KB Si RIPPA.dll2013/5/26 20:59頤展17 KB RIPPA.exp2013/5/26 20:59Exports Library 1 KB [=1 Rippa.f2013/5/23 9:38Fortran Source11 KB ffl RIPPA.Id2013/5/26 20:59Aspen Plus Linke... 4 KB Bl RiPPA.Ids2013/5/26 20:59LDS文件 1 KG 幻RIPPAJib2013/5/26 20:59Object File Library2 KB RIPPA.cbj5012/5/26 20:34Object File 4 KE R[PPA_UST^OBJ.opt2013/5/26 20:43OPT文件 1 KB | 久RIPPA_LOC_DLL.opt2013/5/26 21:01OPT文件1KB
■" RTPPA_LOC_DlL,opt -15W4;
文供F) 福式Q}章看M轄助(H)
C:\Progr amD ata\Asp enT cch\Aspen Plus V7.1\IPP\RIFPA- DLL
把txt格式改成opt格式,这时所有的编译链接都完成了,我们就可以在没有安装fortran 编译器的电脑上运行带fortran 的子程序的Aspen Plus文件了
首先打开BKP文件后,点击RUNsettings 填入dll文
件的OPT文件名
Engine Files Linker
Run Settings
Engint Fil Qpti ons
User properly databanlts
Mi scell^neaus files
L L M就R1PFA UOC DLL. 0?7
tun
Coit
确定I 邨肯应月⑷帮助
点击确定,这时,不出意外,就可以运行aspen 了
注意:上面提到的这些文件必须放到一个文件夹里面,如果您下载了我的文件更改了文件夹的目录就需要在那两个OPT文件中更改成您自己的文件夹目录。
需要说明的是我提供的这个例子的模拟有问题,物性参数、模拟结果都有问题,感兴趣的朋友可以调试下。
祝好运。
FORTRAN子程序ppt课件
算法:弦截法的基本思路与“二分法” f(x) 相似,它是取f(x1)与f(x2)连线与x轴的
f(x2)
交点x,从(x1,x)与(x,x2)两个区间中舍
去一个,舍取的方法为: 1、如果f(x)与f(x1)异号,则用x作为新 的x2,这就舍去了原来的(x,x2)区间。 2、如果f(x)与f(x1)同号,则用x作为新
24
精选课件ppt
7.2 函数子程序(外部函数)
语句函数只能用一个语句定义,而且只 能在定义它的程序段中使用。
分析:函数f(X)是用两个表达式定义的,不 能用简单的语句函数来表示。怎么办? FORTRAN提供了一种方法,就是把函数的 计算部份从程序中独立出来,并按一定的格 式编成一个单独的子程序段,称为外部函数 或函数子程序。
(4) 编译独立。如果每个子程序是以一个 文件存贮的。则可以单独进行编译。 这样使得便于编写,便于维护,并能 实现软件共享。
函数值取x2的的 符号,取x1的绝 对值
X2=X
FX2=FX
END IF
IF((ABS(X1-X2).GT.1E-5).AND.(ABS(FX).GT.1E-6))
& GOTO 10
IF(FX.GT.1E-6)X=(X1+X2)/2.0
WRITE(*,*)X
15
END
精选课件ppt
例 2:用语句函数采用弦截法求X3-2X2-7X+4=0的根。
实元和对应的虚元进行结合,即实元的值传 给虚元(称为虚实结合过程);
求表达式e的值;
11
精选课件ppt
语句函数的引用过程
根据语句函数名的类型和表达式e求值结果,按 赋值规则得到函数引用的值由函数名带回,并 控制返回到原表达式函数引用处,继续计算表 达式值。
子程序调用—自己总结
第一种方法:在Job模块里,创建工作,在Edit Job对话框中选择General选项卡,在User subroutine file中点击Select按钮,从弹出对话框中选择你要调用的子程序文件(后缀为.for或.f)。
第二种方法:1. 建立工作目录2. 将Abaqus安装目录\6.4-pr11\site下的aba_param_dp.inc 或aba_param_sp.inc拷贝到工作目录,并改名为aba_param.inc;3. 将编译的fortran程序拷贝到工作目录;4.将.obj文件拷贝到工作目录;5. 建立好输入文件.inp;6. 运行abaqus job=inp_name user=fortran name即可。
以下是网上摘录的资料,供参考:用户进行二次开发时,要在命令行窗口执行下面的命令:abaqus job=job_name user=sub_nameABAQUS会把用户的源程序编译成obj文件,然后临时生成一个静态库standardU.lib和动态库standardU.dll,还有其它一些临时文件,而它的主程序(如standard.exe和explicit.exe等)则没有任何改变,由此看来ABAQUS是通过加载上述2个库文件来实现对用户程序的连接,而一旦运行结束则删除所有的临时文件。
这种运行机制与ANSYS、LS-DYNA、marc等都不同。
这些生成的临时文件要到文件夹C:\Documents and Settings\Administrator\Local Settings\Temp\中才能找到,这也是6楼所说的藏了一些工作吧,大家不妨试一下。
1子程序格式(程序后缀是.f; .f90; .for;.obj??)答:我试过,.for格是应该是不可以的,至少6.2和6.3版本应该是不行,其他的没用过,没有发言权。
在Abaqus中,运行abaqus j=jobname user=username时,默认的用户子程序后缀名是.for (.f,.f90应该都不行的,手册上也有讲过),只有在username.for文件没有找到的情况下,才会去搜索username.obj,如果两者都没有,就会报错误信息。
Fortran 程式语言的编,译与执行简述
〔call sub_name ( ) 〕
九、註解與識別指令
C ;
首欄 C 後之任何文字為註解功能,不被編譯
* ; 首欄 * 後之任何文字,不被編譯 73 ~ 80 欄位,通常為識別說明用
Fortran Programming
由老師之範例中暸解語言的定義! 由範例之執行中領悟邏輯的關聯!
加法運算:+ 減法運算:乘法運算:* 除法運算:/ 冪次方運算:**;^
Ans = -(a+(b*c-d**3.)*25.+e*e*e)/2. 運算式中之運算次序依一般數學運算次序
八、控制指令
〔if ( ) goto no.〕 〔if ( ) then // else // endif〕 〔do no. // no. continue〕
一、檔案(文書)編輯
編輯完成 執行儲存
二、Fortran 程式語言編譯
在工作目錄cjs
下呼叫 c 磁碟的 mingw 目錄的 bin 子目錄的 g77.exe 來將 福傳檔案 *.for 編譯為 可執行檔 *.exe
二、Fortran 程式語言編譯
Fortran程式語言編譯指令(1) C:\cjs>c:\mingw\bin\g77t1.for-ot1.exe
磁碟機 工作的子目錄 編譯軟體名稱 編譯檔案名稱 儲存檔案名稱 檔案名稱類型
C碟 c 碟的 cjs 目錄 g77.exe t1.for t1.exe Primary-name . sub-name
三、程式的執行
*.for 經編譯得
*.exe 可執行檔
執行 〔t1 〕
結果 〔7〕
Fortran 程式語言 的 編、譯與執行簡述
Fortran基本介绍
基于Fortran的AspenPlus单元过程用户模型的开发基础知识Aspen Plus是一种通用的化工过程模拟、优化和设计软件,但它提供的通用过程单元模型并不能满足用户的所有需求,如反应器,并不能把所有的反应及反应本质模拟出来。
但是Aspen Plus提供了用户扩展接口,用户可以根据自己的需要将自定义的过程单元模型添加到该软件中并使用。
Aspen Plus提供了基于Fortran用户模型的开发方式,即可以编写Fortran用户子程序,编译后产生一个动态连接库,从而实现用户模型和Aspen Plus的结合。
用户模型是一黑箱模型,内部程序可是根据需要自己定义,输入物流可以在Stream中先定义,将流股信息(如温度、压力、组成及流量等)按照Aspen Plus的内部规定传递到模型中,参与模型的内部计算;然后将模型计算的结果通过输出物流信息传递出来,用户可以根据自己的需要来定义,但必须要遵守Aspen Plus的内部规定。
由于外部Fortran子程序不能被解释,需要一个Fortran编译器。
不同版本的Aspen Plus软件需要不同版本的Fortran编译器,如Aspen Plus 11.1只需要Visual Fortran 6.0版本即可;Aspen Plus 2006就需要Intel Fortran 9.0版本,且必须在Microsoft Visual 环境下,在Aspen Plus Simulation Engine上编译,编译成功后生成用户模型的目标模块文件(*.obj)或共享库(*.dll)。
产生的目标模块文件(*.obj)若能正常链接和求解,运行Aspen Plus的电脑上必须安装Intel Fortran Compiler和Microsoft Visual Studio .NET 2003(或2000)这类的大程序,这样就占据了大量的电脑空间。
当产生共享库(*.dll)后,和Aspen Plus文件放在一个文件夹,并在装载和求解用户模型的DLOPT文件中指定路经,就可以直接运行内嵌用户模型的Aspen Plus文件了。
fortran子程序
说明: 1. 函数名的取名方法与变量 名同,遵循I—N隐含约定, 否则需采用类型说明语句。
function myabs(x) real myabs 定义法二 .
2. 函数名后的虚参可以是变量名、数组名和子程序名。 如没有虚参,一对圆括号不能省。 3. 在函数子程序流程返回调用单位之前,必须把所求得 的函数值赋给函数名(不带括号和虚参)。 4. 函数子程序流程执行到return或end语句时,立即返回 到调用单位。return语句在子程序中可以有多处,如 果紧邻end 可以省去。
第 九 章 数组
第 十 章 语句函数
第十一章 子程序
第十二章 数据共用存储单元 和数据块子程序
第十三章 文件
1
Fortran程序往往由一个主程序和若干个子程序组成。 Fortran的子程序有函数子程序、子例行子程序和数 据块子程序三种。 子程序可以被主程序调用,也可以被其他子程序调 用。Fortran77中的子程序不能递归调用。
100
一行打印20个 “*”号,打两行。
8
subroutine opp(a,s1,s2) 求矩阵两对角 real a(5,5) 线元素之和 s1=0 do 10 i=1,5 subroutine readin(a) s1=s1+a(i,i) real a(5,5) 10 continue do 10 i=1,5 s2=0 read(*,*) (a(i,j),j=1,5) do 20 i=1,5 10 continue j=5-i+1 end s2=s2+a(i,j) 20 continue real w(5,5) end call readin(w) call opp(w,x1,x2) 输入矩阵 write(*,100) x1,x2 1,2,3,4,5 100 format(1x,'The two sum of', 2,3,4,5,1 3,4,5,1,2 $ ' oppusite angles elements:', 4,5,1,2,3 $ /1x,'x1=',f8.2,' x2=',f8.2) 5,1,2,3,4 end
汇编语言源程序的编辑、汇编、连接的方法
汇编语言源程序的编辑、汇编、连接的方法一、编辑源程序汇编语言源程序:用汇编语句编写的解决应用问题的程序。
汇编程序:将汇编语言源程序翻译成机器语言程序的系统。
汇编:将汇编语言程序翻译成机器语言程序的过程。
在编辑汇编语言源程序时,对计算机硬件工作环境无特殊要求,对软件工作环境要求也很简单,只需用建立ASCII码文本文件的软件即可。
(1)编辑软件行编辑软件:全屏编辑软件:WPS、、、WORD、PE等。
当输入、建立和修改源程序时,可任选一种编辑软件,不要用格式控制符,要求编辑完成的文件扩展名一定是.ASM。
(2)汇编程序有汇编ASM.EXE、宏汇编MASM.EXE及TASM等,一般使用宏汇编MASM.EXE,因它比ASM.EXE功能强。
TASM适用于8086/8088~Pentium系列指令系统所编写的汇编语言程序,是比较先进的汇编工具。
(3)连接程序用连接程序LINK.EXE或TLINK.EXE,将MASM.EXE产生的机器代码程序(.OBJ)文件连接成可执行程序.EXE,TLINK比LINK更先进。
(4)辅助工具程序(.EXE)进行汇编语言程序调试和文件格式转换的程序有: 动态调试程序EXE2BIN.EXE 文件格式转换程序CREF.EXE 交叉引用程序编辑、汇编、连接、调试过程如图1.1所示。
TD(turbo Debugger简称)也是动态调试程序,可在DOS和Windows环境下运行,用户界面十分友好。
二、汇编源程序用编辑软件建立的源程序.ASM文件,必须经过汇编才能产生.OBJ文件。
为此,需键入:C:>MASM <源文件名>或C:>MASM按前一种格式键入,屏幕上显示:Microsoft(R) Macro assemble V ersion 5.00Copyright(C) Microsoft Corp 1981-1985,1987 ALL rights reservedOBJ filename[<file>.obj]:Source listing[nul.lst]:Cross-reference[nul.crf]:以上信息中方括中为该项提示的缺省回答值,冒号后面等待用户输入信息,若不改变缺省值则直接按回车键。
Fortran程式语言的编、译与执行简述培训课件.ppt
二、Fortran 程式語言編譯
將 c 磁碟的 mingw 目錄的 bin 子目錄的 g77.exe複製到 工作目錄下
來將 福傳檔案 *.for 編譯為 可執行檔 *.exe
二、Fortran 程式語言編譯
Fortran程式語言編譯指令(2) g77.exe 已經單獨複製到 C 碟之工作目錄 cjs 下
七、運算指令指令
電腦計算可使用之操作種類
加法運算:+ 減法運算: 乘法運算:* 除法運算:/ 冪次方運算:**;^
Ans = -(a+(b*c-d**3.)*25.+e*e*e)/2. 運算式中之運算次序依一般數學運算次序
八、控制指令
〔if ( ) goto no.〕 〔if ( ) then // else // endif〕 〔do no. // no. continue〕 〔call sub_name ( ) 〕
執行 〔t1 〕 結果 〔7〕
游標閃爍 - - 待 令狀態
四、MS-DOS 作業環境的瀏覽
執行 〔dir 〕 瀏覽工作目 錄下之檔案 與目錄
〔dir/p 〕 〔dir/w 〕 〔dir*.for 〕 〔dir*.* 〕
五、電腦語言漫談
電腦計算可使用之操作種類
一、檔案(文書)編輯
編輯完成 執行儲存
二、Fortran 程式語言編譯
在工作目錄cjs 下呼叫 c 磁碟的 mingw 目錄的 bin 子目錄的 g77.exe
來將 福傳檔案 *.for 編譯為 可執行檔 *.exe
二、Fortran 程式語言編譯
Fortran程式語言編譯指令(1)
加法運算:+ 減法運算: 乘法運算:* 除法運算:/ 冪次方運算:**;^
1. Windows系统的 ASPEN PLUS 10.0 安装指南中文版
安装组件
ASPEN PLUS Version 10.0 由 Windows95 和 Windows NT(Intel)平台上 ASPEN PLUS 模 拟引擎和用户界面以及 Windows NT Digital AXP 平台上模拟引擎组成
ASPEN PLUS 软件包内容取决于你与公司签的许可协议 l 一块标有 ASPEN PLUS Version 10.0 Windows95/NT 的光盘 l Windows 系统的 ASPEN PLUS 安装指南 l APEN PLUS10.0 的新内容
Acrobat 格式的文档 该光盘还包括 Adobe Acrobat Reader3.0 以供 Windows95/NT 系统下阅读这些文件 你若收到了 AspenTech License Manager 光盘 你就应该在安装 ASPEN PLUS 之前安装 和配置 License Manager
安装选件
UNIX 和 Open VMS 平台的 ASPEN PLUS 模拟引擎 l UNIX 系统 ASPEN PLUS 安装指南 l OpenVMS 系统 ASPEN PLUS 安装指南 l 一块标有 ASPEN PLUS Version 10.0 Documentation 光盘 主要包括需要在以 Adobe
操作系统名称 版本 Windows NT 4.0
Windows NT 4.0
检查 Service Pack 3 的 命令
启动 程序 管理工具 通用 Windows NT
诊断 检查 Windows NT 版本 的引导屏幕并安装
Service Pack. 启动 程序 管理工具
通用 Windows NT 诊断 检查 Windows NT 版本 的引导屏幕并安装服务 软件包
AspenPlus中内嵌Fortran使用及简单的应用
大家在使用Aspenplus中的calculate,design spec,sensitivity analysis时都可以发现有个Fortran的标签页,这就是AspenPlus的内嵌Fortran模块,以前的文章也有提到过,通过内嵌的Fortran模块可以帮助我们完成很多工作。
下面看看他主要能做点什么!通过用Fortran 模块你可以把Fortran 语句插入到流程计算中以便执行用户定义的任务例如1 在使用输入变量前计算和设定它们前馈控制2 把信息写到控制面板上3 从一个文件中读取输入数据4 把结果写到ASPEN PLUS 报告或写到任意外部文件5 调用外部子程序6 编写你自己的用户子程序如果想用好Fortran必须得对Fortran有所了解才可以,这里就不再说明了!接下来通过一个简单的例子来阐述一下内嵌Fortran模块的使用方法。
图1 图2 问题描述: 问题1:在图1中,stream 16 ,17混合后C5H8-01会有大概0.5%发生反应生成C10H16-01,并且B13 split模型要求stream 22 采出是stream 8的1%。
这一块为了简化模型使用了Calculate中的fortran或是excel(前面讲过不再重复)。
问题2:在图2中,通过进料板位置和回流比对stream 3中的所有C5做灵敏度分析,这个就要用到sensitivity analysis中的fortran。
下面分别讲述: 问题问题1:A 新建一个Calcuation名称为“C-1”定义好变量如图3 A 图 3 3 变量说明AA-Stream3中C5H8-01的质量流量类型为import AB-Stream2中C5H8-01的质量流量类型为import AC-Stream8中C5H8-01的质量流量类型为export AD-Stream8中C5H8-01的质量流量类型为export AF-Stream8中C10H16-01的质量流量类型为export B 在Fortran中写公式 B F AC=(AA+AB)*(1-0.005)F AD=(AA+AB)*0.005F AF=(AA+AB)*0.01 在fortran中的变量就是在前面定义好的变量,同时也可以定义中间变量平常,在这里可以添加外部的Fortran程序,也可以读写文件等等和fortran一样。
Fortran子程序
函数与子程序
子程序和主程序之间最大不同在于:主程序的程序代码,在程序一开始 就自动被执行,而子程序的代码只有在被‚调用‛才会执行。
一个包含子程序的Fortran程序在结构上大致如下:
program main ← 主程序 „„ „„ ←主程序代码 „„ end program main ←主程序结束 subroutine sub1() ←第1个子程序 „„ „„ ←子程序码 „„ end subroutine sub1 ←第1个子程序结束 subroutine sub2() ←第2个子程序 „„ „„ ←子程序码 „„ end subroutine sub2 ← 第2个子程序结束
函数与子程序
使用common还有一些技巧,见下面实例。主程序中有全局变量a,b, 子程序中有大小为2的数组a(2),根据使用相同内存空间的策略,a等于 a(1),而b等于a(2)。
program ex0814 implicit none real :: a,b common a,b ! 把浮点数a,b放在全局变量中 a = 1.0 b = 2.0 call ShowCommon() stop end subroutine ShowCommon() implicit none real :: a(2) common a ! 把数组a放在全局变量中 write(*,*) a(1), a(2) return end
传递参数与使用全局变量都可以在 不同程序之间共享数据,简单的说,当 需要共享的变量不多,而且只由少数几 个程序需要使用这些数据时,就使用参 数;当共享大笔数据,或是有很多个不 同程序都要使用这些数据时,就使用全 局变量。
函数与子程序
2、BLOCK DATA 的使用 关于common设臵初值的方法,common变量不能直接在子 程序或主程序中使用DATA来设臵初值,要在BLOCK DATA程序模块中使用DATA命令来设臵初值,看一个程序:
