algorithmic modeling for Rhino
I've been trying out the new buckling analysis component in Karamba. It's really a great addition. I want to wrap around it with Octopus, and therefore keep the computation minimal. Specifically, I'd like to compute only the first positive buckling load factor without having to calculate enough buckling modes that one should be positive. Is there any way to achieve this right now, i.e. only calculate until it finds a positive one?
Tags:
The AnalyzeThII-component offers the option to switch off the stiffening effect of tensile forces by setting 'NoTenNII' to true. There are however cases where this does not help.
The current algorithm for calculating the buckling factors is a Van Mises iteration which always converges to the buckling factors with the smallest absolute values. In the next release of Karamba I plan to add other algorithms which allow better control.
Best,
Clemens
Hi Clemens,
Thanks for the reply. Can I hack into it and write my own GH component that iterates until it finds a positive one?
I'm having trouble doing this right now; Buckling(inModel.febmodel,1,2,300,1e-5)
gives me
Runtime error (ArgumentTypeException): expected Model, got Model
No luck with this option either:
import Karamba.Algorithms.Component_Buckling as Buckling
Buckling.solve(inModel,1,2,300,1e-5)
Hi Diederik,
try the following: type 'GrasshopperDeveloperSettings' in the Rhino text window, and then set the hook at 'Memory load *.GHA...'. Otherwise GH loads Karamba.gha twice.
Best, C.
Unchecking that worked!
For my next question; FromInd in the buckling component doesn't seem to work. For example, in the ShellBuckling.gh example found on the Karamba3D website, changing FromInd from 1 to 2 seems to not influence the results.
Ofcourse my question is related to computing only positive load factors in a relatively efficient way.
This seems to be a bug in version 1.1.0. Thank you for the report.
I think it would be a good idea to have an option-flag on the buckling-component to limit the computation to positive buckling factors only. I will include this in the next release.
Best,
Clemens
Ok, so until that's fixed or the option-flag is included; this is the best option I can think of to generate only positive values, within computational reason;
import clr
clr.AddReferenceToFileAndPath("C:\Users\...\AppData\Roaming\Grasshopper\Libraries\karamba.gha")
import Karamba.Algorithms.Component_Buckling as Buckling
MaxModes = 10
num = 0
FromInd = 1
MaxIter = 300
Eps = 1e-5
for i in range(MaxModes):
num = num+i
if num < MaxModes:
BLFac = map(float,Buckling.solve(inModel,FromInd,i+1,MaxIter,Eps)[0])[-1]
if BLFac >= 0:
break
else:
BLFacs = map(float,Buckling.solve(inModel,FromInd,MaxModes,MaxIter,Eps)[0])
BLFac = min([x for x in BLFacs if x >= 0 ])
break
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by