Sei sulla pagina 1di 106

Aspen Plus 12.

1
Getting Started
Customizing Unit
Operation Models
















Part Number: Aspen Plus

12.1
June 2003
Copyright (c) 1981-2003 by Aspen Technology, Inc. All rights reserved.
Aspen Plus

, Aspen Properties

, Aspen Engineering Suite

, AspenTech

, ModelManager

, the aspen leaf logo and


Plantelligence are trademarks or registered trademarks of Aspen Technology, Inc., Cambridge, MA.
BATCHFRAC

and RATEFRAC

are trademarks of Koch Engineering Company, Inc.


All other brand and product names are trademarks or registered trademarks of their respective companies.
This manual is intended as a guide to using AspenTech's software. This documentation contains AspenTech
proprietary and confidential information and may not be disclosed, used, or copied without the prior consent of
AspenTech or as set forth in the applicable license agreement. Users are solely responsible for the proper use of the
software and the application of the results obtained.
Although AspenTech has tested the software and reviewed the documentation, the sole warranty for the software
may be found in the applicable license agreement between AspenTech and the user. ASPENTECH MAKES NO
WARRANTY OR REPRESENTATION, EITHER EXPRESSED OR IMPLIED, WITH RESPECT TO
THIS DOCUMENTATION, ITS QUALITY, PERFORMANCE, MERCHANTABILITY, OR FITNESS
FOR A PARTICULAR PURPOSE.
Corporate
Aspen Technology, Inc.
Ten Canal Park
Cambridge, MA 02141-2201
USA
Phone: (1) (617) 949-1021
Toll Free: (1) (888) 996-7001
Fax: (1) (617) 949-1724
URL: http://www.aspentech.com
Division
Design, Simulation and Optimization Systems
Aspen Technology, Inc.
Ten Canal Park
Cambridge, MA 02141-2201
USA
Phone: (617) 949-1000
Fax: (617) 949-1030


Getting Started Customizing Unit Operation Models Contents iii
Contents
About This Manual 1-1
Sessions in this Manual .................................................................................................... 1-2
Files Created in these Sessions ........................................................................................ 1-3
Integration Features for Custom Unit Operation Models ................................................ 1-4
Aspen Plus Excel Unit Operations................................................................................... 1-4
Aspen Plus Fortran Models.............................................................................................. 1-5
Creating GUI forms for Proprietary Models.................................................................... 1-5
Supporting Files ............................................................................................................... 1-5
Related Documentation.................................................................................................... 1-6
Getting Started Guides ......................................................................................... 1-6
Installation Guide................................................................................................. 1-6
User Guides.......................................................................................................... 1-6
Technical Support ............................................................................................................ 1-7
Online Technical Support Center......................................................................... 1-7
Contacting Customer Support .............................................................................. 1-7
Hours .................................................................................................................... 1-7
Phone.................................................................................................................... 1-8
Fax........................................................................................................................ 1-9
E-mail ................................................................................................................... 1-9
Creating an Excel Unit Operation Model 2-1
Defining the Simulation ................................................................................................... 2-2
Setting Up the Model in Aspen Plus ................................................................................ 2-3
To Start Aspen Plus.............................................................................................. 2-3
To Specify the Application Type and Run Type for the New Run...................... 2-3
Build the Process Flowsheet ................................................................................ 2-4
Enter Title, Components, Base Method, and Feed Specifications....................... 2-4
Enter Excel Path and User Array Data................................................................. 2-6
Setup a Product Stream Flash .............................................................................. 2-7
Setting Up the Excel Model ............................................................................................. 2-8
Copy and Examine the Excel Template ............................................................... 2-8
Edit the Excel Sheets............................................................................................ 2-9
Enter Membrane Model Equations and Parameters........................................... 2-12
Running the Excel Model............................................................................................... 2-13
Examining Simulation Results....................................................................................... 2-13
To View the Results from the Excel Model....................................................... 2-13

iv Contents Getting Started Customizing Unit Operation Models
To View the Block Results ................................................................................ 2-18
Customizing the Excel/Aspen Plus Interface 3-1
Revising the Excel Model ................................................................................................ 3-2
Revising the User Subroutine........................................................................................... 3-4
Code Listing Subroutine MEM2................................................................................... 3-5
Code Description Subroutine MEM2.......................................................................... 3-14
Compiling and Linking the Subroutine.......................................................................... 3-16
Compile the Excel Interface Subroutine ............................................................ 3-16
Create a Shared Library ..................................................................................... 3-17
Running the Simulation.................................................................................................. 3-18
Results from the Custom Excel Model .......................................................................... 3-20
Customizing the Aspen Plus Model Library 4-1
Creating a Model Library................................................................................................. 4-2
Create an Empty Custom Model Library............................................................. 4-2
Create a Template for Your Custom Model......................................................... 4-3
Create the Custom Model from the Template...................................................... 4-4
Editing the Custom Model ............................................................................................... 4-8
Create a Custom Icon........................................................................................... 4-8
Create References to the Real and Integer Parameters ...................................... 4-11
Inserting the New Model and Running the Simulation.................................................. 4-12
Insert the New Model......................................................................................... 4-12
Check and Edit Setup Sheets.............................................................................. 4-13
Compile, Link, and Run..................................................................................... 4-14
Creating an Aspen Plus Fortran Model 5-1
Putting the Model Equations in the User Subroutine....................................................... 5-2
Code Listing Subroutine HFUM................................................................................... 5-2
Code Description Subroutine HFUM............................................................................ 5-6
Compiling and Linking the Subroutine............................................................................ 5-9
Running the Simulation.................................................................................................. 5-10
Results from the Custom Fortran Model........................................................................ 5-11
Creating an Aspen Plus Custom Form 6-1
Setting Up the Visual Basic Environment ....................................................................... 6-2
Creating the Visual Basic Form....................................................................................... 6-4
Create Three Named Controls.............................................................................. 6-4
Build the Tab Control........................................................................................... 6-5
Build the Input Control ........................................................................................ 6-8
Build the Results Control ................................................................................... 6-11
Integrating Forms with Aspen Plus................................................................................ 6-13
Create OCR and OCX Files for Your Model ..................................................... 6-13
Register the OCX File........................................................................................ 6-15
Testing the New Form.................................................................................................... 6-17

Getting Started Customizing Unit Operation Models Contents v
Results from the Custom Form...................................................................................... 6-19
Connecting to the Aspen Plus Simulation Engine 7-1

vi Contents Getting Started Customizing Unit Operation Models

Getting Started Customizing Unit Operation Models About This Manual 1-1
C H A P T E R 1
About This Manual
Aspen Plus offers the option of using custom or proprietary models
in Aspen Plus simulations. The tutorials in this guide illustrate key
features of this capability by building a simulation based on an
external membrane model and performing the model calculations
using either an Excel file or a Fortran subroutine.
This guide assumes that you are have installed Aspen Plus, Fortran
development software, Visual Basic development software, and
Microsoft Excel on your computer. This guide is designed for
advanced users of Aspen Plus who have a working knowledge of
Fortran, Visual Basic, and Excel.
Even though most users of the customizing options described in
this guide are highly experienced with Aspen Plus, anyone who
has completed the tutorials in Getting Started Building and
Running a Process Model, will be able to work through the
tutorials here by following the step-by-step instructions.

1-2 About This Manual Getting Started Customizing Unit Operation Models
Sessions in this Manual

Follow the steps in this
chapter:
To learn how to:
2 Creating an Excel Unit
Operation Model
Create a simulation that uses an
Excel model to determine
product stream properties.
3 Customizing the Excel/Aspen
Plus Interface
Alter the Fortran interface
subroutine to accommodate an
expanded Excel model.
4 Customizing the Aspen Plus
Model Library
Create a model with pre-defined
parameters for repeated use.
5 Creating an Aspen Plus Fortran
Model
Perform model calculations in a
Fortran subroutine instead of in
an Excel spreadsheet.
6 Creating an Aspen Plus
Custom Form
Create your own Aspen Plus
GUI forms to handle input and
results for your custom models.

Getting Started Customizing Unit Operation Models About This Manual 1-3
Files Created in these Sessions

Filename Chpt Description
Membrane1.apw 2 USER2 model, Excel calculations,
default interface.
MemCalc_PreRun.xls 2 Excel file for use with default
interface (before simulation run).
MemCalc.xls 2 Excel file after the run.
MemCalc_Custom_PreRun.xls 3 Excel file w/ viscosity and cgs units
for use with custom interface.
MemCalc_Custom.xls 3 Excel file after the run.
Mem2.f /obj 3 Code for custom interface.
Membrane2_List_OBJs.opt 3 DLOPT file w/ location of
Mem2.obj.
Membrane2.dll 3 DLL file w/ Mem2 subroutine.
Membrane2_Loc_dll.opt 3 DLOPT w/ location of
Membrane2.dll.
Membrane2.apw 3 USER2 model, Excel calculations,
custom interface.
Ultrafiltration.apm 4 Custom Model Library created by
the user.
Mem2Vars.f/obj 4 Code written by Aspen Plus for
named references.
Membrane2_List_OBJs.opt 4 DLOPT w/ location of Mem2.obj
and Mem2Vars.obj.
Membrane2.dll 4 DLL w/ Mem2 and Mem2Vars
Membrane2_CM.apw 4 Custom model, Excel calculations
custom interface.
HFUM.f/obj 5 Code w/ model equations.
HFUM_List_OBJs.opt 5 DLOPT w/ location of HFUM.obj
and Mem2Vars.obj.
HFUM.dll 5 DLL w/ HFUM and Mem2Vars.
HFUM_Loc_dll.opt 5 DLOPT w/ loc. of HFUM.dll.
HFUM.apw 5 Custom model, Fortran calculations,
no interface.




1-4 About This Manual Getting Started Customizing Unit Operation Models
Files Created in these Sessions . . . continued

Filename Chpt Description
ProjectFile.vbp,
TabControlFile.ctl,
InputControlFile.ctl,
ResultsControlFile.ctl
6 Visual Basic files to for custom
Aspen Plus form.
ProjectFile.ocx 6 Visual Basic OCX file containing
custom form.
ModelName.ocx 6 Renamed Visual Basic OCX file to
be linked to a particular model.
ModelName.ocr 6 Text OCR file containing
specifications for custom form.
HFUM_CF.apw 6 Custom model + custom form,
Fortran calculations, no interface.

Integration Features for Custom Unit
Operation Models
Aspen Plus offers powerful features that make it easy to use Aspen
Plus simulations containing proprietary models. You can create:
Custom Model Libraries,
user-defined variables that become part of the Aspen Plus data
structure as an alternative to Real and Integer arrays,
custom icons to better represent the equipment that your
models describe, and
standard and default model input templates.
Aspen Plus Excel Unit Operations
You can use an Excel Workbook as an Aspen Plus user-defined
unit operation model. Once you identify the input variables and
physical properties used by Excel, you can develop and test the
model within Excel without performing iterative compile and link
steps that are required when developing and testing a Fortran
model. You can utilize the full power of Excel including all of its
built-in functions and specialized Visual Basic routines that are
provided in the Aspen Plus Excel template.

Getting Started Customizing Unit Operation Models About This Manual 1-5
Aspen Plus Fortran Models
Aspen Plus provides utilities for convenient read and write access
to named user-defined variables from within the Fortran user
model routine. This simplifies user-defined parameter mapping
into external user routines.
You can develop rich data structures for user-defined unit
operation models involving integer, real and character data. The
parameters can either be scalar or vector. Vector data can be
automatically dimensioned based on nine standard lengths such as
Number of Components or Number of Inlet Streams, or can be
dynamically dimensioned based on a user-defined integer variable.
Creating GUI forms for Proprietary
Models
You can create your own user interface forms for proprietary or
custom models using the same environment employed to create
built-in Aspen Plus forms. User-defined variables can be easily
linked to these forms. The forms can have a free format layout to
suit the needs of your model.
The ability to create forms, combined with the templating
capabilities outlined in this guide, is a very powerful customization
capability. For example, it is possible to create forms for an
existing plant unit that hides design parameters for users interested
in performing rating only calculations. These forms are easily
inserted into Aspen Plus by registering the OCX file created by
Visual Basic using the Aspen Plus ApFormSetup utility.
Visual Basic template files are distributed with Aspen Plus to help
reduce the development effort.
Supporting Files
The Aspen Plus backup, Excel, Fortran and Visual Basic files
described in this book are delivered in the GUI\xmp directory of
the Aspen Plus installation.

1-6 About This Manual Getting Started Customizing Unit Operation Models
Related Documentation
A number of other documents exist to help users learn and use
Aspen Plus. The documentation set consists of the following:

Aspen Plus Getting Started Building and Running a Process Model
Aspen Plus Getting Started Using Equation Oriented Modeling
Aspen Plus Getting Started Modeling Processes with Solids
Aspen Plus Getting Started Modeling Processes with Electrolytes
Aspen Plus Getting Started Modeling Petroleum Processes

Aspen Engineering Suite Installation Manual

Aspen Plus User Guide
Aspen Plus User Models
Getting Started
Guides
Installation Guide
User Guides

Getting Started Customizing Unit Operation Models About This Manual 1-7
Technical Support
AspenTech customers with a valid license and software
maintenance agreement can register to access the Online Technical
Support Center at:
http://support.aspentech.com
This web support site allows you to:
Access current product documentation
Search for tech tips, solutions and frequently asked questions
(FAQs)
Search for and download application examples
Search for and download service packs and product updates
Submit and track technical issues
Search for and review known limitations
Send suggestions
Registered users can also subscribe to our Technical Support
e-Bulletins. These e-Bulletins are used to proactively alert users to
important technical support information such as:
Technical advisories
Product updates
Service Pack announcements
Product release announcements
Customer support is also available by phone, fax, and email for
customers with a current support contract for this product. For the
most up-to-date phone listings, please see the Online Technical
Support Center at http://support.aspentech.com.

Support Centers Operating Hours (Monday-Friday)
North America 8:00 20:00 Eastern Time
South America 9:00 17:00 Local time
Europe 8:30 18:00 Central European time
Asia and Pacific Region 9:00 17:30 Local time

Online Technical
Support Center
Contacting Customer
Support
Hours

1-8 About This Manual Getting Started Customizing Unit Operation Models
Support
Centers
Phone Numbers
1-888-996-7100 Toll-free from U.S., Canada, Mexico
1-281-584-4357 North America Support Center
North
America
(52) (55) 5536-2809 Mexico Support Center
(54) (11) 4361-7220 Argentina Support Center
(55) (11) 5012-0321 Brazil Support Center
(0800) 333-0125 Toll-free to U.S. from Argentina
(000) (814) 550-4084 Toll-free to U.S. from Brazil
South
America
(0800) 100-2410 Toll-free to U.S. from Venezuela
(32) (2) 701-95-55 European Support Center
Country specific toll-free numbers:
Austria (0800) 111-900
Belgium (0800) 40-687
Denmark 8088-3652
Finland (0) (800) 1-19127
France (0805) 11-0054
Germany (0800) 101-0068
Ireland (1) (800) 930-024
Italy (800) 905-826
Netherlands (0800) 023-2511
Norway (800) 13817
South Africa (0800) 996-852
Spain (900) 951846
Sweden (0200) 895-284
Switzerland (0800) 111-470
Europe and
Africa
UK (0800) 376-7903
(65) 6395-39-00 Singapore Asia and
Pacific
Region
(81) (3) 3262-1743 Tokyo


