Dieses R Markdown Skript dient dazu, als Video zu illustrieren, wie die Verzögerungen im Klimaschutz über das begrenzte CO2-Budget dazu führen, dass die notwendigen Maßnahmen zur
Sicherung einer lebenswerten und nachhaltigen Zukunft für Alle
immer schwieriger werden.
Es Zeigt sich, dass Deutschland bis zum Jahr 2000 auf einem nachhaltigen Pfad zur Einhaltung unserer Klimaschutz-Verpflichtungen war und dann immer weiter abwich, weil zu wenig unternommen wurde.
Historische Emissionen der Bundesrepublik Deutschland laut Umweltbundesamt. https://www.umweltbundesamt.de/sites/default/files/medien/384/bilder/dateien/8_tab_thg-emi-kat_2024-04-02.pdf Für das Budget wird nur CO2 berücksichtigt, andere Treibhausgase sind kurzlebiger und werden daher nicht berücksichtigt.
f <- read.table("emissionen-brd.csv", sep=" ", header=F);
df <- data.frame(year=as.vector(f[1,], mode='integer'),
energie_co2=as.vector(f[2,], mode='integer'),
industrie_co2=as.vector(f[3,], mode='integer'),
landwirtschaft_co2=as.vector(f[4,], mode='integer'),
gesamt=as.vector(f[5,], mode='integer'));
## Warning in as.vector(x, mode = mode): NAs durch Umwandlung erzeugt
## Warning in as.vector(x, mode = mode): NAs durch Umwandlung erzeugt
## Warning in as.vector(x, mode = mode): NAs durch Umwandlung erzeugt
## Warning in as.vector(x, mode = mode): NAs durch Umwandlung erzeugt
## Warning in as.vector(x, mode = mode): NAs durch Umwandlung erzeugt
df <- subset(df, year>=1990);
df$co2_kt <- df$energie_co2 + df$industrie_co2 + df$landwirtschaft_co2;
plot(df$year, df$co2_kt, type='b',
main='CO2 Emissionen Deutschland',
ylab='kt CO2 Äquivalente');
grid();
tmp <- approx(df$year, df$co2_kt, n=df$year[nrow(df)]-df$year[1]+1);
co2 <- data.frame(year=tmp$x, co2_Gt=tmp$y/(1000*1000));
plot(df$year, df$co2_kt/(1000*1000), type='b',
main='CO2 Emissionen Deutschland',
ylab='Gt CO2 Äquivalente');
lines(co2, col='green', type='b');
grid();
Global Carbon Project https://zenodo.org/records/14106218/files/GCB2024v18_MtCO2_flat.csv?download=1
c <- read.table("GCB2024v18_MtCO2_flat.csv", sep=",", header=T);
c <- subset(c, ISO.3166.1.alpha.3=='WLD' & Year>=1992)
Für die Berechnung des Paris-kompatiblen Bürstädter CO2-Budgets benutzen wir die Methode, die der Sachverständigenrat der Bundesregierung SRU in seinem Sachstandsbericht 2020 auf Seite 52 verwendet hat. Dieser Bericht liegt auch dem Klimaschutz-Urteil des Bundesverfassungsgerichts zugrunde.
Eine ähnliche Berechnung hat der Klimawissenschaftler Stefan Rahmstorf 2019 als “Wie viel CO2 kann Deutschland noch ausstoßen?” dokumentiert.
Globales CO 2 -Budget ab 2018 mit einer 67 prozentigen Wahrscheinlichkeit, deutlich unter 2 °C (1,75 °C) zu bleiben: 800 Gt CO 2 (IPCC 2018b).
Berechnung des globalen CO 2 -Budgets ab 2016 durch Addition der CO 2 -Emissionswerte 2016, die 41 Gt CO 2 betrugen (FRIEDLINGSTEIN et al. 2019): 800 Gt CO 2 + (2 × 41 Gt CO 2 ) = 882 Gt CO 2 .
Berechnung des Paris-kompatiblen CO2 -Budgets für Deutschland gemäß unserem Anteil an der Weltbevölkerung im Jahr 2016: Quelle: CO₂ Budget Calculator des SRU
# Anzahl Bürger*innen Deutschland
our_citizens <- 82.57E6
# Anzahl Weltbevölkerung
world_citizens <- 7.51E9
# Verbleibendes Rest-Budget Giga-Tonnen
world_budget_2016 <- 882;
# Verbleibendes Budget Deutschland (2016) t
our_budget_2016 <- world_budget_2016 * our_citizens / world_citizens;
our_budget_2016;
## [1] 9.697302
budget <- data.frame(year=2016, remaining=our_budget_2016);
i <- 1;
while (co2$year[i] < 2015) { i <- i+1; }
i2017 <- i+2;
remaining <- our_budget_2016;
while (i>=1) {
remaining <- remaining + co2$co2[i];
budget[nrow(budget)+1,] <- c(co2$year[i], remaining);
i <- i-1;
}
i <- i2017;
remaining <- our_budget_2016;
while (i<=nrow(co2)) {
remaining <- remaining - co2$co2[i];
budget[nrow(budget)+1,] <- c(co2$year[i], remaining);
i <- i+1;
}
budget <- budget[order(budget$year),]
plot(budget, type='b',
main='Verbleibendes CO2-Budget Deutschland für 2°C Ziel',
xlim=c(1990,2030),
ylab='Gigatonnen CO2', ylim=c(0, max(budget$remaining)),
xlab='Jahr');
grid();
emission <- co2$co2[nrow(co2)];
reduction_per_year <- -coef(lm('co2_Gt ~ year', subset(co2, year>=2015)))[2]
year <- co2$year[nrow(co2)]+1;
while (remaining > 0) {
emission <- emission - reduction_per_year;
remaining <- remaining - emission;
budget[nrow(budget)+1,] <- c(year, remaining);
co2[nrow(co2)+1,] <- c(year, emission);
i <- i+1;
year <- year+1;
}
plot(budget, type='b',
main='Verbleibendes CO2-Budget Deutschland mit Extrapolation',
xlim=c(1990,2030),
ylab='Gigatonnen CO2', ylim=c(0, max(budget$remaining)),
xlab='Jahr');
abline(v=2023, col='darkblue');
grid();
plot(co2, type='b',
main='CO2-Emissionen Deutschland mit Extrapolation',
xlim=c(1990,2030), ylim=c(0, max(co2$co2)),
ylab='Gigatonnen CO2',
xlab='Jahr');
abline(v=2023, col='darkblue');
grid();
Wenn Deutschland seine CO2-Emissionen ab einem Startjahr startyear gleichmäßig reduziert hätte, dann wäre folgende Reduktionskurve möglich gewesen:
early_startyear <- co2$year[1];
early_startemission <- co2$co2[1];
early_startbudget <- budget$remaining[1];
early_endyear <- early_startyear + 2 * early_startbudget / early_startemission + 1;
plotyear <- function(startyear) {
i <- 1; while (co2$year[i] < startyear) { i <- i+1; }
r <- data.frame(year=f$year[1:(i-1)], emissions=f$co2[1:(i-1)], remaining=f$remaining[1:(i-1)]);
remaining_budget <- f$remaining[i-1];
yearly_emissions <- f$co2[i-1];
remaining_years <- 2 * remaining_budget / yearly_emissions;
reduction_per_year <- yearly_emissions/(remaining_years+1);
year <- startyear;
while (remaining_budget > 0 & yearly_emissions > 0) {
yearly_emissions <- yearly_emissions - reduction_per_year;
remaining_budget <- remaining_budget - yearly_emissions;
r[nrow(r)+1,] = c(year, yearly_emissions, remaining_budget);
year <- year+1;
}
plot(r$year, r$emissions, type='l',
xlim=c(1990,2050), ylim=c(0, 1.3),
ylab='Gt CO2', xlab='Jahr',
main=sprintf('Emissionen bei Klimaschutzmaßnahmen ab %d', startyear));
polygon(c(early_startyear, early_startyear , early_endyear),
c(0 , early_startemission , 0), col='purple',
angle=45, density=10);
xx <- c(r$year[1], r$year , r$year[nrow(r)]);
yy <- c(0 , r$emissions, 0);
polygon(xx, yy, col='red')
polygon(xx, yy, col='white', angle=45, density=10);
ap <- approx(c(0, nrow(r)), c(early_startemission , 0), n=early_endyear-early_startyear+1)$y
yy2 <-c(0 ,pmin(r$emissions, ap[1:nrow(r)]), 0);
polygon(xx, yy2, col='red');
#lines(r$year, r$remaining/30, col='green');
lines(c(early_startyear, early_endyear), c(early_startemission, 0));
abline(v=startyear, col='darkblue');
grid();
legend(x= "topright",
legend=c("Tatsächliche Emissionen", "Klimaschutz ab 1990"),
col=c("red", "black"),
angle=c(0, 45),
density=c(100, 20));
}
f <- merge(co2, budget)
plotyear(1991);
plotyear(2000);
plotyear(2010);
plotyear(2019);
plotyear(2023);
plotyear(2025);
plotyear(2027);
plotyear(2028);
i <- 1;
y <- f$year[i]+1;
while (y <= f$year[nrow(f)]) {
png(sprintf("%03d.png", i), width=896, height=504);
plotyear(y);
dev.off();
y <- y +1;
i <- i +1;
}
system('./makevideo.sh');
Letzte News