Developing a component for PCMs in HB, I need help + other questions

Hi Mostapha, Chris and other developers!

Basically, I need help with how I should proceed from here…

I’ve already created the main component that concatenates the strings for the “MaterialProperty:PhaseChange” class, I think that should be majority of what’s necessary.

I have no idea though how to go about adding this to the EPLibrary. I’ve been referencing through the code of HB_HB based on some components but I can’t seem to get how the Library works and how this new feature would fit in.

I went ahead and added some code into the main HB_HB component


under the EPObjectsAux.addEPObjectToLib method, i added “MaterialProperty:PhaseChange” : “honeybee_PhaseCHange” to HBLibrarieNames dictionary and some other things within the EPObjectsAux class, I bet that’s not how it works though

I’m also not sure if the remaining classes (


) should be written as a separate component… How do you usually do these things? It’d probably be impractical to have one component per class right? Ultimately, my goal is to enable parametric simulations for PCMs available in HB.

Also, do I need to edit some things within Run EP Simulation?

I noticed WriteIDF has methods such as EPHeatBalanceAlgorithm and EPHeatBalanceAlgorithm, although it seems they’re turned off at the moment

Just to clarify… when the RunEP component writes the idf file… the order the classes are written doesn’t matter right? i.e. SimulationControl can go first, it can also go last?

Thank you in advance! (453 KB)

Hi Pin, I will hopefully get back to you with more detailed answer soon but for now, 1- the objects that you’re listed, if the values are not assigned EP will use the default values. 2- The order in an idf file doesn’t make a difference.

Hi Mostapha, I’ll be back in a day or two. In the meantime I’ll leave this updated definition of my attempt. Looks like the simulation took off but the results were not what I expected (I expected the surface temperatures to vary depending on the melting point of the PCM but they didn’t, i.e. exactly the same values were popping up even with different melting points). I definitely went wrong somewhere. (also tried asking at unmet ///…). (543 KB)

Hi Pin, very nice work with these components, I was looking into PCM-s lately as well, this makes it much easier than manually with “additional strings”, and setting heatbalance algorithm.

I noticed in your example, that your enthalpy values were very low, I think you meant kJ/kg, when the input is J/kg? (that is x1000 ) when I checked the required cooling, there was definitely about 5-7% change, depending on the phasechange C setpoint, with the values like 50000 J/kg at 20C etc , see page 47 here:…;

Which version of honeybee&ladybug did you use? I get error reports of version mismatch with 0.60 hb and 0.63 lb, if I try to add certain components.

Icant download this file.i need a component for distribute pcm in honeybee and ladybug.please help me.

1 Like

See my answer in your other thread here:

More specifically for this thread:

HI pin
Can we use this component instead of writing the features in the panel to define the pcm material?

1 Like

Hi sepideh,

Pin is my old account from the Grasshopper forums.

I’m not sure what you mean but, if you mean directly using the component without plugging the info into additionalStrings from Run Energy Simulation?

I’m afraid not, these components only output strings and not Honeybee Objects. My components only automated the creation of the strings you’d find in an IDF file (

For that workflow, I would have had to understand more of the internals of the Honeybee legacy code, which ultimately, I didn’t have time to do as my focus shifted to studying the [+] versions.

I think these components still work though, you might have to change lines 69 and 70 for example from #compatibleHBVersion = VER 0.0.56\nFEB_01_2015 to #compatibleHBVersion = VER <version you're currently using> since @RolandNemeth might have had problems with compatibility.

And as Roland pointed out, my enthalpy values were too low.

1 Like

HI Spencer,
I want to put a few blinds in between the two shells. How can I do to define these blinds with pc material between the two shells ?
I defined two zones that the second zone is located in front of the first zone and I want the blinds in this zone.
i’ll appreciate you if helping me.
thanks a lot


I’m not sure I can help you with this because I haven’t tried using blinds in E+ yet.
My guess however is that you might have to reference the material used on the blinds inside MaterialProperty:PhaseChange.

I don’t know if this is possible though because I haven’t tried PCMs on dynamic elememts, only static ones (walls, roofs, etc.), and I’m not sure if E+ supports that.

I’ll see if I can figure it out but I think your best bet would be to wait for the more experienced users to chime in.



Thank you for your time

@Spencer330 Hi Spencer,
I was looking around in the Forum because i want to run a E+ simulation with CondFD .
Trough your Phase changing gh File i managed to set the HeatTransferAlgorithm to CondFD thanks for that :slight_smile: . My question is do you know how to get the output values for the inner Nodes of the Construction ?