Professional, accessible, and intuitive modeling for the OpenRadioss community..
BeidPrep is a standalone pre-processing application designed to author, edit, and validate .rad input decks for the OpenRadioss explicit solver. It provides an integrated 3D environment, an AI-driven card generation engine, an LS-DYNA mesh importer, and a structured template library, enabling engineers to integrate BeidPrep into their modeling environment for OpenRadioss without sacrificing productivity.
- Zero Cost: Professional FEA tools shouldn't be a luxury.
- Visual-First: Move from text-editing to 3D selection.
- Download for free from beidersim.com/beidprep
- Looking for what's next? Check out our Future Roadmap.
- Project Overview
- AI-Powered Card System
- Selection Manager
- Supported Card Library — Technical Reference
- GUI & 3D Viewer
- Installation
- License
BeidPrep targets the creation of a solver decks to be run using the OpenRadioss solver of high-energy, highly non-linear physics simulations including:
- Structural Impact & Crash — automotive, aerospace, and defense applications
- Smoothed-Particle Hydrodynamics (SPH) — fluid-structure interaction, projectile penetration, fragmentation
- Explosive / Detonation Simulations — blast loading, shaped charges, mine-blast events
- Composite Material Modelling — progressive failure, fabric materials, orthotropic shells
- Hyper-elastic and Visco-elastic Bodies — rubber, foam, biological tissues
The application reads and writes the Radioss Starter deck format (.rad), strictly enforcing the 10-character column layout at 100 characters per line required by the solver. Every field is formatted with column precision — integers, floats with scientific notation, and character flags — eliminating hand-formatting errors that can silently corrupt a run.
BeidPrep also includes an LS-DYNA mesh importer (.k format), converting keyword-based LS-DYNA decks into equivalent OpenRadioss mesh cards and giving teams a direct migration path from commercial to open-source solvers.
BeidPrep ships with a curated template library covering the most common Radioss cards across all analysis domains (see Section 4 for the full list). These templates drive the UI: field editors, column positions, data types, conditional visibility, and repeat-row logic are all read from the JSON schema — making the editor self-describing and immediately correct.
The built-in library is a starting point, not a ceiling. BeidPrep includes a Gemini AI-powered Card Architect that can generate a complete, ready-to-use template for any Radioss card — including obscure, specialised, or newly released keywords — directly from documentation.
- Navigate to Templates → Add Card from URL.
- Paste the URL of any Altair Radioss or OpenRadioss documentation page.
- BeidPrep's scraper fetches the page, extracts tables, field definitions, and hierarchy information, and compiles a structured prompt.
- Google Gemini 2.0 Flash processes the prompt under a 13-rule engineering schema and returns a validated JSON template capturing:
- Keyword name and all known aliases
- Header format string with field widths and column positions
- Fixed and repeating row definitions
- Field types (
int,float,string,blank,flag) - Conditional visibility rules (show field only if another field has a specific value)
- Dynamic repeat-count expressions
- Category classification (Materials, Constraints, Load Cases, etc.)
- The new card is written into your local
templates_library.jsonand immediately available in the editor — no restart required.
Navigate to Templates → Set Google API Key… and enter your Gemini API key. The key is stored for the session. Alternatively, set the environment variable BEIDPREP_GEMINI_API_KEY before launching the application.
Your templates_library.json lives next to the executable and can be freely shared with colleagues:
| Action | Menu Item | Effect |
|---|---|---|
| Load a colleague's template pack | Templates → Load Template… | Replaces your active library with the selected JSON |
| Share your custom cards | Templates → Save Template As… | Exports a copy of your library to any location |
| Recover the factory defaults | Templates → Reset to Default Template | Restores the original bundled library |
The Selection Manager is the interactive bridge between the 3D viewport and the solver card data. It implements a Filter → Buffer → Action pipeline that makes visual-to-numerical data transfer precise and repeatable.
| Target | Description |
|---|---|
| Node | Individual mesh nodes — used for boundary conditions, constraints, initial conditions |
| Element | Individual elements (shells, bricks, beams, etc.) — used for part assignment and groups |
| Segment (Face) | External faces of solid or shell elements — used to build /SURF/SEG contact surfaces |
| Part | All elements belonging to a named part — bulk selection |
| Set / Group | Members of an existing group card |
| Config (by attribute) | Elements sharing the same material or property ID |
| Method | Description |
|---|---|
| Rectangle | Click-drag to draw a rectangular pick window |
| Circle | Click-drag from centre to radius for circular windowing |
| Lasso | Free-form polygon selection |
| Pick by Face | Single-click individual surface faces; angle tolerance controls adjacency growth |
| Mode | Mouse Action | Behaviour |
|---|---|---|
| ADD | Left-click / Left-drag | Adds picked items to the current selection buffer |
| SUB | Right-click / Right-drag | Removes picked items from the current selection buffer |
| REPLACE | Configurable | Clears the buffer and sets only the new picks |
- Grow: Expands the current element/face selection to all geometrically adjacent items within the configured angle tolerance (0.0° – 89.0°). Use this to flood-fill a surface region from a single seed pick.
- Invert: Selects everything except the current buffer — useful for "select all but this component" workflows.
Mouse interaction in 3D viewport
│
▼
[FILTER] VTK ray-cast picker
- Resolves surface cell IDs to volume element IDs
- Maps face hits back to element faces (segment records)
- Applies angle tolerance for face adjacency filtering
│
▼
[BUFFER] SelectionBuffer (in-memory)
- nodes: Set[int]
- elems: Set[int]
- parts: Set[int]
- faces: Dict[FaceKey → SegmentRecord]
- Mode applied: ADD / SUB / REPLACE
- Signal emitted → HUD count updated
│
▼
[ACTION] User clicks target card button
- Export nodes → /GRNOD/NODE
- Export faces → /SURF/SEG (segment IDs auto-generated)
- Create /BCS from node set
- Create /INIVEL, /IMPDISP, /MPC, /RLINK, etc.
Node Sets & Surface Segments
/GRNOD/NODE— node groups for load application and contact definitions/SURF/SEG— surface segment sets for contact surfaces; BeidPrep auto-generates sequential segment IDs from picked faces
Boundary Conditions
/BCS— displacement constraints; configure free/fixed DOF interactively/INIVEL— assign initial velocity vectors to the selected nodes/IMPDISP— imposed displacement time history on selected nodes/IMPVEL— imposed velocity time history on selected nodes
Contacts & Interfaces
/INTER/TYPE2— penalty-method contact (slave surface from selection)/INTER/TYPE24— penalty-method interface with edge treatment
Constraints
/RBE2— rigid body element; pick master node, then slave set/RBE3— interpolation/distributed coupling element/MPC— multi-point constraint (linear DOF coupling)/RLINK— rigid link between two nodes/CYL_JOINT— cylindrical kinematic joint/GJOINT— generalised kinematic joint
Geometry Transformations (applied to selected nodes) (Debugging is ongoing)
- Translate (ΔX, ΔY, ΔZ)
- Rotate (axis + angle)
- Scale (uniform factor)
- Mirror / symmetric copy
| Keyword | Description | Nodes |
|---|---|---|
/SHELL |
2D shell element (Belytschko-Tsay, BATOZ, etc.) | 3 or 4 |
/SH3N |
3-node degenerate triangular shell | 3 |
/BRICK |
8-node hexahedral solid element | 8 |
/BEAM |
1D beam element (Euler-Bernoulli / Timoshenko) | 2 |
/TRUSS |
1D truss element (axial force only) | 2 |
/SPRING |
1D spring / dashpot element | 2 |
/SPHCEL |
Spherical particle cell (SPH method) | 1 |
/XELEM |
Extended / extra element definition | — |
/PENTA |
5-node pentahedral solid | 5 |
/TETRA |
4-node tetrahedral solid | 4 |
| Keyword | Alias | Description |
|---|---|---|
/MAT/LAW1 |
/MAT/ELAST |
Linear elastic (isotropic) |
/MAT/LAW2 |
/MAT/PLAS_JOHNS |
Johnson-Cook elasto-plastic |
/MAT/LAW19 |
/MAT/FABRI |
Fabric / textile material |
/MAT/LAW36 |
/MAT/PLAS_TAB |
Tabulated elasto-plastic (curve-driven) |
/MAT/LAW42 |
/MAT/OGDEN |
Ogden hyper-elastic |
/MAT/LAW62 |
/MAT/VISC_HYP |
Visco-hyper-elastic |
/MAT/LAW70 |
/MAT/FOAM_TAB |
Tabulated foam (crushing) |
/MAT/LAW79 |
/MAT/JOHN_HOLM |
Johnson-Holmquist (ceramics, concrete) |
| Keyword | Alias | Description |
|---|---|---|
/PROP/TYPE1 |
/PROP/SHELL |
Shell section (thickness, integration, hourglass) |
/PROP/TYPE9 |
/PROP/SH_ORTH |
Orthotropic shell |
/PROP/TYPE14 |
/PROP/SOLID |
Solid element property |
/PROP/TYPE19 |
/PROP/PLY |
Composite ply stack |
| Keyword | Description |
|---|---|
/FAIL/TENSSTRAIN |
Tensile strain failure criterion |
/FAIL/JOHNSON |
Johnson-Cook failure model |
/RBE2, /RBE3, /MPC, /RLINK, /CYL_JOINT, /GJOINT
/INTER/TYPE2, /INTER/TYPE24
/GRNOD/NODE, /SURF/SEG, /PART
/BCS, /PLOAD, /GRAV, /INIVEL, /IMPDISP, /IMPVEL, /CLOAD
/RUN, /DT/NODA, /ANIM/DT, /TFILE, /H3D, /PRINT, /TH, /IOFLAG, /UNIT, /BEGIN, /END, /TITLE
/FUNCT (curve definition with interactive plot editor), /TABLE
┌─────────────────────────────────────────────────────────────────┐
│ Menu Bar: File | Templates | View | Info │
├───────────────┬─────────────────────────────┬───────────────────┤
│ │ │ │
│ Component │ 3D Viewport (PyVista) │ Card Editor │
│ Tree │ │ Panel │
│ (left) │ [Selection HUD overlay] │ (right) │
│ │ │ │
├───────────────┴─────────────────────────────┴───────────────────┤
│ Status Bar │
└─────────────────────────────────────────────────────────────────┘
File
Open .rad File(Ctrl+O) — Load a Radioss Starter deckSave .rad File(Ctrl+S) — Write the current deck back to diskImport LS-DYNA (.k)— Convert an LS-DYNA keyword file to Radioss (2D and 3D elements only)
Templates
Add Card from URL— Launch the AI Card Architect (Gemini-powered, Gemini API key is needed)Load Template…— Replace the active template library with a custom JSON fileSave Template As…— Export the current template library to a chosen pathReset to Default Template— Restore the factory-bundled template librarySet Google API Key…— Configure the Gemini API key for AI card generation
View
Background…— Set the 3D viewport background colour (RGB / Hex picker)Copy 3D View to Clipboard— Screenshot the viewport to clipboardCopy Window to Clipboard— Screenshot the full application windowTheme → Dark/Theme → Light— Switch between Obsidian dark and clean light themesShow Edges(toggle) — Overlay mesh wireframe on solid elements
Info
About— Application version, credits, legal noticeModel Info— Statistics dialog: node count, element count by type, card count by category
The Component Tree provides a hierarchical view of every card in the loaded deck, organised by Radioss category:
Nodes · Elements · Materials · Properties · Interfaces · Constraints · Groups (Sets) · Load Cases · General Controls · Tools / Curves · Component and Parts · Output Database · Etc..
Per-card controls (inline icons):
- Eye — Toggle visibility of this card's geometry in the 3D viewport
- Colour swatch — Change the display colour assigned to this card
- Mesh icon — Toggle mesh / solid rendering mode for this card
- Star — Bookmark / favourite a card for quick access
Right-click context menu on any card:
- Edit (opens the Card Editor panel)
- Delete
- Duplicate
- Copy ID
- View in 3D (isolate and fit-to-view)
Left mouse click any card to open the Card Editor.
The Card Editor is template-driven: every field, its type, column position, and label is read from the JSON template schema. There is no hard-coded form layout.
Field types rendered:
- Text input for strings and free-format values
- Numeric spinbox for float and integer fields
- Drop-down for flag and enumeration fields
- Dynamic visibility — fields appear or hide based on the value of other fields (e.g., showing extra rows only when a flag is set to a specific value)
Repeat rows:
- Cards with variable-length data (node lists, element tables, curve points) show an Add Row / Remove Row control
- Rows are added and removed interactively; the formatter writes the correct line count into the header on save
Picker integration:
- Fields that reference IDs (part ID, material ID, node ID) show a Pick button that activates the Selection Manager in the 3D viewport and back-fills the field on selection
Action buttons (card-dependent):
Add from Selection— Populate node/face lists from the current selection bufferClear All— Reset all data rowsSave— Commit changes to the card and update the 3D viewCreate— For element creation dialogs (Beam, Truss, Spring)
Excel Paste:
- Paste (
Ctrl+V) tabular data copied from Excel or any spreadsheet directly into the active field table
Plot Editor (for /FUNCT cards):
- Interactive matplotlib canvas
- Drag curve points to edit values in real time
- X/Y axis display with undo support
Plot Digitizer (for /FUNCT cards):
- Load a scanned image of an experimental stress-strain curve
- Click to extract data point coordinates
- Export as a complete
/FUNCTcard
The 3D viewport is powered by PyVista (VTK back-end) rendered inside a PySide6 . It displays the full mesh geometry with per-card colour coding and supports hardware-accelerated OpenGL rendering.
A floating, glassmorphism-styled panel sits in the top-left corner of the viewport. It contains all Selection Manager controls and live feedback:
What (pick target):
Node · Element · Segment (Face) · Part · Set/Group
How (pick method):
Rectangle · Circle · Lasso · Pick by Face
Mode: ADD · SUB · REPLACE
Angle Tolerance: spinbox (0.0° – 89.0°) controlling face adjacency for Grow and Face-pick
Buttons: Grow · Clear
Camera shortcuts: Top · Front · Side · Isometric · Flip
Live feedback line: "Selected 47 nodes" / "Picked 12 faces" — updates immediately on every pick event.
| Action | Result |
|---|---|
LMB click on mesh |
Add item to selection buffer (ADD mode) |
LMB drag |
Rectangle / Circle / Lasso window selection |
RMB click on mesh |
Remove item from selection (SUB mode) |
RMB drag |
Subtract-window selection |
Shift + LMB drag |
Rotate camera (pick suspended) |
Shift + scroll |
Zoom (direction reversed — engineering convention) |
Double-click tree item |
Open Card Editor for that card |
RMB click tree item |
Context menu (Edit / Delete / Duplicate / Copy ID) |
| Theme | Primary BG | Accent | Text |
|---|---|---|---|
| Dark — Obsidian | rgb(18, 18, 18) |
#00D4FF electric blue · #00FF41 electric green |
#FFFFFF / #B0B0B0 |
| Light (default) | rgb(240, 242, 245) |
#0077AA blue · #00AA00 green |
#222222 / #111111 |
Both themes apply to the entire application window, including the HUD overlay and all dialogs. Semi-transparent glassmorphism panels are used for the dark theme; clean flat surfaces for the light theme.
BeidPrep Pro is distributed as a self-contained, single-file Windows executable. No Python installation, no Anaconda environment, no pip install — nothing.
BeidPrepPro2026.exe ← Application (double-click to launch)
templates_library.json ← Active template library (editable / replaceable)
Both files must be kept in the same folder. The application reads and writes templates_library.json from the directory where the .exe lives.
First run behaviour: If templates_library.json is missing (e.g., fresh install without the JSON), the application automatically extracts the factory-bundled default copy and writes it next to the executable.
| Requirement | Minimum |
|---|---|
| OS | Windows 10 64-bit or later |
| RAM | 4 GB (8 GB recommended for large meshes) |
| GPU | Any OpenGL 3.3-capable GPU (integrated graphics supported) |
| Disk | ~1.5 GB (executable + dependencies) |
If you have the source code and a Python 3.10+ environment with all dependencies installed:
pip install pyinstaller
pyinstaller BeidPrepPro2026.specOutput: dist/BeidPrepPro2026.exe
Key dependencies: PySide6, pyvista, vtk, numpy, google-generativeai, requests, qt_material
Copyright (c) 2026 Konstantin Arhiptsov / Beider Simulation.
All Rights Reserved.
Free for use, but source code is proprietary.
Redistribution of the compiled executable is permitted for
commercial purposes provided this copyright notice is retained.
Modification, reverse-engineering, or redistribution of the source
code in any form is strictly prohibited without prior written
permission from the copyright holder.
BeidPrep v1.0 is currently in Beta and is provided to the community as free software "as-is".
By downloading and using this software, you acknowledge the following:
No Liability: I assume no responsibility or liability for any errors, model inaccuracies, or engineering failures resulting from the use of this tool.
Engineering Judgment: This software is a productivity aid and does not replace the requirement for professional engineering judgment and thorough verification of simulation inputs and results.
Beta Status: As a Beta release, you may encounter bugs. I encourage your feedback to help improve the tool, but I provide no warranties regarding its performance or stability.
BeidPrep Pro — Engineered for solvers that don't compromise.