@Override public WCAResult run(WCAParameters parameters) throws Exception { WCAAsyncResult asyncResult = runAsync(network.getStateManager().getWorkingStateId(), parameters) .join(); List<WCACluster> clusters = new ArrayList<>(); for (CompletableFuture<WCACluster> cluster : asyncResult.getClusters()) { clusters.add(cluster.join()); } return () -> clusters; }
private RulesFacadeResults getMockResults(Contingency contingency, Network network) { Map<SecurityIndexType, StateStatus> indexesResults = new EnumMap<>(SecurityIndexType.class); for (SecurityIndexType indexType : securityIndexTypes) { StateStatus ruleResults = (rulesResults == StateStatus.SAFE) ? StateStatus.SAFE : StateStatus.UNSAFE; indexesResults.put(indexType, ruleResults); } return new RulesFacadeResults(network.getStateManager().getWorkingStateId(), contingency.getId(), rulesResults, indexesResults, new ArrayList<>(), true); }
@Override public StabilizationResult run() throws Exception { return runAsync(network.getStateManager().getWorkingStateId()).join(); }
@Override public void sample() throws Exception { String stateId = network.getStateManager().getWorkingStateId(); LOGGER.info("Getting new sample for network " + network + ", working state id: " + stateId); SampleData sample = nextSample(); putSampleDataIntoNetwork(sample); }
@Override public StabilizationResult run() { LOGGER.info("Running Dymola stabilization"); String baseStateId = network.getStateManager().getWorkingStateId(); DymolaState state = new DymolaState(baseStateId); return new DymolaStabilizationResult(state); }
private void computeAndStorePostContingencyViolations(Network network, List<Contingency> contingencies) { String stateId = network.getStateManager().getWorkingStateId(); logger.info(this.logHeader + "{}: computing post contingency violations", stateId); List<Callable<Void>> postContingencyViolationsComputations = new ArrayList<>(contingencies.size());
@Override public void process(Network network, ComputationManager computationManager) throws Exception { LoadFlowFactory loadFlowFactory = defaultConfigSupplier.get().newFactoryImpl(LoadFlowFactory.class); LoadFlow loadFlow = loadFlowFactory.create(network, computationManager, 0); CaseProjectorUtils.project(computationManager, network, loadFlow, network.getStateManager().getWorkingStateId(), caseProjectorConfigSupplier.get()).join(); }
public static void dumpStateId(Path workingDir, Network network) throws IOException { dumpStateId(workingDir, network.getStateManager().getWorkingStateId()); }
private void runLoadFlow(ComputationManager computationManager) throws Exception { int priority = 1; LoadFlow loadflow = loadFlowFactory.create(_network, computationManager, priority); //((HELMLoadFlow) loadflow).setSlack(this._slackId); LoadFlowResult lfResults = loadflow.run(_network.getStateManager().getWorkingStateId(), LoadFlowParameters.load()).join(); if (!lfResults.isOk()) { System.out.println("LF has not been successfuly completed."); LOGGER.info("Loadflow finished. isOk == false"); System.exit(-1); } }
createPostContingencyState(contingency, baseStateId, contingencyStateId); LoadFlowResult loadFlowResult = loadFlow.run(network.getStateManager().getWorkingStateId(), loadFlowParameters).join();
LoadFlowResult result = loadFlow.run(n.getStateManager().getWorkingStateId(), new LoadFlowParameters(LoadFlowParameters.VoltageInitMode.UNIFORM_VALUES)).join(); removeStepUpTransformersAlreadyPresents(n, statorVoltageLevels, config); result = loadFlow.run(n.getStateManager().getWorkingStateId(), new LoadFlowParameters(LoadFlowParameters.VoltageInitMode.UNIFORM_VALUES)).join(); result = loadFlow.run(n.getStateManager().getWorkingStateId(), new LoadFlowParameters(LoadFlowParameters.VoltageInitMode.UNIFORM_VALUES)).join();
public static void applyInjections(Network network, String stateId, Map<String, Float> injections) { Objects.requireNonNull(network); Objects.requireNonNull(stateId); Objects.requireNonNull(injections); String originalStateId = network.getStateManager().getWorkingStateId(); network.getStateManager().setWorkingState(stateId); injections.keySet().forEach(injection -> { Load load = network.getLoad(injection); if (load != null) { double oldP = load.getTerminal().getP(); LOGGER.debug("Network {}, state {}: incrementing P of load {} from {} to {}", network.getId(), network.getStateManager().getWorkingStateId(), injection, oldP, oldP + injections.get(injection)); load.getTerminal().setP(oldP + injections.get(injection)); load.setP0(oldP + injections.get(injection)); } else { Generator generator = network.getGenerator(injection); if (generator != null) { double oldP = generator.getTerminal().getP(); LOGGER.debug("Network {}, state {}: incrementing P of generator {} from {} to {}", network.getId(), network.getStateManager().getWorkingStateId(), injection, oldP, oldP + injections.get(injection)); generator.getTerminal().setP(oldP + injections.get(injection)); generator.setTargetP(-oldP - injections.get(injection)); } else { LOGGER.error("No load or generator with id {} in network {}: cannot apply the injection", injection, network.getId()); } } }); network.getStateManager().setWorkingState(originalStateId); }
private RulesFacadeResults evaluate(Network network, List<SecurityRule> rules, List<SecurityIndexType> bacecaseInvalidRulesIndexes) { Objects.requireNonNull(network, "network is null"); HashMap<HistoDbAttributeId, Object> networkValues = IIDM2DB.extractCimValues(network, new IIDM2DB.Config(null, true)).getSingleValueMap(); return evaluate(network.getId(), network.getStateManager().getWorkingStateId(), networkValues, rules, bacecaseInvalidRulesIndexes); }
public void write(Writer writer, EsgGeneralParameters parameters, EsgSpecialParameters specialParameters) throws IOException { EsgNetwork esgNetwork = createNetwork(parameters); new EsgWriter(esgNetwork, parameters, specialParameters).write(writer, network.getId() + "/" + network.getStateManager().getWorkingStateId()); }
public void looseConstraints(String stateId, float margin, boolean applyToBaseCase) { if (network.getStateManager().getStateIds().contains(stateId)) { String workingStateId = network.getStateManager().getWorkingStateId(); network.getStateManager().setWorkingState(stateId); List<LimitViolation> violations = Security.checkLimits(network); looseConstraints(stateId, violations, margin, applyToBaseCase); network.getStateManager().setWorkingState(workingStateId); } else { throw new RuntimeException("No " + stateId + " in network " + network.getId() + ": cannot loose constraints"); } }
@Override public StabilizationResult run() { String baseStateId = network.getStateManager().getWorkingStateId(); List<LimitViolation> violations = baseVoltageFilter.apply(Security.checkLimits(network, config.getCurrentLimitType(), config.getLimitReduction()), network); String report = Security.printLimitsViolations(violations, network, CURRENT_FILTER); if (report != null) { LOGGER.warn("Constraints after stabilization for {}:\n{}", baseStateId, report); } PostContLoadFlowSimState state = new PostContLoadFlowSimState(baseStateId, violations); return new PostContLoadFlowSimStabilizationResult(state); }
Objects.requireNonNull(violations, "violations is null"); if (network.getStateManager().getStateIds().contains(stateId)) { String workingStateId = network.getStateManager().getWorkingStateId(); network.getStateManager().setWorkingState(stateId); LOGGER.info("Loosening constraints of network {}, state {}, using margin {}", network.getId(), network.getStateManager().getWorkingStateId(), margin); LimitViolationFilter violationsFilter = new LimitViolationFilter(config.getViolationsTypes(), 0); LOGGER.debug("Fixing constraints of network {}, state {}, causing the following {} violations:\n{}", network.getId(), network.getStateManager().getWorkingStateId(), filteredViolations.size(), report);
context.getOutputStream().println("running loadflow..."); LoadFlowResult result2 = loadFlow.run(network.getStateManager().getWorkingStateId(), LoadFlowParameters.load()).join();
private void writeEch(Path workingDir) throws IOException { try (Writer writer = new OutputStreamWriter(new GZIPOutputStream(Files.newOutputStream(workingDir.resolve(ECH_GZ_FILE_NAME))), StandardCharsets.UTF_8)) { EsgGeneralParameters parameters = new EsgGeneralParameters(); parameters.setTransformerVoltageControl(false); parameters.setSvcVoltageControl(false); parameters.setMaxNumIteration(config.getLfMaxNumIteration()); EsgSpecialParameters specialParameters = null; if (exportConfig.isSpecificCompatibility()) { LOGGER.info("specificCompatibility=true: forces start mode to WARM and write the special parameters section in ech file"); parameters.setStartMode(EsgGeneralParameters.StartMode.WARM_START); specialParameters = new EsgSpecialParameters(); //WARM START: ZMIN_LOW specialParameters.setZmin(EsgSpecialParameters.ZMIN_LOW); } else { parameters.setStartMode(config.isLfWarmStart() ? EsgGeneralParameters.StartMode.WARM_START : EsgGeneralParameters.StartMode.FLAT_START); } EsgNetwork networkEch = eurostagEchExporterFactory.createEchExporter(network, exportConfig, parallelIndexes, dictionary, fakeNodes).createNetwork(parameters); networkModifier.hvLoadModelling(networkEch); new EsgWriter(networkEch, parameters, specialParameters).write(writer, network.getId() + "/" + network.getStateManager().getWorkingStateId()); } if (config.isDebug()) { dictionary.dump(workingDir.resolve("dict.csv")); } }
protected boolean runLoadFlow(WorkflowContext context, WorkflowStartContext startContext, Sample sample) { LOGGER.debug("Workflow {}, sample {}: load flow started", id, sample.getId()); try { LoadFlowResult result = context.getLoadflow().run(context.getNetwork().getStateManager().getWorkingStateId(), context.getLoadFlowParameters()).join(); LOGGER.debug("Workflow {}, sample {}: load flow terminated (ok={})", id, sample.getId(), result.isOk()); changeTaskStatus(startContext, sample.getId(), LOAD_FLOW, result.isOk() ? SUCCEED : FAILED, null); metricsDb.store(id, "sample-" + sample.getId(), LOAD_FLOW.name(), result.getMetrics()); // consistency check on sampled variables SampleCharacteritics characteritics = SampleCharacteritics.fromNetwork(context.getNetwork(), creationParameters.isGenerationSampled(), creationParameters.isBoundariesSampled()); if (!characteritics.equals(sample.getCharacteritics())) { LOGGER.warn("Sampled variables inconsistency for {}: {} != {}", sample.getId(), characteritics, sample.getCharacteritics()); } return result.isOk(); } catch (Exception e) { LOGGER.error(e.toString(), e); return false; } }