{"cells":[{"metadata":{},"cell_type":"markdown","source":"# En enkel drivhusmodell\nSeminar 3 i FYS1035, høsten 2025. Anja Røyne, UiO"},{"metadata":{},"cell_type":"markdown","source":"**Start med å kjøre cella under for å importere pakkene vi trenger.**"},{"metadata":{"trusted":true},"cell_type":"code","source":"from numpy import *\nfrom pylab import *","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"## 1. Atmosfærens emissivitet\n\nNå skal vi ta med jordas atmosfære. Vi skal bruke noe som likner på modellen fra video nummer 2, men som vi husker gav den alt for høy temperatur. For å gjøre modellen mer realistisk skal vi ta hensyn til at ikke all utstrålingen blir fanget opp av atmosfæren. Det kan vi gjøre ved å innføre en emissivitet $\\epsilon$ for atmosfæren, slik at utstrålingen fra atmosfæren blir \n\n$M_{ut,a} = \\sigma \\epsilon T_a^4$\n\nI tillegg skal vi, for enkelhets skyld, anta at en andel $1-\\epsilon$ av varmestrålingen fra jorda passerer  gjennom atmosfæren og rett ut i verdensrommet. Varmen som absorberes av atmosfæren blir da\n\n$M_{inn,a} = \\epsilon M_{ut,j}$\n\nTil slutt kan vi ta med at jorda har en albedo $a$, slik at $M_{inn} = (1-a)S$. \n\nEnergibalanse for atmosfæren:\n\n$T_a^4 = \\frac{1}{2}T_j^4$\n\nEnergibalanse for bakken:\n\n$(1-a)S+\\epsilon\\sigma T_a^4 = \\sigma T_j^4$\n\nSetter inn for atmosfæretemperaturen:\n\n$(1-a)S+\\frac{1}{2}\\epsilon\\sigma T_j^4 = \\sigma T_j^4$\n\n$(1-\\frac{1}{2}\\epsilon)T_j^4 = \\frac{(1-a)S}{\\sigma}$\n\n$T_j = \\left(\\frac{(1-a)S}{\\sigma(1-1/2\\epsilon)}\\right)^{\\frac{1}{4}}$\n\nSom et utgangspunkt kan vi sette $a = 0.3$. \n\n- **Hva må $\\epsilon$ være for at vi skal få en realistisk overflatetemperatur (nær 15$^{\\circ}$C)?** \n\nDet kan vi finne ut ved å plotte $T_j$ som funksjon av $\\epsilon$:\n"},{"metadata":{"trusted":true},"cell_type":"code","source":"# fysiske verdier:\nS = 340 # W/m2, innstråling\nsigma = 5.67e-8 # J/m2K, Stefan-Boltzmann-konstanten\na = 0.3 # albedo\n# liste over verdier for epsilon:\nn = 90 # antall verdier\nepsilon = linspace(0,1,n) # gir listen med (startverdi, stoppverdi, antall)\n\n# regner ut likevektstemperaturene\nTj = # SETT INN RIKTIG LIKNING\n# gjør om til celcius\nTj_c = Tj - 273.15\n\n# plotter resultatene\nplot(epsilon,Tj_c)\nxlabel(\"emissiviteten til atmosfæren\")\nylabel(\"likevektstemperatur (grader celcius)\")\n\n","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"- **Jordas gjennomsnittstemperatur er omtrent 15$^o$C. Hva er en rimelig verdi for emissiviteten?**\n\n## 2. Utvikling over tid\n\nNå kan vi lage en modell for hvordan jorda med drivhuseffekt vil utvikle seg over tid. Vi kan anta at varmekapasiteten til atmosfæren er $c_a=1.02\\cdot10^7$ J/m$^2$K ([tatt herfra](https://atmos.washington.edu/~dennis/321/321_Lecture_12.pdf)). Da blir modellen slik:"},{"metadata":{"trusted":true},"cell_type":"code","source":"# fysiske verdier:\nS = 340 # W/m2, innstråling\nsigma = 5.67e-8 # J/m2K, Stefan-Boltzmann-konstanten\nepsilon =  # SETT INN VERDI\na = 0.3 # albedo\nc_j = 4.0e8 # J/m2K, varmekapasitet for jorda\nc_a = 1.02e7 # J/m2K, varmekapasitet for atmosfæren\nT0j_c = 10 #grader celcius, starttemperatur for jordoverflaten\nT0a_c = 2 #grader celcius, starttemperatur for atmosfæren\n\n# regner om starttemperaturene til kelvin:\nT0j = T0j_c + 273.15\nT0a = T0a_c + 273.15\n# numeriske verdier:\nN = 500 # antall tidssteg\ndt = 0.05*365*24*3600 # antall sekunder per tidssteg (antall år * dager pr år * timer pr dag * sekunder pr time)\n\n# lager en liste over alle tidspunktene: \nt = arange(1,N+1,1) \n# lager en tom liste der jeg skal lagre temperaturene for hvert år:\nTj = zeros(N)\nTa = zeros(N)\n\n# tidsløkka:\nfor i in t: # dette skal gjøres for hver verdi av \"t\" etter tur, til lista er tom\n    # alt som hører inne i løkka skal være flyttet ett hakk inn til høyre.\n    if i == 1: # to likhetstegn brukes for å sjekke om i er akkurat lik 1\n        Tj[i-1] = T0j \n        Ta[i-1] = T0a \n        # Python teller plassene i lister fra 0. Her sier jeg at i år 1 skal jeg legge startverdien på plass 0 i temperatur-lista\n    else: # hvis vi ikke er i første år\n        # atmosfærens utstråling\n        M_ut_a = # SETT INN RIKTIG LIKNING\n        # innstråling på jorda\n        M_inn_j = # SETT INN RIKTIG LIKNING\n        # utstråling fra jorda\n        M_ut_j = # SETT INN RIKTIG LIKNING\n        # temperatur, jorda\n        Tj[i-1] = Tj[i-2]+ 1/c_j*(M_inn_j-M_ut_j)*dt # oppdaterer temperaturen basert på energibalansen\n        # temperatur, atmosfæren\n        M_inn_a = # SETT INN RIKTIG LIKNING\n        Ta[i-1] = Ta[i-2]+ 1/c_a*(M_inn_a-M_ut_a)*dt # oppdaterer temperaturen basert på energibalansen\n                \n# tilbake til celcius\nTj_c = Tj-273.15\n        \n# plotte resultatet:\nplot(t*dt/(365*24*3600),Tj_c)\nxlabel(\"tid (år)\")\nylabel(\"bakketemperatur (grader celcius)\")\n\n# hva blir sluttresultatet\nprint(\"Etter\",format(t[-1]*dt/(365*24*3600),\".2f\"),\"år er temperaturen blitt\",format(Tj_c[-1],\".2f\"),\"grader celcius.\") ","execution_count":null,"outputs":[]},{"metadata":{},"cell_type":"markdown","source":"- **Hvilken parameter i modellen gir det mest mening å endre på dersom du vil se på effekten av en kraftigere drivhuseffekt? Prøv og se hva utslaget blir. Var det som forventet?**"},{"metadata":{"trusted":true},"cell_type":"code","source":"","execution_count":null,"outputs":[]}],"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3 (ipykernel)","language":"python"},"language_info":{"name":"python","version":"3.10.5","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"}},"nbformat":4,"nbformat_minor":2}
