A reusable report layer for MoonBit chemical-engineering calculations.
moon check --deny-warn
moon test --deny-warn
moon run cmd/main///|
let r = report(
"CSTR A-101 Mass Balance",
summary="A stable report record for a reactor inlet/outlet balance.",
inputs=[
input(
"feed flow",
quantity("100.0", "kmol/h"),
note="measured at battery limit",
),
],
assumptions=[assumption("steady state", "accumulation term is zero")],
formulas=[formula("A in", "F_A,in = F_feed * z_A", ["F_feed", "z_A"])],
results=[
result("A feed", quantity("42.0", "kmol/h"), procedure="100.0 * 0.42"),
],
warnings=[caution("conversion target should be reconciled before scale-up")],
sources=[source("design basis", "internal design basis document")],
)
///|
let markdown = r.to_markdown()
///|
let html = r.to_html_document()
///|
let json = r.to_json()moon fmt --check
moon check --deny-warn
moon info
moon test --deny-warnpub struct ChemReport {
title : String
summary : String
inputs : Array[ChemInput]
assumptions : Array[Assumption]
formulas : Array[Formula]
results : Array[ChemResult]
warnings : Array[ReportWarning]
sources : Array[DataSource]
} derive(Eq, Debug)fn report(title : String, summary? : String, inputs? : Array[ChemInput], assumptions? : Array[Assumption], formulas? : Array[Formula], results? : Array[ChemResult], warnings? : Array[ReportWarning], sources? : Array[DataSource]) -> ChemReportA reusable report layer for MoonBit chemical-engineering calculations.