BattMo
BattMo is an open source simulation code for continuum modelling of electrochemical devices written in Matlab and Julia
Å 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 å:
Har du en modell du vil realisere, eller en simulator som trenger ny funksjonalitet? Ta kontakt med vår forskningsgruppe for Anvendt beregningsvitenskap.
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.
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.
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.
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.
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.
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.
BattMo is an open source simulation code for continuum modelling of electrochemical devices written in Matlab and Julia
Fimbul er en moderne programvare med åpen kildekode, utviklet i Julia for simulering og analyse av geotermiske reservoarer og varme- og energilagringssystemer. Verktøyet gjør det enkelt å utforske, sammenligne og optimalisere ulike geoenergiløsninger...
Et GPU-akselerert simuleringssystem for å kjøre store ensembler av forenklede havmodeller i virkelige utsnitt av havet.
Experimental Julia framework for fully differentiable multiphysics simulators based on implicit finite-volume methods with automatic differentiation.
A free open-source community code for rapid prototyping of new methods for modelling and simulation of flow in porous media. Has a large user community from all over the world.
MRST-co2lab tilbyr et sett med åpen kildekode-baserte simulatorer og arbeidsflytverktøy som er spesielt utviklet for studier av langsiktig, storskala lagring av CO2.
The Open Porous Media (OPM) initiative provides open-source software for simulation, upscaling and visualization of porous media processes, in particular subsurface reservoirs.
Programvare for statisk modellering og predisjon av overvann basert på analyse av topografi/terreng.