Last updated: 2025-10-06 5 min read
System requirements
- OS: Windows 10/11 (64-bit), Linux, or macOS
- Memory: 4 GB RAM minimum (16 GB recommended for large meshes)
- Disk space: 500 MB for installation
- CPU: multi-core processor recommended (OpenMP parallelization supported)
Windows runtime requirements
Required components:
- Visual C++ Redistributable 2022 (x64) — must be installed
- Download: https://aka.ms/vs/17/release/vc_redist.x64.exe
- Without it you'll get a "VCRUNTIME140.dll not found" error
Note: VTK library DLLs ship with the executable, so no separate installation is needed.
Note: The Python package and the UDFs for CFD integration are distributed as separate programs.
Installation
Windows installation
- Download: get the release package
UVSim3D_v3.0.1_win64.zip - Unzip: extract to a folder of your choice (e.g.
C:\UVSim3D) - Add to PATH (optional):
- Right-click "This PC" → Properties → Advanced system settings
- Environment Variables → System variables → Path → Edit
- Add
C:\UVSim3D\bin
- Verify the install:cmd
UVSim3D_DP.exe --help
Linux installation
bash
# Unzip
tar -xzf UVSim3D_v3.0.1_linux64.tar.gz
cd UVSim3D
# Add to PATH (add this line to ~/.bashrc)
export PATH=$PATH:/path/to/UVSim3D/bin
# Verify the install
UVSim3D_DP --helpVerifying the install
Run a validation case to confirm the install:
bash
cd samples
UVSim3D_DP --config validation_case3_mpss.json --mesh case3_mesh.txt --output test_output.txtOn success, a log file and an output file are created.
Quick-start tutorial
Step 1: Prepare a mesh file
Create a simple text file nodes.txt containing the calculation points (x, y, z coordinates, in meters):
code
0.0, 0.0, 0.1
0.0, 0.0, 0.2
0.0, 0.0, 0.3Or use a CFD mesh in VTU/VTKHDF/CGNS format instead.
Step 2: Create a case file
Create my_reactor.json (JSON v3.0 format):
json
{
"version": "3.0",
"title": "My first UV reactor simulation",
"description": "Single LP lamp reactor",
"id": "reactor_001",
"reactorConfig": {
"lampSpecs": [
{
"id": "LP150W",
"lampType": "lp",
"description": "150W LP lamp",
"power": 150.0,
"eta": 0.35,
"arcLength": 0.8,
"diameter": 0.015,
"sleeveDia": 0.025,
"sleeveThickness": 0.002,
"uvBands": [
{
"lambda": 254,
"waterRI": 1.33,
"waterUVT": 0.95,
"relativeEnergy": 1.0,
"sleeveRI": 1.5,
"sleeveUVT": 0.90,
"gef": 1.0
}
]
}
],
"lampLayout": [
{
"lampId": "LP150W",
"dimming": 1.0,
"position": [0.0, 0.0, 0.0],
"direction": [0.0, 0.0, 1.0]
}
]
},
"solverConfig": {
"radiationModel": "msss",
"rootFindingMethod": "brents",
"enableShadowing": false,
"numThreads": 0,
"relativeTolerance": 1.0e-5,
"lampSegmentation": 1000,
"maxIteration": 50
}
}Step 3: Run the simulation
bash
UVSim3D_DP --config my_reactor.json --mesh nodes.txt --output results.txtStep 4: Check the results
Check the output file results.txt:
code
# UVSim3D Results
# nodes: 3, bands: 1
# x, y, z, band1, lamda = 254nm
0.000000, 0.000000, 0.100000, 125.456
0.000000, 0.000000, 0.200000, 98.234
0.000000, 0.000000, 0.300000, 76.891The last column is the UV irradiance (W/m²) at each point.