moonbit-chemreport

A MoonBit-native report layer for chemical engineering calculations.

chemistry
report
engineering
markdown
html
json
moon add lllg123/moonbit-chemreport@0.3.0
Download zip
Author
Version
0.3.0
License
Apache-2.0
Last updated
1 hour ago
Downloads
4
README

#moonbit-chemreport

moonbit-chemreport is a MoonBit-native reporting and engineering calculation layer for process engineering software. It turns assumptions, inputs, formulas, balances, results, warnings, sources, and scenario sweeps into one deterministic model for people, scripts, and CI.

#Project positioning

The package is an integration layer, not a process simulator or a thermodynamic property database. It is designed for reactor, distillation, absorption, heat-exchanger, pump, and mass-balance packages that need reproducible calculation evidence and consistent exports.

#Core capabilities

  • Typed ChemReport model with validation and quality gates.
  • Markdown, HTML, JSON, CSV, and table exports from shared data.
  • Unit-aware quantities with dimensional compatibility checks and temperature validation.
  • Material and energy balance closure, recovery, residual, and limiting-component analysis.
  • Reactor, distillation, heat-exchanger, pump, pressure-drop, and safety-review calculations.
  • Statistical summaries, percentiles, moving averages, control limits, and deterministic sweeps.
  • Batch execution, recipe scaling, process scheduling, maintenance windows, and workflow audit trails.
  • Stream inventories, equipment screening, reaction kinetics, mass transfer, heat transfer, risk registers, and environmental inventories.
  • Data-quality profiles, delimited import validation, cost models, uncertainty propagation, and rule-driven acceptance gates.

#Quick start

moon update moon check --target all --deny-warn moon test --target all --deny-warn moon run cmd/main

The package has no runtime dependency outside the MoonBit standard toolchain. The CLI prints a Markdown preview followed by the same report encoded as JSON.

#CLI

moon run cmd/main

The CLI is intentionally small: it exercises the public package as a consumer would, keeping the example aligned with the library API.

#Architecture

AreaFilesResponsibility
Domain modelmoonbit-chemreport.mbtReport records, enums, and constructors
Exportersmarkdown_export.mbt, html_export.mbt, json_export.mbt, table.mbtDeterministic human and machine output
Engineering mathunits.mbt, balance.mbt, process_calculations.mbtUnits, balances, equipment and safety calculations
Scenario analysisanalytics.mbt, scenario_engine.mbtStatistics, control limits, sweeps, and sensitivity
Process modelsstreams.mbt, equipment_design.mbt, reactor_kinetics.mbt, mass_transfer.mbt, heat_transfer.mbtInventory, sizing, kinetics, contacting and thermal screening
Operationsbatch_operations.mbt, process_schedule.mbt, workflow.mbt, control_system.mbtRecipes, calendars, review state, alarms and control loops
Quality and riskvalidate.mbt, quality.mbt, diagnostics.mbt, validation_rules.mbt, data_quality.mbt, risk_analysis.mbtEvidence checks, risk ranking, import quality and acceptance gates
Economics and sustainabilitycost_model.mbt, uncertainty.mbt, environmental.mbtCost, uncertainty, emissions and reduction scenarios
Integrationreport_pipeline.mbt, benchmark.mbt, data_import.mbtBuilders, batches, reproducible measurements and delimited data
Integrationreport_pipeline.mbt, benchmark.mbtBuilders, batches, and reproducible export measurements

Public concrete types live in the root package so downstream packages can construct and inspect them without depending on internal implementation paths.

#Benchmark

The benchmark is executable and measures the bytes produced by all three primary exporters over a chosen number of iterations:

let result = benchmark_exports([example_chemreport()], 100)
println(result.to_markdown())

It reports Markdown, HTML, JSON, total, and average bytes. This is an export-size proxy, not a claim about a particular machine's wall-clock performance; run it in the target CI environment when comparing revisions.

The checked-in CLI benchmark was run with 100 iterations on one example report and produced 349,200 Markdown bytes, 477,100 HTML bytes, and 404,200 JSON bytes (1,230,500 bytes total; 12,305 bytes/report). Reproduce it with moon run cmd/benchmark.

#Testing

The library currently contains more than 8,600 lines of formatted production MoonBit source. Tests cover public behavior and boundary cases including incompatible units, absolute-zero validation, balance tolerance, empty and singleton statistics, control-limit classification, malformed delimited rows, batch scaling, risk ranking, reactor gates, HTML/Markdown/CSV escaping, quality gates, and benchmark reproducibility.

moon test --target all --deny-warn moon test --target native --enable-coverage moon coverage report -f summary moon coverage analyze

#CI

.github/workflows/check.yml runs on Ubuntu, macOS, and Windows. Each job installs the current stable MoonBit CLI, updates dependencies, checks all targets, runs tests including native tests and coverage, verifies formatting and generated interfaces, and exercises the CLI.

moon info output is checked into the change review so accidental public API changes remain visible.

#License

Apache-2.0. See LICENSE.

#
AbsorberDesign

pub struct AbsorberDesign {
gas_flow_mol_h : Float
liquid_flow_mol_h : Float
inlet_gas_fraction : Float
outlet_gas_fraction : Float
equilibrium : EquilibriumLine
overall_kya_h : Float
}

#
AbsorberDesign::height

fn AbsorberDesign::height(self : AbsorberDesign, htu_m : Float) -> Float

#
AbsorberDesign::liquid_to_gas

fn AbsorberDesign::liquid_to_gas(self : AbsorberDesign) -> Float

#
AbsorberDesign::ntu

fn AbsorberDesign::ntu(self : AbsorberDesign) -> Float

#
AbsorberDesign::removal_fraction

fn AbsorberDesign::removal_fraction(self : AbsorberDesign) -> Float

#
AbsorberDesign::solute_load_mol_h

fn AbsorberDesign::solute_load_mol_h(self : AbsorberDesign) -> Float

#
Alarm

pub struct Alarm {
code : String
tag : String
value : Float
low : Float
high : Float
state : AlarmState
message : String
} derive(Eq,
Debug
)

#
Alarm::acknowledge

fn Alarm::acknowledge(self : Alarm) -> Alarm

#
Alarm::is_active

fn Alarm::is_active(self : Alarm) -> Bool

#
Alarm::is_normal

fn Alarm::is_normal(self : Alarm) -> Bool

#
Alarm::severity

fn Alarm::severity(self : Alarm) -> String

#
Alarm::shelve

fn Alarm::shelve(self : Alarm) -> Alarm

#
AlarmBoard

pub struct AlarmBoard {
alarms : Array[Alarm]
updated_at : String
} derive(Eq,
Debug
)

#
AlarmBoard::acknowledge_all

fn AlarmBoard::acknowledge_all(self : AlarmBoard) -> AlarmBoard

#
AlarmBoard::active_count

fn AlarmBoard::active_count(self : AlarmBoard) -> Int

#
AlarmBoard::count

fn AlarmBoard::count(self : AlarmBoard) -> Int

#
AlarmBoard::normal_count

fn AlarmBoard::normal_count(self : AlarmBoard) -> Int

#
AlarmBoard::shelve_code

fn AlarmBoard::shelve_code(self : AlarmBoard, code : String) -> AlarmBoard

#
AlarmBoard::table

fn AlarmBoard::table(self : AlarmBoard) -> ReportTable

#
AlarmState

pub enum AlarmState {
NormalAlarm
Acknowledged
Shelved
ActiveAlarm
} derive(Eq,
Debug
)

#
AntoineCorrelation

pub struct AntoineCorrelation {
a : Float
b : Float
c : Float
minimum_c : Float
maximum_c : Float
}

#
AntoineCorrelation::log10_pressure

fn AntoineCorrelation::log10_pressure(self : AntoineCorrelation, temperature_c : Float) -> Float

#
AntoineCorrelation::pressure_kpa

fn AntoineCorrelation::pressure_kpa(self : AntoineCorrelation, temperature_c : Float) -> Float

#
AntoineCorrelation::valid

fn AntoineCorrelation::valid(self : AntoineCorrelation, temperature_c : Float) -> Bool

#
ArrheniusModel

pub struct ArrheniusModel {
pre_exponential : Float
activation_energy_kj : Float
reference_temperature_k : Float
}

Reaction-kinetics and reactor-screening calculations.

#
ArrheniusModel::rate_constant

fn ArrheniusModel::rate_constant(self : ArrheniusModel, temperature_k : Float) -> Float

#
ArrheniusModel::relative_rate

fn ArrheniusModel::relative_rate(self : ArrheniusModel, temperature_k : Float) -> Float

#
Assumption

pub struct Assumption {
statement : String
impact : String
} derive(Eq,
Debug
)

#
AuditEvent

pub struct AuditEvent {
timestamp : String
actor : String
action : String
object : String
} derive(Eq,
Debug
)

#
AuditTrail

pub struct AuditTrail {
events : Array[AuditEvent]
} derive(Eq,
Debug
)

#
AuditTrail::actions

fn AuditTrail::actions(self : AuditTrail) -> Array[String]

#
AuditTrail::actors

fn AuditTrail::actors(self : AuditTrail) -> Array[String]

#
AuditTrail::append

fn AuditTrail::append(self : AuditTrail, event : AuditEvent) -> AuditTrail

#
AuditTrail::count

fn AuditTrail::count(self : AuditTrail) -> Int

#
AuditTrail::to_markdown

fn AuditTrail::to_markdown(self : AuditTrail) -> String

#
AuditTrail::to_table

fn AuditTrail::to_table(self : AuditTrail) -> ReportTable

#
BatchCharge

pub struct BatchCharge {
material : String
mass_kg : Float
purity : Float
}

Batch execution primitives for repeatable chemical-process campaigns.

#
BatchCharge::active_mass

fn BatchCharge::active_mass(self : BatchCharge) -> Float

#
BatchCharge::valid

fn BatchCharge::valid(self : BatchCharge) -> Bool

#
BatchPlan

pub struct BatchPlan {
recipe : BatchRecipe
steps : Array[BatchStep]
cleaning_hours : Float
setup_hours : Float
}

#
BatchPlan::cycle_hours

fn BatchPlan::cycle_hours(self : BatchPlan) -> Float

#
BatchPlan::process_hours

fn BatchPlan::process_hours(self : BatchPlan) -> Float

#
BatchPlan::safe

fn BatchPlan::safe(self : BatchPlan, max_temperature : Float, max_pressure : Float) -> Bool

#
BatchPlan::throughput

fn BatchPlan::throughput(self : BatchPlan) -> Float

#
BatchRecipe

pub struct BatchRecipe {
name : String
target_kg : Float
charges : Array[BatchCharge]
hold_hours : Float
yield_fraction : Float
}

#
BatchRecipe::active_input

fn BatchRecipe::active_input(self : BatchRecipe) -> Float

#
BatchRecipe::conversion

fn BatchRecipe::conversion(self : BatchRecipe) -> Float

#
BatchRecipe::expected_output

fn BatchRecipe::expected_output(self : BatchRecipe) -> Float

#
BatchRecipe::input_mass

fn BatchRecipe::input_mass(self : BatchRecipe) -> Float

#
BatchRecipe::valid

fn BatchRecipe::valid(self : BatchRecipe) -> Bool

#
BatchRecord

pub struct BatchRecord {
id : String
plan_name : String
started_at : String
finished_at : String
output_kg : Float
scrap_kg : Float
accepted : Bool
}

#
BatchRecord::scrap_rate

fn BatchRecord::scrap_rate(self : BatchRecord) -> Float

#
BatchRecord::total_mass

fn BatchRecord::total_mass(self : BatchRecord) -> Float

#
BatchRecord::yield_rate

fn BatchRecord::yield_rate(self : BatchRecord, input_kg : Float) -> Float

#
BatchReport

pub struct BatchReport {
reports : Array[ChemReport]
labels : Array[String]
} derive(Eq,
Debug
)

#
BatchReport::all_formats

fn BatchReport::all_formats(self : BatchReport) -> Array[ExportBundle]

#
BatchReport::benchmark

fn BatchReport::benchmark(self : BatchReport, iterations : Int) -> BenchmarkResult

#
BatchReport::count

fn BatchReport::count(self : BatchReport) -> Int

#
BatchReport::critical_count

fn BatchReport::critical_count(self : BatchReport) -> Int

#
BatchReport::invalid_count

fn BatchReport::invalid_count(self : BatchReport) -> Int

#
BatchReport::result_count

fn BatchReport::result_count(self : BatchReport) -> Int

#
BatchReport::summary

fn BatchReport::summary(self : BatchReport) -> String

#
BatchReport::to_json

fn BatchReport::to_json(self : BatchReport) -> String

#
BatchReport::to_markdown

fn BatchReport::to_markdown(self : BatchReport) -> String

#
BatchReport::valid_count

fn BatchReport::valid_count(self : BatchReport) -> Int

#
BatchReport::warning_count

fn BatchReport::warning_count(self : BatchReport) -> Int

#
BatchStep

pub struct BatchStep {
name : String
duration_hours : Float
temperature_c : Float
pressure_bar : Float
agitation_rpm : Float
}

#
BatchStep::safe

fn BatchStep::safe(self : BatchStep, max_temperature : Float, max_pressure : Float) -> Bool

#
BenchmarkResult

pub struct BenchmarkResult {
iterations : Int
reports : Int
markdown_bytes : Int
html_bytes : Int
json_bytes : Int
} derive(Eq,
Debug
)

#
BenchmarkResult::average_bytes

fn BenchmarkResult::average_bytes(self : BenchmarkResult) -> Float

#
BenchmarkResult::to_markdown

fn BenchmarkResult::to_markdown(self : BenchmarkResult) -> String

#
BenchmarkResult::total_bytes

fn BenchmarkResult::total_bytes(self : BenchmarkResult) -> Int

#
BowTie

pub struct BowTie {
hazard : String
threats : Array[String]
preventive : Array[Safeguard]
mitigative : Array[Safeguard]
}

#
BowTie::defended

fn BowTie::defended(self : BowTie) -> Bool

#
BowTie::mitigation_count

fn BowTie::mitigation_count(self : BowTie) -> Int

#
BowTie::prevention_count

fn BowTie::prevention_count(self : BowTie) -> Int

#
Candidate

pub struct Candidate {
name : String
variables : Array[Float]
score : Float
} derive(Eq,
Debug
)

#
Candidate::dimension

fn Candidate::dimension(self : Candidate) -> Int

#
Candidate::is_finite

fn Candidate::is_finite(self : Candidate) -> Bool

#
Candidate::variable

fn Candidate::variable(self : Candidate, index : Int) -> Float?

#
ChemReport

pub struct ChemReport {
metadata : ReportMetadata
summary : String
assumptions : Array[Assumption]
inputs : Array[InputValue]
formulas : Array[FormulaNote]
results : Array[ResultValue]
warnings : Array[WarningNote]
sources : Array[SourceRef]
sections : Array[ReportSection]
tags : Array[String]
} derive(Eq,
Debug
)

#
ChemReport::diagnostics

fn ChemReport::diagnostics(self : ChemReport) -> DiagnosticReport

#
ChemReport::export_table

fn ChemReport::export_table(self : ChemReport) -> ReportTable

#
ChemReport::format

fn ChemReport::format(self : ChemReport, format : String) -> String

#
ChemReport::format_names

fn ChemReport::format_names(_self : ChemReport) -> Array[String]

#
ChemReport::has_blocking_diagnostics

fn ChemReport::has_blocking_diagnostics(self : ChemReport) -> Bool

#
ChemReport::has_tag

fn ChemReport::has_tag(self : ChemReport, tag : String) -> Bool

#
ChemReport::is_publish_ready

fn ChemReport::is_publish_ready(self : ChemReport) -> Bool

#
ChemReport::render_all_formats

fn ChemReport::render_all_formats(self : ChemReport) -> ExportBundle

#
ChemReport::result_names

fn ChemReport::result_names(self : ChemReport) -> Array[String]

#
ChemReport::source_table

fn ChemReport::source_table(self : ChemReport) -> ReportTable

#
ChemReport::to_html

fn ChemReport::to_html(self : ChemReport) -> String

#
ChemReport::to_json

fn ChemReport::to_json(self : ChemReport) -> String

#
ChemReport::to_markdown

fn ChemReport::to_markdown(self : ChemReport) -> String

#
ChemReport::validate

fn ChemReport::validate(self : ChemReport) -> Array[ValidationIssue]

#
ChemReport::warning_count

fn ChemReport::warning_count(self : ChemReport, severity : WarningSeverity) -> Int

#
ChemReport::warning_table

fn ChemReport::warning_table(self : ChemReport) -> ReportTable

#
ChemReport::with_metadata

fn ChemReport::with_metadata(self : ChemReport, metadata : ReportMetadata) -> ChemReport

#
ChemReport::with_results

fn ChemReport::with_results(self : ChemReport, results : Array[ResultValue]) -> ChemReport

#
ChemReport::with_sources

fn ChemReport::with_sources(self : ChemReport, sources : Array[SourceRef]) -> ChemReport

#
ChemReport::with_summary

fn ChemReport::with_summary(self : ChemReport, summary : String) -> ChemReport

#
ChemReport::with_tag

fn ChemReport::with_tag(self : ChemReport, tag : String) -> ChemReport

#
ChemReport::with_warnings

fn ChemReport::with_warnings(self : ChemReport, warnings : Array[WarningNote]) -> ChemReport

#
ChemReport::without_critical_warnings

fn ChemReport::without_critical_warnings(self : ChemReport) -> ChemReport

#
ChemicalPropertySet

pub struct ChemicalPropertySet {
name : String
molecular_weight : Float
density : LinearProperty
viscosity : LinearProperty
heat_capacity : LinearProperty
vapor_pressure : AntoineCorrelation
}

#
ChemicalPropertySet::density_at

fn ChemicalPropertySet::density_at(self : ChemicalPropertySet, temperature_c : Float) -> Float

#
ChemicalPropertySet::heat_capacity_at

fn ChemicalPropertySet::heat_capacity_at(self : ChemicalPropertySet, temperature_c : Float) -> Float

#
ChemicalPropertySet::mass_to_moles

fn ChemicalPropertySet::mass_to_moles(self : ChemicalPropertySet, mass_kg : Float) -> Float

#
ChemicalPropertySet::moles_to_mass

fn ChemicalPropertySet::moles_to_mass(self : ChemicalPropertySet, moles : Float) -> Float

#
ChemicalPropertySet::phase_at

fn ChemicalPropertySet::phase_at(self : ChemicalPropertySet, temperature_c : Float, pressure_kpa : Float) -> PhaseState

#
ChemicalPropertySet::vapor_pressure_at

fn ChemicalPropertySet::vapor_pressure_at(self : ChemicalPropertySet, temperature_c : Float) -> Float

#
ChemicalPropertySet::viscosity_at

fn ChemicalPropertySet::viscosity_at(self : ChemicalPropertySet, temperature_c : Float) -> Float

#
ComponentBalance

pub struct ComponentBalance {
component : String
inlet : Float
outlet : Float
net : Float
relative_error : Float
} derive(Eq,
Debug
)

#
ComponentFlow

pub struct ComponentFlow {
component : String
value : Float
unit : MeasureUnit
} derive(Eq,
Debug
)

#
CompressorDesign

pub struct CompressorDesign {
suction_pressure : Float
discharge_pressure : Float
inlet_temperature : Float
flow_rate : Float
efficiency : Float
gas_constant : Float
heat_capacity_ratio : Float
} derive(Eq,
Debug
)

#
CompressorDesign::discharge_temperature

fn CompressorDesign::discharge_temperature(self : CompressorDesign) -> Float

#
CompressorDesign::is_acceptable

fn CompressorDesign::is_acceptable(self : CompressorDesign, maximum_temperature : Float) -> Bool

#
CompressorDesign::power

fn CompressorDesign::power(self : CompressorDesign) -> Float

#
CompressorDesign::pressure_ratio

fn CompressorDesign::pressure_ratio(self : CompressorDesign) -> Float

#
CompressorDesign::specific_work

fn CompressorDesign::specific_work(self : CompressorDesign) -> Float

#
Constraint

pub struct Constraint {
index : Int
lower : Float
upper : Float
} derive(Eq,
Debug
)

#
Constraint::contains

fn Constraint::contains(self : Constraint, candidate : Candidate) -> Bool

#
ControlLimits

pub struct ControlLimits {
center : Float
upper : Float
lower : Float
} derive(Eq,
Debug
)

#
ControlLimits::contains

fn ControlLimits::contains(self : ControlLimits, value : Float) -> Bool

#
ControlLimits::flag

fn ControlLimits::flag(self : ControlLimits, values : Array[Float]) -> Array[ObservationFlag]

#
ControlLoop

pub struct ControlLoop {
controllers : Array[Controller]
alarms : AlarmBoard
} derive(Eq,
Debug
)

#
ControlLoop::controller_count

fn ControlLoop::controller_count(self : ControlLoop) -> Int

#
ControlLoop::healthy_count

fn ControlLoop::healthy_count(self : ControlLoop) -> Int

#
ControlLoop::table

fn ControlLoop::table(self : ControlLoop) -> ReportTable

#
ControlLoop::update

fn ControlLoop::update(self : ControlLoop, values : Array[Float], step : Float, minimum : Float, maximum : Float) -> ControlLoop

#
Controller

pub struct Controller {
tag : String
setpoint : Float
process_value : Float
output : Float
gain : Float
integral : Float
mode : ControllerMode
} derive(Eq,
Debug
)

#
Controller::error

fn Controller::error(self : Controller) -> Float

#
Controller::is_automatic

fn Controller::is_automatic(self : Controller) -> Bool

#
Controller::is_healthy

fn Controller::is_healthy(self : Controller) -> Bool

#
Controller::next_output

fn Controller::next_output(self : Controller, step : Float, minimum : Float, maximum : Float) -> Float

#
Controller::update

fn Controller::update(self : Controller, process_value : Float, step : Float, minimum : Float, maximum : Float) -> Controller

#
ControllerMode

pub enum ControllerMode {
Manual
Automatic
Cascade
Failed
} derive(Eq,
Debug
)

#
CostItem

pub struct CostItem {
name : String
quantity : Float
unit_cost : Float
category : String
} derive(Eq,
Debug
)

#
CostItem::is_valid

fn CostItem::is_valid(self : CostItem) -> Bool

#
CostItem::total

fn CostItem::total(self : CostItem) -> Float

#
CostModel

pub struct CostModel {
items : Array[CostItem]
currency : String
period : String
} derive(Eq,
Debug
)

#
CostModel::add

fn CostModel::add(self : CostModel, item : CostItem) -> CostModel

#
CostModel::by_category

fn CostModel::by_category(self : CostModel, category : String) -> Float

#
CostModel::categories

fn CostModel::categories(self : CostModel) -> Array[String]

#
CostModel::category_table

fn CostModel::category_table(self : CostModel) -> ReportTable

#
CostModel::count

fn CostModel::count(self : CostModel) -> Int

#
CostModel::item_table

fn CostModel::item_table(self : CostModel) -> ReportTable

#
CostModel::scale

fn CostModel::scale(self : CostModel, factor : Float) -> CostModel

#
CostModel::total

fn CostModel::total(self : CostModel) -> Float

#
CostModel::valid

fn CostModel::valid(self : CostModel) -> Bool

#
CstrDesign

pub struct CstrDesign {
volume_m3 : Float
flow_m3_h : Float
rate_mol_m3_h : Float
feed_mol_m3 : Float
}

#
CstrDesign::conversion

fn CstrDesign::conversion(self : CstrDesign) -> Float

#
CstrDesign::outlet

fn CstrDesign::outlet(self : CstrDesign) -> Float

#
CstrDesign::residence_hours

fn CstrDesign::residence_hours(self : CstrDesign) -> Float

#
CstrDesign::valid

fn CstrDesign::valid(self : CstrDesign) -> Bool

#
DataField

pub struct DataField {
name : String
value : String?
expected_unit : String?
policy : MissingPolicy
} derive(Eq,
Debug
)

#
DataField::is_acceptable

fn DataField::is_acceptable(self : DataField) -> Bool

#
DataField::is_missing

fn DataField::is_missing(self : DataField) -> Bool

#
DataQuality

pub struct DataQuality {
name : String
completeness : Float
validity : Float
timeliness : Float
consistency : Float
} derive(Eq,
Debug
)

#
DataQuality::is_acceptable

fn DataQuality::is_acceptable(self : DataQuality, minimum : Float) -> Bool

#
DataQuality::is_valid

fn DataQuality::is_valid(self : DataQuality) -> Bool

#
DataQuality::score

fn DataQuality::score(self : DataQuality) -> Float

#
DelimitedRow

pub struct DelimitedRow {
fields : Array[String]
line_number : Int
}

Deterministic delimited-data parsing for instrument and audit exports.

#
DelimitedRow::field

fn DelimitedRow::field(self : DelimitedRow, index : Int) -> String

#
DelimitedRow::valid

fn DelimitedRow::valid(self : DelimitedRow) -> Bool

#
DelimitedRow::width

fn DelimitedRow::width(self : DelimitedRow) -> Int

#
DelimitedTable

pub struct DelimitedTable {
headers : Array[String]
rows : Array[DelimitedRow]
delimiter : String
}

#
DelimitedTable::column

fn DelimitedTable::column(self : DelimitedTable, name : String) -> Array[String]

#
DelimitedTable::invalid_rows

fn DelimitedTable::invalid_rows(self : DelimitedTable) -> Array[DelimitedRow]

#
DelimitedTable::quality

fn DelimitedTable::quality(self : DelimitedTable) -> Float

#
DelimitedTable::row_count

fn DelimitedTable::row_count(self : DelimitedTable) -> Int

#
DelimitedTable::valid_rows

fn DelimitedTable::valid_rows(self : DelimitedTable) -> Array[DelimitedRow]

#
DelimitedTable::width

fn DelimitedTable::width(self : DelimitedTable) -> Int

#
Diagnostic

pub struct Diagnostic {
code : String
severity : DiagnosticSeverity
path : String
message : String
remediation : String
} derive(Eq,
Debug
)

#
Diagnostic::is_blocking

fn Diagnostic::is_blocking(self : Diagnostic) -> Bool

#
Diagnostic::level

fn Diagnostic::level(self : Diagnostic) -> String

#
DiagnosticReport

pub struct DiagnosticReport {
diagnostics : Array[Diagnostic]
passed : Bool
} derive(Eq,
Debug
)

#
DiagnosticReport::blocking_count

fn DiagnosticReport::blocking_count(self : DiagnosticReport) -> Int

#
DiagnosticReport::count

fn DiagnosticReport::count(self : DiagnosticReport) -> Int

#
DiagnosticReport::errors

#
DiagnosticReport::to_markdown

fn DiagnosticReport::to_markdown(self : DiagnosticReport) -> String

#
DiagnosticReport::warnings

#
DiagnosticSeverity

pub enum DiagnosticSeverity {
DiagHint
DiagWarning
DiagError
DiagBlocker
} derive(Eq,
Debug
)

#
DistillationCase

pub struct DistillationCase {
feed_rate : Float
feed_fraction : Float
distillate_rate : Float
distillate_fraction : Float
bottoms_rate : Float
bottoms_fraction : Float
reflux_ratio : Float
stages : Int
} derive(Eq,
Debug
)

#
DistillationCase::component_balance

fn DistillationCase::component_balance(self : DistillationCase) -> Float

#
DistillationCase::is_closed

fn DistillationCase::is_closed(self : DistillationCase, tolerance? : Float) -> Bool

#
DistillationCase::minimum_stages

fn DistillationCase::minimum_stages(self : DistillationCase) -> Int

#
DistillationCase::recovery

fn DistillationCase::recovery(self : DistillationCase) -> Float

#
DistillationCase::total_balance

fn DistillationCase::total_balance(self : DistillationCase) -> Float

#
Emission

pub struct Emission {
pollutant : String
amount : Float
unit : String
source : String
} derive(Eq,
Debug
)

#
Emission::is_valid

fn Emission::is_valid(self : Emission) -> Bool

#
EmissionFactor

pub struct EmissionFactor {
pollutant : String
factor : Float
unit : String
source : String
} derive(Eq,
Debug
)

#
EnergyBalance

pub struct EnergyBalance {
inlet : Float
outlet : Float
residual : Float
streams : Array[EnergyStream]
} derive(Eq,
Debug
)

#
EnergyBalance::is_closed

fn EnergyBalance::is_closed(self : EnergyBalance, tolerance? : Float) -> Bool

#
EnergyBalance::specific_duty

fn EnergyBalance::specific_duty(self : EnergyBalance, mass : Quantity) -> Result[Quantity, QuantityError]

#
EnergyCost

pub struct EnergyCost {
energy : Float
rate : Float
demand_charge : Float
fixed_charge : Float
} derive(Eq,
Debug
)

#
EnergyCost::average_rate

fn EnergyCost::average_rate(self : EnergyCost) -> Float

#
EnergyCost::total

fn EnergyCost::total(self : EnergyCost) -> Float

#
EnergyCost::variable

fn EnergyCost::variable(self : EnergyCost) -> Float

#
EnergyStream

pub struct EnergyStream {
name : String
duty : Quantity
direction : StreamDirection
} derive(Eq,
Debug
)

#
EnvironmentalInventory

pub struct EnvironmentalInventory {
emissions : Array[Emission]
period : String
facility : String
} derive(Eq,
Debug
)

#
EnvironmentalInventory::by_pollutant

fn EnvironmentalInventory::by_pollutant(self : EnvironmentalInventory, pollutant : String) -> Float

#
EnvironmentalInventory::pollutants

fn EnvironmentalInventory::pollutants(self : EnvironmentalInventory) -> Array[String]

#
EnvironmentalInventory::table

#
EnvironmentalInventory::total

#
EnvironmentalInventory::valid

#
EquilibriumLine

pub struct EquilibriumLine {
slope : Float
intercept : Float
}

Absorption, stripping, and contacting calculations.

#
EquilibriumLine::gas_fraction

fn EquilibriumLine::gas_fraction(self : EquilibriumLine, liquid_fraction : Float) -> Float

#
EquilibriumLine::valid

fn EquilibriumLine::valid(self : EquilibriumLine) -> Bool

#
ExchangerDesign

pub struct ExchangerDesign {
area : Float
overall_u : Float
hot_inlet : Float
hot_outlet : Float
cold_inlet : Float
cold_outlet : Float
hot_capacity : Float
cold_capacity : Float
} derive(Eq,
Debug
)

#
ExchangerDesign::area_margin

fn ExchangerDesign::area_margin(self : ExchangerDesign) -> Float

#
ExchangerDesign::cold_duty

fn ExchangerDesign::cold_duty(self : ExchangerDesign) -> Float

#
ExchangerDesign::delta_cold

fn ExchangerDesign::delta_cold(self : ExchangerDesign) -> Float

#
ExchangerDesign::delta_hot

fn ExchangerDesign::delta_hot(self : ExchangerDesign) -> Float

#
ExchangerDesign::duty_error

fn ExchangerDesign::duty_error(self : ExchangerDesign) -> Float

#
ExchangerDesign::effectiveness

fn ExchangerDesign::effectiveness(self : ExchangerDesign) -> Float

#
ExchangerDesign::hot_duty

fn ExchangerDesign::hot_duty(self : ExchangerDesign) -> Float

#
ExchangerDesign::is_acceptable

fn ExchangerDesign::is_acceptable(self : ExchangerDesign) -> Bool

#
ExchangerDesign::lmtd

fn ExchangerDesign::lmtd(self : ExchangerDesign) -> Float

#
ExchangerDesign::required_area

fn ExchangerDesign::required_area(self : ExchangerDesign) -> Float

#
ExportBundle

pub struct ExportBundle {
markdown : String
html : String
json : String
} derive(Eq,
Debug
)

#
FieldRequirement

pub enum FieldRequirement {
Required
Optional
} derive(Eq,
Debug
)

#
FormulaNote

pub struct FormulaNote {
name : String
expression : String
explanation : String
} derive(Eq,
Debug
)

#
Hazard

pub struct Hazard {
id : String
node : String
deviation : String
cause : String
consequence : String
likelihood : RiskLikelihood
severity : RiskSeverity
safeguards : Array[String]
}

#
Hazard::adequately_safeguarded

fn Hazard::adequately_safeguarded(self : Hazard) -> Bool

#
Hazard::level

fn Hazard::level(self : Hazard) -> String

#
Hazard::score

fn Hazard::score(self : Hazard) -> Int

#
HeatExchangerCase

pub struct HeatExchangerCase {
hot_inlet : Float
hot_outlet : Float
cold_inlet : Float
cold_outlet : Float
hot_capacity_rate : Float
cold_capacity_rate : Float
area : Float
overall_u : Float
} derive(Eq,
Debug
)

#
HeatExchangerCase::area_margin

fn HeatExchangerCase::area_margin(self : HeatExchangerCase) -> Float

#
HeatExchangerCase::cold_duty

fn HeatExchangerCase::cold_duty(self : HeatExchangerCase) -> Float

#
HeatExchangerCase::duty_residual

fn HeatExchangerCase::duty_residual(self : HeatExchangerCase) -> Float

#
HeatExchangerCase::effectiveness

fn HeatExchangerCase::effectiveness(self : HeatExchangerCase) -> Float

#
HeatExchangerCase::estimated_area

fn HeatExchangerCase::estimated_area(self : HeatExchangerCase) -> Float

#
HeatExchangerCase::hot_duty

fn HeatExchangerCase::hot_duty(self : HeatExchangerCase) -> Float

#
HeatExchangerCheck

pub struct HeatExchangerCheck {
area_m2 : Float
required_m2 : Float
duty_kw : Float
pressure_drop_bar : Float
max_pressure_drop_bar : Float
}

#
HeatExchangerCheck::acceptable

fn HeatExchangerCheck::acceptable(self : HeatExchangerCheck) -> Bool

#
HeatExchangerCheck::area_margin

fn HeatExchangerCheck::area_margin(self : HeatExchangerCheck) -> Float

#
ImportIssue

pub struct ImportIssue {
line_number : Int
field : String
message : String
severity : String
}

#
InputValue

pub struct InputValue {
name : String
value : String
unit : String?
note : String?
} derive(Eq,
Debug
)

#
InsulationDesign

pub struct InsulationDesign {
thickness_m : Float
conductivity_w_mk : Float
area_m2 : Float
ambient_c : Float
process_c : Float
}

#
InsulationDesign::acceptable

fn InsulationDesign::acceptable(self : InsulationDesign, limit_w_m2 : Float) -> Bool

#
InsulationDesign::loss_w

fn InsulationDesign::loss_w(self : InsulationDesign) -> Float

#
InsulationDesign::surface_load

fn InsulationDesign::surface_load(self : InsulationDesign) -> Float

#
InventoryItem

pub struct InventoryItem {
component : String
flow : Float
unit : MeasureUnit
} derive(Eq,
Debug
)

#
InventoryItem::as_kg_per_hour

fn InventoryItem::as_kg_per_hour(self : InventoryItem) -> Float

#
InventoryItem::is_valid

fn InventoryItem::is_valid(self : InventoryItem) -> Bool

#
LinearProperty

pub struct LinearProperty {
reference : Float
slope : Float
reference_temperature : Float
}

#
LinearProperty::at

fn LinearProperty::at(self : LinearProperty, temperature_c : Float) -> Float

#
MaintenanceTask

pub struct MaintenanceTask {
asset : String
task : String
interval_hours : Float
operating_hours : Float
critical : Bool
} derive(Eq,
Debug
)

#
MaintenanceTask::due

fn MaintenanceTask::due(self : MaintenanceTask) -> Bool

#
MaintenanceTask::remaining

fn MaintenanceTask::remaining(self : MaintenanceTask) -> Float

#
MaintenanceTask::risk

fn MaintenanceTask::risk(self : MaintenanceTask) -> String

#
MaintenanceWindow

pub struct MaintenanceWindow {
asset : String
due_hour : Float
duration_hours : Float
critical : Bool
completed : Bool
}

#
MaintenanceWindow::overdue

fn MaintenanceWindow::overdue(self : MaintenanceWindow, current_hour : Float) -> Bool

#
MaintenanceWindow::risk

fn MaintenanceWindow::risk(self : MaintenanceWindow, current_hour : Float) -> String

#
MaterialBalance

pub struct MaterialBalance {
components : Array[ComponentBalance]
total_inlet : Float
total_outlet : Float
} derive(Eq,
Debug
)

#
MaterialBalance::closure_percent

fn MaterialBalance::closure_percent(self : MaterialBalance) -> Float

#
MaterialBalance::component

fn MaterialBalance::component(self : MaterialBalance, name : String) -> ComponentBalance?

#
MaterialBalance::is_closed

fn MaterialBalance::is_closed(self : MaterialBalance, tolerance? : Float) -> Bool

#
MaterialBalance::limiting_component

fn MaterialBalance::limiting_component(self : MaterialBalance) -> String?

#
MaterialBalance::to_markdown

fn MaterialBalance::to_markdown(self : MaterialBalance) -> String

#
MaterialProperty

pub struct MaterialProperty {
name : String
molecular_weight : Float
density : Float
heat_capacity : Float
boiling_point : Float
safety_limit : Float
} derive(Eq,
Debug
)

#
MaterialProperty::is_valid

fn MaterialProperty::is_valid(self : MaterialProperty) -> Bool

#
MaterialProperty::thermal_capacity

fn MaterialProperty::thermal_capacity(self : MaterialProperty, mass : Float) -> Float

#
MeasureUnit

pub enum MeasureUnit {
Kilogram
Gram
Tonne
KgPerHour
Mol
Kmol
Liter
CubicMeter
CubicMeterPerHour
Meter
Pascal
KiloPascal
Bar
Joule
KiloJoule
KiloWatt
Celsius
Kelvin
Second
Minute
Hour
Percent
Ratio
} derive(Eq,
Debug
)

#
MeasureUnit::dimension

fn MeasureUnit::dimension(self : MeasureUnit) -> UnitDimension

#
MeasureUnit::symbol

fn MeasureUnit::symbol(self : MeasureUnit) -> String

#
MissingPolicy

pub enum MissingPolicy {
RejectMissing
IgnoreMissing
UseDefault
} derive(Eq,
Debug
)

#
MixtureProperty

pub struct MixtureProperty {
component : String
mole_fraction : Float
property : ChemicalPropertySet
}

#
MonteCarloSummary

pub struct MonteCarloSummary {
trials : Int
mean : Float
minimum : Float
maximum : Float
p05 : Float
p50 : Float
p95 : Float
} derive(Eq,
Debug
)

#
MonteCarloSummary::is_stable

fn MonteCarloSummary::is_stable(self : MonteCarloSummary, maximum_spread : Float) -> Bool

#
MonteCarloSummary::spread

fn MonteCarloSummary::spread(self : MonteCarloSummary) -> Float

#
MonteCarloSummary::to_table

#
ObservationFlag

pub enum ObservationFlag {
NormalObservation
AboveControlLimit
BelowControlLimit
} derive(Eq,
Debug
)

#
PackedColumn

pub struct PackedColumn {
diameter_m : Float
packing_height_m : Float
packing_factor : Float
gas_velocity_m_s : Float
flooding_velocity_m_s : Float
}

#
PackedColumn::acceptable

fn PackedColumn::acceptable(self : PackedColumn, maximum_fraction : Float) -> Bool

#
PackedColumn::area_m2

fn PackedColumn::area_m2(self : PackedColumn) -> Float

#
PackedColumn::capacity_mol_h

fn PackedColumn::capacity_mol_h(self : PackedColumn, gas_density_mol_m3 : Float) -> Float

#
PackedColumn::flood_fraction

fn PackedColumn::flood_fraction(self : PackedColumn) -> Float

#
PfrDesign

pub struct PfrDesign {
volume_m3 : Float
flow_m3_h : Float
inlet_mol_m3 : Float
rate_mol_m3_h : Float
}

#
PfrDesign::conversion

fn PfrDesign::conversion(self : PfrDesign) -> Float

#
PfrDesign::outlet

fn PfrDesign::outlet(self : PfrDesign) -> Float

#
PfrDesign::space_time

fn PfrDesign::space_time(self : PfrDesign) -> Float

#
PhaseState

pub enum PhaseState {
Solid
Liquid
Vapor
Supercritical
}

Lightweight property correlations used by design and screening calculations.

#
PipeDesign

pub struct PipeDesign {
length : Float
diameter : Float
roughness : Float
flow_rate : Float
density : Float
viscosity : Float
allowable_drop : Float
} derive(Eq,
Debug
)

#
PipeDesign::area

fn PipeDesign::area(self : PipeDesign) -> Float

#
PipeDesign::friction_factor

fn PipeDesign::friction_factor(self : PipeDesign) -> Float

#
PipeDesign::is_acceptable

fn PipeDesign::is_acceptable(self : PipeDesign) -> Bool

#
PipeDesign::pressure_drop

fn PipeDesign::pressure_drop(self : PipeDesign) -> Float

#
PipeDesign::pressure_margin

fn PipeDesign::pressure_margin(self : PipeDesign) -> Float

#
PipeDesign::reynolds

fn PipeDesign::reynolds(self : PipeDesign) -> Float

#
PipeDesign::velocity

fn PipeDesign::velocity(self : PipeDesign) -> Float

#
PressureDropCase

pub struct PressureDropCase {
length : Float
diameter : Float
velocity : Float
density : Float
viscosity : Float
roughness : Float
fittings_k : Float
} derive(Eq,
Debug
)

#
PressureDropCase::friction_factor

fn PressureDropCase::friction_factor(self : PressureDropCase) -> Float

#
PressureDropCase::major_loss

fn PressureDropCase::major_loss(self : PressureDropCase) -> Float

#
PressureDropCase::minor_loss

fn PressureDropCase::minor_loss(self : PressureDropCase) -> Float

#
PressureDropCase::reynolds

fn PressureDropCase::reynolds(self : PressureDropCase) -> Float

#
PressureDropCase::total_loss

fn PressureDropCase::total_loss(self : PressureDropCase) -> Float

#
ProcessStream

pub struct ProcessStream {
name : String
direction : StreamDirection
components : Array[ComponentFlow]
} derive(Eq,
Debug
)

#
ProductionEconomics

pub struct ProductionEconomics {
revenue : Float
operating_cost : Float
capital_cost : Float
production : Float
lifetime : Int
} derive(Eq,
Debug
)

#
ProductionEconomics::gross_margin

fn ProductionEconomics::gross_margin(self : ProductionEconomics) -> Float

#
ProductionEconomics::is_viable

fn ProductionEconomics::is_viable(self : ProductionEconomics, maximum_payback : Float) -> Bool

#
ProductionEconomics::margin_rate

fn ProductionEconomics::margin_rate(self : ProductionEconomics) -> Float

#
ProductionEconomics::net_margin

fn ProductionEconomics::net_margin(self : ProductionEconomics) -> Float

#
ProductionEconomics::payback_period

fn ProductionEconomics::payback_period(self : ProductionEconomics) -> Float

#
ProductionEconomics::simple_roi

fn ProductionEconomics::simple_roi(self : ProductionEconomics) -> Float

#
ProductionEconomics::unit_cost

fn ProductionEconomics::unit_cost(self : ProductionEconomics) -> Float

#
PumpCase

pub struct PumpCase {
flow_rate : Float
differential_pressure : Float
efficiency : Float
fluid_density : Float
installed_power : Float
} derive(Eq,
Debug
)

#
PumpCase::hydraulic_power

fn PumpCase::hydraulic_power(self : PumpCase) -> Float

#
PumpCase::is_overloaded

fn PumpCase::is_overloaded(self : PumpCase) -> Bool

#
PumpCase::power_margin

fn PumpCase::power_margin(self : PumpCase) -> Float

#
PumpCase::shaft_power

fn PumpCase::shaft_power(self : PumpCase) -> Float

#
PumpCase::specific_speed

fn PumpCase::specific_speed(self : PumpCase, head : Float) -> Float

#
QualityDimension

pub struct QualityDimension {
name : String
passed : Int
total : Int
} derive(Eq,
Debug
)

#
QualityDimension::is_acceptable

fn QualityDimension::is_acceptable(self : QualityDimension, minimum : Float) -> Bool

#
QualityDimension::ratio

fn QualityDimension::ratio(self : QualityDimension) -> Float

#
QualityGate

pub struct QualityGate {
passed : Bool
blockers : Array[String]
notices : Array[String]
} derive(Eq,
Debug
)

#
QualityProfile

pub struct QualityProfile {
name : String
dimensions : Array[QualityDimension]
} derive(Eq,
Debug
)

#
QualityProfile::is_acceptable

fn QualityProfile::is_acceptable(self : QualityProfile, minimum : Float) -> Bool

#
QualityProfile::score

fn QualityProfile::score(self : QualityProfile) -> Float

#
QualityProfile::to_table

fn QualityProfile::to_table(self : QualityProfile) -> ReportTable

#
QualityProfile::weakest

#
Quantity

pub struct Quantity {
value : Float
unit : MeasureUnit
} derive(Eq,
Debug
)

#
Quantity::add

fn Quantity::add(self : Quantity, other : Quantity) -> Result[Quantity, QuantityError]

#
Quantity::convert_to

fn Quantity::convert_to(self : Quantity, target : MeasureUnit) -> Result[Float, QuantityError]

#
Quantity::format

fn Quantity::format(self : Quantity, decimals : Int) -> String

#
Quantity::in_unit

fn Quantity::in_unit(self : Quantity, target : MeasureUnit) -> Result[Quantity, QuantityError]

#
Quantity::scale

fn Quantity::scale(self : Quantity, factor : Float) -> Quantity

#
Quantity::subtract

fn Quantity::subtract(self : Quantity, other : Quantity) -> Result[Quantity, QuantityError]

#
Quantity::validate

fn Quantity::validate(self : Quantity) -> Result[MeasureUnit, QuantityError]

#
QuantityError

pub enum QuantityError {
IncompatibleDimensions(UnitDimension, UnitDimension)
BelowAbsoluteZero
InvalidValue
} derive(Eq,
Debug
)

#
ReactionOrder

pub struct ReactionOrder {
order_a : Float
order_b : Float
stoich_a : Float
stoich_b : Float
}

#
ReactionOrder::rate

fn ReactionOrder::rate(self : ReactionOrder, constant : Float, concentration_a : Float, concentration_b : Float) -> Float

#
ReactionOrder::valid

fn ReactionOrder::valid(self : ReactionOrder) -> Bool

#
ReactionPath

pub struct ReactionPath {
name : String
conversion : Float
selectivity : Float
yield_fraction : Float
}

#
ReactionPath::product_fraction

fn ReactionPath::product_fraction(self : ReactionPath) -> Float

#
ReactionPath::valid

fn ReactionPath::valid(self : ReactionPath) -> Bool

#
ReactorCase

pub struct ReactorCase {
name : String
feed : Float
product : Float
byproduct : Float
residence_time : Float
temperature : Float
pressure : Float
} derive(Eq,
Debug
)

#
ReactorCase::conversion

fn ReactorCase::conversion(self : ReactorCase) -> Float

#
ReactorCase::is_safe

fn ReactorCase::is_safe(self : ReactorCase, temperature_limit : Float, pressure_limit : Float) -> Bool

#
ReactorCase::product_yield

fn ReactorCase::product_yield(self : ReactorCase) -> Float

#
ReactorCase::selectivity

fn ReactorCase::selectivity(self : ReactorCase) -> Float

#
ReactorCase::space_time_yield

fn ReactorCase::space_time_yield(self : ReactorCase) -> Float

#
ReportBuilder

pub struct ReportBuilder {
value : ChemReport
history : Array[String]
} derive(Eq,
Debug
)

#
ReportBuilder::add_assumption

fn ReportBuilder::add_assumption(self : ReportBuilder, statement : String, impact : String) -> ReportBuilder

#
ReportBuilder::add_formula

fn ReportBuilder::add_formula(self : ReportBuilder, name : String, expression : String, explanation : String) -> ReportBuilder

#
ReportBuilder::add_input

fn ReportBuilder::add_input(self : ReportBuilder, name : String, value : String, unit : String?, note : String?) -> ReportBuilder

#
ReportBuilder::add_result

fn ReportBuilder::add_result(self : ReportBuilder, name : String, value : String, unit : String?, status : ResultStatus, note : String?) -> ReportBuilder

#
ReportBuilder::add_section

fn ReportBuilder::add_section(self : ReportBuilder, title : String, kind : SectionKind, body : String) -> ReportBuilder

#
ReportBuilder::add_source

fn ReportBuilder::add_source(self : ReportBuilder, label : String, kind : SourceKind, url : String?, license : String?, note : String?) -> ReportBuilder

#
ReportBuilder::add_warning

fn ReportBuilder::add_warning(self : ReportBuilder, code : String, severity : WarningSeverity, summary : String, action : String) -> ReportBuilder

#
ReportBuilder::build

#
ReportBuilder::events

fn ReportBuilder::events(self : ReportBuilder) -> Array[String]

#
ReportBuilder::is_ready

fn ReportBuilder::is_ready(self : ReportBuilder) -> Bool

#
ReportBuilder::quality

fn ReportBuilder::quality(self : ReportBuilder) -> QualityGate

#
ReportBuilder::summary

fn ReportBuilder::summary(self : ReportBuilder, text : String) -> ReportBuilder

#
ReportBuilder::tag

fn ReportBuilder::tag(self : ReportBuilder, tag : String) -> ReportBuilder

#
ReportMetadata

pub struct ReportMetadata {
report_id : String
title : String
process_unit : String
scenario : String
generated_at : String
tool_version : String
} derive(Eq,
Debug
)

#
ReportSection

pub struct ReportSection {
title : String
kind : SectionKind
body : String
} derive(Eq,
Debug
)

#
ReportTable

pub struct ReportTable {
columns : Array[String]
rows : Array[Array[String]]
} derive(Eq,
Debug
)

#
ReportTable::column_count

fn ReportTable::column_count(self : ReportTable) -> Int

#
ReportTable::is_rectangular

fn ReportTable::is_rectangular(self : ReportTable) -> Bool

#
ReportTable::row_count

fn ReportTable::row_count(self : ReportTable) -> Int

#
ReportTable::to_csv

fn ReportTable::to_csv(self : ReportTable) -> String

#
ReportTable::to_html

fn ReportTable::to_html(self : ReportTable) -> String

#
ReportTable::to_markdown

fn ReportTable::to_markdown(self : ReportTable) -> String

#
ReportTable::validate

fn ReportTable::validate(self : ReportTable) -> Array[String]

#
ReportTemplate

pub struct ReportTemplate {
name : String
fields : Array[TemplateField]
} derive(Eq,
Debug
)

#
ReportTemplate::add_field

fn ReportTemplate::add_field(self : ReportTemplate, field : TemplateField) -> ReportTemplate

#
ReportTemplate::field_count

fn ReportTemplate::field_count(self : ReportTemplate) -> Int

#
ReportTemplate::field_names

fn ReportTemplate::field_names(self : ReportTemplate) -> Array[String]

#
ReportTemplate::has_field

fn ReportTemplate::has_field(self : ReportTemplate, name : String) -> Bool

#
ReportTemplate::missing_fields

fn ReportTemplate::missing_fields(self : ReportTemplate, values : Array[TemplateValue]) -> Array[String]

#
ReportTemplate::render

fn ReportTemplate::render(self : ReportTemplate, values : Array[TemplateValue]) -> String

#
ReportTemplate::required_count

fn ReportTemplate::required_count(self : ReportTemplate) -> Int

#
ReportTemplate::to_report

fn ReportTemplate::to_report(self : ReportTemplate, values : Array[TemplateValue], metadata : ReportMetadata) -> ChemReport

#
ReportTemplate::validate

fn ReportTemplate::validate(self : ReportTemplate, values : Array[TemplateValue]) -> Array[String]

#
ReportTemplate::with_name

fn ReportTemplate::with_name(self : ReportTemplate, name : String) -> ReportTemplate

#
ReportWorkflow

pub struct ReportWorkflow {
id : String
steps : Array[WorkflowStep]
current : Int
} derive(Eq,
Debug
)

#
ReportWorkflow::advance

#
ReportWorkflow::approve_current

fn ReportWorkflow::approve_current(self : ReportWorkflow, note : String) -> ReportWorkflow

#
ReportWorkflow::completed_count

fn ReportWorkflow::completed_count(self : ReportWorkflow) -> Int

#
ReportWorkflow::count

fn ReportWorkflow::count(self : ReportWorkflow) -> Int

#
ReportWorkflow::current_step

fn ReportWorkflow::current_step(self : ReportWorkflow) -> WorkflowStep?

#
ReportWorkflow::is_complete

fn ReportWorkflow::is_complete(self : ReportWorkflow) -> Bool

#
ReportWorkflow::progress

fn ReportWorkflow::progress(self : ReportWorkflow) -> Float

#
ReportWorkflow::reject_current

fn ReportWorkflow::reject_current(self : ReportWorkflow, note : String) -> ReportWorkflow

#
ReportWorkflow::to_section

fn ReportWorkflow::to_section(self : ReportWorkflow) -> ReportSection

#
ReportWorkflow::to_table

fn ReportWorkflow::to_table(self : ReportWorkflow) -> ReportTable

#
ReportWorkflow::with_step

fn ReportWorkflow::with_step(self : ReportWorkflow, step : WorkflowStep) -> ReportWorkflow

#
ResourceCalendar

pub struct ResourceCalendar {
name : String
capacity_hours : Float
blocks : Array[ScheduleBlock]
}

#
ResourceCalendar::available

fn ResourceCalendar::available(self : ResourceCalendar) -> Float

#
ResourceCalendar::conflicts

fn ResourceCalendar::conflicts(self : ResourceCalendar) -> Array[String]

#
ResourceCalendar::loaded_hours

fn ResourceCalendar::loaded_hours(self : ResourceCalendar) -> Float

#
ResourceCalendar::utilization

fn ResourceCalendar::utilization(self : ResourceCalendar) -> Float

#
ResourceCalendar::valid

fn ResourceCalendar::valid(self : ResourceCalendar) -> Bool

#
ResultStatus

pub enum ResultStatus {
Normal
Flagged
Estimated
} derive(Eq,
Debug
)

#
ResultValue

pub struct ResultValue {
name : String
value : String
unit : String?
status : ResultStatus
note : String?
} derive(Eq,
Debug
)

#
RiskLikelihood

pub enum RiskLikelihood {
Rare
Unlikely
Possible
Likely
Frequent
}

Structured hazard identification and risk-ranking helpers.

#
RiskRegister

