Optional ReadonlyallowedSalts the solver may use. Defaults to DEFAULT_SOLVER_SALTS.
Optional ReadonlydilutionRO/distilled share of the brewing water, 0–1. Defaults to 0.
Optional ReadonlydilutionScore penalty per unit of dilution fraction, in tolerance units. Defaults to 0.5, so replacing 90 % of the water with RO costs 0.45. That's enough to stop the solver sending you out for 25 litres of bottled water to shave an ion that was already inside its tolerance, but not enough to stop it diluting a source that has too many minerals. Only used when searchDilution is on.
Optional ReadonlydilutionWhat the dilution water is. Defaults to ion-free RO.
Optional ReadonlydilutionGrid points in the coarse dilution scan. Defaults to 19 (0.05 steps to 0.9).
Optional ReadonlyfewerScore penalty per salt used, in tolerance units. Defaults to 0.05.
Optional ReadonlymaxUpper bound on a searched dilution. Defaults to 0.9.
Optional ReadonlymaxMaximum number of distinct salts. Defaults to 3.
Optional ReadonlyminReject any salt whose dose is below this, grams. Defaults to 0.2.
Optional ReadonlyroundRound doses to this many grams. Defaults to 0.1, the resolution of a brewing scale.
Optional ReadonlysearchLet the solver choose the dilution too, by scanning a grid and then refining around the best point. Off by default, because most brewers have decided how much RO they're buying before they start.
ReadonlysourceWater as it comes out of the tap.
Optional ReadonlysplitWhere the salts go. Defaults to proportional.
ReadonlytargetProfile to aim at.
Optional ReadonlytolerancePer-ion tolerances, ppm. Merged over DEFAULT_ION_TOLERANCE_PPM.
ReadonlyvolumesMash and sparge volumes.
Optional ReadonlyweightsPer-ion weights. Merged over DEFAULT_ION_WEIGHTS. Set an ion to 0 to ignore it.
Input to solveWaterProfile.