Вы находитесь на странице: 1из 86

PDTS USERS’ GUIDE

8.0
PRO/II 8.0
Data Transfer System Users’ Guide
PRO/II 8.0 Data Transfer System Use of the PRO/II program, and its component parts and
Users’ Guide subsystems, is governed by the terms and conditions of a
separate written agreement between your employer and Invensys
Systems, Inc., its subsidiaries or affiliates..
Copyright Notice Copyright © 2006 Invensys Systems, Inc. All rights reserved.
No part of the material protected by this copyright may be
reproduced or utilized in any form or by any means, electronic or
mechanical, including photocopying, recording, broadcasting, or
by any information storage and retrieval system, without
permission in writing from Invensys Systems, Inc.
Trademarks PRO/II and Invensys SIMSCI-ESSCOR are trademarks of
Invensys plc its subsidiaries and affiliates.
AMSIM is a trademark of DBR Schlumberger Canada Limited.
® is a trademark registered to KOCH-GLITSCH.
RATEFRAC
®
BATCHFRAC is a trademark registered to KOCH-GLITSCH.
Visual Fortran is a trademark of Intel Corporation.
Windows NT, Windows 2000, Windows XP, Windows 2003, and
MS-DOS are trademarks of Microsoft Corporation.
Adobe, Acrobat, Exchange and Reader are trademarks of Adobe
Systems, Inc.
All other products may be trademarks of their respective owners.
U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND
The Software and accompanying written materials are provided
with restricted rights. Use, duplication, or disclosure by the
Government is subject to restrictions as set forth in
subparagraph (c) (1) (ii) of the Rights in Technical Data And
Computer Software clause at DFARS 252.227-7013 or in
subparagraphs (c) (1) and (2) of the Commercial Computer
Software-Restricted Rights clause at 48 C.F.R. 52.227-19, as
applicable. The Contractor/Manufacturer is: Invensys Systems,
Inc. (Invensys SIMSCI-ESSCOR) 26561 Rancho Parkway South,
Suite 100, Lake Forest, CA 92630, USA.

Printed in the United States of America, June 2006.


Contents

Introduction
About This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . i
About PRO/II. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii
About SIMSCI-ESSCOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii
Technical Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ii

Chapter 1 PDTS Introduction


What is PDTS? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-1
Program Limits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-1
PRO/II Results Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .1-2
Generating the PDTS Application . . . . . . . . . . . . . . . . . . . . . . . . . .1-3
Data Retrieval using Class, Attribute and Item . . . . . . . . . . . . .1-3
Specifying Units of Measure (UOM) of the Retrieved Data. . . .1-5
Returning the UOM of the Retrieved Data . . . . . . . . . . . . . . . .1-5
Handling Simulations with Multiple Cases . . . . . . . . . . . . . . . .1-6

Chapter 2 Build Procedures for PDTS


Build Procedure for PRO/II PDTS . . . . . . . . . . . . . . . . . . . . . . . . . .2-1
Using PDTS with PRO/II . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2-2
Generating PRO/II Database Files . . . . . . . . . . . . . . . . . . . . . . . . . .2-2
Building a PDTS Executable File Using Compaq Fortran 6.x . . . . . .2-2
Building a PDTS Executable File Using Intel Visual Fortran 8.0. . . .2-4

Chapter 3 PDTS Subroutines and Functions


Opening Database Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-2
Obtaining a List of Case Study IDs . . . . . . . . . . . . . . . . . . . . . . . . .3-3
Setting Up an Individual Case Study . . . . . . . . . . . . . . . . . . . . . . . .3-4
Retrieving Miscellaneous Flowsheet Data . . . . . . . . . . . . . . . . . . . .3-5
Retrieving Flowsheet Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-6
Floating Point Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3-6

PRO/II Data Transfer System Users’ Guide 7


Integer Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-7
Character Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8
Retrieving Unit of Measure String. . . . . . . . . . . . . . . . . . . . . . . . . . 3-9
Writing Character Output . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-10
Closing Database Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-11

Chapter 4 PDTS Example Problems


General Instructions for Running a PDTS Problem. . . . . . . . . . . . . 4-1
Example Problem 4-1: Compressor Train . . . . . . . . . . . . . . . . . . . . 4-2
Task Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
Creating the PDTS Application Program . . . . . . . . . . . . . . . . . 4-2
Example Problem 4-2: Single Column . . . . . . . . . . . . . . . . . . . . . . 4-6
Task Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-6
Creating the PDTS Application Program . . . . . . . . . . . . . . . . . 4-6
Example Problem 4-3: Trayed Column . . . . . . . . . . . . . . . . . . . . . . 4-9
Task Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-9
Creating the PDTS Application Program . . . . . . . . . . . . . . . . . 4-9

Chapter 5 Attribute Lists


Component Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2
Stream Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-3
Unit Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-4
Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5
Valve . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-5
Compressor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6
Expander . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-6
Pump . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-7
Pipe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-7
HX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-9
HXRIG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-10
LNGHX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-14
Shortcut . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-15
Column/Side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-16
LLEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-18
HCurve. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-19
Phase Envelope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-20
Calculator. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-21
Equilibrium Reactor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-21
Conversion Reactor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-22

8 Contents
CSTR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-23
Plug Flow Reactor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-24
Gibbs Reactor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5-25
User-Added Unit Operations. . . . . . . . . . . . . . . . . . . . . . . . . .5-25

Chapter 6 PDTS Example Listings


Example 6-1 — Fortran Listing. . . . . . . . . . . . . . . . . . . . . . . . . . . .6-1
Example 6-2 — Fortran Listing. . . . . . . . . . . . . . . . . . . . . . . . . . . .6-4
Example 6-3 — Fortran Listing. . . . . . . . . . . . . . . . . . . . . . . . . . . .6-6

Chapter 7 User-Addressable Utility Functions


Subroutine FIGETU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7-1

Chapter 8 Guide for Pre-v5.5 PDTS-UAS Users


PDTS Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-1
UAS Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8-1
Guide for PDTS and UAS v4.0 Users. . . . . . . . . . . . . . . . . . . . . . . .8-2

Index ...............................................................I-1

PRO/II Data Transfer System Users’ Guide 9


Introduction

About This Manual


This manual provides instructions on using the PRO/II Data Trans-
fer System (PDTS) utilities for PRO/II. An outline of the manual is
provided below.
The PDTS utility is covered in Chapters 1-8:

Chapter 1 PDTS Introduction Describes PDTS utility features, explains the


Class, Attribute, and Item concepts underlying
the PDTS utility, and describes how to handle
simulations with multiple case studies.
Chapter 2 Build Procedure Describes compiling and linking PDTS programs.
for PRO/II PDTS
Chapter 3 PDTS Subroutines Explains the function of each PDTS subroutine,
and Functions describes the argument list for each subroutine,
and shows how to use each subroutine through
brief example problems.
Chapter 4 PDTS Example Provides three example PDTS problems used to
Problems learn the general procedures to successfully
building a PDTS program.
Chapter 5 Attribute Lists Provides Class and Attribute lists for PDTS.
Chapter 6 PDTS Example Provides the Fortran listings of the example
Listings problems of Chapter 4.
Chapter 7 User-Addressable Describes a utility that guarantees that the
Utility Functions Fortran unit number passed to your Fortran
OPEN statement will not conflict with files
opened by the PDTS system.
Chapter 8 Guide for Pre-v5.1 Outlines rules for users of PDTS/UAS
PDTS-UAS Users subroutines written for PRO/II versions prior to
v5.1.

PRO/II Data Transfer System Users’ Guide i


About PRO/II
PRO/II is a comprehensive computer simulation system for process
engineers in the chemical, petroleum, natural gas, solids processing,
and polymer industries. It combines the data resources of a large
chemical component library and extensive thermodynamic property
prediction methods with the most advanced and flexible unit
operations techniques. It provides the process engineer with the
computational facilities to perform all mass and energy balance
calculations needed to model most steady-state processes.
The PRO/II process simulation program is designed with both the
beginner and the expert in mind. It is based on a foundation of
comprehensive, reliable, and accurate simulation capabilities. It is
easy to use, and the input language is an extension of the universal
language of chemical engineering. Expert systems, extensive input
processing and error checking allow even an inexperienced user to
be instantly productive. These features have made PRO/II an
industry standard.
The PRO/II Data Transfer System (PDTS) is a post-processing util-
ity that enables you to electronically access a wide range of flow-
sheet data from any completed PRO/II simulation. The data
retrieved may then be used in any other application.

About SIMSCI-ESSCOR
SIMSCI-ESSCOR, an operating unit of Invensys plc., is a leader in
the development and deployment of industrial process simulation
software and systems for a variety of industries, including oil and
gas exploration, petroleum refining, petrochemical and chemical
manufacturing, electrical power generation, mining, pulp and paper,
and engineering and construction. SIMSCI-ESSCOR products
enable clients to minimize capital requirements, optimize facility
performance, and maximize returns on investments in producing
assets. SIMSCI-ESSCOR supports more than 750 client companies
in more than 70 countries. For more information, visit the SIM-
SCIESSCOR Website at www.simsciesscor.com.

Technical Support
SIMSCI and its agents around the world provide technical support
and service for PRO/II. If you have any questions regarding pro-

ii Introduction
gram use or the interpretation of program output, contact your local
SIMSCI representative for advice or consultation.
When calling a Technical Support Center, be prepared to describe
your problem or the type of assistance you feel you require. Also, to
expedite your request, please observe the following before calling:
■ Have the installation CD and printed documentation available.
■ Determine the type of computer you are using.
■ Determine the amount of free disk space available on the disk
where PRO/II is installed.
■ Note the exact actions you were taking when the problem
occurred, as well as the steps you took leading up to that point.
■ Note the exact error messages that appear on your screen, as
well as any other symptoms.

PRO/II Data Transfer System Users’ Guide iii


Chapter 1
PDTS Introduction

This chapter introduces the PDTS utility for PRO/II. In this chapter
you will:
■ Determine what PRO/II files you need when using PDTS.
■ Learn the Class, Attribute, and Item concept underlying the
PDTS utility.
■ Find out how to handle units of measure (UOM).
■ Learn how to handle simulations with multiple case studies.

What is PDTS?
The PRO/II Data Transfer System (PDTS) is a post-processing util-
ity that provides electronic access to a wide range of flowsheet data
from any completed PRO/II simulation. The data retrieved may then
be used in any other application. This manual describes how to use
this tool effectively.

Program Limits
Although a PRO/II simulation has no explicit limits on the size of
its parameters, PDTS is constrained due to the nature of the retrieval
process which uses the FORTRAN language. The standard limits
for this release are listed in Table 1-1. If the PRO/II simulation
exceeds any of these limits, a warning will be sent to the standard
output and execution will terminate. If your requirements exceed
these limits, contact your SIMSCI representative to request an
enlarged version of PDTS.

PRO/II Data Transfer System Users’ Guide 1-1


Table 1-1: Limits of Standard PDTS
Category Limit (max)
Components 300
Streams 984
Unit operations 500
Trays in a column or LLEX 500
Feed streams to a column 20
Product draws from a column 10
Separate curves in any HCURVE unit 50
Points in any individual HCURVE 100
Separate curves in any Phase Envelope 20
Points in any Phase Envelope curve* 120
* This limit cannot be extended by using an enlarged version of PDTS.

PRO/II Results Files


In normal use, the results of a PRO/II simulation are either sent to
an output file or viewed through the PRO/II user interface. You may
wish to capture these results in a form that can be used to interface
with other programs such as spreadsheets, costing and sizing pro-
grams, customized reports, and so on.
PRO/II generates three temporary database files that contain all
PRO/II input and calculation results. On most operating systems,
these files have the extensions .PRO1, .PRO2, and .PRO3; on the PC,
the file extensions are .PR1, .PR2, and .PR3. When PRO/II is exe-
cuted from a keyword file in batch mode, these database files are
normally deleted after the output report is generated.
By default, PRO/II saves the temporary .PR1, .PR2, and .PR3 data-
base files in the form of a zipped permanent .PRZ file unless you
specify otherwise. PDTS cannot read a .PRZ file. Therefore you
must either use PKUNZIP.EXE to unzip the .PRZ file or use the Save
as .PR1 option in PRO/II.
For PRO/II runs, it is not necessary to generate an output report for
complete PDTS data access. If the flowsheet has solved, you may
alternatively select Output/Perform Output Calculations and save
the flowsheet. This will perform all the necessary additional calcu-
lations needed for PDTS applications.

1-2 PDTS Introduction


To retain the database files:
➤ Change the TITLE statement in the PRO/II keyword input file by
adding the keyword NEWFILE= as illustrated below:
TITLE ..... , NEWFILE=xxxx, CASEID=yyyy
where:
xxxx = Primary file name
yyyy = Case ID name

Note: The Case ID name is optional if the PRO/II simulation has


only a base case. (The default Case ID name is BASECASE.) If the
simulation entails multiple cases, the Case ID is required.
The changes to the keyword file described above are identical to
those used in case study and restart operations.

Note: Refer to the PRO/II Keyword Manual, Chapters 14.1 and


14.2, for further information on restart and case study options.

Generating the PDTS Application


The PDTS application is a new independent program written by the
user in FORTRAN. Input to this new program are the PRO/II data-
base files discussed above. The application will call the PDTS sub-
routines to access the specific simulation results desired and can
then write out information in whatever format is required. Access to
specific simulation results is based on a “Class, Attribute and Item”
scheme.

Data Retrieval using Class, Attribute and Item


The Class, Attribute and Item data retrieval scheme is a greatly
improved method of accessing the PRO/II simulation results. In the
past, the user had to be familiar with dozens of separate subroutines
to retrieve data. That concept has been dramatically simplified. The
user need call one of only three subroutines to retrieve the data
required depending on the data type. The subroutine PADATR
retrieves floating point data, PADATI retrieves integer data, and
PADATC retrieves character data.

To specify the PRO/II data, the user will refer to the data as an
Attribute belonging to a particular Class and for a specified Item.
The data will then be returned to a data buffer. Class and Attribute
lists can be found in Chapter 5. The Item is the ID of the stream or

PRO/II Data Transfer System Users’ Guide 1-3


unit. The attribute ALL is used in retrieving component data and lists
of available unit and stream IDs.
The concept can be illustrated in the following example in which
one obtains the actual calculated work required for compressor unit,
C-1. In this case, the Class of data requested is ‘Compressor’. The
Attribute is ‘WorkActualCalc’, and the Item is the unit ID ‘C-1’. The
Class and Attribute names are obtained from Chapter 5, where the
work is described as a floating point scalar value. To retrieve the
floating point result and store it as variable WCALC, the user would
call subroutine PADATR in the following manner:
CALL PADATR(‘Compressor’,‘WorkActualCalc’,‘C-1’,*
WCALC,KC,KU,IU,IERR)

Note: In the above subroutine call, the Class, Attribute and Item
are supplied as character strings (i.e., enclosed in single quotes).
Class and Attribute strings are case sensitive. It is essential that
these strings be entered exactly as given in Chapter 5.
The fourth argument in the call above is the return Variable for the
Attribute. In the example above, data are returned in WCALC. Since
Attributes are either scalar or vectors, it is the user’s responsibility
to provide a return Variable sufficiently sized to hold the returned
value.

Note: For the subroutines PADATR, PADATI, and PADATC, the first
four arguments are identical: Class, Attribute, Item and the return
Variable.
The last four arguments in the subroutine above are integer argu-
ments KC, KU, IU, and IERR. In the order shown above, these argu-
ments are used to:
■ Determine the number of items returned.
■ Specify the Unit of Measure Group.
■ Return the Unit of Measure Class.
■ Test whether an error occurred.
All subroutine and function calls are described in detail in
Chapter 3, PDTS Subroutines and Functions.

1-4 PDTS Introduction


Specifying Units of Measure (UOM) of the Retrieved Data
In past versions of PDTS, you could not control the UOM of the
returned data items. The current version of PDTS offers limited
UOM control. You can return data in the input units specified for
the simulation in the keyword input on the DIMENSION statement or
one of seven different UOM groups given in Table 1-2.
Table 1-2: Unit of Measure Groups for KU
Value for KU Description
0 Default input units as specified on the DIMENSION
statement
1 SIMSCI Internal Units (SI)
2 Standard English Units (Table 4.1, PRO/II Keyword
Manual)
3 Standard Metric Units (Table 4.1, PRO/II Keyword
Manual)
4 Standard SI Units (Table 4.1, PRO/II Keyword Manual)
5 Input units (the default)
6 Primary output units as specified on the OUTDIME
statement
7 Alternative output units as specified on the OUTDIME
statement with keyword ADD

Example:
KU = 0
CALL PADATR(‘Compressor’,‘WorkActualCalc’,‘C-1’,WCALC,KC,*
KU,IU,IERR)

The UOM group is illustrated in the compressor example above, as


the variable KU in the call to routine PADATR. In this example, by
setting the value of KU equal to zero, you specify that variable
WCALC will contain the actual work in user input units correspond-
ing to the DIMENSION statement in the original PRO/II keyword
input file.

Returning the UOM of the Retrieved Data


In the example given above, variable IU will contain a UOM class
flag for the retrieved data. This class flag can then be passed to the
character function PAUOMS and used to print a string with the cor-
rect UOM as shown below.

PRO/II Data Transfer System Users’ Guide 1-5


Example:
CHARACTER*30 CBUF, PAUOMS
.
.
.
KU = 0
CALL PADATR(‘Flash’,‘DutyCalc’,‘F-1’,QCALC,KC,
KU,IU,IERR)
CBUF = PAUOMS(IU, KU, IERR)
.
.
WRITE (NF,1001) QCALC, CBUF
1001 FORMAT(‘The Duty of Flash F-1 = ’, F10.4, A30)

In the example, variable CBUF contains a character stream with the


default input duty units. Thus, if the PRO/II flowsheet uses
BTU/H for duty units, and the results yield a duty of 5.0 for unit F-1,
the output of this PDTS application would read:
The Duty of Flash F-1 = 5.0000 MMBTU/HR

Handling Simulations with Multiple Cases


If the Case Study option has been used in the PRO/II simulation,
data will be stored in the database files under separate Case IDs. It
is possible to set up individual cases and retrieve selected data for
each case using the following subroutines that are described in
detail in Chapter 3:
■ Subroutine PACASL will retrieve an array of 8-character strings
corresponding to the CASE IDs.
■ Subroutine PACASE will set up an individual case.

Note: These routines are not required if the BASECASE is the only
case of interest.

1-6 PDTS Introduction


Chapter 2
Build Procedures for PDTS

A PDTS program is a Fortran program that calls PDTS functions to


retrieve results from a PRO/II run. The PDTS program must be
compiled and linked using one of the following two compilers:
■ Compaq Visual Fortran (version 6.1 through 6.6b)
■ Intel Visual Fortran version 8.0 for Windows (Standard or Pro-
fessional Edition)
The build procedures outlined in this chapter assume that you are
familiar with the specific compiler being used.

Build Procedure for PRO/II PDTS


You can compile and link your PDTS program using Compaq
Visual Fortran (version 6.1 through 6.6b) or Intel Visual Fortran
version 8.0 for Windows (Standard or Professional Edition). PDTS
programs built with these compilers can run under Windows NT,
Windows 2000, or Windows XP at the command prompt. (Note:
Intel Visual Fortran 8.0 is not supported on Windows 98/ME for
application development; however, applications created by Intel
Fortran 8.0 will run on these platforms.)
In the sample build procedure outlined below, we will run the sam-
ple problem EXAM1.INP, compile and link the sample PDTS pro-
gram EXAM1.FOR, and then run the PDTS executable file to
generate a custom output report.

PRO/II Data Transfer System Users’ Guide 2-1


Note: These instructions assume that you have installed PRO/II
PDTS in the default directory structure, C:\SIMSCI\PROII80.
Modify the paths indicated in the example if you have installed
the program in a directory structure other than the default.

Using PDTS with PRO/II


To use the PDTS utility with PRO/II:
➤ Run a flowsheet problem successfully to generate the necessary
database files.
➤ Compile, link, and run your PDTS program.

Generating PRO/II Database Files


To locate and run the EXAM1.INP input file:
➤ Run PRO/II.
➤ Import the EXAM1.INP file, located in the
C:\SIMSCI\PROII80\USER\PDTS\EXAMPLES directory.

➤ Save the simulation as a .PR1 file. (By default, PRO/II saves


simulations as .PRZ files.)
PRO/II runs the problem EXAM1 and generates database files
EXAM1.PR1, EXAM1.PR2, and EXAM1.PR3 (by default, located in
C:\SIMSCI\PROII80\USER\PDTS\EXAMPLES).

