Adjusting on the fly#

CLI#

One can adjust config on the fly in command line without modifying or even storing the config file. This is useful when the config change is one-time or ANDES CLI is stored in a read-only container. The config update is done by andes run --config-option SECTION.OPTION=VALUE, where SECTION is the section name, OPTION is the option name, and VALUE is the new value. No space is allowed around . and =.

For example, to solve kundur_full.json with reactive power limit enforced, one can do:

andes run kundur_full.json -O PV.pv2pq=1

where -O is the shorhand command for --config-option, and the enabled pv2pq will allow PV to be converted to PQ once reactive power limit is hit.

Multiple config updates can be passed simultaneously, separated by space. For example, to enable reactive power limit and switch the power flow solver to UMFPACK, do:

andes run kundur_full.json -O PV.pv2pq=1 PFlow.sparselib=umfpack

Scripting#

To adjust config on the fly when scripting, there are two cases:

  • Update the config when creating a new System object

  • Update the config for an existing System object

To update the config when creating a new System object, one can pass a list of strings to config_option for andes.main.run:

>>> ss = andes.run("kundur_full.json", config_option=["PV.pv2pq=1"])

which directly calls the backend API for the CLI. To update multiple configs, one can do

>>> ss = andes.run("kundur_full.json",
                   config_option=["PV.pv2pq=1", "PFlow.sparselib=umfpack"])

When the System object gets created, the config values will be distributed to member attributes of the System object. Therefore, the config for a System object ss is stored in ss.config, and the config for the power flow routine is stored in ss.PFlow.config.

To update the config for an existing system, one can directly access the config attribute and set the new value. To set a new simulation end time, one can overwrite the ss.TDS.config.tf field, such as:

# load system and run power flow
>>> ss = andes.run("kundur_full.json")
>>> ss.TDS.config.tf = 5.0
>>> ss.TDS.run()

Warning

Not all config options can be updated on the fly. Those config that are used for constructing the system object can only be updated when creating a new System object.