资源简介

电力系统短路电流计算的python3实现;可任意添加节点;有交互界面;

资源截图

代码片段和文件信息

import numpy as np
import math

#=============================================
g_data = []  #存放发电机参数
l_data = []  #存放输电线路参数
t2_data = []     #存放双绕组变压器参数
t3_data = []     #存放三绕组变压器参数
sys_data = []    #存放“系统“参数

# 文本的处理、读取函数
def loadin(fg):  # f:文件  g:保存参数的列表
    for i in f:
        if i[:5] != “=====“:
            if i[:2] != “//“:
                a = i.split(‘‘)
                for i in range(len(a)):
                    a[i] = a[i].strip()
                g.append(a)
        else:
            break

 #定义读取文件内容的函数,在GUI中通过button调用
def read_file(fileName):
    f = open(fileName)

      
    loadin(fg_data)
    loadin(ft2_data)
    loadin(ft3_data)
    loadin(fl_data)                    
    loadin(fsys_data)
    
    f.close()

#=================================================

note = dict() #母线 名称--节点 对应的字典类型
count = 0    #母线节点编号
note_list = []
t3_note = set() # 三绕组变压器中间节点编号记录,后续求电压有名值去掉该节点

line_f = ‘‘   # 先设置line_f为空字符串 若线路中点故障 给其赋值线路的实例

#定义读入母线(节点)名称并标号的函数
def bus_in(datanotenumber):
    global count    #这里count为母线编号,必须是全局变量 --> global 关键字
    if data:  # 这里判断是否空列表,如果“非空”才执行操作!!!
        for i in data:
            if i[number] not in note.keys():
                note[i[number]] = count
                count += 1   
            else:
                continue
    else:
        pass
def t3_bus_in(datanotenumbert3_note):
    global count    #这里count改变必须是全局变量 --> global 关键字
    if data:  # 这里判断是否空列表,如果“非空”才执行操作!!!
        for i in data:
            if i[number] not in note.keys():
                note[i[number]] = count
                t3_note.add(count)
                count += 1   
            else:
                continue
    else:
        pass

def bus_IN(bus_in):
    bus_in(g_datanote2)   # 在输入文件中注意:kV的写法要统一 
    bus_in(t2_datanote2)
    bus_in(t2_datanote3)
    bus_in(t3_datanote2)
    bus_in(t3_datanote3)
    bus_in(t3_datanote4)
    
    t3_bus_in(t3_datanote1t3_note) # 三绕组变压器“中间节点” 实际并不存在
    print(“三绕组变压器中点编号:“t3_note)
    
    bus_in(l_datanote2)
    bus_in(l_datanote3)
    bus_in(sys_datanote1) # “系统“所连接的节点母线

    global note_list
    print(‘节点名称及对应编号:‘)  #打印节点名称及其对应编号
    for i in sorted(note.items()key = lambda item:item[1]):
            print(i)
            note_list.append(i)
    ‘‘‘这里的bus.items()实际上是将bus转换为可迭代对象
    这里key参数对应的lambda表达式的意思则是选取元组中的第二个元素作为比较参数
    lambda x:y中x表示输出参数,y表示lambda 函数的返回值,
    所以采用这种方法可以对字典的value进行排序。
    注意排序后的返回值是一个list,而原字典中的名值对被转换为了list中的元组。‘‘‘

    #创建n*n的Y阵,n为节点数:len(note)(空矩阵,元素=0)dtype指定为复数矩阵

    global Y   # 创建全局变量:Y阵 和 Y0阵
    global Y0
    Y = np.zeros((len(note)len(note))dtype=np.complex64)
    Y0 = np.zeros((len(note)len(note))dtype=np.complex64)

##=======================================================
S_B = 100 #定义基准容量(100MVA)

#创建电压等级及其对应的平均额定电压对照表(字典形式),书本41页
v = [(33.15)(66.3)(1010.5)(1515.75)(3537)(110115)(220230)(330345)(500

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件       52973  2018-11-20 17:05  all_in.py
     文件       30311  2018-11-20 17:05  GUI.py
     文件        1965  2018-11-20 17:07  线路参数.txt

评论

共有 条评论