org.interpss.mapper.report.AcscResultMapperImpl.java Source code

Java tutorial

Introduction

Here is the source code for org.interpss.mapper.report.AcscResultMapperImpl.java

Source

/*
 * @(#)AcscResultMapperImpl.java   
 *
 * Copyright (C) 2006 www.interpss.org
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU LESSER GENERAL PUBLIC LICENSE
 * as published by the Free Software Foundation; either version 2.1
 * of the License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * @Author Mike Zhou
 * @Version 1.0
 * @Date 09/15/2006
 * 
 *   Revision History
 *   ================
 *
 */

package org.interpss.mapper.report;

import java.util.ArrayList;
import java.util.List;

import org.apache.commons.math3.complex.ComplexFormat;
import org.eclipse.emf.common.util.EList;
import org.interpss.numeric.datatype.Complex3x1;
import org.interpss.numeric.datatype.Unit.UnitType;
import org.interpss.numeric.util.Number2String;
import org.interpss.report.bean.acsc.RptAcscVoltAmpsBean;
import org.interpss.report.bean.acsc.RptFaultSummaryBean;

import com.interpss.common.util.IpssLogger;
import com.interpss.core.aclf.AclfBranch;
import com.interpss.core.acsc.AcscBranch;
import com.interpss.core.acsc.AcscBus;
import com.interpss.core.acsc.AcscNetwork;
import com.interpss.core.acsc.fault.AcscBranchFault;
import com.interpss.core.acsc.fault.AcscBusFault;
import com.interpss.core.acsc.fault.SimpleFaultCode;
import com.interpss.core.algo.SimpleFaultAlgorithm;
import com.interpss.core.net.Branch;
import com.interpss.core.net.Bus;

public class AcscResultMapperImpl {
    public static void mapAcscFaultSummary(AcscNetwork faultNet, SimpleFaultAlgorithm algo,
            RptFaultSummaryBean bean) {
        double baseKVA = faultNet.getBaseKva();
        Object fault = algo.getFaultList().get(0);
        if (fault instanceof AcscBranchFault) {
            AcscBranchFault fBranch = (AcscBranchFault) fault;
            double baseV = fBranch.getFaultBranch().getFromAcscBus().getBaseVoltage();
            bean.setType(RptFaultSummaryBean.Type_BranchFault);
            bean.setBusId(fBranch.getFaultBranch().getId());
            bean.setBusName(fBranch.getFaultBranch().getName());
            bean.setFaultType("BranchFault");
            bean.setFaultCode(fBranch.getFaultCode().toString());
            bean.setFaultAmpspu(new ComplexFormat().format(fBranch.getFaultResult().getSCCurrent_012().b_1));
            bean.setFaultAmps(new ComplexFormat()
                    .format(fBranch.getFaultResult().getSCCurrent_012(UnitType.Amp, baseV, baseKVA).b_1));
            bean.setFaultDistance(Number2String.toStr("##0.0", fBranch.getDistance() * 100.0) + "%");
        } else {
            AcscBusFault fBus = (AcscBusFault) fault;
            double baseV = fBus.getAcscBus().getBaseVoltage();
            bean.setType(RptFaultSummaryBean.Type_BusFault);
            bean.setBusId(fBus.getAcscBus().getId());
            bean.setBusName(fBus.getAcscBus().getName());
            bean.setFaultType("BusFault");
            bean.setFaultCode(fBus.getFaultCode().toString());
            bean.setFaultAmpspu(new ComplexFormat().format(fBus.getFaultResult().getSCCurrent_012().b_1));
            bean.setFaultAmps(new ComplexFormat()
                    .format(fBus.getFaultResult().getSCCurrent_012(UnitType.Amp, baseV, baseKVA).b_1));
            bean.setFaultDistance(" ");
        }
    }

