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:

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

  1. Download: get the release package UVSim3D_v3.0.1_win64.zip
  2. Unzip: extract to a folder of your choice (e.g. C:\UVSim3D)
  3. Add to PATH (optional):
    • Right-click "This PC" → Properties → Advanced system settings
    • Environment Variables → System variables → Path → Edit
    • Add C:\UVSim3D\bin
  4. 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 --help

Verifying 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.txt

On 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.3

Or 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.txt

Step 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.891

The last column is the UV irradiance (W/m²) at each point.