Attribute VB_Name = "Module2"

'Author: Malte Lutz
'Date: 29.01.2026

Sub MachLearnMod(entry As ChemCADEntry)

'Extracting ER from simulation
Dim uopH As UnitOpInfo
Dim unitOpSpecER(1 To 100) As Single
Dim ER As Single

Set uopH = entry.GetUnitOpInfo
check = uopH.GetUnitOpSpecByID(208, unitOpSpecER)
ER = unitOpSpecER(17)

'Extracting reactor air inlet temperature from simulation
Dim unitOpSpecTair(1 To 20) As Single
Dim Tair As Single

check = uopH.GetUnitOpSpecByID(205, unitOpSpecTair)
Tair = unitOpSpecTair(4)
Tair = (Tair - 491.67) * (5 / 9)

'Preparation of inputs for transfer to Python ML model
Dim pyScript As String
Dim command As String

argument = CStr(ER) & " " & _
           CStr(Tair)
           
pyScript = "C:\Users\User1\Documents\Folder1\ML_model.py"
command = "python """ & pyScript & """ " & argument

'Execution of the Python script via the Windows Script Host
Dim shell As Object
Dim exec As Object

Set shell = CreateObject("WScript.Shell")
Set exec = shell.exec(command)

'Extracting the ML outputs of the Python script
Dim output As String
Dim values() As String
Dim XR1 As Double, XR2 As Double, XR3 As Double, XR4 As Double, XR5 As Double

output = exec.StdOut.ReadAll
values = Split(Trim(output), ";")

If UBound(values) = 5 Then
    XR1 = CDbl(values(1))
    XR2 = CDbl(values(2))
    XR3 = CDbl(values(3))
    XR4 = CDbl(values(4))
    XR5 = CDbl(values(5))
Else
    MsgBox "Error"
End If

'Sending the outputs (conversion rates) to the simulation
check = uopH.PutEquilibriumReactionPar(209, 1, 6, 7, XR1)
check = uopH.PutEquilibriumReactionPar(209, 2, 6, 9, XR2)
check = uopH.PutEquilibriumReactionPar(209, 3, 6, 2, XR3)
check = uopH.PutEquilibriumReactionPar(209, 4, 6, 2, XR4)
check = uopH.PutEquilibriumReactionPar(209, 5, 6, 8, XR5)

End Sub







