Adaptive Comfort recipe - failed to link CFD wind data

Sorry I have to correct my last entry. I found out, that even there´s no Error for PET comfort recipe I think it does not apply the wind speed to the microclimate map analysis.
When I plug in just one constant value the results are different to a data tree with the same value but the number of branches equal to the mesh.

Here the slightly changed file.
180517_Indoor_Microclimate_Map_ERROR_windData2.gh (773.2 KB)

Does someone have an idea, what I´m doing wrong?

Thanks a lot!

Cheers,

David

Hi @davidbriels,

I created a wind file for the values of 10 m/s. wind file
Using this file gives the results similar to when you supply only one wind velocity. You can supply this .csv to the PET. This wind file is basically a file where the number of columns are equal to the number of the test points and the number of rows are 8760. In your case, all the values are 10 m/s.

Hi @devang,

Thanks a lot for your help. Yes I was aware of the workflow with csv files but couldn´t manage it. May I ask how you created the csv file, because always when I was trying to handle with data in grasshopper with 8760 rows and >3000 columns it crashed. Do you have a python script for that?

Thanks!

David

wind file.py (353 Bytes) Here’s the file. Hope this helps.

I have invited @chris to this topic. I am sure he will have something to add to this thread.

Hi I keep forgetting. When I get home I will send the definition with the component that will do this for you very efficiently.

Kind regards,
Theodore.

1 Like

Hi @TheodorosGalanos,

Thank you so much! This will help me a lot! I appreciate that!
I´m trying a quite similar workflow for my Thesis like you and Chris did, very impressive by the way.

Thank you so much,

David

@TheodorosGalanos and I have some scripts that we were using to build the annual CSV from another CSV of wind factors for each of the points. I’ll share this once I get the chance to dig through my records or @TheodorosGalanos beats me to it.

Actually, it was quicker to find than I thought. Here’s the GH file that I mentioned:
https://drive.google.com/file/d/0Bz2PwDvkjovJYkxHTUdIUVVlaEU/view?usp=drivesdk

1 Like

Hi @chris,

I would really appreciate if you could take a look at the file uploaded @davidbriels and check why the results are different when he is supplying the same wind velocity as a tree. While generating a .csv wind file is the best way to supply wind velocity as you have already mentioned on the input description, I believe a lot of people would do what @davidbriels has attempted here.

Thanks in advance!

Hi @devang and @chris ,

thanks again for your help. I managed to set up my workflow right now.
But there´s still some errors with the Comfort Recipes when using a CSV as input for the wind speed.
For UTCI and PET it does work, but for AD and PMV it doesn´t. Could this be a bug in these two components?

I also tried to look at the codes and found some differences between them, but I´m unfortunately not familiar enough with this to find out what´s exactly wrong.

But at first sight I found these differences:

UTCI:

            #See if the data is hourly.
        if simStep == 'hourly' or simStep == 'Hourly': pass
        else:
            dataCheck6 = False
            warning = "Simulation data must be hourly."
            print warning
            ghenv.Component.AddRuntimeMessage(w, warning)

AD

missing

UTCI

#Run all of the EnergyPlus data through the check function.
if outdoorIsThere == False and srfIndoorTemp_.BranchCount > 0 and zoneAirTemp_.BranchCount > 0  and zoneAirFlowVol_.BranchCount > 0 and zoneAirHeatGain_.BranchCount > 0:
    #Indoor only calculation and everything is good.
    checkData1, checkData2, airTempUnits, airTempDataHeaders, airTempDataNumbers, analysisPeriod = checkCreateDataTree(zoneAirTemp_, "zoneAirTemp_", "Air Temperature")
    checkData3, checkData4, srfTempUnits, srfTempHeaders, srfTempNumbers, analysisPeriod = checkCreateDataTree(srfIndoorTemp_, "srfIndoorTemp_", "Inner Surface Temperature")
    checkData21, checkData22, flowVolUnits, flowVolDataHeaders, flowVolDataNumbers, analysisPeriod = checkCreateDataTree(zoneAirFlowVol_, "zoneAirFlowVol_", "Air Flow Volume")
    checkData23, checkData24, heatGainUnits, heatGainDataHeaders, heatGainDataNumbers, analysisPeriod = checkCreateDataTree(zoneAirHeatGain_, "zoneAirHeatGain_", "Air Heat Gain Rate")
    checkData17, checkData18, relHumidUnits, relHumidDataHeaders, relHumidDataNumbers, analysisPeriod = checkCreateDataTree(zoneRelHumid_, "zoneRelHumid_", "Relative Humidity")
    outdoorClac = False
    checkData29, checkData30, outSrfTempUnits, outSrfTempHeaders, outSrfTempNumbers = True, True, 'C', [], []
elif srfIndoorTemp_.BranchCount > 0 and zoneAirTemp_.BranchCount > 0  and zoneAirFlowVol_.BranchCount > 0 and zoneAirHeatGain_.BranchCount > 0:
    #All inputs are provided and it doesn't matter whether the indoor/outdoor is there.
    checkData1, checkData2, airTempUnits, airTempDataHeaders, airTempDataNumbers, analysisPeriod = checkCreateDataTree(zoneAirTemp_, "zoneAirTemp_", "Air Temperature")
    checkData3, checkData4, srfTempUnits, srfTempHeaders, srfTempNumbers, analysisPeriod = checkCreateDataTree(srfIndoorTemp_, "srfIndoorTemp_", "Inner Surface Temperature")
    checkData21, checkData22, flowVolUnits, flowVolDataHeaders, flowVolDataNumbers, analysisPeriod = checkCreateDataTree(zoneAirFlowVol_, "zoneAirFlowVol_", "Air Flow Volume")
    checkData23, checkData24, heatGainUnits, heatGainDataHeaders, heatGainDataNumbers, analysisPeriod = checkCreateDataTree(zoneAirHeatGain_, "zoneAirHeatGain_", "Air Heat Gain Rate")
    checkData17, checkData18, relHumidUnits, relHumidDataHeaders, relHumidDataNumbers, analysisPeriod = checkCreateDataTree(zoneRelHumid_, "zoneRelHumid_", "Relative Humidity")
    checkData29, checkData30, outSrfTempUnits, outSrfTempHeaders, outSrfTempNumbers, analysisPeriod = checkCreateDataTree(_srfOutdoorTemp, "__srfOutdoorTemp", "Outer Surface Temperature")
    outdoorClac = True
elif outdoorIsThere == True:
    #Do a check to see if all of the zone lists are empty (except for the last one, which contains outdoor info.
    allListsEmpty = True
    for zoneList in testPtViewFactor[:-1]:
        if zoneList == []: pass
        else:allListsEmpty = False
    if allListsEmpty == True:
        #The user has input only outdoor srf temperature and only an outdoor mesh.  We can run the calculation just for the outdoors.
        checkData29, checkData30, outSrfTempUnits, outSrfTempHeaders, outSrfTempNumbers, analysisPeriod = checkCreateDataTree(_srfOutdoorTemp, "__srfOutdoorTemp", "Outer Surface Temperature")
        outdoorClac = True
        checkData1, checkData2, checkData3, checkData4, checkData21, checkData22, checkData23, checkData24, checkData17, checkData18 = True, True, True, True, True, True, True, True, True, True
        emptyLists = testPtViewFactor[:-1] + [[]]
        airTempDataHeaders, airTempDataNumbers, srfTempHeaders, srfTempNumbers, flowVolDataHeaders, heatGainDataHeaders, relHumidDataHeaders, relHumidDataNumbers = emptyLists, emptyLists, emptyLists, emptyLists, emptyLists, emptyLists, emptyLists, emptyLists
        numberLists = []
        for zoneCount, zoneList in enumerate(emptyLists):
            numberLists.append(range(len(outSrfTempNumbers[0])))
        flowVolDataNumbers, heatGainDataNumbers = numberLists, numberLists
        flowVolUnits = "m3/s"
        heatGainUnits = "W"
        airTempUnits = srfTempUnits = "C"
        relHumidUnits = "%"
    else:
        checkData1, checkData2, checkData3, checkData4, checkData21, checkData22, checkData23, checkData24, checkData17, checkData18 = False, False, False, False, False, False, False, False, False, False
        warning = 'If you have connected a viewFactorMesh that includes regions on the indoors, you must connect up energy simulation data for zoneAirTemp, srfIndoorTemp, zoneAirFlowVol, zoneAirHeatGain, and zoneRelHumid.'
        print warning
        ghenv.Component.AddRuntimeMessage(gh.GH_RuntimeMessageLevel.Warning, warning)
else:
    checkData1, checkData2, checkData3, checkData4, checkData21, checkData22, checkData23, checkData24, checkData17, checkData18 = False, False, False, False, False, False, False, False, False, False
    warning = 'If you have connected a viewFactorMesh that includes regions on the indoors, you must connect up energy simulation data for zoneAirTemp, srfIndoorTemp, zoneAirFlowVol, zoneAirHeatGain, and zoneRelHumid.'
    print warning
    ghenv.Component.AddRuntimeMessage(gh.GH_RuntimeMessageLevel.Warning, warning)

AD

    #Run all of the EnergyPlus data through the check function.
checkData1, checkData2, airTempUnits, airTempDataHeaders, airTempDataNumbers, analysisPeriod = checkCreateDataTree(_zoneAirTemp, "_zoneAirTemp", "Air Temperature")
checkData3, checkData4, srfTempUnits, srfTempHeaders, srfTempNumbers, analysisPeriod = checkCreateDataTree(_srfIndoorTemp, "_srfIndoorTemp", "Inner Surface Temperature")
checkData21, checkData22, flowVolUnits, flowVolDataHeaders, flowVolDataNumbers, analysisPeriod = checkCreateDataTree(_zoneAirFlowVol, "_zoneAirFlowVol", "Air Flow Volume")
checkData23, checkData24, heatGainUnits, heatGainDataHeaders, heatGainDataNumbers, analysisPeriod = checkCreateDataTree(_zoneAirHeatGain, "_zoneAirHeatGain", "Air Heat Gain Rate")

Here my file, where the error occures and a screenshot of it. Sorry it is still pretty messy.

180606_ComfRecipe_Error_CSV.gh (1.1 MB)

https://syncandshare.lrz.de/dl/fiGqmNRorQHXxeroqgTJveZn/THESIS_PtWindSpeed.csv

Thank you so much!

Cheers David

Hi @davidbriels,

On AD and PMV components, do the following please

right click on windSpeed_ > Type hint > ghdoc

1 Like

I admire the discipline in creating the definition. Sets an example. :ok_hand:

2 Likes

Hi @devang,

thank you so much. It seems to work now. Amazing!

Thank you all for your support!

Cheers

David

1 Like

@devang and @davidbriels ,
I am sorry for being so late to re-join the conversation. Thank you for finding this issue and I just changed the type hint on the AD and PMV recipes:

And I agree that is the most disciplined gigantic GH file that I’ve ever seen!
Do we sill have a discrepancy between the tree input and the csv input? If so, I’ll investigate.

Hi @chris,

thanks for adapting the changes and for the compliment, hopefully the supervisors of my Thesis are thinking the same way. :smile:

I tried to check and I think there´s still something not completely working well. With a csv input it works, also with a single value, but not with a data tree. Or maybe I´m still doing something wrong.

Sorry this time the example file is not organised at all :wink:

180610_Indoor_Microclimate_Map_ERROR_windData2.gh (742.9 KB)
https://syncandshare.lrz.de/dl/fiSQenSWN3Bgf3r6Ds1a9ndi/wind.csv

Thanks

David

1 Like

There’re lots of nice hints in that file David. Thank you so much for sharing the file. Thanks to you, it’s much more easier to deal with similar problems.

Dear @davidbriels,

Thanks for sharing your files. Actually, I’ve been dealing with the same csv issue. I was hoping to look at your csv file, however, it is no more accessible.
May I kindly ask for your wind.csv file?

Thanks in advance,
Best,
Gunsu

Dear @gunsumerin,

I´m so sorry I didn´t rejoin the conversation earlier! In case it still helps someone out there, here´s the csv file once more.

Best, David