示例#1
0
def unpickle_NRPy_env(NRPyEnvVars):
    import pickle
    # https://www.pythonforthelab.com/blog/storing-binary-data-and-serializing/
    grfcs_list = []
    param_list = []
    Cparm_list = []

    outCfunc_dict = {}
    outCfuncproto_dict = {}
    outCfuncoutdir_dict = {}

    for WhichParamSet in NRPyEnvVars[0]:
        # gridfunctions
        i = 0
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            grfcs_list.append(
                gri.glb_gridfc(gftype=pickle.loads(WhichParamSet[i + 0]),
                               name=pickle.loads(WhichParamSet[i + 1]),
                               rank=pickle.loads(WhichParamSet[i + 2]),
                               DIM=pickle.loads(WhichParamSet[i + 3])))
            i += 4
        # parameters
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            param_list.append(
                par.glb_param(type=pickle.loads(WhichParamSet[i + 0]),
                              module=pickle.loads(WhichParamSet[i + 1]),
                              parname=pickle.loads(WhichParamSet[i + 2]),
                              defaultval=pickle.loads(WhichParamSet[i + 3])))
            i += 4
        # Cparameters
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            Cparm_list.append(
                par.glb_Cparam(type=pickle.loads(WhichParamSet[i + 0]),
                               module=pickle.loads(WhichParamSet[i + 1]),
                               parname=pickle.loads(WhichParamSet[i + 2]),
                               defaultval=pickle.loads(WhichParamSet[i + 3])))
            i += 4
        # outC_func_dict
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            funcname = pickle.loads(WhichParamSet[i + 0])
            funcbody = pickle.loads(WhichParamSet[i + 1])
            i += 2
            outCfunc_dict[funcname] = funcbody

        # outC_function_prototype_dict
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            funcname = pickle.loads(WhichParamSet[i + 0])
            funcproto = pickle.loads(WhichParamSet[i + 1])
            i += 2
            outCfuncproto_dict[funcname] = funcproto

        # outC_function_outdir_dict
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            funcname = pickle.loads(WhichParamSet[i + 0])
            funcoutdir = pickle.loads(WhichParamSet[i + 1])
            i += 2
            outCfuncoutdir_dict[funcname] = funcoutdir

    grfcs_list_uniq = []
    for gf_ntuple_stored in grfcs_list:
        found_gf = False
        for gf_ntuple_new in grfcs_list_uniq:
            if gf_ntuple_new == gf_ntuple_stored:
                found_gf = True
        if found_gf == False:
            grfcs_list_uniq.append(gf_ntuple_stored)

    param_list_uniq = []
    for pr_ntuple_stored in param_list:
        found_pr = False
        for pr_ntuple_new in param_list_uniq:
            if pr_ntuple_new == pr_ntuple_stored:
                found_pr = True
        if found_pr == False:
            param_list_uniq.append(pr_ntuple_stored)

    # Set glb_paramsvals_list:
    # Step 1: Reset all paramsvals to their defaults
    #  BAD IDEA: OVERWRITTEN DEFAULTS SHOULD BE KEPT.
    # par.glb_paramsvals_list = []
    # for parm in param_list_uniq:
    #     par.glb_paramsvals_list.append(parm.defaultval)

    Cparm_list_uniq = []
    for Cp_ntuple_stored in Cparm_list:
        found_Cp = False
        for Cp_ntuple_new in Cparm_list_uniq:
            if Cp_ntuple_new == Cp_ntuple_stored:
                found_Cp = True
        if found_Cp == False:
            Cparm_list_uniq.append(Cp_ntuple_stored)

    gri.glb_gridfcs_list = []
    par.glb_params_list = []
    par.glb_Cparams_list = []

    gri.glb_gridfcs_list = grfcs_list_uniq
    par.glb_params_list = param_list_uniq
    par.glb_Cparams_list = Cparm_list_uniq
    for key, item in outCfunc_dict.items():
        outC_function_dict[key] = item

    for key, item in outCfuncproto_dict.items():
        outC_function_prototype_dict[key] = item

    for key, item in outCfuncoutdir_dict.items():
        outC_function_outdir_dict[key] = item
