Releases: CURENT/andes
v1.6.2
Interoperability:
- Added interoperability modules for MATPOWER (through Oct2Py), pandapower (@jinningwang ) and
pypowsybl. - Added Examples and API reference for the interoperability module.
- Improved the setup script to support extra dependencies. The following extras
groups are supported:dev
andinterop
. See :ref:Install_extras
for
more information. - Added tests for power flow calculation against MATPOWER.
Others:
- Added a shorthand command
andes.system.example()
to return a disposable
system. It can be useful for quick prototyping. - Improved the formatting and navigation of Model references.
- Models store the base values for per-unit conversion in
Model.bases
.
v1.5.9
This is a minor release mostly bug fixes.
- Renamed
REGCVSG
toREGCV1
andREGCVSG2
toREGCV2
. - Added an alias list for model names. See
models/__init__.py
. - Added PLL1, a simple PLL model.
- Multiprocessing now executes on all CPUs that are physical, instead
of logical. A new packagepsutil
needs to be installed. - Use of
Selector
is deprecated.
If you installed ANDES in the development mode, you might need to install psutil
manually.
v1.5.2
As always, if ANDES was updated using git pull
, please run python -m pip install -e .
in the ANDES source code repository to ensure dependencies are up to date.
-
Removed
CVXOPT
dependency. -
Removed
__zeros
and__ones
as they are no longer needed. -
Added
andes prep -c
to precompile the generated code. -
Added utility functions for saving and loading system snapshots.
Seeandes/utils/snapshot.py
. -
Compiled numba code is always cached.
-
Bug fixes.
v1.5.0
ANDES 1.5.0 boasts performance improvement as much as 30%.
All generated numerical code can be compiled just-in-time using numba.
Details are as follows:
- Support numba just-in-time compilation of all equation and Jacobian calls.
This option accelerates simulations by up to 30%. The acceleration is visible in medium-scale systems with multiple models.
Such systems involve heavy function calls but rather a moderate load for linear equation solvers.
The speed up is less significant in large-scale systems where solving equations is the major time consumer.
Numba is required and can be installed with pip install numba
or
conda install numba
.
To turn on numba for ANDES, in the ANDES configuration under [System]
,
set numba = 1
and numba_cache = 1
.
The just-in-time compilation will compile the code upon the first execution based on the input types.
When the compilation is triggered, ANDES may appear frozen due to the compilation lag.
The option numba_cache = 1
will cache compiled machine code, so that
the compilation lag only occurs once until the next andes prep
.
Thanks to the maintainers and contributors of SymPy for the hotfixes for the generated code of Piecewise
.
@asmeurer @ThePauliPrinciple and @oscarbenjamin.
- Allow
BackRef
to populate to models throughGroup
.
When model A
stores an IdxParam
pointing to a group, if BackRef
with the name A
are declared in both the group and the model,
both BackRef
will retrieve the backward references from model A
.
- Allow
BaseVar
to accept partial initializations.
If BaseVar.v_str_add = True
, the value of v_str
will be added in place
to variable value.
An example is that the voltage compensator sets part of the input voltage, and
the exciter reads the bus voltage. Exciter has v.v_str_add = True
so that
when compensators exist, the input voltage will be bus voltage (vbus) plus
(Eterm - vbus).
If no compensator exists, the exciter will use bus voltages and function as expected.
- Added reserved variable names
__ones
and__zeros
for ones and
zeros with a length equal to the device number.
__ones
and __zeros
are useful for vectorizing choicelist
in Piecewise
functions.
v1.4.4
This is a stable version of ANDES 1.4. Notable improvements include:
- code generation
andes prep
is now about 4 times faster on a multi-core machine (thanks to multiprocessing) - V- and f-based protection models for distributed energy resources (developed by Jinning Wang @jinningwang, thanks to the support from Dr. Xin Fang with NREL @xfangnrel)
- overhaul of the eigenvalue analysis routine
Note that dill
support is deprecated and will be removed in v1.5. If you do not recall using calls.pkl
at all, you will not be affected.
v1.3.0
- Allow
State
variable setcheck_init=False
to skip
initialization test. One use case is for integrators
with non-zero inputs (such as state-of-charge integration). - Solves power flow for systems with multiple areas, each with
one Slack generator. - Added
Jumper
for connecting two buses with zero impedance. REGCA1
and synchronous generators can take power ratio
parametersgammap
andgammaq
.- New models:
IEESGO
andIEEET1
,EXAC4
. - Refactored exciters, turbine governors, and renewable models
into modules.
v1.2.2
New Models:
PVD1
model, WECC distributed PV model.
Supports multiple PVD1 devices on the same bus.- Added
ACEc
model, ACE calculation with continuous freq.
Changes and fixes:
- Renamed
TDS._itm_step
toTDS.itm_step
as a public API. - Allow variable
sys_f
(system frequency) in equation strings. - Fixed ACE equation.
measurement. - Support
kvxopt
as a drop-in replacement forcvxopt
to bring KLU to Windows (and other platforms).
v1.2.1
v1.1.0
- Defaulted
BaseVar.diag_eps
toSystem.Config.diag_eps
. - Added option
TDS.config.g_scale
to allow for scaling the
algebraic mismatch with step size. - Added induction motor models
Motor3
andMotor5
(PSAT models). - Allow a PFlow-TDS model to skip TDS initialization by setting
ModelFlags.tds_init
to False. - Added Motor models
Motor3
andMotor5
. - Imported
get_case
andlist_cases
to the root package level. - Added test cases (Kundur's system) with wind.
Added Generic Type 3 wind turbine component models:
- Drive-train models
WTDTA1
(dual-mass model) andWTDS
(single-mass model). - Aerodynamic model
WTARA1
. - Pitch controller model
WTPTA1
. - Torque (a.k.a. Pref) model
WTTQA1
.
v1.0.8
New features and models:
- Added renewable energy models
REECA1
andREPCA1
. - Added service
EventFlag
which automatically calls events
if its input changes. - Added service
ExtendedEvent
which flags an extended event
for a given time. - Added service
ApplyFunc
to apply a numeric function.
For the most cases where one would needApplyFunc
,
consider usingConstService
first. - Allow
selftest -q
for quick selftest by skipping codegen. - Improved time stepping logic and convergence tests.
- Updated examples.
Default behavior changes include:
andes prepare
now takes three mutually exclusive arguments,
full
,quick
andincremental
. The command-line now defaults
to the quick mode.andes.prepare()
still uses the full mode.Model.s_update
now evaluates the generated and the
user-provided calls in sequence for each service in order.- Renamed model
REGCAU1
toREGCA1
.