Example #1
0
    def wait_for_run_command(queue):
        while True:
            out = open(str(os.getpid()) + ".out", "w")
            err = open(str(os.getpid()) + ".err", "w")
            msg = queue.get()
            analysis_id = msg['analysis_id']
            try:
                model_id = msg['model_id']
                name = msg['name']
                analysis_name = "Analysis_" + str(analysis_id)
                out.write("run analysis: " + str(analysis_id))
                TaskExecutor.status_list[analysis_id] = TaskExecutor.Status.running.value
                logger = dpsimpy.Logger(analysis_name)
                model = model_db.get_model(model_id)
                files = model.files

                # prepare the files for dpsim to read. we should make dpsim accept data blobs.
                # however, that requires work in 3 projects and a technical discussion first.
                filenames = []
                for filedata in model.files:
                    fp, path = tempfile.mkstemp(suffix=".xml", prefix=None, dir=None, text=True)
                    filedata.seek(0)
                    data = filedata.read()
                    os.write(fp, data);
                    os.close(fp);
                    filenames.append(path)

                #initialise dpsimpy
                reader = dpsimpy.CIMReader("Analysis_" + str(analysis_id))
                system = reader.loadCIM(50, filenames, dpsimpy.Domain.SP, dpsimpy.PhaseType.Single)
                sim = dpsimpy.Simulation("Analysis_" + str(analysis_id))
                sim.set_system(system)
                sim.set_domain(dpsimpy.Domain.SP)
                sim.set_solver(dpsimpy.Solver.NRP)
                for node in system.nodes:
                    logger.log_attribute(node.name()+'.V', 'v', node);
                sim.add_logger(logger)
                sim.run()

                # clean up the files that we created
                for tempname in filenames:
                    os.unlink(tempname)

                TaskExecutor.status_list[analysis_id] = TaskExecutor.Status.complete.value

            except Exception as e:
                TaskExecutor.status_list[analysis_id] = TaskExecutor.Status.error.value
                err.write("analysis failed: " + str(analysis_id) + " with: " + str(e))
            finally:
                err.close()
                out.close()
 def execute_dpsimpy(self):
     #initialise dpsimpy
     logger = dpsimpy.Logger(self.analysis_name)
     reader = dpsimpy.CIMReader(self.analysis_name)
     system = reader.loadCIM(50, self.filenames, dpsimpy.Domain.SP,
                             dpsimpy.PhaseType.Single)
     sim = dpsimpy.Simulation(self.analysis_name)
     sim.set_system(system)
     sim.set_domain(dpsimpy.Domain.SP)
     sim.set_solver(dpsimpy.Solver.NRP)
     for node in system.nodes:
         logger.log_attribute(node.name() + '.V', 'v', node)
     sim.add_logger(logger)
     sim.run()
Example #3
0
 def execute_dpsimpy(self):
     #initialise dpsimpy
     logger = dpsimpy.Logger(self.analysis_name)
     reader = dpsimpy.CIMReader(self.analysis_name)
     system = reader.loadCIM(50, self.filenames, dpsimpy.Domain.SP,
                             dpsimpy.PhaseType.Single)
     if system == None:
         self.err.write("Could not start dpsimpy with files: " +
                        self.filenames)
         TaskExecutor.status_list[
             self.analysis_id] = TaskExecutor.Status.error.value
         return
     self.read_load_profiles(system)
     sim = dpsimpy.Simulation(self.analysis_name)
     sim.set_system(system)
     sim.set_domain(dpsimpy.Domain.SP)
     sim.set_solver(dpsimpy.Solver.NRP)
     for node in system.nodes:
         logger.log_attribute(node.name() + '.V', 'v', node)
     sim.add_logger(logger)
     sim.run()
import os
import urllib.request
import glob

import dpsimpy

name = 'CIGRE-MV-Profiles'
files = glob.glob(
    'build/_deps/cim-data-src/CIGRE_MV/NEPLAN/CIGRE_MV_no_tapchanger_With_LoadFlow_Results/*.xml'
)
print(files)