➤ Compile and link EXAM1.FOR to create the PDTS program.

Building a PDTS Executable File Using Compaq Fortran 6.x


If you are using Compaq Visual Fortran 6.x, we strongly recom-
mend that you take advantage of the free upgrades available from
HP/Compaq to bring your complier up to 6.6b. Compaq Visual
Fortran patches are available at
http://h18009.www1.hp.com/fortran/visual/updates.html.
Depending on the options selected when you installed Compaq
Visual Fortran 6.6b, you may not have oldnames.lib installed on
your computer. This library is required to build PDTS applications
and is located on the Compaq Visual Fortran CD in the \X86\SUP-
PORT\LIB directory. If you do not have this library, copy it into

2-2 Build Procedures for PDTS


your Compaq Visual Fortran library directory before building
PDTS applications.
To build a PDTS executable file using Compaq Visual Fortran:
➤ Start Compaq Visual Fortran (version 6.1 through 6.6b)..
➤ Select File/Open Workspace from the menu bar.
➤ Select the file \SIMSCI\PROII80\USER\PDTS\EXAM-
PLES\VF6\EXAM1.DSW and click OK.

Note: All sample files are located in \SIM-


SCI\PROII80\USER\PDTS\EXAMPLES. The Compaq
Fortran 6.x workspace files are located in
\SIMSCI\PROII80\USER\PDTS\EXAMPLES\VF6.
➤ Locate the PRO/II error and support files, PROII.ERR and
PROII.SP1. By default, they should be in
C:\SIMSCI\PROII80\SYSTEM. However, they may be in a dif-
ferent directory if you modified the PRO/II directory structure
during installation.

Note: If PROII.ERR and PROII.SP1 are in a directory other than


the one specified above, you must edit the directory path in
EXAM1.FOR as shown below.
To edit the EXAM1.FOR file:
➤ Select View/Workspace from the menu bar.
➤ Select the File View tab in the workspace window.
➤ Expand the EXAM1 files node in the workspace window tree.
➤ Expand the Source Files node in the workspace window tree.
➤ Double-click on EXAM1.FOR to open the file for editing.
➤ Search for the string PAOPEN in the file EXAM1.FOR.
Replace SIMSCI\PROII80\SYSTEM\ in the argument list of
the function call PAOPEN with the correct directory path to the
files PROII.ERR and PROII.SP1, for example, D:\SIMSCI\
PROII80\SYSTEM\.

Note: See Chapter 3 for function call PAOPEN arguments.


➤ Save your changes to EXAM1.FOR.
Now, you can build the new executable file:

PRO/II Data Transfer System Users’ Guide 2-3


➤ Select the Build EXAM1.EXE option from the Build menu.
The PDTS program EXAM1.EXE will be built in the directory
\SIMSCI\PROII80\USER\PDTS\EXAMPLES. This program can
be run under Windows NT, Windows 2000, or Windows XP at the
command prompt.
You can now run the program either from the command line or from
within Compaq Fortran.
To run from within Compaq Fortran:
➤ Select Execute EXAM1.EXE from the File menu.
You will be prompted for the name of the database files.
➤ Type EXAM1. The EXAM1.EXE file extracts data from a train of
compressors and generates an output report (in EXAM1.PDS).

Note: If the EXAM1.PR* database files are located in the direc-


tory directly above the directory containing the make file, type
..\EXAM1 instead.

➤ Compare the results in EXAM1.PDS with the test results in the


file EXAM1.CKP (these will be in the same directory as your
EXAM1.PR* files). If your PDTS example ran successfully, there
should be no difference between the files.

Building a PDTS Executable File Using Intel Visual Fortran 8.0


If you are using Intel Visual Fortran 8.0, source code modifications
are required for interoperation with Compaq Fortran 6.x.
To build a PDTS executable file using Intel Visual Fortran:
➤ Start Microsoft Visual Studio .NET.
➤ Select File/Open Solution from the menu bar.
➤ Select the file \SIMSCI\PROII80\USER\PDTS\EXAM-
PLES\IF8\EXAM1.sln and click OK.

Note: All sample files are located in \SIM-


SCI\PROII80\USER\PDTS\EXAMPLES. The Microsoft
Visual Studio .NET solution files (which are used to build
the Intel Fortran 8.0 applications) are located in
\SIMSCI\PROII80\USER\PDTS\EXAMPLES\IF8.
➤ Locate the PRO/II error and support files, PROII.ERR
and PROII.SP1. By default, they should be in

2-4 Build Procedures for PDTS


C:\SIMSCI\PROII80\SYSTEM. However, they may be in a dif-
ferent directory if you modified the PRO/II directory structure
during installation..

Note: If PROII.ERR and PROII.SP1 are in a directory other


than the one specified above, you must edit the directory path
in EXAM1_IF8.FOR as shown below.

Note: EXAM1_IF8.FOR is a modified version of


EXAM1.FOR to allow PDTS applications compiled with Intel
Fortran 8.0 the ability to write output to the standard output
files provided by PRO/II 8.0 PDTS.

To edit the EXAM1_IF8.FOR file:


➤ Select View/Solution Explorer from the menu bar.
➤ Expand the EXAM1 node in the solution explorer tree.
➤ Expand the Source Files node in the solution explorer tree.
➤ Double-click on EXAM1_IF8.FOR to open the file for editing.
➤ Search for the string PAOPEN in the file EXAM1_IF8.FOR.
Replace SIMSCI\PROII80\SYSTEM\ in the argument list of
the function call PAOPEN with the correct directory path to the
files PROII.ERR and PROII.SP1, for example, D:\SIM-
SCI\PROII80\SYSTEM\.
➤ Save your changes to EXAM1_IF8.FOR.
Now, you can build the new executable file:
➤ Select the Build EXAM1 option from the Build menu.
The PDTS program EXAM1.EXE will be built in the directory
\SIMSCI\PROII80\USER\PDTS\EXAMPLES. This program can
be run under Windows NT, Windows 2000, or Windows XP at the
command prompt.
You can now run the program either from the command line or from
within Microsoft Visual Studio .NET.
To run from within Visual Studio .NET:
➤ Select Start Without Debugging from the Debug menu.
➤ Select Execute EXAM1.EXE from the File menu.

PRO/II Data Transfer System Users’ Guide 2-5


You will be prompted for the name of the database files.
➤ Type EXAM1. The EXAM1.EXE file extracts data from a train of
compressors and generates an output report (in EXAM1.PDS).

Note: If the EXAM1.PR* database files are located in the direc-


tory directly above the directory containing the make file, type
..\EXAM1 instead.

➤ Compare the results in EXAM1.PDS with the test results in the


file EXAM1.CKP (these will be in the same directory as your
EXAM1.PR* files). If your PDTS example ran successfully, there
should be no difference between the files.

2-6 Build Procedures for PDTS


Chapter 3
PDTS Subroutines and Functions

This chapter describes the ten user-callable subroutines of the


PRO/II Data Transfer System shown in Table 3-1. This chapter:
■ Describes what each PDTS subroutine can do.
■ Explains the argument list for each subroutine.
■ Illustrates each subroutine through a brief sample problem.
Table 3-1: Standard PDTS Subroutines
Routine Purpose
PAOPEN Opens the database files (required)
PACASL Lists available case IDs
PACASE Sets up an individual case (required for Case Study)
PAMISC Retrieves miscellaneous flowsheet parameters (required)
PADATR Retrieves single precision floating point data
PADATI Retrieves integer data
PADATC Retrieves character type data
PAUOMS Retrieves unit of measure string
PAWRITE Writes a line of character data to the standard output file
provided by PRO/II PDTS.
PACLOS Closes database files (required)
FIGETU Returns unique Fortran file unit number

PRO/II Data Transfer System Users’ Guide 3-1


Opening Database Files
SUBROUTINE PAOPEN(NAME, SPATH, NFOUT, IRCODE)

Purpose:
To open PRO/II database files for access and to create a user-acces-
sible output file.

Note: This routine must be called before any other PDTS routine
in this system.

Arguments:
NAME Character string corresponding to the primary file
name (name) on the TITLE statement specified by
the keyword NEWFILE=name. The PRO/II database
files name.PR1, etc. must be in the current directory
when the application is executed.
SPATH Character string consisting of path to error and
support files. If these files were installed in default
location on the (same disk drive as the PDTS
application was run from), then user may enter a
blank string - ' ' ('<space>') for this argument
NFOUT The Fortran output file unit number for the default
PDTS output file. The default file name will be
name.PDS.
IRCODE Return code (non-zero indicates error
condition).

Example:
CHARACTER*8 NAME
.
.
1001 FORMAT(‘Enter File Name ’)
1002 FORMAT(A)
1003 FORMAT(‘Data Retrieved Reported for File = ’,A10)
WRITE(*, 1001)
READ(*, 1002) NAME
.
CALL PAOPEN (NAME, ‘ ’, NFOUT, IRCODE)
WRITE (NFOUT, 1003) NAME
In the above example, you are prompted to supply, through the stan-
dard input, the file name for database retrieval. Subsequent output is
written to Fortran unit NFOUT. System support and error files are
assumed in their default location. On the PC the default is the direc-
tory: \SIMSCI\PROII_W\SYSTEM\. On UNIX systems the default is
the directory: /usr/local/lib/simsci/ssilib/.

3-2 PDTS Subroutines and Functions


If you have installed the PRO/II error and support files on the C:
drive but are executing the PDTS application on the D: drive, then
the full path to the PRO/II error and support files must be entered as
the SPATH argument. In the above example, the subroutine call will
be changed to read:
CALL PAOPEN (NAME, ‘C:\PSIMSCI\PROII_W\SYSTEM\ ’,NFOUT,IRCODE)

Note: Normally PAOPEN is used to open the PRO/II database files


and a single file for output. However, you may wish to open addi-
tional files for input or output. This can be accomplished using the
FIGETU subroutine (see Chapter 7).

Obtaining a List of Case Study IDs


SUBROUTINE PACASL (MXN, KNX, CASEN, IRCODE)

Purpose:
To return an array of CHARACTER*12 strings with the case IDs
which are available in the current PRO/II database files opened by a
previous call to PAOPEN.

Note: This routine is required only when the user wishes to


retrieve data from cases other than BASECASE.

Arguments:

MXN Number of elements in the CASEN array in the


calling routine.
KNX Number of case IDs actually found in file.
CASEN Array of CHARACTER*12 strings containing the
available case IDs.
IRCODE Return code (non-zero indicates error
condition).

Example:
PARAMETER (MXN = 25)
.
CHARACTER*12 NAME, CASEN (MXN)
.
.
1001 FORMAT (‘Enter File Name ’)
1002 FORMAT (A)
1003 FORMAT (‘Number Case IDs Found = ’,I5, /)
1004 FORMAT (I5, 1X,A14)
WRITE (*, 1001)
READ (*, 1002) NAME

PRO/II Data Transfer System Users’ Guide 3-3


.
CALL PAOPEN (NAME, ‘ ’, NFOUT, IRCODE)
C
C Retrieve Available Case IDs and Display on Screen
C
CALL PACSL (MXN, KXN, CASEN, IRCODE)
WRITE (*, 1003) KXN
NXN = MIN (MXN, KXN)
DO 2001 IX = 1, NXN
WRITE (*, 1004) IX, CASEN (IX)
2001 CONTINUE

Setting Up an Individual Case Study


SUBROUTINE PACASE( CASEX, IRCODE)

Purpose:
To set up an individual simulation case.

Note: Subroutine PAOPEN must be called prior to opening the


PRO/II database.
If the desired case ID is not known, you should call subroutine
PACASL to obtain a list of case IDs. If the required case is
BASECASE, a call to this routine is not required.

Arguments:

CASEX Character*12 case ID.


IRCODE Return code (non-zero indicates error condition).

Example:
PARAMETER (MXN = 25)
.
CHARACTER*12 NAME, CASEN (MXN), CASEX
.
.
1001 FORMAT (‘Enter File Name: ’)
1002 FORMAT (A)
1003 FORMAT (‘ Number Case IDs Found = ’,I5, /)
1004 FORMAT (I5, 1X,A14)
1005 FORMAT (‘ Enter Case ID : ’)
WRITE (*, 1001)
READ (*, 1002) NAME
.
CALL PAOPEN (NAME, ‘ ’, NFOUT, IRCODE)
CALL PACASL (MXN, KXN, CASEN, IRCODE)
WRITE (*, 1003) KXN
NXN = MIN (MXN, KXN)
DO 2001 IX = 1, NXN
WRITE (*, 1004) IX, CASEN (IX)
2001 CONTINUE
C

3-4 PDTS Subroutines and Functions


C Set Up Desired Case
C
WRITE (*, 1005)
READ (*, 1002) CASEX
CALL PACASE (CASEX, IRCODE)

Retrieving Miscellaneous Flowsheet Data


SUBROUTINE PAMISC(NCOMP, NSTRM, NUNIT, IRCODE)

Purpose:
To retrieve basic flowsheet parameters and initialize the system.
This subroutine must be called before any call to retrieve other
flowsheet data items. If a case other than BASECASE is to be set up,
then this routine should be called after a call to PACASE. If the flow-
sheet case is not a converged solution, IRCODE will be equal to 1,
and an error message will be displayed to the standard output.

Arguments:

NCOMP Number of components.


NSTRM Number of streams.
NUNIT Number of unit operations.
IRCODE Return code (non-zero indicates error condition).

Example:
1001 FORMAT (‘Number of Components = ’, I5, /,
+ ‘Number of Streams = ’, I5, / ,
+ ‘Number of Unit Ops = ’, I5)
1002 FORMAT(‘ Solution Not Reached !! ’)
.
CALL PAOPEN ( NAME, ‘ ’, NFOUT, IRCODE)
.
CALL PACASE ( CASEX, IRCODE)
C
C Get Miscellaneous Flowsheet Data

CALL PAMISC (NCOMP, NSTRM, NUNIT, IRCODE)


C
C Check Return Code
C

IF ( IRCODE .EQ. 0) THEN


WRITE (NFOUT, 1001) NCOMP, NSTRM, NUNIT
ELSE
WRITE (*, 1002)
STOP
ENDIF

PRO/II Data Transfer System Users’ Guide 3-5


Retrieving Flowsheet Data
Floating Point Data
SUBROUTINE PADATR (CLASS, ATTRIB, ITEM, RBUF,
KC, KU, IU,IRCODE)

Purpose:
To retrieve single precision floating point data from the PRO/II
flowsheet described by Class, Attribute and Item to store the
retrieved data in variable RBUF. The retrieved data item may be
either a single number or an array of values.

Arguments:

CLASS Class character string identifying the class of data


requested.
ATTRIB Attribute character string identifying individual data
attribute requested within the class selected.
ITEM Item character string identifying the particular data
item for which data are requested.
RBUF REAL*4 variable sufficiently sized to hold the
retrieved data. Either scalar variable or array
depending on the Attribute requested.
KC Integer count of data items retrieved in RBUF.
KU Integer UOM group flag (0 - 7). Controls conversion
of the data in RBUF. Refer to Table 1-2.
IU Integer UOM class flag. Zero value indicates that
RBUF is dimensionless. This flag may be used to
retrieve a UOM string from function PAUOMS.
IRCODE Return code (non-zero indicates error condition).

Example:
DIMENSION XNBP (MAXNOC)
CHARACTER*20 CTEMP, PAUOMS
.
.
1001 FORMAT (‘Normal Boiling Point - DEG’, A5)
1002 FORMAT (5E15.6)
.
.
KU = 7
CALL PADATR (‘COMP’, ‘NormBoilPt’, ‘ALL’, XNBP, KC, KU,
IU, IER)
CTEMP = PAUOMS ( IU, KU, IRCODE)
WRITE (NFOUT, 1001) CTEMP(1:5)
WRITE (NFOUT, 1002) (XNBP(I), I = 1, KC)

3-6 PDTS Subroutines and Functions


In the above example, the normal boiling points for all components
are retrieved into the array XNBP. By referring to Chapter 5, the
user will find that component data require a Class of ‘COMP’ and
that the Attribute for normal boiling point is ‘NormBoilPt’. The
Attribute is also reported to be an array of values, one for each com-
ponent in the flowsheet case. Therefore, the Item is ‘ALL’. The user
must insure that XNBP is dimensioned large enough to hold all the
data.
The example also illustrates the use of character function PAUOMS
to get a string to be used in printout. By setting the Unit of Measure
group flag to 7 prior to calling PADATR, the user has specified that
the array XNBP will contain the retrieved data in Alternate Output
units as specified on the OUTDIME statement when the PRO/II run
was executed.

Integer Data
SUBROUTINE PADATI (CLASS, ATTRIB, ITEM, IBUF, KC, IRCODE)

Purpose:
To retrieve integer data from the PRO/II flowsheet described by
Class, Attribute and Item and to store the retrieved data in variable
IBUF. The retrieved data item may be either a single number or an
array of values.

Arguments:

CLASS Class character string identifying the class of data


requested.
ATTRIB Attribute character string identifying individual data
attribute requested within the class selected.
ITEM Item character string identifying the particular data
item for which data are requested.
IBUF INTEGER*4 variable sufficiently sized to hold the
retrieved data. Either scalar variable or array
depending on the Attribute requested.
KC Integer count of data items retrieved in IBUF.
IRCODE Return code (non-zero indicates error
condition).

Example:
1001 FORMAT (‘Number of Trays in Column T-1 = ’, I5)
CALL PADATI (‘Colu’,‘NumberOfTrays’,‘T-1’,NTRAY,KC,IER)
WRITE (NFOUT, 1001) NTRAY

PRO/II Data Transfer System Users’ Guide 3-7


In the above example, the number of trays for column ‘T-1’ is
retrieved into variable NTRAY. By referring to Chapter 5, the user
can determine that the Class for column data is ‘Colu’ and that the
Attribute to get the number of trays is ‘NumberOfTrays’. This is a sin-
gle integer value. In this case, the Item requested was the unit with
unit ID ‘T-1’.

Character Data
SUBROUTINE PADATC (CLASS, ATTRIB, ITEM, CBUF, KS, KC,
IRCODE)

Purpose:
To retrieve character type data from the PRO/II flowsheet described
by Class, Attribute and Item and store the retrieved data in variable
CBUF. The retrieved data item may be either a single character
string or an array of strings.

Arguments:

CLASS Class character string identifying the class of data


requested.
ATTRIB Attribute character string identifying individual data
attribute requested within the class selected.
ITEM Item character string identifying the particular data
item for which data are requested.
CBUF Character type variable sufficiently sized to hold the
retrieved data. Either single string or array depending
on the Attribute requested.
KS Size in bytes of each string retrieved.
KC Integer count of the number of data items retrieved in
CBUF.
IRCODE Return code (non-zero indicates error condition).

Example:
CHARACTER*12 UNID (MAXUOP)
.
.
CALL PADATC (‘UNIT’, ‘IDS’, ‘ALL’, UNID, KS, KC, IERR)
In this example, the unit IDs for all unit operations in the flowsheet
are retrieved into the array of character strings UNID. By reference
to Chapter 5, the user has determined that the Class for generic unit
data is ‘UNIT’ and that the Attribute to get the unit IDs is ‘IDS’. This is
an array of character strings with one member of the array for each
unit operation. Therefore, the Item requested was ‘ALL’. Variable KC

3-8 PDTS Subroutines and Functions


will have the number of items retrieved, and KS will be the size of
each individual item in bytes. In this case, KS will equal 12 because
unit and stream IDs are 12 characters in length.

Retrieving Unit of Measure String


The calling sequence is:
CHARACTER*(*) FUNCTION PAUOMS ( IU, KU, IRCODE)

Purpose:
To retrieve a character string description for the units of measure
defined by the flags IU and KU. If the value of IU passed to the func-
tion is zero indicating a dimensionless quantity, PAUOMS will return
a blank string and the IRCODE will be equal to 1. The size of the
string retrieved by PAUOMS will not exceed 30 characters.

Arguments:

IU Unit of measure class flag. This flag should be set by


a previous call to subroutine PADATR. If IU equals
zero, the quantity is dimensionless.
KU Unit of measure group flag.
IRCODE Return code (non-zero indicates error condition).

Example:
CHARACTER*30 PAUOMS, CVEL
1001 FORMAT (‘Maximum Velocity in Pipe = ’, F10.4, A30)
.
KU = 0
.
CALL PADATR (‘Pipe’, ‘CalcMaxVelocity’, ‘P-1’, VMAX, KC,
KU, IU, IERR)
CVEL = PAUOMS (IU, KU, IERR)
WRITE (NFOUT, 1001) VMAX, CVEL
In this example, the user retrieves the maximum velocity in pipe
unit P-1 by a call to PADATR. Upon return from PADATR, the value of
IU will be an integer flag corresponding to velocity units. Because
the user has set KU = 0 before the call to PADATR, the value of VMAX
is in Input units. Thus, function PAUOMS will retrieve a character
string constant with the value of VMAX.
If the velocity units on the DIME statement in the original PRO/II
keyword input file is FT/S and the velocity is 5.0, then the output to
the default output file will read:
MAXIMUM VELOCITY IN PIPE = 5.0000 FT/SEC

PRO/II Data Transfer System Users’ Guide 3-9


Writing Character Output
SUBROUTINE PAWRITE(NFOUT, CHARDATA)

Purpose:
To write a line of character data to the standard output file provided
by PRO/II PDTS.
This subroutine is required only when the PDTS application is com-
piled with Intel Visual Fortran 8.0. For PDTS applications built with
Compaq Fortran 6.x, the WRITE statement can be used directly as
in previous versions.

Arguments:

NFOUT The Fortran output file unit number.For PDTS


applications, this is provided by the subroutine
PAOPEN. For User-Added Unit Operation subroutines,
this is provided by IDATA(6) in the argument list.

Example:
CHARACTER*8 NAME
CHARACTER*133 CHARDATA
.
.
1001 FORMAT(‘Enter File Name ’)
1002 FORMAT(A)
1003 FORMAT(‘Data Retrieved Reported for File = ’,A10)
WRITE(*, 1001)
READ(*, 1002) NAME
.
CALL PAOPEN (NAME, ‘ ’, NFOUT, IRCODE)
WRITE (CHARDATA, 103) NAME
PAWRITE (NFOUT, CHARDATA)

In the above example, the PAOPEN subroutine has provided a


Fortran unit number for the output file into the variable NFOUT. If
you are compiling this PDTS application with Intel Fortran 8.0, you
must use PAWRITE to write character output to that file.

Note: Do not use PAWRITE to read/write files that you have


opened yourself (using the Fortran OPEN statement); instead, you
must use the normal Fortran WRITE statement.

3-10 PDTS Subroutines and Functions


Closing Database Files
SUBROUTINE PACLOS( )

Purpose:
This subroutine closes all database files and the default output file
opened by PAOPEN. It is recommended that this routine be called at
the end of your PDTS application.
There are no arguments.

PRO/II Data Transfer System Users’ Guide 3-11


Chapter 4
PDTS Example Problems

This chapter contains three PDTS example problems. In the first,


the PDTS application is used to create a custom output report for
the compressor train in a plant. The second example illustrates the
use of PDTS in retrieving column condenser and reboiler duties. In
the third example, PDTS is used to generate a tray-by-tray report of
column flowrates, densities, temperatures, pressures, and
compositions.
This chapter provides:
■ General procedures needed to build a PDTS program,
■ Step-by-step instructions for writing three complete PDTS
programs.

General Instructions for Running a PDTS Problem


You must first successfully run your simulation program by follow-
ing these steps:
1. Create your simulation input file directly by keyword input or
by using the PRO/II GUI.
2. Run your problem to obtain the three database files, i.e., run the
flowsheet with the TITLE statement keyword NEWFILE=xxxx,
where xxxx is the primary name of the PRO/II database files to
be retained.
3. For PRO/II GUI, solve the flowsheet, and then either generate
an output report or select Output/Perform Output Calculations.
Save the file with the extension .PR1.

PRO/II Data Transfer System Users’ Guide 4-1


For each PDTS example problem, you must then complete the fol-
lowing steps:
1. Create a PDTS Fortran main routine that will retrieve the data
required by Class, Attribute and Item, and that will print the
data to the output file in the tabular format desired.
2. Compile the PDTS Fortran routine and link with the supplied
PRO/II libraries.
3. Execute the PDTS application program.

Example Problem 4-1: Compressor Train


Task Description
The user is simulating a compressor train consisting of three stages
of compression. It is desired to create a table consolidating the out-
put results of all three stages.

Creating the PDTS Application Program


The key lines in the Fortran PDTS program are detailed in the steps
below:
1. Prompt the user of the PDTS application for the file name.
This is the same file name that was entered as keyword
NEWFILE= xxxx.
101 FORMAT(‘ *** PDTS EXAMPLE PROBLEM # 1 ***’,/,
+ ‘ ENTER FILE NAME: ’)
102 FORMAT(A)
.
.
.
C ENTER FILE NAME
C
WRITE (*,101)
READ (*,102) FNAME

2. Call subroutine PAOPEN with this name to open the database


files. It is assumed that these files are located in the current
working directory. In the call to PAOPEN, supply a blank string
as argument SFPATH (i.e., it is assumed that the PRO/II support
and error files have been installed in the default directory loca-
tion). If this is not the case, supply the appropriate path string to
this routine.
C INITIALIZE RETRIEVAL SYSTEM & OPEN SELECTED FILE
C
CALL PAOPEN(FNAME,‘ ’,NFOUT,IRCODE)

4-2 PDTS Example Problems


IF (IRCODE .NE. 0) THEN
WRITE(*,205)
STOP
ENDIF
PAOPEN will return a Fortran unit number as variable NFOUT. The
default output has a file extension of .PDS. Check the returned error
code (IRCODE) to see if there was a problem opening the files.

Note: Because there was only a single PRO/II simulation case


run, there is no need to set up a case (i.e., routines PACASE and
PACASEL are not necessary).

3. The next subroutine call is to PAMISC. This initializes data


retrieval and returns the key flowsheet parameters. Check the
returned error code from this routine. A value of 1 indicates
that the PRO/II simulation solution was not reached.
C GET MISCELLANEOUS FLOWSHEET DATA
C
CALL PAMISC(NCOMP,NSTRM,NUNIT,IRCODE)
IF (IRCODE .NE. 0) THEN
WRITE (*,203)
STOP
ENDIF

4. The next subroutine call is to PADATC which will return an array


of 12 character strings containing the unit IDs. By referring to
Chapter 5, you can see that the Class and Attribute for this
retrieval are ‘UNIT’ and ‘IDS’ respectively. Because these data are
required for all units, the Item is ‘All’.
C GET UNIT IDS
C
CALL PADATC(‘UNIT’,‘IDS’,‘ALL’,UID,KS,KC,IER)

5. Next, obtain arrays of unit type and unit description for each
individual unit. In these retrievals, the individual unit ID string
is the Item passed to PADATC. As each unit type and description
string is retrieved, it is echoed to the output file.
C GET UNIT TYPE & NAME
C
DO 1004 IX = 1, NUNIT
CALL PADATC(‘UNIT’,‘TYPE’,UID(IX),UTYPE(IX,KS,KC,IER)
C
CALL PADATC(‘UNIT’,‘NAME’,UID(IX),UNAME(IX,KS,KC,IER)
C
WRITE (NFOUT,111) IX,UID(IX),UTYPE(IX),UNAME(IX)\
1004 CONTINUE

6. Then, an iterative loop is set up to cycle through all units to


select the compressor unit operations for data retrieval. To
check the unit type, keep in mind that the first four characters

PRO/II Data Transfer System Users’ Guide 4-3


of the type string will match those of the unit operation key-
word for that unit type. Note that the user-selected default input
units are specified on the DIMENSION statement in the PRO/II
input file before calling subroutine PADATR. A series of floating
point data retrievals are set up inside the loop. In each case, the
Class is ‘Compressor’ and the call to subroutine PADATR is made
with the appropriate Attribute string as given in Chapter 5 for
Compressor data.
C SELECT COMPRESSOR UNIT OPS
C RETRIEVE DATA FOR EACH STAGE
C
KX = 1
DO 1010 IX = 1, NUNIT
CUTYPE = UTYPE(IX)
IF (CUTYPE(1:4) .EQ. ‘COMP’) THEN
C
XID(KX) = UID(IX)
XNAME(KX) = UNAME(IX)
C
CALL PADATR(‘Compressor’,‘PresInletCalc’,UID(IX),
+ PIN(KX),KC,KUOM,IPRES,IER)
C
CALL PADATR(‘Compressor’,‘TempInletCalc’, UID(IX),
+ TIN(KX),KC,KUOM,ITEMP,IER)
C
CALL PADATR(‘Compressor’,‘PresCalc’, UID(IX),
+ POUT(KX), KC,KUOM,IUOM,IER)
C
CALL PADATR(‘Compressor’,‘TempCalc’,UID(IX),
+ TOUT(KX,KC,KUOM,IUOM,IER)
C
CALL PADATR(’Compressor’,‘PRatio’,UID(IX),
+ PRAT(KX),KC,KUOM,IUOM,IER)
C
CALL PADATR(‘Compressor’,‘WorkActualCalc’,UID(IX),
+ WORK(KX, KC,KUOM,IWORK,IER)
C
CALL PADATR(‘Compressor’,‘EffAdiaCalc’,UID(IX),
+ EFF(KX) KC,KUOM,IUOM,IER)
C
CALL PADATR(‘Compressor’,‘AcDutyCalc’,UID(IX),
+ DUTY(KX), KC,KUOM,IDUTY,IER)
C
KX = KX + 1
C
ENDIF
1010 CONTINUE

7. Subroutine PADATR returns a unit of measure class flag (KUOM)


which is used after the loop to get the required unit of measure
strings from function PAUOMS.
C GET UNIT OF MEASURE STRINGS
C
DNTEMP = PAUOMS(ITEMP, KUOM, IERR)

4-4 PDTS Example Problems


DNPRES = PAUOMS(IPRES, KUOM, IERR)
DNWORK = PAUOMS(IWORK, KUOM, IERR)
DNDUTY = PAUOMS(IDUTY, KUOM, IERR)

8. Finally, a formatted table is printed.


C WRITE OUT TABLE
C
WRITE(NFOUT,112) (XID(I), I = 1, 3), (XNAME(I), I =1,3)
WRITE(NFOUT,114) DNPRES, (PIN(I), I = 1, 3)
WRITE(NFOUT,115) DNTEMP, (TIN(I), I = 1, 3)
WRITE(NFOUT,116) DNPRES, (POUT(I), I = 1, 3)
WRITE(NFOUT,117) DNTEMP, (TOUT(I), I = 1, 3)
WRITE(NFOUT,118) (PRAT(I), I = 1, 3)
WRITE(NFOUT,119) DNWORK, (WORK(I), I = 1, 3)
WRITE(NFOUT,120) (EFF(I), I = 1, 3)
WRITE(NFOUT,121) DNDUTY, (DUTY(I), I = 1, 3)
C
END
The complete code listing of Example 4-1 is given in Chapter 6.
The resulting output file is shown below:
DATA RETRIEVAL FROM FILE: G4
NUMBER OF COMPONENTS = 13
NUMBER OF STREAMS = 11
NUMBER OF UNITS = 6
UNITS
1 :F1 FLASH FEED FLASH
2 :C1 COMPRESSOR STAGE 1
3 :F2 FLASH STAGE 1 SEP
4 :C2 COMPRESSOR STAGE 2
5 :F3 FLASH STAGE 2 SEP
6 :C3 COMPRESSOR STAGE 3
COMPRESSOR TRAIN SUMMARY TABLE
UNIT ID C1 C2 C3
STAGE 1 STAGE 2 STAGE 3
INLET PRESSURE KPA 450.0000 1100.0000 2600.0000
INLET TEMPERATURE DEG C 45.0005 55.2281 56.8686
OUTLET PRESSURE KPA 1100.0000 2600.0000 6200.0000
OUTLET TEMPERATURE DEG C 102.6523 114.0621 121.7587
PRESSURE RATIO (OUT/IN) 2.4444 2.3636 2.3846
ACTUAL WORK KW 28051.49 28281.59 28049.77
ADIABATIC EFFICIENCY 78.0000 75.0000 72.0000
AFTERCOOLER DUTY M*KJ/HR -82.6188 -120.8522 -167.6049

PRO/II Data Transfer System Users’ Guide 4-5


Example Problem 4-2: Single Column
Task Description
You are simulating a single column. The objective is to do a case
study and generate a table of the effects of increasing feed flowrate
on condenser and reboiler duty for each case study.

Creating the PDTS Application Program


The key lines in the Fortran PDTS program are detailed in the steps
below:
1. Prompt the user of the PDTS application for the file name.
This is the same file name that was entered as keyword
NEWFILE= xxxx.
101 FORMAT(‘ *** PDTS EXAMPLE PROBLEM # 2 ***’,/,
+ ‘ ENTER FILE NAME: ’)
102 FORMAT(A)
.
.
.
C ENTER FILE NAME
C
WRITE (*,101)
READ (*,102) FNAME

2. Call subroutine PAOPEN with this name to open the database


files. It is assumed that these files are located in the current
working directory. In the call to PAOPEN, supply a blank string
as argument SFPATH (i.e., it is assumed that the user has
installed the PRO/II support and error files in the default direc-
tory location). If this is not true, you must supply the appropri-
ate path string to this routine.
C INITIALIZE RETRIEVAL SYSTEM & OPEN SELECTED FILE
C
CALL PAOPEN(FNAME,‘ ’,NFOUT,IRCODE)
IF (IRCODE .NE. 0) THEN
WRITE(*,205)
STOP
ENDIF
PAOPEN will return a Fortran unit number as variable NFOUT.
The default output has a file extension of .PDS. You should
check the returned error code (IRCODE) to see if there was a
problem opening the files.
3. Next, call PACASL to get an array containing the case study
IDs.

4-6 PDTS Example Problems


C GET ARRAY OF CASE IDS
C
CALL PACASL(MXN,KXN,CASE,IRCODE)
NXN = MIN(MXN,KXN)
Then, set the default input units as the units of measure for the
PDTS routine, and set up the target unit to be unit D101 and the
target stream to be stream 1.
C SET UNIT OF MEASURE AS DEFAULT INPUT UNITS
C
UOM = 0
C
C TARGET CASE ID IS D101
C FEED STREAM IS ‘1’
C
UID = ‘D101’
SID = ‘1’

4. Set up each case study by calling PACASE in an iterative loop.


C SET UP EACH CASE
C
DO 3001 KX = 1, NXN
WRITE(*,105) CASE(KX)
CALL PACASE(CASE(KX),IRCODE)

5. The next subroutine call is to PAMISC. This will initialize the


data retrieval process and return the key flowsheet parameters.
You should check the returned error code from this routine. A
value of 1 indicates that the PRO/II simulation solution was not
reached.
C GET MISCELLANEOUS FLOWSHEET DATA
C
CALL PAMISC(NCOMP,NSTRM,NUNIT,IRCODE)
IF (IRCODE .NE. 0) THEN
WRITE (*,203)
STOP
ENDIF

6. The next subroutine call is to PADATC which will return the col-
umn unit name. By referring to Chapter 5, you can see that the
Class and Attribute for this retrieval are ‘UNIT’ and ‘NAME’
respectively. Because these data are required for one unit only,
the Item is UID.
C GET UNIT NAME
C
C CALL PADATC(‘UNIT’,‘NAME’,UID,UNAME,KS,KC,IER)

7. The next step is to obtain the total molar flowrate of the feed
stream 1. In these retrievals, the individual stream ID string
(defined above as stream “1”) is the Item passed to PADATC.
C GET FEED STREAM RATE

PRO/II Data Transfer System Users’ Guide 4-7


C
C CALL PADATR(‘STREAM’,‘TotalMolarate’,SID,FLOW(KX),
C + KC,KUOM,IFLOW,IER)

8. Then, two separate calls are made to PADATR to retrieve the col-
umn condenser and reboiler duties. To check the unit type, keep
in mind that the first four characters of the type string will
match those of the unit operation keyword for that unit type. In
each case, the Class is ‘Colu’ and the calls to subroutine PADATR
are made with the appropriate Attribute strings as given in
Chapter 5 for Column data.
C GET COLUMN CONDENSER & REBOILER DUTIES
C
CALL PADATR(‘Colu’,‘CondenserDuty’,UID,QCON(KX),KC,
+ KUOM,IDUTY,IER)
C
CALL PADATR(‘Colu’,‘ReboilerDuty’,UID,QREB(KX),KC,
+ KUOM,IUOM,IER)
C
3001 CONTINUE

9. Subroutine PADATR returns a unit of measure class flag (KUOM)


which is used after the loop to get the required unit of measure
strings from function PAUOMS.
C GET UNIT OF MEASURE STRINGS
C
DNFLOW = PAUOMS(IFLOW, KUOM, IERR)
DNDUTY = PAUOMS(IDUTY, KUOM, IERR)

10. Finally, a formatted table of stream flowrates and column con-


denser and reboiler duties is printed.
C WRITE OUT TABLE
C
WRITE(NFOUT,112) UID, UNAME
WRITE(NFOUT,114) (CASE(I), I = 1, NXN)
WRITE(NFOUT,115) DNFLOW, (FLOW(I), I = 1, NXN)
WRITE(NFOUT,116) DNDUTY, (QCON(I), I = 1, NXN)
WRITE(NFOUT,117) DNDUTY, (QREB(I), I = 1, NXN)
C
END
The complete listing of Example 4-2 is given in Chapter 6.
The resulting output file is shown below:
DATA RETRIEVAL FROM FILE: G2TEST
COLUMN CASE STUDY SUMMARY TABLE

UNIT ID D101 DEETHANIZER

CASE ID BASE CASE1 CASE2 CASE3


FEED FLOW RATE LB-MOL/HR 900.0 950.0 1000.0 1050.0
CONDENSER DUTY MM BTU/HR -1.4724 -1.5542 -1.6360 -1.7179
REBOILER DUTY MM BTU/HR 5.4934 5.7982 6.1031 6.4085

4-8 PDTS Example Problems


Example Problem 4-3: Trayed Column
Task Description
You have used the PRO/II program to rate a trayed column. Your
objective is to obtain tray-by-tray results for the column.

Creating the PDTS Application Program


The key lines in the Fortran PDTS program are detailed in the steps
below:
1. Prompt the user of the PDTS application for the file name.
This is the same file name that was entered as keyword
NEWFILE= xxxx.
101 FORMAT(‘ *** PDTS EXAMPLE PROBLEM # 3 ***’,/,
+ ‘ ENTER FILE NAME: ’)
102 FORMAT(A)
.
.
.
C ENTER FILE NAME
C
WRITE (*,101)
READ (*,102) FNAME

2. Call subroutine PAOPEN with this name to open the database


files. It is assumed that these files are located in the current
working directory. In the call to PAOPEN, supply a blank string
as argument SFPATH (i.e., it is assumed that the user has
installed the PRO/II support and error files in the default direc-
tory location). If this is not true, you must supply the appropri-
ate path string to this routine.
C INITIALIZE RETRIEVAL SYSTEM & OPEN SELECTED FILE
C
CALL PAOPEN(FNAME,‘ ’,NFOUT,IRCODE)
IF (IRCODE .NE. 0) THEN
WRITE(*,205)
STOP
ENDIF
PAOPEN will return a Fortran unit number as variable NFOUT.
The default output has a file extension of .PDS. Check the
returned error code (IRCODE) to see if there was a problem
opening the files.
3. The next subroutine call is to PAMISC. This initializes the data
retrieval process and returns the key flowsheet parameters.
Check the returned error code from this routine. A value of 1
indicates that the PRO/II simulation solution was not reached.

PRO/II Data Transfer System Users’ Guide 4-9


C GET MISCELLANEOUS FLOWSHEET DATA
C
CALL PAMISC(NCOMP,NSTRM,NUNIT,IRCODE)
IF (IRCODE .NE. 0) THEN
WRITE (*,203)
STOP
ENDIF
Then, set the default input units as the units of measure for the
PDTS routine, and set up the target unit to be unit D101.
C SET UNIT OF MEASURE AS DEFAULT INPUT UNITS
C
C KUOM = 0
C
C TARGET CASE ID IS D101
C FEED STREAM IS ‘1’
C
UID = ‘D101’

4. The next two subroutine calls are to PADATC, which returns the
component IDs and column unit name. By referring to Chapter
5, you can see that the Class and Attribute for the first call are
‘COMPS’ and ‘IDS’. Because these data are required for all com-
ponents, the Item is ‘ALL’. For the second call, the Class and
Attribute are ‘UNIT’ and ‘NAME’ respectively. Because these data
are required for one unit only, the Item is UID.
C GET COMPONENT IDS
C
CALL PADATC(‘COMPS’,‘IDS’,‘ALL’,COMPID,KS,KC,IER)
C
C GET UNIT NAME
C
CALL PADATC(‘UNIT’,‘NAME’,UID,UNAME,KS,KC,IER)

5. The next step is to obtain the total number of trays in column


D101 by calling routine PADATI. In this call, the Class and
Attribute are ‘Colu’ and ‘NumberOfTrays’. Because these data are
required for this unit only, the Item is the UID.
C GET NUMBER OF TRAYS
C
CALL PADATI(‘Colu’,‘NumberOfTrays’,UID,NTRAY,KC,IER)

6. Then, two separate calls are made to PADATR to retrieve the col-
umn tray temperature and pressure. To check the unit type,
keep in mind that the first four characters of the type string will
match those of the unit operations keyword for that unit type. In
each case the Class is ‘Colu’ and the calls to subroutine PADATR
are made with the appropriate Attribute strings as given in
Chapter 5 for Column data.

4-10 PDTS Example Problems


C GET COLUMN TRAY BY TRAY TEMPERATURE & PRESSURE
C
CALL PADATR(‘Colu’,‘TrayPressures’,UID,PRES,KC,KUOM,
+ IPRES,IER)
C
CALL PADATR(‘Colu’,‘TrayTemperatures’,UID,TEMP,
+ KC,KUOM,ITEMP,IER)
Similar calls are made to PADATR for tray liquid and vapor net
rates, densities and compositions.
C GET COLUMN TRAY BY TRAY NET LIQUID & NET VAPOR RATES
C
CALL PADATR(‘Colu’,‘TrayNetVapRates’,UID,XVNET,KC,
+ KUOM,IFLOW,IER)
C
CALL PADATR(‘Colu’,‘TrayNetLiqRates’,UID,XLNET,KC,
+ KUOM,IUOM,IER)
C
C GET COLUMN TRAY BY TRAY LIQUID & VAPOR DENSITIES
C
CALL PADATR(‘Colu’,‘TrayVapDensityAct’,UID,DENVAP,KC,
+ KUOM,IVDEN,IER)
C
CALL PADATR(‘Colu’,‘TrayLiqDensityAct’,UID,DENLIQ,KC,
+ KUOM,ILDEN,IER)
C
C GET COLUMN TRAY BY TRAY LIQUID & VAPOR COMPOSITIONS
C
CALL PADATR(‘Colu’,‘TrayVaporMoleFracs’,UID,YCOMP,KC,
+ KUOM,IUOM,IER)
C
CALL PADATR(‘Colu’,‘TrayLiquidMoleFracs’,UID,XCOMP,
+ KC,KUOM,IUOM,IER)

7. Subroutine PADATR returns a unit of measure class flag (KUOM)


which is used to get the required unit of measure strings from
function PAUOMS.
C GET UNIT OF MEASURE STRINGS
C
DNPRES = PAUOMS(IPRES, KUOM, IERR)
DNTEMP = PAUOMS(ITEMP, KUOM, IERR)
DNFLOW = PAUOMS(IFLOW, KUOM, IERR)
DNLDEN = PAUOMS(ILDEN, KUOM, IERR)
DNVDEN = PAUOMS(IVDEN, KUOM, IERR)

8. Finally, a formatted table of column pressures, temperatures,


vapor and liquid net flows, densities, and compositions is
printed for each tray.
C WRITE OUT TABLE
C
WRITE (NFOUT,112) UID, UNAME
DO 3001 KX = 1, NTRAY, 5
WRITE (NFOUT,114) KX, KX+1, KX+2, KX+3, KX+4
WRITE (NFOUT,115) DNPRES, (PRES(I), I = KX, KX+4)
WRITE (NFOUT,116) DNTEMP, (TEMP(I), I = KX, KX+4)

PRO/II Data Transfer System Users’ Guide 4-11


WRITE (NFOUT,117) DNFLOW, (XVNET(I), I = KX, KX+4)
WRITE (NFOUT,118) DNFLOW, (XLNET(I), I = KX, KX+4)
WRITE (NFOUT,119) DNVDEN, (DENVAP(I), I = KX, KX+4)
WRITE (NFOUT,120) DNLDEN, (DENLIQ(I), I = KX, KX+4)
C
WRITE (NFOUT,121)
DO 2501 JX = 1, NCOMP
WRITE (NFOUT,122) COMPID(JX),
+ (YCOMP(JX+NCOMP*(I-1)), I = KX, KX+4)
2501 CONTINUE
C
WRITE (NFOUT,123)
DO 2502 JX = 1, NCOMP
WRITE (NFOUT,122) COMPID(JX),
+ (XCOMP(JX+NCOMP*(I-1)), I = KX, KX+4)
2502 CONTINUE
3001 CONTINUE
END
The complete listing of Example 4-3 is given in Chapter 6.

The resulting output file is shown below:


DATA
COLUMN REPORT TABLE - UID: D101 - DEETHANIZER
RETRIEVAL FROM FILE: G2
TRAY NUMBER: 1 2 3 4 5
PRESSURE: PSIG 425.00 430.00 430.56 431.11 431.67
TEMPERATURE: F -36.17 -7.76 1.48 8.68 16.03
NET VAPOR RATE: LB-MOL/HR 577.51 895.93 893.19 873.23 849.74
NET LIQUID RATE: LB-MOL/HR 318.42 315.68 295.72 272.23 252.93
VAPOR DENSITY: LB/FT3 2.5736 2.7621 2.7713 2.7321 2.6887
LIQUID DENSITY: LB/GAL 3.5009 3.4764 3.5251 3.5979 3.6651
VAPOR PHASE COMPOSITION
N2 0.0005 0.0003 0.0003 0.0003 0.0003
C1 0.6949 0.5418 0.5137 0.5149 0.5220
C2 0.3017 0.4462 0.4604 0.4391 0.4076
C3 0.0030 0.0117 0.0256 0.0456 0.0700
IC4 0.0000 0.0000 0.0000 0.0000 0.0001
NC4 0.0000 0.0000 0.0000 0.0000 0.0000
IC5 0.0000 0.0000 0.0000 0.0000 0.0000
NC5 0.0000 0.0000 0.0000 0.0000 0.0000
NC6 0.0000 0.0000 0.0000 0.0000 0.0000
NC7 0.0000 0.0000 0.0000 0.0000 0.0000
LIQUID PHASE COMPOSITION
N2 0.0001 0.0000 0.0000 0.0000 0.0000
C1 0.2641 0.1822 0.1635 0.1551 0.1491
C2 0.7082 0.7508 0.7075 0.6325 0.5504
C3 0.0276 0.0669 0.1290 0.2122 0.2997
IC4 0.0000 0.0000 0.0000 0.0002 0.0006
NC4 0.0000 0.0000 0.0000 0.0001 0.0002
IC5 0.0000 0.0000 0.0000 0.0000 0.0000
NC5 0.0000 0.0000 0.0000 0.0000 0.0000
NC6 0.0000 0.0000 0.0000 0.0000 0.0000
NC7 0.0000 0.0000 0.0000 0.0000 0.0000
TRAY NUMBER: 6 7 8 9 10
PRESSURE: PSIG 432.22 432.78 433.33 433.89 434.44
TEMPERATURE: F 22.56 27.54 31.27 35.16 71.79

4-12 PDTS Example Problems


NET VAPOR RATE: LB-MOL/HR 830.44 817.35 808.30 798.65 511.33
NET LIQUID RATE: LB-MOL/HR 239.84 230.80 221.14 206.42 1060.44
VAPOR DENSITY: LB/FT3 2.6572 2.6381 2.6232 2.5967 2.8172
LIQUID DENSITY: LB/GAL 3.7128 3.7444 3.7732 3.8300 3.9247

VAPOR PHASE COMPOSITION


N2 0.0003 0.0003 0.0003 0.0003 0.0001
C1 0.5287 0.5335 0.5370 0.5412 0.3733
C2 0.3774 0.3544 0.3393 0.3295 0.4417
C3 0.0933 0.1110 0.1212 0.1233 0.1638
IC4 0.0002 0.0005 0.0014 0.0033 0.0099
NC4 0.0001 0.0002 0.0007 0.0022 0.0083
IC5 0.0000 0.0000 0.0000 0.0002 0.0013
NC5 0.0000 0.0000 0.0000 0.0001 0.0008
NC6 0.0000 0.0000 0.0000 0.0000 0.0006
NC7 0.0000 0.0000 0.0000 0.0000 0.0002
LIQUID PHASE COMPOSITION
N2 0.0000 0.0000 0.0000 0.0000 0.0000
C1 0.1448 0.1419 0.1397 0.1368 0.0838
C2 0.4815 0.4334 0.4020 0.3779 0.3789
C3 0.3711 0.4172 0.4377 0.4284 0.3711
IC4 0.0018 0.0048 0.0118 0.0268 0.0473
NC4 0.0008 0.0026 0.0079 0.0223 0.0494
IC5 0.0000 0.0001 0.0005 0.0035 0.0160
NC5 0.0000 0.0000 0.0003 0.0021 0.0110
NC6 0.0000 0.0000 0.0001 0.0016 0.0262
NC7 0.0000 0.0000 0.0000 0.0004 0.0165

PRO/II Data Transfer System Users’ Guide 4-13


TRAY NUMBER: 11 12 13 14 15
PRESSURE: PSIG 435.00 435.56 436.11 436.67 437.22
TEMPERATURE: F 114.07 136.24 151.44 163.22 172.68
NET VAPOR RATE: LB-MOL/HR 737.95 913.54 1011.16 1078.69 1135.58
NET LIQUID RATE: LB-MOL/HR 1236.03 1333.65 1401.18 1458.07 1506.80
VAPOR DENSITY: LB/FT3 3.4647 3.8354 4.0850 4.2876 4.4607
LIQUID DENSITY: LB/GAL 3.6939 3.5893 3.5251 3.4755 3.4354
VAPOR PHASE COMPOSITION
N2 0.0000 0.0000 0.0000 0.0000 0.0000
C1 0.1204 0.0377 0.0119 0.0038 0.0012
C2 0.5387 0.4896 0.3984 0.3044 0.2227
C3 0.3028 0.4220 0.5281 0.6196 0.6924
IC4 0.0172 0.0226 0.0274 0.0323 0.0378
NC4 0.0148 0.0195 0.0235 0.0274 0.0317
IC5 0.0026 0.0035 0.0042 0.0049 0.0055
NC5 0.0016 0.0022 0.0027 0.0031 0.0035
NC6 0.0015 0.0022 0.0028 0.0033 0.0038
NC7 0.0005 0.0008 0.0010 0.0012 0.0014
LIQUID PHASE COMPOSITION
N2 0.0000 0.0000 0.0000 0.0000 0.0000
C1 0.0279 0.0091 0.0029 0.0010 0.0003
C2 0.3653 0.3053 0.2374 0.1763 0.1267
C3 0.4495 0.5279 0.5984 0.6559 0.6977
IC4 0.0470 0.0489 0.0516 0.0551 0.0600
NC4 0.0479 0.0488 0.0506 0.0531 0.0567
IC5 0.0148 0.0145 0.0145 0.0147 0.0149
NC5 0.0101 0.0098 0.0098 0.0099 0.0100
NC6 0.0232 0.0221 0.0216 0.0212 0.0210
NC7 0.0144 0.0136 0.0131 0.0128 0.0126

4-14 PDTS Example Problems


TRAY NUMBER: 16 17 18 19 20
PRESSURE: PSIG 437.78 438.33 438.89 439.44 440.00
TEMPERATURE: F 180.58 187.85 196.02 208.51 234.90
NET VAPOR RATE: LB-MOL/HR 1184.31 1220.84 1237.29 1212.62 1093.70
NET LIQUID RATE: LB-MOL/HR 1543.34 1559.78 1535.11 1416.19 322.49
VAPOR DENSITY: LB/FT3 4.6057 4.7222 4.8072 4.8398 4.7735
LIQUID DENSITY: LB/GAL 3.4050 3.3862 3.3854 3.4237 3.5374
VAPOR PHASE COMPOSITION
N2 0.0000 0.0000 0.0000 0.0000 0.0000
C1 0.0004 0.0001 0.0000 0.0000 0.0000
C2 0.1576 0.1084 0.0723 0.0464 0.0276
C3 0.7441 0.7736 0.7790 0.7548 0.6856
IC4 0.0447 0.0540 0.0669 0.0841 0.1041
NC4 0.0372 0.0452 0.0575 0.0764 0.1026
IC5 0.0063 0.0074 0.0098 0.0150 0.0262
NC5 0.0040 0.0047 0.0061 0.0095 0.0170
NC6 0.0043 0.0049 0.0062 0.0103 0.0260
NC7 0.0016 0.0018 0.0022 0.0035 0.0110
LIQUID PHASE COMPOSITION
N2 0.0000 0.0000 0.0000 0.0000 0.0000
C1 0.0001 0.0000 0.0000 0.0000 0.0000
C2 0.0885 0.0601 0.0394 0.0243 0.0132
C3 0.7221 0.7270 0.7070 0.6496 0.5274
IC4 0.0670 0.0771 0.0908 0.1068 0.1161
NC4 0.0625 0.0722 0.0873 0.1085 0.1284
IC5 0.0157 0.0175 0.0217 0.0309 0.0469
NC5 0.0105 0.0116 0.0143 0.0205 0.0324
NC6 0.0211 0.0220 0.0255 0.0389 0.0826
NC7 0.0125 0.0127 0.0139 0.0205 0.0530

PRO/II Data Transfer System Users’ Guide 4-15


4-16 PDTS Example Problems
Chapter 5
Attribute Lists

Class and Attribute names must be entered exactly as shown. As


strings, they must be enclosed in single quotes. Observe rules of
case sensitivity.

Attribute Class See page...


Calculator Calc 5-21
Column/Side Colu or Side 5-16
Component Data COMPS 5-2
Compressor Compressor 5-6
Conversion Reactor ConReactor 5-22
CSTR Cstr 5-23
Equilibrium Reactor EquReactor 5-21
Expander Expander 5-6
Flash Flash 5-5
Gibbs Reactor Gibbs 5-25
HCURVE HCurve 5-19
HX Hx 5-9
HXRIG HxRig 5-10
LLEX Llex or Colu 5-18
LNGHX LngHx 5-14
Phase Envelope Phase 5-20
Pipe Pipe 5-7
Plug Flow Reactor Plug 5-24
Pump Pump 5-7
Shortcut Short 5-15
Stream Data STREAM 5-3
Unit Data UNIT 5-4
User-Added Unit Operations User 5-25
Valve Valve 5-5

PRO/II Data Transfer System Users’ Guide 5-1


Component Data
Class: ‘COMPS’

Use Item: ‘ALL’ for all component attributes (count = number of components)

Item Description Variable Array/ Units Notes


Type Scalar
‘AcenFactor’ Acentric factor Real Array
‘ApiGravity’ API gravity Real Array
‘CritCompress’ Critical compressibility Real Array
‘CritPres’ Critical pressure Real Array Pressure
‘CritTemp’ Critical temperature Real Array Temperature
‘CritVol’ Critical volume Real Array Spec. Volume
‘IDS’ IDs of components Character Array 16 Chars
‘LibraryNumber’ Component library number Integer Array
‘MolWeight’ Molecular weight Real Array
‘NormBoilPt’ Normal boiling point Real Array Temperature
‘SpecGravity’ Specific gravity Real Array
‘StdFreEnForm’ Standard free energy of formation Real Array Energy
‘StdHeatForm’ Standard heat of formation Real Array Energy
‘StdLiqDens’ Standard liquid density Real Array Liq. Density

5-2 Attribute Lists


Stream Data
Class: ‘STREAM’

Use Item: ‘ALL’ for attribute ‘IDS’ only (count = number of streams)
Item Description Variable Array/ Units Notes
Type Scalar
‘BulkMolecularWeight’ Molecular weight of bulk stream Real Scalar
‘BulkUopK’ Watson K (UOP) of bulk stream Real Scalar
‘CetanIndex’ Cetane index Real Scalar
‘CloudPt’ Cloud point Real Scalar Temperature
‘D1160Curve’ D1160 curve Real Array Temperature 1
‘D86Curve’ D86 curve Real Array Temperature 1
‘FlashPt’ Flash point Real Scalar Temperature
‘GrosHeatValue’ Gross heating value Real Scalar Energy/Vap.Vol.
‘IDS’ IDs of streams Character Array 12 Characters
‘L1Fraction’ Fraction of L1 liquid phase Real Scalar
‘L2Fraction’ Fraction of L2 liquid phase Real Scalar
‘MotOctaneNumb’ Motor octane number Real Scalar
‘NAME’ Stream name Character Scalar 40 Characters
‘NetHeatValue’ Lower or net heating value Real Scalar Energy/Vap.Vol.
‘PourPt’ Pour point Real Scalar Temperature
‘Pressure’ Stream pressure Real Scalar Pressure
‘ReidVapPres’ Reid vapor pressure Real Scalar PSI (always)
‘ResOctaneNumb’ Research octane number Real Scalar
‘SolidFraction’ Stream solid fraction Real Scalar
‘SulfurWtPerc’ Sulfur weight percent Real Scalar
‘TBPCurve’ TBP curve Real Array Temperature 1
‘Temperature’ Stream temperature Real Scalar Temperature
‘TotalComposition’ Total composition of bulk stream Real Array 2
‘TotalMolarEnthalpy’ Total molar enthalpy Real Scalar Energy/Mole
‘TotalMolarEntropy’ Total molar entropy Real Scalar Entropy/Mole
‘TotalMolarRate’ Total molar flowrate Real Scalar Mole Rate
‘TrueVapPres’ True vapor pressure Real Scalar Pressure
‘WaterFraction’ Fraction of aqueous phase Real Scalar
Liquid Phase
‘LiqApiGravity’ API gravity of liquid phase Real Scalar
‘LiqCP’ CP of liquid phase Real Scalar Molar Heat Capacity
‘LiqDensityAct’ Actual density of liquid phase Real Scalar Density
‘LiqKineVisc’ Kinematic viscosity of liquid phase Real Scalar Kinematic Viscosity
‘LiqMolarEnthalpy’ Molar enthalpy of liquid phase Real Scalar Energy/Mole
‘LiqMolarEntropy’ Molar entropy of liquid phase Real Scalar
‘LiqMolarRate’ Molar rate of liquid phase Real Scalar Mole Rate
‘LiqMolecularWeight’ Molecular weight of liquid phase Real Scalar
‘LiqSpecGravity’ Specific gravity of liquid phase Real Scalar
Notes:
1) Distillation curves of 13 points at percent distilled points: 0, 5, 10, 20, 30, 40, 50, 60,70, 80, 90, 95, 100
2) Compositions in mole fraction; Count = number of components

PRO/II Data Transfer System Users’ Guide 5-3


Item Description Variable Array/ Units Notes
Type Scalar
‘LiqSurfTension’ Surface tension of liquid phase Real Scalar Tension
‘LiqThermalCond’ Thermal conductivity of liquid phase Real Scalar Thermal Cond.
‘LiquidComposition’ Composition of liquid phase Real Array 2
‘LiquidFraction’ Stream liquid fraction Real Scalar
‘LiqViscosity’ Viscosity of liquid phase Real Scalar
‘LiqVolumeRateStd’ STD vol. flowrate of liquid phase Real Scalar Std. Liq. Vol.
‘LiqZDensity’ Z-density of liquid phase Real Scalar
Vapor Phase
‘VapCP’ CP of vapor phase Real Scalar Molar Heat Capacity
‘VapCV’ CV of vapor phase Real Scalar Molar Heat Capacity
‘VapDensityAct’ Actual density of vapor phase Real Scalar Density
‘VapMolarEnthalpy’ Molar enthalpy of vapor phase Real Scalar Energy/Mole
‘VapMolarEntropy’ Molar entropy of vapor phase Real Scalar Entropy/Mole
‘VapMolarRate’ Molar rate of vapor phase Real Scalar Mole Rate
‘VapMolecularWeight’ Molecular weight of vapor phase Real Scalar
‘VaporComposition’ Composition of vapor phase Real Array 2
‘VaporFraction’ Stream vapor fraction Real Scalar
‘VapThermalCond’ Thermal conductivity of vapor phase Real Scalar Thermal Cond.
‘VapViscosity’ Viscosity of vapor phase Real Scalar Viscosity
‘VapVolumeRateStd’ STD vol. flowrate of vapor phase Real Scalar Vapor Volume
‘VapZDensity’ Z-density of vapor phase Real Scalar
Notes:
1) Distillation curves of 13 points at percent distilled points: 0, 5, 10, 20, 30, 40, 50, 60,70, 80, 90, 95, 100
2) Compositions in mole fraction; Count = number of components

Unit Data
Class: ‘UNIT’

Use Item: ‘ALL’ for attribute ‘IDS’ only (count = number of unit operations)
Item Description Variable Array/ Units Notes
Type Scalar
‘FeedData’ Stream IDs for unit feeds Character Array 2
‘IDS’ IDs of units Character Array 12 Characters
‘NAME’ Name of unit Character Scalar 40 Characters
‘NumberFeeds’ Number of feed streams to unit Integer Scalar
‘NumberProducts’ Number of product streams from unit Integer Scalar
‘NumberSides’ Number of sides in unit Integer Scalar 1
‘ProdData’ Stream IDs for unit products Character Array 2
‘TYPE’ Type of unit Character Scalar 16 Characters
Notes:
1) Most unit operations are single-sided. Exchanger unit operations may be multi-sided.
2) The feed and product data variables are arrays of 12 character stream IDs.
For exchanger units of more than one side, the stream IDs will be in this order:
HX Hot Side/Cold Side
HXRIG Shell Side/Tube Side
LNGHX Hot Cells/Cold Cells
The number of feeds and products for each respective side can be obtained using the appropriate exchanger class.

5-4 Attribute Lists


Flash
Class: ‘Flash’

Item Description Variable Array/ Units Notes


Type Scalar
‘DutyCalc’ Calculated flash duty Real Scalar Duty 1
‘KValues’ K-values Real Array 2
‘PresCalc’ Calculated flash pressure Real Scalar Pressure
‘TempCalc’ Calculated flash temperature Real Scalar Temperature
Notes:
1) Duty has units 106 Energy/Time
2) Count = number of components

Valve
Class: ‘Valve’

Item Description Variable Array/ Units Notes


Type Scalar
‘KValues’ K-values Real Array 1
‘PresCalc’ Calculated valve pressure Real Scalar Pressure
‘TempCalc’ Calculated valve temperature Real Scalar Temperature
Notes:
1) Count = number of components

PRO/II Data Transfer System Users’ Guide 5-5


Compressor
Class: ‘Compressor’

Item Description Variable Array/ Units Notes


Type Scalar
‘AcDutyCalc’ Calculated aftercooler duty Real Scalar Duty 1
‘AcPresDropCalc’ Calculated aftercooler pressure drop Real Scalar Pres Diff.
‘AcTempCalc’ Calculated aftercooler temperature Real Scalar Temperature
‘EffAdiaCalc’ Calculated adiabatic efficiency Real Scalar Percent
‘EffPolyCalc’ Calculated polytropic efficiency Real Scalar Percent
‘IsenCoeffCalc’ Calculated isentropic coefficient Real Scalar
‘PolyCoeffCalc’ Calculated polytropic coefficient Real Scalar
‘PRatio’ Pressure ratio (outlet/inlet) Real Scalar
‘PresCalc’ Calculated compressor pressure Real Scalar Pressure
‘PresInletCalc’ Calculated inlet pressure Real Scalar Pressure
‘PresIsenCalc’ Calculated isentropic pressure Real Scalar Pressure
‘RPMCalc’ Calculated compressor RPM Real Scalar RPM
‘TempCalc’ Calculated compressor temperature Real Scalar Temperature
‘TempInletCalc’ Calculated inlet temperature Real Scalar Temperature
‘TempIsenCalc’ Calculated isentropic temperature Real Scalar Temperature
‘WorkActualCalc’ Calculated actual compressor work Real Scalar Work
‘WorkPolyCalc’ Calculated polytropic compressor work Real Scalar Work
‘WorkTheoCalc’ Calculated theoretical compressor work Real Scalar Work
Notes:
1) Duty has units 106 Energy/Time

Expander
Class: ‘Expander’

Item Description Variable Array/ Units Notes


Type Scalar
‘EffAdiaCalc’ Calculated expander adiabatic efficiency Real Scalar Percent
‘IsenCoeffCalc’ Calculated expander isentropic coefficient Real Scalar RPM
‘PresCalc’ Calculated expander pressure Real Scalar Pressure
‘PresInletCalc’ Calculated expander inlet pressure Real Scalar Pressure
‘PresIsenCalc’ Calculated isentropic pressure Real Scalar Pressure
‘RPMCalc’ Calculated expander RPM Real Scalar
‘TempCalc’ Calculated expander temperature Real Scalar Temperature
‘TempInletCalc’ Calculated expander inlet temperature Real Scalar Temperature
‘TempIsenCalc’ Calculated isentropic temperature Real Scalar Temperature
‘WorkActualCalc’ Calculated actual expander work Real Scalar Work
‘WorkTheoCalc’ Calculated theoretical expander work Real Scalar Work

5-6 Attribute Lists


Pump
Class: ‘Pump’

Item Description Variable Array/ Units Notes


Type Scalar
‘EffCalc’ Calculated pump efficiency Real Scalar Percent
‘PresCalc’ Calculated pump pressure Real Scalar Pressure
‘TempCalc’ Calculated pump temperature Real Scalar Temperature
‘WorkCalc’ Calculated pump work Real Scalar Work

Pipe
Class: ‘Pipe’

Item Description Variable Array/ Units Notes


Type Scalar
‘AbsRoughness’ Absolute pipe roughness Real Scalar Fine Length
‘AvgFricFactor’ Average pipe friction factor Real Scalar
‘AvgReynoldsNumb’ Average Reynolds number Real Scalar
‘AvgVelocityInlet’ Average velocity of inlet fluid Real Scalar Velocity
‘AvgVelocityOutlet’ Average velocity of outlet fluid Real Scalar Velocity
‘CalcDeltaPres’ Calculated pipe pressure drop Real Scalar Pres. Diff.
‘CalcMaxVelocity’ Calculated pipe maximum velocity Real Scalar Velocity
‘DeltaPresAccel’ Pipe pressure drop due to acceleration Real Scalar Pres. Diff
‘DeltaPresElevn’ Pipe pressure drop due to elevation Real Scalar Pres. Diff
‘DeltaPresFric’ Pipe pressure drop due to friction Real Scalar Pres. Diff
‘FittingDeltaPres’ Pressure drop across pipe fittings Real Scalar Pres. Diff.
‘FittingKFactor’ K-factor of pipe fittings Real Scalar
‘FlowRegimeInlet’ Flow regime at inlet conditions Integer Scalar 2
‘FlowRegimeOutlet’ Flow regime at outlet conditions Integer Scalar 2
‘FricFactorInlet’ Friction factor at pipe inlet Real Scalar
‘FricFactorOutlet’ Friction factor at pipe outlet Real Scalar
‘HeatDuty’ Pipe heat duty Real Scalar Duty 4
‘HeatTransCoeff’ Heat transfer coefficient Real Scalar Heat Tr. Coeff.
‘InsideDiameter’ Pipe inside diameter Real Scalar Fine Length
‘LineDeltaPres’ Pressure drop across pipeline segment Real Scalar Pres. Diff.
‘LineFlowEffic’ Flow efficiency of pipeline segment Real Scalar Percent
‘LineFricFactor’ Friction factor of pipeline segment Real Scalar
‘LineLength’ Length of pipeline segment Real Scalar Length
Notes:
1) Pressure Drop Correlations:
1 - Beggs-Brill-Moody 2 - Olimens 3 - Dukler-Eaton-Flanigan
4 - Gray 5 - Hagedorn-Brown 6 - Mukherjee-Bril
7 - Beggs-Brill-Moody-Palmer
2) Taitel-Dunkler-Barnea Flow Regime
1 - Stratified Smooth 2 - Stratified Wavy 3 - Intermittent
4 - Dispersed Bubble 5 - Annular 6 - Bubble
7 - Churn 8 - Single Phase 9 - Stratified Dispersed
10 - Annular Dispersed 11 - Intermittent Slug Flow
3) Array of values along pipe in direction of flow; Count = number of segments; Maximum = 50 segments
4) Duty has units 106 Energy/Time

PRO/II Data Transfer System Users’ Guide 5-7


Item Description Variable Array/ Units Notes
Type Scalar
‘LiqFracInlet’ Liquid fraction of inlet fluid Real Scalar
‘LiqFracOutlet’ Liquid fraction of outlet fluid Real Scalar
‘LiqHoldupInlet’ Liquid holdup of inlet fluid Real Scalar (Vol/Vol)
‘LiqHoldupOutlet’ Liquid holdup of outlet fluid Real Scalar (Vol/Vol)
‘NetChangeInElevn’ Change in pipe elevation from horizontal Real Scalar
‘NumSegments’ Number of pipeline segments Integer Scalar
‘OutletPres’ Outlet pressure of pipe Real Scalar Pressure
‘OutletTemp’ Outlet temperature of pipe Scalar Temperature
‘PresFluidInlet’ Pressure of inlet fluid Real Scalar Pressure
‘PresFluidOutlet’ Pressure of outlet fluid Real Scalar Pressure
‘PresDropCorrelation’ Pressure drop correlation method Integer Scalar 1
‘RelRoughness’ Relative pipe roughness Real Scalar
‘SegAccelPresDrop’ Pres. drop across seg. due to acceleration Real Array Pres. Diff. 3
‘SegChangeElevn’ Change in segment elev. from horizontal Real Array Length 3
‘SegDistanceInlet’ Distance of segment from inlet Real Array 3
‘SegElevnPresDrop’ Pres. drop across seg. due to elevation Real Array Pres. Diff. 3
‘SegFlowRegime’ Flow regime in segment Integer Array 2, 3
‘SegFluidVelocity’ Velocity of bulk fluid in segment Real Array Velocity 3
‘SegFricPresDrop’ Pres. drop across seg. due to friction Real Array Pres. Diff. 3
‘SegLiquidFrac’ Liquid fraction in segment Real Array 3
‘SegLiquidVelocity’ Velocity of liquid phase in segment Real Array Velocity 3
‘SegPressure’ Pressure at inlet of pipeline segment Real Array Pressure 3
‘SegTemperature’ Temperature at inlet of pipeline segment Real Array Temperature 3
‘SegTotalPresDrop’ Total pressure drop across segment Real Array Pres. Diff. 3
‘SegVaporVelocity’ Velocity of vapor phase in segment Real Array Velocity 3
‘SizingDeltaP’ Pressure drop for sizing calculations Real Scalar Pres. Diff.
‘SizingMaxVelocity’ Maximum velocity for sizing calculations Real Scalar
‘SlipDensInlet’ Slip density of inlet fluid Real Scalar Density
‘SlipDensOutlet’ Slip density of outlet fluid Real Scalar Density
‘TempFluidInlet’ Temperature of inlet fluid Real Scalar Temperature
‘TempFluidOutlet’ Temperature of outlet fluid Real Scalar Temperature
Notes:
1) Pressure Drop Correlations:
1 - Beggs-Brill-Moody 2 - Olimens 3 - Dukler-Eaton-Flanigan
4 - Gray 5 - Hagedorn-Brown 6 - Mukherjee-Bril
7 - Beggs-Brill-Moody-Palmer
2) Taitel-Dunkler-Barnea Flow Regime
1 - Stratified Smooth 2 - Stratified Wavy 3 - Intermittent
4 - Dispersed Bubble 5 - Annular 6 - Bubble
7 - Churn 8 - Single Phase 9 - Stratified Dispersed
10 - Annular Dispersed 11 - Intermittent Slug Flow
3) Array of values along pipe in direction of flow; Count = number of segments; Maximum = 50 segments
4) Duty has units 106 Energy/Time

5-8 Attribute Lists


HX
Class: ‘Hx’

Item Description Variable Array/ Units Notes


Type Scalar
‘AreaCalc’ Heat exchanger area Real Scalar Area
‘ColdDeltaP’ Pres. drop across exchanger coldside Real Scalar Pres. Diff.
‘ColdFeedTempCalc’ Temperature of feed to coldside Real Scalar Temperature
‘ColdKValues’ K-values on coldside Real Scalar 6
‘ColdProdTempCalc’ Temperature of product from coldside Real Scalar Temperature
‘DutyCalc’ Heat exchanger duty Real Scalar Duty 7
‘ExchAttachColu’ Col. ID for attached exchanger Character Scalar 12 Characters
‘ExchAttachFlag’ Attached exchanger flag Integer Scalar 4
‘ExchSideFlag’ Flag indicating side with utility Integer Scalar 2
‘ExchTypeFlag’ Type of heat exchanger Integer Scalar 1
‘ExchUtilComp’ Component name for utility Character Scalar 16 Characters
‘ExchUtilFlag’ Type of utility Integer Scalar
‘ExhcAttachTray’ Col. tray number for attached exchanger Integer Scalar 5
‘HotDeltaP’ Pres. drop across exchanger hotside Real Scalar Pres. Diff.
‘HotFeedTempCalc’ Temperature of feed to hotside Real Scalar Temperature
‘HotKValues’ K-values on hotside Real Scalar 6
‘HotProdTempCalc’ Temperature of product from hotside Real Scalar Temperature
‘LMTDFactorCalc’ Calculated LMTD correction factor (FT) Real Scalar
‘MTDCalc’ Mean temperature difference Real Scalar Temp. Diff.
‘NumberColdFeeds’ Number of feed streams to coldside Integer Scalar
‘NumberColdProds’ Number of product streams from coldside Integer Scalar
‘NumberHotFeeds’ Number of feed streams to hotside Integer Scalar
‘NumberHotProds’ Number of product streams from hotside Integer Scalar
‘NumberShellPasses’ Number of shell passes Real Scalar
‘NumberTubePasses’ Number of tube passes Real Scalar
‘UACalc’ Heat exchanger U*A Real Scalar U*A
‘UValueCalc’ Heat exchanger U-value Real Scalar Ht. Trans. Coeff.
Notes:
1) Exchanger type flag
0 - Simple HX 1 - Utility on one side (See Note 3) 2 - Attached exchanger
2) Exchanger side flag - Indicates which side is attached
1 - hot side 2 - cold side
3) Exchanger utility flag - Use to determine what type utility is present
1 - Water 2 - Air 3 - Steam
4 - Heating medium - Use ‘ExchUtilComp’ to get component ID
5 - Refrigerant - Use ‘ExchUtilComp’ to get component ID
4) Attached exchanger flag - Indicates type of attachment
1 - Condenser 2 - Reboiler 3 - Pumparound 4 - Side Heater or Cooler
5) Tray number in column where attached - Use ‘ExchAttachColu’ to get column unit ID
6) Count = number of components
7) Duty has units 106 Energy/Time

PRO/II Data Transfer System Users’ Guide 5-9


HXRIG
Class: ‘HxRig’

Item Description Variable Array/ Units Notes


Type Scalar
‘AreaCalc’ Calculated area of exchanger Real Scalar Area
‘AreaRequired’ Heat exchanger area required Real Scalar Area
‘AttachSideFlag’ Flag indicating exchanger side attachedInteger Scalar 5
‘AttachTrayFlag’ Flag indicating column tray attached Integer Scalar 7
‘AttachTypeFlag’ Flag indicating type of attachment Integer Scalar 6
‘AttachUnit’ ID of unit attached to exchanger Character Scalar
‘BaffleCutFrac’ Baffle cut ratio Real Scalar
‘BaffleSpc’ Baffle spacing Real Scalar Fine Length
‘BaffleThck’ Baffle thickness Real Scalar Fine Length
‘ExchHtDuty’ Duty of rigorous heat exchanger Real Scalar Duty *
‘FinEffcyCalc’ Calculated fin efficiency Real Scalar Percent
‘FinHgt’ Height of fin Real Scalar Fine Length
‘FinMatCode’ Fin material code Integer Scalar 4
‘FinRootDia’ Root diameter of fin Real Scalar Fine Length
‘FinsPerInch’ Number of fins per inch Real Scalar
‘FinThck’ Thickness of fin Real Scalar Fine Length
‘FinThermCond’ Thermal conductivity of fin Real Scalar Thermal Cond.
‘FlowTypeFlag’ Shell-tube flow direction flag Integer Scalar 2
‘FtFactor’ LMTD correction factor Real Scalar
‘InletBaffleSpc’ Inlet baffle spacing Real Scalar Fine Length
‘MaxAreaPerShell’ Maximum area per shell Real Scalar Area
‘MeanTempDiff’ Mean temperature difference Real Scalar Temp. Diff.
‘NumberShellFeeds’ Number of feeds to shellside Integer Scalar
Notes:
1) Position Flag
1 - Horizontal orientation 2 - Vertical orientation
2) Flow Type Flag
0 - Countercurrent 1 - Cocurrent
3) Tube Pitch Flag
0 - Not defined 1 - 30 Degrees 2 - 90 Degrees
3 - 60 Degrees 4 - 45 Degrees
4) Material Code Flag
1 - Carbon Steel 2 - Carbon-moly Steel 3 - Chrome-moly Steel
4 - Low Chrome Steel 5 - Med Chrome Steel 6 - Straight Chrome Steel
7 - 304 SS 8 - 310 SS 9 - 316 SS
10- 321 SS 20- Al 1060 H14 21- Al 1100 Annealed
22- Al 3003 H14 Annealed 23- Al 3003 H25 Annealed 24- Al 6061 T4 Annealed
25- Al 6061 T6 Annealed 30- Copper 31- Arsenical Copper
32- Cu/Ni 90/10 33- Cu/Ni 80/20 34- Cu/Ni 70/30
35- Cu/Ni 60/40 40- Red Brass 85Cr/15Zn 41- Admiralty Brass 71Cu/28Zn/1Sn
42- Com Brass 55Cu/34Zn 43- Muntz Metal 60Cu/40Zn 44- Al Brass 93Cu/5Al
45- Al Brass 78Cu/2Al 50- Nickel Annealed 51- Low Carbon Nickel Annealed
52- Monel 70Ni/30Cu 53- Inconel 600 76Ni/16Cr/8Fe 60- Titanium Grade 2
5) Attach Side Flag
0 - None 1 - Shell 2 - Tube
6) Attached Type Flag - Indicates type of Attachment
1 - Condenser 2 - Reboiler 3 - Pumparound
4 - Side Heater or Cooler
7) Tray number in column where attached - Use ‘AttachUnit’ to get column unit ID
8) Duty has units 106 Energy/Time

5-10 Attribute Lists


Item Description Variable Array/ Units Notes
Type Scalar
‘NumberShellProds’ Number of products from shellside Integer Scalar
‘NumberTubeFeeds’ Number of feeds to tubeside Integer Scalar
‘NumberTubeProds’ Number of products from tubeside Integer Scalar
‘NumOfParShells’ Number of shells in parallel Integer Scalar
‘NumOfSerShells’ Number of shells in series Integer Scalar
‘NumOfTubePasses’ Number of tube passes per shell er Scalar
‘NumOfTubes’ Number of tubes Integer Scalar
‘OutletBaffleSpc’ Outlet baffle spacing Real Scalar Fine Length
‘PositionFlag’ Orientation of exchanger Integer Scalar 1
‘ShellFilmCoeff’ Film coefficient of shellside Real Scalar Heat Trans. Coeff.
‘ShellFilmCoeffSclFct’ Shellside film coefficient scaling factor Real Scalar
‘ShellFoulFct’ Fouling factor of shellside Real Scalar Foul Factor
‘ShellFoulLayerThck’ Thickness of shellside fouling layer Real Scalar Fine Length
‘ShellFoulRqrd’ Shellside required fouling resistance Real Scalar Foul Factor
‘ShellID’ Inside diameter of shell Real Scalar Fine Length
‘ShellMatCode’ Shell material code Integer Scalar 4
‘ShellMatDens’ Density of shell material Real Scalar Density
‘ShellNozzleInletID’ Inside diameter of shell nozzle inlet Real Scalar Fine Length
‘ShellNozzleOutletID’ Inside diameter of shell nozzle outlet Real Scalar Fine Length
‘ShellOrigFoul’ Shellside specified fouling resistance Real Scalar Foul Factor
‘ShellPresDropCalc’ Calculated pressure drop across shell Real Scalar Pres. Diff.
‘ShellPrnNum’ Prandlt number on shellside Real Scalar
‘ShellReyNum’ Reynolds number on shellside Real Scalar
‘ShellTempIn’ Inlet temperature of shellside fluid Real Scalar Temperature
‘ShellTempOut’ Outlet temperature on shellside Real Scalar Temperature
‘ShellVel’ Fluid velocity in shellside Real Scalar Velocity
‘TEMAType’ TEMA shell type Character Scalar 3 Characters
Notes:
1) Position Flag
1 - Horizontal orientation 2 - Vertical orientation
2) Flow Type Flag
0 - Countercurrent 1 - Cocurrent
3) Tube Pitch Flag
0 - Not defined 1 - 30 Degrees 2 - 90 Degrees
3 - 60 Degrees 4 - 45 Degrees
4) Material Code Flag
1 - Carbon Steel 2 - Carbon-moly Steel 3 - Chrome-moly Steel
4 - Low Chrome Steel 5 - Med Chrome Steel 6 - Straight Chrome Steel
7 - 304 SS 8 - 310 SS 9 - 316 SS
10- 321 SS 20- Al 1060 H14 21- Al 1100 Annealed
22- Al 3003 H14 Annealed 23- Al 3003 H25 Annealed 24- Al 6061 T4 Annealed
25- Al 6061 T6 Annealed 30- Copper 31- Arsenical Copper
32- Cu/Ni 90/10 33- Cu/Ni 80/20 34- Cu/Ni 70/30
35- Cu/Ni 60/40 40- Red Brass 85Cr/15Zn 41- Admiralty Brass 71Cu/28Zn/1Sn
42- Com Brass 55Cu/34Zn 43- Muntz Metal 60Cu/40Zn 44- Al Brass 93Cu/5Al
45- Al Brass 78Cu/2Al 50- Nickel Annealed 51- Low Carbon Nickel Annealed
52- Monel 70Ni/30Cu 53- Inconel 600 76Ni/16Cr/8Fe 60- Titanium Grade 2
5) Attach Side Flag
0 - None 1 - Shell 2 - Tube
6) Attached Type Flag - Indicates type of Attachment
1 - Condenser 2 - Reboiler 3 - Pumparound
4 - Side Heater or Cooler
7) Tray number in column where attached - Use ‘AttachUnit’ to get column unit ID
8) Duty has units 106 Energy/Time

PRO/II Data Transfer System Users’ Guide 5-11


Item Description Variable Array/ Units Notes
Type Scalar
‘TubeBundleDiam’ Diameter of tubeside bundle Real Scalar Fine Length
‘TubeBundleWt’ Weight of tubeside bundle Real Scalar Weight
‘TubeBWG’ Birmingham Wire Gauge of tube Integer Scalar
‘TubeDens’ Density of tubeside fluid Real Scalar Density
‘TubeFilmCoeff’ Film coefficient of tubeside Real Scalar Ht. Trans. Coeff.
‘TubeFilmCoeffSclFct’ Tubeside film coefficient scaling factor Real Scalar
‘TubeFoulFct’ Fouling factor for tubeside Real Scalar Foul Factor
‘TubeFoulLayerThck’ Thickness of tubeside fouling layer Real Scalar Fine Length
‘TubeID’ Inside diameter of tube Real Scalar Fine Length
‘TubeLen’ Length of tube Real Scalar Length
‘TubeMatCode’ Tube material code Integer Scalar 4
‘TubeNozzleInletID’ Inside diameter of tube nozzle inlet Real Scalar Fine Length
‘TubeNozzleOutletID’ Inside diameter of tube nozzle outlet Real Scalar Fine Length
‘TubeOD’ Outside diameter of tube Real Scalar Fine Length
‘TubePipeSched’ Pipe schedule of tubeside Real Scalar
‘TubePitch’ Center-center distance between tubes Real Scalar Fine Length
‘TubePitchFlag’ Tube pitch flag Integer Scalar 3
‘TubePresDropCalc’ Calculated pressure drop across tube Real Scalar Pres. Diff.
‘TubePrnNum’ Prandtl number in tubeside Real Scalar
‘TubeReyNum’ Reynolds number in tubeside Real Scalar
‘TubeSheetThck’ Thickness of tubeside sheet Real Scalar Fine Length
‘TubeTempIn’ Inlet temperature of tubeside fluid Real Scalar Fine Length
‘TubeTempOut’ Outlet temperature of tubeside fluid Real Scalar
‘TubeThck’ Thickness of tube Real Scalar Fine Length
‘TubeThermCond’ Thermal conductivity of tube Real Scalar Thermal Cond.
‘TubeVel’ Velocity of fluid in tubeside Real Scalar Velocity
‘TubeWallRes’ Resistance of tubeside wall Real Scalar Foul Factor
Notes:
1) Position Flag
1 - Horizontal orientation 2 - Vertical orientation
2) Flow Type Flag
0 - Countercurrent 1 - Cocurrent
3) Tube Pitch Flag
0 - Not defined 1 - 30 Degrees 2 - 90 Degrees
3 - 60 Degrees 4 - 45 Degrees
4) Material Code Flag
1 - Carbon Steel 2 - Carbon-moly Steel 3 - Chrome-moly Steel
4 - Low Chrome Steel 5 - Med Chrome Steel 6 - Straight Chrome Steel
7 - 304 SS 8 - 310 SS 9 - 316 SS
10- 321 SS 20- Al 1060 H14 21- Al 1100 Annealed
22- Al 3003 H14 Annealed 23- Al 3003 H25 Annealed 24- Al 6061 T4 Annealed
25- Al 6061 T6 Annealed 30- Copper 31- Arsenical Copper
32- Cu/Ni 90/10 33- Cu/Ni 80/20 34- Cu/Ni 70/30
35- Cu/Ni 60/40 40- Red Brass 85Cr/15Zn 41- Admiralty Brass 71Cu/28Zn/1Sn
42- Com Brass 55Cu/34Zn 43- Muntz Metal 60Cu/40Zn 44- Al Brass 93Cu/5Al
45- Al Brass 78Cu/2Al 50- Nickel Annealed 51- Low Carbon Nickel Annealed
52- Monel 70Ni/30Cu 53- Inconel 600 76Ni/16Cr/8Fe 60- Titanium Grade 2
5) Attach Side Flag
0 - None 1 - Shell 2 - Tube
6) Attached Type Flag - Indicates type of Attachment
1 - Condenser 2 - Reboiler 3 - Pumparound
4 - Side Heater or Cooler
7) Tray number in column where attached - Use ‘AttachUnit’ to get column unit ID
8) Duty has units 106 Energy/Time

5-12 Attribute Lists


Item Description Variable Array/ Units Notes
Type Scalar
‘UAVal’ U*A value Real Scalar U*A
‘UnitAreaPerShell’ Unit area per shell Real Scalar
‘UValCalc’ Calculated U-value Real Scalar Ht. Trans. Coeff.
‘UValFoul’ U-value with fouling factor Real Scalar Ht. Trans. Coeff.
‘UValNoFoul’ U-value without fouling Real Scalar Ht. Trans. Coeff.
Notes:
1) Position Flag
1 - Horizontal orientation 2 - Vertical orientation
2) Flow Type Flag
0 - Countercurrent 1 - Cocurrent
3) Tube Pitch Flag
0 - Not defined 1 - 30 Degrees 2 - 90 Degrees
3 - 60 Degrees 4 - 45 Degrees
4) Material Code Flag
1 - Carbon Steel 2 - Carbon-moly Steel 3 - Chrome-moly Steel
4 - Low Chrome Steel 5 - Med Chrome Steel 6 - Straight Chrome Steel
7 - 304 SS 8 - 310 SS 9 - 316 SS
10- 321 SS 20- Al 1060 H14 21- Al 1100 Annealed
22- Al 3003 H14 Annealed 23- Al 3003 H25 Annealed 24- Al 6061 T4 Annealed
25- Al 6061 T6 Annealed 30- Copper 31- Arsenical Copper
32- Cu/Ni 90/10 33- Cu/Ni 80/20 34- Cu/Ni 70/30
35- Cu/Ni 60/40 40- Red Brass 85Cr/15Zn 41- Admiralty Brass 71Cu/28Zn/1Sn
42- Com Brass 55Cu/34Zn 43- Muntz Metal 60Cu/40Zn 44- Al Brass 93Cu/5Al
45- Al Brass 78Cu/2Al 50- Nickel Annealed 51- Low Carbon Nickel Annealed
52- Monel 70Ni/30Cu 53- Inconel 600 76Ni/16Cr/8Fe 60- Titanium Grade 2
5) Attach Side Flag
0 - None 1 - Shell 2 - Tube
6) Attached Type Flag - Indicates type of Attachment
1 - Condenser 2 - Reboiler 3 - Pumparound
4 - Side Heater or Cooler
7) Tray number in column where attached - Use ‘AttachUnit’ to get column unit ID
8) Duty has units 106 Energy/Time

PRO/II Data Transfer System Users’ Guide 5-13


LNGHX
Class: ‘LngHx’

Item Description Variable Array/ Units Notes


Type Scalar
‘CellDutyCalc’ Calculated cell duty Real Scalar Duty 1, 3
‘CellInletPresCalc’ Calculated inlet cell pressures Real Array Pressure 1
‘CellInletTempCalc’ Calculated inlet cell temperatures Real Array Temperature 1
‘CellOutletPresCalc’ Calculated outlet cell pressures Real Array Pressure 1
‘CellOutletTempCalc’ Calculated outlet cell temperatures Real Array Temperature 1
‘CellType’ Cell type Integer Array 1, 2
‘NumberColdFeeds’ Number of feeds on coldside Integer Scalar
‘NumberHotFeeds’ Number of feeds on hotside Integer Scalar
‘NumberOfCells’ Number of cells Integer Scalar
‘OverallDuty’ Overall calculated duty Real Scalar Duty *
‘ZoneLMTD’ Calculated LMTD for zones Real Scalar Temp. Diff.
‘ZoneMITA’ MITA for zones Real Scalar Temp. Diff.
‘ZoneUA’ Calculated U*A for zones Real Scalar U*A
Notes:
1) Count = number of cells
2) Array of integer flags for each cell (1 = hot cell, 2 = cold cell)
3) Duty has units 106 Energy/Time

5-14 Attribute Lists


Shortcut
Class: ‘Short’

Item Description Variable Array/ Units Notes


Type Scalar
‘CondDuty’ Condenser duty Real Array 4
‘CondenserType’ Condenser type flag Integer Scalar 1
‘FeedQuality’ Slope (Q) of feed quality line Real Scalar
‘FeedTrays’ Number of feed trays Real Array 4
‘FenskeIndex’ Calculated Fenske index Real Array 3
‘HvyKeyComponent’ Heavy key component ID Character Scalar
‘LtKeyComponent’ Light key component ID Character Scalar
‘MinimumReflux’ Minimum reflux ratio Real Scalar
‘MinimumTrays’ Minimum trays for total reflux Real Scalar
‘MMMin’ Ratio of number of trays to minimum Real Array 4
‘NumberOfSections’ Number of column sections Integer Scalar
‘ReboilDuty’ Reboiler duty Real Array 4
‘RefluxRatio’ Calculated reflux ratio Real Array 4
‘RRMin’ Minimum reflux ratio Real Array 4
‘TotalTrays’ Total number of trays Real Array 4
‘UnderwoodCalcFlag’ Underwood calculation flag Integer Scalar 2
Notes:
1) Flag indicating condenser type (see Fig. 78.2 in the PRO/II Keyword Manual)
0 - None 1 - Partial 2 - Mixed
3 - Bubble point 4 - Temperature fixed 5 - Delta T below bubble point
2 Indicator flag for availability of Underwood/Fenske/Gilliland table data
0 - No 1 - Yes
3 Count = number of sections
4 Underwood/Fenske/Gilliland data table (count = 5 points for each item)

PRO/II Data Transfer System Users’ Guide 5-15


Column/Side
Class: ‘Colu’ or ‘Side’
Item Description Variable Type Units Notes
‘AlgorithmType’ Column algorithm type Integer Scalar 1
‘CondenserDuty’ Condenser duty Real Scalar Duty *
‘CondenserType’ Condenser type Integer Scalar 2
‘DecantDrawRate’ Flowrate of decant draw Real Array 8
‘DecantTrays’ Decant tray locations Integer Array 8
‘DrawPhase’ Phase of stream from draw tray Integer Array 7
‘DrawTrays’ Draw tray locations Integer Array 6
‘FeedTrays’ Feed tray locations Integer Array 5
‘HeaterDuties’ Duties of side heaters/coolers Real Array Duty * 9
‘HeaterTrays’ Heater/Cooler tray locations Integer Array 9
‘HvyKeyComponents’ Heavy key components Integer Array 4
‘LtKeyComponents’ Light key components Integer Array 4
‘NumberDecantTrays’ Number of decant trays Integer Scalar
‘NumberDrawTrays’ Number of draw trays Integer Scalar
‘NumberFeedTrays’ Number of feed trays Integer Scalar
‘NumberOfHeaters’ Number of side heaters/coolers Integer Scalar
‘NumberOfPumpArounds’ Number of pumparounds Integer Scalar
‘NumberOfTrays’ Total number of trays Integer Scalar
‘PumpAroundPhase’ Phase of pumparound stream Integer Array 11
‘PumpAroundRate’ Flowrate of pumparound stream Real Array 10
‘PumpAroundTrayFrom’ Pumparound tray location (from) Integer Array 10
‘PumpAroundTrayTo’ Pumparound tray location (to) Integer Array 10
‘QLossData’ Heat loss per tray Real Array Duty * 12
‘QLossTotal’ Total heat loss Real Scalar Duty *
‘ReboilerDuty’ Reboiler duty Real Scalar Duty *
‘ReboilerType’ Reboiler type Integer Scalar 3
‘TrayLiqDensityAct’ Actual density of liquid on each tray Real Array Density 13
Notes:
1) Algorithm type flag:
1 - I/O 2 - SURE 3 - CHEMDIST
4 - LLEX 5 - REACTIVE DISTILLATION 6 - ELECTROLYTIC DISTILLATION
2) Flag indicating condenser type (see Fig. 71.2 in Keyword Manual)
0 - None 1 - Partial 2 - Mixed
3 - Bubble point 4 - Temperature fixed 5 - Delta T below bubble point
3) Flag indicating reboiler type
0 - None 1 - Both feed & heater on bottom tray
2 - Conventional reboiler 3 - Thermosiphon reboiler without baffles
4 - Thermosiphon reboiler with baffles
4) Key components are arrays of 2 key component numbers
5) Array of tray locations for each feed tray (count = number of feed trays)
6) Array of tray locations for each prod. draw including ovhd & btms products, but not including water draws (count = no. of draw trays)
7) Array of flags for each product draw (1 = liquid, 2 = vapor)
8) Array of tray locations for each water decant draw tray (count = number of decant trays)
9) Array of duties for all heaters/coolers (count = number of heaters)
10) Array of pumparound tray locations (count = Number of Pumparounds)
11) Array of flags for each pumparound indicating phase drawn from tray (1 = liquid, 2 = vapor)
12) Array of duties indicating heat leak (count = number of heat leaks)
13) Array with count = number of trays
14) Array equivalent to a two-dimensional array - (number of components) x (number of trays)
15) Duty has units 106 Energy/Time

5-16 Attribute Lists


Item Description Variable Type Units Notes
‘TrayLiqEnthalpy’ Molar enthalpy of liquid on each tray Real Array Molar Enthalpy 13
‘TrayLiqEntropy’ Molar entropy of liquid on each tray Real Array Molar Entropy 13
‘TrayLiqMolecWeight’ MW of liquid on each tray Real Array 13
‘TrayLiqSpecGravity’ Specific gravity of liquid on each tray Real Array 13
‘TrayLiqSurfTens’ Surface tension of liquid on each tray Real Array Surface Tension 13
‘TrayLiqThermalCond’ Thermal cond. of liquid on each tray Real Array Thermal Cond. 13
‘TrayLiquidMoleFracs’ Liquid mole fract. of fluid on each tray Real Array 14
‘TrayLiqViscosity’ Viscosity of liquid on each tray Real Array Viscosity 13
‘TrayLiqVolumeRateAct’ Actual vol. liq. flowrate on each tray Real Array Liq. Vol. Rate 13
‘TrayLiqVolumeRateStd’ STD vol flowrate of liquid on each tray Real Array Liq. Vol. Rate 13
‘TrayLiqWeightRate’ Flowrate (WT) of liquid on each tray Real Array Weight Rate 13
‘TrayNetLiqRates’ Flowrate of net liquid from each tray Real Array Mole Rate 13
‘TrayNetVapRates’ Flowrate of net vapor from each tray Real Array Mole Rate 13
‘TrayPressures’ Tray pressures Real Array Pressure 13
‘TrayTemperatures’ Tray temperatures Real Array Temperature 13
‘TrayTotalLiqRates’ Flowrate of total liquid on each tray Real Array Mole Rate 13
‘TrayTotalVapRates’ Flowrate of total vapor on each tray Real Array Mole Rate 13
‘TrayVapDensityAct’ Actual density of vapor on a tray Real Array Density 13
‘TrayVapEnthalpy’ Molar enthalpy of vapor on each tray Real Array Molar Enthalpy 13
‘TrayVapEntropy’ Molar entropy of vapor on each tray Real Array Molar Entropy 13
‘TrayVapMolecWeight’ MW of vapor on each tray Real Array 13
‘TrayVaporMoleFracs’ Vapor mole fract. of fluid on each tray Real Array 14
‘TrayVapThermalCond’ Thermal cond. of vapor on each tray Real Array Thermal Cond. 13
‘TrayVapViscosity’ Viscosity of vapor on each tray Real Array Viscosity 13
‘TrayVapVolumeRateAct’ Actual vol. vapor flowrate on each tray Real Array Vap. Vol. Rate 13
‘TrayVapVolumeRateStd’ STD vol. vapor flowrate r on each tray Real Array Vap. Vol. Rate 13
‘TrayVapWeightRate’ Flowrate (WT) of vapor on each tray Real Array Weight Rate 13
‘TrayVleKValues’ Vapor-liquid tray K-values Real Array 14
Notes:
1) Algorithm type flag:
1 - I/O 2 - SURE 3 - CHEMDIST
4 - LLEX 5 - REACTIVE DISTILLATION 6 - ELECTROLYTIC DISTILLATION
2) Flag indicating condenser type (see Fig. 71.2 in Keyword Manual)
0 - None 1 - Partial 2 - Mixed
3 - Bubble point 4 - Temperature fixed 5 - Delta T below bubble point
3) Flag indicating reboiler type
0 - None 1 - Both feed & heater on bottom tray
2 - Conventional reboiler 3 - Thermosiphon reboiler without baffles
4 - Thermosiphon reboiler with baffles
4) Key components are arrays of 2 key component numbers
5) Array of tray locations for each feed tray (count = number of feed trays)
6) Array of tray locations for each prod. draw including ovhd & btms products, but not including water draws (count = no. of draw trays)
7) Array of flags for each product draw (1 = liquid, 2 = vapor)
8) Array of tray locations for each water decant draw tray (count = number of decant trays)
9) Array of duties for all heaters/coolers (count = number of heaters)
10) Array of pumparound tray locations (count = Number of Pumparounds)
11) Array of flags for each pumparound indicating phase drawn from tray (1 = liquid, 2 = vapor)
12) Array of duties indicating heat leak (count = number of heat leaks)
13) Array with count = number of trays
14) Array equivalent to a two-dimensional array - (number of components) x (number of trays)
15) Duty has units 106 Energy/Time

PRO/II Data Transfer System Users’ Guide 5-17


LLEX
Class: ‘Llex’ or ‘Colu’
Item Description Variable Array/ Units Notes
Type Scalar
‘AlgorithmType’ Type of calculation algorithm Integer Scalar 1
‘DrawTrays’ Draw tray location Integer Array 3
‘FeedTrays’ Feed tray location Integer Array 2
‘HeaterDuties’ Duties of side heaters/coolers Real Array Duty 5, 8
‘HeaterTrays’ Side heater/cooler tray location Integer Array 4
‘NumberDrawTrays’ Number of draw trays Integer Scalar
‘NumberFeedTrays’ Number of feed trays Integer Scalar
‘NumberOfHeaters’ Number of heaters/coolers Integer Scalar
‘NumberOfTrays’ Total number of trays Integer Scalar
‘QLossData’ Heat loss per tray Real Array Duty 6, 8
‘QLossTotal’ Total heat loss Real Array Duty 8
‘TrayNetLiq1Rates’ Flowrate of net liquid L1 from a tray Real Array Mole Rate 7
‘TrayNetLiq2Rates Flowrate of net liquid L2 from a tray Real Array Mole Rate 7
‘TrayPressures’ Tray pressures Real Array Pressure 7
‘TrayTemperatures’ Tray temperatures Real Array Temperature 7
Notes:
1) Algorithm type flag. Only valid value: 4 - LLEX
2) Array of tray locations for for each feed tray (count = number of feed trays)
3) Array of tray locations for each product draw (count = number of draw trays)
4) Array of tray locations for each heater / cooler (count = number of heaters)
5) Array of duties for all heaters/coolers (count = number of heaters)
6) Array of duties indicating heat leak (count = number of heat leaks)
7) Array with count = number of trays
8) Duty has units 106 Energy/Time

5-18 Attribute Lists


HCurve
Class: ‘HCurve’

Item Description Variable Array/ Units Notes


Type Scalar
‘ActDensLiquid’ Actual density of liquid phase Real Array Density 5
‘ActDensVapor’ Actual density of vapor phase Real Array Density 5
‘BubblePointindices’ Indices of Bubble Points Integer Array
‘CpLiquid’ CP of liquid Real Array Sp. Heat (Wt.)
‘CpVapor’ CP of vapor Real Array Sp. Heat (Wt.)
‘DewPointindices’ Indices of Dew Points Integer Array
‘EnthalpyDecant’ Enthalpy of decanted phase Real Array Duty 5, 6
‘EnthalpyLiquid’ Enthalpy of liquid phase Real Array Duty 5, 6
‘EnthalpyTotal’ Total enthalpy Real Array Duty 5, 6
‘EnthalpyVapor’ Enthalpy of vapor phase Real Array Duty 5, 6
‘EntropyLiquid’ Entropy of liquid phase Real Array Entropy (Wt.) 5
‘EntropyVapor’ Entropy of vapor phase Real Array Entropy (Wt.) 5
‘HcurveType’ Type of HCURVE Integer Array 1
‘MoleFracDecant’ Decant phase fraction (molar basis) Real Array 5
‘MoleFracLiquid’ Liquid fraction (molar basis) Real Array 5
‘MoleFracVapor’ Vapor fraction (molar basis) Real Array 5
‘MoleRateDecant’ Molar flowrate of decant phase Real Array 5
‘MoleRateLiquid’ Molar flowrate of liquid phase Real Array Molar Rate 5
‘MoleRateVapor’ Molar flowrate of vapor phase Real Array Molar Rate 5
‘MolWeightLiquid’ Molecular weight of liquid phase Real Array 5
‘MolWeightVapor’ Molecular weight of vapor phase Real Array 5
‘NumberOfHCurves’ Number of HCURVES Integer Scalar
‘NumberOfPoints’ Number of points per curve Integer Array
‘Pressures’ HCURVE pressures Real Array Pressure 5
‘SideNumber’ Side number Integer Array 3
‘SourceID’ ID of source Character Array 4
‘SourceType’ Source type Character Array 2
‘SpecGravLiquid’ Specific gravity of liquid phase Real Array 5
‘StdVolRateVapor’ STD vol. flowrate of vapor phase Real Array Vap. Vol. 5
‘SurfTensLiquid’ Surface tension of liquid phase Real Array Surface Tension 5
‘Temperatures’ HCURVE temperatures Real Array Temperature 5
‘ThermalCondLiquid’ Thermal conductivity of liquid phase Real Array Thermal Cond. 5
Notes:
1) Flag for HCURVE type (count = number of curves)
1 - Isothermal 2 - Adiabatic 3 - Bubble point temperature
4 - Bubble point pressure 5 - Dew point temperature 6 - Dew point pressure
2) Flag for feed source to HCURVE (count = number of curves)
"Stream" - Stream feed "Unit" - Feed stream is derived from UNIT
3) Flag for side of unit providing feed if above flag is = 1 (count = number of curves)
Unit Type Flag Value
HX 1 = hot side, 2 = cold side
HXRIG 1 = shell side, 2 = tube side
LNGHX Cell number
COLUMN Heater/cooler number
4) 12 Character unit ID of source unit (count = number of curves)
5) Array equivalent to two-dimensional array (number of points) x (number of curves)
6) Duty has units 106 Energy/Time

PRO/II Data Transfer System Users’ Guide 5-19


Item Description Variable Array/ Units Notes
Type Scalar
‘ThermalCondVapor’ Thermal conductivity of vapor phase Real Array Thermal Cond. 5
‘ViscosityLiquid’ Viscosity of liquid phase Real Array Viscosity 5
‘ViscosityVapor’ Viscosity of vapor phase Real Array Viscosity 5
‘WaterPointindices’ Indices of Water Points Integer Array
‘ZFactor’ Compressibility of vapor phase Real Array
Notes:
1) Flag for HCURVE type (count = number of curves)
1 - Isothermal 2 - Adiabatic 3 - Bubble point temperature
4 - Bubble point pressure 5 - Dew point temperature 6 - Dew point pressure
2) Flag for feed source to HCURVE (count = number of curves)
"Stream" - Stream feed "Unit" - Feed stream is derived from UNIT
3) Flag for side of unit providing feed if above flag is = 1 (count = number of curves)
Unit Type Flag Value
HX 1 = hot side, 2 = cold side
HXRIG 1 = shell side, 2 = tube side
LNGHX Cell number
COLUMN Heater/cooler number
4) 12 Character unit ID of source unit (count = number of curves)
5) Array equivalent to two-dimensional array (number of points) x (number of curves)
6) Duty has units 106 Energy/Time

Phase Envelope
Class: ‘Phase’

Item Description Variable Array/ Units Notes


Type Scalar
‘CriconBarPressure’ Cricondenbar pressure Real Array Pressure 1
‘CriconBarTemperature’ Cricondenbar temperature Real Array Temperature 1
‘CriconThermPressure’ Cricondentherm pressure Real Array Pressure 1
‘CriconThermPressure’ Cricondentherm temperature Real Array Temperature 1
‘CriticalPressure’ Critical pressure Real Array Pressure 1
‘CriticalTemperature’ Critical temperature Real Array Temperature 1
‘NumberOfPCurves’ Number of pressure envelope curves Integer Scalar
‘NumberOfPoints’ Number of points per curve Integer Array 1
‘Pressures’ Pressures Real Array Pressure 2
‘Temperatures’ Temperatures Real Array Temperature 2
Notes:
1) Array count = number of curves
2) Array equivalent to two-dimensional array (number of points) x (number of curves)

5-20 Attribute Lists


Calculator
Class: ‘Calc’

Item Description Variable Array/ Units Notes


Type Scalar
‘ConstVector’ Value of constants Real Array 1
‘NumberOfConstants’ Total number of constants Integer Scalar
‘NumberOfParameters’ Total number of parameters Integer Scalar
‘NumberOfResults’ Total number of results Integer Scalar
‘ParamVector’ Value of parameters Real Array 2
‘ResultNames’ Names of results Character Array 3
‘ResultVector’ Value of results Real Array 3
Notes:
1) Count = number of constants
2) Count = number of parameters
3) Count = number of results

Equilibrium Reactor
Class: ‘EquReactor’

Item Description Variable Array/ Units Notes


Type Scalar
‘BaseComponentID’ ID of base component Character Array 4
‘ChangeMoles’ Molar change in composition Real Array 8
‘ConversionBaseComp’ Total conversion of base component Real Array 4
‘FeedMoles’ Molar composition reactor feed Real Array Mole Rate 5
‘FractionConv’ Fraction conversion Real Array 7
‘InletPressure’ Pressure at reactor inlet Real Scalar Pressure
‘InletTemperature’ Temperature at reactor inlet Real Scalar Temperature
‘NumberOfReactions’ Number of reactions Integer Scalar
‘OutletPressure’ Pressure at reactor outlet Real Scalar Pressure
‘OutletTemperature’ Temperature at reactor outlet Real Scalar Temperature
‘ProdMoles’ Molar composition reactor effluent Real Array Mole Rate 5
‘ReacModeFlag’ Reactor mode of operation Flag Integer Scalar 2
‘ReactorPhase’ Reactor phase Integer Scalar 3
‘ReactorTypeFlag’ Reactor type Integer Scalar 1
‘TotalDuty’ Total reactor duty Real Scalar Duty 8
‘TotalHeatOfReaction’ Total heat of reaction Real Scalar Duty 8
Notes:
1) Reactor Type
0 - General 1 - Shift 2 - Methanator
2) Reactor Mode Flag
1 - Outlet Temp. Specified 2 - Adiabatic operation 3 - Isothermal at mixed feed temperature
3) Reactor Phase
1 = Vapor 2 = Liquid
4) Count = number of reactions
5) Count = number of components
6) Change in Moles (Product - Feed); Count = number of components
7) Fraction converted for reactants consumed; If any component is generated, fraction converted is reported as zero;
Count = number of components
8) Duty has units 106 Energy/Time

PRO/II Data Transfer System Users’ Guide 5-21


Conversion Reactor
Class: ‘ConReactor’

Item Description Variable Array/ Units Notes


Type Scalar
‘BaseComponentID’ ID of base component Character Scalar 3
‘ChangeMoles’ Molar change in composition Real Array 6
‘ConversionBaseComp’ Total conversion of base component Real Array 4
‘FeedMoles’ Molar composition reactor feed Real Array 5
‘FractionConv’ Fraction conversion Real Array 7
‘InletPressure’ Pressure at reactor inlet Real Scalar Pressure
‘InletTemperature’ Temperature at reactor inlet Real Scalar Temperature 4
‘NumberOfReactions’ Number of reactions Integer Scalar
‘OutletPressure’ Pressure at reactor outlet Real Scalar Pressure
‘OutletTemperature’ Temperature at reactor outlet Real Scalar Temperature
‘ProdMoles’ Molar composition reactor effluent Real Array 5
‘ReacModeFlag’ Reactor mode of operation Flag Integer Scalar 2
‘ReactorPhase’ Reactor phase Integer Scalar
‘ReactorTypeFlag’ Reactor type Integer Scalar 1
‘TotalDuty’ Total reactor duty Real Scalar Duty 8
‘TotalHeatOfReaction’ Total heat of reaction Real Scalar Duty 8
Notes:
1) Reactor Type
0 - General 1 - Shift 2 - Methanator
2) Reactor Mode Flag
1 - Outlet temp. specified 2 - Adiabatic 3 - Isothermal at mixed feed temperature
3) Reactor Phase
1 - Vapor 2 - Liquid
4) Count = number of reactions
5) Count = number of components
6) Change in moles (product - feed)- count = number of components
7) Fraction converted for reactants consumed; If any component is generated, fraction converted is reported as zero;
Count = number of components
8) Duty has units 106 Energy/Time

5-22 Attribute Lists


CSTR
Class: ‘Cstr’

Item Description Variable Array/ Units Notes


Type Scalar
‘BaseComponentID’ ID of base component Character Scalar 3
‘ChangeMoles’ Molar change in composition Real Array 5
‘ConversionBaseComp’ Total conversion of base component Real Array 3
‘FeedMoles’ Molar composition reactor feed Real Array 4
‘FractionConv’ Fraction conversion composition Real Array 6
‘InletPressure’ Pressure at reactor inlet Real Scalar Pressure
‘InletTemperature’ Temperature at reactor inlet Real Scalar Temperature
‘NumberOfReactions’ Number of reactions Integer Scalar
‘ProdMoles’ Molar composition reactor effluent Real Array 4
‘ReactorPhase’ Reactor phase Integer Scalar 2
‘ReactorPressure’ Pressure inside reactor Real Scalar Pressure
‘ReactorSpaceTime’ Space time in reactor Real Scalar Time
‘ReactorSpaceVelocity’ Reactor space velocity Real Scalar 1/Time
‘ReactorTemperature’ Temperature inside reactor Real Scalar Temperature
‘ReactorTypeFlag’ Reactor type Integer Scalar 1
‘ReactorVolumeCalc’ Calculated reactor volume Real Scalar Liq. Volume
‘TotalDuty’ Total reactor duty Real Scalar Duty 7
‘TotalHeatOfReaction’ Total heat of reaction Real Scalar Duty 7
Notes:
1) Reactor type
1 - Outlet temperature specified 2 - Adiabatic
3 - Isothermal at mixed feed temperature 4 - Boiling pot
2) Reactor phase
1 - Vapor 2 - Liquid
3) Count = number of reactions
4) Count = number of components
5) Change in Moles (Product - Feed); count = number of components
6) Fraction Converted for reactants consumed; If any component is generated, fraction converted is reported as zero;
Count = number of components
7) Duty has units 106 Energy/Time

PRO/II Data Transfer System Users’ Guide 5-23


Plug Flow Reactor
Class: ‘Plug’

Item Description Variable Type Units Notes


‘AnnulFluidFlag’ Flag on jacket fluid Integer Scalar 3
‘AnnulPresProfile’ Jacket pressure profile Real Array Pressure 5
‘AnnulPressIn’ Jacket pressure at the inlet Real Scalar Pressure
‘AnnulPressOut’ Jacket pressure at the outlet Real Scalar Pressure
‘AnnulTempIn’ Jacket temperature at inlet Real Scalar Temperature
‘AnnulTempOut’ Jacket temperature at outlet Real Scalar Temperature
‘AnnulTempProfile’ Jacket temperature profile Real Array Temperature 5
‘BaseComponentID’ ID of base component Character Scalar 4
‘ChangeMoles’ Molar change in composition Real Array Mole Rate 7
‘ConversionBaseComp’ Total conversion of base component Real Array 4
‘FeedMoles’ Molar composition reactor feed Real Array Mole Rate 6
‘FractionConv’ Fraction conversion Real Array 8
‘HeatTransCoeff’ Heat transfer coeff. of reactor tubes Real Scalar Heat Transfer Coeff.
‘InletPressure’ Pressure at reactor inlet Real Scalar Pressure
‘InletTemperature’ Temperature at reactor inlet Real Scalar Temperature
‘MaxVelocityDist’ Dist. from inlet where vel. is max Real Scalar Length
‘NumberOfReactions’ Number of reactions Integer Scalar
‘NumberOfTubes’ Number of reactor tubes Real Scalar
‘NumberProfPoints’ Number of profile points Integer Scalar
‘OutletPressure’ Pressure at reactor outlet Real Scalar Pressure
‘OutletTemperature’ Temperature at reactor outlet Real Scalar Temperatur
‘ProdMoles’ Molar composition reactor effluent Real Array Mole Rate 6
‘ProfileDistance’ Profile distance along reactor length Real Array 5
‘ReacPresProfile’ Pressure profile along reactor length Real Array 5
‘ReacTempProfile’ Temp. profile along reactor length Real Array 5
‘ReactorPhase’ Reactor phase Integer Scalar 2
‘ReactorTypeFlag’ Reactor type Integer Scalar 1
‘ResidenceTime’ Reactor residence time Real Scalar Time
‘TotalDuty’ Total reactor duty of reaction Real Scalar Duty 9
‘TotalHeatOfReaction’ Total heat Real Scalar Duty 9
‘TotalVolume’ Total reactor volume Real Scalar Liq. Volume
‘TubeDiameter’ Diameter of reactor tubes Real Scalar Fine Length
‘TubeLength’ Length of reactor tubes Real Scalar Length
‘VelocityMaximum’ Maximum velocity inside reactor Real Scalar Velocity
Notes:
1) Reactor type
1 - Thermal 2 - Adiabatic
3 - Cocurrent Coolant 4 - Countercurrent Coolant
2) Reactor phase: 1 - Vapor 2 - Liquid
3) Jacket fluid: 1 - Cold 2 - Hot
4) Count = number of reactions
5) Count = number of profile points
6) Count = number of components
7) Change in Moles (Product - Feed); Count = number of components
8) Fraction converted for reactants consumed; If any component is generated, fraction converted is reported as zero;
Count = number of components
9) Duty has units 106 Energy/Time

5-24 Attribute Lists


Gibbs Reactor
Class: ‘Gibbs’

Item Description Variable Array/ Units Notes


Type Scalar
‘ChangeMoles’ Molar change in composition Real Array Mole Rate 6
‘FeedMoles’ Molar composition reactor feed Real Array Mole Rate 6
‘FractionConv’ Fraction conversion Real Array 8
‘GibbsMinFreeEnergy’ Gibbs free energy Real Scalar 3
‘InletPressure’ Pressure at reactor inlet Real Scalar Pressure
‘InletTemperature’ Temperature at reactor inlet Real Scalar Temperature
‘ProdMoles’ Molar composition reactor effluent Real Array Mole Rate 6
‘ReactorPhase’ Reactor phase Integer Scalar 2
‘ReactorPressure’ Pressure inside reactor Real Scalar Pressure
‘ReactorTemperature’ Temperature inside reactor Real Scalar Temperature
‘ReactorTypeFlag’ Reactor type Integer Scalar 1
‘TotalDuty’ Total reactor duty Real Scalar Duty 7
‘TotalHeatOfReaction’ Total heat of reaction Real Scalar Duty 7
Notes:
1) Reactor Type Flag
1 - Outlet temperature specified 2 - Adiabatic
3 - Isothermal at mixed feed temperature
2) Reactor Phase
1 - Vapor 2 - Liquid 3 - Mixed
3) G / (R*T)
4) Count = number of components
5) Change in moles (Product - Feed); Count = number of components
6) Fraction converted for reactants consumed; If any component is generated, fraction converted is reported as zero;
Count = number of components
7) Duty has units 106 Energy/Time

User-Added Unit Operations


Class: ‘User’

Item Description Variable Array/ Units Count


Type Scalar
‘HeatVector’ Heat vector Real Array 500
‘IntegerVector’ IPARM vector Integer Array 250
‘RealVector’ RPARM vector Real Array 500
‘SupplVector’ Supplemental vector Real Array 10,000

PRO/II Data Transfer System Users’ Guide 5-25


Chapter 6
PDTS Example Listings

Example 6-1 — Fortran Listing


C
C FILE: EXAM1.FOR
C
C PDTS SAMPLE APPLICATION
C
C
C SIMULATION SCIENCES
C
PROGRAM EXAM1
C
C *********************************************************
C
C LOCAL DECLARATIONS
C
PARAMETER (MAXUOP = 500)

CHARACTER*8 FNAME
CHARACTER*12 UID(MAXUOP), UTYPE(MAXUOP), CUTYPE, XID(3)
CHARACTER*40 UNAME(MAXUOP), XNAME(3)
CHARACTER*10 DNTEMP, DNPRES, DNWORK, DNDUTY, PAUOMS
DIMENSION PIN(3), TIN(3), POUT(3), TOUT(3), PRAT(3),
+ WORK(3), EFF(3), DUTY(3)
*********************************************************
100 FORMAT(/)
101 FORMAT(‘ *** PDTS EXAMPLE PROBLEM # 1 ***’,/,
+ ‘ ENTER FILE NAME: ‘)
102 FORMAT(A)
103 FORMAT(/,’ DATA RETRIEVAL FROM FILE: ‘,A15,/)
107 FORMAT(‘ NUMBER OF COMPONENTS = ‘,I5,/
+ ‘ NUMBER OF STREAMS = ‘,I5,/
+ ‘ NUMBER OF UNITS = ‘,I5,/)
110 FORMAT(/,’UNITS’,/)
111 FORMAT(I3,’ :’,A12,1X,A20,1X,A40)
112 FORMAT(/,’ COMPRESSOR TRAIN SUMMARY TABLE ‘,//,
+ ‘ UNIT ID ‘,15X,3A12,/,
+ 40X,3A12,/)
114 FORMAT(‘ INLET PRESSURE ‘,A10,3F12.4)

PRO/II Data Transfer System Users’ Guide 6-1


115 FORMAT(‘ INLET TEMPERATURE DEG ‘,A10,3F12.4)
116 FORMAT(‘ OUTLET PRESSURE ‘,A10,3F12.4)
117 FORMAT(‘ OUTLET TEMPERATURE DEG ‘,A10,3F12.4)
118 FORMAT(‘ PRESSURE RATIO (OUT/IN) ‘,10X,3F12.4)
119 FORMAT(‘ ACTUAL WORK ‘,A10,3F12.2)
120 FORMAT(‘ ADIABATIC EFFICIENCY ‘,10X,3F12.4)
121 FORMAT(‘ AFTERCOOLER DUTY ‘,A10,3F12.4)
203 FORMAT(‘ SOLUTION NOT REACHED !!!’)
205 FORMAT(‘ ERROR IN FILE INITIALIZATION !!!’)
C
C ENTER FILE NAME
C
WRITE (*,101)
READ (*,102) FNAME
C
C INITIALIZE RETRIEVAL SYSTEM & OPEN SELECTED FILE
C
CALL PAOPEN(FNAME,’ ‘,NFOUT,IRCODE)
IF (IRCODE .NE. 0) THEN
WRITE(*,205)
STOP
ENDIF
C
C WRITE THE FILE NAME
C
WRITE (NFOUT,103) FNAME
WRITE (*,103) FNAME
C
C GET MISCELLANEOUS FLOWSHEET DATA
C
CALL PAMISC(NCOMP,NSTRM,NUNIT,IRCODE)
IF (IRCODE .NE. 0) THEN
WRITE (*,203)
STOP
ENDIF
WRITE (*,107) NCOMP, NSTRM, NUNIT
WRITE (NFOUT,107) NCOMP, NSTRM, NUNIT
C
C SET UNIT OF MEASURE AS DEFAULT INPUT UNITS
C
KUOM = 0
C
C GET UNIT IDS
C
CALL PADATC(‘UNIT’,’IDS’,’ALL’,UID,KS,KC,IER)
WRITE (NFOUT,110)
C
C GET UNIT TYPE & NAME
C
DO 1004 IX = 1, NUNIT
CALL PADATC(‘UNIT’,’TYPE’,UID(IX),UTYPE(IX),KS,KC,IER)
C
CALL PADATC(‘UNIT’,’NAME’,UID(IX),UNAME(IX),KS,KC,IER)
C
WRITE (NFOUT,111) IX, UID(IX),UTYPE(IX),UNAME(IX)
1004 CONTINUE
C SELECT COMPRESSOR UNIT OPS
C RETRIEVE DATA FOR EACH STAGE

