Source code for watertap.tools.oli_api.util.fixed_keys_dict

#################################################################################
# WaterTAP Copyright (c) 2020-2023, The Regents of the University of California,
# through Lawrence Berkeley National Laboratory, Oak Ridge National Laboratory,
# National Renewable Energy Laboratory, and National Energy Technology
# Laboratory (subject to receipt of any required approvals from the U.S. Dept.
# of Energy). All rights reserved.
#
# Please see the files COPYRIGHT.md and LICENSE.md for full copyright and license
# information, respectively. These files are also available online at the URL
# "https://github.com/watertap-org/watertap/"
#
#################################################################################

__author__ = "Paul Vecchiarelli, Ben Knueven"

from collections import UserDict


[docs]class FixedKeysDict(UserDict):
[docs] def __init__(self, d): self.data = d
def __setitem__(self, k, v): if k not in self.data: raise RuntimeError(f" Key {k} not in dictionary.") else: self.data[k] = v def __delitem__(self, k): raise Exception(" Deleting keys not supported for this object.") def _check_value(self, k, valid_values): if k not in self.data: raise RuntimeError(f" Key {k} not in dictionary.") else: if self.data[k] not in valid_values: raise RuntimeError( f" Value {self.data[k]} not a valid value for key {k}." ) def pprint(self): print("-------------------------") for key, value in self.data.items(): print(f" {key}\n - {value}\n")
default_oli_input_dict = FixedKeysDict( { "temperature_unit": "K", # units "pressure_unit": "Pa", "concentration_unit": "mg/L", "gas_fraction_unit": "mole %", "alkalinity_unit": "mg HCO3/L", "tic_unit": "mol C/L", # essential input parameters for water analysis "electroneutrality_value": "DominantIon", "reconciliation_value": "EquilCalcOnly", "AllowSolidsToForm": False, "CalcAlkalnity": False, # optional inputs # required for certain specifications "MakeupIonBaseTag": None, "CO2GasFraction": None, "pH": None, "PhAcidTitrant": "HCL", "PhBaseTitrant": "NAOH", "Alkalinity": None, "AlkalinityPhTitrant": None, "AlkalinityTitrationEndPointPh": None, "TIC": None, } ) # Full list of available optional inputs available: https://devdocs.olisystems.com/optional-inputs default_oli_optional_properties = FixedKeysDict( { "scalingIndex": False, "prescalingTendencies": False, "prescalingTendenciesRigorous": False, "scalingTendencies": False, "MBGComposition": True, "materialBalanceGroup": True, } ) default_oli_unit_set_info = FixedKeysDict( { "enthalpy": "J", "mass": "kg", "pt": "Pa", "total": "mg", "liq1_phs_comp": "mg", "solid_phs_comp": "mg", "vapor_phs_comp": "mg", "liq2_phs_comp": "mg", "combined_phs_comp": "mg", "molecularConcentration": "mg/L", } )