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

📄 pwrworld2psat

📁 用于电力系统的一个很好的分析软件
💻
📖 第 1 页 / 共 2 页
字号:
	    if ($data[$index{"LineStatus"}] ne "Closed") {next;}	    $nline++;	    $busfr[$nline] = $data[$index{"BusNum"}];	    $busto[$nline] = $data[$index{"BusNum:1"}];	    $kvbase[$nline] = $vn[$busnumb{$data[$index{"BusNum"}]}];	    $kt[$nline] = $vn[$busnumb{$data[$index{"BusNum"}]}] / 		$vn[$busnumb{$data[$index{"BusNum:1"}]}];	    $rest[$nline] = $data[$index{"LineR"}];	    $reat[$nline] = $data[$index{"LineX"}];	    $susc[$nline] = $data[$index{"LineC"}];	    $tap[$nline] = $data[$index{"LineTap"}];	    $phi[$nline] = 0.01745329251994*$data[$index{"LinePhase"}];	    $iijmax[$nline] = $data[$index{"LineAMVA"}]/100;	    if ($index{"LineBMVA"}) {		$pijmax[$nline] = $data[$index{"LineBMVA"}]/100;	    } else {		$pijmax[$nline] = 0;	    }	    if ($index{"LineCMVA"}) {		$sijmax[$nline] = $data[$index{"LineCMVA"}]/100;	    } else {		$sijmax[$nline] = 0;	    }	    if (1*$data[$index{"LineShuntMW"}] || 		1*$data[$index{"LineShuntMVR"}]) {		$nsh++;			$shidx[$nsh] = $data[$index{"BusNum"}];		$kvsh[$nsh] = $vn[$busnumb{$data[$index{"BusNum"}]}];		$gsh[$nsh] = $data[$index{"LineShuntMW"}]/100;		$bsh[$nsh] = $data[$index{"LineShuntMVR"}]/100;	    } 	    if (1*$data[$index{"LineShuntMW:1"}] ||		1*$data[$index{"LineShuntMVR:1"}]) {		$nsh++;		$shidx[$nsh] = $data[$index{"BusNum:1"}];		$kvsh[$nsh] = $vn[$busnumb{$data[$index{"BusNum:1"}]}];		$gsh[$nsh] = $data[$index{"LineShuntMW:1"}]/100;		$bsh[$nsh] = $data[$index{"LineShuntMVR:1"}]/100;	    }     	}    }	}# -----------------------------------------------------------------------# close AUX data file# -----------------------------------------------------------------------close(IN) || die "cannot close $ARGV[0]: $!\n";# -----------------------------------------------------------------------# open output data file# -----------------------------------------------------------------------print "Writing PSAT file \"$ARGV[1]\"...\n";carret();open(OUT,">$ARGV[1]") || die "cannot open $ARGV[1]: $!\n";# -----------------------------------------------------------------------# write output data file# -----------------------------------------------------------------------print OUT "% File generated by PSAT from POWERWORLD data file.\n";print OUT "% "."-" x 78 . "\n";print OUT "% Author:   Federico Milano\n";print OUT "% E-mail:   fmilano\@thunderbox.uwaterloo.ca\n";print OUT "% Web-site: http://thunderbox.uwaterloo.ca/~fmilano\n";print OUT "% "."-" x 78 . "\n";print OUT "% $title1\n";print OUT "% $title2\n\n";# -----------------------------------------------------------------------# write Bus.con# -----------------------------------------------------------------------$format = "%4d %8.2f %8.5f %8.5f %4d %4d;\n";$nbus >= 0 && print OUT "Bus.con = [ ...\n";for ($i = 0; $i <= $nbus; $i++) {    printf OUT $format,$busidx[$i],$vn[$i],$ein[$i],$ang[$i],    $area[$i],$zone[$i];}$nbus >= 0 && printf OUT "  ];\n\n";# -----------------------------------------------------------------------# write SW.con# -----------------------------------------------------------------------$nsw >= 0 && print OUT "SW.con = [ ...\n";$format = "%4d $pbas %8.2f %8.5f 0 " . "%8.5f " x 5 . " 1];\n\n";$h = $busnumb{$slack};$nsw >= 0 && printf OUT $format,$slack,$vn[$h],    $swvolt,$swqmax,$swqmin,$vmax[$h],$vmin[$h],$swpgen;# -----------------------------------------------------------------------# write PV.con# -----------------------------------------------------------------------$npv >= 0 && print OUT "PV.con = [ ...\n";$format = "%4d %8.2f %8.2f " . "%8.5f " x 6 . " 1;\n";for ($i = 0; $i <= $npv; $i++) {    $h = $busnumb{$pvidx[$i]};    printf OUT $format,$pvidx[$i],$pvbase[$i],$vn[$h],    $pgen[$i],$volt[$i],$qmax[$i],$qmin[$i],$vmax[$h],$vmin[$h];}$npv >= 0 && printf OUT "  ];\n\n";# -----------------------------------------------------------------------# write Supply.con# -----------------------------------------------------------------------$nsupply >= 0 && print OUT "Supply.con = [ ...\n";$format = "%4d %8.2f 0 %8.5f %8.5f 0 %8.5f %8.5f %8.5f 0 0 0 0 0;\n";for ($i = 0; $i <= $nsupply; $i++) {    printf OUT $format,$supply[$i],$subase[$i],    $pmax[$i],$pmin[$i],$c0[$i],$c1[$i],$c2[$i];}$nsupply >= 0 && printf OUT "  ];\n\n";# -----------------------------------------------------------------------# write PQ.con# -----------------------------------------------------------------------$npq >= 0 && print OUT "PQ.con = [ ...\n";$format = "%4d $pbas %8.2f %8.5f %8.5f %8.5f %8.5f 0;\n";for ($i = 0; $i <= $npq; $i++) {    $h = $busnumb{$pqidx[$i]};    printf OUT $format,$pqidx[$i],$vn[$h],    $sa0[$i],$sr0[$i],$vmax[$h],$vmin[$h];}$npq >= 0 && printf OUT "  ];\n\n";# -----------------------------------------------------------------------# write Pl.con# -----------------------------------------------------------------------$npl >= 0 && print OUT "Pl.con = [ ...\n";$format = "%4d $pbas %8.2f 60 %8.5f %8.5f 0 %8.5f %8.5f 0 0'\n";for ($i = 0; $i <= $npl; $i++) {    $h = $busnumb{$plidx[$i]};    printf OUT $format, $plidx[$i],$vn[$h],    $za0[$i],$ia0[$i],$zr0[$i],$ir0[$i];}$npl >= 0 && printf OUT "  ];\n\n";# -----------------------------------------------------------------------# write Shunt.con# -----------------------------------------------------------------------$nsh >= 0 && print OUT "Shunt.con = [ ...\n";$format = "%4d $pbas %8.2f 60 %8.5f %8.5f;\n";for ($i = 0; $i <= $nsh; $i++) {    printf OUT $format, $shidx[$i],$kvsh[$i],$gsh[$i],$bsh[$i];}$h = $nsh;$nsh >= 0 && printf OUT "  ];\n\n";# -----------------------------------------------------------------------# write Line.con# -----------------------------------------------------------------------$nline >= 0 && print OUT "Line.con = [ ...\n";$format = "%4d %4d $pbas %8.2f 60 0 %7.4f " . "%8.5f " x 5 . "%8.3f %8.3f %8.3f;\n";for ($i = 0; $i <= $nline; $i++) {    printf OUT $format,$busfr[$i],$busto[$i],    $kvbase[$i],$kt[$i],$rest[$i],$reat[$i],$susc[$i],$tap[$i],    $phi[$i],$iijmax[$i],$pijmax[$i],$sijmax[$i];}$i = $nline;$nline >= 0 && printf OUT "  ];\n\n";# -----------------------------------------------------------------------# write bus names# -----------------------------------------------------------------------$nbus >= 0 && print OUT "Bus.names = { ...\n";$h = ($nbus+1) % 5;if ($h == 0) {$h = 5;}if (($nbus+1) > 5) {    for ($i = 0; $i <= $nbus-$h; $i+=5) {	print OUT "  '$busname{$i}'; '$busname{$i+1}'; " . 	    "'$busname{$i+2}'; '$busname{$i+3}'; '$busname{$i+4}';\n";    }}print OUT "  ";for ($i = $nbus-$h+1; $i <= $nbus-1; $i++) {    print OUT "'$busname{$i}'; ";}print OUT "'$busname{$nbus}'};\n\n";# -----------------------------------------------------------------------# close output data file# -----------------------------------------------------------------------close(OUT) || die "cannot close $ARGV[1]: $!\n";print "Conversion completed.\n";# -----------------------------------------------------------------------# function for formatting data and/or assigning default values# -----------------------------------------------------------------------sub assign {    my $param;    $param = substr($_[0],$_[1],$_[2]);    $param =~ s/\s*//g;    unless ($param) {$param = "0";}    #$param =~ s/^0*\.0*//;    unless ($param =~ /[1-9]/) {$param = $_[3];}    return $param;}# -----------------------------------------------------------------------# function for formatting data and/or assigning default values# -----------------------------------------------------------------------sub deblank {    my $name = $_[0];    $name =~ s/( *)$//;    return $name;}# -----------------------------------------------------------------------# function for writing a separator# -----------------------------------------------------------------------sub carret {    $verbose && print "-" x 50 . "\n";}# -----------------------------------------------------------------------# function for scanning the file up to the data entries# -----------------------------------------------------------------------sub scanfile {    my $tag = "DATA \\(" . $_[0] . ", \\[";    my @names;    my $numidx = -1;    my %index;    $_ =~ s/$tag//;    $_ =~ s/\]\)//;    $_ =~ s/\s*//g;    @names = split(",");    foreach (@names) {	$numidx++;	$index{$_} = $numidx;    }    while (<IN>) {			if (m/^\{/) {last;}	$_ =~ s/$tag//;	$_ =~ s/\]\)//;	$_ =~ s/\s*//g;	@names = split(",");	foreach (@names) {	    $numidx++;	    $index{$_} = $numidx;	}    }    return %index;}# -----------------------------------------------------------------------# function splitting data# -----------------------------------------------------------------------sub splitdata {    my $nn = 0;    my @localdata;    $nn = 0;    while ($_[0]) {	$_[0] =~ s/\s*-?\d+[\.,]?\d*\s*|\s*\".*?\"\s*//;	$localdata[$nn] = $&;	$localdata[$nn] =~ s/^\s*\"?//;	$localdata[$nn] =~ s/,/\./;	$localdata[$nn] =~ s/\s*\"?\s*$//;	$nn++;	if ($nn > 100) {die "Bad input string (infinite regexp loop...)";}    }    return @localdata;}

⌨️ 快捷键说明

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