package com.njcn.utils.sagDomain;

import com.njcn.utils.PubUtils;


/*****************************
 * 暂降域算法中的公共类
 * add by yxb
 * 2021-12-14
 ****************************/
public class SagDomainUtils {


    /*****************************
     * 计算故障前故障点电压
     * runVoltage 运行电压
     * nominalVoltage 额定电压
     * 实数：realPart = 实际运行电压/额定电压
     * 虚数：imaginaryPart = (1.05的平方-系数的平方)再开根号算出来
     * 如果前面运行电压百分比计算值大于1.05，那么后面的虚部值就是负数，小于1.05，虚部值就是正数。
     ****************************/
    public static Complex getVpre(double runVoltage, double nominalVoltage) {
        // 系数 运行电压/额定电压
        double realPart = PubUtils.doubleRound(4, runVoltage / nominalVoltage);
        // 求绝对值
        double sqrtValue = Math.abs(Math.pow(1.05, 2) - Math.pow(realPart, 2));
        // 算出虚部部分
        double imaginaryPart = PubUtils.doubleRound(9, Math.sqrt(sqrtValue));
        // 根据值比较来判断值正负值
        if (realPart > 1.05) {
            imaginaryPart = -imaginaryPart;
        }
        // 返回一个复数
        Complex complex = new Complex(realPart, imaginaryPart);
        return complex;
    }
}
