This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
Range FEA is a Finite Element Analysis (FEA) desktop application for computer-aided engineering. It provides a Qt6-based GUI for mesh generation, simulation setup, and visualization of engineering analysis results.
# Initialize submodules (first time only)
git submodule init && git submodule update --remote
# Install prerequisites (Linux/macOS, requires sudo)
sudo ./src/range-build-tools/prereqs.sh
# Configure and build (Release)
cmake -S src -B build-Release && cmake --build build-Release --parallel
# Build Debug
cmake -S src -B build-Debug -DCMAKE_BUILD_TYPE=Debug && cmake --build build-Debug --parallel
# Create installation packages
cmake --build build-Release --target packageTetGen (mesh generation)
↓
range-base-lib (rbl_*) - Core utilities: vectors, matrices, logging, job management
↓
range-model-lib (rml_*) - FEA model: elements, nodes, materials, boundary conditions
↓
range-solver-lib (rsolver*) - Numerical solvers: heat, fluid, stress, acoustics, etc.
↓
range-cloud-lib - Cloud integration services
↓
range-gui-lib - Qt widgets and UI components
↓
├── fea (Qt6 GUI application)
└── fea-solver (CLI solver executable)
src/range-base-lib/- Base library with math primitives (RBL prefix)src/range-model-lib/- Model definitions and file I/O (RML prefix)src/range-solver-lib/- FEA solvers for various physics (RSolver prefix)src/range-cloud-lib/- Cloud service integrationsrc/range-gui-lib/- Shared Qt GUI componentssrc/fea/- Main GUI applicationsrc/fea-solver/- Standalone CLI solversrc/TetGen/- Tetrahedral mesh generator (third-party)
- Libraries use Qt6 (requires 6.10+)
- OpenMP for parallelization
- OpenGL for 3D visualization
- Static library linking (BUILD_SHARED_LIBS=OFF)
- C++17 standard
Located in range-solver-lib:
rsolverheat.cpp- Heat transferrsolverfluid.cpp- Fluid dynamicsrsolverstress.cpp- Structural stressrsolveracoustic.cpp- Acousticsrsolverelectrostatics.cpp- Electrostaticsrsolvermagnetostatics.cpp- Magnetostaticsrsolverradiativeheat.cpp- Radiative heat transfer
The fea application uses:
gl_widget.cpp- OpenGL rendering widgetmodel.cpp/session.cpp- Model and session managementdraw_engine_*.cpp- Geometry drawing toolssolver_manager.cpp- Solver process management