MEASUR Tools Suite

June 17, 2026 · View on GitHub

The MEASUR Tools Suite is a collection of industrial efficiency calculations written in C++ with WebAssembly bindings for browser and Node.js environments. The suite provides computational engines for the MEASUR (Manufacturing Energy Assessment Suite for Utility Reduction) application ecosystem.

Features

  • Native C++ Library: High-performance static library for desktop applications
  • WebAssembly Module: Cross-platform execution in browsers and Node.js
  • Industrial Calculations: Comprehensive tools for energy efficiency assessments including:
    • Compressed air systems
    • Motor-driven equipment (fans, pumps)
    • Process heating and cooling
    • Steam system modeling
    • Waste water treatment

Check out the Master List of MEASUR Calculators

Quick Start

Using npm Package

npm install measur-tools-suite

JavaScript

// Initialize module
const moduleFactory = (await import('/path/to/client.js')).default;
const toolsSuiteModule = await moduleFactory({
	locateFile: (filename) => '/path/to/client.wasm'
});

// Plain function call — returns a number directly
const totalHeatLoss = toolsSuiteModule.wallTotalHeatLoss(
	500, 80, 225, 10, 0.9, 1.394, 1
);
console.log('Wall total heat loss:', totalHeatLoss);

// Class-based API — always call delete() to free WASM memory
const doc = new toolsSuiteModule.DryerOperatingCost(1752, 50, 100, 24, 7, 52, 0.08, 0.2, 0.25);
const res = doc.calculate(toolsSuiteModule.DryerType.Heatless);
console.log('Water removed:', res.waterRemoved);
res.delete();
doc.delete();

TypeScriptMeasurToolsSuite is the fully-typed module instance; no casts needed.

import createModule, { type MeasurToolsSuite } from 'measur-tools-suite';

const toolsSuiteModule: MeasurToolsSuite = await createModule({
	locateFile: (filename) => '/path/to/client.wasm'
});

const doc = new toolsSuiteModule.DryerOperatingCost(1752, 50, 100, 24, 7, 52, 0.08, 0.2, 0.25);
const res = doc.calculate(toolsSuiteModule.DryerType.Heatless);
console.log('Water removed:', res.waterRemoved);
res.delete();
doc.delete();

Building from Source

# Native C++ build
cmake -S . -B build-cpp
cmake --build build-cpp

# WebAssembly build (requires Emscripten)
emcmake cmake -DBUILD_WASM=ON
emmake make

# Packaging
cmake -S . -B build-pkg -DBUILD_PACKAGE=ON -DBUILD_TESTING=OFF
cmake --build build-pkg --target package

See BUILD.md for detailed build instructions, testing, and Docker workflows.

Documentation

Project Documentation

  • BUILD.md - Complete build, test, and deployment guide
    • Native C++ builds (Linux, macOS, Windows)
    • WebAssembly compilation and usage
    • Docker containerized builds
    • Testing and packaging
  • ARCHITECTURE.md - System architecture, design decisions, and module organization
  • CONTRIBUTING.md - Contribution guidelines, code style, and documentation standards

How to Contribute

Contributions are welcome! Please refer to CONTRIBUTING.md for:

License

Copyright 2018, UT-Battelle, LLC. All rights reserved.

This project is licensed under an Open Source License (Permissive) by UT-Battelle, LLC. The license grants free, perpetual, worldwide, non-exclusive, royalty-free, irrevocable rights to use, copy, modify, merge, publish, distribute, and/or sublicense the software.

See LICENSE.txt for complete terms and conditions.