예제 #1
0
파일: elegant.py 프로젝트: mrakitin/sirepo
def get_application_data(data):
    if data["method"] == "rpn_value":
        value, error = elegant_lattice_importer.parse_rpn_value(data["value"], data["variables"])
        if error:
            data["error"] = error
        else:
            data["result"] = value
        return data
    if data["method"] == "recompute_rpn_cache_values":
        for k in data["cache"]:
            value, error = elegant_lattice_importer.parse_rpn_value(k, data["variables"])
            if not error:
                data["cache"][k] = value
        return data
    raise RuntimeError("unknown application data method: {}".format(data["method"]))
예제 #2
0
파일: elegant.py 프로젝트: arboret/sirepo
def get_application_data(data):
    if data['method'] == 'rpn_value':
        value, error = elegant_lattice_importer.parse_rpn_value(data['value'], data['variables'])
        if error:
            data['error'] = error
        else:
            data['result'] = value
        return data
    if data['method'] == 'recompute_rpn_cache_values':
        for k in data['cache']:
            value, error = elegant_lattice_importer.parse_rpn_value(k, data['variables'])
            if not error:
                data['cache'][k] = value
        return data
    raise RuntimeError('unknown application data method: {}'.format(data['method']))
예제 #3
0
def _iterator_rpn_values(state, model, element_schema=None, field_name=None):
    if element_schema:
        if element_schema[
                1] == 'RPNValue' and elegant_lattice_importer.is_rpn_value(
                    model[field_name]):
            v, err = elegant_lattice_importer.parse_rpn_value(
                model[field_name], state['rpnVariables'])
            if not err:
                state['cache'][model[field_name]] = v
예제 #4
0
파일: elegant.py 프로젝트: mrakitin/sirepo
def prepare_for_client(data):
    if "models" not in data:
        return data
    # evaluate rpn values into model.rpnCache
    cache = {}
    data["models"]["rpnCache"] = cache
    state = {"cache": cache, "rpnVariables": data["models"]["rpnVariables"]}
    _iterate_model_fields(data, state, _iterator_rpn_values)

    for rpn_var in data["models"]["rpnVariables"]:
        v, err = elegant_lattice_importer.parse_rpn_value(rpn_var["value"], data["models"]["rpnVariables"])
        if not err:
            cache[rpn_var["name"]] = v
            if elegant_lattice_importer.is_rpn_value(rpn_var["value"]):
                cache[rpn_var["value"]] = v
    return data
예제 #5
0
파일: elegant.py 프로젝트: arboret/sirepo
def prepare_for_client(data):
    if 'models' not in data:
        return data
    # evaluate rpn values into model.rpnCache
    cache = {}
    data['models']['rpnCache'] = cache
    state = {
        'cache': cache,
        'rpnVariables': data['models']['rpnVariables'],
    }
    _iterate_model_fields(data, state, _iterator_rpn_values)

    for rpn_var in data['models']['rpnVariables']:
        v, err = elegant_lattice_importer.parse_rpn_value(rpn_var['value'], data['models']['rpnVariables'])
        if not err:
            cache[rpn_var['name']] = v
            if elegant_lattice_importer.is_rpn_value(rpn_var['value']):
                cache[rpn_var['value']] = v
    return data
예제 #6
0
파일: elegant.py 프로젝트: pawanon61/sirepo
def _parse_expr(expr, variables):
    """If not infix, default to rpn"""
    return elegant_lattice_importer.parse_rpn_value(_infix_to_postfix(expr),
                                                    variables)
예제 #7
0
파일: elegant.py 프로젝트: mrakitin/sirepo
def _iterator_rpn_values(state, model, element_schema=None, field_name=None):
    if element_schema:
        if element_schema[1] == "RPNValue" and elegant_lattice_importer.is_rpn_value(model[field_name]):
            v, err = elegant_lattice_importer.parse_rpn_value(model[field_name], state["rpnVariables"])
            if not err:
                state["cache"][model[field_name]] = v
예제 #8
0
파일: elegant.py 프로젝트: e-carlin/sirepo
def _parse_expr(expr, variables):
    """If not infix, default to rpn"""
    return elegant_lattice_importer.parse_rpn_value(_infix_to_postfix(expr), variables)