JuliaHub Blog: Insights & Updates

JuliaSim Studio: Unmitigated Control for the Power Modeler

Written by Chris Rackauckas | Jul 19, 2024

Power users of modeling and simulation tools often find the graphical user interface (GUI) to be restrictive for their advanced needs. Traditional GUIs used for modeling and simulation provide limited flexibility and integration capabilities. Especially if you are an advanced user with a complex industrial use case, the tool falls short when integrating models with specialized embedded devices, custom data analysis pipelines or if company-specific DevOps tools. Modeling and simulation are not isolated activities; they are intimately connected to applications and deployment. While traditional GUIs are handy for model development and analysis, they often hinder the more advanced development requirements.

Enter JuliaSim Studio, designed to provide unmitigated control and flexibility to advanced users and complex use cases. JuliaSim caters to workflows to cover both simple and high-level model development without sacrificing the deep flexibility that power users need in industrial environments. This allows for an uninterrupted flow from the graphical to pure coding environment.

Why JuliaSim Studio?

JuliaSim Studio addresses the problem of the limitations and inefficiencies associated with traditional graphical user interfaces (GUIs) in modeling and simulation workflows including:

  • Limited flexibility and integration options
  • Difficulty in maintaining context and traceability 
  • Complexity in building and managing downstream code
  • Lack of solver independence and performance optimization

JuliaSim's Studio makes creating and analyzing models simple and effortless. Using high-level declarative JuliaSim modeling language with drag-and-drop tooling, it empowers every engineer with the ability to create and simulate digital twins. Power users additionally benefit from the following capabilities:

  • Write drivers around the model to deploy the model to specialized embedded devices
  • Integrate the model into company-specific DevOps tools
  • Mix the model into bespoke big data analysis pipelines
  • Generate web interfaces around the models for real-time high-performance analysis

Whatever your need is, we recognize that traditional GUI interfaces can get in the way. JuliaSim Studio is designed to bridge the gap between the GUI environment and the coding environment.

Watch the video to learn how JuliaSim Studio empowers power users:

 

JuliaSim Studio Facilitates Advanced Coding Workflows

At its core, JuliaSim Studio is a set of plugins for the Visual Studio Code (VS Code) integrated development environment IDE. Using JuliaSim Studio, engineers can easily integrate code with models while the relevant package manager automatically syncs all changes to model libraries across environments.

Importantly, JuliaSim Studio includes functionality that automatically translates JSML model libraries into Julia ModelingToolkit code, which can be interacted with intuitively. From there, users have access to a high-performance imperative programming language for generating all required downstream integrations.

JuliaSim Studio’s ModelingToolkit Integration: Write Code Without Losing Model Context

Advanced users understand the pains of writing downstream interfaces based on model artifacts. Traditional tools for this application either deploy directly to C or, even worse, directly to binaries. This requires directly baking solver assumptions into the process, requiring the programmer to interpret the generated code. For example, variable 52 in a long list may correspond to the HVAC compressor temperature. However, when the modeler changes the model, the index of this variable may change, breaking downstream integrations. This is because the code does not know the modeling or the physics; it is simply a program.

Integrating embedded communication protocols into bespoke solvers can also be tough to maintain. However, JuliaSim Studio does not present these challenges. By lowering to Julia ModelingToolkit, JuliaSim Studio retains all the contextual information of the model. This means that named references to model components are kept, making it easy for downstream developers to simply refer to the required indices by the name of the variable using the names from the original model. This simplifies the deployment code, making it easier to maintain in complex deployment pipelines.

In addition, the ModelingToolkit form is solver-independent and connects to the full JuliaSim suite. This means that any of the hundreds of solver methods—including robust MPI plus GPU-accelerated methods for high-performance computing and fixed time-step methods for predictable compute budgets—can be mixed and matched for the programmatic generation of target-specific deployment code. The extensive callback and integrator interface allow the programmer to take direct control of the stepping process, making integrating communication protocols and controller handling into the solver process a breeze.

Build a robust development pipeline with JuliaSim

Power users of traditional modeling tools can be skeptical of graphical user interfaces owing to the fact that they restrict users from having full access to all the details required to make a robust deployment pipeline. JuliaSim bucks this trend by offering JuliaSim Studio, giving power users an integrated coding environment that retains the model information and grants full access to a complete computational suite for performing any necessary modifications. In this way, a company can allow its modeling teams to develop and analyze models using high-level GUIs while not inhibiting the ability of software teams to achieve their downstream deployment goals.