Deriverte som en del av beregningen
En simulator beregner hvordan et fysisk system oppfører seg for gitte parametere og driftsbetingelser. Ofte trenger vi også å vite hvordan resultatene endrer seg når disse størrelsene varieres. Slike deriverte er sentrale både for å løse modellens ligninger og for å tilpasse modellen til målinger eller optimere driften.
Automatisk derivasjon (AD) bruker kjerneregelen systematisk gjennom operasjonene i et dataprogram. For deriverbare beregninger gir dette deriverte med nøyaktighet begrenset av flyttallsaritmetikken, uten steglengdefeilen som følger med endelige differanser. Samtidig reduseres behovet for å utlede og vedlikeholde derivertkode manuelt.
Hva kan vi hjelpe med?
- Utvikle simulatorer med automatisk derivasjon: Organisere modelligningene slik at residualer og deriverte kan beregnes fra samme kode.
- Beregne Jacobimatriser og sensitiviteter: Tilpasse derivasjonen til ikke-lineære løsere, koblede modeller og analyse av parameteravhengighet.
- Legge til rette for kalibrering og optimering: Beregne gradienter av målfunksjoner med hensyn til modellparametere og styringsvariable.
- Velge og integrere AD-teknologi: Vurdere metoder og biblioteker opp mot programvarestruktur, minnebruk og beregningskostnad.
- Verifisere deriverte: Kontrollere implementasjonen og undersøke hvordan forgreninger, ikke-glatte funksjoner og løsertoleranser påvirker resultatene.
Automatisk derivasjon i simulatorutvikling
Implisitte simulatorer løser gjerne store, koblede ikke-lineære ligningssystemer med Newtons metode. Dette krever deriverte av residualene med hensyn til de ukjente, samlet i en Jacobimatrise. Automatisk derivasjon gjør det mulig å beregne disse fra den samme implementasjonen som beskriver modelligningene.
Dette er særlig nyttig når nye fysiske prosesser skal legges til eller eksisterende modeller endres. Derivertberegningene følger endringene i ligningskoden, noe som kan redusere manuelt arbeid og risikoen for inkonsistens mellom residualer og Jacobimatriser. Effektiv implementering krever samtidig at vi utnytter sparsitet, lokalitet og blokkstruktur i problemet.
Fra modelligningene til gradienter av simuleringsresultater
Deriverte av modelligningene er også byggesteiner for å beregne hvordan et helt simuleringsforløp avhenger av inngangsdata. Vi kombinerer automatisk derivasjon med sensitivitetsberegninger og adjungerte metoder for blant annet modellkalibrering, historietilpasning og optimering.
For implisitte modeller kan vi derivere de diskrete ligningene og bruke disse til å beregne sensitiviteter, i stedet for å derivere gjennom hver iterasjon i løseren. Adjungerte metoder er særlig nyttige når vi trenger gradienten til én eller noen få målfunksjoner med hensyn til mange parametere.
Riktig metode for riktig beregning
Automatisk derivasjon kan gjennomføres i forovermodus eller reversmodus. Forovermodus forplanter deriverte fra innganger til utganger og er ofte egnet for få derivasjonsretninger eller lokale beregninger med kjent struktur. Reversmodus forplanter informasjon tilbake fra utgangene og er ofte egnet når få resultatstørrelser avhenger av mange innganger.
Implementasjonen kan bygge på operatoroverlasting, kildekodetransformasjon eller kompilatorteknikker. Vi arbeider med både egenutviklede og åpne AD-biblioteker i C++, MATLAB, Julia og Python. Valget avhenger av hvilke deriverte som trengs, hvordan programmet er bygget opp, og hvilke krav som stilles til ytelse og vedlikehold.
Numerisk forståelse er fortsatt avgjørende
Automatisk derivasjon følger beregningene som faktisk er implementert. Den gjør ikke en ikke-glatt modell deriverbar. Faseoverganger, min/maks-operasjoner, skifte av randbetingelser og adaptive algoritmer kan kreve særskilt behandling. For iterative løsere må også sammenhengen mellom løsertoleranser og nøyaktigheten i sensitivitetene vurderes.
Vi kombinerer derfor AD med kunnskap om modellens fysikk, diskretisering og løsningsalgoritmer. Derivertberegninger verifiseres med egnede konsistenstester og sammenligninger, slik at de kan brukes med tillit i videre analyser.
Bred erfaring fra modeller og anvendelser
Vi bruker automatisk derivasjon innen blant annet beregningsbasert elektrokjemi, strømning i porøse medier og andre modeller basert på partielle differensialligninger. Erfaringen omfatter også optimering av byggeplasser og modeller for biokullproduksjon. Felles for anvendelsene er behovet for å koble modellutvikling med effektive og pålitelige derivertberegninger.
Vil du samarbeide med oss?
Trenger dere deriverte fra en eksisterende modell, eller vil dere bygge en simulator som støtter sensitivitetsanalyse og optimering fra starten av? Ta kontakt med vår forskningsgruppe for Anvendt beregningsvitenskap for å diskutere metodevalg, implementering og simulatorutvikling.