• 大小: 19KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-06
  • 语言: C/C++
  • 标签: C语言  潮流计算  

资源简介

本程序潮流计算部分采用牛顿拉夫逊极坐标法进行计算,求解一次多元方程采用高斯列主元分解法进行求解。根据工程实际,在存储文件实时记录产生文件时间。此外本程序特意增加了文件查看功能,方便文件的查看。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#include
#include
void dataprepare(void);
void initial(void);
void Yc(void);
void showy(void);
double detpqc(void);
void showdetav(void);
void Jrc(void);
void showdetpq(void);
void Gauss(void);
void showj(void);
void showsolution(void);
char save2file(void);
char option(void);
int chose(void);
int list(char filename[]int ichar dstn[]);
struct PQV
{
  char name[5];
  double vb;
  double p;
  double q;
  double v;
  double ag;
}*pqv;
struct Y{
double G;
double B;
}**y;
struct LZ
{
char name1[5];
double vb1;
char name2[5];
double vb2;
double r;
double x;
double b;
}*lz;
struct TZ
{
char name1[5];
double vb1;
char name2[5];
double vb2;
double x;
double k1;
double k2;
}*tz;
char fsource[20];
int pqnum=0pvnum=0lznum=0tznum=0;
int temp1=0temp2=0temp3=0temp4=0;
int diedai=0;
int numw=1numofw=0;
double *detpq*detav*Pi*Qierrorwucha**J; /* detpq节点功率的误差量,detav修正量,Pi节点的有功功率 */
char cchdstname[20]filename[20];
int main()
{
opt:c=option();
if(c==‘1‘)goto opt1;
else if(c==‘2‘)
{
list(“1.bin“1filename);
system(“mode con:cols=100 lines=30 & color 07“);
while(c!=‘0‘)
{
system(“cls“);
printf(“         ################################计算结果文件查看################################\n“);
printf(“                         [8]上一个 [2]下一个 [5]查看 [-]删除文件 【0】退出\n\n“);
list(“1.bin“0filename);
chose();
}
   goto opt; 
}
else if(c==‘0‘)exit(0);
else goto opt; 
opt1:dataprepare();
init:initial();
Yc();
printf(“输入允许误差量:“);
scanf(“%lf“&wucha);
printf(“选择模式:a.详情;b.简单:“);
redo:fflush(stdin);
c=getchar();
if(c!=‘a‘&&c!=‘b‘&&c!=‘A‘&&c!=‘B‘)
{printf(“输入错误!重新输入:“);goto redo;}
if(c!=‘B‘&&c!=‘b‘)showy();
error=detpqc();
 showdetpq();
while(error>wucha&&error<100)
{
if(c!=‘B‘&&c!=‘b‘)
{
printf(“\t\t是否继续迭代    <空格:是  R/r:重赋初值  E/e:退出潮流计算>?\n“);
ifdie: fflush(stdin);
ch=getch();
switch(ch)
{
case ‘ ‘:break;
case ‘R‘:;
case ‘r‘:goto init;break;
case ‘E‘:;
case ‘e‘:goto opt;break;
default: goto ifdie;
}
}

diedai++;
Jrc();
if(c!=‘B‘&&c!=‘b‘)
{
printf(“\n>>>>>>>>>>>>>>>>>>>第 %d 次迭代<<<<<<<<<<<<<<<<<<<<<\n“diedai);
showj();
}
Gauss();
if(c!=‘B‘&&c!=‘b‘)showdetav();
for(temp1=0;temp1 pqv[temp1].ag=pqv[temp1].ag-detav[temp1];
for(temp1=0;temp1 pqv[temp1].v=pqv[temp1].v-detav[temp1+pqnum+pvnum];
error=detpqc();
if(c!=‘B‘&&c!=‘b‘)
showdetpq();
}
if(error>=300||error<0)
{
printf(“\t\t迭代不收敛    ?\n“);
what: fflush(stdin);
ch=getch();
switch(ch)
{
case ‘R‘:;
case ‘r‘:goto init;break;
case ‘E‘:;
case ‘e‘:goto opt;break;
default: goto what;
}
}
showsolution();
ch=save2file();
if(ch==‘1‘)goto opt;
els

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件         476  2014-03-27 21:34  a1.data
     文件         511  2014-03-27 21:28  pf1.dat
     文件         545  2013-11-13 20:29  pf2.dat
     文件         511  2013-10-27 15:33  pf3.dat
     文件       18206  2013-11-19 05:29  powerflow.c
     文件       21504  2013-11-19 02:26  powerflow.exe
     文件         573  2013-11-19 02:54  solution1.data
     文件         573  2013-11-19 03:47  solution2.data
     文件         573  2013-11-19 04:30  solution3.data
     文件         573  2013-11-19 04:27  solution4.data

评论

共有 条评论