@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; }
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"); } }
private void createPostContingencyState(Contingency contingency, String baseStateId, String contingencyStateId) { network.getStateManager().cloneState(baseStateId, contingencyStateId); network.getStateManager().setWorkingState(contingencyStateId); contingency.toTask().modify(network, computationManager); }
private void removePostContingencyState(String contingencyStateId, Map<String, String> metrics) { network.getStateManager().setWorkingState(contingencyStateId); network.getStateManager().removeState(contingencyStateId); }
if (alreadyProcessed && network.getStateManager().getStateIds().contains(postContingencyStateId)) { network.getStateManager().setWorkingState(postContingencyStateId); } else { network.getStateManager().cloneState(stateId, postContingencyStateId); network.getStateManager().setWorkingState(postContingencyStateId); LoadFlowResult result = loadFlow.run(network.getStateManager().getWorkingStateId(), loadFlowParameters).join(); if (!alreadyProcessed) {
network.getStateManager().allowStateMultiThreadAccess(true); String baseStateId = network.getId(); network.getStateManager().cloneState(StateManagerConstants.INITIAL_STATE_ID, baseStateId); network.getStateManager().setWorkingState(baseStateId); LoadFlowResult loadFlowResult = loadFlow.run(network.getStateManager().getWorkingStateId(), loadFlowParameters).join();
@Override public List<CommandExecution> before(Path workingDir) throws IOException { network.getStateManager().setWorkingState(workingStateId); context = EurostagStabilization.this.before(workingDir); return Collections.singletonList(createCommandExecution()); }
private CompletableFuture<List<CompletableFuture<WCACluster>>> createWcaTask(String baseStateId, WCAParameters parameters) throws Exception { if (!network.getStateManager().isStateMultiThreadAccessAllowed()) { throw new IllegalArgumentException("State multi thread access has to be activated"); network.getStateManager().setWorkingState(baseStateId); network.getStateManager().setWorkingState(baseStateId); try { if (!(config.getPreventiveActionsFilter() == WCAPreventiveActionsFilter.DOMAINS) Supplier<CompletableFuture<WCAHistoLimits>> histoLimits = Suppliers.memoize(() -> CompletableFuture.supplyAsync(() -> { network.getStateManager().setWorkingState(baseStateId); try { WCAHistoLimits limits = new WCAHistoLimits(parameters.getHistoInterval()); String domainsUncertaintiesState = "domainsUncertaintiesState"; LOGGER.info("Network {}: creating state with 'domains' uncertainties", network.getId()); network.getStateManager().cloneState(baseStateId, domainsUncertaintiesState); network.getStateManager().setWorkingState(domainsUncertaintiesState); WCAUtils.applyInjections(network, domainsUncertaintiesState, domainsResult.getInjections()); LOGGER.info("Network {}: running loadflow on state with 'domains' uncertainties", network.getId()); }) .join(); network.getStateManager().setWorkingState(baseStateId); network.getId(), preventiveActionId, violationToBePrevented.getLimitType(), violationToBePrevented.getSubjectId()); possibleActionsToApply.put(preventiveActionId, preventiveAction); network.getStateManager().cloneState(previousState, preventiveStateId);
private void runOptimizer(Network network, List<Contingency> contingencies, List<Contingency> contingenciesForSimulator, ForecastAnalysisResults results) { String stateId = network.getStateManager().getWorkingStateId(); logger.info(this.logHeader + "{}: running optimizer", stateId); List<Callable<Void>> postContingencyStateComputations = new ArrayList<>(contingencies.size()); network.getStateManager().setWorkingState(stateId);
throw new RuntimeException("Case '" + caseFile + "' not found"); network.getStateManager().allowStateMultiThreadAccess(true); context.getOutputStream().println("running loadflow..."); LoadFlowResult result2 = loadFlow.run(network.getStateManager().getWorkingStateId(), LoadFlowParameters.load()).join();
throw new RuntimeException("Case '" + caseFile + "' not found"); network.getStateManager().allowStateMultiThreadAccess(true); network.getStateManager().allowStateMultiThreadAccess(true); String baseStateId = network.getId(); network.getStateManager().cloneState(StateManagerConstants.INITIAL_STATE_ID, baseStateId); network.getStateManager().setWorkingState(baseStateId);
network.getStateManager().allowStateMultiThreadAccess(true); network.getStateManager().setWorkingState(StateManagerConstants.INITIAL_STATE_ID); context.getNetwork().getStateManager().cloneState(StateManagerConstants.INITIAL_STATE_ID, stateId); try { context.getNetwork().getStateManager().setWorkingState(stateId); context.getNetwork().getStateManager().removeState(stateId);
@Override public Void call() throws Exception { // compute post contingency state String postContingencyStateId = OnlineUtils.getPostContingencyId(stateId, contingency.getId()); try { boolean loadflowConverge = computePostContingencyState(network, stateId, contingency, postContingencyStateId); if (loadflowConverge) { logger.info(logHeader + "{}: computing post contingency violations for contingency {}", stateId, contingency.getId()); List<LimitViolation> violations = Security.checkLimits(network, parameters.getLimitReduction()); if (violations != null && !violations.isEmpty()) { logger.info(logHeader + "{}: storing post contingency violations/loadflow results for contingency {} in online db", stateId, contingency.getId()); onlineDb.storePostContingencyViolations(context.getWorkflowId(), Integer.valueOf(stateId), contingency.getId(), loadflowConverge, violations); } else { logger.info(logHeader + "{}: no post contingency violations for contingency {}", stateId, contingency.getId()); } } else { logger.info("{}: post contingency loadflow does not converge for contingency {}, skipping computing post contingency violations", stateId, contingency.getId()); } network.getStateManager().setWorkingState(stateId); } finally { if (network.getStateManager().getStateIds().contains(postContingencyStateId)) { network.getStateManager().removeState(postContingencyStateId); } } return null; } }
@Override public void run(CommandLine line, ToolRunningContext context) throws Exception { Path caseFile = Paths.get(line.getOptionValue("case-file")); Path outputFolder = Paths.get(line.getOptionValue("output-folder")); Interval histoInterval = Interval.parse(line.getOptionValue("histo-interval")); if (Files.isRegularFile(caseFile)) { System.out.println("loading case " + caseFile); // load the network Network network = Importers.loadNetwork(caseFile); if (network == null) { throw new RuntimeException("Case '" + caseFile + "' not found"); } network.getStateManager().allowStateMultiThreadAccess(true); createMat(network, histoInterval, outputFolder); } else { throw new RuntimeException("Case '" + caseFile + "' is not a valid basecase file"); } }
LOGGER.info("Storing state {} of workflow {}", stateIdStr, workflowId); if (network.getStateManager().getStateIds().contains(stateIdStr)) { network.getStateManager().setWorkingState(stateIdStr); Path workflowStatesFolder = getWorkflowStatesFolder(workflowId); Path stateFolder;
if (network.getStateManager().getStateIds().contains(postContingencyStateId)) { network.getStateManager().removeState(postContingencyStateId);
String oldState = network.getStateManager().getWorkingStateId(); network.getStateManager().cloneState(oldState, topoCheckStateId); network.getStateManager().setWorkingState(topoCheckStateId); try { network.getStateManager().removeState(topoCheckStateId); network.getStateManager().setWorkingState(oldState);
public Network getNetwork() { network.getStateManager().setWorkingState(stateId); return network; }
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); }
throw new RuntimeException("Case '" + caseFile + "' not found"); network.getStateManager().allowStateMultiThreadAccess(true); EsgNetwork networkEch = echExportFactory.createEchExporter(network, exportConfig, parallelIndexes, dictionary, fakeNodes).createNetwork(parameters); new EurostagNetworkModifier().hvLoadModelling(networkEch); new EsgWriter(networkEch, parameters, specialParameters).write(writer, network.getId() + "/" + network.getStateManager().getWorkingStateId());