public SecurityAnalysisResult analyze(Network network, ContingenciesProvider contingenciesProvider, SecurityAnalysisParameters parameters) { Objects.requireNonNull(network); Objects.requireNonNull(contingenciesProvider); Objects.requireNonNull(parameters); network.getVariantManager().allowVariantMultiThreadAccess(true); SecurityAnalysis securityAnalysis = securityAnalysisFactory.create(network, filter, computationManager, priority); interceptors.forEach(securityAnalysis::addInterceptor); return securityAnalysis.run(network.getVariantManager().getWorkingVariantId(), parameters, contingenciesProvider).join(); } }
network.getVariantManager().allowVariantMultiThreadAccess(true);
private void runSingleAnalysis(ToolRunningContext context, Path caseFile, Path outputCsvFile, Set<String> contingencyIds, ContingenciesProvider contingenciesProvider, SimulatorFactory simulatorFactory) throws Exception { context.getOutputStream().println("loading case " + caseFile + "..."); // load the network Network network = Importers.loadNetwork(caseFile); if (network == null) { throw new PowsyblException("Case '" + caseFile + "' not found"); } network.getVariantManager().allowVariantMultiThreadAccess(true); Multimap<String, SecurityIndex> securityIndexesPerContingency = runImpactAnalysis(network, contingencyIds, context.getShortTimeExecutionComputationManager(), simulatorFactory, contingenciesProvider, context.getOutputStream()); if (securityIndexesPerContingency != null) { if (outputCsvFile == null) { prettyPrint(securityIndexesPerContingency, context.getOutputStream()); } else { writeCsv(securityIndexesPerContingency, outputCsvFile); } } }
network.getVariantManager().allowVariantMultiThreadAccess(true);