    public static Object[] createAcscVoltAmpsBeanArray(AcscNetwork faultNet, SimpleFaultAlgorithm algo) {
        List<RptAcscVoltAmpsBean> list = new ArrayList<RptAcscVoltAmpsBean>();
        try {
            double baseKva = faultNet.getBaseKva();
            AcscBusFault fault = algo.getFaultList().get(0);
            if (fault != null) {
                fault.getFaultResult().calContributingCurrent();
                if (fault.getFaultCode() == SimpleFaultCode.GROUND_3P) {
                    for (Bus b : faultNet.getBusList()) {
                        AcscBus bus = (AcscBus) b;
                        RptAcscVoltAmpsBean bean = new RptAcscVoltAmpsBean();
                        bean.setRecType(RptAcscVoltAmpsBean.RecType_Bus3P);
                        bean.setBusName(bus.getName());
                        bean.setBusId(bus.getId());
                        double vpu = fault.getFaultResult().getBusVoltage_012(bus).b_1.abs();
                        Complex3x1 ampPu = fault.getFaultResult().getBusContriAmps_012(bus);
                        Complex3x1 amps = fault.getFaultResult().getBusContriAmps_012(bus, UnitType.Amp,
                                bus.getBaseVoltage(), baseKva);
                        bean.setBusFaultVoltpu(Number2String.toStr("####0.##", vpu));
                        bean.setBusFaultVolt(Number2String.toStr("######0.#", vpu * bus.getBaseVoltage()));
                        bean.setBusContribAmpspu(Number2String.toStr("####0.##", ampPu.b_1.abs()));
                        bean.setBusContribAmps(Number2String.toStr("######0.#", amps.b_1.abs()));
                        list.add(bean);
                    }
                } else {
                    for (Bus b : faultNet.getBusList()) {
                        AcscBus bus = (AcscBus) b;
                        RptAcscVoltAmpsBean bean = new RptAcscVoltAmpsBean();
                        bean.setRecType(RptAcscVoltAmpsBean.RecType_Bus012);
                        bean.setBusName(bus.getName());
                        bean.setBusId(bus.getId());

                        Complex3x1 v012 = fault.getFaultResult().getBusVoltage_012(bus);
                        double vpu1 = v012.b_1.abs();
                        bean.setBusFaultVoltpu(Number2String.toStr("####0.##", vpu1));
                        bean.setBusFaultVolt(Number2String.toStr("######0.#", vpu1 * bus.getBaseVoltage()));

                        double vpu0 = v012.a_0.abs();
                        bean.setBusFaultVolt0pu(Number2String.toStr("####0.##", vpu0));
                        bean.setBusFaultVolt0(Number2String.toStr("######0.#", vpu0 * bus.getBaseVoltage()));

                        double vpu2 = v012.c_2.abs();
                        bean.setBusFaultVolt2pu(Number2String.toStr("####0.##", vpu2));
                        bean.setBusFaultVolt2(Number2String.toStr("######0.#", vpu2 * bus.getBaseVoltage()));

                        Complex3x1 ampPu = fault.getFaultResult().getBusContriAmps_012(bus);
                        Complex3x1 amps = fault.getFaultResult().getBusContriAmps_012(bus, UnitType.Amp,
                                bus.getBaseVoltage(), baseKva);
                        bean.setBusContribAmpspu(Number2String.toStr("####0.##", ampPu.b_1.abs()));
                        bean.setBusContribAmps(Number2String.toStr("######0.#", amps.b_1.abs()));
                        list.add(bean);
                    }

                    for (Bus b : faultNet.getBusList()) {
                        AcscBus bus = (AcscBus) b;
                        RptAcscVoltAmpsBean bean = new RptAcscVoltAmpsBean();
                        bean.setRecType(RptAcscVoltAmpsBean.RecType_BusABC);
                        bean.setBusName(bus.getName());
                        bean.setBusId(bus.getId());

                        Complex3x1 v012 = fault.getFaultResult().getBusVoltage_012(bus);
                        Complex3x1 vabc = Complex3x1.z12_to_abc(v012);

                        double vpu1 = vabc.a_0.abs();
                        bean.setBusFaultVoltApu(Number2String.toStr("####0.##", vpu1));
                        bean.setBusFaultVoltA(Number2String.toStr("#####0.#", vpu1 * bus.getBaseVoltage()));

                        double vpu0 = vabc.b_1.abs();
                        bean.setBusFaultVoltBpu(Number2String.toStr("####0.##", vpu0));
                        bean.setBusFaultVoltB(Number2String.toStr("######0.#", vpu0 * bus.getBaseVoltage()));

                        double vpu2 = vabc.c_2.abs();
                        bean.setBusFaultVoltCpu(Number2String.toStr("####0.##", vpu2));
                        bean.setBusFaultVoltC(Number2String.toStr("######0.#", vpu2 * bus.getBaseVoltage()));

                        Complex3x1 ampPu = fault.getFaultResult().getBusContriAmps_012(bus);
                        Complex3x1 amps = fault.getFaultResult().getBusContriAmps_012(bus, UnitType.Amp,
                                bus.getBaseVoltage(), baseKva);
                        bean.setBusContribAmpspu(Number2String.toStr("####0.##", ampPu.b_1.abs()));
                        bean.setBusContribAmps(Number2String.toStr("######0.#", amps.b_1.abs()));

                        list.add(bean);
                    }
                }

                fault.getFaultResult().calBranchCurrent();
                if (fault.getFaultCode() == SimpleFaultCode.GROUND_3P) {
                    EList<AclfBranch> branchList = faultNet.getBranchList();
                    int cnt = 0;
                    for (int n = 0; n < branchList.size(); n++) {
                        AcscBranch bra = (AcscBranch) branchList.get(n);
                        RptAcscVoltAmpsBean bean = new RptAcscVoltAmpsBean();
                        bean.setRecType(RptAcscVoltAmpsBean.RecType_Branch3P);
                        bean.setBranchId(bra.getId());
                        bean.setBranchName(bra.getName());
                        Complex3x1 cpu = fault.getFaultResult().getBranchAmpsFrom2To_012(++cnt);
                        Complex3x1 camp = fault.getFaultResult().getBranchAmpsFrom2To_012(cnt, UnitType.Amp,
                                bra.getFromBus().getBaseVoltage(), baseKva);
                        bean.setBranchFaultAmpspu(Number2String.toStr("###0.##", cpu.b_1.abs()));
                        bean.setBranchFaultAmps(Number2String.toStr("######0.#", camp.b_1.abs()));
                        list.add(bean);
                    }
                } else {
                    EList<AclfBranch> branchList = faultNet.getBranchList();
                    int cnt = 0;
                    for (int n = 0; n < branchList.size(); n++) {
                        AcscBranch bra = (AcscBranch) branchList.get(n);
                        RptAcscVoltAmpsBean beanFrom2To = new RptAcscVoltAmpsBean();
                        beanFrom2To.setRecType(RptAcscVoltAmpsBean.RecType_Branch012);
                        beanFrom2To.setBranchId(bra.getId());
                        beanFrom2To.setBranchName(bra.getName());

                        RptAcscVoltAmpsBean beanTo2From = new RptAcscVoltAmpsBean();
                        beanTo2From.setRecType(RptAcscVoltAmpsBean.RecType_Branch012);
                        beanTo2From.setBranchId("<--    ");
                        beanTo2From.setBranchName("");

                        try {
                            Complex3x1 cpu = fault.getFaultResult().getBranchAmpsFrom2To_012(++cnt);
                            Complex3x1 camp = fault.getFaultResult().getBranchAmpsFrom2To_012(cnt, UnitType.Amp,
                                    bra.getFromBus().getBaseVoltage(), faultNet.getBaseKva());
                            beanFrom2To.setBranchFaultAmpspu(Number2String.toStr("###0.##", cpu.b_1.abs()));
                            beanFrom2To.setBranchFaultAmps(Number2String.toStr("######0.", camp.b_1.abs()));
                            beanFrom2To.setBranchFaultAmps0pu(Number2String.toStr("###0.##", cpu.a_0.abs()));
                            beanFrom2To.setBranchFaultAmps0(Number2String.toStr("######0.#", camp.a_0.abs()));
                            beanFrom2To.setBranchFaultAmps2pu(Number2String.toStr("###0.##", cpu.c_2.abs()));
                            beanFrom2To.setBranchFaultAmps2(Number2String.toStr("######0.#", camp.c_2.abs()));

                            cpu = fault.getFaultResult().getBranchAmpsTo2From_012(cnt);
                            camp = fault.getFaultResult().getBranchAmpsTo2From_012(cnt, UnitType.Amp,
                                    bra.getToBus().getBaseVoltage(), faultNet.getBaseKva());
                            beanTo2From.setBranchFaultAmpspu(Number2String.toStr("###0.##", cpu.b_1.abs()));
                            beanTo2From.setBranchFaultAmps(Number2String.toStr("######0.#", camp.b_1.abs()));
                            beanTo2From.setBranchFaultAmps0pu(Number2String.toStr("###0.##", cpu.a_0.abs()));
                            beanTo2From.setBranchFaultAmps0(Number2String.toStr("######0.#", camp.a_0.abs()));
                            beanTo2From.setBranchFaultAmps2pu(Number2String.toStr("###0.##", cpu.c_2.abs()));
                            beanTo2From.setBranchFaultAmps2(Number2String.toStr("######0.#", camp.c_2.abs()));
                        } catch (Exception e) {
                            IpssLogger.logErr(e);
                        }
                        list.add(beanFrom2To);
                        list.add(beanTo2From);
                    }

                    cnt = 0;
                    for (int n = 0; n < branchList.size(); n++) {
                        AcscBranch bra = (AcscBranch) branchList.get(n);
                        RptAcscVoltAmpsBean beanFrom2To = new RptAcscVoltAmpsBean();
                        RptAcscVoltAmpsBean beanTo2From = new RptAcscVoltAmpsBean();
                        beanFrom2To.setRecType(RptAcscVoltAmpsBean.RecType_BranchABC);
                        beanFrom2To.setBranchId(bra.getId());
                        beanFrom2To.setBranchName(bra.getName());

                        beanTo2From.setRecType(RptAcscVoltAmpsBean.RecType_BranchABC);
                        beanTo2From.setBranchId("<--     ");
                        beanTo2From.setBranchName("");

                        try {
                            Complex3x1 cpu = fault.getFaultResult().getBranchAmpsFrom2To_abc(++cnt);
                            Complex3x1 camp = fault.getFaultResult().getBranchAmpsFrom2To_abc(cnt, UnitType.Amp,
                                    bra.getFromBus().getBaseVoltage(), faultNet.getBaseKva());
                            beanFrom2To.setBranchFaultAmpsApu(Number2String.toStr("###0.##", cpu.a_0.abs()));
                            beanFrom2To.setBranchFaultAmpsA(Number2String.toStr("######0.#", camp.a_0.abs()));
                            beanFrom2To.setBranchFaultAmpsBpu(Number2String.toStr("###0.##", cpu.b_1.abs()));
                            beanFrom2To.setBranchFaultAmpsB(Number2String.toStr("######0.#", camp.b_1.abs()));
                            beanFrom2To.setBranchFaultAmpsCpu(Number2String.toStr("###0.##", cpu.c_2.abs()));
                            beanFrom2To.setBranchFaultAmpsC(Number2String.toStr("######0.#", camp.c_2.abs()));

                            cpu = fault.getFaultResult().getBranchAmpsTo2From_abc(cnt);
                            camp = fault.getFaultResult().getBranchAmpsTo2From_abc(cnt, UnitType.Amp,
                                    bra.getToBus().getBaseVoltage(), faultNet.getBaseKva());
                            beanTo2From.setBranchFaultAmpsApu(Number2String.toStr("###0.##", cpu.a_0.abs()));
                            beanTo2From.setBranchFaultAmpsA(Number2String.toStr("######0.#", camp.a_0.abs()));
                            beanTo2From.setBranchFaultAmpsBpu(Number2String.toStr("###0.##", cpu.b_1.abs()));
                            beanTo2From.setBranchFaultAmpsB(Number2String.toStr("######0.#", camp.b_1.abs()));
                            beanTo2From.setBranchFaultAmpsCpu(Number2String.toStr("###0.##", cpu.c_2.abs()));
                            beanTo2From.setBranchFaultAmpsC(Number2String.toStr("######0.#", camp.c_2.abs()));
                        } catch (Exception e) {
                            IpssLogger.logErr(e);
                        }
                        list.add(beanFrom2To);
                        list.add(beanTo2From);
                    }
                }
            }
        } catch (Exception e) {
            IpssLogger.logErr(e);
            return null;
        }
        return list.toArray();
    }

}