pub struct RiskRegister {
hazards : Array[Hazard]
}

#
RiskRegister::acceptable

fn RiskRegister::acceptable(self : RiskRegister, max_high : Int) -> Bool

#
RiskRegister::high

fn RiskRegister::high(self : RiskRegister) -> Array[Hazard]

#
RiskRegister::score

fn RiskRegister::score(self : RiskRegister) -> Int

#
RiskRegister::uncontrolled

fn RiskRegister::uncontrolled(self : RiskRegister) -> Array[Hazard]

#
RiskSeverity

pub enum RiskSeverity {
Negligible
Minor
Serious
Major
Catastrophic
}

#
Rule

pub struct Rule {
code : String
operator : RuleOperator
field : String
limit : Float
severity : RuleSeverity
} derive(Eq,
Debug
)

#
RuleEvaluation

pub struct RuleEvaluation {
passed : Bool
violations : Array[RuleViolation]
checked : Int
} derive(Eq,
Debug
)

#
RuleEvaluation::error_count

fn RuleEvaluation::error_count(self : RuleEvaluation) -> Int

#
RuleEvaluation::to_diagnostics

fn RuleEvaluation::to_diagnostics(self : RuleEvaluation) -> Array[Diagnostic]

#
RuleEvaluation::to_table

fn RuleEvaluation::to_table(self : RuleEvaluation) -> ReportTable

#
RuleEvaluation::warning_count

fn RuleEvaluation::warning_count(self : RuleEvaluation) -> Int

#
RuleOperator

pub enum RuleOperator {
GreaterThan
LessThan
EqualTo
AtLeast
AtMost
} derive(Eq,
Debug
)

#
RuleSeverity

pub enum RuleSeverity {
RuleInfo
RuleWarning
RuleError
} derive(Eq,
Debug
)

#
RuleValue

pub struct RuleValue {
field : String
value : Float
} derive(Eq,
Debug
)

#
RuleViolation

pub struct RuleViolation {
code : String
field : String
actual : Float
limit : Float
severity : RuleSeverity
message : String
} derive(Eq,
Debug
)

#
Safeguard

pub struct Safeguard {
name : String
kind : String
independent : Bool
test_interval_hours : Float
enabled : Bool
}

#
Safeguard::reliable

fn Safeguard::reliable(self : Safeguard) -> Bool

#
Safeguard::valid

fn Safeguard::valid(self : Safeguard) -> Bool

#
SafetyReview

pub struct SafetyReview {
name : String
measured : Float
design_limit : Float
warning_fraction : Float
unit : String
} derive(Eq,
Debug
)

#
SafetyReview::is_exceeded

fn SafetyReview::is_exceeded(self : SafetyReview) -> Bool

#
SafetyReview::is_warning

fn SafetyReview::is_warning(self : SafetyReview) -> Bool

#
SafetyReview::status

fn SafetyReview::status(self : SafetyReview) -> String

#
SafetyReview::utilization

fn SafetyReview::utilization(self : SafetyReview) -> Float

#
Sample

pub struct Sample {
timestamp : Float
value : Float
} derive(Eq,
Debug
)

#
Sample::is_finite

fn Sample::is_finite(self : Sample) -> Bool

#
ScenarioPoint

pub struct ScenarioPoint {
name : String
input : Float
output : Float
score : Float
status : ResultStatus
note : String
} derive(Eq,
Debug
)

#
ScenarioPoint::efficiency

fn ScenarioPoint::efficiency(self : ScenarioPoint) -> Float

#
ScenarioPoint::is_acceptable

fn ScenarioPoint::is_acceptable(self : ScenarioPoint, minimum_score : Float) -> Bool

#
ScenarioSeries

pub struct ScenarioSeries {
name : String
points : Array[ScenarioPoint]
input_unit : String
output_unit : String
} derive(Eq,
Debug
)

#
ScenarioSeries::acceptable

fn ScenarioSeries::acceptable(self : ScenarioSeries, minimum_score : Float) -> Array[ScenarioPoint]

#
ScenarioSeries::at

fn ScenarioSeries::at(self : ScenarioSeries, index : Int) -> ScenarioPoint?

#
ScenarioSeries::best

#
ScenarioSeries::count

fn ScenarioSeries::count(self : ScenarioSeries) -> Int

#
ScenarioSeries::flagged

#
ScenarioSeries::inputs

fn ScenarioSeries::inputs(self : ScenarioSeries) -> Array[Float]

#
ScenarioSeries::merge

#
ScenarioSeries::normalized

fn ScenarioSeries::normalized(self : ScenarioSeries) -> ScenarioSeries

#
ScenarioSeries::outputs

fn ScenarioSeries::outputs(self : ScenarioSeries) -> Array[Float]

#
ScenarioSeries::quality_gate

fn ScenarioSeries::quality_gate(self : ScenarioSeries, minimum_score : Float, maximum_flagged : Int) -> Bool

#
ScenarioSeries::report_section

fn ScenarioSeries::report_section(self : ScenarioSeries) -> ReportSection

#
ScenarioSeries::scores

fn ScenarioSeries::scores(self : ScenarioSeries) -> Array[Float]

#
ScenarioSeries::summary

#
ScenarioSeries::to_csv

fn ScenarioSeries::to_csv(self : ScenarioSeries) -> String

#
ScenarioSeries::to_markdown

fn ScenarioSeries::to_markdown(self : ScenarioSeries) -> String

#
ScenarioSeries::to_table

fn ScenarioSeries::to_table(self : ScenarioSeries) -> ReportTable

#
ScenarioSeries::with_point

fn ScenarioSeries::with_point(self : ScenarioSeries, point : ScenarioPoint) -> ScenarioSeries

#
ScenarioSeries::worst

#
ScheduleBlock

pub struct ScheduleBlock {
id : String
asset : String
kind : ScheduleKind
start_hour : Float
duration_hours : Float
priority : Int
operator : String
}

#
ScheduleBlock::end_hour

fn ScheduleBlock::end_hour(self : ScheduleBlock) -> Float

#
ScheduleBlock::overlaps

fn ScheduleBlock::overlaps(self : ScheduleBlock, other : ScheduleBlock) -> Bool

#
ScheduleBlock::valid

fn ScheduleBlock::valid(self : ScheduleBlock) -> Bool

#
ScheduleKind

pub enum ScheduleKind {
Production
Cleaning
Maintenance
Inspection
Changeover
}

Campaign scheduling, resource loading, and maintenance windows.

#
SectionKind

pub enum SectionKind {
Context
Method
Safety
Notes
} derive(Eq,
Debug
)

#
SensitivityAnalysis

pub struct SensitivityAnalysis {
baseline : Float
points : Array[SensitivityPoint]
} derive(Eq,
Debug
)

#
SensitivityAnalysis::count

fn SensitivityAnalysis::count(self : SensitivityAnalysis) -> Int

#
SensitivityAnalysis::maximum

#
SensitivityAnalysis::mean_response

fn SensitivityAnalysis::mean_response(self : SensitivityAnalysis) -> Float

#
SensitivityAnalysis::minimum

#
SensitivityAnalysis::ranked

#
SensitivityAnalysis::to_table

#
SensitivityPoint

pub struct SensitivityPoint {
parameter : String
change : Float
response : Float
} derive(Eq,
Debug
)

#
SensitivityPoint::elasticity

fn SensitivityPoint::elasticity(self : SensitivityPoint) -> Float

#
Shift

pub struct Shift {
name : String
start_hour : Float
end_hour : Float
crew : Int
}

#
Shift::hours

fn Shift::hours(self : Shift) -> Float

#
Shift::valid

fn Shift::valid(self : Shift) -> Bool

#
SourceKind

pub enum SourceKind {
Standard
Datasheet
Literature
Internal
} derive(Eq,
Debug
)

#
SourceRef

pub struct SourceRef {
label : String
kind : SourceKind
url : String?
license : String?
note : String?
} derive(Eq,
Debug
)

#
Statistics

pub struct Statistics {
count : Int
minimum : Float
maximum : Float
mean : Float
variance : Float
standard_deviation : Float
sum : Float
} derive(Eq,
Debug
)

#
StreamDifference

pub struct StreamDifference {
component : String
left : Float
right : Float
difference : Float
relative_difference : Float
} derive(Eq,
Debug
)

#
StreamDirection

pub enum StreamDirection {
Inlet
Outlet
} derive(Eq,
Debug
)

#
StreamInventory

pub struct StreamInventory {
name : String
items : Array[InventoryItem]
} derive(Eq,
Debug
)

#
StreamInventory::component_count

fn StreamInventory::component_count(self : StreamInventory) -> Int

#
StreamInventory::component_flow

fn StreamInventory::component_flow(self : StreamInventory, component : String) -> Float

#
StreamInventory::component_names

fn StreamInventory::component_names(self : StreamInventory) -> Array[String]

#
StreamInventory::fraction

fn StreamInventory::fraction(self : StreamInventory, component : String) -> Float

#
StreamInventory::is_empty

fn StreamInventory::is_empty(self : StreamInventory) -> Bool

#
StreamInventory::largest_component

fn StreamInventory::largest_component(self : StreamInventory) -> String?

#
StreamInventory::mass_fraction

fn StreamInventory::mass_fraction(self : StreamInventory, component : String) -> Float

#
StreamInventory::normalize

fn StreamInventory::normalize(self : StreamInventory, target : MeasureUnit) -> Result[StreamInventory, QuantityError]

#
StreamInventory::smallest_component

fn StreamInventory::smallest_component(self : StreamInventory) -> String?

#
StreamInventory::to_json

fn StreamInventory::to_json(self : StreamInventory) -> String

#
StreamInventory::to_markdown

fn StreamInventory::to_markdown(self : StreamInventory) -> String

#
StreamInventory::to_table

#
StreamInventory::total_flow

fn StreamInventory::total_flow(self : StreamInventory) -> Float

#
StreamInventory::with_item

#
StreamInventory::without_component

fn StreamInventory::without_component(self : StreamInventory, component : String) -> StreamInventory

#
SweepConfig

pub struct SweepConfig {
start : Float
stop : Float
steps : Int
label : String
} derive(Eq,
Debug
)

#
SweepConfig::is_valid

fn SweepConfig::is_valid(self : SweepConfig) -> Bool

#
SweepConfig::values

fn SweepConfig::values(self : SweepConfig) -> Array[Float]

#
TankDesign

pub struct TankDesign {
diameter : Float
height : Float
working_level : Float
dead_volume : Float
overflow_level : Float
} derive(Eq,
Debug
)

#
TankDesign::cross_section

fn TankDesign::cross_section(self : TankDesign) -> Float

#
TankDesign::is_acceptable

fn TankDesign::is_acceptable(self : TankDesign) -> Bool

#
TankDesign::overflow_volume

fn TankDesign::overflow_volume(self : TankDesign) -> Float

#
TankDesign::residence_time

fn TankDesign::residence_time(self : TankDesign, flow_rate : Float) -> Float

#
TankDesign::usable_volume

fn TankDesign::usable_volume(self : TankDesign) -> Float

#
TankDesign::working_volume

fn TankDesign::working_volume(self : TankDesign) -> Float

#
TemplateCatalog

pub struct TemplateCatalog {
templates : Array[ReportTemplate]
} derive(Eq,
Debug
)

#
TemplateCatalog::add

#
TemplateCatalog::count

fn TemplateCatalog::count(self : TemplateCatalog) -> Int

#
TemplateCatalog::find

fn TemplateCatalog::find(self : TemplateCatalog, name : String) -> ReportTemplate?

#
TemplateCatalog::names

fn TemplateCatalog::names(self : TemplateCatalog) -> Array[String]

#
TemplateCatalog::render_index

fn TemplateCatalog::render_index(self : TemplateCatalog) -> String

#
TemplateField

pub struct TemplateField {
name : String
requirement : FieldRequirement
} derive(Eq,
Debug
)

#
TemplateValue

pub struct TemplateValue {
name : String
value : String
} derive(Eq,
Debug
)

#
TimeSeries

pub struct TimeSeries {
name : String
samples : Array[Sample]
} derive(Eq,
Debug
)

#
TimeSeries::append

fn TimeSeries::append(self : TimeSeries, point : Sample) -> TimeSeries

#
TimeSeries::at

fn TimeSeries::at(self : TimeSeries, index : Int) -> Sample?

#
TimeSeries::between

fn TimeSeries::between(self : TimeSeries, start : Float, stop : Float) -> TimeSeries

#
TimeSeries::ewma

fn TimeSeries::ewma(self : TimeSeries, alpha : Float) -> TimeSeries

#
TimeSeries::first_derivative

fn TimeSeries::first_derivative(self : TimeSeries) -> TimeSeries

#
TimeSeries::integral

fn TimeSeries::integral(self : TimeSeries) -> Float

#
TimeSeries::interpolate

fn TimeSeries::interpolate(self : TimeSeries, timestamp : Float) -> Float?

#
TimeSeries::length

fn TimeSeries::length(self : TimeSeries) -> Int

#
TimeSeries::moving_average

fn TimeSeries::moving_average(self : TimeSeries, window : Int) -> TimeSeries

#
TimeSeries::normal

fn TimeSeries::normal(self : TimeSeries, threshold : Float) -> Array[Sample]

#
TimeSeries::outliers

fn TimeSeries::outliers(self : TimeSeries, threshold : Float) -> Array[Sample]

#
TimeSeries::quality_gate

fn TimeSeries::quality_gate(self : TimeSeries, minimum_count : Int, maximum_outliers : Int, threshold : Float) -> Bool

#
TimeSeries::range

fn TimeSeries::range(self : TimeSeries) -> Float

#
TimeSeries::resample

fn TimeSeries::resample(self : TimeSeries, timestamps : Array[Float]) -> TimeSeries

#
TimeSeries::summary

fn TimeSeries::summary(self : TimeSeries) -> Statistics

#
TimeSeries::time_weighted_mean

fn TimeSeries::time_weighted_mean(self : TimeSeries) -> Float

#
TimeSeries::timestamps

fn TimeSeries::timestamps(self : TimeSeries) -> Array[Float]

#
TimeSeries::to_markdown

fn TimeSeries::to_markdown(self : TimeSeries) -> String

#
TimeSeries::to_table

fn TimeSeries::to_table(self : TimeSeries) -> ReportTable

#
TimeSeries::trend

fn TimeSeries::trend(self : TimeSeries) -> Float

#
TimeSeries::trend_report

fn TimeSeries::trend_report(self : TimeSeries) -> ReportSection

#
TimeSeries::valid

fn TimeSeries::valid(self : TimeSeries) -> TimeSeries

#
TimeSeries::values

fn TimeSeries::values(self : TimeSeries) -> Array[Float]

#
TrayStage

pub struct TrayStage {
number : Int
efficiency : Float
liquid_flow : Float
vapor_flow : Float
}

#
TrayStage::capacity_ratio

fn TrayStage::capacity_ratio(self : TrayStage) -> Float

#
TrayStage::effective_stage

fn TrayStage::effective_stage(self : TrayStage) -> Float

#
TrendSummary

pub struct TrendSummary {
slope : Float
intercept : Float
r_squared : Float
direction : String
} derive(Eq,
Debug
)

#
Uncertainty

pub struct Uncertainty {
nominal : Float
lower : Float
upper : Float
confidence : Float
} derive(Eq,
Debug
)

#
Uncertainty::contains

fn Uncertainty::contains(self : Uncertainty, value : Float) -> Bool

#
Uncertainty::expand

fn Uncertainty::expand(self : Uncertainty, factor : Float) -> Uncertainty

#
Uncertainty::half_width

fn Uncertainty::half_width(self : Uncertainty) -> Float

#
Uncertainty::is_valid

fn Uncertainty::is_valid(self : Uncertainty) -> Bool

#
Uncertainty::relative_width

fn Uncertainty::relative_width(self : Uncertainty) -> Float

#
Uncertainty::shift

fn Uncertainty::shift(self : Uncertainty, delta : Float) -> Uncertainty

#
Uncertainty::width

fn Uncertainty::width(self : Uncertainty) -> Float

#
UnitDimension

pub enum UnitDimension {
Mass
Amount
Volume
Length
Pressure
Energy
Power
Temperature
Time
Dimensionless
} derive(Eq,
Debug
)

#
UtilityLoad

pub struct UtilityLoad {
name : String
demand : Float
availability : Float
priority : Int
} derive(Eq,
Debug
)

#
UtilityLoad::is_supplied

fn UtilityLoad::is_supplied(self : UtilityLoad) -> Bool

#
UtilityLoad::margin

fn UtilityLoad::margin(self : UtilityLoad) -> Float

#
UtilityLoad::utilization

fn UtilityLoad::utilization(self : UtilityLoad) -> Float

#
ValidationIssue

pub struct ValidationIssue {
path : String
message : String
} derive(Eq,
Debug
)

#
ValveDesign

pub struct ValveDesign {
flow_coefficient : Float
pressure_drop : Float
density : Float
opening : Float
maximum_flow : Float
} derive(Eq,
Debug
)

#
ValveDesign::capacity_margin

fn ValveDesign::capacity_margin(self : ValveDesign) -> Float

#
ValveDesign::estimated_flow

fn ValveDesign::estimated_flow(self : ValveDesign) -> Float

#
ValveDesign::is_acceptable

fn ValveDesign::is_acceptable(self : ValveDesign) -> Bool

#
VesselDesign

pub struct VesselDesign {
volume : Float
liquid_volume : Float
design_pressure : Float
allowable_pressure : Float
design_temperature : Float
allowable_temperature : Float
} derive(Eq,
Debug
)

#
VesselDesign::fill_fraction

fn VesselDesign::fill_fraction(self : VesselDesign) -> Float

#
VesselDesign::is_acceptable

fn VesselDesign::is_acceptable(self : VesselDesign) -> Bool

#
VesselDesign::pressure_margin

fn VesselDesign::pressure_margin(self : VesselDesign) -> Float

#
VesselDesign::recommended_relief_pressure

fn VesselDesign::recommended_relief_pressure(self : VesselDesign, factor : Float) -> Float

#
VesselDesign::temperature_margin

fn VesselDesign::temperature_margin(self : VesselDesign) -> Float

#
VesselDesign::volume_margin

fn VesselDesign::volume_margin(self : VesselDesign) -> Float

#
WallLayer

pub struct WallLayer {
name : String
thickness_m : Float
conductivity_w_mk : Float
}

Heat-transfer balances for preliminary equipment sizing.

#
WallLayer::resistance

fn WallLayer::resistance(self : WallLayer, area_m2 : Float) -> Float

#
WarningNote

pub struct WarningNote {
code : String
severity : WarningSeverity
summary : String
action : String
} derive(Eq,
Debug
)

#
WarningSeverity

pub enum WarningSeverity {
Info
Warning
Critical
} derive(Eq,
Debug
)

#
WeightedObjective

pub struct WeightedObjective {
weights : Array[Float]
offset : Float
} derive(Eq,
Debug
)

#
WeightedObjective::evaluate

fn WeightedObjective::evaluate(self : WeightedObjective, variables : Array[Float]) -> Float

#
WeightedObjective::rank

#
WorkflowStatus

pub enum WorkflowStatus {
Draft
Review
Approved
Rejected
Archived
} derive(Eq,
Debug
)

#
WorkflowStep

pub struct WorkflowStep {
name : String
owner : String
status : WorkflowStatus
note : String
} derive(Eq,
Debug
)

#
WorkflowStep::is_complete

fn WorkflowStep::is_complete(self : WorkflowStep) -> Bool

#
above_control_limit

fn above_control_limit() -> ObservationFlag

#
absorber_design

fn absorber_design(gas_flow_mol_h : Float, liquid_flow_mol_h : Float, inlet_gas_fraction : Float, outlet_gas_fraction : Float, equilibrium : EquilibriumLine, overall_kya_h : Float) -> AbsorberDesign

#
alarm

fn alarm(code : String, tag : String, value : Float, low : Float, high : Float, message : String) -> Alarm

#
alarm_board

fn alarm_board(alarms : Array[Alarm], updated_at : String) -> AlarmBoard

#
annual_cost

fn annual_cost(model : CostModel, periods : Int) -> Float

#
annualized_energy

fn annualized_energy(power : Float, operating_hours : Float) -> Float

#
antoine

fn antoine(a : Float, b : Float, c : Float, minimum_c : Float, maximum_c : Float) -> AntoineCorrelation

#
archive_step

fn archive_step(name : String, owner : String, note : String) -> WorkflowStep

#
arrhenius

fn arrhenius(pre_exponential : Float, activation_energy_kj : Float, reference_temperature_k : Float) -> ArrheniusModel

#
audit_event

fn audit_event(timestamp : String, actor : String, action : String, object : String) -> AuditEvent

#
audit_quality_gate

fn audit_quality_gate(trail : AuditTrail) -> Bool

#
audit_trail

fn audit_trail(events : Array[AuditEvent]) -> AuditTrail

#
automatic_mode

fn automatic_mode() -> ControllerMode

#
balance_error_percent

fn balance_error_percent(inlet : Float, outlet : Float) -> Float

#
balance_residual

fn balance_residual(inlet : Float, outlet : Float) -> Float

#
bar

fn bar() -> MeasureUnit

#
base_unit

fn base_unit(dimension : UnitDimension) -> MeasureUnit

#
batch_campaign_scrap

fn batch_campaign_scrap(records : Array[BatchRecord]) -> Float

#
batch_campaign_yield

fn batch_campaign_yield(records : Array[BatchRecord], input_kg : Float) -> Float

#
batch_charge

fn batch_charge(material : String, mass_kg : Float, purity : Float) -> BatchCharge

#
batch_plan

fn batch_plan(recipe : BatchRecipe, steps : Array[BatchStep], cleaning_hours : Float, setup_hours : Float) -> BatchPlan

#
batch_recipe

fn batch_recipe(name : String, target_kg : Float, charges : Array[BatchCharge], hold_hours : Float, yield_fraction : Float) -> BatchRecipe

#
batch_record

fn batch_record(id : String, plan_name : String, started_at : String, finished_at : String, output_kg : Float, scrap_kg : Float, accepted : Bool) -> BatchRecord

#
batch_records_acceptance

fn batch_records_acceptance(records : Array[BatchRecord]) -> Float

#
batch_records_table

fn batch_records_table(records : Array[BatchRecord]) -> ReportTable

#
batch_records_total

fn batch_records_total(records : Array[BatchRecord]) -> Float

#
batch_report

fn batch_report(reports : Array[ChemReport], labels : Array[String]) -> BatchReport

#
batch_scale

fn batch_scale(plan : BatchPlan, factor : Float) -> BatchPlan

#
batch_step

fn batch_step(name : String, duration_hours : Float, temperature_c : Float, pressure_bar : Float, agitation_rpm : Float) -> BatchStep

#
below_control_limit

fn below_control_limit() -> ObservationFlag

#
benchmark_exports

fn benchmark_exports(reports : Array[ChemReport], iterations : Int) -> BenchmarkResult

#
best_candidate

fn best_candidate(candidates : Array[Candidate]) -> Candidate?

#
bow_tie

fn bow_tie(hazard : String, threats : Array[String], preventive : Array[Safeguard], mitigative : Array[Safeguard]) -> BowTie

#
break_even_quantity

fn break_even_quantity(fixed_cost : Float, price : Float, variable_cost : Float) -> Float

#
candidate

fn candidate(name : String, variables : Array[Float], score : Float) -> Candidate

#
candidate_table

fn candidate_table(candidates : Array[Candidate]) -> ReportTable

#
carbon_emission

fn carbon_emission(energy : Float, factor : EmissionFactor) -> Emission

#
carbon_intensity

fn carbon_intensity(energy : Float, emission_factor : Float) -> Float

#
cascade_mode

fn cascade_mode() -> ControllerMode

#
catalyst_productivity

fn catalyst_productivity(product_kg : Float, catalyst_kg : Float, hours : Float) -> Float

#
catastrophic

fn catastrophic() -> RiskSeverity

#
celsius

fn celsius() -> MeasureUnit

#
changeover_schedule

fn changeover_schedule() -> ScheduleKind

#
chemical_properties

fn chemical_properties(name : String, molecular_weight : Float, density : LinearProperty, viscosity : LinearProperty, heat_capacity : LinearProperty, vapor_pressure : AntoineCorrelation) -> ChemicalPropertySet

#
clamp

fn clamp(value : Float, minimum : Float, maximum : Float) -> Float

#
classify_series

fn classify_series(series : ScenarioSeries, lower : Float, upper : Float) -> ScenarioSeries

#
cleaning_schedule

fn cleaning_schedule() -> ScheduleKind

#
coefficient_of_variation

fn coefficient_of_variation(values : Array[Float]) -> Float?

#
combine_by_component

fn combine_by_component(streams : Array[StreamInventory], component : String) -> Float

#
compare_reports

fn compare_reports(left : ChemReport, right : ChemReport) -> Array[Diagnostic]

#
compare_streams

fn compare_streams(left : StreamInventory, right : StreamInventory) -> Array[StreamDifference]

#
compatible

fn compatible(left : MeasureUnit, right : MeasureUnit) -> Bool

#
completeness

fn completeness(fields : Array[DataField]) -> Float

#
completeness_score

fn completeness_score(report : ChemReport) -> Float

#
component_flow

fn component_flow(component : String, value : Float, unit : MeasureUnit) -> ComponentFlow

#
component_loss

fn component_loss(feed : StreamInventory, product : StreamInventory, component : String) -> Float

#
component_recovery

fn component_recovery(feed : StreamInventory, product : StreamInventory, component : String) -> Float

#
compressor_design

fn compressor_design(suction_pressure : Float, discharge_pressure : Float, inlet_temperature : Float, flow_rate : Float, efficiency : Float, gas_constant : Float, heat_capacity_ratio : Float) -> CompressorDesign

#
conduction_resistance

fn conduction_resistance(thickness_m : Float, conductivity_w_mk : Float, area_m2 : Float) -> Float

#
constraint

fn constraint(index : Int, lower : Float, upper : Float) -> Constraint

#
constraint_violation

fn constraint_violation(candidate : Candidate, constraints : Array[Constraint]) -> Float

#
contribution_margin

fn contribution_margin(price : Float, variable_cost : Float) -> Float

#
control_limits

fn control_limits(values : Array[Float]) -> ControlLimits

#
control_loop

fn control_loop(controllers : Array[Controller], alarms : AlarmBoard) -> ControlLoop

#
control_quality_gate

fn control_quality_gate(control : ControlLoop, maximum_active_alarms : Int) -> Bool

#
controller

fn controller(tag : String, setpoint : Float, process_value : Float, output : Float, gain : Float, integral : Float, mode : ControllerMode) -> Controller

#
controller_error

fn controller_error(controller : Controller) -> Float

#
convection_resistance

fn convection_resistance(coefficient_w_m2k : Float, area_m2 : Float) -> Float

#
correlation_squared

fn correlation_squared(left : Array[Float], right : Array[Float]) -> Float

#
cost_item

fn cost_item(name : String, quantity : Float, unit_cost : Float, category : String) -> CostItem

#
cost_model

fn cost_model(items : Array[CostItem], currency : String, period : String) -> CostModel

#
cost_quality_gate

fn cost_quality_gate(model : CostModel) -> Bool

#
cstr_design

fn cstr_design(volume_m3 : Float, flow_m3_h : Float, rate_mol_m3_h : Float, feed_mol_m3 : Float) -> CstrDesign

#
data_field

fn data_field(name : String, value : String?, expected_unit : String?, policy : MissingPolicy) -> DataField

#
data_quality

fn data_quality(name : String, completeness : Float, validity : Float, timeliness : Float, consistency : Float) -> DataQuality

#
data_quality_gate

fn data_quality_gate(fields : Array[DataField], minimum : Float) -> Bool

#
delimited_row

fn delimited_row(fields : Array[String], line_number : Int) -> DelimitedRow

#
delimited_table

fn delimited_table(headers : Array[String], rows : Array[DelimitedRow], delimiter : String) -> DelimitedTable

#
diagnose_report

fn diagnose_report(report : ChemReport) -> DiagnosticReport

#
diagnostic

fn diagnostic(code : String, severity : DiagnosticSeverity, path : String, message : String, remediation : String) -> Diagnostic

#
diagnostic_report

fn diagnostic_report(diagnostics : Array[Diagnostic]) -> DiagnosticReport

#
discount_factor

fn discount_factor(rate : Float, period : Int) -> Float

#
distillation_case

fn distillation_case(feed_rate : Float, feed_fraction : Float, distillate_rate : Float, distillate_fraction : Float, bottoms_rate : Float, bottoms_fraction : Float, reflux_ratio : Float, stages : Int) -> DistillationCase

#
duplicate_headers

fn duplicate_headers(headers : Array[String]) -> Array[String]

#
earliest_available

fn earliest_available(calendar : ResourceCalendar, duration_hours : Float, from_hour : Float) -> Float

#
elasticity

fn elasticity(input_before : Float, input_after : Float, output_before : Float, output_after : Float) -> Float

#
emission

fn emission(pollutant : String, amount : Float, unit : String, source : String) -> Emission

#
emission_factor

fn emission_factor(pollutant : String, factor : Float, unit : String, source : String) -> EmissionFactor

#
emission_intensity

fn emission_intensity(emissions : EnvironmentalInventory, production : Float) -> Float

#
energy_balance

fn energy_balance(streams : Array[EnergyStream]) -> EnergyBalance

#
energy_cost

fn energy_cost(energy : Float, rate : Float, demand_charge : Float, fixed_charge : Float) -> EnergyCost

#
energy_stream

fn energy_stream(name : String, duty : Quantity, direction : StreamDirection) -> EnergyStream

#
environmental_gate

fn environmental_gate(inventory : EnvironmentalInventory, maximum : Float) -> Bool

#
environmental_inventory

fn environmental_inventory(emissions : Array[Emission], period : String, facility : String) -> EnvironmentalInventory

#
environmental_section

fn environmental_section(inventory : EnvironmentalInventory) -> ReportSection

#
equal_to

fn equal_to() -> RuleOperator

#
equilibrium_line

fn equilibrium_line(slope : Float, intercept : Float) -> EquilibriumLine

#
escalation

fn escalation(value : Float, annual_rate : Float, years : Int) -> Float

#
evaluate_candidates

fn evaluate_candidates(candidates : Array[Candidate], constraints : Array[Constraint]) -> Array[Candidate]

#
evaluate_rules

fn evaluate_rules(rules : Array[Rule], values : Array[RuleValue]) -> RuleEvaluation

#
example_chemreport

fn example_chemreport() -> ChemReport

#
exchanger_area

fn exchanger_area(duty_kw : Float, coefficient_kw_m2k : Float, driving_force_k : Float, correction : Float) -> Float

#
exchanger_design

fn exchanger_design(area : Float, overall_u : Float, hot_inlet : Float, hot_outlet : Float, cold_inlet : Float, cold_outlet : Float, hot_capacity : Float, cold_capacity : Float) -> ExchangerDesign

#
failed_mode

fn failed_mode() -> ControllerMode

#
feasible

fn feasible(candidate : Candidate, constraints : Array[Constraint]) -> Bool

#
first_order_conversion

fn first_order_conversion(rate_constant : Float, residence_hours : Float) -> Float

#
first_order_half_life

fn first_order_half_life(rate_constant : Float) -> Float

#
frequent

fn frequent() -> RiskLikelihood

#
froude_number

fn froude_number(velocity : Float, length : Float, gravity : Float) -> Float

#
greater_than

fn greater_than() -> RuleOperator

#
hazard

fn hazard(id : String, node : String, deviation : String, cause : String, consequence : String, likelihood : RiskLikelihood, severity : RiskSeverity, safeguards : Array[String]) -> Hazard

#
heat_balance

fn heat_balance(inlet_kw : Float, reaction_kw : Float, utility_kw : Float, outlet_kw : Float) -> Float

#
heat_balance_gate

fn heat_balance_gate(error_kw : Float, tolerance_kw : Float) -> Bool

#
heat_duty

fn heat_duty(mass_flow_kg_h : Float, heat_capacity_kj_kgk : Float, delta_temperature_k : Float) -> Float

#
heat_duty_with_phase

fn heat_duty_with_phase(mass_flow_kg_h : Float, heat_capacity_kj_kgk : Float, delta_temperature_k : Float, latent_kj_kg : Float) -> Float

#
heat_exchanger_case

fn heat_exchanger_case(hot_inlet : Float, hot_outlet : Float, cold_inlet : Float, cold_outlet : Float, hot_capacity_rate : Float, cold_capacity_rate : Float, area : Float, overall_u : Float) -> HeatExchangerCase

#
heat_exchanger_check

fn heat_exchanger_check(area_m2 : Float, required_m2 : Float, duty_kw : Float, pressure_drop_bar : Float, max_pressure_drop_bar : Float) -> HeatExchangerCheck

#
heat_transfer_table

fn heat_transfer_table(checks : Array[HeatExchangerCheck]) -> ReportTable

#
ignore_missing

fn ignore_missing() -> MissingPolicy

#
import_gate

fn import_gate(data : DelimitedTable, minimum_quality : Float, required : Array[String]) -> Bool

#
import_issue

fn import_issue(line_number : Int, field : String, message : String, severity : String) -> ImportIssue

#
import_issues_table

fn import_issues_table(issues : Array[ImportIssue]) -> ReportTable

#
initial_workflow

fn initial_workflow(id : String, owner : String) -> ReportWorkflow

#
inlet

fn inlet() -> StreamDirection

#
inspection_schedule

fn inspection_schedule() -> ScheduleKind

#
insulation_design

fn insulation_design(thickness_m : Float, conductivity_w_mk : Float, area_m2 : Float, ambient_c : Float, process_c : Float) -> InsulationDesign

#
interpolate_linear

fn interpolate_linear(x : Float, x_one : Float, y_one : Float, x_two : Float, y_two : Float) -> Float

#
interpolate_scenario

fn interpolate_scenario(series : ScenarioSeries, input : Float) -> Float?

#
inventory_item

fn inventory_item(component : String, flow : Float, unit : MeasureUnit) -> InventoryItem

#
kelvin

fn kelvin() -> MeasureUnit

#
kg_per_hour

fn kg_per_hour() -> MeasureUnit

#
latent_duty

fn latent_duty(mass_flow : Float, latent_heat : Float, vapor_fraction : Float) -> Float

#
less_than

fn less_than() -> RuleOperator

#
likely

fn likely() -> RiskLikelihood

#
linear_property

fn linear_property(reference : Float, slope : Float, reference_temperature : Float) -> LinearProperty

#
liquid_state

fn liquid_state() -> PhaseState

#
lmtd

fn lmtd(hot_in : Float, hot_out : Float, cold_in : Float, cold_out : Float) -> Float

#
log_mean_temperature_difference

fn log_mean_temperature_difference(delta_one : Float, delta_two : Float) -> Float

#
loss_fraction

fn loss_fraction(inlet : Float, recovered : Float) -> Float

#
lower_bound_rule

fn lower_bound_rule(code : String, field : String, limit : Float, severity : RuleSeverity) -> Rule

#
maintenance_gate

fn maintenance_gate(tasks : Array[MaintenanceTask]) -> Bool

#
maintenance_schedule

fn maintenance_schedule() -> ScheduleKind

#
maintenance_table

fn maintenance_table(tasks : Array[MaintenanceTask]) -> ReportTable

#
maintenance_task

fn maintenance_task(asset : String, task : String, interval_hours : Float, operating_hours : Float, critical : Bool) -> MaintenanceTask

#
maintenance_window

fn maintenance_window(asset : String, due_hour : Float, duration_hours : Float, critical : Bool, completed : Bool) -> MaintenanceWindow

#
maintenance_windows_table

fn maintenance_windows_table(items : Array[MaintenanceWindow], current_hour : Float) -> ReportTable

#
major

fn major() -> RiskSeverity

#
manual_mode

fn manual_mode() -> ControllerMode

#
mass_transfer_coefficient

fn mass_transfer_coefficient(diffusivity_m2_s : Float, film_thickness_m : Float) -> Float

#
material_balance

fn material_balance(streams : Array[ProcessStream]) -> MaterialBalance

#
material_property

fn material_property(name : String, molecular_weight : Float, density : Float, heat_capacity : Float, boiling_point : Float, safety_limit : Float) -> MaterialProperty

#
mean

fn mean(values : Array[Float]) -> Float?

#
merge_reports

fn merge_reports(left : ChemReport, right : ChemReport) -> ChemReport

#
merge_rules

fn merge_rules(left : Array[Rule], right : Array[Rule]) -> Array[Rule]

#
minor

fn minor() -> RiskSeverity

#
missing_field_issues

fn missing_field_issues(data : DelimitedTable, required : Array[String]) -> Array[ImportIssue]

#
mix_streams

fn mix_streams(streams : Array[StreamInventory]) -> StreamInventory

#
mixture_density

fn mixture_density(items : Array[MixtureProperty], temperature_c : Float) -> Float

#
mixture_fraction_total

fn mixture_fraction_total(items : Array[MixtureProperty]) -> Float

#
mixture_heat_capacity

fn mixture_heat_capacity(items : Array[MixtureProperty], temperature_c : Float) -> Float

#
mixture_property

fn mixture_property(component : String, mole_fraction : Float, property : ChemicalPropertySet) -> MixtureProperty

#
mixture_valid

fn mixture_valid(items : Array[MixtureProperty]) -> Bool

#
mixture_vapor_pressure

fn mixture_vapor_pressure(items : Array[MixtureProperty], temperature_c : Float) -> Float

#
monte_carlo_summary

fn monte_carlo_summary(values : Array[Float]) -> MonteCarloSummary

#
moving_average

fn moving_average(values : Array[Float], window : Int) -> Array[Float]

#
nearest_scenario

fn nearest_scenario(series : ScenarioSeries, input : Float) -> ScenarioPoint?

#
negligible

fn negligible() -> RiskSeverity

#
net_present_value

fn net_present_value(initial : Float, cashflows : Array[Float], rate : Float) -> Float

#
non_negative_rule

fn non_negative_rule(code : String, field : String, severity : RuleSeverity) -> Rule

#
normal_observation

fn normal_observation() -> ObservationFlag

#
normalize_scores

fn normalize_scores(candidates : Array[Candidate]) -> Array[Candidate]

#
normalized_error

fn normalized_error(observed : Float, expected : Float) -> Float

#
optimization_report

fn optimization_report(candidates : Array[Candidate], constraints : Array[Constraint]) -> ReportSection

#
optimize

fn optimize(candidates : Array[Candidate], constraints : Array[Constraint]) -> Candidate?

#
optional

fn optional() -> FieldRequirement

#
outlet

fn outlet() -> StreamDirection

#
packed_column

fn packed_column(diameter_m : Float, packing_height_m : Float, packing_factor : Float, gas_velocity_m_s : Float, flooding_velocity_m_s : Float) -> PackedColumn

#
pareto_front

fn pareto_front(candidates : Array[Candidate]) -> Array[Candidate]

#
parse_delimited

fn parse_delimited(text : String, delimiter : String) -> DelimitedTable

#
parse_unit

fn parse_unit(text : String) -> MeasureUnit?

#
pascal

fn pascal() -> MeasureUnit

#
penalized_best

fn penalized_best(candidates : Array[Candidate], constraints : Array[Constraint], penalty : Float) -> Candidate?

#
penalty_score

fn penalty_score(candidate : Candidate, constraints : Array[Constraint], penalty : Float) -> Float

#
percent_change

fn percent_change(before : Float, after : Float) -> Float

#
percentile

fn percentile(values : Array[Float], percentile : Float) -> Float?

#
pfr_design

fn pfr_design(volume_m3 : Float, flow_m3_h : Float, inlet_mol_m3 : Float, rate_mol_m3_h : Float) -> PfrDesign

#
pipe_design

fn pipe_design(length : Float, diameter : Float, roughness : Float, flow_rate : Float, density : Float, viscosity : Float, allowable_drop : Float) -> PipeDesign

#
positive_rule

fn positive_rule(code : String, field : String, severity : RuleSeverity) -> Rule

#
possible

fn possible() -> RiskLikelihood

#
prandtl_number

fn prandtl_number(heat_capacity : Float, viscosity : Float, conductivity : Float) -> Float

#
present_value

fn present_value(cashflows : Array[Float], rate : Float) -> Float

#
pressure_drop_case

fn pressure_drop_case(length : Float, diameter : Float, velocity : Float, density : Float, viscosity : Float, roughness : Float, fittings_k : Float) -> PressureDropCase

#
production_economics

fn production_economics(revenue : Float, operating_cost : Float, capital_cost : Float, production : Float, lifetime : Int) -> ProductionEconomics

#
production_schedule

fn production_schedule() -> ScheduleKind

#
profile_from_fields

fn profile_from_fields(name : String, fields : Array[DataField]) -> QualityProfile

#
propagate_add

fn propagate_add(left : Uncertainty, right : Uncertainty) -> Uncertainty

#
propagate_divide

fn propagate_divide(left : Uncertainty, right : Uncertainty) -> Uncertainty

#
propagate_multiply

fn propagate_multiply(left : Uncertainty, right : Uncertainty) -> Uncertainty

#
propagate_scale

fn propagate_scale(value : Uncertainty, factor : Float) -> Uncertainty

#
propagate_subtract

fn propagate_subtract(left : Uncertainty, right : Uncertainty) -> Uncertainty

#
property_reynolds_number

fn property_reynolds_number(density : Float, velocity : Float, diameter : Float, viscosity : Float) -> Float

#
property_table

fn property_table(items : Array[MixtureProperty], temperature_c : Float) -> ReportTable

#
pump_case

fn pump_case(flow_rate : Float, differential_pressure : Float, efficiency : Float, fluid_density : Float, installed_power : Float) -> PumpCase

#
quality_dimension

fn quality_dimension(name : String, passed : Int, total : Int) -> QualityDimension

#
quality_gate

fn quality_gate(report : ChemReport) -> QualityGate

#
quality_profile

fn quality_profile(name : String, dimensions : Array[QualityDimension]) -> QualityProfile

#
quality_report

fn quality_report(profiles : Array[QualityProfile]) -> ReportTable

#
quantity

fn quantity(value : Float, unit : MeasureUnit) -> Quantity

#
radiation_coefficient

fn radiation_coefficient(emissivity : Float, hot_k : Float, cold_k : Float) -> Float

#
rare

fn rare() -> RiskLikelihood

#
reaction_heat

fn reaction_heat(duty_mol_h : Float, heat_kj_mol : Float) -> Float

#
reaction_order

fn reaction_order(order_a : Float, order_b : Float, stoich_a : Float, stoich_b : Float) -> ReactionOrder

#
reaction_path

fn reaction_path(name : String, conversion : Float, selectivity : Float, yield_fraction : Float) -> ReactionPath

#
reaction_path_table

fn reaction_path_table(paths : Array[ReactionPath]) -> ReportTable

#
reactor_case

fn reactor_case(name : String, feed : Float, product : Float, byproduct : Float, residence_time : Float, temperature : Float, pressure : Float) -> ReactorCase

#
reactor_gate

fn reactor_gate(conversion : Float, minimum : Float, temperature_c : Float, maximum_c : Float) -> Bool

#
recovery

fn recovery(inlet : Float, recovered : Float) -> Float

#
reduction_achieved

fn reduction_achieved(baseline : Float, current : Float) -> Float

#
reduction_target

fn reduction_target(baseline : Float, reduction : Float) -> Float

#
regression_gate

fn regression_gate(baseline : ChemReport, candidate : ChemReport) -> Bool

#
reject_missing

fn reject_missing() -> MissingPolicy

#
report

fn report(metadata : ReportMetadata, summary : String, assumptions : Array[Assumption], inputs : Array[InputValue], formulas : Array[FormulaNote], results : Array[ResultValue], warnings : Array[WarningNote], sources : Array[SourceRef], sections : Array[ReportSection], tags : Array[String]) -> ChemReport

#
report_builder

fn report_builder(value : ChemReport) -> ReportBuilder

#
report_template

fn report_template(name : String, fields : Array[TemplateField]) -> ReportTemplate

#
report_workflow

fn report_workflow(id : String, steps : Array[WorkflowStep]) -> ReportWorkflow

#
required

fn required() -> FieldRequirement

#
required_sections

fn required_sections(report : ChemReport) -> Array[String]

#
residence_time

fn residence_time(volume : Float, flow_rate : Float) -> Float

#
resource_calendar

fn resource_calendar(name : String, capacity_hours : Float, blocks : Array[ScheduleBlock]) -> ResourceCalendar

#
reynolds_number

fn reynolds_number(density : Float, velocity : Float, diameter : Float, viscosity : Float) -> Float

#
risk_priority_order

fn risk_priority_order(hazards : Array[Hazard]) -> Array[Hazard]

#
risk_reduction

fn risk_reduction(before : Hazard, after : Hazard) -> Int

#
risk_register

fn risk_register(hazards : Array[Hazard]) -> RiskRegister

#
risk_register_table

fn risk_register_table(register : RiskRegister) -> ReportTable

#
risk_summary

fn risk_summary(register : RiskRegister) -> String

#
rule

fn rule(code : String, operator : RuleOperator, field : String, limit : Float, severity : RuleSeverity) -> Rule

#
rule_codes

fn rule_codes(rules : Array[Rule]) -> Array[String]

#
rule_error

fn rule_error() -> RuleSeverity

#
rule_fields

fn rule_fields(rules : Array[Rule]) -> Array[String]

#
rule_gate

fn rule_gate(rules : Array[Rule], values : Array[RuleValue]) -> Bool

#
rule_info

fn rule_info() -> RuleSeverity

#
rule_summary

fn rule_summary(evaluation : RuleEvaluation) -> String

#
rule_value

fn rule_value(field : String, value : Float) -> RuleValue

#
rule_warning

fn rule_warning() -> RuleSeverity

#
run_sweep

fn run_sweep(config : SweepConfig, evaluate : (Float) -> Float) -> ScenarioSeries

#
safeguard

fn safeguard(name : String, kind : String, independent : Bool, test_interval_hours : Float, enabled : Bool) -> Safeguard

#
safety_factor

fn safety_factor(allowable : Float, applied : Float) -> Float

#
safety_review

fn safety_review(name : String, measured : Float, design_limit : Float, warning_fraction : Float, unit : String) -> SafetyReview

#
sample

fn sample(timestamp : Float, value : Float) -> Sample

#
scenario_distance

fn scenario_distance(left : ScenarioPoint, right : ScenarioPoint) -> Float

#
scenario_point

fn scenario_point(name : String, input : Float, output : Float, score : Float, status : ResultStatus, note : String) -> ScenarioPoint

#
scenario_series

fn scenario_series(name : String, points : Array[ScenarioPoint], input_unit : String, output_unit : String) -> ScenarioSeries

#
scenario_status

fn scenario_status(score : Float, lower : Float, upper : Float) -> ResultStatus

#
schedule_block

fn schedule_block(id : String, asset : String, kind : ScheduleKind, start_hour : Float, duration_hours : Float, priority : Int, operator : String) -> ScheduleBlock

#
schedule_load_gate

fn schedule_load_gate(calendar : ResourceCalendar, maximum_utilization : Float) -> Bool

#
schedule_table

fn schedule_table(blocks : Array[ScheduleBlock]) -> ReportTable

#
score_range

fn score_range(candidates : Array[Candidate]) -> Float

#
sensitivity

fn sensitivity(base : Float, delta : Float, response_base : Float, response_delta : Float) -> Float

#
sensitivity_analysis

fn sensitivity_analysis(baseline : Float, points : Array[SensitivityPoint]) -> SensitivityAnalysis

#
sensitivity_point

fn sensitivity_point(parameter : String, change : Float, response : Float) -> SensitivityPoint

#
serious

fn serious() -> RiskSeverity

#
sherwood_number

fn sherwood_number(coefficient_m_s : Float, length_m : Float, diffusivity_m2_s : Float) -> Float

#
shift

fn shift(name : String, start_hour : Float, end_hour : Float, crew : Int) -> Shift

#
solid_state

fn solid_state() -> PhaseState

#
sort_loads_by_priority

fn sort_loads_by_priority(loads : Array[UtilityLoad]) -> Array[UtilityLoad]

#
split_delimited_line

fn split_delimited_line(line : String, delimiter : String, line_number : Int) -> DelimitedRow

#
split_fractions_are_closed

fn split_fractions_are_closed(fractions : Array[Float], tolerance? : Float) -> Bool

#
split_stream

fn split_stream(source : StreamInventory, fractions : Array[Float]) -> Array[StreamInventory]

#
stage_efficiency_table

fn stage_efficiency_table(stages : Array[TrayStage]) -> ReportTable

#
standard_balance_template

fn standard_balance_template() -> ReportTemplate

#
standard_operations_template

fn standard_operations_template() -> ReportTemplate

#
standard_safety_template

fn standard_safety_template() -> ReportTemplate

#
standard_template_catalog

fn standard_template_catalog() -> TemplateCatalog

#
stream

fn stream(name : String, direction : StreamDirection, components : Array[ComponentFlow]) -> ProcessStream

#
stream_balance_error

fn stream_balance_error(left : StreamInventory, right : StreamInventory) -> Float

#
stream_difference_table

fn stream_difference_table(differences : Array[StreamDifference]) -> ReportTable

#
stream_directions

fn stream_directions() -> Array[StreamDirection]

#
stream_inventory

fn stream_inventory(name : String, items : Array[InventoryItem]) -> StreamInventory

#
stream_selectivity

fn stream_selectivity(product : StreamInventory, target : String, byproduct : String) -> Float

#
stream_yield

fn stream_yield(feed : StreamInventory, product : StreamInventory) -> Float

#
sum_negative

fn sum_negative(values : Array[Float]) -> Float

#
sum_positive

fn sum_positive(values : Array[Float]) -> Float

#
summarize

fn summarize(values : Array[Float]) -> Statistics

#
supercritical_state

fn supercritical_state() -> PhaseState

#
sweep_candidates

fn sweep_candidates(config : SweepConfig, objective : WeightedObjective) -> Array[Candidate]

#
sweep_config

fn sweep_config(start : Float, stop : Float, steps : Int, label : String) -> SweepConfig

#
table

fn table(columns : Array[String], rows : Array[Array[String]]) -> ReportTable

#
table_to_csv

fn table_to_csv(data : DelimitedTable) -> String

#
tank_design

fn tank_design(diameter : Float, height : Float, working_level : Float, dead_volume : Float, overflow_level : Float) -> TankDesign

#
template_catalog

fn template_catalog(templates : Array[ReportTemplate]) -> TemplateCatalog

#
template_completeness

fn template_completeness(template : ReportTemplate, values : Array[TemplateValue]) -> Float

#
template_field

fn template_field(name : String, requirement : FieldRequirement) -> TemplateField

#
template_quality_gate

fn template_quality_gate(template : ReportTemplate, values : Array[TemplateValue]) -> Bool

#
template_value

fn template_value(name : String, value : String) -> TemplateValue

#
template_values_from_inputs

fn template_values_from_inputs(inputs : Array[InputValue]) -> Array[TemplateValue]

#
thermal_duty

fn thermal_duty(mass_flow : Float, heat_capacity : Float, inlet : Float, outlet : Float) -> Float

#
thermal_expansion

fn thermal_expansion(density : Float, slope : Float) -> Float

#
time_series

fn time_series(name : String, samples : Array[Sample]) -> TimeSeries

#
total_crew_hours

fn total_crew_hours(shifts : Array[Shift]) -> Float

#
total_heat_duty

fn total_heat_duty(sensible : Float, latent : Float, reaction : Float) -> Float

#
total_utility_availability

fn total_utility_availability(loads : Array[UtilityLoad]) -> Float

#
total_utility_demand

fn total_utility_demand(loads : Array[UtilityLoad]) -> Float

#
transfer_duty

fn transfer_duty(flow_mol_h : Float, inlet_fraction : Float, outlet_fraction : Float) -> Float

#
transfer_gate

fn transfer_gate(removal : Float, target : Float) -> Bool

#
tray_stage

fn tray_stage(number : Int, efficiency : Float, liquid_flow : Float, vapor_flow : Float) -> TrayStage

#
trays_required

fn trays_required(theoretical_stages : Float, efficiency : Float) -> Float

#
trend_summary

fn trend_summary(series : TimeSeries) -> TrendSummary

#
turnover_rate

fn turnover_rate(volume : Float, flow_rate : Float) -> Float

#
uncertainty

fn uncertainty(nominal : Float, lower : Float, upper : Float, confidence : Float) -> Uncertainty

#
uncertainty_quality_gate

fn uncertainty_quality_gate(values : Array[Uncertainty]) -> Bool

#
uncertainty_table

fn uncertainty_table(values : Array[Uncertainty]) -> ReportTable

#
unit_revenue

fn unit_revenue(price : Float, quantity : Float) -> Float

#
unlikely

fn unlikely() -> RiskLikelihood

#
upper_bound_rule

fn upper_bound_rule(code : String, field : String, limit : Float, severity : RuleSeverity) -> Rule

#
use_default

fn use_default() -> MissingPolicy

#
utility_load

fn utility_load(name : String, demand : Float, availability : Float, priority : Int) -> UtilityLoad

#
utility_load_table

fn utility_load_table(loads : Array[UtilityLoad]) -> ReportTable

#
utility_margin

fn utility_margin(loads : Array[UtilityLoad]) -> Float

#
validate_fields

fn validate_fields(fields : Array[DataField]) -> Array[String]

#
valve_design

fn valve_design(flow_coefficient : Float, pressure_drop : Float, density : Float, opening : Float, maximum_flow : Float) -> ValveDesign

#
vapor_state

fn vapor_state() -> PhaseState

#
vessel_design

fn vessel_design(volume : Float, liquid_volume : Float, design_pressure : Float, allowable_pressure : Float, design_temperature : Float, allowable_temperature : Float) -> VesselDesign

#
wall_layer

fn wall_layer(name : String, thickness_m : Float, conductivity_w_mk : Float) -> WallLayer

#
weighted_mean

fn weighted_mean(values : Array[Float], weights : Array[Float]) -> Float?

#
weighted_objective

fn weighted_objective(weights : Array[Float], offset : Float) -> WeightedObjective

#
weighted_pressure_drop

fn weighted_pressure_drop(lengths : Array[Float], drops : Array[Float]) -> Float

#
workflow_gate

fn workflow_gate(workflow : ReportWorkflow) -> Bool

#
workflow_step

fn workflow_step(name : String, owner : String, status : WorkflowStatus, note : String) -> WorkflowStep

#
worst_candidate

fn worst_candidate(candidates : Array[Candidate]) -> Candidate?