Jump to content



Featured Articles

Check out the latest featured articles.

File Library

Check out the latest downloads available in the File Library.

New Article

Product Viscosity vs. Shear

Featured File

Vertical Tank Selection

New Blog Entry

Low Flow in Pipes- posted in Ankur's blog

0

Hysis Vba Mixed Liquid Phase Data Access

mixed liquids extract phase excel vba vba hysis

3 replies to this topic
Share this topic:
| More

#1 Jose123123

Jose123123

    Brand New Member

  • Members
  • 1 posts

Posted 27 December 2022 - 07:27 PM

Engineers and other smart people,

I am building a material heat balance spreadsheet in excel vba and am extracting the data from hysis. I have figured out how to extract everything I need except for streams where there is an oil phase and water (and possibly vapor) as well. I am attempting to extract values which are accessible and recognized by hysis as "mixed liquid phase" in the workbook tab in hysis. This is my attempt at doing so


Set hyStream = hyFlowsheet.MaterialStreams.Item(hyname)
Set hyFluid = hyStream.DuplicateFluid
Set hyPhases = hyFluid.FluidPhases
xlrange(range).value = hyFluid.ExtractCombinedPhase(ptCombinedLiquidPhase).MassFlow.GetValue("lb/hr")


Again, I modified this to make sense since this is part of a larger code. The idea is to get mass flow (and other data) that includes total liquid flow data (when there may be an aqueous phase with an oil phase in the stream).

I look forward to hearing from you and thank you for your time.



#2 Bobby Strain

Bobby Strain

    Gold Member

  • Members
  • 3,529 posts

Posted 27 December 2022 - 09:59 PM

You should look at AspenTech's support site. They have lots of examples. Fluid phases are addressed by number. You can easily add a three-phase separator to separate the phases. Then fetch the phases.

 

Bobby


Edited by Bobby Strain, 28 December 2022 - 11:41 AM.


#3 Bobby Strain

Bobby Strain

    Gold Member

  • Members
  • 3,529 posts

Posted 01 January 2023 - 06:51 PM

Jose,

     I saw your message to me. I rarely look at messages. I'll post some code here that will probably help. For those reading, Norton blocked the site when I tried to reply to my message. Never happened before.

 

Bobby



#4 Bobby Strain

Bobby Strain

    Gold Member

  • Members
  • 3,529 posts

Posted 02 January 2023 - 04:25 PM

Jorge,

     Norton blocks use of the editor as a dangerous site. You Should get  HYSYS Stream Reporter from the AspenTech Site.

 

Set myFluid = Nstream.DuplicateFluid()
      myFluid.EquilibriumFlash   'TPFlash
      vapfracin = myFluid.VapourFractionValue
      Count = myFluid.FluidPhases.Count
      Worksheets(sheetname).Range("names").Cells(1, i) = Nstream.Name
      Worksheets(sheetname).Range("names").Cells(1, i).Offset(-1, 0) = Cflowsheet
      NoPhases = Count
      
      If NoPhases = 1 Then
         Set myPhase = myFluid.FluidPhases.Item(0)
         Call AddData(i, myPhase, myFluidPkg, 0, "data", sheetname, Nstream)
      ElseIf NoPhases = 2 Then
         Call AddData(i, Nstream, myFluidPkg, 1, "data", sheetname, Nstream)
         Set myPhasev = myFluid.FluidPhases.Item(0) 'vapor
         Set myPhasel = myFluid.FluidPhases.Item(1) 'liquid
         If (Abs(Nstream.MassFlow.GetValue("kg/h") - myPhasev.MassFlow.GetValue("kg/h")) < 0.05) Or (Abs(Nstream.MassFlow.GetValue("kg/h") - myPhasel.MassFlow.GetValue("kg/h")) < 0.05) Then
         Else
            i = i + 1
            ptype = " (vapor)"
            Set myPhase = myFluid.FluidPhases.Item(0) 'vapor or light liquid
            If myPhase.PhaseType = 1 Then _
                ptype = " (light liq)"
            Worksheets(sheetname).Range("names").Cells(1, i) = Nstream.Name & ptype
            Worksheets(sheetname).Range("names").Cells(1, i).Offset(-1, 0) = Cflowsheet
            Call AddData(i, myPhase, myFluidPkg, 2, "data", sheetname, Nstream)
            i = i + 1
            ptype = " (light liq)"
            Set myPhase = myFluid.FluidPhases.Item(1)
            If myPhase.PhaseType = 2 Then _
                ptype = " (heavy liq)"
            Worksheets(sheetname).Range("names").Cells(1, i) = Nstream.Name & ptype
            Worksheets(sheetname).Range("names").Cells(1, i).Offset(-1, 0) = Cflowsheet
            Call AddData(i, myPhase, myFluidPkg, 2, "data", sheetname, Nstream)
         End If
      ElseIf NoPhases = 3 Then
         Call AddData(i, Nstream, myFluidPkg, 1, "data", sheetname, Nstream)
         Set myPhasev = myFluid.FluidPhases.Item(0) 'vapor
         Set myPhasel = myFluid.FluidPhases.Item(1) 'liquid
         If (Abs(Nstream.MassFlow.GetValue("kg/h") - myPhasev.MassFlow.GetValue("kg/h")) < 1) Or (Abs(Nstream.MassFlow.GetValue("kg/h") - myPhasel.MassFlow.GetValue("kg/h")) < 1) Then
         Else
            i = i + 1
            Set myPhase = myFluid.FluidPhases.Item(0) 'vapor
            Worksheets(sheetname).Range("names").Cells(1, i) = Nstream.Name & " (vapor)"
            Worksheets(sheetname).Range("names").Cells(1, i).Offset(-1, 0) = Cflowsheet
            Call AddData(i, myPhase, myFluidPkg, 2, "data", sheetname, Nstream)
            i = i + 1
            Set myPhase = myFluid.FluidPhases.Item(1)
            Worksheets(sheetname).Range("names").Cells(1, i) = Nstream.Name & " (light liq)"
            Worksheets(sheetname).Range("names").Cells(1, i).Offset(-1, 0) = Cflowsheet
            Call AddData(i, myPhase, myFluidPkg, 2, "data", sheetname, Nstream)
            i = i + 1
            Set myPhase = myFluid.FluidPhases.Item(2)
            Worksheets(sheetname).Range("names").Cells(1, i) = Nstream.Name & " (heavy liq)"
            Worksheets(sheetname).Range("names").Cells(1, i).Offset(-1, 0) = Cflowsheet
            Call AddData(i, myPhase, myFluidPkg, 2, "data", sheetname, Nstream)
         End If
      End If

      i = i + 1
      
   Next l
 






Similar Topics