Skip to main content

PlantDesign Toolkit

공장설계·공정 계산을 위한 Python / HTTP API — version 0.11.0

PlantDesign Toolkit is a research-alpha collection of 67 explicit calculation methods for process plant design, equipment screening, techno-economic assessment and environmental accounting. Calculators can run independently, or exchange versioned values through a persisted calculation graph. The package includes Python APIs, a CLI, a local JSON HTTP server, SQLite persistence and an optional DWSIM bridge. There is no application web UI.

모듈의 목적·필수/선택 입력·단위·입력 예제·출력 파라미터를 이 README 아래에 모두 공개합니다. The tables are visible in the README, rather than confined to another document or a collapsed section. Nested example structures are shown as complete JSON inputs; complete structured output examples are linked beside each method.

Distribution Location
Source / issues https://github.com/lyullee/plantdesign-toolkit
PyPI package name plantdesign-toolkit
Python import plantdesign
Command plantdesign
License GPL-3.0-only; retain upstream notices for bundled DWSIM-derived models
Status Research alpha / preliminary design, with bounded software and balance verification

Start with a single calculation

Requires Python 3.11 or later. The ordinary calculators have no third-party runtime dependency. DWSIM execution is optional and requires a separately installed engine and compatible Python.NET environment.

python -m pip install plantdesign-toolkit
from plantdesign import sdk

spec = sdk.describe("pump.size")
print(spec["required_inputs"])
print(spec["input_contract"], spec["output_contract"])

inputs = sdk.example("pump.size")  # independent, explicitly assumed example
inputs["volume_flow"] = {"value": 36, "unit": "m3/h"}
result = sdk.calculate("pump.size", inputs)
print(result["values"]["electric_power"], result["units"]["electric_power"])
print(result["assumptions"], result["warnings"], result["checks"])

sdk.calculate() is a pure calculation interface: it does not open a database or start a server. Invalid inputs raise plantdesign.errors.DesignError. Catch DesignError when integrating with another application. Unknown methods raise NotFound, a domain error. Do not interpret a nonempty result as approval of a plant design.

from plantdesign.errors import DesignError
try:
    result = sdk.calculate("pump.size", inputs)
except DesignError as error:
    print(error.as_dict())

What is an input or output?

  • Method slug: the stable identifier, for example thermal.exchanger_rating.
  • Quantity: either { "value": 3, "unit": "bar" } or a number in the method's documented SI convention. Supplying units explicitly is recommended at application boundaries. Absolute pressure and pressure difference are distinct dimensions; gauge conversions need an atmospheric reference.
  • Fractions: decimal 0–1, or an accepted quantity such as { "value": 72, "unit": "%" }. Each method may impose a stricter bound, such as positive efficiency.
  • Money: currency is explicit in the input context. A money object must use the exact declared unit, such as USD, USD/kg or USD/year. No implicit exchange rate or current price lookup is performed.
  • Nested inputs: arrays and dictionaries represent streams, equipment, cost items, scenarios, distributions and coefficients. The complete assumed example below each method shows the field names and structure. Required conditional inputs still apply even when a registry entry labels the top-level key optional.
  • Result: values contains numbers, nested records, flags or null; units contains their reported units. normalized_inputs and input_units describe the SI interpretation. assumptions, warnings, checks, method and verification_status carry interpretation and provenance.
  • Conditional outputs: a quantity that is undefined, indeterminate or inapplicable can be null. For example, a product-normalized intensity is undefined when production is zero; a unique IRR is not selected for an ambiguous cash flow. Full examples are representative outputs, not an exhaustive schema for every branch.

The bundled prices, heat-transfer coefficients, kinetics, property tables, emission factors, correlations and distributions are assumed examples, not vendor guarantees, current market data or official regional factors. Replace both the value and its source/date/boundary before assessing a real case. No textbook lookup tables are distributed.

Discover the modules

from plantdesign import sdk
all_methods = sdk.methods()
pump_methods = sdk.methods("E02")
catalog = sdk.catalog()  # 44 organizing families; 67 actual calculation methods
spec = sdk.describe("assessment.process")

The 44 family IDs organize the design domain; they are not 44 additional calculators. Some families are implemented through DB, provenance, connections or reporting services. A family being mapped to code does not mean every equation, operating regime or regulatory requirement in a reference work is implemented. See source coverage and remaining work.

Store calculations in SQLite

from plantdesign import sdk
service = sdk.open_service("data/example.sqlite3")
run = service.calculate("pump.size", sdk.example("pump.size"))
saved = service.get_resource("runs", run["id"])
print(saved["status"], saved["result"])

The DB is a separate SQLite file, not data embedded in Python code. open_service() explicitly creates/initializes it. The schema version is 3. A separate DBMS server is not required. Persisted calculations store failed runs as well as successful ones; inspect status and error. Project and case IDs are optional for standalone calculations and required by project-specific integration workflows.

DB resources include projects, cases, chemicals, properties, equipment, streams, connections, reference-data, runs, workflows, plans, plan-runs, plan-batches, design-packages, documents and audit records. Updates use a revision number. A stale competing update returns a conflict rather than silently replacing a newer record. See architecture and data contracts.

Connect calculations and compare scenarios

import json
from pathlib import Path
from plantdesign import sdk
from plantdesign.integration import IntegrationService

service = sdk.open_service("data/example.sqlite3")
integration = IntegrationService(service)
blueprint = json.loads(Path("examples/integrated_project.json").read_text(encoding="utf-8"))
created = integration.import_blueprint(blueprint)
baseline = integration.run(created["plan_id"], {})
reused = integration.run(created["plan_id"], {})
batch = integration.scenarios(created["plan_id"], {
    "scenarios": [
        {"name": "baseline", "parameters": {}},
        {"name": "head margin 20%", "parameters": {"head_margin": 0.2}}
    ]
})
print(baseline["status"], reused["summary"], batch["status"])

This example uses the repository's examples/ directory. An installed package also exposes the bundled blueprint in api_examples.json or through GET /api/examples/integrated. The integration graph supports up to 128 steps and 50 selected outputs. $ref connects a preceding result, $param binds a plan parameter, and $reference binds versioned reference data. The all-method example exercises 67 methods; it is a software coverage fixture, not a claim that all 67 form one physically solved process.

Reuse checks case, method/version, normalized inputs, data revisions, fingerprints and stored result hashes. A reused computation still produces an identifiable run record and lineage. A parameter change recomputes affected downstream steps. Different software versions are not silently treated as the same calculation. See reproduction and recovery.

CLI

plantdesign --version
plantdesign methods
plantdesign describe pump.size
plantdesign example pump.size
plantdesign catalog
plantdesign --db data/example.sqlite3 calculate pump.size --input examples/pump.json
plantdesign --db data/example.sqlite3 design import --input examples/integrated_project.json

describe, example and catalog do not initialize a DB. Other commands use the selected DB. python -m plantdesign is equivalent to the installed entry point. Windows source checkouts can also use run.ps1 and start-api.ps1; PLANTDESIGN_PYTHON can select the interpreter. The CLI returns 0 for success, 2 for calculation/input/partial-run failure, and 1 for storage or file-input errors.

Local HTTP API

plantdesign --db data/example.sqlite3 serve --host 127.0.0.1 --port 8765
Request Purpose / input
GET /, /health JSON discovery and version
GET /api/catalog Module families, method contracts and examples
GET /api/methods, /api/methods/{slug} Method metadata; individual method also includes input/output contracts
GET /api/modules, /api/source-coverage Organizing families and implemented/remaining scope
GET /api/samples/{slug} Assumed input for a method
GET /api/examples/integrated, /api/examples/scenarios Integration request examples
POST /api/calculations {method, inputs, case_id?}
POST /api/workflows Connected calculation graph
POST /api/workspaces {name, case_name} atomic project/case creation
POST /api/workspaces/quick {} create/reuse a standalone calculation workspace
POST /api/design/import Import project, references and plan blueprint
POST /api/plans/{id}/preview Preview parameter changes
POST /api/plans/{id}/run {parameters?, force?, previous_run_id?, expected_revision?}
POST /api/plans/{id}/scenarios {parameters?, scenarios:[{name,parameters}]}
POST /api/plans/{id}/compare {run_ids, metrics?}
GET /api/{resource}, /api/{resource}/{id} Filtered/paged list or stored record
POST /api/{resource} Create a supported resource
PATCH /api/{resource}/{id} Revision-checked update
GET /api/runs/{id}/report, /api/workflows/{id}/report, /api/plan-runs/{id}/report HTML calculation artifact
POST /api/plan-runs/{id}/package {output_root?} create a report package
GET /api/plan-runs/{id}/package-download Download a previously created, hash-checked ZIP

POST/PATCH require Content-Type: application/json. The body limit is 1 MiB and JSON container nesting is limited to 128 levels. Truncated bodies, duplicate keys, nonfinite JSON numbers and malformed JSON are rejected. Successful calculations return 201; failed or partially completed executions return 422 with their recorded status. Other request errors return a JSON error. The local server has no user authentication or authorization layer and is intended for the documented localhost use case. HTML reports are generated outputs, not an application UI.

Optional DWSIM connection

The pure calculators do not import DWSIM. The bridge runs a separately installed engine in a worker process. Configure DWSIM_BIN, PLANTDESIGN_DWSIM_PYTHON and, if needed, PLANTDESIGN_DWSIM_RUNTIME. Installing the dwsim extra installs Python.NET, not the DWSIM engine. The recorded native-engine tests used DWSIM 9.0.5 on Windows; other engine versions/platforms need their own compatibility verification.

Request Purpose
GET /api/dwsim/status, POST /api/dwsim/probe with {} Installation / actual worker probe
GET /api/dwsim/presets Pump, heat exchanger, distillation/separation and integrated-process definitions
POST /api/dwsim/studies {case_id,preset_id,scenarios?}; 202 background submission
GET /api/dwsim/studies/{id} Status, scenario results, snapshots and topology
GET /api/dwsim/studies?case_id={id} Study history
POST /api/dwsim/studies/{id}/plan {index} bind a successful scenario to a downstream plan
GET /api/dwsim/assessment-basis Assumed economic/environmental basis
POST /api/dwsim/studies/{id}/assessment {basis} compare successful native scenarios
GET /api/dwsim/assessment-risk Assumed uncertainty settings
POST /api/dwsim/studies/{id}/risk {basis,uncertainty_options} correlated uncertainty comparison

The integrated native example connects a pump, two-fluid preheater, pressure valves, an eight-stage methanol/water column and a vapor/liquid separator. Its 18 objects and 17 connections are explicit; hot-water utility boundaries are included. It uses a Raoult ideal-mixture basis at an assumed 36 mol% methanol feed. It is not a validated real plant. Native solver completion is checked independently against mass, component and equipment energy balances, with a 1e-5 relative balance threshold for the recorded example.

assessment.process uses immutable successful native snapshots for equipment-cost scaling, CAPEX/OPEX, sales, taxes/cash flows, NPV/IRR and disposition-based environmental inventory. assessment.risk changes prices and emission factors at fixed process quantities using common seeded draws. It does not re-solve the physical plant per random draw. A heat-recovery target is never automatically subtracted from a solved native duty. See DWSIM model provenance.

Verification, history and resuming work

python -m unittest discover -s tests -t .
python tools/verify.py --label public_release
python tools/verify_installed_package.py --label installed_public_release
python tools/verify_physics.py --label public_physics

Use a new output label for each acceptance run. The six verification phases are input validation, hand-checkable formulas, extreme/boundary values, module connections, regression and end-to-end execution. Historical 0.10.1 verification passed 362 tests; that count is historical, not an automatic guarantee for a later revision. Current release evidence and exact counts are recorded in verification.

Original prose, PDF pages, extracted textbook text, scanned diagrams, proprietary lookup tables, the external DWSIM installation, local databases and session logs are not part of the public source allowlist. Bibliographic references identify the engineering background without redistributing the books. Code comments explain the model and equations in independently written language. Required open-source license text and attribution remain intact; those notices must not be removed as "duplicate sentences".

Project code is distributed under GPL-3.0-only for a conservative, compatible public distribution with the GPLv3 DWSIM-derived examples. This is not an official DWSIM or textbook-author product. Software checks do not establish code certification, design approval, environmental permitting, investment approval or site validation. The remaining limitations are recorded per method rather than hidden behind a single global status label.

Contributing and citation

Report a reproducible issue with method slug, version, minimal input, explicit units, expected result and the calculation's assumptions. Use fabricated or shareable data in public issues. A method change should update equations, input/output contracts, assumed examples and the appropriate independent verification. See CONTRIBUTING and CITATION.cff. DOI/archive links are added only after the corresponding publication is confirmed; no unissued DOI is claimed.

The parameter reference below is generated by python tools/build_public_docs.py from registry contracts and executed assumed examples. The generator template is docs/README_GUIDE.md. Do not edit generated tables without updating the generator or model metadata.

All 67 calculation methods at a glance

Method Purpose / model
units.convert 단위변환 — 같은 차원의 단위변환; 게이지압은 기준 대기압 필요
balance.mix 질량기준 혼합 — 비반응 정상 혼합; streams=[{name,mass_flow,composition}]
balance.split 질량기준 분할 — splits=[{name,fraction}]; 성분 선택성이 없는 분할
balance.reaction 전환율 기준 단일 반응 — 반응물 계수 음수·생성물 양수; 분자량 기준 질량수지 검사
thermal.duty 현열·잠열 부하 — 제공된 평균 비열·잠열 기반; 양의 부하는 열 투입
thermal.circulation 폐회로 순환계 열수지 — 일정 물성 액체 폐회로, 축동력 전량 소산·모터손실 외기 방출의 등가 모델
hydraulics.pipe 배관 압력손실 — volume_flow/mass_flow 중 하나 필수; 정상 단상 비압축성 Newtonian 유체; 천이영역 제외
pump.size 펌프 양정·동력 — 지정 효율의 예비 선정; NPSH는 흡입 플랜지 정압 기준
tank.size 수직 원통 탱크 용량 — 직접 요구체적 또는 유량*저장시간 입력; 원통부 용량
thermal.exchanger 열교환기 LMTD 기본설계 — 지정 열부하·온도·유효 U 사용; 단상 기본설계
utilities.demand 유틸리티 소요량 — 가열부하가 있으면 스팀 엔탈피 차이, 냉각부하가 있으면 냉각수 비열·온도상승 필수
cost.equipment 장치 구매비·보정 — 사용자 제공 기준비용·지수; 통화 변경은 환율 필수, 날짜 변경은 비용지수 필수
cost.capex 설치비·총투자비 — 설치계수에 구매비 포함; 간접비·OSBL·예비비 별도 집계
cost.opex 운영비·단위 제조원가 — items=[{name,category,annual_quantity,quantity_unit,unit_price,currency?}]
phase.flash 지정 K값 기액 플래시 — Rachford-Rice·2상/단일상 판정; K≈1에서는 기화율 미결정 반환
batch.capacity 배치 사이클·생산능력 — 독립 병렬 용기·순차 레시피·완성 배치 기준
gas.compressor 이상기체 다단 압축기 — 일정 cp·gamma, 동일 단별 압력비, 완전 중간냉각 선택
gas.blower 저압 송풍기 — ΔP/P<=0.1, 입구 실제 체적유량
valve.liquid 비초크 액체 조절밸브 — 난류·비초크·Fp=1; FL 제공, 플래싱/초크는 거부
thermal.phase_change 응축기·리보일러·증발기 — mass_flow 또는 molar_flow+molecular_weight; 상변화측 등온
mixing.power 교반 동력·토크 — 단일 임펠러, Re<=10 또는 Re>=10000; 제공된 계수
distillation.binary 이성분 증류 단수·환류비 — 이상계·일정 상대휘발도·포화액 feed(q=1), McCabe-Thiele 단수
column.hydraulics 트레이·충전탑 예비 수력학 — 제공된 용량계수·압력손실 성능자료; 상세 내부구조 검토는 별도
separation.stages 흡수·스트리핑·추출 평형단 — Kremser, 선형 평형·신선 상대상·희석 용질<=0.1
separation.packed_height HTU/NTU 충전높이 — 선형 구동력 변화·제공된 총괄 HTU
solids.handling 분체 저장·벨트 이송 — 벌크용량·수평/상향 벨트 예비 용량·동력
solids.screen 분급 회수율·물질수지 — 미립/조립 2성분군, 제공된 회수율
solids.grind Bond 분쇄 동력 — 시험 일지수와 80% 통과입도, 원식 입도 um
solids.settling Stokes 침강·면적 — 희석 구형 입자 Re_p<=0.1
solids.centrifuge Sigma 원심분리 용량 — 제공된 등가 Sigma 면적·효율, Stokes 입자
solids.filter 정압 케이크 여과 — 비압축성 케이크, 초기 케이크 0; 면적 또는 시간 산정
solids.cyclone Lapple 사이클론 예비 성능 — 제공된 유효 회전수·손실계수, 단일 입경 효율
solids.dryer 건조기 수지·열부하·면적 — 습량기준 수분·수분수지 공기량; 제공 건조속도로 면적 산정
economics.project 현금흐름·NPV·IRR·회수기간 — 연말 현금흐름·정액 감가상각·제공 세율·균등 원리금; 비전형 현금흐름 IRR 미선택
economics.sensitivity 시나리오·민감도·손익분기 — OAT 절대 시나리오, project NPV 기준 비교; 확률분석 별도
materials.select 재질·균일 부식 검토 — 제공된 매질·온도·농도·부식률 데이터 범위 내 선별
controls.review 계기·제어루프·알람·인터록 초안 — 제공된 태그·범위·설정값·동작의 일관성 검토, 독립 단순 루프
thermal.pinch 핀치·복합곡선·최소 유틸리티 — 일정 CP 현열 스트림 열 캐스케이드
process.routes 공정경로·입지 대안·Pareto 비교 — 지정 대안·제약·정규화 가중 점수
vessel.preliminary 내압 용기 동체·헤드·중량 예비 계산 — 원통·2:1 타원 헤드; 코드 인증 아님
reactor.ideal 등온 CSTR·PFR·배치 반응기 — 일정 밀도·단일 power-law 반응
separator.gravity 기액·액액 중력 분리조 — 지정 액적/계수·비포밍 예비 설계
separation.adsorption 흡착 작업용량·베드 — 단일 성분 Langmuir·지정 이용률
separation.membrane 막분리 투과량·면적·물질수지 — 지정 투과도·배제율 일정
separation.ion_exchange 이온교환 수지·재생량 — 지정 등가 작업용량
separation.crystallization 결정화·침전 평형 수지 — 무수 결정·용매 증발·평형 용해도
design.optimize 제약조건 단일변수 설계 탐색 — 2~200점 유계 격자 탐색; 연속 최적성 보장 없음
economics.uncertainty 경제성 Monte Carlo 불확실성 — 독립 일양·삼각 분포, 2000회 이하
safety.hazop_fmea HAZOP·FMEA·조치 검토 기록 — 사용자 위험 기록·담당·종결 근거; 자동 안전 승인 아님
safety.relief 단상 방출 오리피스 예비 면적 — 기체/비압축성 액체; 인증 용량·규격 적합 판정 아님
environment.inventory 온실가스·폐수·폐기물·용수 부하 — 명시 경계·출처별 활동량; 전과정 LCA·허가 판정 별도
layout.review 2D 배치·이격·배관거리 검토 — 제공 설치 경계·이격 근거; 3D·법규 자동 판단 아님
properties.interpolate 온도별 사용자 물성 보간 — 구간 선형 보간·범위 외 거부
pump.operating_point 제조사 곡선·시스템 운전점 — 단조 Q-H 곡선 구간 보간·범위 내 교점
utilities.inventory 전력·스팀·질소·공기 등 집계 — 유틸리티·차원별 소요량 합산
hydraulics.economic 경제 관경 대안 비교 — 동일 유량 후보 설치비+압손 전력비
assessment.process 공정 연계 경제성·환경성 종합 평가 — 명시 견적·단가·처분·배출계수·경계; 가정 예비 평가
balance.recycle 전환·회수·퍼지 재순환 수지 — 단일 반응물 선형 정상 재순환 고정점
environment.treatment 대기·폐수·폐기물 처리단계 부하 비교 — 제공 물질별 제거율·직렬 처리 단계; 제거=소멸 아님
environment.receiving_water 방류 수질·열오염 완전혼합 수지 — 단순 완전혼합·열부하; 방류 허가 모델 아님
environment.noise 복수 음원 예비 소음 합산 — 독립 점음원 자유음장·지정 감쇠; 법적 적합 판정 별도
environment.impacts 인벤토리 영향범주 특성화 — 사용자 방법/연도별 특성화계수·범주별 합산; LCA 인증 아님
thermal.pinch_segmented 잠열·구간 CP 핀치 분석 — 구간별 CP·등온 잠열 이벤트 캐스케이드; 열교환망 상세 합성 별도
thermal.exchanger_rating 오염저항·ε-NTU 출구온도 성능평가 — 향류/병류 일정 CP 두 유체; 출구 온도·부하·엔트로피
reactor.nonisothermal 비등온 PFR·배치 반응·냉각 연성 — 단일 power-law·Arrhenius·일정 밀도/CP·적응 RK4; 강성 다중반응 제외
design.multivariable 다변수 제약 조합 탐색 — 1~4변수·2500개 유한 조합 내 최선; 연속 전역 최적성 보장 없음
assessment.risk 상관 단가·배출계수 경제환경 불확실성 — 고정 공정량·Gaussian copula·일양/삼각 분포; 20~500표본

