SecurityAnalysisContext.java
/**
* Copyright (c) 2023, RTE (http://www.rte-france.com)
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* SPDX-License-Identifier: MPL-2.0
*/
package com.powsybl.dynawo.security;
import com.powsybl.contingency.Contingency;
import com.powsybl.dynawo.AbstractContextBuilder;
import com.powsybl.dynawo.DynawoSimulationContext;
import com.powsybl.dynawo.algorithms.ContingencyEventModels;
import com.powsybl.dynawo.algorithms.ContingencyEventModelsFactory;
import com.powsybl.dynawo.models.BlackBoxModel;
import com.powsybl.iidm.network.*;
import com.powsybl.security.dynamic.DynamicSecurityAnalysisParameters;
import java.util.*;
/**
* @author Laurent Issertial {@literal <laurent.issertial at rte-france.com>}
*/
public final class SecurityAnalysisContext extends DynawoSimulationContext {
private final List<Contingency> contingencies;
private final List<ContingencyEventModels> contingencyEventModels;
public static class Builder extends AbstractContextBuilder<Builder> {
private final List<Contingency> contingencies;
private DynamicSecurityAnalysisParameters securityParameters;
private List<ContingencyEventModels> contingencyEventModels;
public Builder(Network network, List<BlackBoxModel> dynamicModels, List<Contingency> contingencies) {
super(network, dynamicModels);
this.contingencies = contingencies;
}
public Builder dynamicSecurityAnalysisParameters(DynamicSecurityAnalysisParameters parameters) {
this.securityParameters = Objects.requireNonNull(parameters);
return self();
}
@Override
protected void setupData() {
super.setupData();
if (securityParameters == null) {
securityParameters = DynamicSecurityAnalysisParameters.load();
}
simulationParameters = securityParameters.getDynamicSimulationParameters();
}
@Override
protected void setupMacroConnections() {
super.setupMacroConnections();
this.contingencyEventModels = ContingencyEventModelsFactory.createFrom(contingencies,
securityParameters.getDynamicContingenciesParameters().getContingenciesStartTime(),
network, blackBoxModelSupplier, reportNode);
}
@Override
protected Builder self() {
return this;
}
@Override
public SecurityAnalysisContext build() {
setup();
return new SecurityAnalysisContext(this);
}
}
private SecurityAnalysisContext(Builder builder) {
super(builder);
this.contingencies = builder.contingencies;
this.contingencyEventModels = builder.contingencyEventModels;
}
public List<Contingency> getContingencies() {
return contingencies;
}
public List<ContingencyEventModels> getContingencyEventModels() {
return contingencyEventModels;
}
@Override
public boolean withCurveVariables() {
return false;
}
@Override
public boolean withFsvVariables() {
return false;
}
@Override
public boolean withConstraints() {
return true;
}
}