Many regulatory regimes include product specification rules that cover not just individual blends, but also the overall average which is exported from the refinery, over multiple grades.  These regulations sometimes include incentives for doing even better than the legal requirement – effectively paying you to blend with giveaway. Kirby’s been helping a client put in a benzene and sulphur credit opportunity, so we’ve all just had a review of how its done. It’s a nice little bit of modelling – which is easier than you might think, and linear.

As an example, I’ve put a benzene credit in the HCAMSIM demo model, making the very useful assumption that there is a de-benzenizer cleaning up the reformate, so that there is no trouble meeting a spec of 1% for all three gasoline grades.
25 GasolineSummaryReport
 
The credit, however, relates to overall benzene, so I need to know what it is on average for the whole of the production. This is easily done on the “Group Specifications” tab of the Gasoline node. The group is assigned a single character identifier, “A”, and the members, all the gasoline grades at the refinery location 33, are listed. This is base/alternate type data but as it is really structure, rather than the limit itself, so I recommend doing this in the base case [See Note #20) Model, Case, Base/Alternate for information about the data types.]
 
25 GroupSpecPanel
The specification goes in the bottom grid.  In this case, the limit is at one location, 33, for each period, **, but if you want to average over multiple locations, you can use XX.  Similarly, cross period averages may be created by using XX for the period code. [See Note #12) Bounds, Multi-Limits and Groups for more details on group limits and member inclusions.]  I am limiting the group to the same 1% as the individual products; however, the overall requirement could be tighter.  If you are working with tables, you will be setting up the group in 122.3 and the limits in 122.1.  (See below.)

To see what this spec is doing, turn on report segment R1210 – Multi-product Specifications.  
25 MultiProductSpec
 
Now to add the credit for our benzene giveaway.   This requires a process unit operation (always the most flexible structure).  While I could put the value of each credit directly on the unit as a negative operating cost, I'm going to set it up as a utility, that will be generated and sold.  That way I can have different prices and limits for different locations and time periods.  
  25 BenzeneCreditCounterUnit   Here is my unit BEN-BZ.  Operation CRD generates BZC, the credit utility – note the negative sign as a positive would be a consumption.  I have set a small loss so that there is a yield table for the unit, which is required if it is to be reported. And then I sell the BZC through the utility sales option [Table 192.0, cost account UTS].   This price is per unit of property, per unit of blend basis – so, in this case, $ per benzene% per BBL.
 
To finish, the process unit vector needs to be connected to the group specification – otherwise the model will be unbounded, as the operation can just run forever, making the credit out of nothing and selling it.  Back to the Group Specification panel to fill in the Process Unit Connection section  (included in v5.4 onwards - for earlier versions see the table example below).  Normally, the connection will just be 1-to-1, but you could use a different value if you want to convert units.
 
 25 ProcessUnitConnection
 
 
If you are working with table based input, your group spec will look like this:
MultiProductSpecTables
If you have a database model, but are using a version earlier than 5.4, you will need to put the process unit link in an additional data file - the necessary parts are highlighted in yellow.
 
Done. As proof that everything is working, some credits are sold (see the utility report) and more money is made.   The multi-product blend report shows that the spec is now being hit.   In order to see the overall average without the adjustment, I added a MIN spec of zero, at XX, not linked to the credit system.   
 
25 MultiProductSpecCredit
 
One futher point to note, is that you can easily adapt this to consume previously generated or purchased credits.   You need an option to buy the utility credits - at a higher price than the sale if you intend to model both options at the same time.   Then set the credit vector “FREE” on the process unit, so that it can run backwards and consume, instead of create utility.
 
18 December 2018: UPDATE:  If the property involved blends on a different basis than the model (that is if we did Benzene vol% credits in a weight model, or sulphur credits in a volume model) additional structure is needed to take the shift between weight and volume into account.  Richard Tan has added a more detailed description of this to the GRTMPS User Guide to be released with v5.6 in September 2019.  We would be happy to send an advance copy to any client.
 

From Kathy's Hotel Room in Berlin, 19th November 2017.

Comments and suggestions gratefully received via the usual e-mail addresses or here.
You may also use this form to ask to be added to the distribution list so that you are notified via e-mail when new articles are posted.