Introduksjon til IN-KJM1900: Kjemidel
F?rste forelesning, 16.oktober
Mål for økta:¶
- F? oversikt over praktisk info
- Klargj?re motivasjon og m?l for kurset
- Introduksjon av prosjektet: Birkenes-modellen
- Introduksjon av nytt pensum (vil bli gjennomg?tt 23.oktober)
- Kodestruktur:
moduler
- Datastruktur:
dictionaries
- Teori: rekurrensrelasjoner/differensligninger
- Teori: differensialligninger
- Kodestruktur:
- Utvikler teori og kode for ? simulere faste stoffer (for eksempel krystaller) p? datamaskinen.
- Tilknyttet Hylleraas-senteret (teoretisk kjemi).
- H?sten 2018 underviser jeg IN-KJM1900.
- Interesse for flerpartikkel kvantemekanikk, kvantekjemi og beregninger.
- Har ogs? bakgrunn som TV-komponist og hovedl?rer i Musikkdesign ved H?yskolen Kristiania.
Kort om meg
Audun Skau Hansen
a.s.hansen@kjemi.uio.noStipendiat, Kjemisk Institutt (UiO)
IN-KJM1900, h?sten 2018
- Foreleser: Audun Skau Hansen (a.s.hansen@kjemi.uio.no)
- Gruppel?rere og orakler:
- Eirill (eirillsh@student.matnat.uio.no)
- Simon (simonsch@student.matnat.uio.no)
- Morten (mortos@student.matnat.uio.no)
- Johannes (johla@student.matnat.uio.no)
- All informasjon blir publisert p? semestersidene:
- Kodeeksempler fra forelesning legges ogs? ut p? JupyterHub under IN-KJM1900.
- Ekstra undervisningsst?tte: orakeltjeneste ved Kjemisk Institutt
- Prosjektbasert undervisningsopplegg
IN-KJM1900, eksamenskrav
Ukeplan i prosjektperioden (16.10 - 28.11)
Tirsdag | Onsdag | Torsdag |
---|---|---|
10.15-12.00: Forelesning (Smalltalk) | 08.15-12.00: Gruppetime #1 | 08.15-12.00: Gruppetime #2 |
10.15-12.00: Samretting (Logo) |
Viktige datoer i prosjektperioden
Dato | Klokkelsett | Hendelse |
---|---|---|
Tirsdag 16.oktober | 10.15-12.00 | F?rste forelesning; oppstart prosjekt |
Onsdag 17.oktober | 08.15-10.00 | Gruppe 2: "f?rste" gruppetime |
Torsdag 18.oktober | 08.15-10.00 | Gruppe 1: "f?rste" gruppetime |
Torsdag 18.oktober | 10.15-12.00 | Felles: samretting |
Torsdag 18.oktober | 17.00-20.00 | ?pen pizzakveld (frivillig, sosialt) |
S?ndag 4.November | 23.59 | Innlevering av prosjekt, del I |
S?ndag 18.November | 23.59 | Innlevering av prosjekt, del 2 |
Tirsdag 20.November | 12.00 | Siste godkjenning f?r eksamen |
Onsdag 28.November | 14.30 | Avsluttende skriftlig eksamen |
Pizzakveld
Hva skjuler seg bak konvergensm?nsteret i Newtons metode?
Vi arrangerer en faglig og sosial kveld med gratis pizza, popul?rvitenskapelig foredrag og workshop med fokus p? visualisering ved hjelp av matplotlib. Arrangementet er ?pent for alle, men spesielt nyttig for studenter i IN-KJM1900. P?melding til Simon (simonsch@student.matnat.uio.no) Tid : Torsdag 18. oktober 17.00-20.00 Sted: KjemikantinaNumeriske metoder i forskning: Ikke alle problemer har en "penn-og-papir"-l?sning
(Bilde fra https://gfm.aps.org/meetings/dfd-2015/55e6c09f69702d060d900000 )
Video from the IllustrisTNG project http://www.tng-project.org/ Time evolution of the cosmic magnetic field strength. Blue/purple shows regions of low magnetic energy along filaments of the cosmic web, whereas orange and white indicate regions with significant magnetic energy inside halos and galaxies. The displayed region is taken from the TNG100 simulation and is 10 megaparsec wide.
The Illustris TNG project is an ongoing series of large, cosmological magnetohydrodynamical simulations of galaxy formation. The project as a whole is led by Volker Springel at HITS, in collaboration with researchers at MPIA, MPA, Harvard, MIT, and CCA. http://www.tng-project.org/people/
Modeller i kjemi
Ofte ser vi p? realistiske og kompliserte systemer og mekanismer
Beregningsorientering innen kjemi¶
- Volumetri
- Geometri (struktur)
- St?kiometri
- Statistikk
- Beregning av likevekt
- Titrering
- Reaksjonskinetikk
- Molekyl?rdynamikk
- Statistisk mekanikk
- Kvantekjemi
Litt om kvantekjemi
Simulering av
Basert p? grunnleggende kvantemekanikk
Begrensninger p? beregninger
Fremtidsutsikter
Hylleraas-senteret:
- Senter for Fremragende 亚博娱乐官网_亚博pt手机客户端登录, ved Kjemisk Institutt, UiO
- Internasjonalt anerkjent forskningssenter.
- Professorer som har bidratt betydelig til forskning innen kvantekjemi.
- Utvikler og anvender metoder for simuleringer av komplekse molekyl?re systemer i vekselvirkning med str?ling og felt.
Numeriske metoder / beregninger:¶
- Ikke det samme som programmering:
- Simulering, modellering
- L?sning av ligninger, integraler
- Iterative prosesser
- Benyttes n?r analytisk l?sning ikke finnes, for eksempel p? grunn av
- Randbetingelser
- Geometri
- Omfang
- ...eller n?r numerisk feil er akseptabel.
Reduksjonisme
En grunnleggende antakelse:
Kompliserte fenomener i naturen kan beskrives ved hjelp av sm?, mer fundamentale og enklere mekanismer. I filosofi kalles dette reduksjonisme.Bildet viser en b?lge:
Hva best?r den av? Hvilken mekanisme (eller regelsett) styrer bestanddelene?Forslag til regel:
- M?l forskjellen mellom din h?yde og naboen til h?yre: $\Delta h_{right}$
- M?l forskjellen mellom din h?yde og naboen til venstre: $\Delta h_{left}$
- Din nye h?yde: $h_{new} = h_{old} + c\left( \Delta h_{right} + \Delta h_{left} \right), c \in \mathbb{R}$
- Eventuelt: $h_{new} = h_{current} - h_{old} + c\left( \Delta h_{right} + \Delta h_{left} \right), c \in \mathbb{R}$
$\rightarrow$ Live kodeeksempel.
Introduksjon til Birkenes-modellen
<img src="/studier/emner/matnat/ifi/IN-KJM1900/h18/forelesninger/fig/birkenes.png" width = 400>
Kort om Birkenes-modellen:
- Numerisk modell for vannbevegelse og kjemi i jordv?ske.
- Tilpasset observasjoner i nedb?rsfelt i Birkenes kommune, Aust-Agder.
- Flere publikasjoner p? 70-, 80- og 90-tallet.
- Kjemisk modell koblet til hydrologisk modell.
Hydrologisk delmodell, kjapp intro:
- Hydrologi: l?ren om vannet pa? jorda (kretsl?p, etc)
- Her: transport av jordv?ske i nedb?rsfelt
- Nedb?rsfelt modellert som reservoarer A og B
- Reservoar: vannstand, str?m inn og ut. Sammenkobling via str?mmer.
- Avrenning til bekk. Fysiske ma?linger gjort her.
Kjemisk delmodell: kjapp intro:¶
- Kjemisk delmodell: Ideell blanding av ioner l?st i v?sken. (Ioner er kjemiske forbindelser med ladning.)
- Sur nedb?r som fortynnet svovelsyre $H_2SO_4$ i nedb?ren $P$: $$ H_2SO_4 \longrightarrow 2H^+ + SO_4^{2-} $$
- Sulfat kommer med nedb?ren: $SO_4^{2-}$ f?lger vannet gjennom modellen.
- Reaksjoner med jord: utlekking av giftig aluminium, etc.
- Vi f?lger konsentrasjonene av ioner i v?sken $$ [H^+], [SO_4^{2-}], [Al^{3+}], [HCO_3^{-}], [Ca^{2+}] $$ hvor $[X] = \frac{\text{masse av $X$}}{\text{volum}} $
- Ender opp med konsentrasjoner i bekken $Q$
- ...som f?rer til milj?p?virkning
Den fullstendige modellen¶
Den hydrologiske delmodellen l?ses f?rst for ? finne vannstanden i reservoarene som funksjon av tid
$$A(t)$$ $$B(t)$$
samt str?mmen i bekken $Q(t)$.
Deretter bestemmes massen av $SO_4^{2-}$ (og konsentrasjonene) i reservoarene:
$$M_A(t) \rightarrow [SO_4^{2-}]_A = \frac{M_A(t)}{A(t)} $$ $$M_B(t) \rightarrow [SO_4^{2-}]_B = \frac{M_B(t)}{B(t)} $$
samt konsentrasjon i bekken $[SO_4^{2-}]_Q$.
Utover dette vil de andre konsentrasjonene kunne bestemmes fra likevektsbetingelser og prinsipp om elektron?ytralitet. Dette vil bli gjennomg?tt grundig p? forelesning, og er ogs? forklart i oppgaveteksten.
Prosjektoppgaven¶
- Delprosjekt 1 (3 uker):
- Utvikle en modul for Python: birkutil.py
- Innlesning av data
- Fil inn og ut
- Parsing/tolkning av tekst
- Datatype: dictionaries
- Datatype: numpy-arrays / vektordata
- Newtons metode: Finn $x$ slik at $$ f(x) = 0 $$
- Newtons metode vil benyttes i kjemisk delmodell.
- Eulers metode for differensialligninger: Finn $y(t)$ slik at $$ \frac{d}{dt} y(t) = f(y(t), t)$$
- Innlesning av data
- Utvikle en modul for Python: birkutil.py
Prosjektoppgaven¶
- Delprosjekt 2 (2 uker):
- Gjenbruk av birkutil-modulen fra del 1.
- L?sning av hydrologisk delmodell.
- L?sning av kjemisk delmodell.
- Beregning av konsentrasjoner.
Prosjektoppgaven¶
Vi ser p? oppgaveteksten p? semestersidene.
"Focus, Daniel-san... focus"
Moduler i Python¶
- En modul er en samling med definisjoner lagret i en .py-fil.
- En modul kan importeres i en annen fil med et
import
-statement:
from numpy import random #importer "tilfeldige-tall-modulen" fra numpy
print(random.uniform(0,1,10)) #skriv ut 10 tilfeldige tall fra 0 til 1
import numpy as np #importer numpy og gi den et navn "np"
print(np.random.randint(0,6,10)) #skriv ut 10 tilfeldige tall fra 0 til 6
Moduler i Python¶
I eksempelet under lages en modul som importeres rett etterp?:
modfile = """
def really_important_reminder(name):
print("Students are humans too, %s." % name)
""" # A string to be stored as a module
file = open("reminder_module.py", "w") # open a file to write my modfile in
file.write(modfile) #write to file
file.close() #close file
import reminder_module as rm #importer modulen vi laget over
rm.really_important_reminder("Audun") #vis at det fungerer
Om du ?nsker ? legge en modul i en subfolder til arbeidsfolderen, kreves det at du lager en tom fil __init__.py
i subfolderen. For eksempel fra terminalen:
>touch [subfolder_name]/__init__.py
Moduler:¶
- gir ryddigere kode.
- er enklere ? vedlikeholde.
- er enklere ? erstatte og oppdatere.
- legger til rette for gjenbruk.
from __future__ import solve_all_my_problems
$\rightarrow$ Live kodeeksempel
Datastruktur: dictionaries¶
- Dictionaries (
dict
) er sekvenser av data indeksert med valgfrie datatyper: keys - ...i motsetning til
list
ognp.array
som indekseres med heltall.
Eksempel:
H = {"name":"Hydrogen (H)",
"mass":1.008,
"electrons": 1,
"atomic number": 1} # Dicts are defined with curly brackets
print("Mass of hydrogen:", H["mass"]) #print mass of hydrogen
# Create 3 dicts with alien movies:
alien1 = {"name":"Alien",
"director": "Ridley Scott"}
alien2 = {"name":"Aliens",
"director": "James Cameron"}
alien3 = {"name":"Alien 3",
"director": "David Fincher"}
alien_movies = [alien1, alien2, alien3] #list of alien movie dicts
#iterate over all movies, print name and director
for i in alien_movies:
print("Movie :", i["name"])
print("Director:", i["director"])
print(" ") #for separation
En dict
kan benytte ulike "keys"¶
my_dict = {"key1":1.000,
2:"two",
list:np.array([3])}
print(my_dict[list])
Dette kan v?re forvirrende. Tenk over: Kan du se for deg situasjoner hvor dette er nyttig?
$\rightarrow$ Live kodeeksempel
Rekurrensrelasjoner / differensligninger¶
En rekurrensrelasjon er en sekvens av verdier hvor en verdi er bestemt av en eller flere av de foreg?ende verdiene:
$$ a_{n+1} = f(a_n, a_{n-1}, a_{n-2}, ...)$$
- Kalles ogs? gjerne for differensligninger.
Zombie-epidemi
Rekurrensrelasjoner kan brukes til ? lage enkle modeller av sykdomsutbrudd, finansmarkeder, produksjonsprosesser og matkjeder. Vi vil m?te dem hovedsaklig i **Newtons metode** og **Eulers metode**. Dette er sannsynligvis de mest sentrale metodene for dette kurset.Differensialligninger og Eulers metode¶
I dette kurset m?ter vi differensialligninger p? formen
$$\frac{d}{dt} y(t) = f(y(t), t)$$
- Den ukjente i ligninga er en funksjon: $y(x)$
- Ligningen over er en 1. ordens ordin?r "diffligning".
- Enkeltderivert $\rightarrow$ "f?rste orden"
- Kun derivert med hensyn p? en variabel $\rightarrow$ "ordin?r"
- Diffligninger brukes gjennomg?ende i vitenskap; b?lger, diffusjon, osv.
- I kjemi, for eksempel for:
- Reaksjonskinetikk
- Kvantekjemi (Schr?dingerligningen)
- Radioaktivitet
Differensialligninger: initialverdiproblemer¶
Ligningene du skal l?se i dette kurset vil ha en kjent initialverdi
$$\frac{d}{dt} y(t) = f(y(t), t)$$ $$y(0) = a$$
- Resulterer gjerne i at vi m? l?se problemet numerisk.
Differensialligninger: numerisk løsning¶
- Vi skal l?se f?rste ordens ODEer numerisk.
- Vi baserer l?sningen v?r p? definisjonen av den deriverte: $$ \frac{d}{dt}f(t) = \lim_{\Delta t \rightarrow 0} \frac{f(t + \Delta t) - f(t)}{\Delta t} $$
Approksimasjonen gjøres i tre trinn:¶
- anta at en tilstrekkelig liten $\Delta t$ bringer oss n?r nok den deriverte $$ \frac{d}{dt}f(t) \approx \frac{f(t + \Delta t) - f(t)}{\Delta t} $$
- Sett inn approksimasjonen i ligningen: $$ \frac{d}{dt} y(t) = f(y(t), t) \rightarrow \frac{f(t + \Delta t) - f(t)}{\Delta t} = f(y(t),t)$$
- L?s algebraisk for $y(t+\Delta t)$: $$ y(t + \Delta t) = f(y(t),t)\cdot \Delta t + y(t) $$
- Alternativ notasjon ("oppdateringsskjema") $$ y_{i+1} = f(y_i, t) \cdot \Delta t + y_i $$ ... og du er i m?l med teori. N? gjenst?r implementasjon.
- Legg merke til at oppdateringsskjemaet er en rekurrensrelasjon.
Noen approksimasjoner p? den deriverte
$\frac{f(t + \Delta t) - f(t)}{\Delta t}$ | "Forward Euler" / Explicit Euler |
---|---|
$\frac{f(x+ \Delta x) - f(x-\Delta x)}{2 \Delta x}$ | "Leap-frog" |
$\frac{f(x) - f(x-\Delta x)}{\Delta x}$ | "Backward Euler"/Implicit Euler |
Initialverdiproblem: eksempel¶
- Radioaktive kjerner kan henfalle ved ? sende ut en $\alpha$-partikkel ( $^4_4He$ kjerne ).
- Over en tid $\Delta t$ har vi en sannsynlighet $\lambda \Delta t$ for at en kjerne henfaller. Halveringstid $$ t_{\frac{1}{2}} = \lambda ln(2)$$
- I snitt vil $N \lambda \Delta t$ kjerner henfalle, hvor $N$ er antall kjerner i en pr?ve.
- Masseregnskap: $$ \Delta N = - N \lambda \Delta t$$
- Dette gir en diffligning for $\Delta t \rightarrow 0$ $$ \frac{d}{dt} N(t) = -N \lambda$$ hvor $N(0) = N_0$ (initielt antall kjerner)
Følg oppskriften:¶
- Approksimer den deriverte:
$$ \frac{d}{dt} N(t) \approx \frac{N(t + \Delta t) - N(t)}{\Delta t}$$
- Sett inn for den deriverte:
$$ \rightarrow \frac{N(t + \Delta t) - N(t)}{\Delta t} = N(t)\lambda$$
- L?s algebraisk for $N(t + \Delta t)$
$$ N(t + \Delta t) = N(t) - N(t)\lambda = (1-\lambda \Delta t)N(t)$$
Eventuelt
$$ N_{i+1} = (1-\lambda \Delta t)N_i$$
$\rightarrow$ Live kodeeksempel av:
$$ N_{i+1} = (1-\lambda \Delta t)N_i$$
Hvor
$$N_0 = 100$$ $$ \lambda = 0.5 ln(2) $$ $$ \Delta t = 1$$
Om tid:
$\rightarrow$ Live kodeeksempel av:
$$ \left( \frac{d}{dt} \right)^2 h(x,t) = c^2 \left(\frac{d}{dx}\right)^2 h(x,t) $$
Oppsummering av dagen:¶
- Praktisk info
- Motivasjon og m?l for kurset
- Introduksjon av prosjektet: Birkenes-modellen
- Introduksjon av nytt pensum:
- Kodestruktur:
moduler
- Datastruktur:
dictionaries
- Teori: rekurrensrelasjoner/differensligninger
- Teori: differensialligninger
- Kodestruktur: