Recent Releases of ANDES

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 and interop. 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.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao about 3 years ago

ANDES - v1.5.9

This is a minor release mostly bug fixes.

  • Renamed REGCVSG to REGCV1 and REGCVSG2 to REGCV2.
  • 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 package psutil needs to be installed.
  • Use of Selector is deprecated.

If you installed ANDES in the development mode, you might need to install psutil manually.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao over 3 years ago

ANDES - 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.
    See andes/utils/snapshot.py.

  • Compiled numba code is always cached.

  • Bug fixes.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao over 3 years ago

ANDES - 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 through Group.

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.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao over 3 years ago

ANDES - 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.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao over 3 years ago

ANDES - v1.3.0

  • Allow State variable set check_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
    parameters gammap and gammaq.
  • New models: IEESGO and IEEET1, EXAC4.
  • Refactored exciters, turbine governors, and renewable models
    into modules.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao about 4 years ago

ANDES - 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 to TDS.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 for cvxopt
    to bring KLU to Windows (and other platforms).

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao over 4 years ago

ANDES - v1.2.1

  • Renamed models.non_jit to models.file_classes.
  • Removed models/jit.py as models have to be loaded and instantiated
    anyway before undill.
  • Skip generating empty equation calls.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao over 4 years ago

ANDES - v1.1.0

  • Defaulted BaseVar.diag_eps to System.Config.diag_eps.
  • Added option TDS.config.g_scale to allow for scaling the
    algebraic mismatch with step size.
  • Added induction motor models Motor3 and Motor5 (PSAT models).
  • Allow a PFlow-TDS model to skip TDS initialization by setting
    ModelFlags.tds_init to False.
  • Added Motor models Motor3 and Motor5.
  • Imported get_case and list_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) and WTDS
    (single-mass model).
  • Aerodynamic model WTARA1.
  • Pitch controller model WTPTA1.
  • Torque (a.k.a. Pref) model WTTQA1.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao over 4 years ago

ANDES - v1.0.8

New features and models:

  • Added renewable energy models REECA1 and REPCA1.
  • 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 need ApplyFunc,
    consider using ConstService 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 and incremental. 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 to REGCA1.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao almost 5 years ago

ANDES - v1.0.0

This release contains minor patches on v0.9.5.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao almost 5 years ago

ANDES - v0.9.3

This version contains bug fixes and performance tweaks.

  • Fixed an AntiWindup issue that causes variables to stuck at limits.
  • Allow TDS.run() to resume from a stopped simulation and run to the new
    end time in TDS.config.tf.
  • Improved TDS data dump speed by not constructing DataFrame by default.
  • Added tests for kundur_full.xlsx and kundur_aw.xlsx to ensure
    results are the same as known values.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao about 5 years ago

ANDES - v0.9.1

This version accelerates computations by about 35%.

  • Models with flag collate=False, which is the new default,
    will slice DAE arrays for all internal vars to reduce copying back and forth.
  • The change above greatly reduced computation time.
    For kundur_pss.xlsx, simulation time is down from 2.50 sec to 1.64 sec.
  • The side-effects include a change in variable ordering in output lst file.
    It also eliminated the feasibility of evaluating model equations in
    parallel, which has not been implemented and does not seem promising in Python.
  • Separated symbolic processor and documentation generator from Model into
    SymProcessor and Documenter classes.
  • andes prepare now shows progress in the console.
  • Store exit code in System.exit_code and returns to system when called
    from CLI.
  • Refactored the solver interface.
  • Patched Config.check for routines.
  • SciPy Newton-Krylov power flow solver is no longer supported.
  • Patched a bug in v0.9.0 related to dae.Tf.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao about 5 years ago

ANDES - v0.8.8

This update contains a quick but significant fix to boost the simulation speed by avoiding
calls to empty user-defined numerical calls.

  • In Model.flags and Block.flags, added f_num, g_num and j_num to indicate
    if user-defined numerical calls exist.
  • In Model.f_update, Model.g_update and Model.j_update, check the above flags
    to avoid unnecessary calls to empty numeric functions.
  • For the kundur_pss.xlsx case, simulation time was reduced from 3.5s to 2.7s.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao about 5 years ago

ANDES - v0.8.7

  • Changed RefParam to a service type called BackRef.
  • Added DeviceFinder, a service type to find device idx when not provided.
    DeviceFinder will also automatically add devices if not found.
  • Added OptionalSelect, a service type to select optional parameters if provided
    and select fallback ones otherwise.
  • Added discrete types Derivative, Delay, and Average,
  • Implemented full IEEEST stabilizer.
  • Implemented COI for generator speed and angle measurement.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao about 5 years ago

ANDES - v0.8.6

This release contains important documentation fixes and two new blocks.

  • Fixed documentations in andes doc to address a misplacement of symbols and equations.
  • Converted all blocks to the division-free formulation (with dae.zf renamed to dae.Tf).
  • Fixed equation errors in the block documentation.
  • Implemented two new blocks: Lag2ndOrd and LeadLag2ndOrd.
  • Added a prototype for IEEEST stabilizer with some fixes needed.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao about 5 years ago

ANDES - v0.8.5

  • Converted the differential equations to the form of T \dot{x} = f(x, y), where T is supplied to
    t_const of State/ExtState.
  • Added the support for Config fields in documentation (in andes doc and on readthedocs).
  • Added Config consistency checking.
  • Converted Model.idx from a list to DataParam.
  • Renamed the API of routines (summary, init, run, report).
  • Automatically generated indices now start at 1 (i.e., "GENCLS_1" is the first GENCLS device).
  • Added test cases for WECC system. The model with classical generators is verified against TSAT.
  • Minor features: andes -v 1 for debug output with levels and line numbers.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao about 5 years ago

ANDES -

Version 0.6.9 is the last version for the numeric-only modeling framework.

This version will not be updated any more. But, models, routines and functions will be ported to the new version.

Energy Systems - Energy System Modeling Frameworks - Python
Published by cuihantao about 5 years ago