Case I/O#

AMS supprots multiple case formats.

Still, first import the ams library and configure the logger level.

import os

import ams

import datetime
print("Last run time:", datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S"))

print(f'ams:{ams.__version__}')
Last run time: 2024-01-29 20:45:03
ams:0.8.1.post37.dev0+gf76a132
ams.config_logger(stream_level=20)

Input#

AMS Execel#

sp_xlsx = ams.load(ams.get_case('ieee14/ieee14_uced.xlsx'),
                  setup=True,
                  no_output=True,)

sp_xlsx.summary()
Parsing input file "/Users/jinningwang/Documents/work/ams/ams/cases/ieee14/ieee14_uced.xlsx"...
Input file parsed in 0.1268 seconds.
Zero line rates detacted in rate_a, rate_b, rate_c, adjusted to 999.
If expect a line outage, please set 'u' to 0.
System set up in 0.0023 seconds.
-> Systen size:
Base: 100 MVA; Frequency: 60 Hz
14 Buses; 20 Lines; 5 Static Generators
Active load: 2.24 p.u.; Reactive load: 0.95 p.u.
-> Data check results:
ACED: ACOPF
DCED: DCOPF, ED, RTED
DCUC: UC
DED: DOPF
PF: DCPF, PFlow, CPF

AMS JSON#

sp_json = ams.load(ams.get_case('ieee14/ieee14.json'),
                  setup=True,
                  no_output=True,)

sp_json.summary()
Parsing input file "/Users/jinningwang/Documents/work/ams/ams/cases/ieee14/ieee14.json"...
Input file parsed in 0.0042 seconds.
Zero line rates detacted in rate_a, rate_b, rate_c, adjusted to 999.
If expect a line outage, please set 'u' to 0.
System set up in 0.0027 seconds.
-> Systen size:
Base: 100 MVA; Frequency: 60 Hz
14 Buses; 20 Lines; 5 Static Generators
Active load: 2.24 p.u.; Reactive load: 0.95 p.u.
-> Data check results:
PF: DCPF, PFlow, CPF

MATPOWER#

sp_mp = ams.load(ams.get_case('matpower/case14.m'),
                 setup=True,
                 no_output=True,)

sp_mp.summary()
Parsing input file "/Users/jinningwang/Documents/work/ams/ams/cases/matpower/case14.m"...
Input file parsed in 0.0066 seconds.
Zero line rates detacted in rate_a, rate_b, rate_c, adjusted to 999.
If expect a line outage, please set 'u' to 0.
System set up in 0.0048 seconds.
-> Systen size:
Base: 100.0 MVA; Frequency: 60 Hz
14 Buses; 20 Lines; 5 Static Generators
Active load: 2.59 p.u.; Reactive load: 0.74 p.u.
-> Data check results:
ACED: ACOPF
DCED: DCOPF
DED: DOPF
PF: DCPF, PFlow, CPF

Note that AMS also supports PYPOWER format py-file.

PSS/E RAW#

AMS also supports PSS/E RAW format for power flow analysis.

sp_raw = ams.load(ams.get_case('ieee14/ieee14.raw'),
                  setup=True,
                  no_output=True,)

sp_raw.summary()
Parsing input file "/Users/jinningwang/Documents/work/ams/ams/cases/ieee14/ieee14.raw"...
Input file parsed in 0.0096 seconds.
Zero line rates detacted in rate_a, rate_b, rate_c, adjusted to 999.
If expect a line outage, please set 'u' to 0.
System set up in 0.0021 seconds.
-> Systen size:
Base: 100.0 MVA; Frequency: 60.0 Hz
14 Buses; 20 Lines; 5 Static Generators
Active load: 2.24 p.u.; Reactive load: 0.95 p.u.
-> Data check results:
PF: DCPF, PFlow, CPF

Output#

Vice versa, AMS supports multiple output formats.

ams.io.xlsx.write(system=sp_xlsx,
                  outfile='out.xlsx',)
xlsx file written to "out.xlsx"
True
os.remove('out.xlsx')

Similarly, JSON output formats can be achieved by using ams.io.json.write.