Skip to main content
Nodi for desktop ships an immersed finite element solver. Instead of meshing your part, it embeds the geometry in a background voxel grid, so any implicit field, mesh, Brep or box in your graph can be analyzed as is. Results come back as fields that you visualize with display nodes or feed back into the model, for example to drive lattice density. For the background of the method, its accuracy compared with classical FEM and worked structural, fluid and thermal examples, read Meshless Analysis (Immersed FEM) in Nodi on the Nodi blog.
All solver nodes are desktop-only. They are listed under Analysis in the node menu and in the Nodes reference, which documents every input and property.

Analysis types

Wiring pattern

Every solver follows the same pattern. The screenshots in this section use a small static stress setup: a 120 × 30 × 12 mm aluminum plate with a hole, fixed at one end and loaded with 2000 N at the other.
Node graph of a static stress analysis: Implicit Box and Implicit Cylinder combined by Implicit Difference into the part, Isotropic Material, Force BC and Fixed BC merged into the solver's configurations, plus BC Display and Analysis Field Display

The complete setup. The part goes into the solver's geometry input, the material and boundary conditions are merged into configurations, and the result feeds an Analysis Field Display.

1

Geometry

Connect the domain to the geometry input: an Implicit, Mesh, Brep or Box. For stress and thermal analysis the geometry is the solid part. For flow analysis the geometry is the fluid region, so model the channel volume, not the housing.
2

Materials and boundary conditions

Create material nodes and boundary condition nodes. Combine them into one list with a Merge node and connect it to configurations. Each solver picks the configurations it understands and ignores the rest.Material nodes have a preset list that fills in the properties for common materials. Pick Custom to enter your own values.
Inspector of the Isotropic Material node with the preset list open: Custom, Steel, Stainless Steel, Aluminum, Copper, Titanium, ABS, PLA and PA12
Boundary condition nodes set their values in the Inspector. ForceBC takes the total force as a vector, which is distributed over its region.
Inspector of the Force BC node with the force vector set to 0, 0, -2000 N
3

Boundary regions

Boundary condition nodes accept a Mesh, Box, Point, Implicit or a BrepSelect selection as the region they apply to. A box placed over a face is the quickest way to define a load or support patch. Patches must coincide with a real surface of the domain. For flow inlets and outlets, use the faces of the bounds box.Connect the merged configurations to a BCDisplay node to check the regions in the viewport before you solve.
The plate in the viewport with a fixed region at one end shown by blue markers and a load region at the other end shown by downward arrows

Two thin Center Box regions over the end faces. BCDisplay marks the fixed face with blue markers and the loaded face with arrows in the load direction.

4

Resolution

The tolerance property is the voxel size in model units. Start coarse, confirm the result looks right, then refine. Features thinner than one voxel cannot be represented, so increase resolution or thicken walls before trusting results on thin parts.
Mises stress on the plate computed with a 4 mm tolerance, showing no stress concentration around the hole

Coarse grid. The overall bending stress is there, but the stress concentration at the hole is missing.

5

Read the result

The solver outputs a list of fields (displacement, Mises stress, temperature, velocity, pressure and so on). Use FieldSelect to pick one by name, then AnalysisFieldDisplay to shade the part by it, StreamlinesDisplay or FlowParticlesDisplay for velocity fields, and FieldProbe to read values at points. FieldToImplicit and VolumeMeshToImplicit turn results back into geometry.The legend of AnalysisFieldDisplay also has a dropdown that switches between the fields the solver returned, and a unit selector.
The result legend with its field dropdown open, listing Displacement, Stress, MisesStress, Strain and Distance
Cantilever example with a Mises stress result, the node graph and the Immersed Static Stress Solver in the Inspector

The Cantilever example: the solver node is selected, so the Inspector shows its tolerance, gpu solver and cache properties and the list of result fields.

Flow and thermal analysis

Flow and thermal solvers use the same wiring with their own materials and boundary conditions. In the Channel Flow example, the geometry is the fluid volume of a channel with a spherical obstacle cut out. InletBC drives the flow with a prescribed velocity (or a pressure, selected with drive), OutletBC sets the outflow, and StreamlinesDisplay draws the velocity field.
Streamlines through a rectangular channel with an inlet patch and an outlet patch, next to the Inspector of the Inlet BC node set to a velocity of 0.01 m/s

Channel Flow: the inlet patch with its flow direction (blue), the outlet patch (red) and streamlines around the obstacle. The Inspector shows the Inlet BC node.

The Open Hole Thermal Stress example couples a temperature field with stress analysis through ImmersedStaticThermalStressSolver. The solver returns the temperature together with the stress fields, so the same legend switches between them.
Temperature field on a plate with a hole from the Open Hole Thermal Stress example

Topology optimization

ImmersedTopologyOptimizer takes a design domain, the same materials and boundary conditions as the analyses above, and a TopologyOptimizationConfig node that selects the method (density or level-set), the objective (compliance, stress, thermal, flow or temperature) and the volume fraction. Connect passive regions to keep areas solid, for example around bolt holes. The node outputs the result fields and an optimized mesh.
Topology-optimized L-bracket in the viewport and the Inspector of the Topology Optimization Config node with method Density, objective Compliance and volume fraction 0.35

The L-Bracket example: the optimized bracket shaded by Mises stress next to its design, with the Topology Optimization Config node in the Inspector.

Performance

While a solver runs, the viewport shows its progress: the iteration count, the residual against its target and the elapsed time. Click Cancel at the bottom of the node graph to stop a long solve.
Progress overlay reading Flow analysis (GPU), Iteration 12 / 50, Residual 8.5e-6 (target 1e-5), Elapsed 00:04
  • Enable the gpu solver property when Environment in the app reports GPU Acceleration as available.
  • Turn on the node’s cache property and File → Cache so a saved project reopens with its solver results instead of recomputing them.
  • One solve runs at a time. Several solver nodes in one graph evaluate one after another.

Examples

The Desktop tab of the Examples dialog listing stress analysis and topology optimization examples
Open these from Examples → Desktop in the app, or see the Desktop examples: Cantilever, Lattice Optimization, Open Hole Stress and Bracket for stress; L-Bracket, Timber Joint, Bracket, Plate Cooling Channels and Chip Micro Channels for topology optimization; Open Hole Thermal Stress for thermal; Channel Flow and TPMS Cold Plate for flow.