at the same time just seems logical to me that a force would always seek the path of least resistance, so rather than making a 90 degree turn follow a more similar direction. The thought of separating stresslines into groups of tension and compression ist interesting from a design perspective. I wondered how tension and compression forces relate to the S1 and S2 lines, so what I did is pluging the outputs of P1 and P2 into the respective vector display for S1 and S2 and coloring the vectors blue for compression (negative values) and red for tension (positive values). So when you look at the upper side of the surface S1 (SC_02), Tensors along S1 show compression towards the middle and towards the supports Tension. However the Principal Stress Display of the Mesh Visualisation Component for the upper side shows it the other way round, again Red/ Tension and Cyan/ Compression as it says in your manual. Did I miss out on something ? When I look at the lower side (SC_03) I find it more or less matching up (I am just decerning between negative and positive values) so that might make the difference in the size of the compression area. So, does this mean that the S1 and S2 lines are related to the upper and lower side of the surface ? One beeing predominantely in compression(upper side) and one being stressed(lower side) ? That would also explain to me why S1 and S2 swap when you change the side of the surface. I am sorry, many questions... If you have time to explain, would be great. Also, maybe you have a book or article in mind which would explain those things more in depth....
Many thanks,
Philipp…
returned to GSA, it is solving. You might have to reset result scales using the GSA button.
Cheers,
Jon
Checking Input Data - this may take some time.
________________________________________
Data checks commenced at 23/08/2017 4:59:18 PM.
Checking input data for static analysis by GSS.
Shortest element (element 9) is 5 m long.Longest element (element 1) is 6 m long.
Data checks completed at 23/08/2017 4:59:18 PM. No errors or warnings found.
Analysis commenced at 23/08/2017 4:59:18 PM.
Analysis by Gss Static analysis
Initialising results modulesSolving for displacementsSolution statisticsSparse Parallel Direct 12 active nodes 14 active elements 2 analysis cases 24 degrees of freedom Minimum degree ordering 90 terms in stiffness matrix Maximum stiffness is 4.804e+009 at node 4 in direction z Minimum stiffness is 3.132e+008 at node 2 in direction yy Condition number of the stiffness matrix is ~ 5328. Maximum relative error in displacements will be 2.4e-10 percent. Factorization in 109 msSolving for element forces and reactionsCalculation completeAnalysis completed with no errors
Analysis completed at 23/08/2017 4:59:18 PM.Analysis time: 0.172 seconds
…
ted a picture of in your post. The reason is that sound has larger wavelengths than light.
With a light rendering model, energy can be said to reflect specularly, relative to their geometry, because the wavelength of light is inifinitesimally small relative to any object you might have modelled. With sound, energy may travel and reflect diffusely, or move around objects, depending on the scale of those objects. Think of the fundamental equation of frequency to wavelength - speed of sound = frequency X wavelength. Using that, you can see that a wave in the 125 hz octave is about as tall as a human being (or maybe a little taller) and would easily move around your body, not being reflected at all. A wave in the 1000 Hz. octave band is as big as your forearm, and might reflect specularly from your torso. A wave in the 4000 hz. octave band is about as long as your index finger, and might reflect off of your torso, or even your head.
Similarly, if you were to model the seats explicitly, it might be relatively accurate at very high frequencies (say 4000 hz. and above) but that is a very small part of the answer. Consensus in the field is that the most accurate way to model the seats is with a flat plane, raised to about shoulder height, and then with scattering coefficients applied to represent the varying effects of geometry on sound. I tend to use low coefficents below 250 hz. (say around 30%) and high coefficents above 250 Hz.(90%).
Absorption depends on the seat which was chosen. This is often a good area to use for a model calibration based on measured reverberation time.
Arthur…
ces are distorted (second). What is going on?
Surfaces in the second are a rhino cage edit of the surfaces in the first image. They were originally all closed polysrfs exploded just to input into grasshopper.
In the definition attached, each surface is compared to an original (its the small box in the far left of the top image) The point there is the ability to select for more than just the 6 faces of a cube, but find the closest match to more complicated inputs. In the second image, distorted surfaces are being compared to a distorted original.
If I have my math right, two parallel unitized normal vectors should have a dot product of 1, and the further away from 1 their dot product the further away from parallel, no? Why does it fail when I leave the comfy land of 90 degrees?…
Added by Peter Stone at 2:39pm on January 28, 2015
e to constrains, I HAVE to do it like this (I can't 3D print everything or opposite).
First
I have no idea how to make the panels, without so many duplicate Edges, Faces etc.
Second
I can't figure out how to align the triangle panels to fit in the construction, so it can be assembled ideally without glue. This problem is both conceptual (I can't figure out how to do it fiscally) and grasshoper-wise - I don't know how to organize data list and produce a global movement, so that the triangle parts do not intersect with each other, BUT intersect the 3d printed construction part (where they fit fix in or just fit and can be glued).
Triangles will be milled out from 3mm Plexiglas, BUT I will not have an option to mill at an angle, so only 90° edges.
3D printed parts will be executed by a high level production powder printer, so it should hold good.
Any ideas?
best,
cuki
…
File) 2. I have designed a curved Trichordal-Truss from one curve in Rhino.
The Truss is lying in the XY direction and the footer is placed on the zero point.
3. And now my problem:
I want to put the Truss-object on the feet, move 90°
(from the XY axis to Z axis, see sketch 1).
4. Then copy / move the truss to all 36-points of ellipse (see sketch 1).
5. Align the 36 trusses with the center of the triangle .
pointing at the center of the ellipse (see sketch 2).
6. Using a slider to change the position of the 36-Trusses at der ellipse.
Variable distance between Truss and ellipse (see sketch 3).
Thanks for you Answer.
Best regards
Noureddine…
multiply of variants from Galapagos, to have a chance for better analysis and comparability after. I also would like to use more then one solution in my design after.
In old topics i found kind of 3 solutions.
1.Change Galapagos to octopus ( what don t really want to do, i am kind of happy with Galapagos)
2. Use Slingshot! and MySQL Database ( it s look a little bit too complicated from the first view)
3. Use Colibri and Design Explorer Platform (looks kind of pretty way to solve my problem)
So i tried to add Colibri components to my definition , but have some mistake in the Colibri Aggregator after adding the Genome "An item with the same key already been added". I think it comes because for some steps i am using the "Gen Pool" and not a normal slider. Is it a way to connect Gen Pool and Colibri (i really prefer to have it, then a lot of sliders in some cases)?
And the second question (if i will get it solved with gen pool), could i somehow controll the recording process? For example i would likte to record only variants wit fitness over 90% or start recording just after 20. generation and record till the end?
I also opend for all other possibilities to reach the same goal (record/save/bake multiply variants from galapagos)
…
ace Syntax." eCAADe 2013 18 (2013): 357.
http://www.sss9.or.kr/paperpdf/mmd/sss9_2013_ref048_p.pdf
The measure Entropy is newer. I hereby explain it (from my PhD dissertation):
Entropy values, as described in (Hillier & Hanson, The Social Logic of Space, 1984) and specified in (Turner A. , “Depthmap: A Program to Perform Visibility Graph Analysis, 2007), intuitively describe the difficulty of getting to other spaces from a certain space. In other words, the higher the entropy value, the more difficult it is to reach other spaces from that space and vice-versa. We compute the spatial entropy of the node as using the point depth set:
(11)
“The term is the maximum depth from vertex and is the frequency of point depth *d* from the vertex” (ibid). Technically, we compute it using the function below, which itself uses some outputs and by-products from previous calculations:
Algorithm 4: Entropy Computation
Given the graph (adjacency lists), Depths as List of List of integer, DepthMap as Dictionary of integer
Initialize Entropies as List(double)
For node as integer in range [0, |V|)
integer How_Many_of_D=0
double S_node=0
For depth as integer in range [1, Depths[node].Max()]
How_Many_of_D=DepthMap.Branch[(node,depth)].Count
double frequency= How_Many_of_D/|V|
S_node = S_node - frequency * Math.Log(frequency, 2)
Next
Entropies [node] = S_node
Next
…
hreads where Thread I solves object A1 and Thread II solves object A2. As soon as A1 is completed, Thread I can move on to object B1 and as soon as A2 completes, Thread II can move on to object B3 (whichever comes first). When both A1 and A2 are complete, we can spawn a new thread (III) to take care of object B2.
If B2 completes before B3, then Thread III will terminate. If B3 completes before B2, then Thread II terminates. Whichever thread is last will pick up execution of object C3. And so on and so forth.
This sort of threading is actually not guaranteed to help much though, as it is likely that the bottleneck components in the network will still need to be handled by a single thread.
A more efficient solution would be to divvy up the execution per component to multiple threads. If you're trying to compute the Curve Closest Point for 10,000 points and your machine contains 4 cores, then we can assign 2,500 points to the first core, 2,500 points to the second core etc.
This approach will actually work when there's only a few bottleneck components and it also means the order in which components are solved is no longer important.
An even more fine-grained approach to threading would be to make the Curve Closest Point function in the Rhino SDK threaded. There's a lot of looping going on in any given Curve CP computation so the curve could be broken up into loose spans where each span is solved by a different core. Then the partial results get consolidated once all threads finish.
The benefit here is that it would be multi-core for everyone, not just Grasshopper components.
The bad news: Some functions in Rhino are not thread-safe. Meaning that data structures such as NurbsCurves cannot be modified from multiple threads at once as it will compromise their validity. You might well end up with invalid curves and quite possible weird crashes. In very bad cases it might even be that a specific function in our SDK can only be running once, so even if you were to duplicate the curve it would still not work.
Until our SDK is thread-safe there can be no global threading in Grasshopper. I don't know where we're headed with this, but I do know that we've started using some threaded algorithms in the display as of Rhino5, so it seems we're at least getting our feet wet.
--
David Rutten
david@mcneel.com
Seattle, WA…
Added by David Rutten at 5:47pm on November 17, 2010
string may contain any number of curly bracket pairs with non-negative integers in them:
"When {0} brings back {1} days and {2}"
The number inside the brackets refers to the data to insert in that location. In effect, {x} is a placeholder for actual data. The data inserted into a specific bracket pair is the data supplied in the latter part of the function. {0} refers to the first item, {1} to the second, {2} to the third and so on ad infinitum.
If I supply some data the entire expression may look like this:
Format("When {0} brings back {1} days and {2}", "Spring", "blue", "fair")
which will result in the string "When Spring brings back blue days and fair".
If the data you're inserting is a number (or a date) then you have additional formatting flags that you can use. These additional flags appear behind the placeholder index integer separated by a colon.
Format("Pi = {0:0.00} ({0:0.000000})", Pi)
The :0.00 means the number will be formatted using two digits. The other flag will enforce six digits, resulting in: "Pi = 3.14 (3.141593)"
--
David Rutten
david@mcneel.com
Poprad, Slovakia…
Added by David Rutten at 3:00pm on February 3, 2013