reader = dpsimpy.CIMReader(name)
system = reader.loadCIM(50, files, dpsimpy.Domain.SP, dpsimpy.PhaseType.Single)

csv_files = glob.glob(
    'build/_deps/profile-data-src/CIGRE_MV_NoTap/load_profiles/')[0]
print(csv_files)

assignList = {}
assignList['LOAD-H-1'] = 'Load_H_1'
assignList['LOAD-H-3'] = 'Load_H_3'
assignList['LOAD-H-4'] = 'Load_H_4'
assignList['LOAD-H-5'] = 'Load_H_5'
assignList['LOAD-H-6'] = 'Load_H_6'
assignList['LOAD-H-8'] = 'Load_H_8'
assignList['LOAD-H-10'] = 'Load_H_10'
assignList['LOAD-H-11'] = 'Load_H_11'
assignList['LOAD-H-12'] = 'Load_H_12'
assignList['LOAD-H-14'] = 'Load_H_14'
assignList['LOAD-I-1'] = 'Load_I_1'
def dpsim():
    name = 'CIGRE-MV-Profiles'
    files = glob.glob(
        'build/_deps/cim-data-src/CIGRE_MV/NEPLAN/CIGRE_MV_no_tapchanger_With_LoadFlow_Results/*.xml'
    )
    print(files)

    reader = dpsimpy.CIMReader(name)
    system = reader.loadCIM(50, files, dpsimpy.Domain.SP,
                            dpsimpy.PhaseType.Single)

    csv_files = glob.glob(
        'build/_deps/profile-data-src/CIGRE_MV_NoTap/load_profiles/')[0]
    print(csv_files)

    assignList = {}
    assignList['LOAD-H-1'] = 'Load_H_1'
    assignList['LOAD-H-3'] = 'Load_H_3'
    assignList['LOAD-H-4'] = 'Load_H_4'
    assignList['LOAD-H-5'] = 'Load_H_5'
    assignList['LOAD-H-6'] = 'Load_H_6'
    assignList['LOAD-H-8'] = 'Load_H_8'
    assignList['LOAD-H-10'] = 'Load_H_10'
    assignList['LOAD-H-11'] = 'Load_H_11'
    assignList['LOAD-H-12'] = 'Load_H_12'
    assignList['LOAD-H-14'] = 'Load_H_14'
    assignList['LOAD-I-1'] = 'Load_I_1'
    assignList['LOAD-I-3'] = 'Load_I_3'
    assignList['LOAD-I-7'] = 'Load_I_7'
    assignList['LOAD-I-9'] = 'Load_I_9'
    assignList['LOAD-I-10'] = 'Load_I_10'
    assignList['LOAD-I-12'] = 'Load_I_12'
    assignList['LOAD-I-13'] = 'Load_I_13'
    assignList['LOAD-I-14'] = 'Load_I_14'

    csvreader = dpsimpy.CSVReader(name, csv_files, assignList,
                                  dpsimpy.LogLevel.info)
    csvreader.assignLoadProfile(system, 0, 1, 300,
                                dpsimpy.CSVReaderMode.MANUAL,
                                dpsimpy.CSVReaderFormat.SECONDS)

    sim = dpsimpy.RealTimeSimulation(name)
    sim.set_system(system)
    sim.set_domain(dpsimpy.Domain.SP)
    sim.set_solver(dpsimpy.Solver.NRP)
    sim.set_time_step(1)
    sim.set_final_time(30)

    logger = dpsimpy.Logger(name)
    sim.add_logger(logger)

    intf = dpsimpy.InterfaceShmem()
    sim.add_interface(intf)

    obj_list = system.list_idobjects()
    node_list = {
        k: v
        for k, v in obj_list.items() if v == 'SimNode<std::complex<double> >'
    }
    print(node_list)

    for i in range(15):
        objname = 'N' + str(i)
        sim.export_attr(objname, 'v', (i * 2), dpsimpy.AttrModifier.mag)
        sim.export_attr(objname, 'v', (i * 2) + 1, dpsimpy.AttrModifier.phase)
        print(objname)

    for node in system.nodes:
        logger.log_attribute(node.name() + '.V', 'v', node)

    sim.run(1)