Package com.powsybl.openloadflow.sensi
Class AbstractSensitivityAnalysis<V extends Enum<V> & Quantity,E extends Enum<E> & Quantity>
- java.lang.Object
-
- com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis<V,E>
-
- Direct Known Subclasses:
AcSensitivityAnalysis
,DcSensitivityAnalysis
public abstract class AbstractSensitivityAnalysis<V extends Enum<V> & Quantity,E extends Enum<E> & Quantity> extends Object
- Author:
- Geoffroy Jamgotchian
, Gael Macherel
-
-
Field Summary
Fields Modifier and Type Field Description protected GraphConnectivityFactory<LfBus,LfBranch>
connectivityFactory
protected static org.slf4j.Logger
LOGGER
protected com.powsybl.math.matrix.MatrixFactory
matrixFactory
protected com.powsybl.sensitivity.SensitivityAnalysisParameters
parameters
-
Constructor Summary
Constructors Modifier Constructor Description protected
AbstractSensitivityAnalysis(com.powsybl.math.matrix.MatrixFactory matrixFactory, GraphConnectivityFactory<LfBus,LfBranch> connectivityFactory, com.powsybl.sensitivity.SensitivityAnalysisParameters parameters)
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract void
analyse(com.powsybl.iidm.network.Network network, List<PropagatedContingency> contingencies, List<com.powsybl.sensitivity.SensitivityVariableSet> variableSets, com.powsybl.sensitivity.SensitivityFactorReader factorReader, com.powsybl.sensitivity.SensitivityResultWriter resultWriter, com.powsybl.commons.reporter.Reporter reporter, Set<com.powsybl.iidm.network.Switch> allSwitchesToOpen)
void
checkContingencies(LfNetwork lfNetwork, List<PropagatedContingency> contingencies)
void
checkLoadFlowParameters(com.powsybl.loadflow.LoadFlowParameters lfParameters)
protected AbstractSensitivityAnalysis.SensitivityFactorGroupList<V,E>
createFactorGroups(List<com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.LfSensitivityFactor<V,E>> factors)
protected void
fillRhsSensitivityVariable(AbstractSensitivityAnalysis.SensitivityFactorGroupList<V,E> factorGroups, com.powsybl.math.matrix.Matrix rhs, Map<LfBus,Double> participationByBus)
protected static boolean
filterBusTargetVoltageVariable(double value, com.powsybl.sensitivity.SensitivityFunctionType function, com.powsybl.sensitivity.SensitivityAnalysisParameters parameters)
static boolean
filterSensitivityValue(double value, com.powsybl.sensitivity.SensitivityVariableType variable, com.powsybl.sensitivity.SensitivityFunctionType function, com.powsybl.sensitivity.SensitivityAnalysisParameters parameters)
protected static String
getInjectionBusId(com.powsybl.iidm.network.Network network, String injectionId, boolean breakers)
protected static int
getLegNumber(com.powsybl.sensitivity.SensitivityFunctionType type)
protected static int
getLegNumber(com.powsybl.sensitivity.SensitivityVariableType type)
protected List<ParticipatingElement>
getParticipatingElements(Collection<LfBus> buses, com.powsybl.loadflow.LoadFlowParameters.BalanceType balanceType, OpenLoadFlowParameters openLoadFlowParameters)
protected org.apache.commons.lang3.tuple.Pair<Optional<Double>,Optional<Double>>
getPredefinedResults(com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.LfSensitivityFactor<V,E> factor, Set<LfBus> disabledBuses, Set<LfBranch> disabledBranches, PropagatedContingency propagatedContingency)
org.apache.commons.lang3.tuple.Pair<Boolean,Boolean>
hasBusTargetVoltage(com.powsybl.sensitivity.SensitivityFactorReader factorReader, com.powsybl.iidm.network.Network network)
protected com.powsybl.math.matrix.DenseMatrix
initFactorsRhs(EquationSystem<V,E> equationSystem, AbstractSensitivityAnalysis.SensitivityFactorGroupList<V,E> factorsGroups, Map<LfBus,Double> participationByBus)
static boolean
isActivePowerFunctionType(com.powsybl.sensitivity.SensitivityFunctionType functionType)
static boolean
isCurrentFunctionType(com.powsybl.sensitivity.SensitivityFunctionType functionType)
static boolean
isDistributedSlackOnGenerators(DcLoadFlowParameters lfParameters)
static boolean
isDistributedSlackOnLoads(DcLoadFlowParameters lfParameters)
protected static boolean
isFlowFunction(com.powsybl.sensitivity.SensitivityFunctionType function)
com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.SensitivityFactorHolder<V,E>
readAndCheckFactors(com.powsybl.iidm.network.Network network, Map<String,com.powsybl.sensitivity.SensitivityVariableSet> variableSetsById, com.powsybl.sensitivity.SensitivityFactorReader factorReader, LfNetwork lfNetwork, boolean breakers)
protected boolean
rescaleGlsk(AbstractSensitivityAnalysis.SensitivityFactorGroupList<V,E> factorGroups, Set<LfBus> nonConnectedBuses)
protected void
setPredefinedResults(Collection<com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.LfSensitivityFactor<V,E>> lfFactors, Set<LfBus> disabledBuses, Set<LfBranch> disabledBranches, PropagatedContingency propagatedContingency)
protected static <V extends Enum<V> & Quantity,E extends Enum<E> & Quantity>
doubleunscaleFunction(com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.LfSensitivityFactor<V,E> factor, double value)
Unscales function value from per-unit, according to its type.protected static <V extends Enum<V> & Quantity,E extends Enum<E> & Quantity>
doubleunscaleSensitivity(com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.LfSensitivityFactor<V,E> factor, double sensitivity)
Unscales sensitivity value from per-unit, according to its type.protected com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.SensitivityFactorHolder<V,E>
writeInvalidFactors(com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.SensitivityFactorHolder<V,E> factorHolder, com.powsybl.sensitivity.SensitivityResultWriter resultWriter)
Write zero or skip factors to output and send a new factor holder containing only other valid ones.
-
-
-
Field Detail
-
LOGGER
protected static final org.slf4j.Logger LOGGER
-
matrixFactory
protected final com.powsybl.math.matrix.MatrixFactory matrixFactory
-
connectivityFactory
protected final GraphConnectivityFactory<LfBus,LfBranch> connectivityFactory
-
parameters
protected com.powsybl.sensitivity.SensitivityAnalysisParameters parameters
-
-
Constructor Detail
-
AbstractSensitivityAnalysis
protected AbstractSensitivityAnalysis(com.powsybl.math.matrix.MatrixFactory matrixFactory, GraphConnectivityFactory<LfBus,LfBranch> connectivityFactory, com.powsybl.sensitivity.SensitivityAnalysisParameters parameters)
-
-
Method Detail
-
createFactorGroups
protected AbstractSensitivityAnalysis.SensitivityFactorGroupList<V,E> createFactorGroups(List<com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.LfSensitivityFactor<V,E>> factors)
-
getParticipatingElements
protected List<ParticipatingElement> getParticipatingElements(Collection<LfBus> buses, com.powsybl.loadflow.LoadFlowParameters.BalanceType balanceType, OpenLoadFlowParameters openLoadFlowParameters)
-
initFactorsRhs
protected com.powsybl.math.matrix.DenseMatrix initFactorsRhs(EquationSystem<V,E> equationSystem, AbstractSensitivityAnalysis.SensitivityFactorGroupList<V,E> factorsGroups, Map<LfBus,Double> participationByBus)
-
fillRhsSensitivityVariable
protected void fillRhsSensitivityVariable(AbstractSensitivityAnalysis.SensitivityFactorGroupList<V,E> factorGroups, com.powsybl.math.matrix.Matrix rhs, Map<LfBus,Double> participationByBus)
-
setPredefinedResults
protected void setPredefinedResults(Collection<com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.LfSensitivityFactor<V,E>> lfFactors, Set<LfBus> disabledBuses, Set<LfBranch> disabledBranches, PropagatedContingency propagatedContingency)
-
getPredefinedResults
protected org.apache.commons.lang3.tuple.Pair<Optional<Double>,Optional<Double>> getPredefinedResults(com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.LfSensitivityFactor<V,E> factor, Set<LfBus> disabledBuses, Set<LfBranch> disabledBranches, PropagatedContingency propagatedContingency)
-
rescaleGlsk
protected boolean rescaleGlsk(AbstractSensitivityAnalysis.SensitivityFactorGroupList<V,E> factorGroups, Set<LfBus> nonConnectedBuses)
-
writeInvalidFactors
protected com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.SensitivityFactorHolder<V,E> writeInvalidFactors(com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.SensitivityFactorHolder<V,E> factorHolder, com.powsybl.sensitivity.SensitivityResultWriter resultWriter)
Write zero or skip factors to output and send a new factor holder containing only other valid ones. IMPORTANT: this is only a base case test (factor status only deal with base case). We do not output anything on post contingency if factor is already invalid (skip o zero) on base case.
-
checkContingencies
public void checkContingencies(LfNetwork lfNetwork, List<PropagatedContingency> contingencies)
-
checkLoadFlowParameters
public void checkLoadFlowParameters(com.powsybl.loadflow.LoadFlowParameters lfParameters)
-
getInjectionBusId
protected static String getInjectionBusId(com.powsybl.iidm.network.Network network, String injectionId, boolean breakers)
-
readAndCheckFactors
public com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.SensitivityFactorHolder<V,E> readAndCheckFactors(com.powsybl.iidm.network.Network network, Map<String,com.powsybl.sensitivity.SensitivityVariableSet> variableSetsById, com.powsybl.sensitivity.SensitivityFactorReader factorReader, LfNetwork lfNetwork, boolean breakers)
-
isActivePowerFunctionType
public static boolean isActivePowerFunctionType(com.powsybl.sensitivity.SensitivityFunctionType functionType)
-
isCurrentFunctionType
public static boolean isCurrentFunctionType(com.powsybl.sensitivity.SensitivityFunctionType functionType)
-
hasBusTargetVoltage
public org.apache.commons.lang3.tuple.Pair<Boolean,Boolean> hasBusTargetVoltage(com.powsybl.sensitivity.SensitivityFactorReader factorReader, com.powsybl.iidm.network.Network network)
-
isDistributedSlackOnGenerators
public static boolean isDistributedSlackOnGenerators(DcLoadFlowParameters lfParameters)
-
isDistributedSlackOnLoads
public static boolean isDistributedSlackOnLoads(DcLoadFlowParameters lfParameters)
-
unscaleSensitivity
protected static <V extends Enum<V> & Quantity,E extends Enum<E> & Quantity> double unscaleSensitivity(com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.LfSensitivityFactor<V,E> factor, double sensitivity)
Unscales sensitivity value from per-unit, according to its type.
-
unscaleFunction
protected static <V extends Enum<V> & Quantity,E extends Enum<E> & Quantity> double unscaleFunction(com.powsybl.openloadflow.sensi.AbstractSensitivityAnalysis.LfSensitivityFactor<V,E> factor, double value)
Unscales function value from per-unit, according to its type.
-
getLegNumber
protected static int getLegNumber(com.powsybl.sensitivity.SensitivityFunctionType type)
-
getLegNumber
protected static int getLegNumber(com.powsybl.sensitivity.SensitivityVariableType type)
-
analyse
public abstract void analyse(com.powsybl.iidm.network.Network network, List<PropagatedContingency> contingencies, List<com.powsybl.sensitivity.SensitivityVariableSet> variableSets, com.powsybl.sensitivity.SensitivityFactorReader factorReader, com.powsybl.sensitivity.SensitivityResultWriter resultWriter, com.powsybl.commons.reporter.Reporter reporter, Set<com.powsybl.iidm.network.Switch> allSwitchesToOpen)
-
filterSensitivityValue
public static boolean filterSensitivityValue(double value, com.powsybl.sensitivity.SensitivityVariableType variable, com.powsybl.sensitivity.SensitivityFunctionType function, com.powsybl.sensitivity.SensitivityAnalysisParameters parameters)
-
filterBusTargetVoltageVariable
protected static boolean filterBusTargetVoltageVariable(double value, com.powsybl.sensitivity.SensitivityFunctionType function, com.powsybl.sensitivity.SensitivityAnalysisParameters parameters)
-
isFlowFunction
protected static boolean isFlowFunction(com.powsybl.sensitivity.SensitivityFunctionType function)
-
-