Skip to main content

Limitations in pre-release GeLB

Motivation#

It is better to:

  • RM many features (initially) &
  • iteratively add them (afterwards).

This way, things are easier to understand, and I can also test each feature as I re-add it.

Syntax restrictions#

Nice-to-have-later (but initially optional) elements#

  • NO df_alias

  • NO argument keywords

  • EXACTLY ONE node_class

  • REQUIRE EXACTLY ONE {Initializer, Dynamic, Gauge}

  • NO array {variables, constants}

  • NO intrinsic functions

  • NO user-defined functions

  • NO support for loading the geometry from a file

  • NO periodicity

Data-types#

  • ONLY int values (initially, to make testing easier); in other words:

    • NO bool DFs, variables, constants & expressions!

    • NO real DFs, variables, constants & expressions!

  • NO bitwidth-specific data-types

Declaration of constants and variables#

  • Allow only single-entity declarations (i.e. NO "real a, b, c, ...;")

  • Only accept declarations of vars & constants @topOf{Initializer,Dynamic,Gauge,Function}

    warning

    This restriction might make it into the GeLB-v1 release!

  • Don't allow immediate initialization for variables, BUT require immediate initialization of constants!

Misc#

  • For single-letter keywords, accept only the lower-case variant (i.e. D-d, Q->q, X-x, Y->y, Z->z)

  • Allow only one write to f.Out per time-step

    TODO: check @MidWare

    NOTE: However, I might need to relax this rule, to allow output in the middle of a multi-stage Dynamic (or is this possible without relaxing this rule?!?)