New in Karamba3D 3.1
Last updated
Last updated
We regularly release service updates on GitHub and through Rhino's YAK package manager. Each service release includes a list of new features and bug fixes.
Load-case and Load-case Combination Ordering:
Load-cases and their combinations are now ordered as they are input into the Assemble component.
Breaking Change: Older definitions relying on alphabetical ordering may be affected.
Numerical Result Ordering:
Element results are now structured based on selection order at the corresponding component input.
Breaking Change: Previously, results were structured by tree-branches indexed by element index.
String Input for Load-Containers: Allows the creation of a dummy load to facilitate ordering of load-cases within the Assemble component.
Prediscribed Displacements at Supports: Now included within the 'Load' component.
Enhanced Support Capabilities: Supports can now incorporate attached spring stiffnesses.
BeamView Enhancements: Additional display options, including utilization visualization according to EC3 standards via colored lines, buckling lengths, and more.
ModelView Improvements:
The "View" input plug now accepts planes and base-lines to define visibility settings.
Example available: "ModelView_SelectView_BaseLine.gh" in folder 07_Results
of installed examples.
"karamba.ini" Configuration: The parameter MinNumberOfSegmentsForResults
can now be set to "1" to allow mesh faces spanning the entire beam length.
LineJoint Component Usability: Simplified operation with no requirement for Y- and Z-direction definitions when working with naked edges and single-surface joints.
Cross Section Optimizer Enhancements: Differentiates between elements reaching maximum size (warning issued) and elements where cross-section selection did not converge (remark issued).
Element Utilization Calculation:
If no capacity exists to resist a specific cross-section force component, a value of 1E6
is added to utilization.
Utilization resulting predominantly from compression is now returned as a negative number.
Parametric UI Rendering: Improved symbol display for better visualization.
Resolved memory leak issues.
Fixed calculation bug in user-defined circular cross-section (Wt computation).
Corrected "$" notation functionality for load-case selection in load-case combinations.
Addressed a bug in static license activation.
Fixed symbol scaling issues when switching units from meters to millimeters.
Async-Enabled Components: The following components are now fully asynchronous (async) compatible: AssembleModel, all Algorithms components, ModelView, BeamView, ShellView, LineResultsOnShells, MeshBreps and Shell Section. For details see section 2.6.
Load Case Combinations: When defining combinations using the "Load-Case-Combinator" component, load case names containing special characters (e.g., +, -, *, etc.) can now be enclosed in quotation marks (" or ') to ensure proper handling as a single entity.
Warning for Incomplete Load-Case Combinations: The Assemble component now issues a warning if load cases referenced in load-case combinations do not have associated loads.
Rhino8 YAK-Installer Enhancements: The installer now includes support for both .NETCore 7 and .NET Framework versions.
Line-Load Annotations: Resolved an issue where annotations were missing on line loads applied to beams when combined with non-unit load factors.
Connected Parts Component: Addressed missing paths in the "Connected Parts" component for models that include both shells and beams.
The following components are now asynchronous (async) capable: AssembleModel, all Algorithms components, ModelView, BeamView, ShellView, LineResultsOnShells, and MeshBreps.
These components can operate without blocking the UI thread.
New context menu options include "Cancel" and "Parallel Execution."
Global async computation control is available under Karamba3D > Settings > Async Execution.
By default, async execution is turned off.
To prevent potential crashes, disable async execution when using loops or optimizers (e.g., Galapagos).
Karamba3D is now thread safe.
Resolved a crash that occurred when using Eigenmodes, NaturalVibes, or Buckling components before running any prior analysis.
Load cases and load case combinations can now be excluded from the default set (e.g., for "Analyse") by adding an underscore ("_") at the start or end of their names.
Added an example script for retrieving the system stiffness matrix.
Improved the performance of the CroSecOpti routine.
Introduced safeguards against large models that would lead to long render times (configurable via the MaxEvaluationPointsInModel parameter in the karamba.ini file), which may occur due to incorrect length units.
Fixed a memory leak in the NaturalVibes calculation.
Corrected export issues for box cross-sections in Speckle.
Ensured the outline of trapezoid cross-sections is closed during Speckle export.
Fixed an exception when retrieving beam forces at positions defined by maximum distance.
Help text units now correctly update when the length unit setting in the GH definition differs from local user settings.
CroSecOpti: Displacement optimization now handles cases where elements exhibit negative virtual work.
Added safeguards for element identifiers against number-only names when using the "name1|name2|..." format, where multiple names can be assigned per element.
AnalyzeNonLin: Resolved crashes when working with multiple load cases.
Corrected display of prestrain load values.
Fixed scaling issues with load symbols when different length units are applied.
Added Speckle structural model import- and export-component. It is work in progress. Enable "View WIP components" in the Karamba3D menu to see it.
Fixed a memory leak.
Fixed a bug in the displacement control part of the cross section optimizer.
SAF export: fixed signs of cross section forces and moments to correspond to IDEA StatiCa.
Fixed a units conversion bug regarding the stiffness values of the JointAgent-component.
Fixed a bug in the internalization of Karamba3D models.
"Reaction View" component: This new component simplifies the rendering of reaction forces and moments at supports. A corresponding parametric user interface component, "Reaction View pui", is also available.
"Export Model to SAF" component: This component exports Karamba3D models to the SAF format, compatible with many traditional AEC applications. The export includes surfaces and certain types of surface loads.
"Create Linear Element" component: Consolidates functionality from the previous "Line to Beam", "Connectivity to Beam", and "Index to Beam" components into a single component.
"Optimize Cross Section" component: Now allows virtual force load-cases to be directly supplied, enabling finer control over displacement.
"Assemble Model" component: The "Points" input plug has been moved to the "Options" submenu to reduce confusion regarding required inputs for model assembly.
Changing the language or physical units in the Grasshopper/Karamba3D model now instantly updates component help texts and annotations.
Base physical units (force, length, mass) are now stored within the Grasshopper definition, making model exchange smoother and preventing unexpected changes.
MSI-installers are now available for Rhino 8 for both .NET Framework and .NET Core. The .NET Core version of Karamba3D is installed when using the package manager in Rhino 8.
Enhanced accuracy in representing discontinuities in beam section force diagrams.
Version numbering now reflects the build's year, month, and day (last five digits).
"Disassemble Mesh Load" component: Improved for exporting mesh loads as line loads on elements.
Bug Fixes:
Inclusion of the Spanish language version for user interface texts in the MSI-installer.
The "Element Felting" component now supports springs as connection elements.
"Optimize Cross Section"-component:
Different load-case-combinations can be used for ultimate limit state (ULS) and serviceability limit state (SLS) design optimization.
Displacement optimization for SLS is now done using a virtual forces approach for more economic results.
Elements with insufficient cross sections in ULS and SLS can be highlighted using the "ModelView"-component.
The "ModelView"-component:
"Annotation/NII" option now outputs the NII force of the currently visible load-case.
A "Result Selection" submenu was added to the "ModelView"-component. This allows to quickly select the display of minimum and/or maximum results for load-case combinations of a specific load-case of a combination.
The "Annotations" submenu now contains a slider to quickly adapt display text-heights.
It is possible to display single shell sub-elements by providing "Shell-Index/Meshface-Index" at the "View" input-plug.
The "Line-Line Intersection"-component:
Has been refined: it is now possible to define intersecting lines and lines to intersect.
Can intersect parallel lines which lie on each other.
The grammar for defining load case combinations has been made more flexible.
The order of load cases and load case combinations in the model adheres to the order of defining load case combinations and feeding load cases into the assemble component.
The order of loads after disassembling a model now corresponds to the order of input at the "Assemble"-component.
When using Karamba3D's "Mesh Breps"-component the underlying surface gets attached to the mesh as custom data.
"Point-Mass"-component: added scaling factors for mass for translational inertia in global directions.
Added the "Analyse ThII"-component to have a shortcut for specifying second order theory analysis steps. This represents an alternative to applying the "Load Case Combination Settings"-component.
The "Buckling Modes"- and "Natural Vibes"-components now have an input-plug for specifying the load-case-combination from which second order theory forces NII are to be taken.
"Joint Agent"-component:
fixed bug that caused hinges to be added to beams when the beam-identifier of the second beam did not exist.
made limit-distance of joint agent for testing points for vicinity dependent on the limit-distance of the 'Assemble'-component.
Changed handling of materials with different absolute values of tensile and compressive strength in EC3 design procedure: sign of normal force decides whether the tensile or compressive strength shall be applied.
Added joint colors to the "karamba.ini"-file.
Added a warning in case Karamba3D detects another Grasshopper plug-in which might come with its own version of the OpenMP-library "libiomp5md.dll" since this can cause crashes.
Made "Shell Section"-component work with breps as intersecting geometries.
Bug fixes:
Fixed bug in serialization of locally oriented supports.
Fixed a bug in the retrieval of shell-section results which resulted in partial result display.
Parametric UI: made arrow heads scale with the forces and moments.
Fixed bug in definition of Tsai-Wu factor for orthotropic materials.
"LineToBeam"-component did not convert linear-curves. Now it does.
Material table: compressive strength of glulam timber was positive.
Fixed problem with coloring of results with small positive and large negative range.
Fixed bug in setting the color range via the "ModelView"-component.
There are two big new features:
Load case combinations
Interoperability via BHoM (see section "BHom" of this manual and the Github repository here) which will be included in the official BHoM release in the next few days.
The current version 3.0.0 is work in progress:
Load-case combinations haven't yet been integrated into the cross-section optimizer. The "Optimize Cross Section"-component results are based on all load-cases present in the model.
The -forces used for cross section optimization, eigenmodes-, eigen frequency- and buckling-calculations are taken as the smallest value encountered in a previous analyze step.
Result combinations will be included to provide spectral analysis for earthquake loads.
Not all of the examples in this manual have not yet been updated to version 3.
Up to now Karamba3D provided the possibility to work with load-cases. These were defined at the components for creating loads by specifying their name. With version 3.0.0 Karamba3D offers load case combinations.
These components help in creating and handling load case combinations:
"Load-Case-Combinator"-component: Takes a list of combination rules expressed as text and converts them into load-case combinations.
"Load-Case-Disassemble"-component: Reveals details of a load-case combination: which load-cases contribute with what factors.
"Load-Case-Combination Options"-component: Specifies details with regards to how the load-case-combination needs to be evaluated: first order theory, second order theory with possibility of linear superposition or second order theory for each load-case individually.
"Analyze"-component: Load-case combinations know about their calculation type. The "Analyze"-component uses this information to treat them accordingly. The user can specify the load-case-combinations of interest and limit analysis to these.
"Load-Case Selector"-component: Load case combinations can contain large sets of load-cases. The "Load-Case Selector"-component helps to select the results of interest for each point of a structure. It is possible to select the envelope of specific response properties, results of a load case of interest, or the set of results that accompany a leading property (e.g., maximum moment and other cross section forces that come along with it). The component outputs a query string which can be used as input for specifying the load-case in all result components of Karamba3D.
Depending on the given load-case selection result-components output values for multiple load-cases. This works now via Grasshopper's Data-Tree-objects. The outmost branches correspond to load-cases, then come positions along an element (if applicable), then the level of elements. Branch indexes at element-level correspond to element-indexes in the model. This eliminates the necessity to introduce dummy values in case a result-component does not apply to all types of elements.
Without the definition of load-case combinations the handling of Karamba3D models does not change as compared to previous versions of Karamba3D - with the exception of Data-Tree output at the result-components. Flattening these eliminates the difference between new and old version.