Fra matematisk modell til fungerende simulator
Å utvikle en simulator krever mer enn å implementere ligninger. Fysiske modeller, numeriske metoder og programvare må fungere sammen, og verktøyet må kunne testes, utvides og tilpasses nye behov. Vi utvikler rammeverk som gjør denne prosessen enklere, og bruker dem til å undersøke nye ideer og realisere simulatorer for krevende anvendelser.
Vi kan hjelpe deg med å:
- Utvikle simulatorer for nye fysiske modeller og koblede prosesser.
- Prøve ut og sammenligne alternative diskretiseringer, løsningsmetoder og modellbeskrivelser.
- Utforme modulær programvare som gjør det enklere å gjenbruke komponenter og legge til ny funksjonalitet.
- Utvikle prototyper og teste dem på representative problemer før videre implementering.
- Forbedre ytelse, robusthet og testgrunnlag i eksisterende simuleringsverktøy.
Har du en modell du vil realisere, eller en simulator som trenger ny funksjonalitet? Ta kontakt med vår forskningsgruppe for Anvendt beregningsvitenskap.
Fleksible byggesteiner for nye modeller
En god programvarearkitektur gjør det mulig å endre én del av simulatoren uten å måtte skrive om resten. Vi utvikler abstraksjoner og grensesnitt som skiller mellom fysiske modeller, beregningsnett, diskretisering, tidssteging og numeriske løsere. Dermed kan samme modell undersøkes med ulike metoder, og de samme numeriske komponentene brukes på tvers av modeller.
Diskrete operatorer skjuler detaljer ved beregningsnettet og gjør det mulig å skrive modelligningene i en form som ligger nær den matematiske beskrivelsen. Automatisk derivasjon beregner de deriverte som trengs av løserne, mens beregningsgrafer holder orden på avhengigheter mellom størrelser og begrenser unødvendige beregninger. Dette forenkler arbeidet med å innføre nye materiallover, koble delmodeller og utvide eksisterende simulatorer.
Hurtig prototyping med faglig dybde
Nye modeller og metoder må kunne prøves ut før man vet om de fortjener en større utviklingsinnsats. Våre rammeverk gir tilgang til etablerte komponenter for blant annet beregningsnett, fysiske egenskaper, diskretisering og løsning av ligningssystemer. Det gjør at utviklingsarbeidet kan konsentreres om det som faktisk er nytt.
En prototype kan brukes til å undersøke om en modell beskriver de ønskede fenomenene, sammenligne numeriske metoder eller avdekke hvilke deler av beregningen som blir kostbare. Vi legger vekt på at ideene skal kunne testes på relevante problemer tidlig, slik at forenklinger som fungerer i små eksempler, ikke blir stående uprøvd når kompleksiteten øker.
Prototypen kan videreutvikles i det samme rammeverket eller gi grunnlag for implementering i annen programvare. Vi har erfaring med begge deler gjennom samarbeid med energiselskaper og programvareleverandører.
Fra fleksibilitet til effektiv beregning
Fleksibel kode må også kunne gi effektive beregninger. Vi arbeider med samspillet mellom modellbeskrivelse, datastrukturer, minnebruk og numeriske algoritmer. Dette omfatter blant annet effektiv oppbygging av ligningssystemer, utnyttelse av sparsitet og tilpasning til parallell beregning og moderne maskinvare.
Verifikasjon og testing følger utviklingen. Vi bruker blant annet bevaringslover, kjente løsninger, konvergensstudier og sammenligninger med andre simulatorer for å undersøke at implementeringen oppfører seg som forventet. Representative modeller og regresjonstester gir grunnlag for å vurdere hvordan nye funksjoner påvirker nøyaktighet, robusthet og kjøretid.
Åpen kildekode som grunnlag for samarbeid
Vi har over 20 års erfaring med å utvikle og vedlikeholde åpen programvare som brukes i forskning og industri. Åpen kildekode gjør det mulig å undersøke modellforutsetninger og implementasjon, reprodusere beregninger og bygge videre på eksisterende arbeid. Den gir også et felles utgangspunkt for samarbeid mellom forskere, programvareutviklere og fagspesialister.
Erfaringen omfatter blant annet MRST, OPM Flow, Jutul og JutulDarcy samt BattMo for elektrokjemisk modellering. Disse verktøyene representerer ulike valg av programmeringsspråk, arkitektur og bruksområder. Arbeidet med dem gir oss et bredt grunnlag for å vurdere hvilke løsninger som passer til et nytt utviklingsbehov.
Vi bidrar også til interne og kommersielle simulatorer. Samarbeid kan omfatte metodeutvikling, prototyping, implementering eller forbedring av utvalgte komponenter. Bruk av åpne rammeverk avklares ut fra prosjektets behov og lisensvilkår; kundens løsning trenger ikke nødvendigvis å publiseres som åpen kildekode.
Simulatorer som kan inngå i større arbeidsflyter
En simulator skal ofte brukes sammen med andre verktøy for databehandling, modellkalibrering, optimering og analyse. Vi legger derfor vekt på tydelige grensesnitt og på at modeller, parametere og resultater er tilgjengelige for videre beregning.
Deriverbar simulering og sensitivitetsanalyse kan bygges inn fra starten, slik at simulatoren også kan brukes til modellkalibrering og gradientbasert optimering. Gode grensesnitt, dokumentasjon og informative feilmeldinger legger samtidig til rette for automatiserte arbeidsflyter og bruk av KI-agenter. Dette er egenskaper som påvirkes av arkitekturen, og som med fordel vurderes tidlig i utviklingen.
Bøker og videre lesning
De to MRST-bøkene våre viser hvordan matematiske modeller og numeriske metoder omsettes til fungerende simulatorer. Eksemplene gjelder strømning i porøse medier, men mange av prinsippene for programvarestruktur, diskretisering og implementering er relevante også for andre simuleringsområder. Begge bøkene er fritt tilgjengelige og ledsages av kodeeksempler.
- Lie, K.-A. (2019). An Introduction to Reservoir Simulation Using MATLAB/GNU Octave: User Guide to the MATLAB Reservoir Simulation Toolbox (MRST). Cambridge University Press. En sammenhengende innføring fra beregningsnett og diskretisering til implementering av modeller og simuleringsarbeidsflyter.
- Lie, K.-A. og Møyner, O. (red.) (2021). Advanced Modeling with the MATLAB Reservoir Simulation Toolbox. Cambridge University Press. Avanserte modeller og metoder, med konkrete eksempler på hvordan et simuleringsrammeverk kan utvides med ny fysikk og numerisk funksjonalitet.
- Krogstad, S., Lie, K.-A., Møyner, O., Nilsen, H. M., Raynaud, X. og Skaflestad, B. (2015). MRST-AD – an Open-Source Framework for Rapid Prototyping and Evaluation of Reservoir Simulation Problems. SPE Reservoir Simulation Symposium. Modulær simulatorutvikling og hurtig prototyping med automatisk derivasjon.
- Lie, K.-A. (2023). Differentiable simulators: Implications for software development and applications to reduced-order and data-driven modelling. Foredragsbilder fra SIAM Conference on Mathematical & Computational Issues in the Geosciences. Om simulatorarkitektur, deriverbarhet og kobling til reduserte og datadrevne modeller.