Technical Manual · Ops Cost Engine
DC MOC — Methodology & Formulas
Every input, equation, constant, output, and reference behind the DC MOC PRO SPA: CAPEX build-up, OPEX (energy + staffing + maintenance), shift/staffing optimisation, Monte Carlo P-value bands, and executive PDF export. The engine delegates most of its maths to RZEngine v2.5.1 (rz-engine.min.js) while DCMOC-finer CAPEX bases live in dcmoc/src/lib/capex-data.ts (A7 2025 rates) and the Cx program in RZEngine.models.commissioning.programRich/monteCarlo.
01 Purpose & engineering basis
DC MOC (Data-Centre Management & Ops Cost) is a PRO-tier Next.js static-export SPA that answers five operator questions in a single instrument surface: what will this facility cost to build (CAPEX), what will it cost to run per year (OPEX), how should operations be staffed across shifts, what is the probabilistic range of commissioning cost (Monte Carlo), and how is this summarised for executive sign-off (PDF export). Access is governed by the site-wide auth-tier matrix at the PRO level.
The mathematical basis is deterministic-by-default: every KPI is sourced from a locked constant or a formula anchored to a published standard, cost index, or RZEngine DATA entry. Monte Carlo randomness is seeded where stochastic output is needed and produces reproducible results. The tool is an engineering pre-design aid and Class 4 budgetary estimate (AACE 18R-97); detailed engineering procurement must follow.
The SPA consumes two shared engines loaded at page root as deferred scripts: /rz-engine.min.js (exposes window.RZEngine + window.RZEngine.DATA) and the DCMOC TypeScript bundle. During Next.js SSR prerender, dcmoc/src/lib/rz-engine.ts eval-requires the CommonJS engine from the repo root so that server-rendered and client values agree with zero hydration mismatch.
02 Inputs
Fourteen primary inputs span five groups — project identity, site/location, electrical system, cooling/mechanical, and staffing. Additional advanced fields (seismic zone, substation type, green certification, renewable option, deep-sea cooling parameters) unlock in PRO mode. All ranges are enforced client-side; missing optional fields fall back to engine defaults.
| Field | Symbol / key | Unit | Range / default | Meaning & engine path |
|---|---|---|---|---|
| IT load | itLoad | kW | ≥ 100 · default 2 000 | Installed IT power; drives every per-kW cost, FTE, and energy calculation. |
| Country / location | country.id / location | ISO-2 / key | 40 countries | Priority: country.constructionIndex (T&T ICMS/RLB rel. US=1.0) → cityData[cityMarket].perW → legacy locationMultipliers. Sets effectiveRegion for permit and energy rates. |
| City market | cityMarket | enum | 'none' or 40+ cities | Overrides country $/W with a city-level anchor (e.g. Tokyo 15.20 $/W, Jakarta 11.21 $/W). Source: T&T 2025, C&W 2025. |
| Building type | buildingType | enum | warehouse / modular / purpose / highrise | Multiplier on civil + commissioning duration: warehouse 0.70×, purpose 1.00×, highrise 1.40×. |
| Cooling type | coolingType | enum | air / inrow / rdhx / liquid | Scales cooling category cost (air 1.0×, liquid 1.6×) and sets PUE via getPUE(coolingType). |
| Redundancy | redundancy | enum | n / n1 / 2n / 2n1 | Applied to electrical, UPS, and generator categories; multipliers: N 1.00×, N+1 1.25×, 2N 1.85×, 2N+1 2.10×. |
| Rack class | rackType | enum | standard / medium / high / ai | Scales electrical category (ai 1.6×) and sets rack density (6 / 12.5 / 25 / 75 kW per rack). |
| UPS type | upsType | enum | standalone / modular / distributed / rotary | Multiplier on UPS base cost: standalone 0.90×, distributed 1.20×, rotary 1.50×. |
| Generator type | genType | enum | diesel / gas / dualfuel / hvo | Multiplier on generator base: diesel 1.00×, gas 1.15×, dual-fuel 1.30×. |
| Fuel hours | fuelHours | h | ≥ 0 · default 24 | Fuel storage adder: fuelMult = 1 + (fuelHours − 24) × 0.008. |
| Project year | projYear | year | 2024–2030 | Escalation factor from yearEscalation[year] (T&T / JLL 2026 forward escalation). |
| Design fee / PM fee / contingency | designFee / pmFee / contingency | % | 1–15 / 1–10 / 5–25 | Applied to total hard cost as soft-cost layers, then contingency as final percentage adder. |
| Staff model | staffModelKey | enum | inhouse / hybrid70 / hybrid50 / outsourced | Sets ftePerMW (4.2 / 3.8 / 3.5 / 3.0) and cost multiplier in the ops-budget model. |
| PM ratio / retention | pmRatio / retention | % | 0–100 each | PM ratio reduces maintenance budget via savings slope (0.30 per % above 50% baseline); retention drives attrition cost and burnout probability. |
03 Calculation methodology
Five calculation layers run in sequence. Function names and file paths map one-to-one to the source noted in each formula block.
3.1 CAPEX build-up
calculateCapex() — dcmoc/src/lib/CapexEngine.ts. Base costs ($/kW) from dcmoc/src/lib/capex-data.ts (A7 2025 rates: T&T DCCI 2025 + C&W 2025 + JLL 2026). Location priority: country.constructionIndex (T&T ICMS/RLB rel. US=1.0) → cityData[city].perW / 4.65 → legacy map. Multiplier tables: engine DATA.capexDetail.* first; DCMOC local capex-data.ts as fallback per SUPER_ENGINE.md §Z.3.capexDetail · T&T 2025
3.2 PUE & timeline
3.3 OPEX — total annual cost
RZEngine.models.opex.totalAnnual(MW, pue, region, headcount, {capex, basisPreset:'dcContract'}). DC-contract preset: util=1.0 (100% committed capacity). Diverges from the standalone opex-calculator which uses basisPreset:'retailScreening' (util=0.70). Water: WUE × itKWh / 1 000 × $/m³[region]. Carbon: facilityKWh × gridFactor[region] × carbonPrice[region]. Insurance: capex × 0.5%. Connectivity: MW × 80 000 $/MW.opex · carbon · water · engine-catalog
3.4 Shift & staffing optimisation
RZEngine.models.opsBudget.opex(inp) + .staffing(inp, opex). Staff models and their ftePerMW/costMult/qualityMult live in DATA.opsBudget.staffModels. Country labor rates and energy tariffs live in DATA.opsBudget.countries. SRI = Staffing Resilience Index. SPOF = single-point-of-failure count. Burnout logistic k=0.12 from occupational-health literature; replacement cost 1.5× from SHRM 2024.opsBudget · engine-catalog
3.5 Commissioning program & Monte Carlo
RZEngine.models.commissioning.programRich(input) + .monteCarlo(input, opts). Input is normalised via .mapInput() which fills 30-field rich schema from DCMOC store slice. 30 regional day-rate cards (us_virginia, eu_west, sea, jp, etc.) in DATA.commissioning.cx.rich.rates. Source: ASHRAE Guideline 0 / BCxA / NETA ECS scope; Uptime IST scenario counts.commissioning.cx · engine-catalog
3.6 General Monte Carlo driver (sim.monteCarlo)
RZEngine.models.sim.monteCarlo(fn, distributions, iterations, seed, opts). Default seed 123 456 789 for reproducibility. Also available: sim.tornado() (one-at-a-time swing, ranked by |swing|) and sim.sensitivityGrid() (2-D heat map).sim · engine-catalog
04 Constants & data sources
All constants are deep-frozen in RZEngine.DATA (loaded from rz-engine.min.js) or in dcmoc/src/lib/capex-data.ts (DCMOC-finer A7 2025 bases). Key tables:
CAPEX base cost factors — A7 2025 rates
| Category | Base ($/kW) | Dimensional multipliers applied | Source |
|---|---|---|---|
| Building & Civil | 1 050 | buildingType, locMult, yearMult | T&T 2025 / C&W 2025 |
| Seismic Protection | 130 | seismicMult (zone0 0.2× … zone4 8.0×) | T&T 2025 |
| Electrical (MV/LV) | 1 550 | redMult × rackMult × upsMult | T&T 2025 (A7 — NOT merged with engine's 1 200 $/kW) |
| UPS Systems | 780 | upsMult (standalone 0.9× … rotary 1.5×) | T&T 2025 |
| Generator & Fuel | 520 | genMult × fuelMult | T&T 2025 |
| Cooling Systems | 900 | coolMult (air 1.0× … liquid 1.6×) | T&T 2025 |
| Fire Suppression | 195 | fireSupMult (water 0.6× … N₂ 1.8×) | T&T 2025 |
| Fire Alarm System | 105 | alarmMult (conventional 0.6× … hybrid 2.2×) | T&T 2025 |
| BMS / DCIM | 160 | locMult, yearMult | T&T 2025 |
| Network Infra | 325 | locMult, yearMult | T&T 2025 |
| Security Systems | 105 | locMult, yearMult | T&T 2025 |
| Cx Agent & Startup | 155 | locMult, yearMult | T&T 2025 |
| Testing & Compliance | 115 | testingRedundancyMult, locMult | T&T 2025 |
| Permits & Approvals | 80 | permitRegionMult[effectiveRegion] | T&T 2025 |
Location multipliers (fallback; priority = constructionIndex)
| Region key | locMult (rel. US=1.0) | Representative city $/W (T&T 2025) |
|---|---|---|
| usa | 1.00 | Virginia 13.40 · Silicon Valley 13.30 · Dallas 14.30 |
| europe | 1.15 | London 12.00 · Frankfurt 11.60 · Amsterdam 11.80 |
| japan | 1.10 | Tokyo 15.20 |
| australia | 1.05 | Sydney 12.30 |
| south_korea | 0.95 | Seoul 9.50 |
| sea | 0.65 | Singapore 14.53 · Malaysia 11.37 · Jakarta 11.21 |
| china | 0.70 | Hong Kong 13.80 |
| india | 0.55 | Mumbai 6.64 |
| mena | 0.85 | Dubai 10.50 · Riyadh 9.20 |
| africa | 0.55 | Johannesburg 7.50 · Nairobi 7.20 |
| south_america | 0.60 | São Paulo 8.50 |
Staffing & OPEX constants
| Constant | Value | Source |
|---|---|---|
| Shift multiplier | 4.2× | Uptime critical-facilities staffing benchmark |
| Labor burden | 1.35× | Benefits + payroll tax + overhead |
| Maintenance base | $180 000 /MW·yr | DC industry comprehensive maintenance benchmark |
| PM savings slope | 0.30 per % above 50% PM baseline | Engine heuristic |
| Burnout logistic k | 0.12, mid-point 88% utilization | Occupational-health literature |
| Replacement cost factor | 1.5× annual salary | SHRM 2024 |
| FTE/MW — in-house | 4.2 | Uptime Institute critical-DC staffing norm |
| FTE/MW — hybrid 70/30 | 3.8 | Engine staffModels |
| FTE/MW — hybrid 50/50 | 3.5 | Engine staffModels |
| FTE/MW — outsourced | 3.0 | Engine staffModels |
| Cx itLoad perturbation σ | 7.5% (Normal) | Monte Carlo commissioning model, engine |
| Cx cost noise σ | 5%, clamped [0.85, 1.15] | Monte Carlo commissioning model, engine |
05 Outputs
| Output | Formula / source | Unit | Surface in DC MOC |
|---|---|---|---|
| CAPEX total | CAPEX_total = Σ costs[c] + soft + contingency [+FOM] | USD | CAPEX module KPI card + PDF §1 |
| CAPEX $/kW | CAPEX_total / itLoad | $/kW | CAPEX efficiency chip; narrative band (Low <$8 k · Standard <$15 k · Premium) |
| CAPEX by category | All 14 costs[c] | USD each | Waterfall / donut chart |
| PUE | getPUE(coolingType) | ratio | PUE chip; drives energy and OPEX |
| Timeline (months) | computeTimeline() | months | Gantt timeline module |
| Floor space / rack count | ceil(racks × 2.5 m²) | m² / count | Capacity module metrics |
| OPEX total annual | models.opex.totalAnnual() | USD/yr | Financial module OPEX card + PDF §2 |
| OPEX breakdown | power · staffing · contract · maintenance · overhead | USD/yr each | OPEX donut chart; YTD = total ÷ 12 × months since COD |
| Shift FTE / utilization | models.opsBudget.opex() + .staffing() | count / % | Staffing module headcount card |
| Burnout probability | logistic(util, k=0.12, mid=88) | % | Staffing resilience gauge |
| Staffing Resilience Index | SRI weighted composite (0–100) | score | SRI chip with colour band |
| Cx program cost (P50) | models.commissioning.programRich().grand | USD | Commissioning module cost band |
| Cx Monte Carlo P5/P25/P50/P75/P95 | models.commissioning.monteCarlo(), N=10 000 | USD | Histogram with marker lines; CVaR95 shown |
| Cx sensitivity tornado | models.commissioning.sensitivity(), 7 params | USD swing | Tornado chart sorted by |swing| |
| Executive PDF | ReportNarrative engine (16-family) → browser print-window | multi-page PDF | PRO export button — all KPIs + charts + provenance |
06 Worked example
A 2 000 kW Tier III purpose-built data centre in Jakarta (DCMOC city market: jakarta, $/W anchor 11.21 T&T 2025), N+1 redundancy, in-row cooling, standard racks, modular UPS, diesel generator, 24 h fuel, 2026 build year, 30 FTE in-house staff, 60% PM ratio, 85% retention. Values computed from source constants — engine cannot be require()-called in this static doc, so the trace below follows the exact formula path from source.
- Location multiplier — city market jakarta overrides country index:
perW = 11.21 $/W → locMult = 11.21 / 4.65 =2.411 (relative to the US base of 4.65 $/W used as normalisation anchor in CapexEngine city-data logic). - Key dimensional multipliers — redundancy N+1
1.25×; cooling in-row1.20×; rack standard1.00×; UPS modular1.00×; building purpose1.00×; seismic default zone22.50×(seismically active Indonesia); year 2026 escalation (est.)≈1.03×. - Electrical cost (dominant category):
1 550 $/kW × 2 000 kW × (1.25 × 1.00 × 1.00) × 2.411 × 1.03 ≈$9.64 M. - Cooling cost:
900 × 2 000 × 1.20 × 2.411 × 1.03 ≈$5.36 M. - Building cost:
1 050 × 2 000 × 1.00 × 2.411 × 1.03 ≈$5.22 M. - Total hard cost (all 14 categories aggregated): approximately ~$32–34 M (sum of 14 category lines with their respective multipliers).
- Soft costs at design 6% + PM 3%:
totalHard × 0.09 ≈~$2.9–3.1 M. - Contingency at 10%:
(totalHard + soft) × 0.10 ≈~$3.5 M. CAPEX total ~$38–40 M → ~$19–20 k/kW (Premium bracket — driven by Jakarta city anchor and N+1 redundancy). - PUE (in-row cooling):
getPUE('inrow') ≈1.35. - Annual energy:
2 000 kW × 1.35 × 8 760 h × 0.099 $/kWh (ID grid rate) ≈$2.35 M/yr. - Staffing OPEX: in-house, base FTE =
ceil(2 MW × 4.2) = 9; shift FTE =ceil(9 × 4.2) = 38; burdened rate ~$17 k/FTE (ID rate $12 k × 1.35); labor budget ≈38 × 17 000 × 1.00 =~$0.65 M/yr. - Maintenance:
2 MW × $180 000 × tropFactor(1.08) × pmEfficiency(0.70) =~$0.27 M/yr (PM 60%, savings slope reduces from base). - OPEX total (core): power + staffing + contract + maintenance + overhead ≈ ~$3.5–4 M/yr.
- Burnout probability: util ≈
78 + 2×0.12 = 78.24%; logistic(78.24, k=0.12, mid=88) ≈ ~23%. - Cx commissioning P50 (programRich): for 2 000 kW N+1 in-row purpose-build in SEA region, budgetary range ~$0.9–1.4 M (Monte Carlo P25–P75 band). P95 ≈ ~$1.8 M.
CapexEngine.ts and capex-data.ts. The node eval-require of rz-engine.js is available in DCMOC's build process but not in this static HTML context. The Jakarta locMult derivation from city $/W anchor follows the calculateCapex city-data branch. Final totals will differ slightly from live engine output due to the seismic default zone and the complete 14-category sum — open the live DC MOC for exact figures.07 References & standards
- T&T DCCI 2025 — Turner & Townsend Data Center Construction Cost Index 2025: per-city $/W anchor table (Singapore 14.53, Tokyo 15.20, Jakarta 11.21, London 12.00 …); country construction indices. Primary CAPEX cost anchor.
- C&W 2025 — Cushman & Wakefield DC Cost Guide 2025: US city $/W checks (Virginia 13.40, Dallas 14.30, San Antonio 9.30); supplementary to T&T.
- JLL 2026 — JLL Data Center Construction Cost 2025–2026: forward escalation and phase premium (~12% per phase). Year-escalation multipliers in engine.
- AACE 18R-97 — Cost Estimate Classification System: DC MOC CAPEX is a Class 4 budgetary estimate (−30/+50% accuracy range). Class 5 (-50/+100%) when fewer than 5 inputs are defined.
- ASHRAE TC9.9 (5th Ed., 2021) — Thermal Guidelines for Data Processing Environments: A1–A4 air-class and H1 liquid supply-temperature envelopes; ΔT limits driving PUE bands.
- Uptime Institute Tier Standard: Topology 2022 — T1–T4 redundancy path definition; Tier availability targets (99.671% … 99.995%); IST scenario counts driving Cx level-5 duration.
- ANSI/TIA-942-C (2024) — Rated-1 … Rated-4 DC infrastructure classifications; topology cross-reference for DCMOC architecture module.
- ASHRAE Guideline 0-2019 — The Commissioning Process: Cx level definitions (L0 pre-design … L6 post-occupancy) that map to the engine's Cx duration model.
- BCxA / NETA ECS — Building Commissioning Association and National Electrical Testing Association scope benchmarks; calibrate the Cx base day-rate cards and level cost ratios.
- ISA-18.2 / EEMUA-191 — Alarm management targets (≤1 alarm/10 min/operator; flood ≥10 alarms/10 min; actionable ≥85%) embedded in
RZEngine.models.alarms. - SHRM 2024 — Employee replacement cost 150% of annual salary; feeds
retentionCostin the staffing resilience model. - IEA 2026 + Ember — Grid carbon intensity by country in
DATA.carbon.gridFactor; ICAP carbon prices inDATA.carbon.carbonPrice. Drive extended-OPEX carbon line. - Engine source —
rz-engine.js(RZEngine v2.5.1, DATA v2.5.1) ·dcmoc/src/lib/CapexEngine.ts·dcmoc/src/lib/capex-data.ts·dcmoc/src/lib/engine-catalog.json(200 functions / 105 sources, AUTO-GENERATED).
08 Assumptions & limitations
CAPEX is a Class 4 budgetary estimate (AACE 18R-97) with ±30–50% accuracy. It is not a detailed cost plan and must not be used for contract tendering without a full bottom-up quantity take-off by a qualified cost estimator. Key assumptions:
CAPEX: The 14-category base costs are 2025 market rates calibrated to the T&T / C&W city-anchor tables. The DCMOC A7 2025 electrical base (1 550 $/kW) is deliberately NOT merged with the shared engine's 1 200 $/kW model — both are documented in engine-catalog provenance as a justified divergence (different model shapes). Seismic multiplier defaults to zone 2 (moderate seismicity) when not specified. Green certification and renewable options add premium costs not captured in the base categories — handled via renewableCost adder. FOM (Facilities of Merit — substation, grid connection, switchgear) is an optional line that requires project-specific utility quotes to confirm.
OPEX: DC-contract utilisation basis assumes 100% committed capacity at all times (not a measured blended utilisation). Energy price is the regional benchmark rate from DATA.regions[*].powerKwh — actual tariff structures (TOU, demand charges, PPA) can be overridden via advanced inputs. Maintenance requires a CAPEX basis; the model computes zero maintenance if no capex is provided.
Staffing / shift: The 4.2× shift multiplier is an Uptime-benchmarked industry norm for critical-facility 24/7 coverage. Actual headcount will vary with site complexity, automation level, and local labour regulations. The Staffing Resilience Index (SRI) is a screening heuristic — it is not a certified HR assessment tool.
Monte Carlo: The commissioning Monte Carlo perturbs only IT load (±7.5%) and a scalar cost noise (±5%). It does not model schedule risk, vendor variation, or supply-chain disruptions. For project-level risk analysis a full probabilistic schedule with correlated distributions is required. The sim.monteCarlo pairwise-correlation implementation is exact for two independent pairs; chained pairs introduce implicit transitive correlation — use disjoint pairs only.
PDF export: The executive PDF is generated via the browser print-window (ReportNarrative engine). Chart rasterisation fidelity depends on the browser renderer; vector PDF export is not supported in the current release. This manual and the DC MOC tool are an engineering education and pre-design aid; financial investment decisions must engage qualified engineers, cost consultants, and financial advisers.