⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 th2psat

📁 用于电力系统的一个很好的分析软件
💻
📖 第 1 页 / 共 2 页
字号:
#!/usr/bin/perl -w# TH2PSAT converts TH data file into PSAT data file## TH2PSAT <OPTIONS> FILEINPUT <FILEOUTPUT>## Author:  Federico Milano# Date:    25-Jun-2003# Version: 1.0.0##E-mail:    fmilano@thunderbox.uwaterloo.ca#Web-site:  http://thunderbox.uwaterloo.ca/~fmilanouse strict;# -----------------------------------------------------------------------# variable declaration# -----------------------------------------------------------------------my $nargin = 0;my $verbose = 0;my $helpmsg = 0;my ($i,$h,$k);my $format;my $n = 2;my (@dum,$idx);#  System variablesmy $pbas = 100;my $freq = 60;#  BUS variablesmy $nbus = 0;my $npv = -1;my $npq = -1;my $nsh = -1;my (@idxpv, @idxpq, @idxsh, @idxzip);my (@ein,@ang,@pag,@prg,@qmi,@qma,@tap,@pac,@prc,@psh,@qsh,@vmi,@vma);	    my (%busname,%genname,%busidx);#  Slack variablesmy $nsw = -1;my (@idxsw,@vsw,@tsw);# LINE SHUNT variablesmy $nshunt = -1;my (@shname,@gsh,@bsh);#  LINE variablesmy $nline = -1;my (@busfr,@busto);my (@rest,@reat,@susc,@kt,@phsf,@tfas,@sbas);	    #  ZIP LOAD variablesmy $nzip = -1;my (@ppzip,@pqzip,@ipzip,@iqzip,@zpzip,@zqzip,@kvzip);#  LTC variablesmy $nltc = -1;my (@ltcfr,@ltcto,@rltc,@xltc,@mltc,@mstep,@mmax,@mmin);# -----------------------------------------------------------------------# check inputs# -----------------------------------------------------------------------$nargin = @ARGV;$nargin || die "Error: No input data file.\n";my $title1 = 'Generic TH Data Format File '.$ARGV[0];my $title2;# -----------------------------------------------------------------------# check options# -----------------------------------------------------------------------while ($ARGV[0] =~ /^-/) {    if ($ARGV[0] =~ /v/) {$verbose = 1;}    if ($ARGV[0] =~ /h/) {$helpmsg = 1;}    shift(@ARGV);    $nargin--;    if ($nargin == 0) { 	last;    }} # -----------------------------------------------------------------------# help (if requested)# -----------------------------------------------------------------------if ($helpmsg) {    print "\nTH2PSAT converts TH data files into PSAT data files.\n\n";    print "th2psat <options> fileinput <fileoutput>\n";    print "  -v   verbose\n";    print "  -h   print this help and exit\n\n";    print "Author:   Federico Milano\n";    print "Date:     14-Jan-2004\n";    print "Version:  1.0.0\n\n";    print "E-mail:   fmilano\@thunderbox.uwaterloo.ca\n";    print "Web-site: http://thunderbox.uwaterloo.ca/~fmilano\n";    die "\n";}# -----------------------------------------------------------------------# define output file name (if necessary)# -----------------------------------------------------------------------if ($nargin == 1) {    $ARGV[1] = $ARGV[0];    $ARGV[1] =~ s/^d*_*/d_/;    $ARGV[1] =~ s/[^\w\.]/_/g;    $ARGV[1] =~ s/\..+$/.m/;} elsif ($nargin == 0) {    die "Error: Input file name is missing.\n";}# -----------------------------------------------------------------------# open input data file# -----------------------------------------------------------------------print "Opening TH file \"$ARGV[0]\"...\n";carret();open(IN,$ARGV[0]) || die "cannot open $ARGV[0]: $!\n";# -----------------------------------------------------------------------# scan input data file# -----------------------------------------------------------------------$title2 = <IN>;$_ = <IN>; # dummy linewhile (<IN>) {    chomp;    $n++;    @dum = split(/\s+/);    if (/^\*/) { # comment 	next;    } elsif (/^\s+/) { # blank line	$verbose && print "Line $n is blank\n";	next;    } elsif ($_ eq '') { # empty line	$verbose && print "Line $n is empty\n";	next;    } elsif (/^SYSBASE/) { # System base 	$pbas = $dum[2];    } elsif (/^SYSF(RE|ER)Q/)  { # System frequency 	$freq = $dum[2];    } elsif (/^THLINE/) { # transmission line	$nline++;	$busfr[$nline] = $dum[2];	$busto[$nline] = $dum[3];	$rest[$nline] = $dum[4];	$reat[$nline] = $dum[5];	$susc[$nline] = -2*$dum[6];	$kt[$nline] = 0;	$idx = addbus($dum[2]);	$idx = addbus($dum[3]);    } elsif (/^LINE/) { # transmission line	$nline++;	$busfr[$nline] = $dum[2];	$busto[$nline] = $dum[3];	$rest[$nline] = $dum[4];	$reat[$nline] = $dum[5];	$susc[$nline] = -2*$dum[6];	$sbas[$nline] = $dum[7];	$kt[$nline] = 0;		$idx = addbus($dum[2]);	$idx = addbus($dum[3]);    } elsif (/^THTRFO/) { # transformer	$nline++;	$busfr[$nline] = $dum[2];	$busto[$nline] = $dum[3];	$rest[$nline] = $dum[4];	$reat[$nline] = $dum[5];	$tfas[$nline] = $dum[6]/100;	$kt[$nline] = 1;		$idx = addbus($dum[2]);	$idx = addbus($dum[3]);    } elsif (/^TRFOPH/) { # transformer	$nline++;	$busfr[$nline] = $dum[2];	$busto[$nline] = $dum[3];	$rest[$nline] = $dum[4];	$reat[$nline] = $dum[5];	$tfas[$nline] = $dum[6]/100;	$phsf[$nline] = $dum[7];	$kt[$nline] = 1;		$idx = addbus($dum[2]);	$idx = addbus($dum[3]);    } elsif (/^TRFOB2/) { # transformer	$nline++;	$busfr[$nline] = $dum[2];	$busto[$nline] = $dum[3];	$rest[$nline] = $dum[4];	$reat[$nline] = $dum[5];	$tfas[$nline] = $dum[10]/100;	$kt[$nline] = 1;	$nshunt++;	$shname[$nshunt] = $busfr[$nline];	$gsh[$nshunt] = $dum[6];	$bsh[$nshunt] = $dum[7];	$nshunt++;	$shname[$nshunt] = $busto[$nline];	$gsh[$nshunt] = $dum[8];	$bsh[$nshunt] = $dum[9];	$idx = addbus($dum[2]);	$idx = addbus($dum[3]);    } elsif (/^TRFO/) { # transformer	$nline++;	$busfr[$nline] = $dum[2];	$busto[$nline] = $dum[3];	$rest[$nline] = $dum[4];	$reat[$nline] = $dum[5];	$tfas[$nline] = $dum[6]/100;	$sbas[$nline] = $dum[7];	$kt[$nline] = 1;	$idx = addbus($dum[2]);	$idx = addbus($dum[3]);    } elsif (/^TAPCV/) { # transformer	# not implemented	print "Warning: TAPCV data are not used";    } elsif (/^TAP/) { # transformer	$nltc++;	$rltc[$nltc] = $dum[4];	$xltc[$nltc] = $dum[5];	if ($dum[16] == 1) { # control on sending side	    $ltcfr[$nltc] = $dum[3];	    $ltcto[$nltc] = $dum[2];	    $mltc[$nltc] = $dum[10]/100;	    $mstep[$nltc] = $dum[12]/100;	} else { # control on ending side	    $ltcfr[$nltc] = $dum[2];	    $ltcto[$nltc] = $dum[3];	    $mltc[$nltc] = $dum[11]/100;	    $mstep[$nltc] = $dum[13]/100;	}		$mmax[$nltc] = $dum[17]*$mstep[$nltc]+$mltc[$nltc];	$mmin[$nltc] = $dum[18]*$mstep[$nltc]+$mltc[$nltc];	if ($dum[6] || $dum[7]) {	    $nshunt++;	    $shname[$nshunt] = $ltcfr[$nline];	    $gsh[$nshunt] = $dum[6];	    $bsh[$nshunt] = $dum[7];	}	if ($dum[8] || $dum[9]) {	    $nshunt++;	    $shname[$nshunt] = $ltcto[$nline];	    $gsh[$nshunt] = $dum[8];	    $bsh[$nshunt] = $dum[9];	}	$idx = addbus($dum[2]);	$idx = addbus($dum[3]);    } elsif (/^GENERCV/) { # PV generator	$idx = addbus($dum[2]);	$npv++;	$idxpv[$npv] = $idx;	$genname{$dum[1]} = $idx;	$pag[$idx] = $dum[3]/$pbas;	$prg[$idx] = $dum[4]/$pbas;    } elsif (/^GENERDATA/) { # generator data	$idx = $genname{$dum[1]};	$qmi[$idx] = $dum[10]/$pbas;	$qma[$idx] = $dum[9]/$pbas;	$vmi[$idx] = $dum[12];	$vma[$idx] = $dum[11];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -