Independent metal AM
The cost model, fully specified.
Production model 3.0.0. Pre-tax, positive present values represent costs. The interface supports nine working currencies as labels only; it performs no exchange-rate conversion.
Production and capacity
hours_per_attempt = volume / effective_rate + build_overhead / parts_per_build hours_per_good_part = hours_per_attempt / (1 − rejection_rate) available_hours = scheduled_hours × (1 − planned_downtime) − extra_maintenance machines = ceil(annual_accepted_parts × hours_per_good_part / available_hours)
The fleet is sized to steady annual demand. First-year ramp reduces quantity once in both ownership and outsourcing cash flows; it does not derate capacity again.
Attempted-part cost
material = purchased_powder_kg × powder_quote_per_kg gas = litres_per_minute × 60 × hours_per_attempt × price_per_litre electricity = typical_kW × hours_per_attempt × tariff task_labor = task_hours × loaded_hourly_rate marginal = (material + gas + electricity + consumables + task_labor + post_processing) / (1 − rejection_rate)
Purchased powder must at least equal part solid mass. Include supports and unrecovered losses in the measured powder input. Failure adjustment conservatively applies to all attempted-part costs. Salaried watch coverage is excluded from task labor.
Fixed costs and accounting
fixed = machines × (service + insurance + software) + facility + operator_salaries + quality_overhead depreciation = machines × (capex − end_of_life_residual) / life accounting_expense = operating_expense + depreciation + loan_interest
Facility, operator and quality inputs cover the whole fleet. Depreciation is excluded from cash outflow. Loan principal is excluded from accounting expense. Tax effects are not modeled.
Cash flows and financing
Cash purchase: time-zero payment is all-in capex for the entire fleet. Financing: time-zero payment is fleet down payment; monthly amortizing loan payments enter each year only until maturity. Any remaining principal is settled at the end of the planning horizon. The user’s explicit horizon resale estimate is credited then. Outsourcing setup is paid once at time zero.
present_value_cost = upfront + Σ annual_net_outflow / (1 + discount_rate)^year advantage_of_ownership = PV_outsource − PV_own
Positive advantage favors ownership. Differences within five percent of the larger absolute present-value cost are labeled close calls; this interface rule is not a confidence interval. The horizon must remain within the selected useful life.
Breakeven is local to a fleet
operating_crossing = fixed / (outsourced_unit_cost − marginal) accounting_crossing = (fixed + depreciation) / (outsourced_unit_cost − marginal)
The crossings use recurring steady-state costs, excluding one-time setup, financing payments and taxes. A nonpositive unit margin has no sustained operating crossing. Crossings beyond the fleet capacity are suppressed. These are not investment breakeven or a promise that ownership wins at every higher quantity; adding a machine creates another fixed-cost step.
Guardrails and rounding
Blank is never interpreted as zero. Inputs must be finite and within displayed ranges. Zero demand returns a no-purchase recommendation without division. No available capacity blocks calculation. Residual and resale values cannot exceed capex. Money is displayed in the user-selected working currency with standard currency formatting; calculations retain full floating precision. No exchange-rate conversion occurs, so every monetary input must use the same currency. Simple payback is an unlevered approximation; the recommendation uses the detailed discounted cash flows.
Guided and detailed interface
Guided mode hides advanced inputs until they are needed and never substitutes an unknown value with zero. Cash and loan purchases are modeled; lease economics and an undecided financing basis are deliberately refused rather than guessed. Itemized finishing costs can be summed into the same post-processing input used by the model.
Reproducibility
The source archive contains the original fixtures, a disposition for each legacy case, and separate production-model tests. Legacy expected values with known defects are not represented as passing production tests. Shared scenario links include a model version and must be reviewed again before calculation.
Run your own scenario →