New Simulation-paired Reservoir pre-released!

Main Updates

These updates are related to the new reservoir implementation that accommodates the foundational model training such as:

  • ScOT: An All-to-All Architecture with no conditioning other than input time
  • PDE-Transformer: An autoregressive Architecture incorporating PDE-type conditioning mechanisms.

Client-side changes

  • Ability to send a JSON-string as metadata alongside the data vectors through melissa_send_with_metadata() in C and overloading melissa_send for the Python API. ScOT can train several PDEs and thus expects a PDE-type metadata as a label for the data/mesh sent for training.
metadata = {
    "pde": pde_type,
    "num_channels": num_channels,
    "resolution": num_points,
    "simulation_dt": dt,
    "fields": fields,
    "constants": constants,
    "velocity x": vel[0],
    "velocity y": vel[1],
    "seed": seed,
}
metadata_json = json.dumps(metadata)
melissa_send("temperature", data, metadata_json)

Example demonstrates usage of some static values, but preferably send values that change across simulations or its time steps.

Server-side changes

  • Inclusion of SimPairedReservoir
  • Addition of a new dataclass called Payload.
  • Now, the SimulationData contains the Payload instance and therefore should be accessed as follows:
data: np.ndarray = msg["temperature"].data
metadata: Dict[str, Any] = msg["temperature"].metadata

Minor Updates

  • Data type fixes for the socket types in melissa_data.h
  • METADATA file codemeta.json integration for the general Melissa metadata and information access.