示例#2
0
def unpickle_NRPy_env(NRPyEnvVars):
    import pickle
    # https://www.pythonforthelab.com/blog/storing-binary-data-and-serializing/
    grfcs_list = []
    param_list = []
    Cparm_list = []

    outCfunc_dict = {}
    outCfuncproto_dict = {}
    outCfuncoutdir_dict = {}
    outCfunc_master_list = []

    for WhichParamSet in NRPyEnvVars[0]:
        # gridfunctions
        i = 0
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            grfcs_list.append(
                gri.glb_gridfc(gftype=pickle.loads(WhichParamSet[i + 0]),
                               name=pickle.loads(WhichParamSet[i + 1]),
                               rank=pickle.loads(WhichParamSet[i + 2]),
                               DIM=pickle.loads(WhichParamSet[i + 3]),
                               f_infinity=pickle.loads(WhichParamSet[i + 4]),
                               wavespeed=pickle.loads(WhichParamSet[i + 5])))
            i += 6
        # parameters
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            param_list.append(
                par.glb_param(type=pickle.loads(WhichParamSet[i + 0]),
                              module=pickle.loads(WhichParamSet[i + 1]),
                              parname=pickle.loads(WhichParamSet[i + 2]),
                              defaultval=pickle.loads(WhichParamSet[i + 3])))
            i += 4
        # Cparameters
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            Cparm_list.append(
                par.glb_Cparam(type=pickle.loads(WhichParamSet[i + 0]),
                               module=pickle.loads(WhichParamSet[i + 1]),
                               parname=pickle.loads(WhichParamSet[i + 2]),
                               defaultval=pickle.loads(WhichParamSet[i + 3])))
            i += 4
        # outC_func_dict
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            funcname = pickle.loads(WhichParamSet[i + 0])
            funcbody = pickle.loads(WhichParamSet[i + 1])
            i += 2
            outCfunc_dict[funcname] = funcbody

        # outC.outC_function_prototype_dict
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            funcname = pickle.loads(WhichParamSet[i + 0])
            funcproto = pickle.loads(WhichParamSet[i + 1])
            i += 2
            outCfuncproto_dict[funcname] = funcproto

        # outC.outC_function_outdir_dict
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            funcname = pickle.loads(WhichParamSet[i + 0])
            funcoutdir = pickle.loads(WhichParamSet[i + 1])
            i += 2
            outCfuncoutdir_dict[funcname] = funcoutdir

        # outC.outC_function_master_list
        num_elements = pickle.loads(WhichParamSet[i])
        i += 1
        for lst in range(num_elements):
            includes = pickle.loads(WhichParamSet[i + 0])
            i += 1
            prefunc = pickle.loads(WhichParamSet[i + 0])
            i += 1
            desc = pickle.loads(WhichParamSet[i + 0])
            i += 1
            c_type = pickle.loads(WhichParamSet[i + 0])
            i += 1
            name = pickle.loads(WhichParamSet[i + 0])
            i += 1
            params = pickle.loads(WhichParamSet[i + 0])
            i += 1
            preloop = pickle.loads(WhichParamSet[i + 0])
            i += 1
            body = pickle.loads(WhichParamSet[i + 0])
            i += 1
            loopopts = pickle.loads(WhichParamSet[i + 0])
            i += 1
            postloop = pickle.loads(WhichParamSet[i + 0])
            i += 1
            enableCparameters = pickle.loads(WhichParamSet[i + 0])
            i += 1
            rel_path_to_Cparams = pickle.loads(WhichParamSet[i + 0])
            i += 1
            # 'includes prefunc desc c_type name params preloop body loopopts postloop enableCparameters rel_path_to_Cparams append_coordsuffix'
            outCfunc_master_list += [
                outC.outC_function_element(
                    includes=includes,
                    prefunc=prefunc,
                    desc=desc,
                    c_type=c_type,
                    name=name,
                    params=params,
                    preloop=preloop,
                    body=body,
                    loopopts=loopopts,
                    postloop=postloop,
                    enableCparameters=enableCparameters,
                    rel_path_to_Cparams=rel_path_to_Cparams)
            ]

    grfcs_list_uniq = []
    for gf_ntuple_stored in grfcs_list:
        found_gf = False
        for gf_ntuple_new in grfcs_list_uniq:
            if gf_ntuple_new == gf_ntuple_stored:
                found_gf = True
        if found_gf == False:
            grfcs_list_uniq.append(gf_ntuple_stored)

    param_list_uniq = []
    for pr_ntuple_stored in param_list:
        found_pr = False
        for pr_ntuple_new in param_list_uniq:
            if pr_ntuple_new == pr_ntuple_stored:
                found_pr = True
        if found_pr == False:
            param_list_uniq.append(pr_ntuple_stored)

    # Set glb_paramsvals_list:
    # Step 1: Reset all paramsvals to their defaults
    #  BAD IDEA: OVERWRITTEN DEFAULTS SHOULD BE KEPT.
    # par.glb_paramsvals_list = []
    # for parm in param_list_uniq:
    #     par.glb_paramsvals_list.append(parm.defaultval)

    Cparm_list_uniq = []
    for Cp_ntuple_stored in Cparm_list:
        found_Cp = False
        for Cp_ntuple_new in Cparm_list_uniq:
            if Cp_ntuple_new == Cp_ntuple_stored:
                found_Cp = True
        if found_Cp == False:
            Cparm_list_uniq.append(Cp_ntuple_stored)

    gri.glb_gridfcs_list = []
    par.glb_params_list = []
    par.glb_Cparams_list = []

    gri.glb_gridfcs_list = grfcs_list_uniq
    par.glb_params_list = param_list_uniq
    par.glb_Cparams_list = Cparm_list_uniq
    for key, item in outCfunc_dict.items():
        outC.outC_function_dict[key] = item

    for key, item in outCfuncproto_dict.items():
        outC.outC_function_prototype_dict[key] = item

    for key, item in outCfuncoutdir_dict.items():
        outC.outC_function_outdir_dict[key] = item

    return outCfunc_master_list
    num_elements = pickle.loads(WhichParamSet[i])
    i += 1
    for lst in range(num_elements):
        param_list.append(
            par.glb_param(type=pickle.loads(WhichParamSet[i + 0]),
                          module=pickle.loads(WhichParamSet[i + 1]),
                          parname=pickle.loads(WhichParamSet[i + 2]),
                          defaultval=pickle.loads(WhichParamSet[i + 3])))
        i += 4
    # Cparameters
    num_elements = pickle.loads(WhichParamSet[i])
    i += 1
    for lst in range(num_elements):
        Cparm_list.append(
            par.glb_Cparam(type=pickle.loads(WhichParamSet[i + 0]),
                           module=pickle.loads(WhichParamSet[i + 1]),
                           parname=pickle.loads(WhichParamSet[i + 2]),
                           defaultval=pickle.loads(WhichParamSet[i + 3])))
        i += 4
grfcs_list_uniq = []
for gf_ntuple_stored in grfcs_list:
    found_gf = False
    for gf_ntuple_new in grfcs_list_uniq:
        if gf_ntuple_new == gf_ntuple_stored:
            found_gf = True
    if found_gf == False:
        grfcs_list_uniq.append(gf_ntuple_stored)

param_list_uniq = []
for pr_ntuple_stored in param_list:
    found_pr = False
    for pr_ntuple_new in param_list_uniq: