Sei sulla pagina 1di 52

gPROMs

Contents
What is gPROMS
Application briefs
How to use gPROMs
Case

What is gPROMS
gPROMS is a general PROcess Modelling
Syste with proven capabilities for the
simulation, optimization and parameter
estimation (both steady-state and
dynamic) of highly complex process.

At its heart gPROMS is an equationbased system.

gPROMS has an unprecedented


level of openness.

The gPROMS family of products

Application across the process and plant


lifecycle

gPROMS advantage
Clear, concise language

Modelling power

Application area

Rate based separation modelling


Reaction system modelling
Solution crystallisation
Fuel cell system modelling
Biotreatment processes

improve yield and throughput

allows you to quantify


temperatures and
compositions in every part
of the reactor.

you can operate closer to


the catalyst limits to
improve selectivity, thus
maximising yield and
throughput.

save operating costs

Similar models of multitubular reactors


allow you to locate and eliminate hotspots.

optimise batch operating


procedures

Dynamic optimisation can be used to


determine the optimal batch operating
policy

maximise catalyst life

Modelling enables to optimise the


catalyst changeover frequency of this
complex large-scale reactor system

understand what is
happening inside

allowing proper quantification of the


operating envelope, enabling you to
optimize equipment and control designs
rapidly

How to use gPROMS


When using gPROMs to made a model and
work it out, user first need know how to
express this model by math.
gPROMs language, like C language and
Fortrun language, has some intrinsic
functions which used in equations to
perform mathematical operators, i .e, partial
and integral.

Case condition structure


For condition structure
IF condition structure

IF A > B THEN
FlowOut = ??????? ;
ELSE
FlowOut = ????? ;
END # If

FOR i := 1 TO 100 DO
T(i) = ???? ;
END

Fin

Fout
Buffer tank with gravity-driven outflow.
Mass balance
dM
= Fin Fout
dt
Relation between liquid level and holdup

Ah = M
Characterisation of the output owrate
Fout =

Step 1: create a new gPROMS Project

Variable Types
Stream Types
Models
Tasks
Processes
Optimisations
Estimations
Experiments
Saved Variable Sets
Miscellaneous Files

Setp 2: create a new MODEL


PARAMETER
DISTRIBUTION_DOMAIN
UNIT
VARIABLE
SELECTOR
SET
EQUATION

PARAMETER
Rho
AS REAL
CrossSectionalArea AS REAL
Alpha
AS REAL
VARIABLE
HoldUp
FlowIn, FlowOut
Height

AS Mass
AS MassFlowrate
AS Length

EQUATION
# mass balance
$Holdup= Flowin Flowout;
#calculation of height through holdup
Holdup=CrossSectionArea*Height*Rho;
#Assume aquare root presure drop flowrate
relation
Flowout=Alpha*SQRT(Height);

Step 3: define VARIABLE


For example: Mass, MassFlowrate,
Length

Step 4: create a new PROCESS

UNIT
# UnitName AS ModelName
SET
# ParameterPath := Expression ;
# ParameterPath := [ Expression < , ... > ];
EQUATION
# Equations
ASSIGN
# VariablePath := Expression ;
PRESET
# VariablePath := InitialValue ;
# VariablePath := InitialValue : LowerBound : UpperBound
SELECTOR
# SelectorPath := FlagPath ;
# SelectorPath := [ FlagPath < , ... > ];
INITIAL
# STEADY_STATE
SOLUTIONPARAMETERS
SCHEDULE
# OperationSchedule

UNIT
T101 AS BufferTank
SET
T101.Rho := 1000 ; # kg/m3
T101.CrossSectionalArea := 1 ; # m2
T101.Alpha := 10 ;
ASSIGN
T101.Fin := 20 ;

SOLUTIONPARAMETERS
REPORTINGINTERVAL := 60;

CONTINUE FOR TimePeriod (1800)

Step 5: Syntax checking

Step 6: run

Case 1

Case 2
Fin

Fout

Fout =

PARAMETER
Rho
AS REAL
CrossSectionalArea AS REAL
WeirHeight
AS REAL
Alpha
AS REAL
VARIABLE
FlowIN, FlowOut1, FlowOut2
HoldUp
Height

AS MassFlowRate
AS Mass
AS Length

SELECTOR
Valve
AS ( ON, OFF) DEFAULT OFF
EQUATION
# Mass Balance
$HoldUp = FlowIn - FlowOut1 - FlowOut2;
# Calculation of liquid level from holdup
HoldUp = CrossSectionalArea * Height * Rho;
#Assign squart root pressure drop flow relation
FlowOut1 = Alpha * SQRT ( Height);
CASE Valve OF
WHEN ON :FlowOut2 = 7* LOG ( Height * Height );
SWITCH TO OFF IF Height < WeirHeight - 2;
WHEN OFF : FlowOut2 = 0;
SWITCH TO ON IF Height > WeirHeight + 2;
END # CASE

UNIT
T101 AS Adjustivetank
SET
T101.Rho
T101.CrossSectionalArea
T101.Alpha
T101.WeirHeight

:=100; #Kg/m3
:= 1; # m2
:= 7;
:= 30; # m

ASSIGN
T101.FlowIn := 80;
INITIAL
T101.Height = 10;
SOLUTIONPARAMETERS
REPORTINGINTERVAL :=10;
SCHEDULE
CONTINUE FOR 200

Potrebbero piacerti anche