6-2 PDTS Example Listings


C
KX = 1
DO 1010 IX = 1, NUNIT
CUTYPE = UTYPE(IX)
IF (CUTYPE(1:4) .EQ. ‘COMP’) THEN
C
XID(KX) = UID(IX)
XNAME(KX) = UNAME(IX)
C
CALL PADATR(‘Compressor’,’PresInletCalc’,UID(IX),PIN(KX),
+ KC,KUOM,IPRES,IER)
C
CALL PADATR(‘Compressor’,’TempInletCalc’,UID(IX),TIN(KX),
+ KC,KUOM,ITEMP,IER)
C
CALL PADATR(‘Compressor’,’PresCalc’,UID(IX),POUT(KX),
+ KC,KUOM,IUOM,IER)
C
CALL PADATR(‘Compressor’,’TempCalc’,UID(IX),TOUT(KX),
+ KC,KUOM,IUOM,IER)
C
CALL PADATR(‘Compressor’,’PRatio’,UID(IX),PRAT(KX),
+ KC,KUOM,IUOM,IER)
C
CALL PADATR(‘Compressor’,’WorkActualCalc’,UID(IX),WORK(KX),
+ KC,KUOM,IWORK,IER)
C
CALL PADATR(‘Compressor’,’EffAdiaCalc’,UID(IX),EFF(KX),
+ KC,KUOM,IUOM,IER)
C
CALL PADATR(‘Compressor’,’AcDutyCalc’,UID(IX),DUTY(KX),
+ KC,KUOM,IDUTY,IER)
C
KX = KX + 1
C
ENDIF
1010 CONTINUE
C
C GET UNIT OF MEASURE STRINGS
C
DNTEMP = PAUOMS(ITEMP, KUOM, IERR)
DNPRES = PAUOMS(IPRES, KUOM, IERR)
DNWORK = PAUOMS(IWORK, KUOM, IERR)
DNDUTY = PAUOMS(IDUTY, KUOM, IERR)
C
C WRITE OUT TABLE
C
WRITE(NFOUT,112) (XID(I), I = 1, 3), (XNAME(I), I =1, 3)
WRITE(NFOUT,114) DNPRES, (PIN(I), I = 1, 3)
WRITE(NFOUT,115) DNTEMP, (TIN(I), I = 1, 3)
WRITE(NFOUT,116) DNPRES, (POUT(I), I = 1, 3)
WRITE(NFOUT,117) DNTEMP, (TOUT(I), I = 1, 3)
WRITE(NFOUT,118) (PRAT(I), I = 1, 3)
WRITE(NFOUT,119) DNWORK, (WORK(I), I = 1, 3)
WRITE(NFOUT,120) (EFF(I), I = 1, 3)
WRITE(NFOUT,121) DNDUTY, (DUTY(I), I = 1, 3)
C
END

PRO/II Data Transfer System Users’ Guide 6-3


Example 6-2 — Fortran Listing
C
C FILE: EXAM2.FOR
C
C PDTS SAMPLE APPLICATION
C
C
C SIMULATION SCIENCES
C
PROGRAM EXAM2
C
C *********************************************************
C
C LOCAL DECLARATIONS
C
PARAMETER (MAXUOP = 500,MXN = 5)
C
CHARACTER*8 FNAME,CASE(MXN)
CHARACTER*12 SID, UID
CHARACTER*40 UNAME
CHARACTER*10 DNFLOW, DNDUTY, PAUOMS
DIMENSION FLOW(MXN), QCON(MXN), QREB(MXN)
*********************************************************
100 FORMAT(/)
101 FORMAT(‘ *** PDTS EXAMPLE PROBLEM # 2 ***’,/,
+ ‘ ENTER FILE NAME: ‘)
102 FORMAT(A)
103 FORMAT(/,’ DATA RETRIEVAL FROM FILE: ‘,A15,/)
105 FORMAT(‘ SETTING UP CASE: ‘,A10)
112 FORMAT(/,’ COLUMN CASE STUDY SUMMARY TABLE ‘,//,
+ ‘ UNIT ID ‘,A12,1X,A40,/)
114 FORMAT(‘ CASE ID ‘,13X,5A12,/)
115 FORMAT(‘ FEED FLOW RATE ‘,A10,5F12.1)
116 FORMAT(‘ CONDENSER DUTY ‘,A10,5F12.4)
117 FORMAT(‘ REBOILER DUTY ‘,A10,5F12.4)
203 FORMAT(‘ SOLUTION NOT REACHED !!!’)
205 FORMAT(‘ ERROR IN FILE INITIALIZATION !!!’)
206 FORMAT(‘ ERROR IN CASE SET-UP !!!’)
C
C ENTER FILE NAME
C
WRITE (*,101)
READ (*,102) FNAME
C
C INITIALIZE RETRIEVAL SYSTEM & OPEN SELECTED FILE
C
CALL PAOPEN(FNAME,’ ‘,NFOUT,IRCODE)
IF (IRCODE .NE. 0) THEN
WRITE(*,205)
STOP
ENDIF
C
C WRITE THE FILE NAME
C
WRITE (NFOUT,103) FNAME
C
C GET ARRAY OF CASE IDS

6-4 PDTS Example Listings


C
CALL PACASL(MXN,KXN,CASE,IRCODE)
NXN = MIN(MXN,KXN)
C
C SET UNIT OF MEASURE AS DEFAULT INPUT UNITS
C
KUOM = 0
C
C TARGET CASE ID IS D101
C FEED STREAM IS ‘1’
C
UID = ‘D101’
SID = ‘1’
C
C SET UP EACH CASE
C
DO 3001 KX = 1, NXN
WRITE(*,105) CASE(KX)
CALL PACASE(CASE(KX),IRCODE)
IF (IRCODE .NE. 0) THEN
WRITE(*,206)
STOP
ENDIF
C
C GET MISCELLANEOUS FLOWSHEET DATA
C
CALL PAMISC(NCOMP,NSTRM,NUNIT,IRCODE)
IF (IRCODE .NE. 0) THEN
WRITE (*,203)
STOP
ENDIF
C
C GET UNIT NAME
C
CALL PADATC(‘UNIT’,’NAME’,UID,UNAME,KS,KC,IER)
C
C GET FEED STREAM RATE
C
CALL PADATR(‘STREAM’,’TotalMolarRate’,SID,FLOW(KX),
+ KC,KUOM,IFLOW,IER)
C
C GET COLUMN CONDENSER & REBOILER DUTIES
C
CALL PADATR(‘Colu’,’CondenserDuty’,UID,QCON(KX),
+ KC,KUOM,IDUTY,IER)
C
CALL PADATR(‘Colu’,’ReboilerDuty’,UID,QREB(KX),
+ KC,KUOM,IUOM,IER)
C
3001 CONTINUE
C
C GET UNIT OF MEASURE STRINGS
C
DNFLOW = PAUOMS(IFLOW, KUOM, IERR)
DNDUTY = PAUOMS(IDUTY, KUOM, IERR)
C
C WRITE OUT TABLE
C

PRO/II Data Transfer System Users’ Guide 6-5


WRITE(NFOUT,112) UID, UNAME
WRITE(NFOUT,114) (CASE(I), I = 1, NXN)
WRITE(NFOUT,115) DNFLOW, (FLOW(I), I = 1, NXN)
WRITE(NFOUT,116) DNDUTY, (QCON(I), I = 1, NXN)
WRITE(NFOUT,117) DNDUTY, (QREB(I), I = 1, NXN)
C
END

Example 6-3 — Fortran Listing


C
C FILE: EXAM3.FOR
C
C PDTS SAMPLE APPLICATION
C
C
C SIMULATION SCIENCES
C
PROGRAM EXAM3
C
C *********************************************************
C
C LOCAL DECLARATIONS
C
PARAMETER (MAXNOC = 50, MAXTRA= 100)
C
CHARACTER*8 FNAME
CHARACTER*12 UID
CHARACTER*16 COMPID(MAXNOC)
CHARACTER*40 UNAME
CHARACTER*10 DNPRES, DNTEMP, DNFLOW, DNVDEN, DNLDEN, PAUOMS
DIMENSION XCOMP(MAXNOC*MAXTRA), YCOMP(MAXNOC*MAXTRA),
+ TEMP(MAXTRA), PRES(MAXTRA), XVNET(MAXTRA),
+ XLNET(MAXTRA), DENVAP(MAXTRA), DENLIQ(MAXTRA)
*********************************************************
100 FORMAT(/)
101 FORMAT(‘ *** PDTS EXAMPLE PROBLEM # 3 ***’,/,
+ ‘ ENTER FILE NAME: ‘)
102 FORMAT(A)
103 FORMAT(/,’ DATA RETRIEVAL FROM FILE: ‘,A15,/)
112 FORMAT(‘ COLUMN REPORT TABLE - UID: ‘,A12,’ - ‘,A40)
114 FORMAT(/,’ TRAY NUMBER: ‘,10X,5I10)
115 FORMAT(‘ PRESSURE: ‘,A10,5F10.2)
116 FORMAT(‘ TEMPERATURE: ‘,A10,5F10.2)
117 FORMAT(‘ NET VAPOR RATE: ‘,A10,5F10.2)
118 FORMAT(‘ NET LIQUID RATE: ‘,A10,5F10.2)
119 FORMAT(‘ VAPOR DENSITY: ‘,A10,5F10.4)
120 FORMAT(‘ LIQUID DENSITY: ‘,A10,5F10.4)
121 FORMAT(/,’ VAPOR PHASE COMPOSITION ‘)
122 FORMAT(1X,A16,13X,5F10.4)
123 FORMAT(/,’ LIQUID PHASE COMPOSITION ‘)
203 FORMAT(‘ SOLUTION NOT REACHED !!!’)
205 FORMAT(‘ ERROR IN FILE INITIALIZATION !!!’)
206 FORMAT(‘ ERROR IN CASE SET-UP !!!’)
C
C ENTER FILE NAME
C

6-6 PDTS Example Listings


WRITE (*,101)
READ (*,102) FNAME
C
C INITIALIZE RETRIEVAL SYSTEM & OPEN SELECTED FILE
C
CALL PAOPEN(FNAME,’ ‘,NFOUT,IRCODE)
IF (IRCODE .NE. 0) THEN
WRITE(*,205)
STOP
ENDIF
C
C WRITE THE FILE NAME
C
WRITE (NFOUT,103) FNAME
C
C GET MISCELLANEOUS FLOWSHEET DATA
C
CALL PAMISC(NCOMP,NSTRM,NUNIT,IRCODE)
IF (IRCODE .NE. 0) THEN
WRITE (*,203)
STOP
ENDIF
C
C SET UNIT OF MEASURE AS DEFAULT INPUT UNITS
C
KUOM = 0
C
C TARGET CASE ID IS D101
C
UID = ‘D101’
C
C GET COMPONENT IDS
C
CALL PADATC(‘COMPS’,’IDS’,’ALL’,COMPID,KS,KC,IER)
C
C GET UNIT NAME
C
CALL PADATC(‘UNIT’,’NAME’,UID,UNAME,KS,KC,IER)
C
C GET NUMBER OF TRAYS
C
CALL PADATI(‘Colu’,’NumberOfTrays’,UID,NTRAY,KC,IER)
C
C GET COLUMN TRAY BY TRAY TEMPERATURE & PRESSURE
C
CALL PADATR(‘Colu’,’TrayPressures’,UID,PRES,
+ KC,KUOM,IPRES,IER)
C
CALL PADATR(‘Colu’,’TrayTemperatures’,UID,TEMP,
+ KC,KUOM,ITEMP,IER)
C
C GET COLUMN TRAY BY TRAY NET LIQUID & NET VAPOR RATES
C
CALL PADATR(‘Colu’,’TrayNetVapRates’,UID,XVNET,
+ KC,KUOM,IFLOW,IER)
C
CALL PADATR(‘Colu’,’TrayNetLiqRates’,UID,XLNET,
+ KC,KUOM,IUOM,IER)

PRO/II Data Transfer System Users’ Guide 6-7


C
C GET COLUMN TRAY BY TRAY LIQUID & VAPOR DENSITIES
C
CALL PADATR(‘Colu’,’TrayVapDensityAct’,UID,DENVAP,
+ KC,KUOM,IVDEN,IER)
C
CALL PADATR(‘Colu’,’TrayLiqDensityAct’,UID,DENLIQ,
+ KC,KUOM,ILDEN,IER)
C
C GET COLUMN TRAY BY TRAY LIQUID & VAPOR COMPOSITIONS
C
CALL PADATR(‘Colu’,’TrayVaporMoleFracs’,UID,YCOMP,
+ KC,KUOM,IUOM,IER)
C
CALL PADATR(‘Colu’,’TrayLiquidMoleFracs’,UID,XCOMP,
+ KC,KUOM,IUOM,IER)
C
C GET UNIT OF MEASURE STRINGS
C
DNPRES = PAUOMS(IPRES, KUOM, IERR)
DNTEMP = PAUOMS(ITEMP, KUOM, IERR)
DNFLOW = PAUOMS(IFLOW, KUOM, IERR)
DNLDEN = PAUOMS(ILDEN, KUOM, IERR)
DNVDEN = PAUOMS(IVDEN, KUOM, IERR)
C
C WRITE OUT TABLE
C
C
WRITE (NFOUT,112) UID, UNAME
DO 3001 KX = 1, NTRAY, 5
WRITE (NFOUT,114) KX, KX+1, KX+2, KX+3, KX+4
WRITE (NFOUT,115) DNPRES, (PRES(I), I = KX, KX+4)
WRITE (NFOUT,116) DNTEMP, (TEMP(I), I = KX, KX+4)
WRITE (NFOUT,117) DNFLOW, (XVNET(I), I = KX, KX+4)
WRITE (NFOUT,118) DNFLOW, (XLNET(I), I = KX, KX+4)
WRITE (NFOUT,119) DNVDEN, (DENVAP(I), I = KX, KX+4)
WRITE (NFOUT,120) DNLDEN, (DENLIQ(I), I = KX, KX+4)
C
WRITE (NFOUT,121)
DO 2501 JX = 1, NCOMP
WRITE (NFOUT,122) COMPID(JX),
+ (YCOMP(JX+NCOMP*(I-1)), I = KX, KX+4)
2501 CONTINUE
C
WRITE (NFOUT,123)
DO 2502 JX = 1, NCOMP
WRITE (NFOUT,122) COMPID(JX),
+ (XCOMP(JX+NCOMP*(I-1)), I = KX, KX+4)
2502 CONTINUE
3001 CONTINUE
END

6-8 PDTS Example Listings


Chapter 7
User-Addressable Utility Functions

Subroutine FIGETU
The calling sequence is:
CALL FIGETU ( 1, LOUT)
This is a PRO/II utility that guarantees that the Fortran unit number
passed to your Fortran OPEN statement will not conflict with files
opened by the PDTS system. The FIGETU subroutine call returns the
next available Fortran unit number for input or output as integer
variable LOUT. An example code extract is shown below:
CHARACTER*8 FNAME
CHARACTER*12 FEXTRA
1001 FORMAT(‘ ENTER FILE NAME: ‘)
1002 FORMAT(A)
.
C
C GET NAME OF PRO/II DATA BASE
WRITE (*, 1001)
READ (*, 1002) FNAME
C
C USE PAOPEN TO OPEN DATABASE FILES AND FILE ‘FNAME.PDS’
CALL PAOPEN(FNAME ‘ ‘, NFOUT, IERR)
C
C GET ANOTHER FILE UNIT FOR OUTPUT
CALL FIGETU(1, LOUT)
C
C OPEN FILE ‘FNAME.PXX’ AS NEW FORMATTED SEQUENTIAL FILE
FEXTRA = FNAME // ‘PXX’
OPEN (UNIT=LOUT, FILE=FEXTRA, STATUS=’NEW’,
+ FORM=’FORMATTED’, ACCESS=’SEQUENTIAL’)

PRO/II Data Transfer System Users’ Guide 7-1


Chapter 8
Guide for Pre-v5.5 PDTS-UAS Users

PDTS Applications
Applications which have been developed in the past using older ver-
sions of the PDTS functions will continue to work with this version
of PRO/II with minor modifications.
Users must recompile the Fortran source code and relink their
PDTS application with this version of the PRO/II libraries in order
to make them compatible with PRO/II databases generated with
PRO/II v5.5.

Note: PRO/II database files are not compatible across versions or


hardware platforms.

UAS Applications
PRO/II UAS v5.5 allows up to 25 feed and 25 product streams. The
URXINF subroutine is used to identify these streams.
Prior versions were limited to 10 feed and 10 product streams, and
the IDATA array was used for stream identification:
➤ IDATA(11)-(20) Stream IDs for feeds in same order as FEED
statement
➤ IDATA(21)-(30) Stream IDs for products in same order as
PRODUCT statement
Although this method is still valid in version 5.5 for the first 10 feed
and product streams, it is no longer recommended.
To ensure compatibility with future versions, users are encouraged
to revise their UAS code to account for this change.

PRO/II Data Transfer System Users’ Guide 8-1


Guide for PDTS and UAS v4.0 Users
For applications that were developed using versions 4.0 to 4.17, the
PDTS functions will work with these versions without modifica-
tion. However, you must recompile and relink your application with
the latest version of the PRO/II libraries in order to be compatible
with PRO/II v5.5.

8-2 Guide for Pre-v5.5 PDTS-UAS Users


Index

A C
Attribute Case ID , 1-3
See Data retrieval Case sensitivity
Attribute lists of strings , 1-4
complete listing of , 5-1 Case study ID list subroutine
Calculator , 5-21 PACAS() , 3-3
Column/Side , 5-16
Case study option
Component data , 5-2
multiple cases , 1-6
Compressor , 5-6
Case study setup subroutine
Conversion Reactor , 5-22
PACASE() , 3-4
CSTR , 5-23
Class
Equilibrium Reactor , 5-21
See Data retrieval
Expander , 5-6
Flash , 5-5
Gibbs Reactor , 5-25
HCURVE (heating curve) , 5-19
D
HX (simple) , 5-9
HXRIG (rigorous) , 5-10 Data retrieval
LLEX (liq.-liq. extraction) , 5-18 class, attribute, item scheme , 1-3
LNGHX (liq. nat. gas HX) , 5-14 Data retrieval subroutine
Phase Envelope , 5-20 PADATC() - character , 1-3, 3-8
Pipe , 5-7 PADATI() - integer , 1-3, 3-7
Plug Flow Reactor , 5-24 PADATR() - floating point , 1-3, 1-4, 3-6
Pump , 5-7 Database close subroutine
Shortcut (column) , 5-15 PACLOS() , 3-10
Stream Data , 5-3 Database open subroutine
Unit Data , 5-4 PAOPEN , 2-3, 3-2
Valve , 5-5

F
B
FIGETU()
Building executables Example of implementation , 7-1
for PDTS , 2-2, 2-4 Flowsheet parameter retrieval subroutine
PMISC() , 3-5
Fortran compilers
Compaq Visual Fortran , 2-1
Intel Visual Fortran , 2-4

PRO/II Data Transfer System Users’ Guide I-1


I PAUMOS()
See UOM string
PDTS
Invensys , xiii described , xii
Item PDTS applications
See Data retrieval compatibility with earlier versions , 8-1
IU - UOM class flag , 1-5 PMISC()
See Flowsheet parameter retrieval
PRO/II database files
L *.prz and *.pr1 , 1-2, 2-2

Limits of standard PDTS


column feeds, draws, etc. , 1-2 S
components, streams, unit ops. , 1-2
phase envelope curves, points, etc , 1-2 SIMSCI Internal Units , 1-5

O T
OUTDIME statement , 1-5 Technical support centers , xiv

P U
PACAS() UOM Class flag - IU , 1-5
See Case study ID
UOM group specifier - KU , 1-5
PACASE()
See Case study setup UOM groups (KU) , 1-5
PACLOS UOM string retrieval subroutine
See Database close PAUOMS() , 3-9

I-2 Index

Вам также может понравиться