完成了一个潮流计算程序

 用C++实现了一个潮流计算程序,是高斯-塞得尔潮流计算

使用了boost,STL库,

从文件中读入原始数据,格式为THFormat

在程序中实现了个元件类从文件中读取自动生成的方法,设计时模仿了MFC中得Runtime_class的宏,定义了两个宏,一个宏用于在类的定义中(h),展开后是一个静态常量(int型)声明,两个宏用于在类的实现中,展开后是那个静态常量的定义主要完成向BuildManager注册元件类的标识符和函数指针(该函数完成从字符串构造出元件类实例的功能),类似于委托机制.节点导纳矩阵,采用十字链表,每行的头,存储该节点对地的导纳.对于节点(PQ节点,PV节点和平衡节点),我使用状态模式(NodeStates)实现不同行为时,产生状态的转换

这样做的好处就是,新增元件类,只需使用宏,就可以完成对象的创建.无需使用switch语句判断需要建立那个对象类.使用boost类库中的ptr_vector,好处就不在这儿说了

在THFormat格式中,之间将GenerCV的P转化成了标识值,

使用高斯-塞得尔潮流计算,设定epsilon=0.000001时,计算结果和实验数据的res计算结果吻合(各节点电压的小数点后四位相同),迭代次数38次

对于节点电压迭代公式中的Pi-jQi要注意是注入系统功率的Pi+jQi的共扼复数,对于PV节点要注意电压大小不变,相交变

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
好的,以下是一个使用Matlab编写的潮流计算程序代码示例: ```matlab % 定义节点和线路数据 bus_data = [ 1, 3, 0, 0; 2, 2, -0.5, -0.3; 3, 2, -0.8, -0.6; 4, 2, -0.3, -0.2 ]; line_data = [ 1, 2, 0.2, 0.4, 0.0; 1, 3, 0.1, 0.3, 0.0; 2, 3, 0.15, 0.35, 0.0; 2, 4, 0.1, 0.3, 0.0; 3, 4, 0.12, 0.32, 0.0 ]; % 定义潮流计算函数 function [voltage, angle, p, q] = power_flow(bus_data, line_data) % 这里省略了潮流计算的具体实现,可以使用牛顿-拉夫逊法等方法 % 计算完成后返回各个节点的电压、相角、有功功率、无功功率等信息 % 这里假设潮流计算结果保存在各个变量中 voltage = [1.0; 1.02; 1.03; 1.01]; % 节点电压 angle = [0.0; -0.02; -0.05; -0.01]; % 相角 p = [0.0; -0.5; -0.8; -0.3]; % 有功功率 q = [0.0; -0.3; -0.6; -0.2]; % 无功功率 end % 调用潮流计算函数 [voltage, angle, p, q] = power_flow(bus_data, line_data); % 输出结果 for i = 1:size(bus_data, 1) fprintf("节点 %d:\n", bus_data(i, 1)); fprintf("电压:%.2f V\n", voltage(i)); fprintf("相角:%.2f rad\n", angle(i)); fprintf("有功功率:%.2f MW\n", p(i)); fprintf("无功功率:%.2f MVar\n", q(i)); end ``` 这个Matlab代码与之前的Python示例代码类似,假设输入了一个电力系统的节点数据和线路数据,然后调用 `power_flow` 函数计算潮流,最后输出各个节点的电压、相角、有功功率和无功功率等信息。在Matlab中,可以直接使用矩阵和向量进行计算,因此代码中的变量也使用了矩阵和向量。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值