Phone

Getting Started Customizing Unit Operation Models About This Manual 1-9
Support
Centers
Fax Numbers
North
America
1-281-504-3999
South
America
(54) (11) 4361-7220 (Argentina)
(55) (11) 5012-4442 (Brazil)
Europe (32) (2) 701-94-45
Asia and
Pacific
Region
(65) 6395-39-50 (Singapore)
(81) (3) 3262-1744 (Tokyo)

Support Centers E-mail
North America support@aspentech.com (Engineering Suite)
support@hyprotech.com (Hyprotech products)
atmdsupport@aspentech.com (Aspen ICARUS products)
mimi.support@aspentech.com (Aspen MIMI products)
pims.support@aspentech.com (Aspen PIMS products)
aspenretail.support@aspentech.com (Aspen Retail products)
ACS.Support@aspentech.com (Advanced Control products)
AMS.Support@aspentech.com (Manufacturing Suite)
Mexico.Support@aspentech.com (Mexico)
South America LAsupport@aspentech.com
Argentina.Support@aspentech.com (Argentina)
Europe atesupport@aspentech.com (Engineering Suite)
support@hyprotech.com (Hyprotech products)
cimview@aspentech.com (CIMVIEW products)
Metals.Support@aspentech.com (Metals products)
AMS.Support@aspentech.com (All other suites)
Asia and Pacific
Region
atasupport@aspentech.com (Singapore: Engineering Suite)
support@hyprotech.com (Hyprotech products)
mimi.support@aspentech.com (Singapore: Aspen MIMI)
aspenretail.support@aspentech.com (Singapore: Aspen
Retail)
AMS.Support@aspentech.com (Singapore: All other suites)
atjsupport@aspentech.com (Tokyo: Engineering Suite)
TK_Support@aspentech.com (Tokyo: All other suites)

Fax
E-mail

1-10 About This Manual Getting Started Customizing Unit Operation Models



Getting Started Customizing Unit Operation Models Creating an Excel Unit Operation Model 2-1
C H A P T E R 2
Creating an Excel Unit Operation
Model
Aspen Plus offers several interfaces for including custom or
proprietary models in Aspen Plus simulations. Among these is the
option to use a User2 unit operation block in your Aspen Plus
simulation with an Excel spreadsheet to perform the calculations.
In this session you will create a User2 Excel model for an
ultrafiltration membrane.
First use Aspen Plus to build a process flowsheet, specify feed and
product streams, and enter real and integer parameters
corresponding to the membrane. Then use Excel to create a
spreadsheet to calculate product stream properties. Aspen Plus will
write data to and read data from the Excel spreadsheet.
The tutorial sessions in this Getting Started Guide assume that you
have completed all of the sessions in Getting Started Building and
Running a Process Model. In particular, you must be able to:
Start Aspen Plus (using a blank simulation, template, or
existing simulation).
Place blocks and streams.
Navigate from form to form using the Data Browser menu tree.
Enter data into the required fields in the input sheets.
Run a simulation.
View the data in the results sheets.
Save a simulation.
Allow about 60 minutes for this session.

2-2 Creating an Excel Unit Operation Model Getting Started Customizing Unit Operation Models
Defining the Simulation
Construct an Ultrafiltration Membrane model. Ultrafiltration is a
pressure-driven membrane process used to separate components
based on molecular size and shape. The solvent and small solute
species pass through the membrane and are termed the permeate.
Large solute species, such as proteins, are retained by the
membrane and are termed the retentate.
The simulation that you will construct is shown below in Figure
1.1. There is one feed stream (a water-protein feed), one unit
operation block (an ultrafiltration membrane), and two product
streams (permeate and retentate).

Figure 1.1 Ultrafiltration Membrane Model
Aspen Plus will write feed stream data and real and integer
membrane parameters (such as physical dimensions) to Excel.
Excel will calculate product stream data such as mole flow rates
and solute concentrations using a user-specified set of equations.
Aspen Plus will read the product stream data from Excel. Results
will be displayed in the Excel file and on Aspen Plus results forms.


Getting Started Customizing Unit Operation Models Creating an Excel Unit Operation Model 2-3
Setting Up the Model in Aspen Plus
1 From your desktop, click Start and then select Programs.
2 Select AspenTech | Aspen Engineering Suite | Aspen Plus
12.1 | Aspen Plus User Interface.
The Aspen Plus Startup dialog box appears. Aspen Plus
displays a dialog box whenever you must enter information or
make a selection before proceeding. In this simulation, use an
Aspen Plus template.
3 Select Template.
4 Click OK to apply this option.
The New dialog box appears. Use this dialog box to specify the
application type and the run type for the new run. Aspen Plus
uses the application type to automatically set various defaults
appropriate to your application.
5 Select the General with Metric Units template.

The default run type, Flowsheet, is appropriate for this
simulation.
6 Click OK to apply these options.
It takes a few seconds for Aspen Plus to apply these options.
Note: If the Connect to Engine dialog box appears, see Chapter 7.
The Aspen Plus main window is now active.
To Start Aspen Plus
To Specify the
Application Type and
Run Type for the New
Run

2-4 Creating an Excel Unit Operation Model Getting Started Customizing Unit Operation Models
For this customized simulation, Aspen Plus will handle everything
but the calculations that correspond to the ultrafiltration process
itself. First, build the process flowsheet.
1 From the Model Library, select the User Models tab.
2 Click next to the User 2 block icon to display all the User 2
model icons.
3 Move the mouse over the icons to see a name (or label) for
each.
4 Locate the User 2 icon FILTER in the fourth row of icons, and
select it.
5 Drag the FILTER icon to the Process Flowsheet window.
6 Create one input stream and two product streams.
7 Name the input stream FEED by selecting the stream or its
label, right-clicking, and selecting Rename Stream.
8 Name the first product stream you created RETENTAT.
Aspen Plus accepts eight letters and displays them as upper
case.
9 Name the second product stream you created PERMEATE.
10 Name the block MEMBRANE.
Note: It matters which stream was created first because you will
be passing Excel (and, in the next chapter, Fortran) data to an
Aspen Plus array that contains product stream data. The first
stream declared also comes first in the data array.
Your process flowsheet should look similar to Figure 1.1.
The next step is to enter a title, specify the components used in the
simulation, the property method, and feed stream characteristics.
1 Press F8 to open the Data Browser.
2 Go to the Setup | Specifications | Global sheet and enter a
title. For example, you might call it Membrane1.
3 Go to the Components | Specifications | Selection sheet.
4 In the Component ID field, type WATER and press Enter on
the keyboard.
The Component name and Formula are automatically filled in
because Aspen Plus recognizes the ID WATER. Another row
opens up in the table.
Build the Process
Flowsheet
Enter Title,
Components, Base
Method, and Feed
Specifications

Getting Started Customizing Unit Operation Models Creating an Excel Unit Operation Model 2-5
5 In the next Component ID field, type PROTEIN and press
Enter on the keyboard.
Protein is not in the Aspen Plus databank, so the Component
name and Formula fields remain blank.
6 In the Protein row, type LYSINE in the Component name
field, and press Enter on the keyboard.
Aspen Plus recognizes the amino acid lysine and fills in the
Formula field. Lysine will stand in as a protein for the purposes of
this illustration.
7 Go to the Properties | Specifications | Global sheet and select
the IDEAL model in the Base method field.
8 Go to the Streams | Feed | Input | Specifications sheet.
9 In the Total flow section of the State variables area, change the
type of units displayed to Volume.
10 In the Composition area, change the type of units displayed to
Mass-Conc.
The Solvent field is now available.
11 Enter the temperature, pressure, total flow, solvent, and protein
mass concentration as indicated below.

12 Click the Flash Options tab to open the Streams | FEED |
Input | Flash Options sheet.
13 In the Valid phases field, select Liquid-Only.
Next, specify the location of the Excel file that performs
membrane calculations and enter the integer and real parameters
that define the physical and calculational characteristics of the
particular membrane being used for this simulation. The integer

2-6 Creating an Excel Unit Operation Model Getting Started Customizing Unit Operation Models
and real parameter user array will also hold results that do not
correspond to standard Aspen Plus stream properties.
1 Go to the Blocks | MEMBRANE | Setup | Subroutines sheet.
2 In the Excel file name area, enter the full path to the (future)
Excel file. For example enter:
d:\Program Files\AspenTech\Excel\MemCalc.xls.
Important: Aspen Plus will accept a maximum of 64 characters
for the Excel path. If the Aspen Plus Working Folders directory
results in too long a path, choose another folder.
No other fields on this sheet need to be specified for this example.
In the next chapter, a customized Fortran subroutine is used to
interface with the Excel spreadsheet and the name of the
subroutine is entered in the Model field in the User 2 subroutines
area. A customized Fortran subroutine allows you to control which
data is passed between the Excel spreadsheet and Aspen Plus.

3 Click the User Arrays tab to open the Blocks | MEMBRANE
| Setup | User Arrays sheet.
4 In the Number of parameters area, enter 1 in the Integer field,
13 in the Real field, and 13 in the Character field.
Enter Excel Path and
User Array Data

Getting Started Customizing Unit Operation Models Creating an Excel Unit Operation Model 2-7
5 Enter the parameters as indicated below. The character entries
are optional here; they are just for convenience in this example.
The last two real parameters are Excel-calculated results and
will appear (filled in) in the copy of the User Array table that is
written to the Blocks | MEMBRANE | Results sheet after the
simulation run.

Next, make a product flash specification to cause Aspen Plus to
evaluate the enthalpy and other product stream properties based on
the temperature and pressure calculated by Excel.
1 Click the Stream Flash tab to open the Blocks |
MEMBRANE | Setup | Stream Flash sheet.
2 In the Stream field, select RETENTAT.
3 In the Flash type field, select Temperature & pressure.
4 In the Stream field, select PERMEATE.
5 In the Flash type field, select Temperature & pressure.
6 Save your Aspen Plus file as Membrane1.apw.

Setup a Product
Stream Flash

2-8 Creating an Excel Unit Operation Model Getting Started Customizing Unit Operation Models
Setting Up the Excel Model
An Excel template is available to expedite the specification
process. For Excel 97 and 2000, use this template:
. . .\Engine\User\userxlTemplate.xls
Another template named userxlTemplate95.xls is available for use
with Excel 95.
1 Place one of the templates in the folder you specified on the
Aspen Plus Blocks | MEMBRANE | Setup Subroutines
sheet.
2 Open the template and save a copy as MemCalc_PreRun.xls.
Note: Later, save a copy of this file as MemCalc.xls. This second
file will be changed by Aspen Plus and you may wish to compare
the changed version to the original MemCalc_PreRun.xls.
3 Use the tabs on the bottom of the screen to view the four Excel
sheets in the template that contain data. Model calculations will
be performed on Sheet 1 (now empty).

The four data sheets and the data they will contain after the
simulation is run are listed below:
Aspen_IntParams: One integer parameter read from the
Integer User Array (entered on the Blocks MEMBRANE
Setup User Arrays Aspen Plus sheet).
Aspen_RealParams: Eleven real parameters read from the
Real User Array and two results (protein concentration in each
product stream) calculated by Excel on Sheet 1.
Aspen_Input: The mole flow rates (in kmol/s) of each
component of the feed stream and nine stream parameters.
Aspen_Output: The mole flow rates (kmol/s) of each
component of each product stream and the three product stream
parameters that will be calculated by Excel. The other six
product stream parameters are calculated by Aspen Plus.
Copy and Examine
the Excel Template

Getting Started Customizing Unit Operation Models Creating an Excel Unit Operation Model 2-9
Note: The flow rates and nine stream parameters are stored in
Aspen Plus in two arrays: MSIN (input streams) and SOUT
(output streams). Aspen Plus first transfers input data from MSIN
to Excel and then transfers output results from Excel to SOUT. All
data read from or written to MSIN or SOUT must be in SI
units. Mole flow data must be in kmol/s.
Next, modify the four Excel sheets to reflect the number of input
and output streams and input and output parameters in this
example. Define variables to reference data-containing cells. Use
these variables in the model calculations performed on Sheet 1.
1 Edit the Aspen_IntParams sheet as shown below. Only the
NTUBES entry in cell C2 is strictly necessary. The entries in
the first two columns are dummies; Aspen Plus will fill in these
cells when you run the simulation. Cell B2 will contain the
integer parameter from the Aspen Plus User Arrays sheet.

2 Select NTUBES and click Insert | Name | Define.
3 Edit the Refers to field so that NTUBES represents the value
in cell B2.

4 Edit the Aspen_RealParams sheet as shown below. Again, the
entries in the first and second column are dummies except for
Edit the Excel Sheets

2-10 Creating an Excel Unit Operation Model Getting Started Customizing Unit Operation Models
the equations in cells B13 and B14. Aspen Plus will fill in the
first two columns but will not overwrite equations.

Note: Since CP and CR havent been defined yet, Excel will not
be able to determine values for cells B13 and B14. To display the
equations (instead of an error message) click Tools | Options |
View and select the Formulas checkbox.
5 Define the boldfaced variables (one at a time) in the third
column to refer to the cells in the second column. For example,
select DIAM and click Insert | Name | Define and change C2
to B2 in the Refers to field.
6 Edit the Excel Aspen_Input sheet as shown below. The
Fortran interface subroutine reads the actual values of the feed
stream properties from the Aspen Plus MSIN array and writes
to column B the Excel sheet. The units column is optional.


Getting Started Customizing Unit Operation Models Creating an Excel Unit Operation Model 2-11
Note: If you change the number of input variables, you should
redefine the variable Aspen_Input to refer to the new range. To do
this, run the menu command Insert | Name | Define, select the
Aspen Input variable, and change the last number in the definition.
For example, to add one variable in row 13, change the definition
from Aspen_Input!$B$2:$B$12 to Aspen_Input!$B$2:$B$13.
7 Define the variables in the fourth column to refer to the cells in
the second column.
8 Edit the Aspen_Output sheet as shown below. Click Tools |
Options | View and select Formulas to display the equations.
The equations wont produce numbers yet because variables
such as FP must be determined on Sheet1. The units column is
optional.

The four sheets you just built hold data that the Fortran interface
subroutine reads from Aspen Plus as well as results that are passed
to Aspen Plus. The remaining Excel sheet, Sheet1, contains the
unit operation model equations; it calculates the product stream
properties using input from the first four sheets.
Create the model by entering equations and parameters on Sheet1.
Note: To facilitate construction of the Excel model, the template
comes with a number of aspen helper functions built in. They are
implemented as Visual Basic routines (to look at the code, select
Tools | Macro | Visual Basic Editor). The ahGetValue function,
for example, lets you refer to data using a label in the first column.
Instead of using =DENS_FEED/1000 in cell B9 on Sheet1, you
could use =ahGetValue(Aspen_Input, DENSITY) / 1000. The
first argument of this function is the Aspen_Input variable
mentioned previously and the second argument is a first-column
string to search for within the specified range. The helper functions
are described in the Aspen Plus User Models manual.

2-12 Creating an Excel Unit Operation Model Getting Started Customizing Unit Operation Models
1 Edit Sheet1 as shown below. Turn on formulas. Define each
variable in column A to refer to the cell to its right in column
B. Variables that are used in other sheets are shown in
boldface. Notes in column C are optional.

2 Click Tools | Options | View and clear the Formulas
checkbox.
3 Verify that your equations produce a number in each cell.
Because there is no data yet, these numbers are meaningless.
4 Turn off formulas in the Aspen_Output and the
Aspen_RealParams sheets as well and check that there is a
number in each cell.
5 Optional: Put sensible data in the Aspen_IntParams,
Aspen_RealParams, and Aspen_Input sheets.
6 Once you are satisfied with the Excel ultrafiltration membrane
model, save your MemCalc_PreRun.xls file.
7 Save a copy as MemCalc.xls. This file will be altered by
Aspen Plus.
Enter Membrane
Model Equations and
Parameters

Getting Started Customizing Unit Operation Models Creating an Excel Unit Operation Model 2-13
Running the Excel Model
The Excel sheet can remain open when the simulation is run.
1 If necessary, open MemCalc.xls and then open
Membrane1.apw.
Note: Opening Excel before Aspen Plus saves startup time.
2 Go to the Blocks | MEMBRANE | Setup | Subroutines sheet
and verify that the path to the Excel file is correct.
3 Press F5 to run the simulation.
Examining Simulation Results
1 Examine the altered Excel file. Turn off formulas in each sheet
and reformat numbers as needed using the Excel Format |
Cells command. The sheets are changed as follows:
Aspen_IntParams: Column A contains the row number
because no labels are specified in the default interface
routine. Cell B2 contains the number of tubes in the
membrane model as specified on the Aspen Plus User
Arrays sheet. Column C is not changed.
Aspen_RealParams: Column A contains the row number
because no labels are specified in the default interface
routine. Column B contains the eleven real parameters from
the Aspen Plus User Arrays sheet that describe the
membrane. Cells B12 and B13 contain equations and are
therefore not directly changed by the interface routine.
Aspen_Output: Column A already has the correct labels
the interface routine overwrites with the same labels.
Columns B and C are initialized to zero except for the cells
containing equations which are not changed. The
subroutine CalculateData invokes the Excel calculations
and product stream results appear in cells B2:B6 and
C2:C6. The interface routine reads the data in columns B
and C and writes to the Aspen Plus SOUT array. Aspen
Plus performs a product stream flash to replace the zeroes
in SOUT with data so that, for example, enthalpy data is
available to Aspen Plus even though it is not calculated by
Excel.
Aspen_Input: Column A already has the correct labels
the interface routine overwrites with the same labels.
Column B now contains the input parameters for the feed
To View the Results
from the Excel Model

2-14 Creating an Excel Unit Operation Model Getting Started Customizing Unit Operation Models
stream. These data are read from the Aspen Plus MSIN
array.
Aspen_Output_MEMBRANE: This is a new sheet
created via a call to EndIteration which copies the contents
of Aspen_Output to this new sheet.
Sheet 1: Using the feed stream data and real and integer
parameters read from Aspen Plus arrays to the Excel
sheets, the equations on Sheet1 determine concentrations
and flow rates for the two output streams. The interface
routine does not read or write directly to or from this sheet.
For convenience, the data-filled Excel sheets and Aspen Plus
results sheets are reproduced here.
Aspen_IntParams:

Aspen_RealParams:


Getting Started Customizing Unit Operation Models Creating an Excel Unit Operation Model 2-15
Aspen_Input:

Aspen_Output (and Aspen_Output_MEMBRANE):


2-16 Creating an Excel Unit Operation Model Getting Started Customizing Unit Operation Models
Sheet1:


Getting Started Customizing Unit Operation Models Creating an Excel Unit Operation Model 2-17
Aspen Plus Blocks | MEMBRANE | Stream Results | Material
sheet:

Aspen Plus Blocks | MEMBRANE | Results | Summary sheet:


2-18 Creating an Excel Unit Operation Model Getting Started Customizing Unit Operation Models
2 Go back to the Aspen Plus simulation environment.
3 Go to the Blocks | MEMBRANE | Stream Results | Material
sheet and the Blocks | MEMBRANE | Results | Summary
sheet to verify that Aspen Plus data and Excel data are the
same. You find that the units are different.
Aspen Plus did read the correct output values from Excel but it
assumed (correctly) that they were in SI units and converted
the data to METCBAR units before displaying it on the
Stream Results sheet. For example, the component mole flow
rates are reported in kmol/hr instead of kmol/sec.
4 Go to the Setup | Specifications | Global sheet and change the
Output results field to SI and run the simulation again.
5 Go back to the Stream Results form and compare the flow
rates now reported in kmol/s to those listed in the Excel sheets.
6 Go to the Blocks | MEMBRANE | Results | Summary sheet
to view the real and integer parameter data read from Excel.
The last two real parameters displayed on this Aspen Plus sheet
contain values. Aspen Plus read these values from the Excel
Aspen_RealParams sheet without regard to units.
7 Save the run. This Aspen Plus file, Membrane1.apw will be
used in the next chapter.
8 Exit Aspen Plus.
9 Save the changed version of your Excel file, MemCalc.xls.
10 Exit Excel.

To View the Block
Results

Getting Started Customizing Unit Operation Models Customizing the Excel/Aspen Plus Interface 3-1
C H A P T E R 3
Customizing the Excel/Aspen Plus
Interface
Aspen Plus allows the user to customize the Fortran interface
subroutine that communicates with the Excel model. You need
Compaq Visual Fortran 6.0 (or a later version) to compile your
customized interface routine using the aspcomp command in
Aspen Plus Simulation Engine Window.
The interface subroutine passes feed stream data from Aspen Plus
to Excel and it passes product stream data from Excel to Aspen
Plus. By customizing the subroutine, the user can control which
data is passed back and forth and can manipulate the data before or
after it is processed in the Excel spreadsheet.
The Excel model in the previous chapter used Aspen Plus feed
stream data in mole basis from the Aspen_Input sheet, converted
to mass basis in Sheet1, calculated the product stream flow rates,
and then converted back to mole basis in Aspen_Output so that
the data could be transferred to Aspen Plus. This was necessary
because the Aspen Plus MSIN and SOUT arrays expect flow rate
data in mole basis.
In this session you will revise the interface routine to convert the
input data to mass basis and the results data back to mole basis.
The new interface routine will create custom labels for the
Aspen_RealParams Excel sheet. More importantly, it will obtain
the viscosity of the feed stream by calling the appropriate Aspen
Plus built-in subroutines. The new interface routine will then pass
the viscosity to the Excel model so that the user doesnt have to
enter this parameter by hand (on Sheet1) as in the previous
chapter.
Allow about 60 minutes for this session.

3-2 Customizing the Excel/Aspen Plus Interface Getting Started Customizing Unit Operation Models
Revising the Excel Model
Alter the Excel file from the previous chapter so that when the
revised interface routine writes the feed stream viscosity to the
Excel Aspen_Input sheet, it is passed to Sheet1, converted to the
appropriate units, and used in the model calculations.
Also, change Aspen_Input, Aspen_Output, and Sheet1 so that
they use mass basis.
1 Open MemCalc_PreRun.xls and save a copy as
MemCalc_Custom_PreRun.xls.
2 Add row 13 to the Aspen_Input sheet as shown below.
Change the units in rows 2, 3, and 4 to indicate mass basis.

3 Define MU_ASPEN to be the viscosity that will be written to
cell B13 using the Insert | Name | Define command.

Getting Started Customizing Unit Operation Models Customizing the Excel/Aspen Plus Interface 3-3
4 Alter Sheet1 to use the viscosity calculated by Aspen Plus.
Convert the viscosity (Aspen Plus always uses SI units) to cgs
units and change two equations in the Excel model to use mass
basis. Two rows are no longer needed (PMF and TMF) and
three cells (B4, B7, and B8) require minor changes. The three
new equations are shown in boldface.

5 Alter the Excel Aspen_Output sheet to calculate component
flow rates in mass basis. The new equations are shown in
boldface. Change the units in rows 2, 3, and 4 to indicate mass
basis.

6 Save your new Excel file, MemCalc_Custom_PreRun.xls.

3-4 Customizing the Excel/Aspen Plus Interface Getting Started Customizing Unit Operation Models
7 Save a copy of the new Excel file as MemCalc_Custom.xls so
that you retain the original version after the run. Make sure this
version is stored in the folder specified on the Aspen Plus
Subroutines sheet.
Revising the User Subroutine
The code for the default subroutine provides a template that will
make creating the customized subroutine easier. The complete
revised subroutine is listed below with changes marked.
1 Put a copy of \Engine\User\usrxls.f in a folder in your working
directory. For example, copy this file to
d:\Program Files\AspenTech\Working Folders\Aspen
Plus\Membrane\Mem2.f.
2 Open Mem2.f and change the name of the subroutine to
Mem2.
3 Edit the file as indicated in the code listing that follows. Some
of the comments from the template (usrxls.f) have been
shortened while others have been added. Numbers in
parentheses following the boldface comments refer to the
relevant part of the Code Description that follows the listing.

Getting Started Customizing Unit Operation Models Customizing the Excel/Aspen Plus Interface 3-5
Code Listing Subroutine MEM2

C User2 Unit Operation Model Subroutine for Excel Models
C
C You can use any subroutine name up to six characters as long as
C you identify the name on the Blocks BLOCKNAME Setup Subroutines
C sheet in Aspen Plus. The argument list must not be lengthened or shortened.

SUBROUTINE MEM2 (NMATI, MSIN, NINFI, SINFI, NMATO,
2 SOUT, NINFO, SINFO, IDSMI, IDSII,
3 IDSMO, IDSIO, NTOT, NSUBS, IDXSUB,
4 ITYPE, NINT, INTV, NREAL, REALV,
5 IDS, NPO, NBOPST, NIWORK, IWORK,
6 NWORK, WORK, NSIZE, ESIZE, INTSIZ,
7 LD )
C
IMPLICIT NONE
C
C Declare variables used in dimensioning first, then other variables.
C
INTEGER NMATI, NINFI, NMATO, NINFO, NTOT,
+ NSUBS, NINT, NPO, NIWORK, NWORK,
+ NSIZE, NREAL

INTEGER IDSMI(2,NMATI), IDSII(2,NINFI), IDSMO(2,NMATO),
+ IDSIO(2,NINFO), IDXSUB(NSUBS), ITYPE(NSUBS),
+ INTV(NINT), IDS(2,3), NBOPST(6,NPO),
+ IWORK(NIWORK), INTSIZ(NSIZE), LD

REAL*8 MSIN(NTOT,NMATI), SINFI(NINFI), SOUT(NTOT,NMATO),
+ SINFO(NINFO), WORK(NWORK), ESIZE(NSIZE),
+ REALV(NREAL)
C
C-------------------- Aspen Plus Common Definitions Start in Column 1. --------------
C
#include "dms_errout.cmn"
#include "ppexec_user.cmn"
#include "dms_ncomp.cmn"
#include "dms_plex.cmn"
REAL*8 B(1)
EQUIVALENCE (B(1),IB(1))
C
C-------- Declare Aspen Plus utility functions that will be used. ------
C
INTEGER DMS_IRRCHK, DMS_IFCMNC


3-6 Customizing the Excel/Aspen Plus Interface Getting Started Customizing Unit Operation Models
C
C--------------------- Local Variable Declarations --------------------
C
INTEGER OFFSET, NUM_COLS, NUM_ROWS, RETCODE, LID,
+ IBLANK(2), KREAL(3), KINT(3), KINPUT(2), KOUTPUT(2),
+ LDATA, I,J,K, LEN, KDIAG, IDX(10),
+ LIDSC, NCD, C_OFF, ERRNUMBER, NUM_LINES,
+ SOURCE(16), HOL_STRLEN, SOR_LENGTH, SSID(2), IPROG(2),
+ DESC_LENGTH,KOUTSOL(3), EXCEL_NAME_LEN,
+ EXCEL_NAME(16), KINPSOL(3),
+ DESCRIPTION(128) !Moved LABELS and ROWNAMES declarations. (1)

Integer LABELS(2,10), ROWNAMES(2,NCOMP_NCC+10) !Ten labels instead of nine. (1)
Integer REALROWS(2,NTOT+1) !Hollerith Realparam row ID's. (2)
Integer LMW, NCP !Conversion and Viscosity. (3)
Real*8 FLOW, XMW, X(10) !Calc component mass flow. (4)
Character*8 RealLabels(13) !Realparam row ID's. (5)

REAL*8 INSTREAM(NTOT*NMATI),OUTSTREAM(NTOT*NMATO)
C
C--------------------------- Data Section -----------------------------
C


DATA KINPUT /4HINPU, 4HT /
DATA KOUTPUT /4HOUTP, 4HUT /
DATA KREAL /4HREAL, 4HPARA, 4HMS /
DATA KINT /4HINTP, 4HARAM, 4HS /
DATA KINPSOL /4HINP_, 4H , 4H /
DATA KOUTSOL /4HOUT_, 4H , 4H /
DATA IPROG /4HUSRX, 4HLS /
DATA IBLANK /4HIMIS, 4HS /

DATA LABELS /4HTOTF, 4HLOW ,
+ 4HTEMP, 4H ,
+ 4HPRES, 4H ,
+ 4HENTH, 4HALPY,
+ 4HVAP , 4HFRAC,
+ 4HLIQ , 4HFRAC,
+ 4HENTR, 4HOPY ,
+ 4HDENS, 4HITY ,
+ 4HMOLE, 4H WT ,
+ 4HMUMX, 4H / !MUMX is viscosity label. (6)



Getting Started Customizing Unit Operation Models Customizing the Excel/Aspen Plus Interface 3-7
DATA RealLabels / 'x ', !Labels for Realparam table (each total eight chars). (7)
+ 'L ',
+ 'Dab ',
+ 'Cg ',
+ 'R ',
+ 'C1 ',
+ 'C2 ',
+ 'C3 ',
+ 'C4 ',
+ 'Pperm ',
+ 'DeltaP ',
+ 'Cp ',
+ 'Cr ' /

C----------------------------------------------------------------------
C- Establish Excel link and call StartIteration Workbook Hook Function
C
CALL USRUTL_GETEXCEL(EXCEL_NAME, EXCEL_NAME_LEN)
CALL StartIteration(RETCODE, EXCEL_NAME,64, IDS(1,1), 8)
IF(RETCODE .NE. 0) GOTO 1000

C--------------- Build Aspen_Input Data Table -------------------------
C
C First get name of each of the NCOMP_NCC components for
C first NCOMP_NCC rows in column 1 of the table. Names are in
C two four letter blocks. Component names in column 1 label
C component flow rates in column 2.

OFFSET = DMS_IFCMNC('IDSCC')
DO J=1, NCOMP_NCC
I = OFFSET + 2*(J-1) + 1
ROWNAMES(1,J) = IB(I)
ROWNAMES(2,J) = IB(I+1)
END DO

C After the component names, list the nine standard stream properties plus
C any extras (in this case, there is one extra).

DO K=1, 10 !9!10 (8)
J = K + NCOMP_NCC
ROWNAMES(1,J) = LABELS(1,K)
ROWNAMES(2,J) = LABELS(2,K)
END DO
NUM_ROWS = NCOMP_NCC + 10 !9!10 (8)



3-8 Customizing the Excel/Aspen Plus Interface Getting Started Customizing Unit Operation Models
C Now fill in column 2 (using the INSTREAM array) with Aspen Plus feed
C stream data ( from the MSIN array). Convert to mass basis using molecular weights.
C Make a column for each feed stream. Also have Aspen Plus calculate viscosity of
C feed stream.

LMW = DMS_IFCMNC('MW') !Will need molecular weights of individual
!components to do flow rate conversions. (9)
NUM_COLS = NMATI

DO J=1, NUM_COLS

OFFSET = (J-1)*(NCOMP_NCC+10) !9!10 (8)

DO I=1, NUM_ROWS

IF (I .EQ. NUM_ROWS) THEN !To do last row (10)
Call SHS_CPACK(MSIN(1,J), NCP, IDX, X, FLOW) !"pack" data
KDIAG = 4 !then get
K = NCOMP_NCC !viscosity. (11)
Call PPMON_VISCL(MSIN(K+2,J), MSIN(K+3,J), X, NCP,
+ IDX, NBOPST, KDIAG,
+ INSTREAM(OFFSET+I), RETCODE)
ELSE
XMW = 1 !Only convert flow rates.

IF(I .LE. NCOMP_NCC) XMW = B(LMW + I) !If doing flow rates,
!make XMW molecular wgt. (12)
INSTREAM(OFFSET + I) = MSIN(I,J)*XMW !Convert and fill INSTREAM.
END IF

IF (I .EQ. NCOMP_NCC+1) !Convert total mole flow to total mass
!flow using molec wgt of stream. (13)
+ INSTREAM(OFFSET+I) = INSTREAM(OFFSET+I)*MSIN(I+8,J)

END DO

END DO

C--------------- Send Aspen_Input table to Excel. ----------------------

LDATA = 8*NUM_ROWS*NUM_COLS
CALL WRITETABLE(RETCODE , KINPUT, 8 , NUM_ROWS,
+ ROWNAMES, 8 , NUM_COLS, IDSMI ,
+ 8 , 2 , INSTREAM, LDATA )
IF (RETCODE .NE. 0) GO TO 1000

C------------ Send Aspen_IntParams table to Excel. ---------------------

LDATA = 8*NINT
CALL WRITETABLE(RETCODE, KINT, 12 , NINT ,
+ IBLANK , 0 , 1 , IBLANK,
+ 0 , 1 , INTV,LDATA )
IF (RETCODE .NE. 0) GO TO 1000

C-------------- Send Aspen_RealParams table to Excel. -------------------

Getting Started Customizing Unit Operation Models Customizing the Excel/Aspen Plus Interface 3-9

DO I = 1, 13 !Make the 13 labels into Holleriths. (14)
CALL USRUTL_CHARTOH(RealLabels(I), RealRows(1,I), 8)
END DO

LDATA = 8*NREAL
CALL WRITETABLE(RETCODE, KREAL, 12 , NREAL ,
+ RealRows, 8 , 1 , IBLANK, !Send Labels, Length to Excel.
+ 0 , 2 , REALV,LDATA )
IF (RETCODE .NE. 0) GO TO 1000

C-------- Initialize the Aspen_Output Excel table. ---------------------

NUM_ROWS = NCOMP_NCC + 9 !No viscosity for output streams. (15)
DO J=1, NMATO
OFFSET = (J-1)*(NCOMP_NCC+9)
DO I=1, NUM_ROWS
OUTSTREAM(OFFSET+I) = 0.D0
END DO
END DO

NUM_COLS = NMATO
LDATA = 8*NUM_ROWS*NUM_COLS
CALL WRITETABLE(RETCODE , KOUTPUT, 8 , NUM_ROWS,
+ ROWNAMES, 8 , NUM_COLS , IDSMO ,
+ 8 , 2 , OUTSTREAM, LDATA )
IF (RETCODE .NE. 0) GO TO 1000

C
C------------- Solid Substream Section --------------------------------
C
C When a simulation contains either conventional or nonconventional
C solids, another Excel sheet will be created as the interface with
C a separate sheet being created for each substream. The name of
C substream will be appended onto the sheet name. For example, a
C sheet called Aspen_INP_CISOLID will be created for the CISOLID
C substream. The component names and stream properties for this
C stream will be prepared similarly to Aspen_Input. A separate
C column will be used for each feed. NSUBS will be greater than 1
C if any solid substreams exist.

IF (NSUBS .GT. 1) Then

C Build the input tale for each solid substream
DO K=2,NSUBS

IF (ITYPE(K) .EQ. 3) THEN
C Nonconventional solid
LIDSC = DMS_IFCMNC('IDSNCC')
NCD = NCOMP_NNCC
ELSE
C Conventional solid
LIDSC = DMS_IFCMNC('IDSCC')
NCD = NCOMP_NCC
ENDIF

3-10 Customizing the Excel/Aspen Plus Interface Getting Started Customizing Unit Operation Models

DO J=1, NCD
LID = LIDSC + 2*(J-1)
ROWNAMES(1,J) = IB(LID+1)
ROWNAMES(2,J) = IB(LID+2)
END DO
C
C Place stream property labels in column 1
DO J=1, 9
I=NCD+J
ROWNAMES(1,I) = LABELS(1,J)
ROWNAMES(2,I) = LABELS(2,J)
END DO
NUM_ROWS = NCD+9
C
C Append the substream name onto the end of the input
C and output Excel sheet name.
CALL SHS_PID(LD, K, SSID)
KINPSOL(2) = SSID(1)
KINPSOL(3) = SSID(2)
KOUTSOL(2) = SSID(1)
KOUTSOL(3) = SSID(2)
C
C Register the stream data
NUM_COLS = NMATI
DO J=1, NUM_COLS
OFFSET = (J-1)*(NCD+9)
DO I=1, NCD+9
INSTREAM(OFFSET+I) = MSIN(IDXSUB(K)+I-1,J)
END DO
END DO
C
C Send interface table to Excel
LDATA = 8*NUM_ROWS*NUM_COLS
CALL WriteTable(RETCODE , KINPSOL, 12 , NUM_ROWS,
+ ROWNAMES, 8 , NUM_COLS, IDSMI ,
+ 8 , 2 , INSTREAM, LDATA )
IF (RETCODE .NE. 0) GO TO 1000
C
C Initialize the Excel output interface for the substream
NUM_COLS = NMATO
DO J=1, NUM_COLS
OFFSET = (J-1)*(NCD+9)
DO I=1, NCD+9
OUTSTREAM(OFFSET+I) = 0.D0
END DO
END DO
C
C Send interface table to Excel
C
NUM_ROWS = NCD+9
LDATA = 8*NUM_ROWS*NUM_COLS
CALL WriteTable(RETCODE , KOUTSOL, 12 , NUM_ROWS,
+ ROWNAMES, 8 , NUM_COLS , IDSMO ,
+ 8 , 2 , OUTSTREAM, LDATA )

Getting Started Customizing Unit Operation Models Customizing the Excel/Aspen Plus Interface 3-11
IF (RETCODE .NE. 0) GO TO 1000

END DO

End If
CC------------ Invoke Excel Workbook Calculations ----------------------

CALL CalculateData(RETCODE)
IF (RETCODE .NE. 0) GOTO 1000

C---------- Read Excel values into Aspen Plus Arrays ----------

C----- Read back integer parameter table in case it has results.

LDATA = 8*NINT
CALL READTABLE(RETCODE, KINT, 12 , NINT ,
+ 1 , 1 , INTV, LDATA)
IF (RETCODE .NE. 0) GOTO 1000

C -- Read back real parameter table in case it has results.

LDATA = 8*NREAL
CALL READTABLE(RETCODE, KREAL, 12 , NREAL,
+ 1 , 2 , REALV, LDATA)
IF (RETCODE .NE. 0) GOTO 1000

C
C Read product stream data from Excel Aspen_Output sheet to OUTSTREAM.
C Only have component flow rates, total flow rate, temperature and pressure.
C First column of data (the retentate stream data) comes first in the 1 dimensional
C OUTSTREAM array.
C
NUM_ROWS = NCOMP_NCC + 3 ! 9!3; Two flow rates + tot flow, temp, pres. (16)
NUM_COLS = NMATO
LDATA = 8*NUM_ROWS*NUM_COLS
CALL READTABLE(RETCODE , KOUTPUT, 8 , NUM_ROWS,
+ NUM_COLS, 2 , OUTSTREAM, LDATA )
IF (RETCODE .NE. 0) GOTO 1000
C
C Put results from two product streams (OUTSTREAM array) in Aspen Plus product stream
C array (2 dimensional SOUT). The second dimension of SOUT is the number of streams;
C The first stream placed by the user on the Aspen Plus process flowsheet comes first in SOUT.
C Retentate stream was placed first and it must also be listed first in the Excel Aspen_Output sheet.
C SOUT expects flow rate data in mole basis so convert back to mole basis using molecular
C weights. This time get total mole flow by just adding up component mole flows.
C
DO J = 1, NMATO

FLOW = 0 ! Holds the total mole flow.
OFFSET = (J-1)*NUM_ROWS

DO I = 1, NUM_ROWS

IF(I .LE. NCOMP_NCC) THEN !Convert flow rates to mole
SOUT(I, J) = OUTSTREAM(OFFSET+I)/B(LMW+I) !basis and fill Aspen Plus array. (17)

3-12 Customizing the Excel/Aspen Plus Interface Getting Started Customizing Unit Operation Models
FLOW = FLOW + SOUT(I,J) !Store total. (17)
ELSE IF(I .EQ. NCOMP_NCC+1) THEN
SOUT(I,J) = FLOW !Total flow to SOUT (3
rd
row). (17)
ELSE !For other rows, just fill array.
SOUT(I,J) = OUTSTREAM(OFFSET + I)
END IF

END DO

END DO
C----------------------------------------------------------------------
C For solid substreams, obtain product info from Excel interface sheets
C
IF (NSUBS .GT. 1) Then
C
C Retrieve data for each substream
DO K = 2,NSUBS
IF (ITYPE(K) .EQ. 3) THEN
NCD = NCOMP_NNCC
ELSE
NCD = NCOMP_NCC
ENDIF

CALL SHS_PID(LD, K, SSID)
KOUTSOL(2) = SSID(1)
KOUTSOL(3) = SSID(2)
C
C Read Excel interface product sheet for substream
NUM_ROWS = NCD+9
NUM_COLS = NMATO
LDATA = 8*NUM_ROWS*NUM_COLS

CALL ReadTable(RETCODE , KOUTSOL, 12 , NUM_ROWS,
+ NUM_COLS, 2 , OUTSTREAM, LDATA )
IF(RETCODE .NE. 0) GO TO 1000
C
C Store data into outlet stream vector
DO J=1, NMATO
OFFSET= (J-1)*(NCD+9)
DO I=1, NCD+9
SOUT(IDXSUB(K)+I-1, J) = OUTSTREAM(OFFSET+I)
END DO
END DO
END DO

End If
C--------------- End of Current Iteration -----------------------------

CALL EndIteration(RETCODE)
RETURN
C
C--------------- End of Current Iteration ------------- !No more changes.

CALL EndIteration(RETCODE)
RETURN

Getting Started Customizing Unit Operation Models Customizing the Excel/Aspen Plus Interface 3-13

C------------------------ Error Handling Section ----------------------
1000 CONTINUE
C
C ALL ERRORS COME HERE TO REPORT ERRORS
C
C Call GetLastTableDataErr()
C
C HOL_STRLEN SETS THE PADDING FOR ERROR HANDLING STRING RETURNED
C FROM THE EXCEL INTERFACE.
C
HOL_STRLEN = 64
DESC_LENGTH= 512
SOR_LENGTH = 64
CALL GetLastTableDataErr(RETCODE, ERRNUMBER, DESCRIPTION,
+ DESC_LENGTH, HOL_STRLEN, SOURCE,
+ SOR_LENGTH)
C REGISTER SEVERE SIMULATION ERROR FROM USER2 WITH ENGINE
USER_ICONVG = -3
IF (DMS_IRRCHK(IPROG, 1, 4, 4, USER_IUMISS,
+ 0, 0, 2) .NE. 0) THEN
C DETERMINE NUMBER OF LINES OF LENGTH HOL_STRLEN TO PRINT
C MAX IS 10 SO WE CAN USE 8 FOR DESCRIPTION OF ERROR
NUM_LINES = ( (DESC_LENGTH+HOL_STRLEN-1) /HOL_STRLEN)
IF (NUM_LINES .GT. 8 ) NUM_LINES = 8
C MOVE STRINGS TO ERROUT_IEROUT ARRAY OF STRINGS. WILL BE PRINTED
C TO HISTRY FILE BY ERRPRT(). FIRST WRITE "MS Excel" THEN SOURCE
C STRING RETURNED BY API AS ERROR HEADING.
WRITE(ERROUT_IEROUT(1), 10)
WRITE(ERROUT_IEROUT(2), 11)(SOURCE(I), I=1,(SOR_LENGTH+3)/4)
C WRITE ERROR MESSAGE RETURNED FROM EXCEL API TO THE HISTORY FILE
DO 111 J=1,NUM_LINES
C_OFF = (J-1) * HOL_STRLEN/4
WRITE(ERROUT_IEROUT(J+2), 11)
+ ( DESCRIPTION(I+C_OFF), I=1,(HOL_STRLEN+3)/4 )
111 CONTINUE
C PRINT ERROR MESSAGES TO HISTORY FILE USING THE FIRST NUMLINES+2
C LINES OF THE ERROUT_IEROUT ARRAY OF STRINGS.
CALL DMS_ERRPRT(NUM_LINES+2)
ENDIF
C END ERROR REPORTING TO HISTORY FILE
2000 CONTINUE
C Call EndIteration()
C EndIteration IS CALLED EVEN WHEN A SEVERE ERROR OCCURS ABOVE.
CALL EndIteration(RETCODE)
999 CONTINUE
C FORMAT STATEMENTS
10 FORMAT(' MS EXCEL Interface Reports:')
11 FORMAT(' ',16A4)

END



3-14 Customizing the Excel/Aspen Plus Interface Getting Started Customizing Unit Operation Models
Code Description Subroutine MEM2
1 The MUMX (viscosity) addition to the list of stream properties
means that there will be 10 properties read from Aspen Plus
instead of the usual 9 so LABELS and ROWNAMES must be
redimensioned.
2 We want to add labels (stored in REALROWS) to the
Aspen_RealParams table.
3 LMW will hold the offset to the location of the molecular
weight data for each component. NCP will hold the actual
number of components present in the stream.
4 FLOW will hold the total mole flow for the output streams.
XMW will hold the molecular weight data for a given
component. X will contain the mole fraction of each
component actually present in the stream and is sent to the
Physical Property Monitor subroutine PPMON_VISCL which
calculates the viscosity of the stream.
5 RealLabels is a character array for the labels of the
Aspen_RealParams Excel sheet that will be converted to
Hollerith format.
6 MUMX is stored in Hollerith format and will be written to the
Aspen_Input and Aspen_Output Excel sheets along with the
standard nine stream property labels.
7 Labels for the Aspen_RealParam table are entered explicitly as
a character array.
8 There are now 10 rows in the Aspen_Input and Aspen_Output
tables in addition to the NCOMP_NCC = 2 rows that
correspond to the component flow rates so DO loops have to be
lengthened.
9 DMS_IFCMNC is an integer function that determines the
location of the data such as molecular weight and critical
temperature that corresponds to each component. The user
subroutine includes the following statements:
#include "dms_plex.cmn"
REAL*8 B(1)
EQUIVALENCE (B(1),IB(1))
These statements allow the subroutine to access component
data. The character strings to feed to the DMS_IFCMN
function are listed in the Universal Constant Names and
Definitions table in Chapter 6 of the User Models manual. The
molecular weight of the first component will be found at
B(LMW + 1) where LMW is the offset returned by the
function.

Getting Started Customizing Unit Operation Models Customizing the Excel/Aspen Plus Interface 3-15
10 The subroutine SHS_CPACK packs the stream array by
determining which components are actually present (have a
non-zero flow rate) and putting their mole fractions in the X
array. The PPMON_VISCL subroutine needs a packed stream
array when it calculates stream viscosity.
11 The subroutine PPMON_VISCL returns the viscosity of the
stream. In the subroutine in this example, the viscosity is
placed in the INSTREAM array.
12 The B array is used to get the molecular weight which is
used to convert component flow rates. The integer variable
NCOMP_NCC is equal to the number of conventional
components (in this case 2) declared in the Components
Specifications Selection sheet and is passed through the
common DMS_NCOMP also included in this subroutine.
13 The total mole flow is the third (NCOMP_NCC + 1) entry in
the Aspen Plus stream input array called MSIN. The first two
(NCOMP_NCC) are the component mole flows. The next eight
stream properties are temperature, pressure, enthalpy, vapor
fraction, liquid fraction, entropy, density, and molecular
weight. These are listed in Appendix C of the User Models
manual and these are the data that appear in the Aspen_Input
and Aspen_Output Excel sheets.
14 The subroutine USRUTS_CHARTOH converts the explicitly
entered character labels into Hollerith format so that they may
be sent to the WRITETABLE subroutine.
15 Only the viscosity of the feed stream is calculated so the output
table still has the usual (NCOMP_NCC + 9) rows.
16 Since the Excel model only calculates flow rates, temperature,
and pressure, there is no point sending it a bunch of zeroes for
the other properties. The properties that Excel does calculate
are placed in OUTSTREAM when READTABLE is called.
17 The array SOUT contains the same NCOMP_NCC component
mole flows, total flow, and 8 other properties as MSIN (see
item 13 above). When the SOUT array is filled with the
OUTSTREAM values, these data will be available in Aspen
Plus results sheets. The MSIN and SOUT arrays contain
component and total flow rates in mole basis (kmol/s) and
eight other properties in standard SI units.

3-16 Customizing the Excel/Aspen Plus Interface Getting Started Customizing Unit Operation Models
Compiling and Linking the
Subroutine
The aspcomp command delivered in the Simulation Engine DOS
prompt window will create the .OBJ file and ensure consistent
compiler options. Two DLOPT (dynamic linking option) files
control the linking process: one creates a DLL from specified .OBJ
files and another tells Aspen Plus where to find the DLL being
used for a particular run.

1 Save your customized Fortran file as Mem2.f.
2 Launch the Aspen Plus Simulation Engine Window. (From the
Start menu click Programs | AspenTech | Aspen
Engineering Suite | Aspen Plus 12.1 | Aspen Plus Simulation
Engine.)
A DOS window appears with the working directory as the default
directory.

3 Use the DOS cd command to set the default directory to the
location of Mem2.f. For example, type cd membrane if your
Fortran file is in a subfolder called membrane in your working
directory.
4 Type aspcomp Mem2 to compile the subroutine.
An object file (Mem2.obj) is created in the same directory as
Mem2.f.
Compile the Excel
Interface Subroutine

Getting Started Customizing Unit Operation Models Customizing the Excel/Aspen Plus Interface 3-17
Keep the DOS window available for the linking step and use a text
editor to create a DLOPT file to control the creation of a shared
library (also known as a dynamic linking library).
1 Use a text editor such as Notepad to create a text file called
Membrane2_List_OBJs.opt.
2 Type the full path to Mem2.obj in the top line of the text file.
For example: D:\Program Files\ . . .\membrane\Mem2.obj.

3 Save the file and exit the text editor.
4 In the DOS window of the Aspen Plus Simulation Engine, type
asplink [dlopt membrane2_list_objs.opt] membrane2.
A file called membrane2.dll is created. This is a Fortran shared
library. Using a shared library avoids the need for a linking step
when Aspen Plus runs. Once you have the shared library, it can be
used with Aspen Plus even if you dont have a Fortran compiler
available.
Note: If you simply type asplink membrane2 Aspen Plus will
create membrane2.dll using all the object files in the default
directory.
5 Create another DLOPT text file called
Membrane2_Loc_DLL.opt.
6 In the top line of this file type the full path to membrane2.dll.

7 Save the text file and exit the text editor.
8 Put a copy of the Membrane2_Loc_DLL.opt in your Aspen
Plus Working Directory. At run time, you will tell Aspen Plus
the name of this file so that the shared library will be available.
Create a Shared
Library

3-18 Customizing the Excel/Aspen Plus Interface Getting Started Customizing Unit Operation Models
Running the Simulation
Now that you have your revised Excel file and have created a
shared library containing your customized Fortran subroutine, you
can run the simulation using membrane1.apw from the previous
chapter.
1 Open membrane1.apw.
2 Select Run | Reinitialize (or press Shift-F5) and click OK
twice to clear data from the previous run.
Note: If you have both the GUI and the Simulation Engine
Window open at the same time, an asplink command will fail
unless you reinitialize the open run.
3 Go to the Setup Specifications Global sheet, change the title
to membrane2, and make sure SI units are selected for the
output.
4 Go to the Blocks MEMBRANE Setup Subroutines sheet and
type MEM2 in the Model field in the User2 subroutines area
so that Aspen Plus knows what your new subroutine is called.
5 On the Subroutines sheet, change the name of the Excel file to
MemCalc_Custom.xls.

6 From the Aspen Plus menu, select Run | Settings.

Getting Started Customizing Unit Operation Models Customizing the Excel/Aspen Plus Interface 3-19
The Run Settings dialog box appears.
7 In the Linker options field in the Miscellaneous files area type
membrane2_loc_dll.opt so that Aspen Plus knows the name
of the file containing the location of the library that contains
your customized subroutine. This DLOPT file must be in your
Aspen Plus Working Folder.
Note: You can change the default Aspen Plus working directory in
the Tools | Options | Startup tab. The membrane2_loc_dll.opt
file must be saved in the same directory as the simulation file.

8 Click OK.
9 Run the simulation.
10 Compare your Aspen Plus and Excel Results to those displayed
below.
11 Save the run as membrane2.apw and exit Aspen Plus.

3-20 Customizing the Excel/Aspen Plus Interface Getting Started Customizing Unit Operation Models
Results from the Custom Excel Model
For convenience Excel and Aspen Plus sheets are shown here.
The Excel Aspen_Input sheet appears below. It now contains
viscosity data as calculated by Aspen Plus. The original label
Aspen Viscosity was overwritten with the new label MUMX
specified in the interface routine.

The Excel Aspen_RealParams sheet appears below. It now
contains labels in column A specified in the interface routine. The
value of Cr in cell B14 is slightly different from that in the
previous chapter because the viscosity used in this example is
more accurate:


Getting Started Customizing Unit Operation Models Customizing the Excel/Aspen Plus Interface 3-21
The Excel Aspen_Output sheet appears below. It contains flow
rates in mass basis.

The Aspen Plus Blocks | MEMBRANE |Stream | Results |
Material sheet:


3-22 Customizing the Excel/Aspen Plus Interface Getting Started Customizing Unit Operation Models
The Aspen Plus Blocks MEMBRANE Results Summary sheet:



Getting Started Customizing Unit Operation Models Customizing the Aspen Plus Model Library 4-1
C H A P T E R 4
Customizing the Aspen Plus Model
Library
Your customized Excel model can have its own unit operation
model stored in an Aspen Plus Library file (.apm extension) and
displayed in the Model Library palette. In the previous chapter you
entered a set of real and integer parameters for the physical
characteristics and calculational coefficients of the model using the
Aspen Plus User Arrays data sheet. With a customized unit
operation model, you can enter these parameters once and they will
be automatically included whenever the customized block is
placed on the Process Flowsheet.
In addition, the name of the user Fortran subroutine and Excel file
can be associated with the customized model. The icon itself can
be custom drawn.
Finally, a Configured Variables sheet is available in which the set
of real and integer parameters are associated with character strings
and identified as input or output. This data can be accessed in the
user Fortran subroutine by referring to the variable names, thereby
simplifying the code.
In this session, create a new Aspen Plus Library,
Ultrafiltration.apm, containing a customized model for the
ultrafiltration membrane. Use the same model parameters as in the
previous chapter to specify the membrane characteristics. Create a
custom icon for your model. Then replace the User 2 block in
membrane2.apw with your custom block and run the simulation
again.
Allow about 30 minutes for this session.


4-2 Customizing the Aspen Plus Model Library Getting Started Customizing Unit Operation Models
Creating a Model Library
A model library has three levels: the library itself consists of a set
of categories each identified by a tab in the Model Library palette.
Each category consists of a set of models. Each model is
represented by an icon (multiple icons may be created and used for
strictly aesthetic reasons) and has default parameters associated
with it. The present hollow fiber ultrafiltration membrane has 180
tubes but another might have only 90. They could be represented
as separate models.
1 Create a sub-folder in your Aspen Plus Working Folder called,
for example, lib, to contain library files.
2 Open an Aspen Plus blank simulation.
3 Select Library | New.
The Create Aspen Plus User Model Library dialog box appears.

4 In the Enter Display Name field, type Ultrafiltration.
Create an Empty
Custom Model
Library

Getting Started Customizing Unit Operation Models Customizing the Aspen Plus Model Library 4-3
5 Click (its a Browse button) and navigate to the directory
where you wish to store library files.
The New User Model Library dialog box appears.

6 Click Save.
The previous dialog box reappears.
7 Click Create.
You have created an empty library. It contains no categories and
no models. The next step is to create a template that contains
default parameters for your customized model.
1 From the Model Library, place a User Models User 2
FILTER block on the process flowsheet. It gets the default ID
B1.
2 Open the Data Browser and go to the Blocks B1 Setup
Subroutines sheet.
3 In the Model field, type the name of the Fortran subroutine that
will be used with the customized block. For this example, type
Mem2.
4 In the Excel file name area, type the path the Excel file that
contains the equations for the model. For example,
d:\Program Files\AspenTech\Excel\MemCalc_Custom.xls.
Create a Template for
Your Custom Model

4-4 Customizing the Aspen Plus Model Library Getting Started Customizing Unit Operation Models
5 Click the User Arrays tab and enter the same real and integer
parameters as in the previous chapter including two empty real
parameters for results data.

Now your template is prepared and you are ready to create the
customized model.
1 Go back to the Process Flowsheet.
2 Select your template block, right click, and select Add to
Model Library.
Note: If you start Aspen Plus in the future and find the Add to
Model Library option unavailable, select Library | References . .
and select your library (Ultrafiltration). Then select Library |
Ultrafiltration | Writable so that you can edit it or add a model to
it. Select Library | Save Default to make sure the selected library
is available whenever you start Aspen Plus.
Create the Custom
Model from the
Template

Getting Started Customizing Unit Operation Models Customizing the Aspen Plus Model Library 4-5
The Add Custom Model Type to User Model Library Wizard
dialog box appears.

3 Select Add: Create a new , and click Next.
Note: If you leave the Save User Model Library after Addition
box checked, Aspen Plus will automatically save the new model at
the end of the creation process.
4 In the Choose Custom Model Category dialog box, click
Create New Category.
5 Type Membranes and click OK.

4-6 Customizing the Aspen Plus Model Library Getting Started Customizing Unit Operation Models
The Choose Custom Model Category dialog box reappears.

6 Select Membranes and click Next.
The Choose Single Block or Multi Record Custom Model Type
dialog box appears.

7 Select Single Block Custom Model and click Next.

Getting Started Customizing Unit Operation Models Customizing the Aspen Plus Model Library 4-7
The Choose Custom Model Type Creation Options dialog box
appears with the block ID (B1) entered automatically.

8 Replace B1 with HollowF.
9 Choose any icon option. Later, you will delete the icon and
create a custom icon.
10 Make sure the Copy/create model template checkbox is
selected. Aspen Plus will copy the data you entered on the
Subroutines sheet and on the User Arrays sheet into the new
model.
11 Make sure the Copy/create user model configuration
checkbox is selected. Aspen Plus will make the Configured
Variables sheet available to the new model so that you can
associate variable names with your real and integer parameters.
12 Click Finish. Aspen Plus automatically saves the new library.
(Select Library | Ultrafiltration; the Save option should be
shaded.)
A tab for the Membranes category of the Ultrafiltration library
now appears alongside the tabs of the Built-in library.
13 In the Model Library click the Membranes tab.
The model you created is visible.


4-8 Customizing the Aspen Plus Model Library Getting Started Customizing Unit Operation Models
14 Delete the block on the Process Flowsheet that you used as a
template.
15 From the Model Library, drag a HollowF unit operation model
onto the Process Flowsheet.
16 Open the Data Browser and go to the Blocks B1 Setup form
and check that the default data appears correctly on the
Subroutines sheet and on the User Arrays sheet.
17 Exit Aspen Plus. There is no need to save an apw file since the
library is already saved as Ultrafiltration.apm.
Now, whenever you start Aspen Plus and select Library |
References and click the Ultrafiltration checkbox, you will have
access to the HollowF unit operation model with default user
subroutine name, Excel file path, and real and integer parameters.
Note: Any Aspen Plus model from the Model Library can be
moved into the new library by dragging the icon into the Model
Library Editor (select Library | Ultrafiltration | Edit to open the
Editor). The Add Custom Model Type to User Model Library
Wizard appears automatically.
Editing the Custom Model
When you use a model from a custom library, you can overwrite
the default entries to the Blocks | BLOCKNAME | Setup |
Subroutines and User Array sheets. For example, in the next
chapter, you will place a HollowF block, delete the path to the
Excel file and use a revised Fortran subroutine to perform the
model calculations. This change only affects the block to which it
is applied. The defaults for the HollowF model remain intact.
The HollowF model can be edited, however, in the following
ways: you can delete it, rename it, redraw the icon, and add named
variables that refer to the real and integer parameters on the User
Arrays sheet. These changes are stored in the library when you
select Library | LIBNAME | Save.
Open the simulation from the previous chapter and edit the
HollowF model. First customize the icon, then add named
references to the real and integer parameters.
1 Open Membrane2.apw.
2 Select Library | References. . . and select the checkbox next
to Ultrafiltration to make your library available.
3 Click OK.
Create a Custom Icon

Getting Started Customizing Unit Operation Models Customizing the Aspen Plus Model Library 4-9
4 From the tools menu, select Library | Ultrafiltration |
Writable.
5 From the tools menu, select Library | Ultrafiltration | Edit.
6 In the Ultrafilteration Model Library Editor, select the
HollowF model, right click, and select Edit Current Icon . . .
The Icon Editor appears.

The small enclosed crosshair indicates the automatic position of
the block ID and the call Label.at(0,0.1) statement in the lower
pane indicates that it will be placed very close to the spot where
the user clicks on the process flowsheet. If the coordinates are far
from zero, block placement could be unpreditcable. Keep your
custom drawing reasonably well centered.
7 Click and hold and drag across the entire icon to enclose it in a
dashed box. Click the right mouse button and select Delete.
The icon disappears except for two arrows that represent the
universal input and output ports.
8 Use the graphics tools to create a custom icon for the hollow
fiber ultrafiltration membrane.
9 Move the universal port arrows so they are attached to the icon.
10 Drag an F1(IN) port from the left-hand pane and place it
directly over the universal input arrow.
11 Drag a P1(OUT) port from the left-hand pane and place it
directly over the universal output arrow.
12 Select Icon | Update icon to update the code in the lower pane.

4-10 Customizing the Aspen Plus Model Library Getting Started Customizing Unit Operation Models

13 Exit the Icon Editor by closing the window.
14 Click Yes when prompted to save the new icon.
15 Select Library | Ultrafiltration | Save to save the changes to
the library.
16 Exit the Model Library Editor by closing the window.
Note: Existing AutoCAD DXF files can also be imported into the
Icon Editor. When the Icon Editor is active, a main Icon menu
becomes available on the menu bar for the main window. Select
Import DXF from the Icon menu.

Getting Started Customizing Unit Operation Models Customizing the Aspen Plus Model Library 4-11
Next, add named references to the real and integer parameter
arrays. These names will be used in the Fortran code in the next
chapter. For the simulation in this chapter, the two parameters
designated as output data will appear in a new results sheet.
Otherwise this run will be identical to the run in the previous
chapter.
1 Select Library | Ultrafiltration | Edit, right click the icon, and
select Edit User Configuration.
The User Model Configuration Editor appears.
2 Create names for the 1 integer and 13 real parameters in the
order that they appear on the Blocks MEMBRANE Setup
User Arrays sheet.
Note: Aspen Plus will correctly identify the integer no matter
where you put it.
3 Real is the default type. For NTUBES, click in the Type field
and select Integer from the drop-down menu.
4 Parameters are designated as Input by default. For the last two
real parameters, click in the Input/Output field and select
Output only.
Note: To delete a row, select it, right click, select Remove Row.
The completed table is shown below.

Note: It is also possible to create a structure called coefficients by
choosing structure in the type field and then making coef1, coef2,
coef3, and coef4 real parameters with a depth of 1. This allows the
user to access the parameters using the structure name and an
index value and then place the real parameter in an array. This will
be discussed further in the next chapter.
5 Exit the Configuration Editor by closing the window.
6 Select Library | Ultrafiltration | Save.
Create References to
the Real and Integer
Parameters

4-12 Customizing the Aspen Plus Model Library Getting Started Customizing Unit Operation Models
7 Exit the Model Library Editor by closing the window.
The new icon and the variable names will now appear whenever
you use the HollowF model.
Inserting the New Model and Running
the Simulation
Delete the old model and replace it with your new HollowF model,
reconnecting the streams, and respecifying the product stream
Flash.
The named references on the Configured Variables sheet must be
supported by a short Fortran subroutine that you must create,
compile, and link along with the user model subroutine Mem2.f.
The Model Library Editor will write this new subroutine for you.
Insert the HollowF model, create a new dll file containing the new
subroutine, then run the simulation and examine the results.
1 Open Membrane2.apw.
2 Press Shift-F5 and click OK twice to reinitialize the
simulation.
3 Select Library | References and select Ultrafiltration.
Your Ultrafiltration library has one category called Membranes
and its tab appears in the Model Library.
4 On the Process Flowsheet, delete the MEMBRANE block.
5 Place a HollowF block on the Process Flowsheet.
6 Select the FEED stream, right-click, select Reconnect
Destination.
7 Move the cursor over the Feed port and click once to reconnect
the stream.
8 Reconnect the RETENTAT stream to the Product port using
the Reconnect Source option. If you accidentally select the
PERMEATE stream first, press Esc on the keyboard to cancel.
9 Reconnect the PERMEATE stream. The order matters because
the first stream connected comes first in the output stream data
array (SOUT). Once both streams are connected they can be
separated for clarity.
Insert the New Model

Getting Started Customizing Unit Operation Models Customizing the Aspen Plus Model Library 4-13
10 Rename the block, a Hollow Fiber Ultrafiltration Membrane
with 180 tubes, HFUM180.

Now that the Process Flowsheet is complete, check the data sheets
for the HFUM180 block. Make sure all the data included with the
model by default is correct and add the product stream Flash
specification.
1 Open the Data Browser and go to the Blocks | HFUM180 |
Setup form.
2 Check the Subroutines sheet and make sure the subroutine
name and path to the Excel file are correct.
3 Check the User Arrays and Configured Variables sheets. The
two results parameters that you defined for the HollowF model
in the Configuration Editor do not appear on the Configured
Variables sheet because they were specified as output
parameters; they will appear on a results sheet.
Note: The data in the User Arrays sheet and Configured
Variables sheet are the same. If you change any of the numbers on
one sheet, the same change will automatically appear on the other
sheet. You can alter the numerical data if you wish and it will be
changed for the particular block that you placed. For future block
placements, the defaults will remain intact.
Check and Edit Setup
Sheets

4-14 Customizing the Aspen Plus Model Library Getting Started Customizing Unit Operation Models
4 Go to the Stream Flash sheet and specify a Temperature &
pressure Flash for each product stream. No data is needed in
the Flash specifications area.

Now create the Fortran file to handle the new variable names,
compile it, create a shared library including your user subroutine
and this new subroutine, and run the simulation.
1 Select Library | Ultrafiltration | Writable and then Library |
Ultrafiltration | Edit to open the Model Library Editor.
2 Select the HollowF model, right-click, and select Edit User
Configuration to open the User Model Configuration
Editor.
3 Select Fortran | Export and save the Fortran file as
Mem2Vars.f to the folder that contains Mem2.f (\Working
Folders\Aspen Plus\Membrane.)

4 Exit the Configuration Editor by closing the window.
Compile, Link, and
Run

Getting Started Customizing Unit Operation Models Customizing the Aspen Plus Model Library 4-15
5 Save the library (Library | Ultrafiltration | Save) and exit the
Model Library Editor.
6 Save your run as Membrane2_CM.apw and then Aspen Plus
so that you can run asplink in a moment.
7 From the Membrane sub-folder, open your DLOPT file,
Membrane2_List_OBJs.opt and add a line indicating the path
to Mem2Vars.obj.
8 Save the new DLOPT file and exit the text editor.

9 Start the Aspen Plus Simulation Engine to get the DOS
window, type cd Membrane and press Enter to set the
directory to the location of your Fortran files.
10 Type aspcomp Mem2Vars and press Enter to compile the
new Fortran subroutine. The Mem2 subroutine was compiled
in the previous chapter; so the obj file should already exist.
11 Type asplink [DLOPT Membrane2_List_OBJs.opt]
Membrane2 and press Enter to create a new shared library
from the two obj files.

A new version of Membrane2.dll is placed in your Membrane
sub-folder.
12 Close the Aspen Plus Simulation Engine Window window.
13 Check that your other DLOPT file, Membrane2_Loc_dll.opt
is still in the Aspen Plus Working Folder and contains the
location of Membrane2.dll.
14 Start Aspen Plus, and open Membrane2_CM.apw.
15 Select Run | Settings. If necessary, type
Membrane2_Loc_dll.opt in the Linker Options field to tell
Aspen Plus where to find the shared library.
16 Click OK.
17 Run the simulation.

4-16 Customizing the Aspen Plus Model Library Getting Started Customizing Unit Operation Models
18 Go to the Blocks | HFUM180 | Results | Summary sheet to
see the entire real and integer parameter lists including the two
real parameters that were specified as output only.
19 Go to the Configured Variables sheet to see just the two
output parameters.

20 Save the simulation as Membrane2_CM.apw and exit Aspen
Plus.
Note: This simulation file uses the same Mem2 subroutine as
Membrane2.apw. It uses an updated version of Membrane2.dll,
an updated version of Membrane2_List_OBJs.opt, and the same
Membrane2_Loc_dll.opt file as in the previous chapter and
produces the same results. It has been named
Membrane2_CM.apw to emphasize this connection to the
previous simulation.


Getting Started Customizing Unit Operation Models Creating an Aspen Plus Fortran Model 5-1
C H A P T E R 5
Creating an Aspen Plus Fortran
Model
Excel is useful for testing and troubleshooting a new model
because it is self-contained during the testing phase, it is not
necessary to run Aspen Plus simulations. However, once the model
is developed, you may wish to perform the model calculations in
the user Fortran subroutine and transfer the results directly to
Aspen Plus.
In this chapter, build a User2 Fortran model to replace the Excel
model that you developed previously. Use Aspen Plus utility
functions that read from and write to the real and integer array
stored with the HollowF customized model. Use the named
references (such as DIAM) you specified when you created the
model.
The absence of Excel interface functions and the presence of the
Aspen Plus utility functions make for compact code in the new
subroutine. A complete listing is provided here.
Allow about 30 minutes for this session.

5-2 Creating an Aspen Plus Fortran Model Getting Started Customizing Unit Operation Models
Putting the Model Equations in the
User Subroutine
A Fortran template is available that will make creating a
subroutine to perform the calculations for the HollowF model
easier. The complete subroutine is listed below.
1 Put a copy of \Engine\User\Usrus2.f in the folder you are using
for your Fortran subroutines. For example, copy this file to
Aspen Plus working directory.
2 Edit Usrus2.f and change the name of the subroutine to HFUM.
Note: Any filename with the .f extension is allowed and any
subroutine name up to six characters is allowed.
3 Rewrite the subroutine following the complete Code Listing
below. Numbers in parentheses after the boldface comments
refer to the relevant part of the Code Description that follows
the listing.
Code Listing Subroutine HFUM

SUBROUTINE HFUM (NMATI, MSIN, NINFI, SINFI, NMATO,
2 SOUT, NINFO, SINFO, IDSMI, IDSII,
3 IDSMO, IDSIO, NTOT, NSUBS, IDXSUB,
4 ITYPE, NINT, INT, NREAL, REAL,
5 IDS, NPO, NBOPST, NIWORK, IWORK,
6 NWORK, WORK, NSIZE, SIZE, INTSIZ,
7 LD )

IMPLICIT NONE

#include "ppexec_user.cmn" !Passes USER_NHSTRY. (1)

#include "dms_plex.cmn" !Passes arrays containing component data such
Real*8 B(1) !as molecular weight. (2)
Equivalence (B(1),IB(1))

#include "dms_ncomp.cmn" !Passes NCOMP_NCC. (3)


Getting Started Customizing Unit Operation Models Creating an Aspen Plus Fortran Model 5-3
C ------------------- Declare arguments -----------------------------------------------------

INTEGER NMATI, NINFI, NMATO, NINFO, NTOT,
+ NSUBS, NINT, NPO, NIWORK, NWORK,
+ NSIZE, NREAL

INTEGER IDSMI(2,NMATI), IDSII(2,NINFI),
+ IDSMO(2,NMATO), IDSIO(2,NINFO),
+ IDXSUB(NSUBS), ITYPE(NSUBS), INT(NINT),
+ IDS(2,3), NBOPST(6,NPO),
+ IWORK(NIWORK), INTSIZ(NSIZE), LD

REAL*8 MSIN(NTOT,NMATI), SINFI(NINFI),
+ SOUT(NTOT,NMATO), SINFO(NINFO),
+ WORK(NWORK), SIZE(NSIZE), REAL(NREAL)

C --------------- Declare Local Variables ---------------------------------------------

INTEGER OFFSET, IERR, LDATA, KDIAG, IDX(10), NCP, I, J, INDEX,
+ LMW, NTUBES, IPERM, IRET,IFAIL

REAL*8 DIAM, LEN, DIFF, CG, REJ_COEF, C1, C2, C3, C4, P_PERM,
+ DELTA_P, RHO, MU, FIN, CIN, PIN, UAVE, RE, SC,
+ CP, CR, KM, JM, FP, PRET, XMW, X(10), FLOW

C ----------------- Declare Functions --------------------------------------------------

INTEGER USRUTL_GET_REAL_PARAM, !These functions allow access to real and
+ USRUTL_GET_INT_PARAM, !integer parameters using named references. (4)
+ USRUTL_SET_REAL_PARAM !To write results data to Aspen Plus. (4)

INTEGER DMS_IFCMNC !Determines offset to universal constant data. (5)

REAL*8 DLOG !Standard Fortran function.

C ----------------------------- Begin Executable Code --------------------------------------------------
C ------------------------------Get configured REAL variables from Aspen Plus. ------------------

IFAIL = 0
INDEX = 0 !Used for passing a structure. (6)
IERR = USRUTL_GET_REAL_PARAM('DIAM', INDEX, DIAM) !Put Configured Variable called
!DIAM in local variable DIAM. (7)

IF (IERR .NE. 0) THEN !Write to History file if error. (8)
WRITE(USER_NHSTRY,*) ' ERROR FETCHING HYDRAULIC DIAMETER'
IFAIL = 1
END IF

IERR = USRUTL_GET_REAL_PARAM('LEN', INDEX, LEN)
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR FETCHING LENGTH'
IFAIL = 1
END IF

IERR = USRUTL_GET_REAL_PARAM('DIFF', INDEX, DIFF)

5-4 Creating an Aspen Plus Fortran Model Getting Started Customizing Unit Operation Models
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR FETCHING DIFFUSIVITY'
IFAIL = 1
END IF

IERR = USRUTL_GET_REAL_PARAM('GEL_CONC', INDEX, CG) !Local variable can have any name.
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR FETCHING GEL CONCENTRATION'
IFAIL = 1
END IF

IERR = USRUTL_GET_REAL_PARAM('REJ_COEF', INDEX, REJ_COEF)
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR FETCHING REJECTION COEFFICIENT'
IFAIL = 1
END IF

IERR = USRUTL_GET_REAL_PARAM('COEF1', INDEX, C1)
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR FETCHING COEF1'
IFAIL = 1
END IF

IERR = USRUTL_GET_REAL_PARAM('COEF2', INDEX, C2)
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR FETCHING COEF2'
IFAIL = 1
END IF

IERR = USRUTL_GET_REAL_PARAM('COEF3', INDEX, C3)
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR FETCHING COEF3'
IFAIL = 1
END IF

IERR = USRUTL_GET_REAL_PARAM('COEF4', INDEX, C4)
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR FETCHING COEF4'
IFAIL = 1
END IF

IERR = USRUTL_GET_REAL_PARAM('PERM_PRES', INDEX, P_PERM)
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR FETCHING PERMEATE PRESSURE'
IFAIL = 1
END IF

IERR = USRUTL_GET_REAL_PARAM('DELTA_P', INDEX, DELTA_P)
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR FETCHING PRESSURE DROP'
IFAIL = 1
END IF

C ---------------------------------- Get configured INTEGER variables from Aspen Plus --------------------------------


Getting Started Customizing Unit Operation Models Creating an Aspen Plus Fortran Model 5-5
IERR = USRUTL_GET_INT_PARAM('NTUBES', INDEX, NTUBES)
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR FETCHING NUMBER OF TUBES'
IFAIL = 1
END IF

C ---------------------------------------- Calculate viscosity -----------------------------------------------------------

CALL SHS_CPACK(MSIN(1,1), NCP, IDX, X, FLOW) !Pack stream data. (9)
KDIAG = 4
CALL PPMON_VISCL(MSIN(NCOMP_NCC+2,1), MSIN(NCOMP_NCC+3,1), X, NCP,
+ IDX, NBOPST, KDIAG, MU, IERR) !Calculate viscosity, put result in MU. (9)
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY, *) ' ERROR EVALUATING VISCOSITY FOR FEED'
IFAIL = 1
END IF

IF (IFAIL .EQ. 1) RETURN

C ----------------------------- Get location of molecular weight data.---------------------------------

LMW = DMS_IFCMNC('MW') !Offset to the component molecular weight data. (10)

C ------------------------------------- Model Equations ---------------------------------------------------------------

RHO = MSIN(NCOMP_NCC+8,1) / 1000. !Density of feed stream in g/cm^3 [=kg/l]. (11)
MU = MU * 10. !Viscosity of feed stream in g/cm/s.
FIN = MSIN(NCOMP_NCC+1,1) * MSIN(NCOMP_NCC+9,1) / RHO * 3600. !Feed flow in l/hr.
(11)
CIN = MSIN(2,1) * B(LMW+2) / FIN * 3600000. !Protein conc. in feed stream in g/l. (11)
PIN = MSIN(NCOMP_NCC+3,1) / 101325. !Feed stream pressure in atmospheres.
(11)

UAVE = FIN / (DIAM**2*3.14*NTUBES/4.) * 1000. / 3600. !Bulk average velocity in cm/s.
RE = DIAM * UAVE * RHO / MU !Reynolds number.
SC = MU / (RHO * DIFF) !Schmidt number.

CP = CG * (1 REJ_COEF) !Permeate stream protein conc. in g/l.
KM = C1 * RE**C2 * SC**C3 * (DIAM/LEN)**C4 * DIFF/DIAM/100. !Mass xfer coef in m/s.
JM = KM * DLOG((CG - CP) / (CIN - CP)) !Volumetric flux in m/s.
FP = JM * DIAM * LEN * 3.14 * NTUBES*100*3600/1000. !Permeate stream flow rate in l/hr
CR = (CIN - FP/FIN*CP) / (1 - FP/FIN) !Retentate stream protein conc. in g/l.
PRET = PIN DELTA_P !Retentate stream pressure in atm.

C ----------------------------- Assume (incorrectly) PERMEATE stream is first, switch if not. ----------------------------

IPERM = 1
IRET = 2
IF (IDSMO(1,1) .EQ. 'RETE') THEN !IDSMO is an argument passed to the subroutine.
!It contains the outlet stream IDs. (12)
IPERM = 2
IRET = 1
END IF

C --------------------------- Fill SOUT array for PERMEATE stream. -------------------------------------------

5-6 Creating an Aspen Plus Fortran Model Getting Started Customizing Unit Operation Models

SOUT(1,IPERM) = FP * RHO / 3600. / B(LMW+1) !Approximate water flow in kmol/s. (13)
SOUT(2,IPERM) = FP * CP / 1000. / 3600. / B(LMW+2) !Protein flow in kmol/s. (13)
SOUT(3,IPERM) = SOUT(1,IPERM) + SOUT(2,IPERM) !Total flow in kmol/s. (13)
SOUT(4,IPERM) = MSIN(4,1) !Temp. unchanged from feed (deg K). (13)
SOUT(5,IPERM) = P_PERM * 101325. !Pressure in N/m^2. (13)

C -------------Fill SOUT array for RETENTAT stream using values from PERMEATE stream. ---------------

SOUT(1,IRET) = MSIN(1,1) - SOUT(1,IPERM) !Water flow in kmol/s. (13)
SOUT(2,IRET) = MSIN(2,1) - SOUT(2,IPERM) !Protein flow in kmol/s. (13)
SOUT(3,IRET) = SOUT(1,IRET) + SOUT(2,IRET) !Total flow in kmol/s. (13)
SOUT(4,IRET) = MSIN(4,1) !Temp. unchanged from feed (deg K). (13)
SOUT(5,IRET) = PRET * 101325. !Pressure in N/m^2. (13)

C ----------------------------Now set values of the two variables designated as output parameters. ------------

IERR = USRUTL_SET_REAL_PARAM('CP_PROT', INDEX, CP) !The HollowF model was designed
!to accept 2 output parameters. (14)
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR STORING PERMEATE PROT CONC'
IFAIL = 1
END IF

IERR = USRUTL_SET_REAL_PARAM('CR_PROT', INDEX, CR)
IF (IERR .NE. 0) THEN
WRITE(USER_NHSTRY,*) ' ERROR STORING RETENTATE PROT CONC'
IFAIL = 1
END IF

RETURN
END
Code Description Subroutine HFUM
1 USER_NHSTRY is the Fortran unit number for the History
File. From Aspen Plus, you can access this file by selecting
View | History. This command will open the history file with a
text editor and it can be saved using the text editor. Aspen Plus
will also save a History File if you save the simulation as an
apw file.
2 The common DMS_PLEX contains data for all components
including the formula, ID, and physical property parameters
such as molecular weight. The data is accessed by using a
function to find the offset to the location of the data in the B or
IB array. For more discussion of the DMS_PLEX common and
examples see the User Models manual and steps 5 and 10 in
this list.

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Fortran Model 5-7
3 NCOMP_NCC is the number of conventional components in
the simulation. In this example, there are two, water and
protein.
4 The three USRUTL functions return an integer which will have
the value zero if there were no errors. These functions allow
the user to pass values between the Fortran subroutine and
Aspen Plus according to the names defined using the User
Model Configuration Editor.
5 The integer function DMS_IFCMCN takes a character string
as input (for example, MW for molecular weight) and returns
the offset to an area of the Plex data array. For more
information and examples, see the User Models manual and
step 10 in this list.
6 INDEX is an array of indices used in the USRUTL functions
when handling a structure. Its value is irrelevant in the present
example since none of the data are structures. However, if you
created a coefficients structure with four elements you could
access them using the following code:
INTEGER INDEX(1), Ierr, USRUTL_GET_REAL_PARAM, i
REAL*8 C(4)
.
.
DO i = 1,4
INDEX(1) = i
Ierr = USRUTL_GET_REAL_PARAM(coefficients,INDEX,C(i))
END DO
The 1-based INDEX array contains only as many elements as
there are levels of structure. Each element must be set once per
loop. For example, suppose you have nested structures with
str1 containing str2a, str2b, and str2c. If str2b has five scalar
elements and you wish to access the third, set INDEX(1) = 2
and INDEX(2) = 3. A scalar element within a structure (for
example, coefficients.coef2) may also be referenced directly by
its lowest level name (coef2 in this example) as if it were not
in a structure at all: USRUTL_GET_REAL_PARAM(coef2,
0, C2).
7 On the Aspen Plus Blocks | HFUM180 | Setup | Configured
Variables sheet, the user can see that one of the real
parameters is called DIAM. The function
USRUTL_GET_REAL_PARAM retrieves the value of this
parameter and puts it into a local Fortran variable that, in this
example, is named DIAM. Of course any declared Real*8
variable is allowed to hold the value of this parameter.

5-8 Creating an Aspen Plus Fortran Model Getting Started Customizing Unit Operation Models
8 This History File, also discussed in Step 1 above, is a useful
place for error messages and troubleshooting output
statements. For example, a statement like
write(user_nhstry,*) diam = , diam
might be useful if your calculations arent coming out properly
and you want zero in on the problem.
9 The user can call physical property monitors such as
PPMON_VISCL to access the Aspen Plus Physical Property
system. The PPMON subroutines require the stream
information in packed form (that is, a reduced list of
component mole fractions with the zeroes removed) produced
by a packing utility such as SHS_CPACK. For more
information about accessing physical properties see Chapters 3
and 4 of the User Models manual.
10 For a list of the names to feed to DMS_IFCMNC in order to
retrieve component data from Aspen Plus, see Chapter 6 of the
User Models manual. In this example, the offset (LMW) to the
molecular weight data is obtained using the string MW. The
molecular weight of the first component listed by the user on
the Aspen Plus Components Specifications Selection sheet
(water) is stored in B(LMW + 1). The molecular weight of
protein (really lysine) is stored in B(LMW + 2).
11 The input (feed) stream array MSIN contains NCOMP_NCC+9
elements for each feed stream. In this example there is only
one feed stream so the second index is always 1. The first
index may be 1 through 11 since there are two components.
The first two elements are the mole flows in kmol/s for water
and protein. The following nine elements are total mole flow,
temperature, pressure, enthalpy, vapor fraction, liquid fraction,
entropy, density, and molecular weight of the stream. They are
listed in Appendix C of the User Models manual and are in SI
units. Since the model equations in this example use other
units, conversions must be performed.
12 The argument list for User 2 models is documented in Chapter
5 of the User Models manual. IDSMO is an array with
dimension (2, NMATO) where NMATO is the number of
material outlet streams. For each stream, there are 2 four-
character labels. In this example, the streams are distinguished
by the first four letters in the label of each (RETE and PERM).
Alternatively, the programmer can instruct users to always
connect the Retentate stream first.
13 The SOUT array has the same structure as the MSIN array. It
contains the mole flow, temperature, pressure, and other data
for the two product streams. The program calculates flow rates

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Fortran Model 5-9
for each component, the total flow rates, set the product stream
temperatures equal to the feed stream temperature, and
calculates the pressure of each stream. These data are sent to
Aspen Plus by filling the first five elements of the SOUT array
for each stream.
14 Other data not included in SOUT will appear on the Blocks |
HFUM180 | Results | Configured | Variables sheet because
two variables were designated output only when the user set up
the configured variables for the HollowF model. The protein
concentration in g/l for both product streams appears on the
results sheet. Since this is user-specified output data, Aspen
Plus makes no assumptions about units.
Compiling and Linking the
Subroutine
Use the aspcomp command to compile the subroutine. Then create
a new DLOPT file that contains the name of the new subroutine.
Create the DLL file and place a DLOPT file in the Aspen Plus
Working Folder that contains the path to this new DLL.
1 Save your Fortran code as HFUM.f and exit the development
environment.
2 Start the Aspen Plus Simulation Engine. (From the Start menu
click Programs | AspenTech | Aspen Engineering Suite |
Aspen Plus 12.1 | Aspen Plus Simulation Engine.)
3 In the DOS prompt window type cd membrane if your Fortran
files are in a sub-folder of your Aspen Plus Working Directory
called membrane.
4 Type aspcomp HFUM to compile the subroutine to create
HFUM.obj.
5 Open Membrane2_List_OBJs.opt and replace Mem2.obj
with HFUM.obj.
6 Save the file as HFUM_List_OBJs.opt and exit the text
editor.

7 In the DOS window of the Aspen Plus Simulation Engine, type
asplink [dlopt HFUM_List_OBJs.opt] HFUM to create
HFUM.dll.

5-10 Creating an Aspen Plus Fortran Model Getting Started Customizing Unit Operation Models
8 From the Aspen Plus Working Folder, open
Membrane2_Loc_dll.opt and replace Membrane2.dll with
HFUM.dll.
9 Save the file as HFUM_Loc_DLL.opt and exit the text editor.

Running the Simulation
Use the membrane2_cm.apw simulation from the previous
chapter. Since your model calculations will be performed by the
Fortran subroutine, remove the reference to the Excel file. Then
enter the name of the DLOPT file containing the location of the dll
file and run the simulation.
1 Open membrane2_cm.apw.
2 Select Run | Reinitialize (or press Shift-F5) and click OK
twice.
3 Go to the Setup Specifications Global sheet and change the
title to HFUM.
4 Go to the Blocks | HFUM180 | Setup | Subroutines sheet,
change the name of the Fortran subroutine to HFUM and
delete the reference to the Excel file.

5 Select Run | Settings, type HFUM_Loc_DLL.opt in the
Linker Options field, and click OK.
6 Run the simulation.
7 Compare your results to those obtained using the Excel model
or to the results displayed below.
8 Save the run as HFUM.apw and exit Aspen Plus.

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Fortran Model 5-11
Results from the Custom Fortran
Model
Blocks HFUM180 Stream Results Material sheet:

Blocks HFUM180 Results Configured Variables sheet:


5-12 Creating an Aspen Plus Fortran Model Getting Started Customizing Unit Operation Models

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Custom Form 6-1
C H A P T E R 6
Creating an Aspen Plus Custom
Form
Creating graphical forms using Microsoft Visual Basic is the last
level of customization for supporting custom models in Aspen
Plus. Configured variables that were defined for these models can
be linked into these forms.
The ability to create forms combined with the templating
capabilities that you used in the previous chapter is a very
powerful customization capability. It is now possible to create
forms for an existing plant unit that hides design parameters for
users interested in performing rating only calculations for example.
These forms are easily inserted into Aspen Plus by registering the
OCX file created by Visual Basic using the Aspen Plus
ApFormSetup utility. Visual Basic template files are provided with
Aspen Plus to reduce the amount of time required to develop
custom forms. Fields commonly used by the Aspen Plus GUI can
be applied to a new sheet by dragging it from a Controls Toolbox.
In this example, create a special Blocks BLOCKNAME
Input_And_Results form containing two sheets: an Input sheet
that provides access to two important membrane parameters and a
Results sheet that contains results of particular interest. Include the
new form as an addition to the usual forms associated with the
HollowF model and create a new model that contains the special
form.
Allow about 40 minutes for this session.

6-2 Creating an Aspen Plus Custom Form Getting Started Customizing Unit Operation Models
Setting Up the Visual Basic
Environment
Use Visual Basic to create your form (an OCX file), then create a
text (OCR) file with specifications, run a program that
automatically sets up the Aspen Plus/Visual Basic interface, create
a model that will own the form, and test the new form.
It is important to keep track of file names, project and control
names, and the model name so that the interface works. This
example uses literal naming such as ProjectFile, ProjectName, and
ModelName. However, the example uses ordinary names for the
form and its two sheets: FormName = Input_And_Results and
Sheet1Name = Input, Sheet2Name = Results.
Aspen Plus provides a Visual Basic project file (.vbp), two Visual
Basic control files (.ctl), and two graphics files (.ctx; to support the
control files) to define the development environment for creating
Aspen Plus GUI forms.
Use these template files to set up an environment in which you can
easily create custom forms that have the same look and
functionality as the standard Aspen Plus forms.
1 Create a new folder to use as a Visual Basic Working Folder.
For example, create d:\Program Files\AspenTech\Working
Folders\Aspen Plus\VB
2 Copy the following files from the GUI\xeq folder of the Aspen
Plus 12.1 folder to your VB folder:
tabtemplate.ctl
tabtemplate.ctx
formtemplate.ctl
formtemplate.ctx
3 Copy the following file from the GUI\xeq folder of the
APRSYSTEM 12.1 folder to your VB folder:
Template.vbp
4 Open the Visual Basic project by double clicking
Template.vbp.
5 Save the project as ProjectFile.vbp.
6 Select Project | MyModel Properties and change the
Project Name to ProjectName.

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Custom Form 6-3
Note: When creating forms after this exercise, you may wish to
have ProjectFile = ProjectName = ModelName. To see clearly
how the Aspen Plus/Visual Basic interface works, keep these three
names separate for this example.
7 Select Project | Add User Control | Existing (tab), select
formtemplate.ctl and click open to add the control used for
creating forms to your project.
8 Add tabtemplate.ctl and formtemplate.ctl to your project.
Now you are ready to create an Aspen Plus form. Your VB
window should look something like this:

The cursor in the picture is hovering over the MMTabStrip tool
that you will use to create your custom form. The Toolbox
(displayed via View | Toolbox) contains a number of tools in
addition to MMTabStrip designed expressly for creating Aspen
Plus GUI forms. The MM prefix indicates an Aspen Plus tool.

6-4 Creating an Aspen Plus Custom Form Getting Started Customizing Unit Operation Models
Creating the Visual Basic Form
Create three controls: one parent control (Tab), and two daughter
controls (Input and Results). For the Tab control, specify two
labeled tabs, and specify the daughter control corresponding to
each tab. For the Input and Results controls, create labeled fields
and indicate the Aspen Plus Path to the variables corresponding to
each field.
The text file (.ocr) that you will create provides Aspen Plus with
the name of the tab control which has links to the two sheets which
in turn have links to Aspen Plus variables.
First, rename the two templates, and import another instance of
FormTemplate and rename it as well.
1 Go to the Project window and expand ProjectName
(ProjectFile.vbp) so that the two control templates appear.
2 Select TabTemplate (tabtemplate.ctl), right-click, and save
the file as TabControlFile.ctl.
3 Double click TabTemplate (TabControlFile.ctl).
A graphics window appears and the Properties window fills with
data.
4 Click in the Properties window, change the entry in the
(Name) field to TabControlName and press Enter.
The Tab control is now listed in the Project window as
TabControlName (TabControlFile.ctl).
5 Change FormTemplate (formtemplate.ctl) to
InputControlName (InputControlFile.ctl) by repeating steps
2 4 above.
6 Select Project | Add User Control | Existing (tab) and import
another instance of formtemplate.ctl.
7 Change FormTemplate (formtemplate.ctl) to
ResultsControlName (ResultsControlFile.ctl).
Create Three Named
Controls

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Custom Form 6-5
After cleaning up, your window will look something like this:

Next, build the Tab control. Use the MMTabStrip tool and make
two tabs (the default is three so youll have to delete one) linked to
the Input and Results sheets.
1 From your VB project, maximize the TabControlName
window.
2 From the toolbox on the left-hand side of the VB window,
click .
3 Move the cursor onto the drawing area in the
TabControlName window (it becomes a crosshair).
4 Click and drag diagonally across the drawing area and release
the mouse to create a box with three tabs.
This box with three tabs is called a tab strip.

5 Select the tab strip, right-click, and select Properties.
Build the Tab Control

6-6 Creating an Aspen Plus Custom Form Getting Started Customizing Unit Operation Models
The Property Pages dialog box appears.
6 In the Caption field, type Input.
7 Create the link to the Input control by typing
ProjectName.InputControlName in the FormName field.
Property Pages dialog, close-up view:

8 Advance the Current Tab field from 0 to 1 by clicking the up
arrow to the right of the field.
9 In the Caption field, type Results.
10 Create the link to the Results control by typing
ProjectName.ResultsControlName in the FormName field.
11 Advance the Current Tab field to 2.
12 Click Remove Tab as you need only two tabs, the 0
th
and 1
st
.
13 Click OK.

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Custom Form 6-7
The tab strip, (most-recently-edited tab is bold):

Note: The MMTabStrip object selected above and the User
Control object (selected if you click in the drawing area outside the
tab strip) are separate objects with separate properties.
14 Reduce the TabControlName window so that you can access
the other controls.
15 Select TabControlName (TabControlFile.ctl) in the project
window, right-click, and select Save TabControlFile.ctl

6-8 Creating an Aspen Plus Custom Form Getting Started Customizing Unit Operation Models
Next, build the Input control. Use the MMFrame tool to create a
frame for two input fields. Then use the MMLBUText tool to
create the two fields one labeled Channel Hydraulic Diameter
and the other labeled Channel Length.
In the HollowF model, you created named variables for the
membrane parameters and they appeared on the Configured
Variables sheet. Now two of these variables will also appear on
your new Input sheet. You will specify the Aspen Plus paths to
these variables in the Input control you are about to build.
1 Maximize the InputControlName window.
2 From the toolbox, click .
3 Click and drag in the drawing area of the Input control to
create a Frame.
4 Select View | Properties Window or press F4 to open the
Properties window.
5 Enter Membrane Parameters in the Caption field.
The Properties window :

6 Close the Properties window.
7 From the toolbox, click .
8 Click and drag in the upper half of the Frame to create a field
area. It wont look nice right away.
9 Select the new field area, right-click, and select Properties.
Build the Input
Control

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Custom Form 6-9
Another Property Pages dialog box appears. Use it to position and
label the field and assign it a path to an Aspen Plus variable.
10 Select the MMLBTUText tab, and clear the checkboxes for
the Basis and Units fields.
11 Set the Width for the Label to 2350.
12 Set the Left parameter for the Text to 2400.


13 Select the MMLBTUTextLabel tab, type Channel Hydraulic
Diameter in the Label Caption field.


14 On the Variable tab, click Add to create a variable having a
Node datatype.

6-10 Creating an Aspen Plus Custom Form Getting Started Customizing Unit Operation Models
15 In the first Path column, enter main, Input, User Table, DIAM
respectively into the first four cells. Use a space between the
words User and Table.

The full path to variable you defined as DIAM when you created
the HollowF model is shown below in the Aspen Plus Variable
Explorer window which is accessed by via the Tools | Variable
Explorer command. The variable main used above is
automatically assigned to the path to the block containing your
form: Application.Tree.Data.Blocks.B1 in this example. This is
important because any given block could have any user-chosen
name at run time.

16 Click OK to close the Property Pages dialog box.

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Custom Form 6-11
17 Select the Channel Hydraulic Diameter field area and resize
it so that it doesnt take up too much space in the Membrane
Parameters frame.
18 Click in the tool box.
19 Click and drag in the frame to create a small label.
20 Select the label, right-click, select Properties and enter cm in
the Caption field..
21 Resize the label and move it to the right of the Channel
Hydraulic Diameter field.
22 Reduce the InputControlName window.
23 Select InputControlName (InputControlFile.ctl) in the
Project window, right-click, and select Save.
24 Repeat steps 7-23 and create a Channel Length field mapped to
the LEN variable with path: main.Input.User Table.LEN.
The eventual Blocks BLOCKNAME Input_And_Results Input
sheet looks like this:

Next, build the Results control. An abbreviated procedure is given
below refer to steps 7 21. Create two fields, Permeate Protein
Concentration and Retentate Protein Concentration. Specify
paths to the two Output only variables, CP_PROT and
CR_PROT, that you defined in the HollowF model.
1 Make a frame called Membrane Performance.
2 Make a field for Permeate Protein Concentration and map the
variable to: main, Output, User Tree, CP_PROT.
3 Make a field for Retentate Protein Concentration and map the
variable to: main, Output, User Tree, CR_PROT.
4 Add the concentration units (g/l) next to the field.
Build the Results
Control

6-12 Creating an Aspen Plus Custom Form Getting Started Customizing Unit Operation Models
The eventual Blocks BLOCKNAME Input_And_Results
Results sheet looks like this:

5 Save the ResultsControlFile.ctl file.
6 Save the Visual Basic Project.
The finished Project:

7 Select File | Make ProjectFile.ocx and click OK to create
the ocx file that will be registered with the operating system
and thereby integrated with Aspen Plus.
8 Exit the VB development environment.

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Custom Form 6-13
Integrating Forms with Aspen Plus
The connection between Aspen Plus and your custom form is
accomplished by means of two files. The OCX file created above
contains the actual form. A text file with the OCR extension will
contain specifications for the form.
The OCR file contains the name of the unit operation model that
uses the form, the name of the form as it will appear on the Data
Browser menu tree, the name of the tab control, and information
specifying the placement of the new form in the list of forms.
Your new form applies only to a USER2-based custom model
(called ModelName in this example) for a hollow fiber
ultrafiltration membrane. The new form should appear only with
this particular model. The ModelName model should contain all
the usual USER2 forms. The do this:
Rename the OCX file to ModelName.ocx.
Create an OCR file called ModelName.ocr.
Put the specification for the new form into your OCR file.
Copy and paste specifications for the usual USER2 forms from the Aspen Plus
OCR files in GUI\forms to your OCR file.
Put copies of your OCR and OCX file in GUI\forms.
Use ApFormSetup.exe in GUI\xeq to register your OCX file (the OCR file is
processed automatically).
A step-by-step procedure is provided below.
1 Rename ProjectFile.ocx to ModelName.ocx.
2 Create a text file called ModelName.ocr with the first line as
shown below. Letters in the name of the unit operation model
(in this case MODELNAME) must ALL be capitalized even if
the actual Aspen Plus model is called ModelName.

A form called Input_And_Results will appear in the Blocks
folder on the Data Browser menu tree when a ModelName block
is placed in the Process Flowsheet. Aspen Plus will use the tab
control object called ProjectName.TabControlName to create
the form. The number 5 is for position in the form list and the
number 1 indicates a tabbed form.
3 Use the Windows (Start | Search | For Files or Folders) to
find OCR files in the GUI\forms folder that contain
Blocks\USER2 specifications.
Create OCR and OCX
Files for Your Model

6-14 Creating an Aspen Plus Custom Form Getting Started Customizing Unit Operation Models

4 Open the files containing the Blocks\USER2 specifications and
copy and paste these lines into ModelName.ocr.
5 Replace Blocks\USER2 with Blocks\MODELNAME.

Your new form called Input_And_Results (position 5) will be
placed after the Setup and Petro Characterization forms
(positions 0 and 1 respectively). The Setup form will open by
default when you click on the BLOCKNAME folder in the Data
Browser. The CC, NodeName entries are for the Aspen Plus
completion checking system.
6 Save ModelName.ocr and exit the text editor.

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Custom Form 6-15
7 Copy ModelName.ocr and ModelName.ocx to the
GUI\Forms folder of the Aspen Plus installation.
Next, register the ocx file with the operating system to give Aspen
Plus access to the three controls you created:
ProjectName.TabControlName
ProjectName.InputControlName
ProjectName.ResultsControlName
1 Run ApFormSetup.exe in the GUI\xeq folder of the Aspen
Plus installation.
The Update System Registry dialog box appears.

2 Accept the defaults and click Next.
Register the OCX File

6-16 Creating an Aspen Plus Custom Form Getting Started Customizing Unit Operation Models
The Register Forms dialog box appears listing all OCX files in
the GUI\Forms folder.
3 Click Deselect All to clear all the selections.
4 In the Product specific forms list, scroll down to
ModelName.ocx and click it so that only it is selected.
5 Select Update Data Browser Menu since you are only adding
a form to a previously-built menu.

6 Click Next.
The Data Browser updates (new entries are made in the System
Registry) so that Aspen Plus has access to the new form. The
Register PlotWizard dialog box appears.
7 Click Deselect All and then click Finish since you have no
new plot wizard files to register.
8 Click OK when ApFormSetup.exe announces success.

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Custom Form 6-17
9 Optional: Run Regedit.exe (click Start | Run, type Regedit in
the Open field and click OK.) and examine the new entries
under HKEY_CLASSES_ROOT. Exit the Registry Editor
without changing anything.
The three VB control object that you created are listed.

Testing the New Form
Open HFUM.apw and create a new model called ModelName in
your ultrafiltration library. Then replace the HollowF model with
the new model and run the simulation.
1 Open HFUM.apw.
2 Press Shift-F5 to reinitialize the run.
3 Select Library | References and check Ultrafiltration.
4 Select Library | Ultrafiltration | Writable.
5 Select the HollowF block, called HFUM180, right-click, and
select Add to Model Library.
A series of dialog boxes appears. Step 6 contains abbreviated
instructions refer to Chapter 4 for details.
6 When the Enter name to use for the model type field
appears, type ModelName. Otherwise, select the following
options: Add: Create a New etc., etc.,; Membranes; Single
Block Custom Model; and Copy current icon only. Then
click Finish.
7 Delete the HollowF model on the Process Flowsheet, replace it
with a ModelName model, and reconnect the streams.
8 Name the new block CFTEST.

6-18 Creating an Aspen Plus Custom Form Getting Started Customizing Unit Operation Models
9 Open the Data Browser and go to the Blocks CFTEST
Input_And_Results Input sheet. Note the data in the two
fields. Check the Results sheet. There is no data there yet.
10 Go to the Blocks CFTEST Setup Subroutines sheet and type
HFUM in the Model field and eliminate the reference to the
Excel file.
11 Go to the Blocks CFTEST Setup Stream Flash sheet and set
Temperature & pressure flashes for both product streams.
12 Select Run | Settings and type HFUM_Loc_dll.opt in the
Linker Options field.
13 Run the simulation.
14 Go to the Blocks CFTEST Input_And _Results Results sheet
to check the results.
15 Go to the Blocks CFTEST Input_And_Results Input sheet,
change the input values of the two parameters, run the
simulation again, and click the results tab to see the changes.
16 Save the simulation as HFUM_CF.apw and exit Aspen Plus.

Getting Started Customizing Unit Operation Models Creating an Aspen Plus Custom Form 6-19
Results from the Custom Form
The customized Data Browser menu tree:

The Blocks CFTEST Input_And_Results Input sheet with new
data:


6-20 Creating an Aspen Plus Custom Form Getting Started Customizing Unit Operation Models
The Blocks CFTEST Input_And_Results Results sheet after the
run with new data:

Getting Started Customizing Unit Operation Models Connecting to the Aspen Plus Simulation Engine 7-1
C H A P T E R 7
Connecting to the Aspen Plus
Simulation Engine
If either of the following conditions exist, you will be prompted to
specify the host computer for the Aspen Plus simulation engine
after you start the Aspen Plus User Interface:
The simulation engine is not installed on your PC.
The simulation engine is installed on your PC, but the
Activator security device is not connected to your PC.
In these cases, the Connect to Engine dialog box appears.
1 In the Server type field, click and select the type of host
computer for the simulation engine.
2 If you choose Local PC as the server for the simulation engine,
you do not need to enter any more information into the dialog
box. Click OK to continue.
If you choose Windows 2000 or XP server as the server for the
simulation engine, enter the following additional information:
3 In the Node name field, enter the node name of the computer
on which the Aspen Plus simulation engine will execute.
4 In the other fields, enter the following information:
User name
Your user name for the specified
host/server.
Password
Your password for the above user name.
Working
directory
The associated working directory.


7-2 Connecting to the Aspen Plus Simulation Engine Getting Started Customizing Unit Operation Models
5 Click OK.
When the network connection is established, the message
Connection Established appears in the message box.
If the Connection Established message does not appear, see your
Aspen Plus system administrator for more information on network
protocols and host computers for the Aspen Plus simulation
engine.

Potrebbero piacerti anche