似乎和上次我们的gproms培训的内容有点像。转自:http://blog.sina.com.cn/s/blog_49ac86e2010003g7.html
A认识gPROMS界面在本例中用到的几个TreeMen(VaribleType,Models,Processes)
图 1 1 了解缓冲罐数学模型
质量守恒方程
dM/dt=Fin-Fout (1.1)
Fin---进罐的物料量
Fout--出罐的物料量
容器里物料量与液面高度之间的关系
pAh =M (1.2)
p--物料密度
A--容器的截面积
h--液面高度
出罐物料关系式
Fout =a*(ph)^2 (1.3)
a--阀门参数
2 新建一个gPROMS工程并且换名另存为Tank。
3 建立一个Model:在图 1中Models文件夹图标下点右键->NewEntity / 点中Models文件夹图标 Ctrl+E /Models文件夹图标->工具栏->Entity->New Entity,
Modelname:BuffterTank(中间不能有空格但是可以有下划线“_”)将会生成一个带模版的Models。现在开始学习这个模版的内容(目前我知道到一部分)在gPROMSLanguage标签页中可以看到这些灰颜色的东西都用#,可想而知这是注释符号就和C++中//意思一样。下面的代码是模版里的代码,红颜色是我对其的理解,可能有错的地方要是谁看到这篇文章希望您能指出。
# PARAMETER
PARAMETER(常数参数)
# ParameterName AS INTEGER || REAL|| LOGICAL < DEFAULT Value >
ParameterName(常数参数名) AS (定义为)INTEGER(整数) || REAL(实数)||LOGICAL(逻辑值) < DEFAULTValue >(缺省值) 其中 ||表示“或者”
例如: R As realdefault 8.314。
表示为,定义一个实数类型的常数变量,其缺省值为8.314。
# ParameterName AS ARRAY ( Size < , ... > ) OF INTEGER|| REAL || LOGICAL < DEFAULT Value >
这个表示为数组常数参数
例如:
PARAMETER
# Number ofcomponents
NoComp AS INTEGER
# Number of reactions
NoReact AS INTEGER
# Component molar densities
Rho AS ARRAY(NoComp) OF REAL
# Stoichiometric coefficient of component i in reaction j
Nu AS ARRAY(NoComp,NoReact) OF REAL DEFAULT0
# Order of component i in reaction j
Order AS ARRAY(NoComp,NoReact) OF REAL DEFAULT0
# ParameterName AS FOREIGN_OBJECT < "ForeignObjectClass" >< DEFAULT "ForeignObjectValue" >
# DISTRIBUTION_DOMAIN
# DomainName AS ( LowerBound : UpperBound )
# DomainName AS ARRAY ( Size < , ... > ) OF (LowerBound :UpperBound )
# UNIT
# UnitName AS UnitModelName
# UnitName AS ARRAY ( Size < , ... > ) OFUnitModelName
# PORT
# PortName AS ConnectionType
# PortName AS ARRAY ( Size < , ... > ) OFConnectionType
上面这些本例子没有用到所以不知道什么作用以后再补充
# VARIABLE
VARIABLE(变量)
# VariableName AS VariableType
VariableName(变量名) ASVariableType(变量类型)
在这里VariableType可以自己随便写一个名字,但是这些必须在图1 VariableType Entity中去声明一下。
例如:
VARIABLE
HoldUp AS Mass
FlowIn, FlowOut AS MassFlowrate
Height AS Length
# VariableNameAS ARRAY ( Size < , ... > ) OF VariableType
同上有 数组变量
VARIABLE
# Input and output molar flowrates
Flow_In, Flow_Out AS MolarFlowrate
[size=+0]
# Liquid phase volume
V AS Volume
# Component molar holdups
HoldUp AS ARRAY(NoComp) OF Moles
# Input and output component molefractions
X_In, X_Out AS ARRAY(NoComp) OF MoleFraction
# Component concentrations
C AS ARRAY(NoComp) OF Concentration
# Reaction rates
Rate AS ARRAY(NoReact) OF ReactionRate
# VariableName AS DISTRIBUTION ( DomainName< , ... > ) OF VariableType
# STREAM
# StreamName : VariablePath < , ... > AS StreamType ||CONNECTION
# StreamName : VariablePath < , ... > AS ARRAY ( Size < ,... > OF StreamType || CONNECTION
# StreamName IS StreamPath
这个暂且不知具体用途以后学习碰到在补上
# SELECTOR
# SelectorName AS ( Flag < , ... > ) < DEFAULT Flag>
# SelectorName AS ARRAY ( Size < , ... > ) OF ( Flag < ,... > ) < DEFAULT Flag >
# SelectorName AS DISTRIBUTION ( DomainName < , ... > ) OF (Flag < , ... > ) < DEFAULT Flag >
这个放到下一个例子再介绍吧
# SET
SET(常数变量赋值)
# ParameterPath := Expression ;
例如:
这个缓冲罐名字为V101(名字设定在Processes中的Unit中设置稍后可以看到)他的赋值方法为:
V101.Rho:=1000;
意义与C++的指针一样。注意:gPROMSLanguage赋值方法表示“:=”。
# ParameterPath := [ Expression < , ... > ];
# ParameterPath :="<ForeignObjectClass::>ForeignObjectValue";
# DomainPath := [ BFDM || CFDM || FFDM || OCFEM , Order ,NumOfElements ];
# BOUNDARY
# Boundary Equations
# TOPOLOGY
# Unit Connection Equations
# EQUATION
EQUATION(模型数学方程)
# Model Equations
好了有关的预备知识介绍到这里接下来就是把1中数学语言转化为gPROMSLanguage了。
图 3 上面这个代码就是Molders-BuffterTank里的数学模型了,按F4语法检查,要是有错误gPROMS会有相应的提示。
4建立一个Processes命名为SimulateTank,点OK后也会有个模版生成。
# UNIT
UNIT(单元)
# UnitName AS ModelName
UnitName(单元名称)AS ModelName(模型名称)
例如 :
T101 AS BuffterTank
# UnitName AS ARRAY ( Size < , ... > ) OF ModelName
# MONITOR
# SYNTAX: VariablePathPattern ;
目前不知用途
# SET
# ParameterPath := Expression ;
# ParameterPath := [ Expression < , ... > ];
# ParameterPath :="<ForeignObjectClass::>ForeignObjectValue";
# DomainPath := [ BFDM || CFDM || FFDM || OCFEM , Order ,NumOfElements ];
前面介绍过了
# EQUATION
# Equations
# ASSIGN <-这个指的是自由度
#VariablePath := Expression ;
我的理解为是初始的已知变量值
定义方法:T101.FolwIn :=10;
# VariablePath := [ Expression < , ... > ];
# PRESET <-作用未知
# <RESTORE " >
# VariablePath := InitialValue ;
# VariablePath := InitialValue : LowerBound : UpperBound ;
# SELECTOR <-下列再介绍
#SelectorPath := FlagPath ;
# SelectorPath := [ FlagPath < , ... > ];
# INITIAL <-初始化
初始化某个变量
方法为:T101.Heigth=2.1; #m
注意这个地方是等号哟“=”
# Equations
# STEADY_STATE
# SOLUTIONPARAMETERS
目前我碰到的是报告间隔的作用
ReportingInterval :=5;
# SCHEDULE
定义运行的时间/定义某个变量收敛的程度如:
SCHEDULE
CONTINUE FOR1800;
SEQUENCE
CONTINUE FOR 360 OR UNTIL Fermenter.Batch_Fermenter.s <=1E-9
END
# OperationSchedule
OKProcesses的基本作用知道了,好久没有碰过E问了现在看英文帮助有点费劲了
图 4 之前好像没有定义VariableType哟好了县在补上方法就不介绍了超简单的 如图5
图 5 5所有的工作做完了剩下的就是RUN和查看结果了。选中SimulateTank按F5运行(当然还有其它方法)/查看结果可以看到多了个蓝色的文件夹标签如图6中可以查看到你定义的变量的结果。
图 6 好了这个例子就写到这里,文采不好另外也是刚刚学习gPROMS。所以文章写得有点乱望各位谅解。请gPROMS高手能指点一下。
该贴已经同步到 Horse的微博 |