Skip to content

Instantly share code, notes, and snippets.

@YannBouyeron
Last active January 6, 2021 21:32
Show Gist options
  • Save YannBouyeron/c87e87113c08a7dd2f942889bb89e988 to your computer and use it in GitHub Desktop.
Save YannBouyeron/c87e87113c08a7dd2f942889bb89e988 to your computer and use it in GitHub Desktop.
Climat.py
from math import pi, log
import numpy as np
class Climat:
def __init__(self, d = 149.6 *(10**9), p = 3.87*(10**26), a = 0.3, refC = 280):
"""
d: distance terre soleil en metres
p: puissance du soleil en W
a: alebdo 0 <= a <= 1
refC : concentration en carbone de reference (ère pre industrielle) en ppm
"""
self.d = d
self.p = p
self.a = a
self.refC = refC
def energie_incidente(self):
"""return energie incidente en w/m2"""
return self.p / (16*pi*(self.d**2))
def energie_reflechie(self):
"""return energie reflechie en w/m2"""
if not 0 <= self.a <= 1:
self.a = self.a /100
return self.energie_incidente() * self.a
def energie_incidente_absorbee(self):
"""return energie incidente absorbee en w/m2"""
return self.energie_incidente() - self.energie_reflechie()
def bilan_R(self, coo):
"""
argument:
coo: concentration CO2 atmospherique en ppm
return: bilan radiatif en W
"""
return (self.energie_incidente_absorbee()*390/240) + 5.35*log(coo/self.refC)
def boltzman(self, coo):
"""
argument:
coo: concentration CO2 atmospherique en ppm
return: temperature d'equilibre (kelvin, celcius)'"""
T = (self.bilan_R(coo) /(5.674*(10**-8)))**0.25
C = T - 273.15
return (T,C)
def teq(self, coo, l):
cref = 280
rref = 390
b = 5.674*10**-8
df = 5.35*np.log(coo/cref)
r = rref + df
tref = (rref/b)**0.25
tadd = df * l
t = tref+tadd
c = t - 273.15
return {"R": r, "T": t, "C": c}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment