Agentic development of scientific software
Contact persons
What we can help you with
A coding agent can explore a codebase, propose changes, implement functionality and run tests. It can use the results to correct errors and refine the solution over multiple steps. This makes it possible to delegate larger parts of the development process, while specialists set the direction, clarify requirements and assess the results.
We use these tools in our own scientific software development and can help you:
- Explore and develop new capabilities in existing simulation tools.
- Build interfaces, visualisations and analysis tools around established software.
- Develop prototypes to investigate models, methods and workflows.
- Use agents for testing, documentation, debugging and code refactoring.
- Prepare codebases and development environments for agent-assisted work.
- Establish technical checks and tests that make agents’ contributions verifiable.
Do you have a development task you would like to explore using AI agents? Contact our Applied Computational Science research group.
Hands-on experience with demanding codebases
Our experience is grounded in the development of numerical methods and simulation software. We use agents for both focused tasks and more extensive changes spanning several parts of a codebase. This requires an understanding of how mathematical models, algorithms and software fit together.
We have used agent-assisted development in our work on OPM Flow and JutulDarcy. Tasks have included local grid refinement, adjoint gradient computations and adapting computations for GPUs. These tasks provide practical experience with both the possibilities and limitations of agents working in large scientific codebases.
We draw on this experience to assess which tasks are suitable for delegation, what information the agent needs and how its output should be checked.
Tools tailored to the task
Many development needs arise around an existing simulator: preparing data, setting up models, comparing scenarios or presenting results. Agentic development makes it easier to explore tailored tools for these tasks and refine them in close dialogue with users.
We develop interactive interfaces, visualisations and analysis capabilities that build on established computational tools. A domain expert can examine an early version, clarify the requirements and guide further development through short iterations.
A working prototype provides a basis for assessing usefulness. Continued use also requires appropriate software structure, testing and documentation, together with a plan for maintenance.
A codebase agents can work with
The working environment influences what an agent can achieve. Clear interfaces, well-organised modules, useful examples and tests that are easy to run help it navigate the code and assess the consequences of a change. Documentation should explain both how the software is used and the scientific assumptions behind its implementation.
We work on providing agents with relevant context and actionable feedback. This may include descriptions of the architecture and coding conventions, reference calculations, build systems or simulator diagnostics. Tasks can be divided into stages with clear criteria for progressing to the next step.
These improvements also benefit human developers. They make knowledge about the software explicit and help make changes easier to understand and review.
Scientific review of generated code
Code that compiles and passes tests may still implement the wrong model or produce misleading results. Reviewing scientific software therefore requires more than checking whether a feature appears to work.
We combine code review with checks appropriate to the numerical method: conservation laws, known solutions, convergence studies, gradient checks and comparisons with established implementations. Tests need to examine the intended mathematical behaviour rather than simply repeat the assumptions embedded in the generated code.
Changes can also affect runtime, memory use and robustness in ways that small examples do not reveal. Representative models and regression tests are therefore important when incorporating agent-developed functionality into established tools.
Collaboration between specialist and agent
A short instruction leaves many decisions open. An agent may choose data structures, algorithms or simplifications that seem reasonable in isolation but do not suit the intended purpose. The specialist’s role is to make important requirements explicit and review choices that affect the model or the future development of the software.
We work iteratively: define the task, investigate the codebase, implement changes, test and assess the results. Version control, focused changes and documented test results make it possible to track the work and adjust its direction along the way.
The scope for delegation depends on the task and how thoroughly the result can be checked. Practical experience with the tools and detailed knowledge of the software are central to finding an effective division of work.
From developing software to using simulators
Agentic development and agent-assisted simulation can support each other. A development agent may build an analysis tool or an interface that another agent later uses in a modelling workflow. The quality of interfaces, documentation and feedback then matters at both stages.
Read more about our work on agentic AI for scientific computing, where agents use simulators and other specialist tools to construct models, run computations and analyse results.
Further reading
- Agentic AI is here, and it is changing how scientific software is built and used. Experiences and perspectives from our work with agentic coding.
- Agentic AI for scientific computing. Agents as collaborators in modelling and simulation.
- SINTEF AgentLab. A shared environment for work on AI agents.