최종 수정: 2025-10-06 읽기 약 6분

예제 및 응용 사례

예제 1: 단일 VUV/UV 램프 반응기

시나리오: 42W VUV/UV 램프 1개가 있는 수직 원통형 반응기

파일: samples/validation_case3/validation_case3_mpss.json

설정 요점 (JSON v3.0):

json
{
    "version": "3.0",
    "reactorConfig": {
        "lampSpecs": [
            {
                "id": "LP_VUV_UV",
                "lampType": "lp",
                "power": 42.0,
                "eta": 0.2607,
                "arcLength": 0.278,
                "uvBands": [
                    {"lambda": 185, "relativeEnergy": 0.04109, ...},
                    {"lambda": 254, "relativeEnergy": 0.95891, ...}
                ]
            }
        ],
        "lampLayout": [
            {"lampId": "LP_VUV_UV", "position": [0.0, 0.0, 0.0], "direction": [0.0, 1.0, 0.0]}
        ]
    }
}

실행:

bash
cd samples
UVSim3D_DP --config validation_case3_mpss.json --mesh case3_mesh.txt --output case3_results.txt

예상 출력: 램프 근처에서 50-200 W/m² 조사량 값, 거리에 따라 감소

예제 2: 다중 램프 반응기 (24개 램프)

시나리오: 원통형 배열에 24개의 램프가 있는 산업용 Photoreactor

파일: samples/upw-reactor-24lamps-demo.json

설정 요점 (JSON v3.0):

json
{
    "version": "3.0",
    "reactorConfig": {
        "lampSpecs": [
            {
                "id": "LP150W",
                "lampType": "lp",
                "power": 150.0,
                "eta": 0.35,
                "arcLength": 0.8,
                "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.15, 0.0, 0.5], "direction": [0.0, 0.0, 1.0]},
            {"lampId": "LP150W", "dimming": 1.0, "position": [-0.15, 0.0, 0.5], "direction": [0.0, 0.0, 1.0]}
            // ... 22개 램프 더 (동일한 lampSpecs 참조)
        ]
    },
    "solverConfig": {
        "lampSegmentation": 1000,
        "numThreads": 0
    }
}

실행:

bash
UVSim3D_DP --config upw-reactor-24lamps-demo.json --mesh reactor_mesh.vtu --output fluence_24lamps.vtu

예제 3: 관심 영역용 공간 필터

시나리오: 큰 메쉬이지만 중앙 영역에만 관심

설정:

json
{
    "spatialFilter": {
        "enabled": true,
        "xMin": -0.1,
        "xMax": 0.1,
        "yMin": -10.0,
        "yMax": 10.0,
        "zMin": -10000,
        "zMax": 10000
    }
}

이점: 필터가 포인트의 90%를 제외하면 10배 빠른 계산

예제 4: MPSS vs MSSS 비교

두 모델로 동일한 케이스 실행:

bash
# MPSS 
UVSim3D_DP --config validation_case1_mpss.json --mesh mesh.vtu --output result_mpss.vtu

# MSSS 
UVSim3D_DP --config validation_case1_msss.json --mesh mesh.vtu --output result_msss.vtu

일반적인 차이: 일반적인 소독용 램프의 경우 MSSS가 정확하지만, 램프 길이가 짧거나 특수 케이스의 경우 MPSS가 적합할 수 있음. 문헌 대비 정량 검증 결과는 "MPSS·MSSS 검증" 문서를 참고하세요.

예제 5: 설정 파일 검증 (드라이 런)

시나리오: 실제 계산 전에 설정 파일의 문법과 매개변수 유효성 확인

실행:

bash
# 빠른 검증 (메쉬 로딩 및 계산 생략)
UVSim3D_DP --config my_new_reactor.json --dry

# 로그 파일 없이 빠른 검증
UVSim3D_DP --config my_new_reactor.json --dry --log off

사용 시기:

  • 새 설정 파일 작성 후 문법 오류 확인
  • JSON 형식 검증
  • 매개변수 범위 검증 (예: relativeEnergy 합이 1.0인지)
  • 램프 ID 중복 확인

출력 예제:

code
[info] === Loading Simulation Configuration ===
[info] SUCCESS: JSON loaded successfully!
[info] Lamps: 4
[info] Bands: 2
[info] Validating Configuration Done.
[info] === Dry Run Mode ===
[info] Configuration validated successfully.
[info] Dry run completed - skipping mesh loading and calculation.