umbrella of Urban Heat Island (UHI) and I am going to try to separate them out in order to give you a sense of the current capabilities in LB+HB.
1) UHI as defined as a recorded elevated air temperature in an urban area:
If you have access to epw files for both an urban area and a rural area, you can use Ladybug to visualize and deeply explore the differences between the two weather files. Ladybug is primarily a tool for weather file visualization and analysis and it can be very helpful for understanding the consequences of UHI on strategies for buildings or on comfort. This said, if you do not have both rural and urban recorded weather data or you want to generate your own weather files based on criteria about urban areas (as it sounds like you want to do), this definition might not be so helpful.
2) UHI defined by air elevated air temperature but viewed as a computer model-able phenomenon resulting primarily from urban canyon geometry, building materials, and (to a lesser degree) anthropogenic heat:
This definition seems to fit more with they type of thing that you are looking for but it is unfortunately very difficult and computationally intensive such that we do not currently have anything within Ladybug to do this right now. I can say that the state-of-the art for this type of modeling is an application called Town Energy Budget (TEB) and this is what all of the advanced UHI researches that I know use (http://www.cnrm.meteo.fr/surfex/spip.php?article7). Unfortunately for those trying to use it in professional practice, it can take a while to get comfortable with it and it currently runs exclusively on Linux (this does mean that it is open source, though, and that you can really get deep into the assumptions of the model). A couple years ago, a peer of mine translated almost all of TEB into Matlab language making it possible to run it on Windows if you have Matlab. He wrapped everything together into a tool called the Urban Weather Generator (UWG), which can take an epw file of a rural area and warp it to an urban area based on inputs that you give of building height, materials, vegetation, anthropogenic heat, etc. I would recommend looking into this for your project, although, bear in mind that is it not open source like the original TEB tool and that you may need to get a (very expensive) copy of MATLAB (http://urbanmicroclimate.scripts.mit.edu/uwg.php).
3) UHI as defined by a thermal satellite image of an urban area depicting an elevated average radiant environment that reaches a maximum a the city center and changes by land use:
This is the definition of UHI that I am most familiar with and was the basis of much of my past research. I feel that it is also a definition of UHI that is a bit more in line with where a lot of contemporary UHI research is headed, which is away from the notion of UHI as a macro-scale meteorological phenomena that is averaged as an air temperature over a huge area towards one that accepts that different land uses have different microclimates and (importantly) different radiant environments. While the air temperature difference between urban and rural areas usually does not change more than 1-4 C, the radiant environment can be very different (on the order of 10-15 C differences). The best way to understand UHI in this context is with Thermal satellite images, for which there is ha huge database of publicly available data on NASA's glovis website (http://glovis.usgs.gov/) or their ECHO website (http://reverb.echo.nasa.gov/reverb/#utf8=%E2%9C%93&spatial_map=satellite&spatial_type=rectangle). I tend to use thermal data from LANDSAT 5-8 and ASTER satellites in my research. Unfortunately, there is a lot f bad data with a lot of cloud cover mixed in with the really good stuff and it can take some time to find good images. Also, there aren't too many programs that read the GeoTiff file format that you download the data as. I know that ArcGIS will read it, a program called ENVI will read it (I think that the open source QGIS can also red it). I have plans to write a set of components to bring this type of data into Rhino and GH (I may get to it a few months down the line).
4) UHI as a computer model-able notion of "Urban Microclimate" with consideration of local differences and the local radiant environment:
This is where a lot of my research has lead and, thankfully, is an area that Honeybee can help you out a lot with. EnergyPlus simulations can output information on outside building surface temperatures and these can be very helpful in helping get a sense of the radiant environment around individual buildings. Right now, I am focusing just on using this data to fully model the indoor environments of buildings as you see in this video:
https://www.youtube.com/watch?v=fNylb42FPIc&list=UUc6HWbF4UtdKdjbZ2tvwiCQ
I have plans to move this methodology to the outdoors once I complete this initial application to the indoors. For now, you can use the "Surface result reader" and the "color surfaces based on EP result" components to get a sense of variation in the outside temperature of your buildings.
I hope that this helped,
-Chris
…
ce issue with Rhino and shouldn't make an issue with EnergyPlus but just to have cleaner geometries, I untrimmed base surfaces so zones are closed brep now.
I also noticed that when you are adding multiple openings to a surface, the surface doesn't show-up in the output of createHBZoneFromHBSurfaces. The surfaces are there though and show up once you explode the zone! Again should be a tolerance issue for join. I need to take a closer look to both of these.
Also, in a number of the zones you had wall surfaces connected to createZoneFromHBSurfaces both before and after adding glazing. I removed parent surfaces so you don't end up having duplicate surfaces.
Back to adjacency which was your question, the issue happens since you have couple of zones with the same name so component was assuming them to be the same zone so it wouldn't solve the adjacency (Yes! it shouldn't. That was a bug which is fixed now). I changed the names and now it should find the surfaces that you are looking for.
Moreover, once you solve the adjacency, next solveAdjacency won't overwrite the BC unless you set remCurrentAdj to True.
Mostapha…
ey eventually recover and you can continue to working normally. This however is not very practical...
(Additional information: We have a virtualized Windows SPS environment, might this be the problem? Locally - on my hard drive - it works fine.)
Futhermore we've discovered the following bug/feature:
We export a cluster and reference it back into our .gh file, then copy the .ghcluster file to a different location and rename the copy (without opening or changing it), then also reference the copied version back into the .gh file. Now Grasshopper shows two clusters with two different file paths, but claims that they both are the same ("this cluster occurs twice in this document"). If I double click one of them, make a change and save, both clusters get changed, even though they are separate .ghcluster files.
This would follow the logic that David laid out in this entry (http://www.grasshopper3d.com/page/clusters09), that GH identifies a cluster not by its file name or location but by its internal ID.
An addition we would very much appreciate for the next GH update, would be the option to right click a referenced cluster and then not only be able to "update" it but to also to "relink" it to a new or different source.
Right now you have to rename or delete the .ghcluster file in order to relink a cluster via the update option. You can also overwrite the old cluster und update. However, sometimes we want to keep the old version or disentangle one of a clusters many instances and relink just one, with out loosing its various inputs and outputs by referencing the new version and reconnecting it.
Thanks, BB.…
tunities offering new tools and ways to understand dataflow, performance analysis, logic constructions, etc. Over that statement, I've always observed that a definition is full of information at component level or small groups, but that informed-user-feeling disappears exponentially while you zoom out an get a more general picture of a big definition (small definitions are not a problem due to the good level of information supplied at that zoom factor).
So I though, why not to use this graphic potential to lead to a more complete data representation at low zoom factors in big/very big definitions? Have you ever noticed how annoying is to review big definitions captures printed in A1 project panels? These captures lack any kind of useful information (even if you are an expert in GH)...you can only conclude looking at them how organized or well planed was the definition coding process...but nothing else (not really, you can conclude other stuff, but not at the level that you could expect from a graphic-centric coding tool). Some users has invented ways to give more data to third-person users/tutors...: using panels with text scaled up, using scribble components, importing drawings from rhino...is even more frustrating if you want to explain how the definition works using one of those captures...there are not landmarks, etc to support your speech.
All this lead us to include certain components search (by name, plugin, tab...) into our mapping tool. Could be nice to be able to stack several layers of information visually, and it could lead to a better understanding on GH definitions as a whole and not as small pieces linked together.
Sorry for the big "tocho"...like we say in Spanish.
By the way, the histogram thing sounds great :D…
Added by Ángel Linares at 5:36am on November 6, 2015
uld draw, lets say opening locations which would then trigger certain code. Its fairly easy to convert formating, a cell with a certain color, to code, so in a way I would be using excel as a super basic cad program to manage lists of data. In order to do this I need to be able to call some Excel commands from Rhino and to add some functionality to LAN's rhino to excel script (http://www.livearchitecture.net/archives/1516) I would like to be able to get the Ubounds and dimension of an array or a list. . . ie somehow get the equivelenat number of rows and columns of an incoming list of data and then use this to generate some graphics in excel but . . . . It seems that the sytax for excel Vb script via interoperability
marshaling is a bit different:1)I can not use
the set command ie Set range 2) it does not allow me to use the typical excel
syntax such as:
Worksheets("Sheet1"). Range("A1:D4").BorderAround
ColorIndex:=3, Weight:=xlThick
I get the following errors
Error: Method arguments must be enclosed in parentheses. (line 114)
Error: Name 'xlThick' is not declared. (line 114)
Is their an alternate way to write the Excel commands? Or is there something I need to do in Rhino? Any advice would be appreciated.
Best,
Ben…
Added by Ben Fortunato at 11:10am on February 27, 2010
e design intent, but this is what Inventor is good at. The way it packages bits of 'scripted' components into 'little models' that can be stored and re-assembled is central to MCAD working. The big speed/usability advantage for the user that apps like Inventor provide is: All the defining, handling, assembling/gluing to the adjacent components is done as part of its 'main loop' with all the hooks that can cater to user interaction, ie traditional modeling. I guess one example of this is how Revit handles the placing of Adptive Components. AC's (and GC's GFT's) is pretty much a copy of Catia PowerCopies (which are probably a copy of something else). When placed, the AC's input points are transferred one by one to the cursor for the user to interactively place them. When copied, it tries to keep the same inputs, while changing its position/parameters. This saves a lot of time/nerves.
Catia, OTOH, is still thinking in terms of scripting and looks for matching property names, or uses a script to match strings, that nearly match. Sure, sometimes, this is unavoidable, but I think that there is a lot of room for incorporating a more traditional 'event-based' interface or 'wrapper' around the scripted components.So much is scripted in GH, maybe it should also be possible to script/define/constrain/assist the placement/gluing of the results? An example of this is how Modo's Toolpipe works. The Toolpipe is a simple tool to record the active selection, snap/alignment/working plane, tool settings for re-use. I could see the user benefitting if the GH component was aware of the app's 'state' when placing/assembling components.
Also, a lot of simple things could be 'modeled' first and translated into scripted form if GH could read the active workplane, snap settings etc. Draw first, convert to hand-scripted script later?Columns: Looking at your description, the vertical elements were modeled in Rhino, and referenced in GH? 5hrs to get some points on the lines? And using Excel as the design table? I think this could be 'drawn' and constrained in Inventor in a lot less time. I know the GH model would have a lot of flexibility, but in this case, what can you do with it that wasn't provided by an Inventor model? The other thing that MCAD apps like Inventor have, is the 'structured' interface that offers up all that setting out information like the coordinate systems, work planes, parameters etc in a concise fashion in the 'history tree'. This will translate into user speed. GH's canvas is a bit more freeform. I suppose the info is all there and linked, so a bit of re-jigging is easy. Also, see how T-Flex can even embed sliders and other parameter input boxes into the model itself. Pretty handy/fast to understand, which also means more speed.Would love to understand what you did by sketching.Starting point: I think we are talking across purposes. AFAIK, the solving sequence of GH's scripted components is fixed. It won't do circular dependencies... without a fight. The inter-component dependencies not 'managed' like constraints solvers do for MCAD apps.
With a manager, If one of the beams is connected to the column, changes in either component would trigger changes in the other to preserve the connection, regardless of the creation history. In GH, the dependencies are fixed, and the connection points would probably need to be defined independently, and placed 'upstream' of both elements. This makes editing laborious... but DAG processing is a lot quicker than constraints solving. Switching direction seems to be possible in the animation world. Maya etc have IK/FK switching, which seems to be able to reverse the solving direction on demand. Not sure how or whether the rig is scripted.…
. From the Thermal Comfort Indices component, Comfort Index 11 (TCI-11):MRT = f(Ta, Tground, Rprim, e)
with:- Ta = DryBulbTemperature coming from ImportEPW component- Tground = f(Ta, N) where N comes from totalSkyCover input. Tground influences the long-wave radiation emitted by the ground in the MRT calculation.- Rprim defined as solar radiation absorbed by nude man = f(Kglob, hS1, ac)- ac is the clothingAlbedo in % (bodyCharacteristics input)- I can't find any definition in the code of Kglob and hS1. Could you tell me please what are those values referencered to? --> probably the globalHorizontalRadiation but how?- e = vapour pressure calculated from Ta and Relative Humidity input
Do you agree that in this case the MRT does not depend on these inputs: location, meanRadiantTemperature, dewPointTemperature and wind speed?It does not depend neither on the other bodyCharacteristics like bodyPosture, age, sex, met, activityDuration...?
MRT calculated by the TCI-11 method is the mean radiant temperature of a vector pointing vertically with a sky view factor of 100%?For ParisOrly epw,
2. From the SolarAdjustedTemperature component (that seems to be more used for the UTCI calculation examples on Hydra compared to TCI-11).
In contrast to the TCI-11, this component distinguishes diffuse and direct radiation and contextualizes the calculation thanks to _ContextShading input, right? It can also be applied to a mannequin thanks to the CumSkyMatrix and thus evaluate the dishomogeneity of radiation exposure.This component seems not to consider the influence of vapour pressure on the result --> is it then more precise to put the MRT output (from the TCI) as an input of meanRadTemperature for SolarAdjustedTemperature?The default groundReflectivity is set to 0.25 --> is GroundReflectivity taken into account in the Tground or MRT calculation in the TCI component? If yes, what is the hypothesised groundReflectivity?The default clothing albedo of 37% (TCI-11 bodyCharacteristics) corresponds to Clothing Absorptivity of 63%?
If the CumSkyMatrix input is not supplied, I get 9 results for the mannequin --> where are those points/results coming from?
If the CumSkyMatrix input is supplied,I suppose the calculation of the 482 results correspond to a calculation method similar to the radiation analysis component that is averaged over the analysis period. Right?But I don't understand why the mannequin is composed of 481 faces and meshFaceResult gives 482 results.
Finally, what is the link between the MESH results, the solarAdjustedMRT and the Effective Radiant field ? Is there a paper to have a detailed explanation of the method?
3. Here are some results for the ParisOrly energyplus weather data. You can find here attached the grasshopper definition.There is no shading in this simulation and the result coming from the ThermalComfort indices for MRT is very different compared to the solar adjusted MRT.Why such a big difference and which of the result should be plugged into the UTCI calculation component?
Results for ParisOrly.epwM,D,H:1,1,12
Ta : 6.5°Crh: 100%globalHorizontalRadiation: 54 Wh/m2totalSkyCover: 10MRT (TCI-11): 1.2°C
_CumSkyMtxOrDirNormRad = directNormalRadiation : 0 Wh/m2diffuseHorizontalRad: 54 Wh/m2_meanRadTemp = TasolarAdjustedMRT: 10.64°CMRTDelta: 4.14°C
_CumSkyMtxOrDirNormRad = CumulativeSkyMtxdiffuseHorizontalRad: 54 Wh/m2_meanRadTemp = TasolarAdjustedMRT: 10.47°CMRTDelta: 3.97°C
_CumSkyMtxOrDirNormRad = CumulativeSkyMtxdiffuseHorizontalRad: 54 Wh/m2_meanRadTemp = MRT (TCI-11)solarAdjustedMRT: 5.17°CMRTDelta: 3.97°C
Thanks a lot for your helpRegards,
Aymeric
…
nputs to run (please refer to the image)
Currently, here is how I set the data:
protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager) { //Create default size
double defaultBaySize = 0; pManager.AddTextParameter("LotLib", "Llib", "Lot Library", GH_ParamAccess.tree); pManager.AddCurveParameter("BoundaryCrv", "BC", "Boundary Input", GH_ParamAccess.list); pManager.AddIntegerParameter("Direction", "D", "Direction of gridLines", GH_ParamAccess.item, 0); pManager.AddNumberParameter("CCsize", "S", "Distance from column to column", GH_ParamAccess.item, defaultBaySize); pManager.AddCurveParameter("GridCrv", "GC", "Take in curves input for gridlines", GH_ParamAccess.list);
}
protected override void SolveInstance(IGH_DataAccess DA) {/* Setup */ GH_Structure<GH_String> LotLib = new GH_Structure<GH_String>(); DA.GetDataTree(0, out LotLib); List<Curve> BoundaryCrv = new List<Curve>(); if(!DA.GetDataList(1, BoundaryCrv)) { return; } int Direction = 0; DA.GetData(2, ref Direction); double CCsize = 0; DA.GetData(3, ref CCsize);
List<Curve> GridCrvs = new List<Curve>(); DA.GetDataList(4, GridCrvs); if (!DA.GetDataList(4, GridCrvs)) { return; }}
Is there a way can set data in the way if the component does not receive inputs for BoundaryCrv but only GridCrvs, the BoundaryCrv List will empty.
Thank you very much …