Complete module input and output reference

01. units.convert — 단위변환

Purpose / operating model: 같은 차원의 단위변환; 게이지압은 기준 대기압 필요

Equations / algorithm: SI 선형·온도 오프셋 변환

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
value yes integer declared in object / not applicable Value
source_unit yes string declared in object / not applicable Source unit
target_unit yes string declared in object / not applicable Target unit
atmospheric_pressure optional / conditional raw declared in object / not applicable Atmospheric pressure

Complete assumed input example:

{
  "source_unit": "m",
  "target_unit": "mm",
  "value": 1
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
converted_value number mm Converted value

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: registry.py.

Example assumptions: Explicit assumed example; the input and unit contract still applies.

02. balance.mix — 질량기준 혼합

Purpose / operating model: 비반응 정상 혼합; streams=[{name,mass_flow,composition}]

Equations / algorithm: 성분별 질량 보존

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
streams yes array declared in object / not applicable Streams

Complete assumed input example:

{
  "streams": [
    {
      "composition": {
        "A": 0.8,
        "B": 0.2
      },
      "mass_flow": {
        "unit": "kg/h",
        "value": 1000
      },
      "name": "원료 1"
    },
    {
      "composition": {
        "A": 0.1,
        "B": 0.9
      },
      "mass_flow": {
        "unit": "kg/h",
        "value": 500
      },
      "name": "원료 2"
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
mass_flow number kg/s Mass flow
component_mass_flows object kg/s Component mass flows
composition object mass_fraction Composition
mass_balance_residual number kg/s Mass balance residual

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.balance.

Example assumptions: 정상상태·비반응 혼합; 조성은 질량분율; 온도·엔탈피 혼합은 별도 열수지 필요

03. balance.split — 질량기준 분할

Purpose / operating model: splits=[{name,fraction}]; 성분 선택성이 없는 분할

Equations / algorithm: 분할비 합=1

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
stream yes object declared in object / not applicable Stream
splits yes array declared in object / not applicable Splits

Complete assumed input example:

{
  "splits": [
    {
      "fraction": 0.3,
      "name": "a"
    },
    {
      "fraction": 0.7,
      "name": "b"
    }
  ],
  "stream": {
    "composition": {
      "A": 1
    },
    "mass_flow": 10
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
outlets array nested structure / not applicable Outlets
mass_balance_residual number kg/s Mass balance residual

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.balance.

Example assumptions: 성분별 선택성이 없는 단순 분할

04. balance.reaction — 전환율 기준 단일 반응

Purpose / operating model: 반응물 계수 음수·생성물 양수; 분자량 기준 질량수지 검사

Equations / algorithm: n_out=n_in+nu*extent

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
component_molar_flows yes object declared in object / not applicable Component molar flows
stoichiometry yes object declared in object / not applicable Stoichiometry
molecular_weights yes object declared in object / not applicable Molecular weights
key_reactant yes string declared in object / not applicable Key reactant
conversion yes number 1 Conversion; fraction, 0–1 unless a stricter method condition applies

Complete assumed input example:

{
  "component_molar_flows": {
    "H2": 2,
    "O2": 1
  },
  "conversion": 0.5,
  "key_reactant": "H2",
  "molecular_weights": {
    "H2": 0.002,
    "H2O": 0.018,
    "O2": 0.032
  },
  "stoichiometry": {
    "H2": -2,
    "H2O": 2,
    "O2": -1
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
reaction_extent number mol/s Reaction extent
component_molar_flows object mol/s Component molar flows
component_mass_flows object kg/s Component mass flows
mass_flow number kg/s Mass flow
composition object mass_fraction Composition
mass_balance_residual number kg/s Mass balance residual

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.balance.

Example assumptions: 단일 반응의 지정 전환율 모델; 화학양론 계수는 반응물 음수·생성물 양수; 반응속도·평형·열수지는 별도

05. thermal.duty — 현열·잠열 부하

Purpose / operating model: 제공된 평균 비열·잠열 기반; 양의 부하는 열 투입

Equations / algorithm: Q=m*Cp*(Tout-Tin)+m*latent*fraction+additional

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
mass_flow yes quantity {value, unit} or SI number kg/s Mass flow; mass_flow
heat_capacity yes quantity {value, unit} or SI number J/(kg*K) Heat capacity; heat_capacity
inlet_temperature yes quantity {value, unit} or SI number K Inlet temperature; temperature
outlet_temperature yes quantity {value, unit} or SI number K Outlet temperature; temperature
latent_heat optional / conditional quantity {value, unit} or SI number J/kg Latent heat; specific_energy
phase_change_fraction optional / conditional number declared in object / not applicable Phase change fraction
additional_heat_duty optional / conditional quantity {value, unit} or SI number W Additional heat duty; power

Complete assumed input example:

{
  "heat_capacity": {
    "unit": "kJ/(kg*K)",
    "value": 4.2
  },
  "inlet_temperature": {
    "unit": "degC",
    "value": 20
  },
  "mass_flow": {
    "unit": "kg/s",
    "value": 5
  },
  "outlet_temperature": {
    "unit": "degC",
    "value": 40
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
sensible_heat_duty number W Sensible heat duty
latent_heat_duty number W Latent heat duty
total_heat_duty number W Total heat duty
heating_duty number W Heating duty
cooling_duty integer W Cooling duty

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.thermal.

Example assumptions: 제공된 평균 비열 및 잠열 사용; 양의 열부하는 유체에 가하는 열; 반응열 등은 부호를 정의한 additional_heat_duty로 입력

06. thermal.circulation — 폐회로 순환계 열수지

Purpose / operating model: 일정 물성 액체 폐회로, 축동력 전량 소산·모터손실 외기 방출의 등가 모델

Equations / algorithm: Qcool=Qheat+Pshaft; Tcool_in=Theated+Pshaft/(m*Cp); Qheat+Pelectric=Qcool+Qmotor

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
mass_flow yes quantity {value, unit} or SI number kg/s Mass flow; mass_flow
heat_capacity yes quantity {value, unit} or SI number J/(kg*K) Heat capacity; heat_capacity
return_temperature yes quantity {value, unit} or SI number K Return temperature; temperature
heated_temperature yes quantity {value, unit} or SI number K Heated temperature; temperature
pump_shaft_power yes quantity {value, unit} or SI number W Pump shaft power; power
hot_water_mass_flow yes quantity {value, unit} or SI number kg/s Hot water mass flow; mass_flow
hot_water_heat_capacity yes quantity {value, unit} or SI number J/(kg*K) Hot water heat capacity; heat_capacity
hot_water_inlet_temperature yes quantity {value, unit} or SI number K Hot water inlet temperature; temperature
cooling_water_heat_capacity yes quantity {value, unit} or SI number J/(kg*K) Cooling water heat capacity; heat_capacity
cooling_water_inlet_temperature yes quantity {value, unit} or SI number K Cooling water inlet temperature; temperature
cooling_water_outlet_temperature yes quantity {value, unit} or SI number K Cooling water outlet temperature; temperature
steam_condensing_temperature yes quantity {value, unit} or SI number K Steam condensing temperature; temperature
assumption_source yes string declared in object / not applicable Assumption source
pump_electric_power optional / conditional quantity {value, unit} or SI number W Pump electric power; power

Complete assumed input example:

{
  "assumption_source": "설명용 가정값; 실측 물성·업체 견적 아님",
  "cooling_water_heat_capacity": 4200,
  "cooling_water_inlet_temperature": {
    "unit": "degC",
    "value": 10
  },
  "cooling_water_outlet_temperature": {
    "unit": "degC",
    "value": 15
  },
  "heat_capacity": 4200,
  "heated_temperature": {
    "unit": "degC",
    "value": 40
  },
  "hot_water_heat_capacity": 4200,
  "hot_water_inlet_temperature": {
    "unit": "degC",
    "value": 90
  },
  "hot_water_mass_flow": 10,
  "mass_flow": 10,
  "pump_electric_power": 1200,
  "pump_shaft_power": 1000,
  "return_temperature": 293.15,
  "steam_condensing_temperature": {
    "unit": "degC",
    "value": 120
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
heating_duty number W Heating duty
cooling_duty number W Cooling duty
pump_heat_to_loop number W Pump heat to loop
motor_heat_to_ambient number W Motor heat to ambient
cooler_inlet_temperature number K Cooler inlet temperature
return_temperature number K Return temperature
hot_water_outlet_temperature number K Hot water outlet temperature
cooling_water_mass_flow number kg/s Cooling water mass flow
cooling_water_temperature_rise number delta_K Cooling water temperature rise
loop_energy_residual number W Loop energy residual
total_energy_residual number W Total energy residual

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.thermal.

Example assumptions: 가정 출처: 설명용 가정값; 실측 물성·업체 견적 아님; 일정 비열·정상상태·비압축성 액체; 순환 질량 유출입 없음; 펌프 축동력 전부가 펌프 내부·배관·조절밸브에서 유체 열로 소산; 모터 손실은 외기로 방출; 기계적 소산을 가열기 이후 냉각기 이전에 집중시킨 등가 모델; cooler_inlet_temperature는 혼합된 열적 등가 온도; 배관 외부 열손실 0; 열교환기 압력손실은 사용자 입력 배관 등가 저항에 포함; 스팀은 별도 2차 온수 공급기를 가열; 냉각수는 외부 공급, 공급원 냉동기·펌프 동력은 경계 밖

07. hydraulics.pipe — 배관 압력손실

Purpose / operating model: volume_flow/mass_flow 중 하나 필수; 정상 단상 비압축성 Newtonian 유체; 천이영역 제외

Equations / algorithm: Darcy-Weisbach; Colebrook; laminar f=64/Re

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
density yes quantity {value, unit} or SI number kg/m3 Density; density
viscosity yes quantity {value, unit} or SI number Pa*s Viscosity; viscosity
internal_diameter yes quantity {value, unit} or SI number m Internal diameter; length
length yes quantity {value, unit} or SI number m Length; length
volume_flow optional / conditional quantity {value, unit} or SI number m3/s Volume flow; volume_flow
mass_flow optional / conditional quantity {value, unit} or SI number kg/s Mass flow; mass_flow
roughness optional / conditional quantity {value, unit} or SI number m Roughness; length
minor_loss_coefficient optional / conditional number declared in object / not applicable Minor loss coefficient
fittings optional / conditional array declared in object / not applicable Fittings
max_velocity optional / conditional quantity {value, unit} or SI number m/s Max velocity; velocity
max_pressure_drop optional / conditional quantity {value, unit} or SI number Pa Max pressure drop; pressure_difference

Complete assumed input example:

{
  "density": {
    "unit": "kg/m3",
    "value": 1000
  },
  "fittings": [
    {
      "count": 4,
      "k": 0.9,
      "name": "사용자 지정 엘보"
    },
    {
      "count": 2,
      "k": 0.2,
      "name": "사용자 지정 밸브"
    }
  ],
  "internal_diameter": {
    "unit": "mm",
    "value": 100
  },
  "length": {
    "unit": "m",
    "value": 100
  },
  "max_velocity": {
    "unit": "m/s",
    "value": 3
  },
  "roughness": {
    "unit": "mm",
    "value": 0.045
  },
  "viscosity": {
    "unit": "cP",
    "value": 1
  },
  "volume_flow": {
    "unit": "m3/h",
    "value": 36
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
volume_flow number m3/s Volume flow
mass_flow number kg/s Mass flow
velocity number m/s Velocity
reynolds number 1 Reynolds
darcy_friction_factor number 1 Darcy friction factor
flow_regime string nested structure / not applicable Flow regime
total_minor_loss_coefficient number 1 Total minor loss coefficient
friction_pressure_drop number Pa Friction pressure drop
minor_pressure_drop number Pa Minor pressure drop
total_pressure_drop number Pa Total pressure drop
head_loss number m Head loss

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.hydraulics.

Example assumptions: 정상상태 단상 비압축성 Newtonian 유체; Darcy 마찰계수 사용; Fanning 계수와 구분; 관경은 실제 내경; 정수두·경계 압력차는 펌프 모듈에서 별도 계산

08. pump.size — 펌프 양정·동력

Purpose / operating model: 지정 효율의 예비 선정; NPSH는 흡입 플랜지 정압 기준

Equations / algorithm: H=deltaP/(rho*g)+deltaZ+loss/(rho*g); P=rho*g*Q*H/efficiency

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
volume_flow yes quantity {value, unit} or SI number m3/s Volume flow; volume_flow
density yes quantity {value, unit} or SI number kg/m3 Density; density
source_pressure yes quantity {value, unit} or SI number Pa Source pressure; pressure
destination_pressure yes quantity {value, unit} or SI number Pa Destination pressure; pressure
pump_efficiency yes object 1 Pump efficiency; fraction, 0–1 unless a stricter method condition applies
elevation_difference optional / conditional quantity {value, unit} or SI number m Elevation difference; length
pressure_losses optional / conditional quantity {value, unit} or SI number Pa Pressure losses; pressure_difference
motor_efficiency optional / conditional number 1 Motor efficiency; fraction, 0–1 unless a stricter method condition applies
head_margin_fraction optional / conditional number declared in object / not applicable Head margin fraction
suction_absolute_pressure optional / conditional quantity {value, unit} or SI number Pa Suction absolute pressure; pressure
vapor_pressure optional / conditional quantity {value, unit} or SI number Pa Vapor pressure; pressure
suction_velocity optional / conditional quantity {value, unit} or SI number m/s Suction velocity; velocity
npsh_required optional / conditional quantity {value, unit} or SI number m Npsh required; length
npsh_margin optional / conditional quantity {value, unit} or SI number m Npsh margin; length

Complete assumed input example:

{
  "density": {
    "unit": "kg/m3",
    "value": 1000
  },
  "destination_pressure": {
    "unit": "bar",
    "value": 3
  },
  "elevation_difference": {
    "unit": "m",
    "value": 8
  },
  "head_margin_fraction": 0.1,
  "motor_efficiency": 0.9,
  "pressure_losses": {
    "unit": "kPa",
    "value": 30
  },
  "pump_efficiency": {
    "unit": "%",
    "value": 72
  },
  "source_pressure": {
    "unit": "bar",
    "value": 1
  },
  "volume_flow": {
    "unit": "m3/h",
    "value": 36
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
system_head number m System head
design_head number m Design head
hydraulic_power number W Hydraulic power
shaft_power number W Shaft power
electric_power number W Electric power

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.hydraulics.

Example assumptions: 경계의 속도수두 차이는 무시; elevation_difference는 목적지 액면 높이 - 출발지 액면 높이; NPSH용 suction_absolute_pressure는 펌프 흡입 플랜지의 정압; 효율·NPSH required는 사용자 또는 제조사 제공값

09. tank.size — 수직 원통 탱크 용량

Purpose / operating model: 직접 요구체적 또는 유량*저장시간 입력; 원통부 용량

Equations / algorithm: Vgross=(Vliquid+Vdead)/working_fraction; V=pi*D^2*H/4

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
working_fraction yes number 1 Working fraction; fraction, 0–1 unless a stricter method condition applies
required_liquid_volume optional / conditional quantity {value, unit} or SI number m3 Required liquid volume; volume
volume_flow optional / conditional quantity {value, unit} or SI number m3/s Volume flow; volume_flow
storage_time optional / conditional quantity {value, unit} or SI number s Storage time; time
dead_volume optional / conditional quantity {value, unit} or SI number m3 Dead volume; volume
tank_count optional / conditional integer declared in object / not applicable Tank count
height_to_diameter_ratio optional / conditional number declared in object / not applicable Height to diameter ratio

Complete assumed input example:

{
  "height_to_diameter_ratio": 1.2,
  "storage_time": {
    "unit": "h",
    "value": 2
  },
  "tank_count": 1,
  "volume_flow": {
    "unit": "m3/h",
    "value": 36
  },
  "working_fraction": 0.8
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
required_liquid_volume number m3 Required liquid volume
total_gross_volume number m3 Total gross volume
per_tank_gross_volume number m3 Per tank gross volume
tank_count integer 1 Tank count
internal_diameter number m Internal diameter
cylindrical_height number m Cylindrical height

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.storage.

Example assumptions: 동일 크기의 수직 원통형 탱크; 헤드 형상·노즐·내부구조·기계설계는 별도; dead_volume은 전체 탱크군의 추가 사공간 요구량

10. thermal.exchanger — 열교환기 LMTD 기본설계

Purpose / operating model: 지정 열부하·온도·유효 U 사용; 단상 기본설계

Equations / algorithm: Q=U*A*F*LMTD

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
heat_duty yes quantity {value, unit} or SI number W Heat duty; power
hot_inlet_temperature yes quantity {value, unit} or SI number K Hot inlet temperature; temperature
hot_outlet_temperature yes quantity {value, unit} or SI number K Hot outlet temperature; temperature
cold_inlet_temperature yes quantity {value, unit} or SI number K Cold inlet temperature; temperature
cold_outlet_temperature yes quantity {value, unit} or SI number K Cold outlet temperature; temperature
overall_coefficient yes quantity {value, unit} or SI number W/(m2*K) Overall coefficient; heat_transfer_coefficient
flow_arrangement optional / conditional string declared in object / not applicable Flow arrangement; choices: ('countercurrent', 'parallel')
correction_factor optional / conditional number 1 Correction factor; fraction, 0–1 unless a stricter method condition applies
area_margin_fraction optional / conditional number declared in object / not applicable Area margin fraction
installed_area optional / conditional quantity {value, unit} or SI number m2 Installed area; area

Complete assumed input example:

{
  "area_margin_fraction": 0.1,
  "cold_inlet_temperature": {
    "unit": "degC",
    "value": 20
  },
  "cold_outlet_temperature": {
    "unit": "degC",
    "value": 40
  },
  "correction_factor": 0.9,
  "flow_arrangement": "countercurrent",
  "heat_duty": {
    "unit": "kW",
    "value": 420
  },
  "hot_inlet_temperature": {
    "unit": "degC",
    "value": 90
  },
  "hot_outlet_temperature": {
    "unit": "degC",
    "value": 60
  },
  "overall_coefficient": {
    "unit": "W/(m2*K)",
    "value": 500
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
heat_duty number W Heat duty
terminal_temperature_difference_1 number delta_K Terminal temperature difference 1
terminal_temperature_difference_2 number delta_K Terminal temperature difference 2
lmtd number delta_K Lmtd
corrected_lmtd number delta_K Corrected lmtd
required_area number m2 Required area
design_area number m2 Design area

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.thermal.

Example assumptions: 지정된 유효 총괄전열계수 U 사용; 입출구 온도 및 열부하는 외부 물질·열수지에서 결정; 기하구조·진동·튜브/쉘 압력손실은 현재 계산범위에 포함하지 않음; installed_area 평가는 지정 온도조건에서 수행

11. utilities.demand — 유틸리티 소요량

Purpose / operating model: 가열부하가 있으면 스팀 엔탈피 차이, 냉각부하가 있으면 냉각수 비열·온도상승 필수

Equations / algorithm: steam=Q/delta_h; cooling_water=Q/(Cp*deltaT)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
annual_operating_hours yes integer declared in object / not applicable Annual operating hours
heating_duty optional / conditional quantity {value, unit} or SI number W Heating duty; power
cooling_duty optional / conditional quantity {value, unit} or SI number W Cooling duty; power
electric_power optional / conditional quantity {value, unit} or SI number W Electric power; power
steam_specific_energy optional / conditional quantity {value, unit} or SI number J/kg Steam specific energy; specific_energy
cooling_water_heat_capacity optional / conditional quantity {value, unit} or SI number J/(kg*K) Cooling water heat capacity; heat_capacity
cooling_water_temperature_rise optional / conditional quantity {value, unit} or SI number delta_K Cooling water temperature rise; temperature_difference

Complete assumed input example:

{
  "annual_operating_hours": 1,
  "heating_duty": {
    "unit": "W",
    "value": 5000.0
  },
  "steam_specific_energy": 1000
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
steam_mass_flow number kg/s Steam mass flow
cooling_water_mass_flow number kg/s Cooling water mass flow
annual_steam_mass number kg Annual steam mass
annual_cooling_water_mass number kg Annual cooling water mass
annual_electricity number kWh Annual electricity

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.thermal.

Example assumptions: steam_specific_energy는 공급 스팀과 회수 응축수의 유효 엔탈피 차이; 연간 사용량은 지정 부하가 운전시간 동안 일정하다고 가정

12. cost.equipment — 장치 구매비·보정

Purpose / operating model: 사용자 제공 기준비용·지수; 통화 변경은 환율 필수, 날짜 변경은 비용지수 필수

Equations / algorithm: C=Cref*(S/Sref)^n*material*pressure*location*(I/Iref)*fx

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
capacity_dimension yes string declared in object / not applicable Capacity dimension; choices: ('area', 'volume', 'power', 'mass_flow', 'volume_flow', 'mass', 'length')
capacity yes quantity {value, unit} or SI number m2 Capacity
reference_capacity yes quantity {value, unit} or SI number m2 Reference capacity
base_cost yes integer USD Base cost
scaling_exponent yes number declared in object / not applicable Scaling exponent
base_currency yes string declared in object / not applicable Base currency
basis_date yes string declared in object / not applicable Basis date
target_date yes string declared in object / not applicable Target date
basis_note yes string declared in object / not applicable Basis note
target_currency optional / conditional string declared in object / not applicable Target currency
material_factor optional / conditional number declared in object / not applicable Material factor
pressure_factor optional / conditional number declared in object / not applicable Pressure factor
location_factor optional / conditional number declared in object / not applicable Location factor
quantity optional / conditional integer declared in object / not applicable Quantity
base_index optional / conditional number declared in object / not applicable Base index
target_index optional / conditional number declared in object / not applicable Target index
exchange_rate optional / conditional number declared in object / not applicable Exchange rate
minimum_capacity optional / conditional quantity {value, unit} or SI number declared in object / not applicable Minimum capacity
maximum_capacity optional / conditional quantity {value, unit} or SI number declared in object / not applicable Maximum capacity
allow_extrapolation optional / conditional boolean declared in object / not applicable Allow extrapolation

Complete assumed input example:

{
  "base_cost": 100,
  "base_currency": "USD",
  "basis_date": "2026-11-04",
  "basis_note": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "capacity": {
    "unit": "m2",
    "value": 0.13862943611198905
  },
  "capacity_dimension": "area",
  "reference_capacity": 10,
  "scaling_exponent": 0.5,
  "target_date": "2026-11-04"
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
scaled_base_cost number USD Scaled base cost
index_factor integer 1 Index factor
corrected_unit_cost number USD Corrected unit cost
total_purchase_cost number USD Total purchase cost
currency string nested structure / not applicable Currency
basis_date string nested structure / not applicable Basis date
target_date string nested structure / not applicable Target date
basis_note string nested structure / not applicable Basis note

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.costs.

Example assumptions: 사용자가 제공한 기준비용·용량지수·보정계수 사용; 환율은 기준통화 1단위당 목표통화; 용량 지수를 0.6으로 자동 가정하지 않음; 계산식의 문헌 출처와 기준 견적의 출처는 별도 관리

13. cost.capex — 설치비·총투자비

Purpose / operating model: 설치계수에 구매비 포함; 간접비·OSBL·예비비 별도 집계

Equations / algorithm: TCI=fixed_capital+working_capital+land

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
currency yes string declared in object / not applicable Currency
basis_date yes string declared in object / not applicable Basis date
purchased_equipment yes array declared in object / not applicable Purchased equipment
installation_factor yes integer declared in object / not applicable Installation factor
indirect_fraction optional / conditional number declared in object / not applicable Indirect fraction
contingency_fraction optional / conditional number declared in object / not applicable Contingency fraction
offsite_cost optional / conditional integer USD Offsite cost
working_capital optional / conditional integer USD Working capital
land_cost optional / conditional number USD Land cost

Complete assumed input example:

{
  "basis_date": "2026-11-04",
  "contingency_fraction": 0.2,
  "currency": "USD",
  "indirect_fraction": 0.1,
  "installation_factor": 2,
  "offsite_cost": 50,
  "purchased_equipment": [
    {
      "cost": {
        "unit": "USD",
        "value": 11.774100225154749
      },
      "name": "가상 응축기"
    }
  ],
  "working_capital": 30
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
purchased_equipment_cost number USD Purchased equipment cost
installed_isbl_cost number USD Installed isbl cost
offsite_cost number USD Offsite cost
total_direct_cost number USD Total direct cost
indirect_cost number USD Indirect cost
contingency number USD Contingency
fixed_capital number USD Fixed capital
working_capital number USD Working capital
land_cost number USD Land cost
total_capital number USD Total capital
currency string nested structure / not applicable Currency
basis_date string nested structure / not applicable Basis date

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.costs.

Example assumptions: 설치계수는 ISBL 구매비를 포함하며 OSBL·간접비·예비비는 포함하지 않음; 간접비는 ISBL 설치비 + OSBL 비용 기준; 예비비는 직접비 + 간접비 기준; 토지비·운전자본은 고정자본과 별도로 합산; 입력 구매비는 동일 기준일로 보정된 값

14. cost.opex — 운영비·단위 제조원가

Purpose / operating model: items=[{name,category,annual_quantity,quantity_unit,unit_price,currency?}]

Equations / algorithm: annual_cost=sum(quantity*unit_price)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
currency yes string declared in object / not applicable Currency
basis_date yes string declared in object / not applicable Basis date
annual_production yes number declared in object / not applicable Annual production
production_unit yes string declared in object / not applicable Production unit
items yes array declared in object / not applicable Items

Complete assumed input example:

{
  "annual_production": 200.0,
  "basis_date": "2026-11-04",
  "currency": "USD",
  "items": [
    {
      "annual_quantity": 18000.0,
      "category": "utility",
      "name": "가상 유틸리티 단가",
      "quantity_unit": "kg",
      "unit_price": 0.01
    }
  ],
  "production_unit": "kg"
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
items array nested structure / not applicable Items
cost_by_category object USD/year Cost by category
annual_operating_cost number USD/year Annual operating cost
unit_production_cost number USD/kg Unit production cost
currency string nested structure / not applicable Currency
basis_date string nested structure / not applicable Basis date

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.costs.

Example assumptions: annual_quantity와 unit_price는 동일 quantity_unit 기준; 고정 연간 비용은 annual_quantity=1, quantity_unit=year로 입력; 감가상각·금융비용·세금은 현재 OPEX 집계에 자동 포함하지 않음

15. phase.flash — 지정 K값 기액 플래시

Purpose / operating model: Rachford-Rice·2상/단일상 판정; K≈1에서는 기화율 미결정 반환

Equations / algorithm: sum(z_i*(K_i-1)/(1+beta*(K_i-1)))=0

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
feed_molar_flow yes quantity {value, unit} or SI number mol/s Feed molar flow; molar_flow
temperature yes quantity {value, unit} or SI number K Temperature; temperature
pressure yes quantity {value, unit} or SI number Pa Pressure; pressure
composition yes object declared in object / not applicable Composition
k_values yes object declared in object / not applicable K values
coefficient_source yes string declared in object / not applicable Coefficient source

Complete assumed input example:

{
  "coefficient_source": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "composition": {
    "A": 0.5,
    "B": 0.5
  },
  "feed_molar_flow": 100,
  "k_values": {
    "A": 2,
    "B": 0.5
  },
  "pressure": 100000,
  "temperature": 300
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
phase string nested structure / not applicable Phase
vapor_fraction number 1 Vapor fraction
vapor_molar_flow number mol/s Vapor molar flow
liquid_molar_flow number mol/s Liquid molar flow
liquid_composition object mole_fraction Liquid composition
vapor_composition object mole_fraction Vapor composition
component_balance_residuals object mol/s Component balance residuals

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.phase2.

Example assumptions: 지정 온도·압력에서 제공된 K값 사용; 자체 물성 예측 없음; Rachford-Rice 이분법; 단일상에서는 존재하지 않는 상의 조성은 null

16. batch.capacity — 배치 사이클·생산능력

Purpose / operating model: 독립 병렬 용기·순차 레시피·완성 배치 기준

Equations / algorithm: cycle=sum(step times); annual=mass_per_batch*floor(available_time/cycle)*vessels

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
batch_product_mass yes quantity {value, unit} or SI number kg Batch product mass; mass
annual_operating_hours yes integer declared in object / not applicable Annual operating hours
steps yes array declared in object / not applicable Steps
availability optional / conditional number 1 Availability; fraction, 0–1 unless a stricter method condition applies
parallel_vessels optional / conditional integer declared in object / not applicable Parallel vessels
target_annual_mass optional / conditional quantity {value, unit} or SI number kg Target annual mass; mass

Complete assumed input example:

{
  "annual_operating_hours": 10,
  "batch_product_mass": 10,
  "parallel_vessels": 2,
  "steps": [
    {
      "duration": {
        "unit": "h",
        "value": 0.25
      },
      "name": "fill"
    },
    {
      "duration": {
        "unit": "h",
        "value": 0.75
      },
      "name": "process"
    }
  ],
  "target_annual_mass": 200
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
cycle_time number s Cycle time
completed_batches_per_vessel integer 1 Completed batches per vessel
completed_batches integer 1 Completed batches
annual_product_mass number kg Annual product mass
longest_step string nested structure / not applicable Longest step
required_parallel_vessels integer 1 Required parallel vessels

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.phase2.

Example assumptions: 같은 용기에서 모든 단계를 순차 수행; 동일 레시피의 독립 병렬 용기; 용기 간 공유 자원·세척 간섭 없음; 연간 운전시간에 availability를 적용한 뒤 완성 배치만 산정

17. gas.compressor — 이상기체 다단 압축기

Purpose / operating model: 일정 cp·gamma, 동일 단별 압력비, 완전 중간냉각 선택

Equations / algorithm: dT=T*((P2/P1)^((gamma-1)/gamma)-1)/eta; P=m*cp*dT

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
mass_flow yes quantity {value, unit} or SI number kg/s Mass flow; mass_flow
inlet_temperature yes quantity {value, unit} or SI number K Inlet temperature; temperature
inlet_pressure yes quantity {value, unit} or SI number Pa Inlet pressure; pressure
outlet_pressure yes quantity {value, unit} or SI number Pa Outlet pressure; pressure
heat_capacity yes quantity {value, unit} or SI number J/(kg*K) Heat capacity; heat_capacity
heat_capacity_ratio yes integer declared in object / not applicable Heat capacity ratio
isentropic_efficiency yes number 1 Isentropic efficiency; fraction, 0–1 unless a stricter method condition applies
motor_efficiency optional / conditional number 1 Motor efficiency; fraction, 0–1 unless a stricter method condition applies
stages optional / conditional integer declared in object / not applicable Stages
perfect_intercooling optional / conditional boolean declared in object / not applicable Perfect intercooling
maximum_outlet_temperature optional / conditional quantity {value, unit} or SI number K Maximum outlet temperature; temperature

Complete assumed input example:

{
  "heat_capacity": 1000,
  "heat_capacity_ratio": 2,
  "inlet_pressure": 100000,
  "inlet_temperature": 300,
  "isentropic_efficiency": 0.5,
  "mass_flow": 1,
  "outlet_pressure": 400000
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
shaft_power number W Shaft power
electric_power number W Electric power
outlet_temperature number K Outlet temperature
stage_pressure_ratio number 1 Stage pressure ratio
stages array nested structure / not applicable Stages

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.equipment2.

Example assumptions: 이상기체·일정 비열·비열비; 동일 단별 압력비·효율; 단간 압력손실 없음; 완전 중간냉각 선택 시 각 단 입구를 최초 온도로 복귀

18. gas.blower — 저압 송풍기

Purpose / operating model: ΔP/P<=0.1, 입구 실제 체적유량

Equations / algorithm: P=Q*dP/eta

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
volume_flow yes quantity {value, unit} or SI number m3/s Volume flow; volume_flow
inlet_pressure yes quantity {value, unit} or SI number Pa Inlet pressure; pressure
pressure_rise yes quantity {value, unit} or SI number Pa Pressure rise; pressure_difference
efficiency yes number 1 Efficiency; fraction, 0–1 unless a stricter method condition applies

Complete assumed input example:

{
  "efficiency": 0.5,
  "inlet_pressure": 100000,
  "pressure_rise": 10000,
  "volume_flow": 1
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
fluid_power number W Fluid power
shaft_power number W Shaft power

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.equipment2.

Example assumptions: 입구 실제 체적유량; 압축성 효과를 무시하는 저압 근사

19. valve.liquid — 비초크 액체 조절밸브

Purpose / operating model: 난류·비초크·Fp=1; FL 제공, 플래싱/초크는 거부

Equations / algorithm: Kv=Q_m3h*sqrt(SG/dP_bar); FF=0.96-0.28*sqrt(Pv/Pc); dP_limit=FL^2*(P1-FF*Pv)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
volume_flow yes quantity {value, unit} or SI number m3/s Volume flow; volume_flow
density yes quantity {value, unit} or SI number kg/m3 Density; density
inlet_pressure yes quantity {value, unit} or SI number Pa Inlet pressure; pressure
outlet_pressure yes quantity {value, unit} or SI number Pa Outlet pressure; pressure
vapor_pressure yes quantity {value, unit} or SI number Pa Vapor pressure; pressure
critical_pressure yes quantity {value, unit} or SI number Pa Critical pressure; pressure
liquid_recovery_factor yes integer 1 Liquid recovery factor; fraction, 0–1 unless a stricter method condition applies
selected_kv optional / conditional quantity {value, unit} or SI number Kv Selected kv; valve_capacity

Complete assumed input example:

{
  "critical_pressure": 10000000,
  "density": 1000,
  "inlet_pressure": 300000,
  "liquid_recovery_factor": 1,
  "outlet_pressure": 200000,
  "vapor_pressure": 1000,
  "volume_flow": {
    "unit": "m3/h",
    "value": 1
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
required_kv number Kv Required kv
required_cv number Cv Required cv
pressure_drop number Pa Pressure drop
choked_pressure_drop_limit number Pa Choked pressure drop limit

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.equipment2.

Example assumptions: 난류·비플래싱·비초크 액체, 배관 보정계수 Fp=1; FL은 제공된 밸브 성능값; 캐비테이션 시작점·소음·점성 보정·최종 트림 선정은 별도

20. thermal.phase_change — 응축기·리보일러·증발기

Purpose / operating model: mass_flow 또는 molar_flow+molecular_weight; 상변화측 등온

Equations / algorithm: Q=m*latent*fraction+sensible; A=Q/(U*F*LMTD)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
mode yes string declared in object / not applicable Mode; choices: ('condenser', 'reboiler', 'evaporator')
latent_heat yes quantity {value, unit} or SI number J/kg Latent heat; specific_energy
saturation_temperature yes quantity {value, unit} or SI number K Saturation temperature; temperature
utility_inlet_temperature yes quantity {value, unit} or SI number K Utility inlet temperature; temperature
utility_outlet_temperature yes quantity {value, unit} or SI number K Utility outlet temperature; temperature
overall_coefficient yes quantity {value, unit} or SI number W/(m2*K) Overall coefficient; heat_transfer_coefficient
mass_flow optional / conditional quantity {value, unit} or SI number kg/s Mass flow; mass_flow
molar_flow optional / conditional quantity {value, unit} or SI number mol/s Molar flow; molar_flow
molecular_weight optional / conditional quantity {value, unit} or SI number kg/mol Molecular weight; molar_mass
phase_change_fraction optional / conditional number 1 Phase change fraction; fraction, 0–1 unless a stricter method condition applies
correction_factor optional / conditional number 1 Correction factor; fraction, 0–1 unless a stricter method condition applies
area_margin_fraction optional / conditional number declared in object / not applicable Area margin fraction
additional_heat_duty optional / conditional quantity {value, unit} or SI number W Additional heat duty; power
utility_specific_energy optional / conditional quantity {value, unit} or SI number J/kg Utility specific energy; specific_energy

Complete assumed input example:

{
  "latent_heat": 1000,
  "mode": "condenser",
  "molar_flow": {
    "unit": "mol/s",
    "value": 50.0
  },
  "molecular_weight": 0.02,
  "overall_coefficient": 100,
  "saturation_temperature": 400,
  "utility_inlet_temperature": 300,
  "utility_outlet_temperature": 350
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
mass_flow number kg/s Mass flow
heat_duty number W Heat duty
lmtd number delta_K Lmtd
required_area number m2 Required area
design_area number m2 Design area

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.phase2.

Example assumptions: 상변화 유체는 지정 포화온도에서 등온; 제공된 잠열·유효 U 사용; 상세 2상 압력손실·혼합물 온도활주는 별도

21. mixing.power — 교반 동력·토크

Purpose / operating model: 단일 임펠러, Re<=10 또는 Re>=10000; 제공된 계수

Equations / algorithm: Re=rho*N*D^2/mu; P=Np*rho*N^3*D^5

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
density yes quantity {value, unit} or SI number kg/m3 Density; density
viscosity yes quantity {value, unit} or SI number Pa*s Viscosity; viscosity
rotation_frequency yes quantity {value, unit} or SI number Hz Rotation frequency; frequency
impeller_diameter yes quantity {value, unit} or SI number m Impeller diameter; length
tank_diameter yes quantity {value, unit} or SI number m Tank diameter; length
regime yes string declared in object / not applicable Regime; choices: ('laminar', 'turbulent')
coefficient_source yes string declared in object / not applicable Coefficient source
drive_efficiency optional / conditional number 1 Drive efficiency; fraction, 0–1 unless a stricter method condition applies
power_number optional / conditional integer declared in object / not applicable Power number
laminar_constant optional / conditional number declared in object / not applicable Laminar constant

Complete assumed input example:

{
  "coefficient_source": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "density": 1000,
  "impeller_diameter": 1,
  "power_number": 5,
  "regime": "turbulent",
  "rotation_frequency": 2,
  "tank_diameter": 2,
  "viscosity": 0.001
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
impeller_reynolds number 1 Impeller reynolds
power_number number 1 Power number
mixing_power number W Mixing power
drive_power number W Drive power
torque number N*m Torque
tip_speed number m/s Tip speed

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.equipment2.

Example assumptions: 제공된 형상·매질의 Np 또는 층류 상수 사용; 층류 Re<=10 / 난류 Re>=10000, 천이영역 제외; 임펠러 1개·비기포 유체

22. distillation.binary — 이성분 증류 단수·환류비

Purpose / operating model: 이상계·일정 상대휘발도·포화액 feed(q=1), McCabe-Thiele 단수

Equations / algorithm: Fenske Nmin; McCabe-Thiele equilibrium and operating lines

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
feed_molar_flow yes quantity {value, unit} or SI number mol/s Feed molar flow; molar_flow
feed_light_fraction yes number 1 Feed light fraction; fraction, 0–1 unless a stricter method condition applies
distillate_light_fraction yes number 1 Distillate light fraction; fraction, 0–1 unless a stricter method condition applies
bottoms_light_fraction yes number 1 Bottoms light fraction; fraction, 0–1 unless a stricter method condition applies
relative_volatility yes integer declared in object / not applicable Relative volatility
reflux_ratio yes integer declared in object / not applicable Reflux ratio
equilibrium_source yes string declared in object / not applicable Equilibrium source

Complete assumed input example:

{
  "bottoms_light_fraction": 0.2,
  "distillate_light_fraction": 0.8,
  "equilibrium_source": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "feed_light_fraction": 0.5,
  "feed_molar_flow": 100,
  "reflux_ratio": 3,
  "relative_volatility": 2
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
minimum_stages number 1 Minimum stages
minimum_reflux_ratio number 1 Minimum reflux ratio
theoretical_stages integer 1 Theoretical stages
feed_stage integer 1 Feed stage
distillate_molar_flow number mol/s Distillate molar flow
bottoms_molar_flow number mol/s Bottoms molar flow
stage_profile array nested structure / not applicable Stage profile
light_component_balance_residual number mol/s Light component balance residual

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.separation2.

Example assumptions: 2성분·일정 상대휘발도·포화액 공급(q=1)·일정 몰유량; Fenske 최소단수; McCabe-Thiele 평형/운전선 계단법; 이론단수는 리보일러 포함·전응축기 제외, 마지막 부분단은 1단으로 올림; 공비·비이상계·트레이 효율은 별도

23. column.hydraulics — 트레이·충전탑 예비 수력학

Purpose / operating model: 제공된 용량계수·압력손실 성능자료; 상세 내부구조 검토는 별도

Equations / algorithm: u_flood=C*sqrt((rhoL-rhoV)/rhoV); A=Q/u_design

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
kind yes string declared in object / not applicable Kind; choices: ('tray', 'packed')
gas_volume_flow yes quantity {value, unit} or SI number m3/s Gas volume flow; volume_flow
gas_density yes quantity {value, unit} or SI number kg/m3 Gas density; density
liquid_density yes quantity {value, unit} or SI number kg/m3 Liquid density; density
capacity_factor yes quantity {value, unit} or SI number m/s Capacity factor; velocity
fraction_of_flooding yes number 1 Fraction of flooding; fraction, 0–1 unless a stricter method condition applies
coefficient_source yes string declared in object / not applicable Coefficient source
actual_trays optional / conditional integer declared in object / not applicable Actual trays
tray_spacing optional / conditional quantity {value, unit} or SI number m Tray spacing; length
pressure_drop_per_tray optional / conditional quantity {value, unit} or SI number Pa Pressure drop per tray; pressure_difference
packed_height optional / conditional quantity {value, unit} or SI number m Packed height; length
pressure_drop_per_height optional / conditional quantity {value, unit} or SI number Pa/m Pressure drop per height; pressure_gradient
additional_height optional / conditional quantity {value, unit} or SI number m Additional height; length

Complete assumed input example:

{
  "additional_height": 1,
  "capacity_factor": 0.1,
  "coefficient_source": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "fraction_of_flooding": 0.5,
  "gas_density": 1,
  "gas_volume_flow": 1,
  "kind": "packed",
  "liquid_density": 101,
  "packed_height": {
    "unit": "m",
    "value": 1.3862943611198906
  },
  "pressure_drop_per_height": 100
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
flooding_velocity number m/s Flooding velocity
design_velocity number m/s Design velocity
cross_sectional_area number m2 Cross sectional area
internal_diameter number m Internal diameter
active_height number m Active height
total_height number m Total height
pressure_drop number Pa Pressure drop

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.separation2.

Example assumptions: 업체/실험 기반 Souders-Brown 용량계수와 압력손실 계수 사용; 유효 단면적 기준, 상세 다운커머·위핑·분배기 설계는 별도

24. separation.stages — 흡수·스트리핑·추출 평형단

Purpose / operating model: Kremser, 선형 평형·신선 상대상·희석 용질<=0.1

Equations / algorithm: remaining=(A-1)/(A^(N+1)-1); at A=1: 1/(N+1)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
mode yes string declared in object / not applicable Mode; choices: ('absorption', 'stripping', 'extraction')
feed_carrier_flow yes quantity {value, unit} or SI number mol/s Feed carrier flow; molar_flow
solvent_carrier_flow yes quantity {value, unit} or SI number mol/s Solvent carrier flow; molar_flow
equilibrium_slope yes integer declared in object / not applicable Equilibrium slope
equilibrium_stages yes integer declared in object / not applicable Equilibrium stages
inlet_solute_fraction yes number 1 Inlet solute fraction; fraction, 0–1 unless a stricter method condition applies
equilibrium_source yes string declared in object / not applicable Equilibrium source

Complete assumed input example:

{
  "equilibrium_slope": 1,
  "equilibrium_source": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "equilibrium_stages": 2,
  "feed_carrier_flow": 1,
  "inlet_solute_fraction": 0.09,
  "mode": "absorption",
  "solvent_carrier_flow": 2
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
separation_factor number 1 Separation factor
remaining_fraction number 1 Remaining fraction
removal_fraction number 1 Removal fraction
outlet_solute_fraction number mole_fraction Outlet solute fraction

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.separation2.

Example assumptions: Kremser: 희석 용질·일정 carrier 몰유량·선형 평형·신선한 무용질 상대상; 흡수 m=y_gas/x_liquid; 스트리핑 m=y_gas/x_liquid; 추출 m=x_extract/x_raffinate; 흡수 A=L/(mV), 스트리핑 S=mV/L, 추출 E=mS/F

25. separation.packed_height — HTU/NTU 충전높이

Purpose / operating model: 선형 구동력 변화·제공된 총괄 HTU

Equations / algorithm: NTU=(y_in-y_out)/log_mean_driving_force; Z=HTU*NTU

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
inlet_solute_fraction yes number 1 Inlet solute fraction; fraction, 0–1 unless a stricter method condition applies
outlet_solute_fraction yes number 1 Outlet solute fraction; fraction, 0–1 unless a stricter method condition applies
htu yes quantity {value, unit} or SI number m Htu; length
coefficient_source yes string declared in object / not applicable Coefficient source
equilibrium_fraction_at_inlet optional / conditional number 1 Equilibrium fraction at inlet; fraction, 0–1 unless a stricter method condition applies
equilibrium_fraction_at_outlet optional / conditional number 1 Equilibrium fraction at outlet; fraction, 0–1 unless a stricter method condition applies

Complete assumed input example:

{
  "coefficient_source": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "htu": 2,
  "inlet_solute_fraction": 0.1,
  "outlet_solute_fraction": 0.05
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
ntu number 1 Ntu
packed_height number m Packed height
log_mean_driving_force number 1 Log mean driving force

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.separation2.

Example assumptions: 선형 평형·운전선에서 구동력이 선형 변화; 제공된 총괄 HTU 사용, 일정 carrier 유량

26. solids.handling — 분체 저장·벨트 이송

Purpose / operating model: 벌크용량·수평/상향 벨트 예비 용량·동력

Equations / algorithm: V=m*t/(rho_bulk*fill); P=m*g*(lift+resistance*length)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
mass_flow yes quantity {value, unit} or SI number kg/s Mass flow; mass_flow
bulk_density yes quantity {value, unit} or SI number kg/m3 Bulk density; density
storage_time yes quantity {value, unit} or SI number s Storage time; time
working_fraction yes number 1 Working fraction; fraction, 0–1 unless a stricter method condition applies
belt_speed yes quantity {value, unit} or SI number m/s Belt speed; velocity
belt_loading_area yes quantity {value, unit} or SI number m2 Belt loading area; area
conveyor_length yes quantity {value, unit} or SI number m Conveyor length; length
effective_resistance yes number declared in object / not applicable Effective resistance
drive_efficiency yes number 1 Drive efficiency; fraction, 0–1 unless a stricter method condition applies
coefficient_source yes string declared in object / not applicable Coefficient source
conveyor_lift optional / conditional quantity {value, unit} or SI number m Conveyor lift; length
no_load_power optional / conditional quantity {value, unit} or SI number W No load power; power

Complete assumed input example:

{
  "belt_loading_area": 0.01,
  "belt_speed": 2,
  "bulk_density": 100,
  "coefficient_source": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "conveyor_length": 10,
  "drive_efficiency": 0.5,
  "effective_resistance": 0.1,
  "mass_flow": 1,
  "storage_time": 10,
  "working_fraction": 0.5
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
gross_storage_volume number m3 Gross storage volume
belt_mass_capacity number kg/s Belt mass capacity
load_power number W Load power
drive_power number W Drive power

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.solids2.

Example assumptions: 벌크밀도·적재단면·유효 저항은 제공된 성능자료; 수평/상향 벨트 예비 동력; 사일로 구조·호퍼 유동성·하향 회생은 별도

27. solids.screen — 분급 회수율·물질수지

Purpose / operating model: 미립/조립 2성분군, 제공된 회수율

Equations / algorithm: undersize=m*(fine*fine_recovery+(1-fine)*(1-coarse_recovery))

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
feed_mass_flow yes quantity {value, unit} or SI number kg/s Feed mass flow; mass_flow
feed_fines_fraction yes number 1 Feed fines fraction; fraction, 0–1 unless a stricter method condition applies
fines_recovery_to_undersize yes number 1 Fines recovery to undersize; fraction, 0–1 unless a stricter method condition applies
coarse_recovery_to_oversize yes number 1 Coarse recovery to oversize; fraction, 0–1 unless a stricter method condition applies

Complete assumed input example:

{
  "coarse_recovery_to_oversize": 0.8,
  "feed_fines_fraction": 0.4,
  "feed_mass_flow": 100,
  "fines_recovery_to_undersize": 0.9
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
undersize_mass_flow number kg/s Undersize mass flow
oversize_mass_flow number kg/s Oversize mass flow
undersize_fines_fraction number mass_fraction Undersize fines fraction
oversize_fines_fraction number mass_fraction Oversize fines fraction
mass_balance_residual number kg/s Mass balance residual

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.solids2.

Example assumptions: 건식 성분군 2개: 미립/조립, 지정 회수율 기반

28. solids.grind — Bond 분쇄 동력

Purpose / operating model: 시험 일지수와 80% 통과입도, 원식 입도 um

Equations / algorithm: W=10*Wi*(1/sqrt(P80_um)-1/sqrt(F80_um))

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
mass_flow yes quantity {value, unit} or SI number kg/s Mass flow; mass_flow
feed_p80 yes quantity {value, unit} or SI number m Feed p80; length
product_p80 yes quantity {value, unit} or SI number m Product p80; length
bond_work_index yes quantity {value, unit} or SI number J/kg Bond work index; specific_energy
coefficient_source yes string declared in object / not applicable Coefficient source
drive_efficiency optional / conditional number 1 Drive efficiency; fraction, 0–1 unless a stricter method condition applies

Complete assumed input example:

{
  "bond_work_index": {
    "unit": "kWh/t",
    "value": 10
  },
  "coefficient_source": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "drive_efficiency": 0.9,
  "feed_p80": {
    "unit": "um",
    "value": 100
  },
  "mass_flow": 1,
  "product_p80": {
    "unit": "um",
    "value": 25
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
specific_grinding_energy number J/kg Specific grinding energy
shaft_power number W Shaft power
drive_power number W Drive power

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.solids2.

Example assumptions: Bond 80% 통과입도 식, 원식 입도 단위 um·일지수 kWh/t; 시험으로 확보한 Bond 일지수 사용; 습식·폐회로 보정은 별도

29. solids.settling — Stokes 침강·면적

Purpose / operating model: 희석 구형 입자 Re_p<=0.1

Equations / algorithm: v=(rhoP-rhoF)*g*d^2/(18*mu); A=Q/v

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
particle_diameter yes number m Particle diameter
particle_density yes integer kg/m3 Particle density
fluid_density yes integer kg/m3 Fluid density
viscosity yes number Pa*s Viscosity
volume_flow yes quantity {value, unit} or SI number m3/s Volume flow; volume_flow
area_margin_fraction optional / conditional number declared in object / not applicable Area margin fraction

Complete assumed input example:

{
  "fluid_density": 1000,
  "particle_density": 2000,
  "particle_diameter": 1e-05,
  "viscosity": 0.001,
  "volume_flow": 0.0001
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
settling_velocity number m/s Settling velocity
particle_reynolds number 1 Particle reynolds
required_area number m2 Required area

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.solids2.

Example assumptions: 독립 구형 입자·희석 현탁액 Stokes 침강; 응집·간섭 침강은 별도

30. solids.centrifuge — Sigma 원심분리 용량

Purpose / operating model: 제공된 등가 Sigma 면적·효율, Stokes 입자

Equations / algorithm: Q_capacity=v_gravity*Sigma*efficiency

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
particle_diameter yes number m Particle diameter
particle_density yes integer kg/m3 Particle density
fluid_density yes integer kg/m3 Fluid density
viscosity yes number Pa*s Viscosity
volume_flow yes quantity {value, unit} or SI number m3/s Volume flow; volume_flow
equivalent_sigma_area yes quantity {value, unit} or SI number m2 Equivalent sigma area; area
sigma_efficiency yes number 1 Sigma efficiency; fraction, 0–1 unless a stricter method condition applies
coefficient_source yes string declared in object / not applicable Coefficient source

Complete assumed input example:

{
  "coefficient_source": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "equivalent_sigma_area": 100,
  "fluid_density": 1000,
  "particle_density": 2000,
  "particle_diameter": 1e-05,
  "sigma_efficiency": 0.5,
  "viscosity": 0.001,
  "volume_flow": 0.001
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
gravity_settling_velocity number m/s Gravity settling velocity
particle_reynolds number 1 Particle reynolds
volume_capacity number m3/s Volume capacity

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.solids2.

Example assumptions: 제공된 유효 Sigma 등가침강면적 사용; 저농도·Stokes 입자, 장치 형상·회전수·동력은 별도

31. solids.filter — 정압 케이크 여과

Purpose / operating model: 비압축성 케이크, 초기 케이크 0; 면적 또는 시간 산정

Equations / algorithm: t=mu*alpha*c*V^2/(2*A^2*dP)+mu*Rm*V/(A*dP)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
mode yes string declared in object / not applicable Mode; choices: ('area', 'time')
viscosity yes quantity {value, unit} or SI number Pa*s Viscosity; viscosity
specific_cake_resistance yes quantity {value, unit} or SI number m/kg Specific cake resistance; specific_resistance
solids_per_filtrate_volume yes quantity {value, unit} or SI number kg/m3 Solids per filtrate volume; density
filtrate_volume yes quantity {value, unit} or SI number m3 Filtrate volume; volume
pressure_difference yes quantity {value, unit} or SI number Pa Pressure difference; pressure_difference
medium_resistance yes quantity {value, unit} or SI number 1/m Medium resistance; inverse_length
coefficient_source yes string declared in object / not applicable Coefficient source
filtration_time optional / conditional quantity {value, unit} or SI number s Filtration time; time
filtration_area optional / conditional quantity {value, unit} or SI number m2 Filtration area; area

Complete assumed input example:

{
  "coefficient_source": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "filtrate_volume": 1,
  "filtration_time": 2,
  "medium_resistance": 1,
  "mode": "area",
  "pressure_difference": 1,
  "solids_per_filtrate_volume": 1,
  "specific_cake_resistance": 2,
  "viscosity": 1
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
filtration_area number m2 Filtration area
filtration_time number s Filtration time

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.solids2.

Example assumptions: 정압·비압축성 케이크; 초기 케이크 0; t=mualphacV^2/(2A^2dP)+muRmV/(AdP); 세척·배출 시간은 배치 모듈에 별도 입력

32. solids.cyclone — Lapple 사이클론 예비 성능

Purpose / operating model: 제공된 유효 회전수·손실계수, 단일 입경 효율

Equations / algorithm: d50=sqrt(9*mu*b/(2*pi*Ne*uin*(rhoP-rhoG))); eta=d^2/(d^2+d50^2)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
gas_volume_flow yes quantity {value, unit} or SI number m3/s Gas volume flow; volume_flow
inlet_width yes quantity {value, unit} or SI number m Inlet width; length
inlet_height yes quantity {value, unit} or SI number m Inlet height; length
gas_viscosity yes quantity {value, unit} or SI number Pa*s Gas viscosity; viscosity
gas_density yes quantity {value, unit} or SI number kg/m3 Gas density; density
particle_density yes quantity {value, unit} or SI number kg/m3 Particle density; density
effective_turns yes integer declared in object / not applicable Effective turns
pressure_loss_coefficient yes integer declared in object / not applicable Pressure loss coefficient
coefficient_source yes string declared in object / not applicable Coefficient source
particle_diameter optional / conditional quantity {value, unit} or SI number m Particle diameter; length

Complete assumed input example:

{
  "coefficient_source": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "effective_turns": 1,
  "gas_density": 1,
  "gas_viscosity": 1e-05,
  "gas_volume_flow": 0.1,
  "inlet_height": 0.1,
  "inlet_width": 0.1,
  "particle_density": 1001,
  "particle_diameter": 1.196826841204298e-05,
  "pressure_loss_coefficient": 2
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
inlet_velocity number m/s Inlet velocity
cut_diameter number m Cut diameter
pressure_drop number Pa Pressure drop
grade_efficiency number 1 Grade efficiency

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.solids2.

Example assumptions: Lapple 예비 cut-size 모델; 지정 유효 회전수와 손실계수; 단일 입경 효율 d^2/(d^2+d50^2), 재비산·고농도 효과는 별도

33. solids.dryer — 건조기 수지·열부하·면적

Purpose / operating model: 습량기준 수분·수분수지 공기량; 제공 건조속도로 면적 산정

Equations / algorithm: dry_solid=mfeed*(1-Xin); Q=evaporation*latent/(1-loss)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
wet_feed_mass_flow yes quantity {value, unit} or SI number kg/s Wet feed mass flow; mass_flow
inlet_moisture_fraction yes number 1 Inlet moisture fraction; fraction, 0–1 unless a stricter method condition applies
outlet_moisture_fraction yes integer 1 Outlet moisture fraction; fraction, 0–1 unless a stricter method condition applies
latent_heat yes quantity {value, unit} or SI number J/kg Latent heat; specific_energy
inlet_humidity_ratio yes number declared in object / not applicable Inlet humidity ratio
outlet_humidity_ratio yes number declared in object / not applicable Outlet humidity ratio
heat_loss_fraction optional / conditional number 1 Heat loss fraction; fraction, 0–1 unless a stricter method condition applies
additional_sensible_heat optional / conditional quantity {value, unit} or SI number W Additional sensible heat; power
drying_flux optional / conditional quantity {value, unit} or SI number kg/(m2*s) Drying flux; mass_flux
coefficient_source optional / conditional string declared in object / not applicable Coefficient source

Complete assumed input example:

{
  "coefficient_source": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님",
  "drying_flux": 0.5,
  "inlet_humidity_ratio": 0.01,
  "inlet_moisture_fraction": 0.5,
  "latent_heat": 1000,
  "outlet_humidity_ratio": 0.11,
  "outlet_moisture_fraction": 0,
  "wet_feed_mass_flow": 10
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
dry_solids_mass_flow number kg/s Dry solids mass flow
product_mass_flow number kg/s Product mass flow
evaporation_mass_flow number kg/s Evaporation mass flow
heat_duty number W Heat duty
dry_air_mass_flow number kg/s Dry air mass flow
drying_area number m2 Drying area

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.solids2.

Example assumptions: 입출구 수분은 물/습윤물의 질량분율; 습도비는 kg-water/kg-dry-air; 열부하는 지정 잠열·현열·손실 기반; 공기량은 수분수지 기준; 면적은 제공된 유효 건조속도 기준, 공기 열용량·건조동역학 상세해석은 별도

34. economics.project — 현금흐름·NPV·IRR·회수기간

Purpose / operating model: 연말 현금흐름·정액 감가상각·제공 세율·균등 원리금; 비전형 현금흐름 IRR 미선택

Equations / algorithm: NPV=sum(CF_t/(1+r)^t); after-tax annual project/equity cash flows

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
currency yes string declared in object / not applicable Currency
project_years yes integer declared in object / not applicable Project years
initial_capital yes object USD Initial capital
annual_revenue yes integer USD/year Annual revenue
annual_operating_cost yes object USD/year Annual operating cost
discount_rate yes number declared in object / not applicable Discount rate
working_capital optional / conditional object USD Working capital
depreciable_capital optional / conditional number USD Depreciable capital
depreciation_residual optional / conditional number USD Depreciation residual
depreciation_years optional / conditional integer declared in object / not applicable Depreciation years
salvage_value optional / conditional number USD Salvage value
tax_rate optional / conditional number 1 Tax rate; fraction, 0–1 unless a stricter method condition applies
loan_principal optional / conditional number USD Loan principal
loan_interest_rate optional / conditional number declared in object / not applicable Loan interest rate
loan_years optional / conditional integer declared in object / not applicable Loan years

Complete assumed input example:

{
  "annual_operating_cost": {
    "unit": "USD/year",
    "value": 180.0
  },
  "annual_revenue": 1000000,
  "currency": "USD",
  "discount_rate": 0.1,
  "initial_capital": {
    "unit": "USD",
    "value": 97.08362459440853
  },
  "project_years": 5,
  "tax_rate": 0.2,
  "working_capital": {
    "unit": "USD",
    "value": 30.0
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
project_cash_flows array USD Project cash flows
equity_cash_flows array USD Equity cash flows
schedule array nested structure / not applicable Schedule
npv number USD Npv
irr number 1 Irr
irr_status string nested structure / not applicable Irr status
payback_years number year Payback years
discounted_payback_years number year Discounted payback years
equity_npv number USD Equity npv
equity_irr number 1 Equity irr
equity_irr_status string nested structure / not applicable Equity irr status
currency string nested structure / not applicable Currency

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.economics2.

Example assumptions: t=0 투자, 연말 현금흐름·할인; 정액 감가상각; 적자 세금/손실 이월 혜택 없음; 최종 운전자본 전액 회수, 처분 이익만 과세; 처분 손실 공제 없음; 차입금은 고정 금리 균등 원리금, 원금 말년 정산; project NPV/IRR은 무차입 기준, equity는 차입·이자세금효과 반영; 다중 부호변화의 IRR은 임의의 근을 선택하지 않음

35. economics.sensitivity — 시나리오·민감도·손익분기

Purpose / operating model: OAT 절대 시나리오, project NPV 기준 비교; 확률분석 별도

Equations / algorithm: delta_NPV=NPV_scenario-NPV_base; break-even: project NPV(revenue)=0

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
base_inputs yes object declared in object / not applicable Base inputs
variations yes array declared in object / not applicable Variations
solve_break_even_revenue optional / conditional boolean declared in object / not applicable Solve break even revenue

Complete assumed input example:

{
  "base_inputs": {
    "annual_operating_cost": {
      "unit": "USD/year",
      "value": 180.0
    },
    "annual_revenue": 1000000,
    "currency": "USD",
    "discount_rate": 0.1,
    "initial_capital": {
      "unit": "USD",
      "value": 97.08362459440853
    },
    "project_years": 5,
    "tax_rate": 0.2,
    "working_capital": {
      "unit": "USD",
      "value": 30.0
    }
  },
  "variations": [
    {
      "field": "annual_revenue",
      "name": "매출",
      "values": [
        800000,
        1200000
      ]
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
baseline_npv number USD Baseline npv
scenarios array nested structure / not applicable Scenarios
ranking array nested structure / not applicable Ranking
break_even_annual_revenue number USD/year Break even annual revenue
currency string nested structure / not applicable Currency

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.economics2.

Example assumptions: 한 번에 한 변수(OAT), 제공된 절대 시나리오 값; 무차입 project NPV 기준 비교·손익분기; 확률 분포·상관관계·Monte Carlo는 별도

36. materials.select — 재질·균일 부식 검토

Purpose / operating model: 제공된 매질·온도·농도·부식률 데이터 범위 내 선별

Equations / algorithm: required_corrosion_allowance=corrosion_rate*design_life

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
fluid_name yes string declared in object / not applicable Fluid name
temperature yes quantity {value, unit} or SI number K Temperature; temperature
concentration yes number 1 Concentration; fraction, 0–1 unless a stricter method condition applies
design_life yes quantity {value, unit} or SI number s Design life; time
corrosion_allowance yes quantity {value, unit} or SI number m Corrosion allowance; length
candidates yes array declared in object / not applicable Candidates

Complete assumed input example:

{
  "candidates": [
    {
      "corrosion_rate": {
        "unit": "mm/year",
        "value": 1
      },
      "fluid_name": "F",
      "id": "M1",
      "maximum_concentration": 1,
      "maximum_temperature": 310,
      "minimum_concentration": 0,
      "minimum_temperature": 290,
      "name": "가상재질1",
      "source_note": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님"
    },
    {
      "corrosion_rate": {
        "unit": "mm/year",
        "value": 3
      },
      "fluid_name": "F",
      "id": "M2",
      "maximum_concentration": 1,
      "maximum_temperature": 310,
      "minimum_concentration": 0,
      "minimum_temperature": 290,
      "name": "가상재질2",
      "source_note": "설명·검증용 가정값; 실측 성능이나 실제 견적 아님"
    }
  ],
  "concentration": 0.5,
  "corrosion_allowance": 0.002,
  "design_life": {
    "unit": "year",
    "value": 1
  },
  "fluid_name": "F",
  "temperature": 300
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
eligible_candidates array nested structure / not applicable Eligible candidates
evaluated_candidates array nested structure / not applicable Evaluated candidates

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.design_support2.

Example assumptions: 제공된 매질·온도·농도 범위에서만 비교; 외삽하지 않음; 균일 부식률*수명 기준, 피팅·응력부식·오염·기계강도는 별도; 후보 순위는 부식률 기준이며 최종 재질 승인은 별도

37. controls.review — 계기·제어루프·알람·인터록 초안

Purpose / operating model: 제공된 태그·범위·설정값·동작의 일관성 검토, 독립 단순 루프

Equations / algorithm: range, alarm/trip ordering, tag consistency

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
equipment_tags yes array declared in object / not applicable Equipment tags
loops yes array declared in object / not applicable Loops

Complete assumed input example:

{
  "equipment_tags": [
    "E-101"
  ],
  "loops": [
    {
      "controller_tag": "TIC-101",
      "equipment_tag": "E-101",
      "final_element_tag": "TV-101",
      "high_alarm": 80,
      "high_trip": 90,
      "high_trip_action": "사용자 지정 고온 정지",
      "loop_tag": "TIC-101",
      "low_alarm": 20,
      "low_trip": 10,
      "low_trip_action": "사용자 지정 저온 정지",
      "maximum_value": 100,
      "measurement_tag": "TT-101",
      "minimum_value": 0,
      "setpoint": 50,
      "unit": "degC",
      "variable": "temperature"
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
loops array nested structure / not applicable Loops
instrument_index array nested structure / not applicable Instrument index
interlocks array nested structure / not applicable Interlocks
review_status string nested structure / not applicable Review status

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.design_support2.

Example assumptions: 사용자가 지정한 장치·계기·알람·트립·동작을 검토하고 초안으로 정리; 단순 독립 루프; cascade·override·SIL·동특성 튜닝은 별도; 각 limits 값은 SI 단위 객체로 보존

38. thermal.pinch — 핀치·복합곡선·최소 유틸리티

Purpose / operating model: 일정 CP 현열 스트림 열 캐스케이드

Equations / algorithm: shift ±DTmin/2; QHmin=-min(cascade)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
minimum_approach yes quantity {value, unit} or SI number delta_K Minimum approach; temperature_difference
streams yes array declared in object / not applicable Streams

Complete assumed input example:

{
  "minimum_approach": 10,
  "streams": [
    {
      "name": "hot",
      "inlet_temperature": 400,
      "outlet_temperature": 300,
      "heat_capacity_flow_W_K": 100
    },
    {
      "name": "cold",
      "inlet_temperature": 290,
      "outlet_temperature": 390,
      "heat_capacity_flow_W_K": 100
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
minimum_heating integer W Minimum heating
minimum_cooling number W Minimum cooling
maximum_heat_recovery number W Maximum heat recovery
intervals array nested structure / not applicable Intervals
pinch_temperatures array nested structure / not applicable Pinch temperatures
grand_composite_curve array nested structure / not applicable Grand composite curve
hot_composite array nested structure / not applicable Hot composite
cold_composite array nested structure / not applicable Cold composite

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 정상상태 일정 열용량 유량; 등온 잠열 제외; 온도 시프트 ±ΔTmin/2, 열 캐스케이드; 열교환망 배치 최적화는 별도

39. process.routes — 공정경로·입지 대안·Pareto 비교

Purpose / operating model: 지정 대안·제약·정규화 가중 점수

Equations / algorithm: constraint screening; min-max score; Pareto

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
weights yes object declared in object / not applicable Weights
alternatives yes array declared in object / not applicable Alternatives

Complete assumed input example:

{
  "weights": {
    "cost": {
      "weight": 0.5,
      "direction": "min"
    },
    "CO2": {
      "weight": 0.5,
      "direction": "min",
      "limit": 200
    }
  },
  "alternatives": [
    {
      "name": "A",
      "metrics": {
        "cost": 100,
        "CO2": 150
      }
    },
    {
      "name": "B",
      "metrics": {
        "cost": 120,
        "CO2": 100
      }
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
alternatives array nested structure / not applicable Alternatives
recommended string nested structure / not applicable Recommended

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 사전 정의 대안의 제약·min-max 정규화 가중 점수(낮을수록 우수)·Pareto 비교; 지표 단위·경계는 대안 간 동일하게 준비; 범용 자동 공정 합성 제외

40. vessel.preliminary — 내압 용기 동체·헤드·중량 예비 계산

Purpose / operating model: 원통·2:1 타원 헤드; 코드 인증 아님

Equations / algorithm: t=PD/(2(SE-0.6P)); t_head=PD/(2SE-0.2P)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
design_pressure_difference yes quantity {value, unit} or SI number Pa Design pressure difference; pressure
inside_diameter yes quantity {value, unit} or SI number m Inside diameter; length
straight_length yes quantity {value, unit} or SI number m Straight length; length
allowable_stress yes quantity {value, unit} or SI number Pa Allowable stress; pressure
joint_efficiency yes number 1 Joint efficiency; fraction, 0–1 unless a stricter method condition applies
corrosion_allowance yes quantity {value, unit} or SI number m Corrosion allowance; length
minimum_fabrication_thickness yes quantity {value, unit} or SI number m Minimum fabrication thickness; length
material_density yes quantity {value, unit} or SI number kg/m3 Material density; density
code_basis yes string declared in object / not applicable Code basis
code_edition yes string declared in object / not applicable Code edition
stress_source yes string declared in object / not applicable Stress source

Complete assumed input example:

{
  "design_pressure_difference": 1000000.0,
  "inside_diameter": 1,
  "straight_length": 3,
  "allowable_stress": 100000000.0,
  "joint_efficiency": 0.85,
  "corrosion_allowance": 0.002,
  "minimum_fabrication_thickness": 0.005,
  "material_density": 7850,
  "code_basis": "문헌 예비 내압식; 실제 코드 검토 별도",
  "code_edition": "Towler/Sinnott 2판 2013; 인증 규격 아님",
  "stress_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
shell_thickness number m Shell thickness
head_thickness number m Head thickness
estimated_empty_mass number kg Estimated empty mass
code_basis string nested structure / not applicable Code basis
code_edition string nested structure / not applicable Code edition
stress_source string nested structure / not applicable Stress source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 문헌 내압 원통·2:1 타원 헤드 식; 완전 부식 상태에 부식여유 추가; 외압·좌굴·노즐·지지·피로·풍하중·지진·가공 공차 및 시험압력 검토 제외; 입력 코드·판본 및 온도별 허용응력은 설계자의 검토 근거

41. reactor.ideal — 등온 CSTR·PFR·배치 반응기

Purpose / operating model: 일정 밀도·단일 power-law 반응

Equations / algorithm: V_CSTR=FA0 X/rA; V_PFR=FA0 integral(dX/rA)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
reactor_type yes string declared in object / not applicable Reactor type; choices: ('CSTR', 'PFR', 'batch')
inlet_concentration_mol_m3 yes integer declared in object / not applicable Inlet concentration mol m3
rate_constant_SI yes number declared in object / not applicable Rate constant si
reaction_order yes integer declared in object / not applicable Reaction order
conversion yes number 1 Conversion; fraction, 0–1 unless a stricter method condition applies
kinetics_source yes string declared in object / not applicable Kinetics source
reaction_enthalpy_J_mol optional / conditional integer declared in object / not applicable Reaction enthalpy j mol
volume_flow optional / conditional quantity {value, unit} or SI number m3/s Volume flow; volume_flow
charge_volume optional / conditional quantity {value, unit} or SI number m3 Charge volume; volume

Complete assumed input example:

{
  "reactor_type": "CSTR",
  "inlet_concentration_mol_m3": 100,
  "rate_constant_SI": 0.1,
  "reaction_order": 1,
  "conversion": 0.5,
  "kinetics_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
  "volume_flow": 0.01,
  "reaction_enthalpy_J_mol": -10000
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
exit_concentration_mol_m3 number mol/m3 Exit concentration mol m3
reaction_time number s Reaction time
kinetics_source string nested structure / not applicable Kinetics source
active_volume number m3 Active volume
residence_time number s Residence time
heat_duty number W Heat duty

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 등온·일정 밀도·단일 비가역 power-law 반응 -rA=k CA^n; k 단위=(mol/m3)^(1-n)/s; 사용자 속도식 자료의 온도에서만 유효; 활성 부피, 공간여유·전열·촉매·폭주 검토 별도; 양의 열부하는 흡열

42. separator.gravity — 기액·액액 중력 분리조

Purpose / operating model: 지정 액적/계수·비포밍 예비 설계

Equations / algorithm: u=K sqrt((rhoL-rhoV)/rhoV); Stokes; V=Q t

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
mode yes string declared in object / not applicable Mode; choices: ('vapor_liquid', 'liquid_liquid')
continuous_volume_flow yes quantity {value, unit} or SI number m3/s Continuous volume flow; volume_flow
light_density yes quantity {value, unit} or SI number kg/m3 Light density; density
heavy_density yes quantity {value, unit} or SI number kg/m3 Heavy density; density
residence_time yes quantity {value, unit} or SI number s Residence time; time
working_fraction yes number 1 Working fraction; fraction, 0–1 unless a stricter method condition applies
souders_brown_coefficient optional / conditional quantity {value, unit} or SI number m/s Souders brown coefficient; velocity
liquid_volume_flow optional / conditional quantity {value, unit} or SI number m3/s Liquid volume flow; volume_flow
droplet_diameter optional / conditional quantity {value, unit} or SI number m Droplet diameter; length
continuous_viscosity optional / conditional quantity {value, unit} or SI number Pa*s Continuous viscosity; viscosity

Complete assumed input example:

{
  "mode": "vapor_liquid",
  "continuous_volume_flow": 0.1,
  "light_density": 2,
  "heavy_density": 1000,
  "residence_time": 120,
  "working_fraction": 0.7,
  "souders_brown_coefficient": 0.1,
  "liquid_volume_flow": 0.001
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
allowable_velocity number m/s Allowable velocity
cross_section_area number m2 Cross section area
minimum_diameter number m Minimum diameter
working_volume number m3 Working volume
total_volume number m3 Total volume

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 비포밍 중력 분리 예비 크기; 지정 액적/계수·체류시간; 직경과 체류 용량 제약을 각각 만족하는 실제 형상은 별도 설계

43. separation.adsorption — 흡착 작업용량·베드

Purpose / operating model: 단일 성분 Langmuir·지정 이용률

Equations / algorithm: q=qmax bC/(1+bC); M=load/(delta_q utilization)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
solute_mass_flow yes quantity {value, unit} or SI number kg/s Solute mass flow; mass_flow
adsorption_time yes quantity {value, unit} or SI number s Adsorption time; time
langmuir_capacity_kg_kg yes number declared in object / not applicable Langmuir capacity kg kg
langmuir_affinity_m3_kg yes integer declared in object / not applicable Langmuir affinity m3 kg
feed_concentration_kg_m3 yes integer declared in object / not applicable Feed concentration kg m3
regeneration_concentration_kg_m3 yes integer declared in object / not applicable Regeneration concentration kg m3
bed_utilization yes number 1 Bed utilization; fraction, 0–1 unless a stricter method condition applies
bulk_density yes quantity {value, unit} or SI number kg/m3 Bulk density; density
performance_source yes string declared in object / not applicable Performance source

Complete assumed input example:

{
  "solute_mass_flow": 0.001,
  "adsorption_time": 3600,
  "langmuir_capacity_kg_kg": 0.2,
  "langmuir_affinity_m3_kg": 1,
  "feed_concentration_kg_m3": 1,
  "regeneration_concentration_kg_m3": 0,
  "bed_utilization": 0.8,
  "bulk_density": 500,
  "performance_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
working_capacity number kg/kg Working capacity
adsorbent_mass number kg Adsorbent mass
bed_volume number m3 Bed volume
performance_source string nested structure / not applicable Performance source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: Langmuir 평형 작업용량·지정 베드 이용률; 단일 용질; 파과곡선·경쟁흡착·재생 열부하 별도

44. separation.membrane — 막분리 투과량·면적·물질수지

Purpose / operating model: 지정 투과도·배제율 일정

Equations / algorithm: J=Lp(deltaP-deltaPi); A=Qp/J

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
feed_volume_flow yes quantity {value, unit} or SI number m3/s Feed volume flow; volume_flow
water_recovery yes number 1 Water recovery; fraction, 0–1 unless a stricter method condition applies
solute_rejection yes number 1 Solute rejection; fraction, 0–1 unless a stricter method condition applies
feed_concentration_kg_m3 yes integer declared in object / not applicable Feed concentration kg m3
hydraulic_permeability_m_Pa_s yes number declared in object / not applicable Hydraulic permeability m pa s
pressure_difference yes quantity {value, unit} or SI number Pa Pressure difference; pressure
osmotic_pressure_difference yes quantity {value, unit} or SI number Pa Osmotic pressure difference; pressure
performance_source yes string declared in object / not applicable Performance source

Complete assumed input example:

{
  "feed_volume_flow": 0.01,
  "water_recovery": 0.5,
  "solute_rejection": 0.9,
  "feed_concentration_kg_m3": 1,
  "hydraulic_permeability_m_Pa_s": 1e-10,
  "pressure_difference": 200000.0,
  "osmotic_pressure_difference": 100000.0,
  "performance_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
permeate_flow number m3/s Permeate flow
retentate_flow number m3/s Retentate flow
membrane_area number m2 Membrane area
permeate_concentration number kg/m3 Permeate concentration
retentate_concentration number kg/m3 Retentate concentration
performance_source string nested structure / not applicable Performance source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 지정 투과도·배제율 일정; 용매 부피수지·용질 질량수지; 농도분극·오염·막 수명·축방향 압력손실 별도

45. separation.ion_exchange — 이온교환 수지·재생량

Purpose / operating model: 지정 등가 작업용량

Equations / algorithm: V=Q C t/(capacity utilization)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
volume_flow yes quantity {value, unit} or SI number m3/s Volume flow; volume_flow
ionic_load_eq_m3 yes integer declared in object / not applicable Ionic load eq m3
service_time yes quantity {value, unit} or SI number s Service time; time
resin_capacity_eq_m3 yes integer declared in object / not applicable Resin capacity eq m3
capacity_utilization yes number 1 Capacity utilization; fraction, 0–1 unless a stricter method condition applies
regenerant_kg_per_eq yes number declared in object / not applicable Regenerant kg per eq
performance_source yes string declared in object / not applicable Performance source

Complete assumed input example:

{
  "volume_flow": 0.001,
  "ionic_load_eq_m3": 2,
  "service_time": 3600,
  "resin_capacity_eq_m3": 1000,
  "capacity_utilization": 0.8,
  "regenerant_kg_per_eq": 0.1,
  "performance_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
resin_volume number m3 Resin volume
cycle_load_eq number eq Cycle load eq
regenerant_mass number kg Regenerant mass
performance_source string nested structure / not applicable Performance source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 수지 제조사 작업용량·재생 소비계수 입력; 경쟁 이온·파과 해석 별도

46. separation.crystallization — 결정화·침전 평형 수지

Purpose / operating model: 무수 결정·용매 증발·평형 용해도

Equations / algorithm: crystals=solute_in-solubility*remaining_solvent

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
feed_mass_flow yes quantity {value, unit} or SI number kg/s Feed mass flow; mass_flow
feed_solute_fraction yes number 1 Feed solute fraction; fraction, 0–1 unless a stricter method condition applies
solubility_kg_per_kg_solvent yes number declared in object / not applicable Solubility kg per kg solvent
solubility_source yes string declared in object / not applicable Solubility source
solvent_evaporated_fraction optional / conditional integer 1 Solvent evaporated fraction; fraction, 0–1 unless a stricter method condition applies

Complete assumed input example:

{
  "feed_mass_flow": 10,
  "feed_solute_fraction": 0.3,
  "solubility_kg_per_kg_solvent": 0.2,
  "solvent_evaporated_fraction": 0,
  "solubility_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
crystal_mass_flow number kg/s Crystal mass flow
mother_liquor_mass_flow number kg/s Mother liquor mass flow
vapor_mass_flow number kg/s Vapor mass flow
solute_recovery number 1 Solute recovery
mass_residual number kg/s Mass residual
solubility_source string nested structure / not applicable Solubility source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 무수 순수 결정·용매만 증발·평형 용해도; 수화물·입도 분포·핵생성·모액 동반은 별도

47. design.optimize — 제약조건 단일변수 설계 탐색

Purpose / operating model: 2~200점 유계 격자 탐색; 연속 최적성 보장 없음

Equations / algorithm: feasible grid argmin/argmax

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
method yes string declared in object / not applicable Method
base_inputs yes object declared in object / not applicable Base inputs
variable yes string declared in object / not applicable Variable
objective yes string declared in object / not applicable Objective
direction yes string declared in object / not applicable Direction; choices: ('min', 'max')
lower yes number declared in object / not applicable Lower
upper yes number declared in object / not applicable Upper
grid_points yes integer declared in object / not applicable Grid points
constraints optional / conditional object declared in object / not applicable Constraints

Complete assumed input example:

{
  "method": "reactor.ideal",
  "base_inputs": {
    "reactor_type": "CSTR",
    "inlet_concentration_mol_m3": 100,
    "rate_constant_SI": 0.1,
    "reaction_order": 1,
    "kinetics_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
    "volume_flow": 0.01
  },
  "variable": "conversion",
  "objective": "active_volume",
  "direction": "min",
  "lower": 0.2,
  "upper": 0.8,
  "grid_points": 7,
  "constraints": {
    "exit_concentration_mol_m3": {
      "maximum": 60
    }
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
best object nested structure / not applicable Best
evaluations array nested structure / not applicable Evaluations
feasible_count integer nested structure / not applicable Feasible count

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 단일 변수 유계 전수 격자 탐색; 격자 내 최선이며 연속/전역 최적성 증명 아님; 변수는 해당 계산의 숫자 단독 SI 규약을 사용

48. economics.uncertainty — 경제성 Monte Carlo 불확실성

Purpose / operating model: 독립 일양·삼각 분포, 2000회 이하

Equations / algorithm: sample NPV; empirical quantiles

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
base_inputs yes object declared in object / not applicable Base inputs
samples yes integer declared in object / not applicable Samples
seed yes integer declared in object / not applicable Seed
distributions yes object declared in object / not applicable Distributions

Complete assumed input example:

{
  "base_inputs": {
    "currency": "USD",
    "project_years": 10,
    "initial_capital": 1000000,
    "annual_revenue": 400000,
    "annual_operating_cost": 200000,
    "discount_rate": 0.08
  },
  "samples": 100,
  "seed": 42,
  "distributions": {
    "annual_revenue": {
      "distribution": "triangular",
      "minimum": 300000,
      "mode": 400000,
      "maximum": 500000
    }
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
mean_npv number USD Mean npv
p05_npv number USD P05 npv
p50_npv number USD P50 npv
p95_npv number USD P95 npv
probability_positive_npv number nested structure / not applicable Probability positive npv
seed integer nested structure / not applicable Seed
samples integer nested structure / not applicable Samples

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 독립 일양/삼각 분포 Monte Carlo; 상관관계 모형 없음; 단가·비용·분포는 사용자 가정, 표본 확률은 금융 수익 보장 아님

49. safety.hazop_fmea — HAZOP·FMEA·조치 검토 기록

Purpose / operating model: 사용자 위험 기록·담당·종결 근거; 자동 안전 승인 아님

Equations / algorithm: RPN=S*O*D

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
node_tags yes array declared in object / not applicable Node tags
reviews yes array declared in object / not applicable Reviews

Complete assumed input example:

{
  "node_tags": [
    "T-101"
  ],
  "reviews": [
    {
      "id": "R1",
      "node": "T-101",
      "deviation": "고압",
      "cause": "응축 냉각 상실",
      "consequence": "용기 과압",
      "severity": 8,
      "occurrence": 3,
      "detection": 4,
      "safeguards": [
        "압력 알람"
      ],
      "recommendation": "방출 시나리오 전문 검토",
      "owner": "공정 검토자",
      "status": "open"
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
reviews array nested structure / not applicable Reviews
open_actions integer nested structure / not applicable Open actions
maximum_rpn integer 1 Maximum rpn

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 사용자가 작성한 HAZOP/FMEA 검토 기록·권고·담당·종결 근거 보존; 자동 위험 발견을 보장하지 않음

50. safety.relief — 단상 방출 오리피스 예비 면적

Purpose / operating model: 기체/비압축성 액체; 인증 용량·규격 적합 판정 아님

Equations / algorithm: A=mass_flow/mass_flux

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
fluid_model yes string declared in object / not applicable Fluid model; choices: ('incompressible_liquid', 'ideal_gas')
relief_mass_flow yes quantity {value, unit} or SI number kg/s Relief mass flow; mass_flow
relieving_absolute_pressure yes quantity {value, unit} or SI number Pa Relieving absolute pressure; pressure
back_absolute_pressure yes quantity {value, unit} or SI number Pa Back absolute pressure; pressure
discharge_coefficient yes number 1 Discharge coefficient; fraction, 0–1 unless a stricter method condition applies
combined_correction yes integer 1 Combined correction; fraction, 0–1 unless a stricter method condition applies
scenario yes string declared in object / not applicable Scenario
code_basis yes string declared in object / not applicable Code basis
code_edition yes string declared in object / not applicable Code edition
coefficient_source yes string declared in object / not applicable Coefficient source
density optional / conditional quantity {value, unit} or SI number kg/m3 Density; density
heat_capacity_ratio optional / conditional number declared in object / not applicable Heat capacity ratio
molar_mass optional / conditional quantity {value, unit} or SI number kg/mol Molar mass; molar_mass
temperature optional / conditional quantity {value, unit} or SI number K Temperature; temperature
compressibility_factor optional / conditional number declared in object / not applicable Compressibility factor

Complete assumed input example:

{
  "fluid_model": "ideal_gas",
  "relief_mass_flow": 1,
  "relieving_absolute_pressure": 300000,
  "back_absolute_pressure": 100000,
  "discharge_coefficient": 0.8,
  "combined_correction": 1,
  "scenario": "사용자 지정 정상 단상 방출 부하",
  "code_basis": "일반 단상 오리피스 식; 인증 아님",
  "code_edition": "교재 2013 예비 모델",
  "coefficient_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
  "heat_capacity_ratio": 1.4,
  "molar_mass": 0.02897,
  "temperature": 300
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
required_area number m2 Required area
choked boolean nested structure / not applicable Choked
scenario string nested structure / not applicable Scenario
code_basis string nested structure / not applicable Code basis
code_edition string nested structure / not applicable Code edition
coefficient_source string nested structure / not applicable Coefficient source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 정상 단상 오리피스 식; 2상·반응폭주·점성·액체 기화·배관 배압 해석 별도

51. environment.inventory — 온실가스·폐수·폐기물·용수 부하

Purpose / operating model: 명시 경계·출처별 활동량; 전과정 LCA·허가 판정 별도

Equations / algorithm: emission=activity*factor; waste=stream*disposition

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
annual_operating_hours yes integer declared in object / not applicable Annual operating hours
boundary yes string declared in object / not applicable Boundary
inventory_source yes string declared in object / not applicable Inventory source
streams yes array declared in object / not applicable Streams
activities yes array declared in object / not applicable Activities
water_withdrawal_flow yes quantity {value, unit} or SI number m3/s Water withdrawal flow; volume_flow
water_consumption_fraction yes number 1 Water consumption fraction; fraction, 0–1 unless a stricter method condition applies

Complete assumed input example:

{
  "annual_operating_hours": 8000,
  "boundary": "예시 지정 경계",
  "inventory_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
  "streams": [
    {
      "tag": "product",
      "mass_flow": 1,
      "disposition": {
        "product": 0.9,
        "air": 0,
        "wastewater": 0.1,
        "solid": 0,
        "recycle": 0
      },
      "pollutant_mass_fractions": {
        "methanol": 0.01
      }
    }
  ],
  "activities": [
    {
      "name": "purchased electricity",
      "scope": "scope2",
      "annual_quantity": 1000,
      "activity_unit": "kWh",
      "kg_CO2e_per_unit": 0.4,
      "factor_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
    }
  ],
  "water_withdrawal_flow": 0.001,
  "water_consumption_fraction": 0.5
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
annual_disposition_kg object nested structure / not applicable Annual disposition kg
annual_pollutants_kg object nested structure / not applicable Annual pollutants kg
annual_scope_CO2e_kg object nested structure / not applicable Annual scope co2e kg
annual_CO2e number kg CO2e/year Annual co2e
annual_water_withdrawal number m3/year Annual water withdrawal
annual_water_consumption number m3/year Annual water consumption
CO2e_per_kg_product number kg CO2e/kg Co2e per kg product
streams array nested structure / not applicable Streams
emission_activities array nested structure / not applicable Emission activities
boundary string nested structure / not applicable Boundary
inventory_source string nested structure / not applicable Inventory source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.assessment.

Example assumptions: 사용자 활동량×동일 단위 기준의 배출계수; 지정 경계만 포함; 기체 제품은 자동 대기 배출로 간주하지 않음; 처분 비율로 구분; 계수·GWP·연도·지역·공급원은 factor_source에 명시; 법적 배출 적합 판정이나 전과정 LCA 인증 아님; 냉각수 순환량과 취수·소비량을 구분; 대기/폐수의 오염물질 부하는 처리 후 환경 유입 예측과 구분

52. layout.review — 2D 배치·이격·배관거리 검토

Purpose / operating model: 제공 설치 경계·이격 근거; 3D·법규 자동 판단 아님

Equations / algorithm: clearance=distance-r1-r2

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
equipment yes array declared in object / not applicable Equipment
connections yes array declared in object / not applicable Connections

Complete assumed input example:

{
  "equipment": [
    {
      "tag": "A",
      "x": 0,
      "y": 0,
      "footprint_radius": 1
    },
    {
      "tag": "B",
      "x": 10,
      "y": 0,
      "footprint_radius": 1
    }
  ],
  "connections": [
    {
      "from": "A",
      "to": "B",
      "required_clearance": 5,
      "clearance_basis": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
connections array nested structure / not applicable Connections
total_rectilinear_pipe_length number m Total rectilinear pipe length
violations integer nested structure / not applicable Violations

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 2D 원형 설치 경계·직교 배관거리 예비 검토; 접근성·피난·법정 이격은 사용자 요구 거리 근거로 검토; 3D/구조설계 별도

53. properties.interpolate — 온도별 사용자 물성 보간

Purpose / operating model: 구간 선형 보간·범위 외 거부

Equations / algorithm: piecewise linear interpolation

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
temperature yes quantity {value, unit} or SI number K Temperature; temperature
property_unit yes string declared in object / not applicable Property unit
source yes string declared in object / not applicable Source
points yes array declared in object / not applicable Points

Complete assumed input example:

{
  "temperature": 310,
  "property_unit": "kg/m3",
  "source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
  "points": [
    {
      "temperature": 300,
      "value": 1000
    },
    {
      "temperature": 320,
      "value": 980
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
property_value number kg/m3 Property value
source string nested structure / not applicable Source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 사용자 검증 물성의 온도별 구간 선형 보간; 압력·조성 기준은 입력 출처에서 관리

54. pump.operating_point — 제조사 곡선·시스템 운전점

Purpose / operating model: 단조 Q-H 곡선 구간 보간·범위 내 교점

Equations / algorithm: Hpump(Q)=Hstatic+K Q^2

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
static_head yes quantity {value, unit} or SI number m Static head; length
system_resistance_s2_m5 yes integer declared in object / not applicable System resistance s2 m5
density yes quantity {value, unit} or SI number kg/m3 Density; density
pump_efficiency yes number 1 Pump efficiency; fraction, 0–1 unless a stricter method condition applies
curve_source yes string declared in object / not applicable Curve source
curve yes array declared in object / not applicable Curve

Complete assumed input example:

{
  "static_head": 10,
  "system_resistance_s2_m5": 100000,
  "density": 1000,
  "pump_efficiency": 0.8,
  "curve_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
  "curve": [
    {
      "volume_flow": 0,
      "head": 30
    },
    {
      "volume_flow": 0.02,
      "head": 10
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
operating_volume_flow number m3/s Operating volume flow
operating_head number m Operating head
shaft_power number W Shaft power
curve_source string nested structure / not applicable Curve source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 제공 제조사 Q-H 구간 선형 보간·단조 시스템 H=Hstatic+KQ²; 곡선 외삽·NPSH·최소연속유량·가변속도 선정 별도

55. utilities.inventory — 전력·스팀·질소·공기 등 집계

Purpose / operating model: 유틸리티·차원별 소요량 합산

Equations / algorithm: annual=rate*operating_time

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
annual_operating_hours yes integer declared in object / not applicable Annual operating hours
consumers yes array declared in object / not applicable Consumers

Complete assumed input example:

{
  "annual_operating_hours": 8000,
  "consumers": [
    {
      "tag": "P1",
      "utility": "electricity",
      "dimension": "power",
      "demand": {
        "value": 1,
        "unit": "kW"
      }
    },
    {
      "tag": "N1",
      "utility": "nitrogen",
      "dimension": "mass_flow",
      "demand": 0.01
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
totals array nested structure / not applicable Totals
consumers array nested structure / not applicable Consumers

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 스팀·냉수·전력·질소·공기 등 사용자 지정 유틸리티별 합계; 서로 다른 차원은 합산하지 않음

56. hydraulics.economic — 경제 관경 대안 비교

Purpose / operating model: 동일 유량 후보 설치비+압손 전력비

Equations / algorithm: annual_cost=capital*charge+Q deltaP/eff*hours*price

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
hydraulic_inputs yes object declared in object / not applicable Hydraulic inputs
currency yes string declared in object / not applicable Currency
pump_efficiency yes number 1 Pump efficiency; fraction, 0–1 unless a stricter method condition applies
electricity_price_per_kWh yes object USD/kWh Electricity price per kwh
annual_operating_hours yes integer declared in object / not applicable Annual operating hours
annual_capital_charge_fraction yes number declared in object / not applicable Annual capital charge fraction
cost_source yes string declared in object / not applicable Cost source
candidates yes array declared in object / not applicable Candidates

Complete assumed input example:

{
  "hydraulic_inputs": {
    "volume_flow": 0.001,
    "density": 1000,
    "viscosity": 0.001,
    "length": 100,
    "roughness": 1e-05
  },
  "currency": "USD",
  "pump_efficiency": 0.8,
  "electricity_price_per_kWh": {
    "value": 0.1,
    "unit": "USD/kWh"
  },
  "annual_operating_hours": 8000,
  "annual_capital_charge_fraction": 0.1,
  "cost_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
  "candidates": [
    {
      "name": "50 mm",
      "diameter": 0.05,
      "installed_cost": 10000
    },
    {
      "name": "80 mm",
      "diameter": 0.08,
      "installed_cost": 15000
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
candidates array nested structure / not applicable Candidates
recommended string nested structure / not applicable Recommended
minimum_annualized_cost number USD/year Minimum annualized cost
cost_source string nested structure / not applicable Cost source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 사용자 후보 관경·설치비의 연간 자본비+압력손실 전력비 비교; 정상 단상 비압축성; 정수압·구매 펌프·유량 제어 비용은 별도; 실제 시장 가격 자동 가정 없음

57. assessment.process — 공정 연계 경제성·환경성 종합 평가

Purpose / operating model: 명시 견적·단가·처분·배출계수·경계; 가정 예비 평가

Equations / algorithm: process -> utilities -> CAPEX/OPEX/revenue -> NPV/IRR + inventory

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
process_metrics yes object declared in object / not applicable Process metrics
basis yes object declared in object / not applicable Basis
process_source yes string declared in object / not applicable Process source

Complete assumed input example:

{
  "process_metrics": {
    "feed_mass": {
      "value": 1.3838832,
      "unit": "kg/s"
    },
    "feed_temperature": {
      "value": 293.15,
      "unit": "K"
    },
    "feed_pressure": {
      "value": 101325.0,
      "unit": "Pa"
    },
    "feed_enthalpy": {
      "value": -1829.7033412351411,
      "unit": "kJ/kg"
    },
    "feed_methanol_mass_fraction": {
      "value": 0.5001196632779414,
      "unit": "1"
    },
    "feed_water_mass_fraction": {
      "value": 0.4998803367220586,
      "unit": "1"
    },
    "pumped_mass": {
      "value": 1.3838832,
      "unit": "kg/s"
    },
    "pumped_temperature": {
      "value": 293.1699670003287,
      "unit": "K"
    },
    "pumped_pressure": {
      "value": 301325.0,
      "unit": "Pa"
    },
    "pumped_enthalpy": {
      "value": -1829.4112559390717,
      "unit": "kJ/kg"
    },
    "pumped_methanol_mass_fraction": {
      "value": 0.5001196632779414,
      "unit": "1"
    },
    "pumped_water_mass_fraction": {
      "value": 0.4998803367220586,
      "unit": "1"
    },
    "heated_mass": {
      "value": 1.3838832,
      "unit": "kg/s"
    },
    "heated_temperature": {
      "value": 319.42640660747713,
      "unit": "K"
    },
    "heated_pressure": {
      "value": 281325.0,
      "unit": "Pa"
    },
    "heated_enthalpy": {
      "value": -1731.8989766316238,
      "unit": "kJ/kg"
    },
    "heated_methanol_mass_fraction": {
      "value": 0.5001196632779414,
      "unit": "1"
    },
    "heated_water_mass_fraction": {
      "value": 0.4998803367220586,
      "unit": "1"
    },
    "column_feed_mass": {
      "value": 1.3838832,
      "unit": "kg/s"
    },
    "column_feed_temperature": {
      "value": 319.4795128904956,
      "unit": "K"
    },
    "column_feed_pressure": {
      "value": 101325.0,
      "unit": "Pa"
    },
    "column_feed_enthalpy": {
      "value": -1731.8989394475432,
      "unit": "kJ/kg"
    },
    "column_feed_methanol_mass_fraction": {
      "value": 0.5001196632779414,
      "unit": "1"
    },
    "column_feed_water_mass_fraction": {
      "value": 0.4998803367220586,
      "unit": "1"
    },
    "distillate_mass": {
      "value": 0.7106573503632283,
      "unit": "kg/s"
    },
    "distillate_temperature": {
      "value": 339.8738838298527,
      "unit": "K"
    },
    "distillate_pressure": {
      "value": 101325.0,
      "unit": "Pa"
    },
    "distillate_enthalpy": {
      "value": -1117.2827787155925,
      "unit": "kJ/kg"
    },
    "distillate_methanol_mass_fraction": {
      "value": 0.9378332377048909,
      "unit": "1"
    },
    "distillate_water_mass_fraction": {
      "value": 0.06216676229510909,
      "unit": "1"
    },
    "flash_feed_mass": {
      "value": 0.7106573503632283,
      "unit": "kg/s"
    },
    "flash_feed_temperature": {
      "value": 330.710626368568,
      "unit": "K"
    },
    "flash_feed_pressure": {
      "value": 70000.0,
      "unit": "Pa"
    },
    "flash_feed_enthalpy": {
      "value": -1117.2827785628429,
      "unit": "kJ/kg"
    },
    "flash_feed_methanol_mass_fraction": {
      "value": 0.9378332377048909,
      "unit": "1"
    },
    "flash_feed_water_mass_fraction": {
      "value": 0.06216676229510909,
      "unit": "1"
    },
    "gas_mass": {
      "value": 0.020426691452446737,
      "unit": "kg/s"
    },
    "gas_temperature": {
      "value": 330.710626368568,
      "unit": "K"
    },
    "gas_pressure": {
      "value": 70000.0,
      "unit": "Pa"
    },
    "gas_enthalpy": {
      "value": 46.671510831617,
      "unit": "kJ/kg"
    },
    "gas_methanol_mass_fraction": {
      "value": 0.9843964489437684,
      "unit": "1"
    },
    "gas_water_mass_fraction": {
      "value": 0.01560355105623159,
      "unit": "1"
    },
    "liquid_mass": {
      "value": 0.6902306588994397,
      "unit": "kg/s"
    },
    "liquid_temperature": {
      "value": 330.710626368568,
      "unit": "K"
    },
    "liquid_pressure": {
      "value": 70000.0,
      "unit": "Pa"
    },
    "liquid_enthalpy": {
      "value": -1151.7288507963228,
      "unit": "kJ/kg"
    },
    "liquid_methanol_mass_fraction": {
      "value": 0.9364552456495976,
      "unit": "1"
    },
    "liquid_water_mass_fraction": {
      "value": 0.06354475435040237,
      "unit": "1"
    },
    "bottoms_mass": {
      "value": 0.6732268957428085,
      "unit": "kg/s"
    },
    "bottoms_temperature": {
      "value": 371.65525532191174,
      "unit": "K"
    },
    "bottoms_pressure": {
      "value": 101325.0,
      "unit": "Pa"
    },
    "bottoms_enthalpy": {
      "value": -2081.499268318897,
      "unit": "kJ/kg"
    },
    "bottoms_methanol_mass_fraction": {
      "value": 0.03807261118878612,
      "unit": "1"
    },
    "bottoms_water_mass_fraction": {
      "value": 0.9619273888112139,
      "unit": "1"
    },
    "hot_in_mass": {
      "value": 2.0,
      "unit": "kg/s"
    },
    "hot_in_temperature": {
      "value": 368.15,
      "unit": "K"
    },
    "hot_in_pressure": {
      "value": 300000.0,
      "unit": "Pa"
    },
    "hot_in_enthalpy": {
      "value": -2142.823991983974,
      "unit": "kJ/kg"
    },
    "hot_out_mass": {
      "value": 2.0,
      "unit": "kg/s"
    },
    "hot_out_temperature": {
      "value": 352.7677340571156,
      "unit": "K"
    },
    "hot_out_pressure": {
      "value": 290000.0,
      "unit": "Pa"
    },
    "hot_out_enthalpy": {
      "value": -2210.296802705594,
      "unit": "kJ/kg"
    },
    "shaft_power": {
      "value": 0.4042109395812837,
      "unit": "kW"
    },
    "heat_duty": {
      "value": 134.9456214428584,
      "unit": "kW"
    },
    "engine_area": {
      "value": 5.0,
      "unit": "m2"
    },
    "reboiler_raw": {
      "value": -2729.6217947077225,
      "unit": "kW"
    },
    "condenser_raw": {
      "value": 2528.205228978433,
      "unit": "kW"
    },
    "stage_count": {
      "value": 8.0,
      "unit": "1"
    },
    "methanol_purity": {
      "value": 0.8945334882210616,
      "unit": "1"
    },
    "gas_methanol_purity": {
      "value": 0.9725802062188924,
      "unit": "1"
    },
    "liquid_methanol_purity": {
      "value": 0.8923059262391173,
      "unit": "1"
    },
    "reboiler_duty": {
      "value": 2729.6217947077225,
      "unit": "kW"
    },
    "condenser_duty": {
      "value": 2528.205228978433,
      "unit": "kW"
    },
    "electric_power": {
      "value": 0.4491232662014263,
      "unit": "kW"
    },
    "hot_water_duty": {
      "value": 134945.6,
      "unit": "W"
    }
  },
  "basis": {
    "currency": "USD",
    "annual_operating_hours": 8000,
    "project_years": 10,
    "discount_rate": 0.08,
    "tax_rate": 0.2,
    "cost_and_factor_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
    "basis_date": "2026-11-04",
    "steam_specific_energy": {
      "value": 2100,
      "unit": "kJ/kg"
    },
    "cooling_water_heat_capacity": 4200,
    "cooling_water_temperature_rise": 10,
    "auxiliary_electric_power": {
      "value": 5,
      "unit": "kW"
    },
    "cooling_water_makeup_fraction": 0.02,
    "water_density": 1000,
    "water_consumption_fraction": 0.5,
    "steam_price_per_kg": {
      "value": 0.025,
      "unit": "USD/kg"
    },
    "electricity_price_per_kWh": {
      "value": 0.12,
      "unit": "USD/kWh"
    },
    "hot_water_price_per_GJ": {
      "value": 10,
      "unit": "USD/GJ"
    },
    "makeup_water_price_per_m3": {
      "value": 1,
      "unit": "USD/m3"
    },
    "feed_price_per_kg": {
      "value": 0.2,
      "unit": "USD/kg"
    },
    "waste_treatment_price_per_kg": {
      "value": 0.03,
      "unit": "USD/kg"
    },
    "annual_fixed_operating_cost": {
      "value": 100000,
      "unit": "USD/year"
    },
    "working_capital": 100000,
    "installed_cost_factor": 3,
    "contingency_fraction": 0.15,
    "carbon_price_per_tonne": {
      "value": 30,
      "unit": "USD/tCO2e"
    },
    "equipment_costs": [
      {
        "tag": "P-101",
        "capacity_metric": "shaft_power",
        "capacity_dimension": "power",
        "reference_capacity": {
          "value": 1000,
          "unit": "W"
        },
        "reference_cost": 5000,
        "scaling_exponent": 0.6,
        "quote_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      },
      {
        "tag": "E-101",
        "capacity_metric": "engine_area",
        "capacity_dimension": "area",
        "reference_capacity": {
          "value": 5,
          "unit": "m2"
        },
        "reference_cost": 15000,
        "scaling_exponent": 0.6,
        "quote_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      },
      {
        "tag": "T-101",
        "capacity_metric": "feed_mass",
        "capacity_dimension": "mass_flow",
        "reference_capacity": {
          "value": 1.3838832,
          "unit": "kg/s"
        },
        "reference_cost": 200000,
        "scaling_exponent": 0.6,
        "quote_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      },
      {
        "tag": "S-101",
        "capacity_metric": "distillate_mass",
        "capacity_dimension": "mass_flow",
        "reference_capacity": {
          "value": 0.71,
          "unit": "kg/s"
        },
        "reference_cost": 20000,
        "scaling_exponent": 0.6,
        "quote_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      }
    ],
    "stream_disposition": {
      "GAS": {
        "product": 1,
        "air": 0,
        "wastewater": 0,
        "solid": 0,
        "recycle": 0
      },
      "LIQUID": {
        "product": 1,
        "air": 0,
        "wastewater": 0,
        "solid": 0,
        "recycle": 0
      },
      "BOTTOMS": {
        "product": 0,
        "air": 0,
        "wastewater": 1,
        "solid": 0,
        "recycle": 0
      }
    },
    "product_price_per_kg": {
      "GAS": {
        "value": 0.7,
        "unit": "USD/kg"
      },
      "LIQUID": {
        "value": 0.6,
        "unit": "USD/kg"
      },
      "BOTTOMS": {
        "value": 0,
        "unit": "USD/kg"
      }
    },
    "minimum_methanol_mass_fraction": {
      "GAS": 0,
      "LIQUID": 0,
      "BOTTOMS": 0
    },
    "emission_factors": {
      "electricity": {
        "value": 0.4,
        "unit": "kgCO2e/kWh",
        "source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      },
      "steam": {
        "value": 0.15,
        "unit": "kgCO2e/kg",
        "source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      },
      "hot_water": {
        "value": 60,
        "unit": "kgCO2e/GJ",
        "source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      }
    },
    "additional_emission_activities": []
  },
  "process_source": "가정 예제; 계약 fixture 기반 공정량, 현장 데이터 아님"
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
purchase_cost number USD Purchase cost
initial_capital number USD Initial capital
annual_operating_cost number USD/year Annual operating cost
annual_revenue number USD/year Annual revenue
annual_operating_margin number USD/year Annual operating margin
npv number USD Npv
irr number 1 Irr
payback_years number year Payback years
annual_CO2e number kg CO2e/year Annual co2e
CO2e_per_kg_product number kg CO2e/kg Co2e per kg product
annual_water_withdrawal number m3/year Annual water withdrawal
annual_water_consumption number m3/year Annual water consumption
annual_waste_mass number kg/year Annual waste mass
annual_air_mass number kg/year Annual air mass
annual_product_mass number kg/year Annual product mass
operating_cost_per_kg_product number USD/kg Operating cost per kg product
annual_cost_breakdown object nested structure / not applicable Annual cost breakdown
equipment_costs array nested structure / not applicable Equipment costs
environmental_inventory object nested structure / not applicable Environmental inventory
cash_flow_schedule array nested structure / not applicable Cash flow schedule
project_cash_flows array nested structure / not applicable Project cash flows
basis_source string nested structure / not applicable Basis source
process_source string nested structure / not applicable Process source
basis_date string nested structure / not applicable Basis date

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.assessment.

Example assumptions: 공급원별 비용/배출계수·설비 견적·설치계수는 사용자 입력; 현재 시장 가격 자동 조회 없음; 계산된 스팀·온수 공급 열과 펌프 및 지정 보조 전력 포함; 장치 견적 목록의 범위는 입력 책임; 냉각수 순환량×지정 보충률로 취수 산정; 배관/밸브 등 투자비는 설치계수 또는 견적에 포함해야 함; 처분/판매 비율과 순도 기준 명시; 회수 제품의 재순환 공정은 자동 재수렴하지 않음; 구매 에너지는 scope2로 분류; 현장 보일러는 추가 활동 및 경계 변경이 필요; 가정 시나리오 경제성·환경성 평가이며 투자 수익·배출 허가·실제 성능 인증 아님

58. balance.recycle — 전환·회수·퍼지 재순환 수지

Purpose / operating model: 단일 반응물 선형 정상 재순환 고정점

Equations / algorithm: Freactor=Ffresh/(1-(1-X)*recovery*(1-purge))

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
fresh_reactant_flow yes quantity {value, unit} or SI number mol/s Fresh reactant flow; molar_flow
single_pass_conversion yes number 1 Single pass conversion; fraction, 0–1 unless a stricter method condition applies
unreacted_recovery yes number 1 Unreacted recovery; fraction, 0–1 unless a stricter method condition applies
purge_fraction yes number 1 Purge fraction; fraction, 0–1 unless a stricter method condition applies

Complete assumed input example:

{
  "fresh_reactant_flow": 100,
  "single_pass_conversion": 0.5,
  "unreacted_recovery": 0.9,
  "purge_fraction": 0.1
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
reactor_reactant_feed number mol/s Reactor reactant feed
recycle_flow number mol/s Recycle flow
converted_reactant_flow number mol/s Converted reactant flow
purge_flow number mol/s Purge flow
unrecovered_flow number mol/s Unrecovered flow
overall_conversion number 1 Overall conversion
fresh_balance_residual number mol/s Fresh balance residual

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.advanced.

Example assumptions: 단일 반응물·지정 단회 전환율/미반응 회수율·퍼지; 선형 재순환 정상 고정점 해석해; 다성분 비선형 열역학 재순환은 별도 DWSIM 공정 필요

59. environment.treatment — 대기·폐수·폐기물 처리단계 부하 비교

Purpose / operating model: 제공 물질별 제거율·직렬 처리 단계; 제거=소멸 아님

Equations / algorithm: outlet=inlet*product(1-removal_fraction)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
annual_operating_hours yes integer declared in object / not applicable Annual operating hours
inlet_pollutant_mass_flows yes object declared in object / not applicable Inlet pollutant mass flows
performance_source yes string declared in object / not applicable Performance source
stages yes array declared in object / not applicable Stages

Complete assumed input example:

{
  "annual_operating_hours": 8000,
  "inlet_pollutant_mass_flows": {
    "VOC": {
      "value": 0.1,
      "unit": "kg/s"
    }
  },
  "performance_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
  "stages": [
    {
      "name": "capture",
      "removal_fractions": {
        "VOC": 0.9
      },
      "electric_power": 1000,
      "coefficient_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
    },
    {
      "name": "polish",
      "removal_fractions": {
        "VOC": 0.5
      },
      "electric_power": 500,
      "coefficient_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
outlet_pollutant_mass_flows object kg/s Outlet pollutant mass flows
annual_outlet_pollutant_mass object kg/year Annual outlet pollutant mass
removed_loads object kg/s Removed loads
electric_power number W Electric power
annual_electricity number kWh/year Annual electricity
stages array nested structure / not applicable Stages
performance_source string nested structure / not applicable Performance source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.assessment.

Example assumptions: 제공 제거율의 직렬 처리단계 대안 모델; 물질별 제거 부하를 별도로 기록; 제거량은 소멸을 의미하지 않으며 포집물·슬러지·전환 생성물의 후속 수지는 별도; 대기 확산·독성·수질 기준·허가 적합 판정 별도

60. environment.receiving_water — 방류 수질·열오염 완전혼합 수지

Purpose / operating model: 단순 완전혼합·열부하; 방류 허가 모델 아님

Equations / algorithm: Cmix=sum(Q*C)/sum(Q); heat=Q*rho*Cp*dT

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
receiving_volume_flow yes quantity {value, unit} or SI number m3/s Receiving volume flow; volume_flow
effluent_volume_flow yes quantity {value, unit} or SI number m3/s Effluent volume flow; volume_flow
receiving_temperature yes quantity {value, unit} or SI number K Receiving temperature; temperature
effluent_temperature yes quantity {value, unit} or SI number K Effluent temperature; temperature
density yes quantity {value, unit} or SI number kg/m3 Density; density
heat_capacity yes quantity {value, unit} or SI number J/(kg*K) Heat capacity; heat_capacity
mixing_basis yes string declared in object / not applicable Mixing basis
receiving_concentrations_kg_m3 yes object declared in object / not applicable Receiving concentrations kg m3
effluent_concentrations_kg_m3 yes object declared in object / not applicable Effluent concentrations kg m3

Complete assumed input example:

{
  "receiving_volume_flow": 9,
  "effluent_volume_flow": 1,
  "receiving_temperature": 293.15,
  "effluent_temperature": 313.15,
  "density": 1000,
  "heat_capacity": 4200,
  "mixing_basis": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
  "receiving_concentrations_kg_m3": {
    "A": 0.001
  },
  "effluent_concentrations_kg_m3": {
    "A": 0.011
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
mixed_temperature number K Mixed temperature
mixed_concentrations_kg_m3 object kg/m3 Mixed concentrations kg m3
thermal_discharge number W Thermal discharge
mixing_basis string nested structure / not applicable Mixing basis

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.assessment.

Example assumptions: 정상 완전 혼합·동일 밀도/비열·무반응·외부 열교환 없음; 열오염 예비 부하와 희석 수지이며 혼합대·수생태 영향·방류 허가 모델 아님

61. environment.noise — 복수 음원 예비 소음 합산

Purpose / operating model: 독립 점음원 자유음장·지정 감쇠; 법적 적합 판정 별도

Equations / algorithm: Lp=Lw+10log(Qdirectivity/(4pi*r^2)); total=10log(sum(10^(Lp/10)))

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
acoustic_basis yes string declared in object / not applicable Acoustic basis
sources yes array declared in object / not applicable Sources

Complete assumed input example:

{
  "acoustic_basis": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
  "sources": [
    {
      "name": "P1",
      "sound_power_dBA": 90,
      "distance": 10,
      "directivity_factor": 1,
      "additional_attenuation_dB": 0
    },
    {
      "name": "P2",
      "sound_power_dBA": 90,
      "distance": 10,
      "directivity_factor": 1,
      "additional_attenuation_dB": 0
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
receiver_level_dBA number dBA Receiver level dba
sources array nested structure / not applicable Sources
acoustic_basis string nested structure / not applicable Acoustic basis

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.assessment.

Example assumptions: 독립 점음원·자유음장 기하 감쇠와 지정 지향성/추가 감쇠; 대수 합산; A 가중 음향파워 입력; 반사·회절·기상·주파수별 전파·법적 소음 적합 판정 별도

62. environment.impacts — 인벤토리 영향범주 특성화

Purpose / operating model: 사용자 방법/연도별 특성화계수·범주별 합산; LCA 인증 아님

Equations / algorithm: impact_category=sum(inventory*characterization_factor)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
inventory yes object declared in object / not applicable Inventory
characterization_source yes string declared in object / not applicable Characterization source
characterization_factors yes array declared in object / not applicable Characterization factors

Complete assumed input example:

{
  "inventory": {
    "CO2": {
      "value": 100,
      "unit": "kg/year"
    },
    "CH4": {
      "value": 2,
      "unit": "kg/year"
    }
  },
  "characterization_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
  "characterization_factors": [
    {
      "flow": "CO2",
      "category": "GWP_example",
      "inventory_unit": "kg/year",
      "impact_unit": "kgCO2e/year",
      "factor": 1
    },
    {
      "flow": "CH4",
      "category": "GWP_example",
      "inventory_unit": "kg/year",
      "impact_unit": "kgCO2e/year",
      "factor": 25
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
impacts object nested structure / not applicable Impacts
contributions array nested structure / not applicable Contributions
characterization_source string nested structure / not applicable Characterization source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.assessment.

Example assumptions: 사용자 인벤토리×방법/연도별 특성화계수; 영향 범주별 합산; 서로 다른 범주를 임의 합산/가중하지 않음; 누락 인벤토리·시스템 경계·공급망 데이터와 ISO LCA 검토 별도

63. thermal.pinch_segmented — 잠열·구간 CP 핀치 분석

Purpose / operating model: 구간별 CP·등온 잠열 이벤트 캐스케이드; 열교환망 상세 합성 별도

Equations / algorithm: temperature shift; latent jumps + sensible cascade

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
minimum_approach yes quantity {value, unit} or SI number delta_K Minimum approach; temperature_difference
streams yes array declared in object / not applicable Streams

Complete assumed input example:

{
  "minimum_approach": 10,
  "streams": [
    {
      "name": "hot",
      "kind": "hot",
      "data_source": "고도화 검증용 가정값. 실측 속도상수·열전달·시장 분포·상관 자료 아님.",
      "segments": [
        {
          "inlet_temperature": 400,
          "outlet_temperature": 350,
          "heat_capacity_flow_W_K": 100
        },
        {
          "inlet_temperature": 350,
          "outlet_temperature": 300,
          "heat_capacity_flow_W_K": 200
        }
      ],
      "latent_loads": [
        {
          "temperature": 350,
          "heat_duty": 1000
        }
      ]
    },
    {
      "name": "cold",
      "kind": "cold",
      "data_source": "고도화 검증용 가정값. 실측 속도상수·열전달·시장 분포·상관 자료 아님.",
      "segments": [
        {
          "inlet_temperature": 290,
          "outlet_temperature": 340,
          "heat_capacity_flow_W_K": 200
        },
        {
          "inlet_temperature": 340,
          "outlet_temperature": 390,
          "heat_capacity_flow_W_K": 100
        }
      ],
      "latent_loads": [
        {
          "temperature": 340,
          "heat_duty": 1000
        }
      ]
    }
  ]
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
minimum_heating integer W Minimum heating
minimum_cooling number W Minimum cooling
maximum_heat_recovery number W Maximum heat recovery
total_hot_duty number W Total hot duty
total_cold_duty number W Total cold duty
energy_residual number W Energy residual
intervals array nested structure / not applicable Intervals
grand_composite_curve array nested structure / not applicable Grand composite curve
hot_composite array nested structure / not applicable Hot composite
cold_composite array nested structure / not applicable Cold composite
pinch_temperatures array nested structure / not applicable Pinch temperatures
sensible_segments array nested structure / not applicable Sensible segments
latent_events array nested structure / not applicable Latent events

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.refinement.

Example assumptions: 구간별 일정 CP·등온 잠열의 온도 시프트와 열 캐스케이드; 잠열 전후 잔차 모두 확인; 공급 가능한 유틸리티 온도/압력과 열교환망·면적·경제 최적화는 별도; 제공된 데이터 구간 내 목표값이며 실제 DWSIM 열부하를 자동 감산하지 않음

64. thermal.exchanger_rating — 오염저항·ε-NTU 출구온도 성능평가

Purpose / operating model: 향류/병류 일정 CP 두 유체; 출구 온도·부하·엔트로피

Equations / algorithm: 1/Udirty=1/Uclean+Rf; Q=epsilon*Cmin*(Th-Tc)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
arrangement yes string declared in object / not applicable Arrangement; choices: ('countercurrent', 'cocurrent')
hot_inlet_temperature yes quantity {value, unit} or SI number K Hot inlet temperature; temperature
cold_inlet_temperature yes quantity {value, unit} or SI number K Cold inlet temperature; temperature
hot_mass_flow yes quantity {value, unit} or SI number kg/s Hot mass flow; mass_flow
cold_mass_flow yes quantity {value, unit} or SI number kg/s Cold mass flow; mass_flow
hot_heat_capacity yes quantity {value, unit} or SI number J/(kg*K) Hot heat capacity; heat_capacity
cold_heat_capacity yes quantity {value, unit} or SI number J/(kg*K) Cold heat capacity; heat_capacity
clean_overall_coefficient yes quantity {value, unit} or SI number W/(m2*K) Clean overall coefficient; heat_transfer_coefficient
total_fouling_resistance_m2_K_W yes number declared in object / not applicable Total fouling resistance m2 k w
area yes quantity {value, unit} or SI number m2 Area; area
coefficient_source yes string declared in object / not applicable Coefficient source

Complete assumed input example:

{
  "arrangement": "countercurrent",
  "hot_inlet_temperature": 400,
  "cold_inlet_temperature": 300,
  "hot_mass_flow": 1,
  "cold_mass_flow": 1,
  "hot_heat_capacity": 1000,
  "cold_heat_capacity": 1000,
  "clean_overall_coefficient": 100,
  "total_fouling_resistance_m2_K_W": 0.001,
  "area": 10,
  "coefficient_source": "고도화 검증용 가정값. 실측 속도상수·열전달·시장 분포·상관 자료 아님."
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
heat_duty number W Heat duty
hot_outlet_temperature number K Hot outlet temperature
cold_outlet_temperature number K Cold outlet temperature
effectiveness number 1 Effectiveness
NTU number 1 Ntu
dirty_overall_coefficient number W/(m2*K) Dirty overall coefficient
minimum_terminal_approach number delta_K Minimum terminal approach
entropy_generation number W/K Entropy generation
energy_residual number W Energy residual

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.refinement.

Example assumptions: 향류/병류 두 유체 ε-NTU; 일정 CP·무상변화·무외부 열손실; 1/Udirty=1/Uclean+Rf; Rf는 동일 면적 기준의 총 오염저항; 압력손실·관/쉘 상세 구조·2상·비등온 물성 변화는 별도

65. reactor.nonisothermal — 비등온 PFR·배치 반응·냉각 연성

Purpose / operating model: 단일 power-law·Arrhenius·일정 밀도/CP·적응 RK4; 강성 다중반응 제외

Equations / algorithm: dC/dt=-k(T) C^n; rhoCp*dT/dt=-deltaH*r-UAvol*(T-Tc)

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
reactor_type yes string declared in object / not applicable Reactor type; choices: ('PFR', 'batch')
inlet_concentration_mol_m3 yes integer declared in object / not applicable Inlet concentration mol m3
inlet_temperature yes quantity {value, unit} or SI number K Inlet temperature; temperature
reference_temperature yes quantity {value, unit} or SI number K Reference temperature; temperature
reference_rate_constant_SI yes number declared in object / not applicable Reference rate constant si
activation_energy_J_mol yes integer declared in object / not applicable Activation energy j mol
reaction_order yes integer declared in object / not applicable Reaction order
reaction_enthalpy_J_mol yes integer declared in object / not applicable Reaction enthalpy j mol
volumetric_heat_capacity_J_m3_K yes integer declared in object / not applicable Volumetric heat capacity j m3 k
volumetric_heat_transfer_W_m3_K yes integer declared in object / not applicable Volumetric heat transfer w m3 k
coolant_temperature yes quantity {value, unit} or SI number K Coolant temperature; temperature
kinetics_and_heat_transfer_source yes string declared in object / not applicable Kinetics and heat transfer source
minimum_valid_temperature yes quantity {value, unit} or SI number K Minimum valid temperature; temperature
maximum_valid_temperature yes quantity {value, unit} or SI number K Maximum valid temperature; temperature
active_volume yes quantity {value, unit} or SI number m3 Active volume; volume
volume_flow optional / conditional quantity {value, unit} or SI number m3/s Volume flow; volume_flow
reaction_time optional / conditional quantity {value, unit} or SI number s Reaction time; time
relative_tolerance optional / conditional number declared in object / not applicable Relative tolerance
maximum_steps optional / conditional integer declared in object / not applicable Maximum steps

Complete assumed input example:

{
  "reactor_type": "PFR",
  "inlet_concentration_mol_m3": 100,
  "inlet_temperature": 300,
  "reference_temperature": 300,
  "reference_rate_constant_SI": 0.1,
  "activation_energy_J_mol": 50000,
  "reaction_order": 1,
  "reaction_enthalpy_J_mol": -10000,
  "volumetric_heat_capacity_J_m3_K": 4000000,
  "volumetric_heat_transfer_W_m3_K": 1000,
  "coolant_temperature": 290,
  "kinetics_and_heat_transfer_source": "고도화 검증용 가정값. 실측 속도상수·열전달·시장 분포·상관 자료 아님.",
  "minimum_valid_temperature": 280,
  "maximum_valid_temperature": 360,
  "active_volume": 0.1,
  "volume_flow": 0.01
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
outlet_concentration_mol_m3 number mol/m3 Outlet concentration mol m3
outlet_temperature number K Outlet temperature
conversion number 1 Conversion
residence_or_reaction_time number s Residence or reaction time
reaction_heat_released number W Reaction heat released
external_heat_removed number W External heat removed
sensible_heat number W Sensible heat
energy_residual number W Energy residual
accepted_steps integer nested structure / not applicable Accepted steps
attempts integer nested structure / not applicable Attempts
maximum_scaled_step_error number nested structure / not applicable Maximum scaled step error
profile array nested structure / not applicable Profile

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.refinement.

Example assumptions: 단일 비가역 power-law·Arrhenius·일정 밀도/부피 열용량; PFR 체류좌표 또는 정용적 배치; RK4 두 반간격/한 전체간격 오차 제어; 지정 유효 온도 범위·단계 한계에서 실패 시 결과 미반환; 양의 제거열은 냉각, 음수는 외부 가열; 강성 다중반응·안전 폭주 인증은 별도

66. design.multivariable — 다변수 제약 조합 탐색

Purpose / operating model: 1~4변수·2500개 유한 조합 내 최선; 연속 전역 최적성 보장 없음

Equations / algorithm: feasible Cartesian grid argmin/argmax

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
method yes string declared in object / not applicable Method
base_inputs yes object declared in object / not applicable Base inputs
variables yes object declared in object / not applicable Variables
objective yes string declared in object / not applicable Objective
direction yes string declared in object / not applicable Direction; choices: ('min', 'max')
constraints optional / conditional object declared in object / not applicable Constraints

Complete assumed input example:

{
  "method": "thermal.exchanger_rating",
  "base_inputs": {
    "arrangement": "countercurrent",
    "hot_inlet_temperature": 400,
    "cold_inlet_temperature": 300,
    "hot_mass_flow": 1,
    "cold_mass_flow": 1,
    "hot_heat_capacity": 1000,
    "cold_heat_capacity": 1000,
    "clean_overall_coefficient": 100,
    "total_fouling_resistance_m2_K_W": 0.001,
    "area": 10,
    "coefficient_source": "고도화 검증용 가정값. 실측 속도상수·열전달·시장 분포·상관 자료 아님."
  },
  "variables": {
    "area": [
      5,
      10,
      15
    ],
    "total_fouling_resistance_m2_K_W": [
      0,
      0.001,
      0.002
    ]
  },
  "objective": "heat_duty",
  "direction": "max",
  "constraints": {
    "cold_outlet_temperature": {
      "maximum": 360
    }
  }
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
best object nested structure / not applicable Best
evaluations array nested structure / not applicable Evaluations
feasible_count integer nested structure / not applicable Feasible count
evaluated_count integer nested structure / not applicable Evaluated count

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.refinement.

Example assumptions: 유한 후보 조합 전수 탐색·제약 검사; 연속/전역 최적성 보장 없음; 입력값·단위·각 계산기의 물리 유효범위를 유지하며 실패 조합을 별도 기록

67. assessment.risk — 상관 단가·배출계수 경제환경 불확실성

Purpose / operating model: 고정 공정량·Gaussian copula·일양/삼각 분포; 20~500표본

Equations / algorithm: PSD Cholesky; inverse marginal CDF; coupled NPV/CO2e quantiles

Input parameters (required means the top-level key is mandatory; conditional requirements are also checked by the calculator):

Parameter Required Type SI unit / convention Meaning / condition
process_metrics yes object declared in object / not applicable Process metrics
basis yes object declared in object / not applicable Basis
process_source yes string declared in object / not applicable Process source
distributions yes object declared in object / not applicable Distributions
latent_correlation yes array declared in object / not applicable Latent correlation
samples yes integer declared in object / not applicable Samples
seed yes integer declared in object / not applicable Seed
uncertainty_source yes string declared in object / not applicable Uncertainty source

Complete assumed input example:

{
  "process_metrics": {
    "feed_mass": {
      "value": 1.3838832,
      "unit": "kg/s"
    },
    "feed_temperature": {
      "value": 293.15,
      "unit": "K"
    },
    "feed_pressure": {
      "value": 101325.0,
      "unit": "Pa"
    },
    "feed_enthalpy": {
      "value": -1829.7033412351411,
      "unit": "kJ/kg"
    },
    "feed_methanol_mass_fraction": {
      "value": 0.5001196632779414,
      "unit": "1"
    },
    "feed_water_mass_fraction": {
      "value": 0.4998803367220586,
      "unit": "1"
    },
    "pumped_mass": {
      "value": 1.3838832,
      "unit": "kg/s"
    },
    "pumped_temperature": {
      "value": 293.1699670003287,
      "unit": "K"
    },
    "pumped_pressure": {
      "value": 301325.0,
      "unit": "Pa"
    },
    "pumped_enthalpy": {
      "value": -1829.4112559390717,
      "unit": "kJ/kg"
    },
    "pumped_methanol_mass_fraction": {
      "value": 0.5001196632779414,
      "unit": "1"
    },
    "pumped_water_mass_fraction": {
      "value": 0.4998803367220586,
      "unit": "1"
    },
    "heated_mass": {
      "value": 1.3838832,
      "unit": "kg/s"
    },
    "heated_temperature": {
      "value": 319.42640660747713,
      "unit": "K"
    },
    "heated_pressure": {
      "value": 281325.0,
      "unit": "Pa"
    },
    "heated_enthalpy": {
      "value": -1731.8989766316238,
      "unit": "kJ/kg"
    },
    "heated_methanol_mass_fraction": {
      "value": 0.5001196632779414,
      "unit": "1"
    },
    "heated_water_mass_fraction": {
      "value": 0.4998803367220586,
      "unit": "1"
    },
    "column_feed_mass": {
      "value": 1.3838832,
      "unit": "kg/s"
    },
    "column_feed_temperature": {
      "value": 319.4795128904956,
      "unit": "K"
    },
    "column_feed_pressure": {
      "value": 101325.0,
      "unit": "Pa"
    },
    "column_feed_enthalpy": {
      "value": -1731.8989394475432,
      "unit": "kJ/kg"
    },
    "column_feed_methanol_mass_fraction": {
      "value": 0.5001196632779414,
      "unit": "1"
    },
    "column_feed_water_mass_fraction": {
      "value": 0.4998803367220586,
      "unit": "1"
    },
    "distillate_mass": {
      "value": 0.7106573503632283,
      "unit": "kg/s"
    },
    "distillate_temperature": {
      "value": 339.8738838298527,
      "unit": "K"
    },
    "distillate_pressure": {
      "value": 101325.0,
      "unit": "Pa"
    },
    "distillate_enthalpy": {
      "value": -1117.2827787155925,
      "unit": "kJ/kg"
    },
    "distillate_methanol_mass_fraction": {
      "value": 0.9378332377048909,
      "unit": "1"
    },
    "distillate_water_mass_fraction": {
      "value": 0.06216676229510909,
      "unit": "1"
    },
    "flash_feed_mass": {
      "value": 0.7106573503632283,
      "unit": "kg/s"
    },
    "flash_feed_temperature": {
      "value": 330.710626368568,
      "unit": "K"
    },
    "flash_feed_pressure": {
      "value": 70000.0,
      "unit": "Pa"
    },
    "flash_feed_enthalpy": {
      "value": -1117.2827785628429,
      "unit": "kJ/kg"
    },
    "flash_feed_methanol_mass_fraction": {
      "value": 0.9378332377048909,
      "unit": "1"
    },
    "flash_feed_water_mass_fraction": {
      "value": 0.06216676229510909,
      "unit": "1"
    },
    "gas_mass": {
      "value": 0.020426691452446737,
      "unit": "kg/s"
    },
    "gas_temperature": {
      "value": 330.710626368568,
      "unit": "K"
    },
    "gas_pressure": {
      "value": 70000.0,
      "unit": "Pa"
    },
    "gas_enthalpy": {
      "value": 46.671510831617,
      "unit": "kJ/kg"
    },
    "gas_methanol_mass_fraction": {
      "value": 0.9843964489437684,
      "unit": "1"
    },
    "gas_water_mass_fraction": {
      "value": 0.01560355105623159,
      "unit": "1"
    },
    "liquid_mass": {
      "value": 0.6902306588994397,
      "unit": "kg/s"
    },
    "liquid_temperature": {
      "value": 330.710626368568,
      "unit": "K"
    },
    "liquid_pressure": {
      "value": 70000.0,
      "unit": "Pa"
    },
    "liquid_enthalpy": {
      "value": -1151.7288507963228,
      "unit": "kJ/kg"
    },
    "liquid_methanol_mass_fraction": {
      "value": 0.9364552456495976,
      "unit": "1"
    },
    "liquid_water_mass_fraction": {
      "value": 0.06354475435040237,
      "unit": "1"
    },
    "bottoms_mass": {
      "value": 0.6732268957428085,
      "unit": "kg/s"
    },
    "bottoms_temperature": {
      "value": 371.65525532191174,
      "unit": "K"
    },
    "bottoms_pressure": {
      "value": 101325.0,
      "unit": "Pa"
    },
    "bottoms_enthalpy": {
      "value": -2081.499268318897,
      "unit": "kJ/kg"
    },
    "bottoms_methanol_mass_fraction": {
      "value": 0.03807261118878612,
      "unit": "1"
    },
    "bottoms_water_mass_fraction": {
      "value": 0.9619273888112139,
      "unit": "1"
    },
    "hot_in_mass": {
      "value": 2.0,
      "unit": "kg/s"
    },
    "hot_in_temperature": {
      "value": 368.15,
      "unit": "K"
    },
    "hot_in_pressure": {
      "value": 300000.0,
      "unit": "Pa"
    },
    "hot_in_enthalpy": {
      "value": -2142.823991983974,
      "unit": "kJ/kg"
    },
    "hot_out_mass": {
      "value": 2.0,
      "unit": "kg/s"
    },
    "hot_out_temperature": {
      "value": 352.7677340571156,
      "unit": "K"
    },
    "hot_out_pressure": {
      "value": 290000.0,
      "unit": "Pa"
    },
    "hot_out_enthalpy": {
      "value": -2210.296802705594,
      "unit": "kJ/kg"
    },
    "shaft_power": {
      "value": 0.4042109395812837,
      "unit": "kW"
    },
    "heat_duty": {
      "value": 134.9456214428584,
      "unit": "kW"
    },
    "engine_area": {
      "value": 5.0,
      "unit": "m2"
    },
    "reboiler_raw": {
      "value": -2729.6217947077225,
      "unit": "kW"
    },
    "condenser_raw": {
      "value": 2528.205228978433,
      "unit": "kW"
    },
    "stage_count": {
      "value": 8.0,
      "unit": "1"
    },
    "methanol_purity": {
      "value": 0.8945334882210616,
      "unit": "1"
    },
    "gas_methanol_purity": {
      "value": 0.9725802062188924,
      "unit": "1"
    },
    "liquid_methanol_purity": {
      "value": 0.8923059262391173,
      "unit": "1"
    },
    "reboiler_duty": {
      "value": 2729.6217947077225,
      "unit": "kW"
    },
    "condenser_duty": {
      "value": 2528.205228978433,
      "unit": "kW"
    },
    "electric_power": {
      "value": 0.4491232662014263,
      "unit": "kW"
    },
    "hot_water_duty": {
      "value": 134945.6,
      "unit": "W"
    }
  },
  "basis": {
    "currency": "USD",
    "annual_operating_hours": 8000,
    "project_years": 10,
    "discount_rate": 0.08,
    "tax_rate": 0.2,
    "cost_and_factor_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님.",
    "basis_date": "2026-11-04",
    "steam_specific_energy": {
      "value": 2100,
      "unit": "kJ/kg"
    },
    "cooling_water_heat_capacity": 4200,
    "cooling_water_temperature_rise": 10,
    "auxiliary_electric_power": {
      "value": 5,
      "unit": "kW"
    },
    "cooling_water_makeup_fraction": 0.02,
    "water_density": 1000,
    "water_consumption_fraction": 0.5,
    "steam_price_per_kg": {
      "value": 0.025,
      "unit": "USD/kg"
    },
    "electricity_price_per_kWh": {
      "value": 0.12,
      "unit": "USD/kWh"
    },
    "hot_water_price_per_GJ": {
      "value": 10,
      "unit": "USD/GJ"
    },
    "makeup_water_price_per_m3": {
      "value": 1,
      "unit": "USD/m3"
    },
    "feed_price_per_kg": {
      "value": 0.2,
      "unit": "USD/kg"
    },
    "waste_treatment_price_per_kg": {
      "value": 0.03,
      "unit": "USD/kg"
    },
    "annual_fixed_operating_cost": {
      "value": 100000,
      "unit": "USD/year"
    },
    "working_capital": 100000,
    "installed_cost_factor": 3,
    "contingency_fraction": 0.15,
    "carbon_price_per_tonne": {
      "value": 30,
      "unit": "USD/tCO2e"
    },
    "equipment_costs": [
      {
        "tag": "P-101",
        "capacity_metric": "shaft_power",
        "capacity_dimension": "power",
        "reference_capacity": {
          "value": 1000,
          "unit": "W"
        },
        "reference_cost": 5000,
        "scaling_exponent": 0.6,
        "quote_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      },
      {
        "tag": "E-101",
        "capacity_metric": "engine_area",
        "capacity_dimension": "area",
        "reference_capacity": {
          "value": 5,
          "unit": "m2"
        },
        "reference_cost": 15000,
        "scaling_exponent": 0.6,
        "quote_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      },
      {
        "tag": "T-101",
        "capacity_metric": "feed_mass",
        "capacity_dimension": "mass_flow",
        "reference_capacity": {
          "value": 1.3838832,
          "unit": "kg/s"
        },
        "reference_cost": 200000,
        "scaling_exponent": 0.6,
        "quote_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      },
      {
        "tag": "S-101",
        "capacity_metric": "distillate_mass",
        "capacity_dimension": "mass_flow",
        "reference_capacity": {
          "value": 0.71,
          "unit": "kg/s"
        },
        "reference_cost": 20000,
        "scaling_exponent": 0.6,
        "quote_source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      }
    ],
    "stream_disposition": {
      "GAS": {
        "product": 1,
        "air": 0,
        "wastewater": 0,
        "solid": 0,
        "recycle": 0
      },
      "LIQUID": {
        "product": 1,
        "air": 0,
        "wastewater": 0,
        "solid": 0,
        "recycle": 0
      },
      "BOTTOMS": {
        "product": 0,
        "air": 0,
        "wastewater": 1,
        "solid": 0,
        "recycle": 0
      }
    },
    "product_price_per_kg": {
      "GAS": {
        "value": 0.7,
        "unit": "USD/kg"
      },
      "LIQUID": {
        "value": 0.6,
        "unit": "USD/kg"
      },
      "BOTTOMS": {
        "value": 0,
        "unit": "USD/kg"
      }
    },
    "minimum_methanol_mass_fraction": {
      "GAS": 0,
      "LIQUID": 0,
      "BOTTOMS": 0
    },
    "emission_factors": {
      "electricity": {
        "value": 0.4,
        "unit": "kgCO2e/kWh",
        "source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      },
      "steam": {
        "value": 0.15,
        "unit": "kgCO2e/kg",
        "source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      },
      "hot_water": {
        "value": 60,
        "unit": "kgCO2e/GJ",
        "source": "사용자 검토용 가정 예제. 실제 견적·배출계수·현장 성능 데이터 아님."
      }
    },
    "additional_emission_activities": []
  },
  "process_source": "가정 공정량; 실제 스냅샷 평가는 별도 DB 연결",
  "distributions": {
    "feed_price_per_kg.value": {
      "distribution": "uniform",
      "minimum": 0.18,
      "maximum": 0.22
    },
    "steam_price_per_kg.value": {
      "distribution": "triangular",
      "minimum": 0.02,
      "mode": 0.025,
      "maximum": 0.03
    },
    "emission_factors.steam.value": {
      "distribution": "uniform",
      "minimum": 0.12,
      "maximum": 0.18
    }
  },
  "latent_correlation": [
    [
      1,
      0.5,
      0
    ],
    [
      0.5,
      1,
      0.3
    ],
    [
      0,
      0.3,
      1
    ]
  ],
  "samples": 40,
  "seed": 42,
  "uncertainty_source": "고도화 검증용 가정값. 실측 속도상수·열전달·시장 분포·상관 자료 아님."
}

Output parameters (result["values"]; units are returned separately in result["units"]):

Output Type Unit Meaning
npv_mean number USD Npv mean
npv_p05 number USD Npv p05
npv_p50 number USD Npv p50
npv_p95 number USD Npv p95
probability_positive_npv number 1 Probability positive npv
annual_CO2e_mean number kg CO2e/year Annual co2e mean
annual_CO2e_p05 number kg CO2e/year Annual co2e p05
annual_CO2e_p95 number kg CO2e/year Annual co2e p95
operating_cost_statistics object nested structure / not applicable Operating cost statistics
samples integer nested structure / not applicable Samples
seed integer nested structure / not applicable Seed
latent_correlation array nested structure / not applicable Latent correlation
distribution_order array nested structure / not applicable Distribution order
input_samples array nested structure / not applicable Input samples
outcomes array nested structure / not applicable Outcomes
process_source string nested structure / not applicable Process source
uncertainty_source string nested structure / not applicable Uncertainty source

Full structured result, including nested rows, assumptions, warnings and checks: result JSON. Implementation: plantdesign.calculations.refinement.

Example assumptions: 고정한 공정 스냅샷에서 평가 단가/배출계수만 확률화; 운전조건 변화에 대한 DWSIM 재수렴은 수행하지 않음; 상관행렬은 Gaussian copula의 잠재 정규 상관이며 변환한 단가의 Pearson 상관과 동일하지 않을 수 있음; 준정부호 Cholesky·일양/삼각 주변분포·고정 seed; 동일 seed는 공정 대안에 공통 난수 사용; 분포·상관·표본 분위수는 사용자 가정; 실제 시장/배출 예측이나 수익 보장 아님

Metadata

Release files for plantdesign-toolkit 0.11.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for plantdesign-toolkit 0.11.0
File Size Uploaded Provenance Actions
plantdesign_toolkit-0.11.0.tar.gz 895.4 kB With provenance Details for plantdesign_toolkit-0.11.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for plantdesign-toolkit 0.11.0
File Interpreter ABI Platform Actions
plantdesign_toolkit-0.11.0-py3-none-any.whl Python 3 none any Details for plantdesign_toolkit-0.11.0-py3-none-any.whl

Total release size: 1.3 MB

Release files / plantdesign_toolkit-0.11.0.tar.gz

Download URL plantdesign_toolkit-0.11.0.tar.gz
Size 895.4 kB
Tags Source
SHA-256 checksum
How to use checksums
69cf339180bfe486f0201ca076cc8642a28aa43e76a6259672417967f9ecaffa
BLAKE2b-256 checksum
How to use checksums
f472832c1cbd8ea39634e0508fc54b77140c438baac381eb9c9a36d2309624a4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Release files / plantdesign_toolkit-0.11.0-py3-none-any.whl

Download URL plantdesign_toolkit-0.11.0-py3-none-any.whl
Size 407.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b5ef01e087e6f19a7f53b1b0d6be34fd4347c2166821be693b3fa650acb152c3
BLAKE2b-256 checksum
How to use checksums
2c349ed298df31f69e006ca12a41a44c7dbb48db9a4d09196a1c76d79c915d57
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

Security for plantdesign-toolkit 0.11.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

Both files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for plantdesign_toolkit-0.11.0.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 4, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.11.0 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page