130 lines
4.2 KiB
Python
130 lines
4.2 KiB
Python
from .database import *
|
|
|
|
_key_map_23 = {
|
|
'UNITS' : 'FLOW_UNITS',
|
|
'PRESSURE' : 'PRESSURE_UNITS',
|
|
'HEADLOSS' : 'HEADLOSS_MODEL',
|
|
'QUALITY' : 'QUALITY_MODEL',
|
|
'UNBALANCED' : 'IF_UNBALANCED',
|
|
'PATTERN' : 'DEMAND_PATTERN',
|
|
'DEMAND MODEL' : 'DEMAND_MODEL',
|
|
'DEMAND MULTIPLIER' : 'DEMAND_MULTIPLIER',
|
|
'EMITTER EXPONENT' : 'EMITTER_EXPONENT',
|
|
'VISCOSITY' : 'SPECIFIC_VISCOSITY',
|
|
'DIFFUSIVITY' : 'SPECIFIC_DIFFUSIVITY',
|
|
'SPECIFIC GRAVITY' : 'SPECIFIC_GRAVITY',
|
|
'TRIALS' : 'MAXIMUM_TRIALS',
|
|
'ACCURACY' : 'RELATIVE_ACCURACY',
|
|
#'HEADERROR' : '',
|
|
'FLOWCHANGE' : 'FLOW_CHANGE_LIMIT',
|
|
'MINIMUM PRESSURE' : 'MINIMUM_PRESSURE',
|
|
'REQUIRED PRESSURE' : 'SERVICE_PRESSURE',
|
|
'PRESSURE EXPONENT' : 'PRESSURE_EXPONENT',
|
|
'TOLERANCE' : 'QUALITY_TOLERANCE',
|
|
'HTOL' : 'HEAD_TOLERANCE',
|
|
'QTOL' : 'FLOW_TOLERANCE',
|
|
#'RQTOL' : '',
|
|
#'CHECKFREQ' : '',
|
|
#'MAXCHECK' : '',
|
|
#'DAMPLIMIT' : '',
|
|
}
|
|
|
|
|
|
_key_map_32 = {
|
|
'FLOW_UNITS' : 'UNITS',
|
|
'PRESSURE_UNITS' : 'PRESSURE',
|
|
'HEADLOSS_MODEL' : 'HEADLOSS',
|
|
'SPECIFIC_GRAVITY' : 'SPECIFIC GRAVITY',
|
|
'SPECIFIC_VISCOSITY' : 'VISCOSITY',
|
|
'MAXIMUM_TRIALS' : 'TRIALS',
|
|
'HEAD_TOLERANCE' : 'HTOL',
|
|
'FLOW_TOLERANCE' : 'QTOL',
|
|
'FLOW_CHANGE_LIMIT' : 'FLOWCHANGE',
|
|
'RELATIVE_ACCURACY' : 'ACCURACY',
|
|
#'TIME_WEIGHT' : '',
|
|
#'STEP_SIZING' : '',
|
|
'IF_UNBALANCED' : 'UNBALANCED',
|
|
'DEMAND_MODEL' : 'DEMAND MODEL',
|
|
'DEMAND_PATTERN' : 'PATTERN',
|
|
'DEMAND_MULTIPLIER' : 'DEMAND MULTIPLIER',
|
|
'MINIMUM_PRESSURE' : 'MINIMUM PRESSURE',
|
|
'SERVICE_PRESSURE' : 'REQUIRED PRESSURE',
|
|
'PRESSURE_EXPONENT' : 'PRESSURE EXPONENT',
|
|
#'LEAKAGE_MODEL' : '',
|
|
#'LEAKAGE_COEFF1' : '',
|
|
#'LEAKAGE_COEFF2' : '',
|
|
'EMITTER_EXPONENT' : 'EMITTER EXPONENT',
|
|
'QUALITY_MODEL' : 'QUALITY',
|
|
#'QUALITY_NAME' : '',
|
|
#'QUALITY_UNITS' : '',
|
|
#'TRACE_NODE' : '',
|
|
'SPECIFIC_DIFFUSIVITY' : 'DIFFUSIVITY',
|
|
'QUALITY_TOLERANCE' : 'TOLERANCE'
|
|
}
|
|
|
|
|
|
def generate_v2(cs: ChangeSet) -> ChangeSet:
|
|
op = cs.operations[0]
|
|
|
|
if op['type'] == 'option':
|
|
return cs
|
|
|
|
map = _key_map_32
|
|
|
|
cs_v2 = {}
|
|
for key in op:
|
|
if key == 'operation' or key == 'type':
|
|
continue
|
|
|
|
if key in map.keys():
|
|
if key != 'QUALITY_MODEL' and key != 'DEMAND_MODEL':
|
|
cs_v2 |= { map[key] : op[key] }
|
|
elif key == 'QUALITY_MODEL':
|
|
if str(op[key]).upper() == 'TRACE' and 'TRACE_NODE' in op.keys():
|
|
cs_v2 |= { map[key] : f"TRACE {op['TRACE_NODE']}" }
|
|
else:
|
|
cs_v2 |= { map[key] : str(op[key]).upper() }
|
|
elif key == 'DEMAND_MODEL':
|
|
if op[key] == 'FIXED':
|
|
cs_v2 |= { map[key] : 'DDA' }
|
|
else:
|
|
cs_v2 |= { map[key] : 'PDA' }
|
|
|
|
if len(cs_v2) > 0:
|
|
cs_v2 |= g_update_prefix | { 'type' : 'option' }
|
|
return ChangeSet(cs_v2)
|
|
|
|
return ChangeSet()
|
|
|
|
|
|
def generate_v3(cs: ChangeSet) -> ChangeSet:
|
|
op = cs.operations[0]
|
|
|
|
if op['type'] == 'option_v3':
|
|
return cs
|
|
|
|
map = _key_map_23
|
|
|
|
cs_v3 = {}
|
|
for key in op:
|
|
if key == 'operation' or key == 'type':
|
|
continue
|
|
|
|
if key in map.keys():
|
|
if key != 'QUALITY' and key != 'DEMAND MODEL':
|
|
cs_v3 |= { map[key] : op[key] }
|
|
elif key == 'QUALITY':
|
|
tokens = str(op[key]).split()
|
|
if len(tokens) >= 1:
|
|
cs_v3 |= { map[key] : tokens[0].upper() }
|
|
if tokens[0].upper() == 'TRACE' and len(tokens) >= 2:
|
|
cs_v3 |= { 'TRACE_NODE' : tokens[1] }
|
|
elif key == 'DEMAND MODEL':
|
|
cs_v3 |= { map[key] : 'POWER' }
|
|
|
|
if len(cs_v3) > 0:
|
|
cs_v3 |= g_update_prefix | { 'type' : 'option_v3' }
|
|
return ChangeSet(cs_v3)
|
|
|
|
return ChangeSet()
|