o: http://github.com/HeinzBenjamin/FlexCLI/issues
Download
You can find FlexHopper here:
http://www.food4rhino.com/app/flexhopper
and here:
https://github.com/HeinzBenjamin/FlexCLI
Info
FlexHopper offers physics computation in Grasshopper. It is GPU-based and therefor very fast. Currently supported modes of simulation are: free particles, fluids, rigid bodies, soft bodies, tensile structures and cloth, custom constraints.
FlexHopper is a Grasshopper plugin built on top of FlexCLI - Flex Common Language Interface. FlexCLI is built against NVidia Flex release 1.1.0. NVidia Flex is patented property of NVidia. FlexCLI and FlexHopper are openly accessible under the GNU License through my Github account. (Link above)
For more information on NVidia Flex go here: https://developer.nvidia.com/flex and https://developer.nvidia.com/nvidia-flex-110-released
FlexCLI runs on x64 architectures only. It was built against .Net 4.5.2
FlexHopper was tested with Rhino5 64bit and Grasshopper 0.9.0076 WIP
Requirements
Windows 7, 8, 8.1 or 10 64bit
NVidia or AMD Graphics Card
NVIDIA: GeForce Game Ready Driver 372.90 or above
AMD: Radeon Software Version 16.9.1 or above…
ow the steps of the successful run when step 1.2 is bypassed (note that the and OpenFOAM session is open in the background while running the Butterfly demo file):
1. create wind tunnel, and use different parameters of (4,4) for _globalRefLevel_ as suggested by Theodoro in this post
2. run blockMesh:
3. run snappyHexMesh:
4. run checkMesh:
5. connect the case from checkMesh to simpleFOAM and run the simulation:
6. the simulation converged at 1865 iteration, but the results visualization part has some problem:
7. so I revised this part according to suggestions from Hagit:
8. and the results can be visualized for P and U values:
The GH file used for the successful run shown above is attached here.
Now, the following is the error I got when the case from the update fvScheme component is used for simpleFOAM simulation:
the warning message on the simpleFOAM component is:
1. Solution exception: --> OpenFOAM command Failed!#0 Foam::error::printStack(Foam::Ostream&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #1 Foam::sigFpe::sigHandler(int) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #2 ? in "/lib64/libc.so.6" #3 double Foam::sumProd<double>(Foam::UList<double> const&, Foam::UList<double> const&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #4 Foam::PCG::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #5 Foam::GAMGSolver::solveCoarsestLevel(Foam::Field<double>&, Foam::Field<double> const&) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #6 Foam::GAMGSolver::Vcycle(Foam::PtrList<Foam::lduMatrix::smoother> const&, Foam::Field<double>&, Foam::Field<double> const&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::Field<double>&, Foam::PtrList<Foam::Field<double> >&, Foam::PtrList<Foam::Field<double> >&, unsigned char) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #7 Foam::GAMGSolver::solve(Foam::Field<double>&, Foam::Field<double> const&, unsigned char) const in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libOpenFOAM.so" #8 Foam::fvMatrix<double>::solveSegregated(Foam::dictionary const&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/lib/libfiniteVolume.so" #9 Foam::fvMatrix<double>::solve(Foam::dictionary const&) in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #10 Foam::fvMatrix<double>::solve() in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #11 ? in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam" #12 __libc_start_main in "/lib64/libc.so.6" #13 ? in "/opt/OpenFOAM/OpenFOAM-v1606+/platforms/linux64GccDPInt32Opt/bin/simpleFoam"
The error message from the readMe! output node is attached below as a text file.
Hope you can kindly advise what the important steps or parameters I might have missed here. I assume it might be related to OpenFOAM rather than with the Butterfly workflow...
Thank you very much!
- Ji
…
2013 | mayo 30, 31 y 1 de junio. 15 Hrs.
Horario: 18:00 – 22.00 Jueves, Viernes y Sábado de 8:00 a 16:00 Hrs. Instructor_ Arch. David Hernández Melgarejo.
http://bioarchitecturestudio.wordpress.com
Objetivos:
El curso está dirigido a cada diseñador, ingeniero o arquitecto que quiere obtener una sólida base en modelado generativo y paramétrico dentro del flujo de trabajo en Rhinoceros.
En el curso se explorarán y construirán estructuras en el espacio paramétrico, incorporando entidades geométricas (Curvas, Superficies, Puntos, etc…) y usando patrones algorítmicos.
Cada paso será soportado con ejercicios que gradualmente incrementarán su complejidad.
El alumno aprenderá cómo trabajar con asociación geométrica y parámetros. Para perfeccionar asociación geométrica – asociación entre partes, asociación dinámica – las formas geométricas son generadas al seguir la conexión lógica entre la parte geométrica y su restricción, dimensión paramétrica y él proceso dinámico del diseño: en pocas palabras estimulamos el pensamiento relacional.
Resultados:
Los participantes con éste entrenamiento obtendrán las siguientes fundamentos.
· Construir, modificar, depurar y correr aplicaciones de Grasshopper.
· Comprender el editor gráfico algorítmico y sus patrones usando grupos y cables conectores.
· Trabajar con dimensiones dinámicas, parámetros y listas.
· Generar aplicaciones orientadas a la documentación del diseño y la fabricación.
Palabras clave:
Diseño Computacional, Scripting, Rhinoceros 5.0 + Grasshopper, Parametrización, Análisis, Fabricación Digital.
Para mayor información:
MArch. Kathrin Schröter. E-mail: kschroter@itesm.mx
Dirección de Arquitectura. Oficinas de Aulas 1, segundo piso.…
NURBS using Rhinoceros. Content includes: Basic terminology, user interface, workflow strategies, using reference material and creating drawings from modeled geometry.
Workshop 2: Introduction to Parametric Design
Instructor: Rajaa Issa
(12:30 PM-3:30 PM)
This workshop will introduce the general framework of parametric thinking with a series of hands-on tutorials using Grasshopper for Rhinoceros. It is meant for beginners who have little to no idea about parametric modeling. The workshop will introduce the general components of an algorithm, design workflow, Grasshopper interface and visualization techniques. The students are expected to have basic knowledge of the Rhino modeling environment. Workshop 1 should fulfill this requirement.
Registration: Computers and software will be provided. Space is limited to 20 seats per workshop. The fee for each workshop is $60 (plus a $4.29 fee). There is a special rate of $30 (plus a $2.64 fee) for students and teachers provided they request a discount here with their school email address before registering. Register now……
best thing that could be done would be to use a combination of several steps in order to reconstruct the tree how you want it.
First off, you would need to reduce your data down then "base branches" that you want. So what was {a;b} is now just {a}. The result is that all of the data that was in all those sub branches is now all under that main branch. So instead of just having 2 in each sub branch you'll have 2*(no. of branches) in your main branch.
From here on out, we're actually going to use the SubList component to reassemble the sub branches in a more ordered fashion. So after reducing the data, find out the number of items in each branch (list length) and then create an interval from 0 to the number of items. Now you need to divide that interval in a way where the number of divisions allow for the proper number of items that you're looking for. I did this by simply dividing the list lengths by the number of items I wanted, then feeding that into the Divide Interval component.
Then only thing about the divide interval component is that the way it divides is not necessarily conducive to extracting chunks because the "ends" of the divided intervals will tend to overlap. IOW, if I have an interval from 0 to 8, then divide it into 4 pieces (2 items for each sub interval), I'll end up with intervals of 0-2, 2-4, 4-6, and 6-8. Its not that this is wrong, but if I'm extracting indices, then 2, 4, and 6 get "doubled" by being at the end of one interval and the beginning of another. Therefore after you divide the interval, you then need to ressemble the interval so that the end of the interval is one integer lower, so 0-1, 2-3, 4-5, and 6-7 in the previous example.
After that just plug those adjusted intervals into the Sub List component and you'll essentially have the result your looking for. In my case, I then had to clean things back up with the path mapper because the result was {a;0;b} when you're really looking for {a;b}
The only glitch in this approach is that the number of items in each sub branch is only not even (branch {1;160} has only 1 item). I guess you could potentially use the list length from the original path structure to match this later on, but I'll have to work a bit more to get that to work.
I attached a file that goes through the process I described above.…
Added by Damien Alomar at 1:46pm on February 18, 2010
d with the surfaces in the connected HBZones."
* in addition, the surface results could be red by the " Surface data based on type" but could not by the " detailed one". and it showed this Msg "1. Solution exception:'Brep' object has no attribute 'upper'"
* compared to the earlier model, I noticed that the new simulation results have changed a bit, the zones tend to be more "sensitive to sun" as if it have a lower thermal capacity/ less thermal mass, meanwhile the cooling load is reduced!
* although I was able to collect the CSV files form the Run E+ component, the IDF file was showing this error "1. Solution exception:'NoneType' object is unsubscriptable" I thought the IDF file is kind of a early check up for the geometry before running the simulation, as in Chris tutorial (Chris tutorial no 7)
sorry for the very long Msg, I hope I find a way to deeply understand these results. …
we call room schedules in our trade (theoretical/desired relations of proximity between "spaces" for a given AEC project). The fact that spaces have desired sizes as well makes the whole puzzle a bit more challenging. Kinda like the notorious HARNESS hospital design initiative.
https://www.google.com/url?sa=t&rct=j&q=&esrc=s&sou...
Anyway:
The code (mostly inspired by the ideas of Christopher Wolfgang Alexander) is ported in C++ and runs in Unix based old workstations the likes of H/P 9000/370 (good old days). I'll give it a spin for some C# translation (portions of it to be honest) just to indicate the whole approah.
But leaving aside theories of fuzzy sets and cluster analysis ... in your case doing a "graph" from a given adj matrix is rather simple (I'll post a small C# example soon).
In the mean time:
http://stackoverflow.com/questions/15306040/generate-an-adjacency-m...
http://stackoverflow.com/questions/18882779/how-to-get-adjacency-ma...
http://www.rkinteractive.com/blogs/SoftwareDevelopment/post/2013/06...
HIGHLY recommended reading:
http://www.amazon.com/Data-Structures-Algorithms-Using-C/dp/0521670152
…
Added by peter fotiadis at 12:06am on September 22, 2015
with Mesh machine (target edge length 8 at 60 iterations).
I had the variable pipes running through cocoon last night, expecting already several hours of calculation time, but unfortunately, my Graphics Card ran out of memory as I clicked the cocoon component. No so clever to click it though, but I realized that I have to furher reduce either the lines (why cant tetgen have a minimum edge length flag? In the manual it reads you must specify a .var File to do that.
A .var file allows you to specify maximum area constraints on facets and maximum length constraints on segments. They are used for mesh refinement.
This however is really unuseful since you cannot just say "No tet can have an edge length shorter than "xx" (somewhat like Meshmachine with the target edge length) but as I understood, works only for specified areas (in the var file).
So I looked at cocoon to simplify the Marching cubes settings. I tweaked them to be not quite rough so that MM can just make it pretty enough to use.
The result is quite pleasing and very close to what I was looking for:
Another approach would be to skip the "Pipe Variable" and replace it by a Curve Charge with all the lines AND several Radii plugged into it. A while ago I noticed you can plug several Radii in, but I couldn't replicate my findings from back then today. However, it seems that the brep charge is super-slow compared to the curve charge.
…
indexsequential philosophy. This stands for a sequential access to data organized in logical records addressed by a key formed by two Integers.
CDBASE may be seen by the programmer as an unlimited number of sequential streams organized in the form of a linked list. Physically CDBASE is formed by a direct access diskfile with fixed record length and a memory buffer to enhance IO-Operations. For parallel access an enhanced version using pvm is available."
"Locking is done via special entries in the database and the possibilities provided by the operating system (lockd / SHARE etc.) The lowest level ensures that writing of directory entries or requesting dataspace is only possible by a single process at the same time.
The next level locks a complete key. If you write to a key you will lock implicitly all records within the key. Other processes may lock other keys at the same time. You may lock a key explicitly by a call, then have to remove the lock explicitly by an other call. The implicit locks created by a writing process is implicitly released by a read from the same process."
As for the initiation, a function returns current status of the database: int sof_cdb_status ( int Index )
the current status of the file with Index is returned
Index Index of DB Returnvalue Stat Bitpattern CD_STAT_AKTIV (1) CDBase is active CD_STAT_OPEN (2) Index is connected to file CD_STAT_SWAP (4) File has ByteSwap CD_STAT_READ (8) File has been read CD_STAT_WRITE (16) File has been written CD_STAT_LOCK (32) File has active locks CD_STAT_PVM (64) File is opened via pvm server
I hope it answers your questions, I am very uncertain in this topic.…