Page actions
instrument mechanism / verified-clean
Porosity Calculator mechanism
The inspectable method record for Porosity Calculator, kept separate from implementation and qualification.
Model scope
The density relationship is standard for particle and bulk density, but the specification is not correct as written for a percentage output because it omits the ×100 conversion. The instrument should label whether it returns the fraction n or porosity in percent. The grain-density reference table must identify mineral assumptions and units; a single typical value is not valid for all rocks and soils.
- The density formula n = 1 - (ρ_bulk/ρ_grain) returns porosity as a dimensionless fraction, but the stated output is porosity (%); the implementation must multiply by 100 for a percentage.
- The two formulas use inconsistent output conventions: the volume formula explicitly multiplies by 100, while the density formula does not.
- The density formula requires positive densities and 0 < ρ_bulk <= ρ_grain for physically valid porosity between 0% and 100%; these constraints are not stated.
Units and conventions
- Bulk and grain densities must use the same mass and volume units before taking their ratio, such as both in g/cm³ or both in kg/m³.
- Void volume and total volume must use the same volume units.
- Porosity is reported as a percentage from 0% to 100%; the intermediate n is a fraction from 0 to 1.
- Reference grain densities depend on mineral composition; a quartz value of 2.65 g/cm³ is an assumption, not a universal rock or soil grain density.
Inspectable vector
One of 4 source-bound review vectors:
{
"inputs": {
"method": "density",
"bulk_density": 1.6,
"bulk_density_unit": "g/cm³",
"grain_density": 2.65,
"grain_density_unit": "g/cm³"
},
"expected_outputs": {
"porosity_percent": 39.62264151
},
"working": "n = 1 - (ρ_bulk/ρ_grain) = 1 - (1.60/2.65) = 1 - (160/265) = 1 - (32/53) = 21/53 = 0.3962264151. Porosity = 0.3962264151 × 100 = 39.62264151%."
}Failure boundary
BREAK_CLAIMED · SELF_FLAGGED
The grain-density-zero input produces an undefined division, so the instrument must reject it. The specification does not state input validation behavior; a plain arithmetic implementation could emit Infinity or -Infinity instead of an explicit error.
Other records
Sources and evidence
These pointers bind the page to evidence. They do not grant authority or collapse verification into deployment.
VERIFIED_LEDGER.jsonevidence-tranche5/tranche5-results.jsonBOUNDARY_HAZARD_CATALOG.json