All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.powsybl.openloadflow.sa.OpenSecurityAnalysisParameters Maven / Gradle / Ivy

The newest version!
/**
 * Copyright (c) 2022, 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.openloadflow.sa;

import com.powsybl.commons.config.PlatformConfig;
import com.powsybl.commons.extensions.AbstractExtension;
import com.powsybl.security.SecurityAnalysisParameters;

import java.util.List;
import java.util.Map;
import java.util.Optional;

/**
 * @author Geoffroy Jamgotchian {@literal }
 */
public class OpenSecurityAnalysisParameters extends AbstractExtension {

    private boolean createResultExtension = CREATE_RESULT_EXTENSION_DEFAULT_VALUE;

    private boolean contingencyPropagation = CONTINGENCY_PROPAGATION_DEFAULT_VALUE;

    private int threadCount = THREAD_COUNT_DEFAULT_VALUE;

    private boolean dcFastMode = DC_FAST_MODE_DEFAULT_VALUE;

    public static final String CREATE_RESULT_EXTENSION_PARAM_NAME = "createResultExtension";
    public static final boolean CREATE_RESULT_EXTENSION_DEFAULT_VALUE = false;
    public static final String CONTINGENCY_PROPAGATION_PARAM_NAME = "contingencyPropagation";
    public static final boolean CONTINGENCY_PROPAGATION_DEFAULT_VALUE = true;
    public static final String THREAD_COUNT_PARAM_NAME = "threadCount";
    public static final int THREAD_COUNT_DEFAULT_VALUE = 1;
    public static final String DC_FAST_MODE_PARAM_NAME = "dcFastMode";
    public static final boolean DC_FAST_MODE_DEFAULT_VALUE = false;
    public static final List SPECIFIC_PARAMETERS_NAMES = List.of(CREATE_RESULT_EXTENSION_PARAM_NAME,
            CONTINGENCY_PROPAGATION_PARAM_NAME,
            THREAD_COUNT_PARAM_NAME,
            DC_FAST_MODE_PARAM_NAME);

    @Override
    public String getName() {
        return "open-security-analysis-parameters";
    }

    public boolean isCreateResultExtension() {
        return createResultExtension;
    }

    public OpenSecurityAnalysisParameters setCreateResultExtension(boolean createResultExtension) {
        this.createResultExtension = createResultExtension;
        return this;
    }

    public boolean isContingencyPropagation() {
        return contingencyPropagation;
    }

    public OpenSecurityAnalysisParameters setContingencyPropagation(boolean contingencyPropagation) {
        this.contingencyPropagation = contingencyPropagation;
        return this;
    }

    public boolean isDcFastMode() {
        return dcFastMode;
    }

    public int getThreadCount() {
        return threadCount;
    }

    public OpenSecurityAnalysisParameters setThreadCount(int threadCount) {
        if (threadCount < 1) {
            throw new IllegalArgumentException("Invalid thread count value: " + threadCount);
        }
        this.threadCount = threadCount;
        return this;
    }

    public OpenSecurityAnalysisParameters setDcFastMode(boolean dcFastMode) {
        this.dcFastMode = dcFastMode;
        return this;
    }

    public static OpenSecurityAnalysisParameters getOrDefault(SecurityAnalysisParameters parameters) {
        OpenSecurityAnalysisParameters parametersExt = parameters.getExtension(OpenSecurityAnalysisParameters.class);
        if (parametersExt == null) {
            parametersExt = new OpenSecurityAnalysisParameters();
        }
        return parametersExt;
    }

    public static OpenSecurityAnalysisParameters load() {
        return load(PlatformConfig.defaultConfig());
    }

    public static OpenSecurityAnalysisParameters load(PlatformConfig platformConfig) {
        OpenSecurityAnalysisParameters parameters = new OpenSecurityAnalysisParameters();
        platformConfig.getOptionalModuleConfig("open-security-analysis-default-parameters")
                .ifPresent(config -> parameters
                        .setCreateResultExtension(config.getBooleanProperty(CREATE_RESULT_EXTENSION_PARAM_NAME, CREATE_RESULT_EXTENSION_DEFAULT_VALUE))
                        .setContingencyPropagation(config.getBooleanProperty(CONTINGENCY_PROPAGATION_PARAM_NAME, CONTINGENCY_PROPAGATION_DEFAULT_VALUE))
                        .setThreadCount(config.getIntProperty(THREAD_COUNT_PARAM_NAME, THREAD_COUNT_DEFAULT_VALUE))
                        .setDcFastMode(config.getBooleanProperty(DC_FAST_MODE_PARAM_NAME, DC_FAST_MODE_DEFAULT_VALUE)));
        return parameters;
    }

    public static OpenSecurityAnalysisParameters load(Map properties) {
        return new OpenSecurityAnalysisParameters()
                .update(properties);
    }

    public OpenSecurityAnalysisParameters update(Map properties) {
        Optional.ofNullable(properties.get(CREATE_RESULT_EXTENSION_PARAM_NAME))
                .ifPresent(value -> this.setCreateResultExtension(Boolean.parseBoolean(value)));
        Optional.ofNullable(properties.get(CONTINGENCY_PROPAGATION_PARAM_NAME))
                .ifPresent(value -> this.setContingencyPropagation(Boolean.parseBoolean(value)));
        Optional.ofNullable(properties.get(THREAD_COUNT_PARAM_NAME))
                .ifPresent(value -> this.setThreadCount(Integer.parseInt(value)));
        Optional.ofNullable(properties.get(DC_FAST_MODE_PARAM_NAME))
                .ifPresent(value -> this.setDcFastMode(Boolean.parseBoolean(value)));
        return this;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy