I'm having the similar issues as reported in this post , with errors using Automation2() and then it telling me that it could not load System.Windows.Forms when I tried Automation3()
I am frankly not sure if I should be using Python, or IronPython, whether the version of Python matters, or whether there are other libraries / frameworks I should have also installed
It would be really helpful for me if someone could outline how someone starting from a fresh system (no DWSIM, no Python, no NET frameworks etc) needs to set things up to get this working
BTW - I'm on a Win11 system, and the error message(s) I have been getting are when trying to run the below starter script;
Thanks in advance
Mark
frompythonnetimportloadload("coreclr")importclr# Load the DWSIM automation assemblyclr.AddReference('DWSIM.Automation')dwsimpath="C:\\Path\\to\\DWSIM\\"clr.AddReference(dwsimpath+"CapeOpen.dll")clr.AddReference(dwsimpath+"DWSIM.Automation.dll")clr.AddReference(dwsimpath+"DWSIM.Interfaces.dll")clr.AddReference(dwsimpath+"DWSIM.GlobalSettings.dll")clr.AddReference(dwsimpath+"DWSIM.SharedClasses.dll")clr.AddReference(dwsimpath+"DWSIM.Thermodynamics.dll")clr.AddReference(dwsimpath+"DWSIM.Thermodynamics.ThermoC.dll")clr.AddReference(dwsimpath+"DWSIM.UnitOperations.dll")clr.AddReference(dwsimpath+"DWSIM.Inspector.dll")clr.AddReference(dwsimpath+"System.Buffers.dll")# Import the necessary namespaces from DWSIMfromDWSIM.AutomationimportAutomation3#from DWSIM.Automation import Automation2defcalculate_mixture_density(pressure,temperature,co2_fraction,h2s_fraction):# Initialize DWSIM Automation Interfaceinterop=Automation3()#interop = Automation2()# Create a new material stream in DWSIMstream=interop.CreateMaterialStream()# Set the compounds to CO2 and H2Sstream.SetCompound("CarbonDioxide")stream.SetCompound("HydrogenSulfide")# Define the molar fractionsstream.SetMolarFraction("CarbonDioxide",co2_fraction)stream.SetMolarFraction("HydrogenSulfide",h2s_fraction)# Define the temperature (K) and pressure (Pa)stream.SetTemperature(temperature)stream.SetPressure(pressure)# Set the thermodynamic model to GERG2008 EOSstream.SetPropertyPackage("GERG2008")# Calculate propertiesinterop.CalculateAllProperties(stream)# Get the density of the mixturedensity=stream.GetDensity()# Release the COM objectstream.Release()returndensity# Example usagepressure=5000000# in Pascals (5 MPa)temperature=300# in Kelvinco2_fraction=0.7# 70% CO2h2s_fraction=0.3# 30% H2Sdensity=calculate_mixture_density(pressure,temperature,co2_fraction,h2s_fraction)print(f"Density of CO2 and H2S mixture at {pressure} Pa and {temperature} K is {density} kg/m³")
Last edit: Mark Burgoyne 2024-05-10
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks Daniel. When I use the Automation2(), I get the following;
NullReferenceException: Object reference not set to an instance of an object.
at DWSIM.Automation.Automation2..ctor() in C:\Users\Daniel\source\repos\DanWBR\dwsim\DWSIM.Automation\Automation.cs:line 135
at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
at System.Reflection.MethodBaseInvoker.InvokeConstructorWithoutAlloc(Object obj, Boolean wrapInTargetInvocationException)
And when I try the Automation3(), I get the following;
FileNotFoundException Traceback (most recent call last)
FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.
File name: 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
at DWSIM.FlowsheetBase.FlowsheetBase._Closure$__187-0._Lambda$__9()
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
The above exception was the direct cause of the following exception:
AggregateException Traceback (most recent call last)
Cell In[4], line 66
64 co2_fraction = 0.7 # 70% CO2
65 h2s_fraction = 0.3 # 30% H2S
---> 66 density = calculate_mixture_density(pressure, temperature, co2_fraction, h2s_fraction)
67 print(f"Density of CO2 and H2S mixture at {pressure} Pa and {temperature} K is {density} kg/m³")
Cell In[4], line 30, in calculate_mixture_density(pressure, temperature, co2_fraction, h2s_fraction)
27 def calculate_mixture_density(pressure, temperature, co2_fraction, h2s_fraction):
28 # Initialize DWSIM Automation Interface
29 #interop = Automation2()
---> 30 interop = Automation3()
32 # Create a new material stream in DWSIM
33 stream = interop.CreateMaterialStream()
AggregateException: One or more errors occurred. (Could not load file or assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.) (Could not load file or assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.) (Could not load file or assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.)
---> System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.
File name: 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
at DWSIM.FlowsheetBase.FlowsheetBase._Closure$__187-0._Lambda$__9()
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.WaitAllCore(Task[] tasks, Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.WaitAll(Task[] tasks)
at DWSIM.FlowsheetBase.FlowsheetBase.AddPropPacks() in C:\Users\Daniel\source\repos\DanWBR\dwsim\DWSIM.FlowsheetBase\FlowsheetBase.vb:line 3461
at DWSIM.Automation.Automation3..ctor() in C:\Users\Daniel\source\repos\DanWBR\dwsim\DWSIM.Automation\Automation.cs:line 244
at System.RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
at System.Reflection.MethodBaseInvoker.InvokeConstructorWithoutAlloc(Object obj, Boolean wrapInTargetInvocationException)
---> (Inner Exception #1) System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.
File name: 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
at DWSIM.FlowsheetBase.FlowsheetBase._Closure$__187-0._Lambda$__11()
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)<---
---> (Inner Exception #2) System.IO.FileNotFoundException: Could not load file or assembly 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'. The system cannot find the file specified.
File name: 'System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089'
at DWSIM.FlowsheetBase.FlowsheetBase._Closure$__187-0._Lambda$__12()
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)<---
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ok, after that I get a different error, and I also get the same missing attribute error when I try again with Automation2;
AttributeError Traceback (most recent call last)
Cell In[1], line 67
65 co2_fraction = 0.7 # 70% CO2
66 h2s_fraction = 0.3 # 30% H2S
---> 67 density = calculate_mixture_density(pressure, temperature, co2_fraction, h2s_fraction)
68 print(f"Density of CO2 and H2S mixture at {pressure} Pa and {temperature} K is {density} kg/m³")
Cell In[1], line 34, in calculate_mixture_density(pressure, temperature, co2_fraction, h2s_fraction)
31 interop = Automation3()
33 # Create a new material stream in DWSIM
---> 34 stream = interop.CreateMaterialStream()
36 # Set the compounds to CO2 and H2S
37 stream.SetCompound("CarbonDioxide")
AttributeError: 'Automation3' object has no attribute 'CreateMaterialStream'
Last edit: Mark Burgoyne 2024-05-11
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I'm having the similar issues as reported in this post , with errors using Automation2() and then it telling me that it could not load System.Windows.Forms when I tried Automation3()
I am frankly not sure if I should be using Python, or IronPython, whether the version of Python matters, or whether there are other libraries / frameworks I should have also installed
It would be really helpful for me if someone could outline how someone starting from a fresh system (no DWSIM, no Python, no NET frameworks etc) needs to set things up to get this working
BTW - I'm on a Win11 system, and the error message(s) I have been getting are when trying to run the below starter script;
Thanks in advance
Mark
Last edit: Mark Burgoyne 2024-05-10
what are the error messages?
Thanks Daniel. When I use the Automation2(), I get the following;
And when I try the Automation3(), I get the following;
try replacing
load("coreclr")
by
load("netfx")
Ok, after that I get a different error, and I also get the same missing attribute error when I try again with Automation2;
Last edit: Mark Burgoyne 2024-05-11
try following this gist: https://gist.github.com/DanWBR/fe979513ba32627b47b02888061b69f4
That seemed to work just fine, including creating the flow diagram image