diff --git a/Employment_Est.r b/Employment_Est.r deleted file mode 100644 index a97d423..0000000 --- a/Employment_Est.r +++ /dev/null @@ -1,4 +0,0 @@ -AVG_VALUE <- (0.15 +0.20)/2 -YEARLY_CAPACITY <- c(256,750,1000,1500) -NUM_OPERATING_STAFF <- round(AVG_VALUE*YEARLY_CAPACITY) -NUM_OPERATING_STAFF diff --git a/REMI_Inputs.r b/REMI_Inputs.r new file mode 100644 index 0000000..3f99ebe --- /dev/null +++ b/REMI_Inputs.r @@ -0,0 +1,129 @@ +library(tidyverse) +library(fixest) +##########################Direct cost estimates +TOTAL_COMPUTER_CAPITAL_INVEST <- 1156875000/10^6 #Total "Computer" capital cost in terms of millions of dollars +#Split of spending at data centers https://jlarc.virginia.gov/pdfs/reports/Rpt598.pdf +BUILDING <- 0.196 +COMPUTERS <- 0.682 +OTHER <- 0.061 +LAND <- 0.061 +TOTAL <- (BUILDING+COMPUTERS+OTHER) +#Adjust assuming that land is not included in the total capital costs +BUILDING <- BUILDING/TOTAL +COMPUTERS <- COMPUTERS/TOTAL +OTHER <- OTHER/TOTAL +#Cost in each category +BUILDING <- BUILDING*TOTAL_COMPUTER_CAPITAL_INVEST +COMPUTERS <- COMPUTERS*TOTAL_COMPUTER_CAPITAL_INVEST +OTHER <- OTHER*TOTAL_COMPUTER_CAPITAL_INVEST + +SCHEDULE <- c(250,500,250,500)#Data Center capacity schedule + #Assume half of all capital is spent a year before opening +CAPITAL_SCHEDULE_EST <- c(250,500,250,500,0)/2 + c(0,250,500,250,500)/2 +CAPITAL_SCHEDULE_EST<- CAPITAL_SCHEDULE_EST/sum(SCHEDULE) +BUILDING <- BUILDING*CAPITAL_SCHEDULE_EST #Output of construction industry +COMPUTERS <- COMPUTERS*CAPITAL_SCHEDULE_EST #Purchases of Computers +OTHER <- OTHER*CAPITAL_SCHEDULE_EST #Other purchases +DOLLAR_VALUES <- cbind(2029:2033,BUILDING,COMPUTERS,OTHER) %>% as_tibble +colnames(DOLLAR_VALUES )[1] <- "Year" + #Include Batteries +BESS_COST <- 719027250/10^6 +BESS_SCHEDULE <- c(0,250,500,250,500) +BESS_SCHEDULE <- BESS_SCHEDULE / sum(BESS_SCHEDULE ) +BESS <- BESS_SCHEDULE*BESS_COST +DOLLAR_VALUES$BESS <- BESS +DOLLAR_VALUES + #Include gas generator costs + #Reciprocation Engine costs (No construction assumed) +CCG_COST <- 6165257143/10^6 +RECIP_COST <- 50000000/10^6 +RECIP_SCHEDULE <- c(0,640,640,0,0) +RECIP_SCHEDULE <- RECIP_SCHEDULE/sum(RECIP_SCHEDULE) +RECIP <- RECIP_COST*RECIP_SCHEDULE + #Combined cycle costs +CCG_SCHEDULE <- c(0,0,0,0,2400) +DOLLARS_PER_KW <- 782 #See https://www.eia.gov/electricity/generatorcosts/index.php for the 7820 number converted from cents per kw +DOLLARS_PER_MW <- DOLLARS_PER_KW*1000 +MILL_DOLLARS_PER_MW <- DOLLARS_PER_MW/10^6 + +CCG_CONSTRUCTION_COSTS <- CCG_SCHEDULE*MILL_DOLLARS_PER_MW +CCG_CAPITAL_COST <- CCG_COST-CCG_CONSTRUCTION_COSTS[5] #Remove the construction cost to estimate final capital costs +CCG <- CCG_CAPITAL_COST *(CCG_SCHEDULE/sum(CCG_SCHEDULE)) +TURBINE <- CCG +RECIP +DOLLAR_VALUES$TURBINE <- TURBINE + + + +#######################Employment estimates +NAMES <- c("Trumbull Energy Center","Orange County Advanced Power Station","Shady Hills Combined Cycle Facility","Cumberland (TN)","Kingston","Lincoln Land Energy Center","Delta Blues Advanced Power Station","Homer","Vicksburg","Cheyenne Prairie","Legend and Lone Star","Wolf Summit Energy","Franklin Farms","Viola Generating Station","CPV Basin Ranch Energy Center","Smarr Combined Cycle Energy Facility","Waterford 5 & 6","Lake Charles","Jefferson Power Station") +CAP <- c(308.7*2+360, + 453*2+400, + 612, + 454.8+323, + 323, + 638.4*2, + 477+341.7, + 4678, + 819.4, + 132, + 754+453, + 600, + 1560, + 705, + 1490, + 1425, + 1640, + 994, + 754 +) + +DETAILED_REPORT <- c(1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0) +EMP <- c(25,27,12.5,30,NA,34,21,250,21,12,73,30,44,30,45,30,30,30,22) +PEAK_CONST <- c(920,NA,600,NA,300,500,300,2500,560,400,NA,400,(1500+1800)/2,500,1000,1200,700,1100,NA) +DATE <- c(2017,2018,2018,2022,2015,2020,2024,2025,2025,2012,2024,2025,2024,2024,2026,2026,2025,2020,2025) +DATA <- cbind(CAP,EMP,PEAK_CONST,DETAILED_REPORT,DATE) %>% as.matrix %>% as_tibble +DATA$NAMES <- NAMES +colnames(DATA ) <- c("Capacity","Emp","Peak_Const","Report_Quality","Report_Year","Plant") +REG_DATA <-DATA %>% select(Emp,Capacity,Report_Quality,Report_Year) +REG_DATA_TRIMMED <-DATA %>% filter(Plant!='Homer') %>% select(Emp,Capacity,Report_Quality,Report_Year) +MOD1 <- feols(log(Emp)~Capacity+Report_Quality+Report_Year,REG_DATA,vcov='hetero') +feols(log(Emp)~Capacity+Report_Quality+Report_Year,REG_DATA,vcov='hetero') +PRED_DATA <- DATA[1:4,] +PRED_DATA$Capacity <- c(640,1280,1280,3680) +PRED_DATA$Report_Year <- 2026 +PRED_DATA$Plant <- 'Enyo' +PRED_DATA$Emp<- NA +round(exp(predict(MOD1,newdata=PRED_DATA))) +#PRED_DATA$Capacity<- c(640,1280,1280,3680) #Larger number includes the single cyle turbines that look to be turned off most of the time +PRED_DATA +PRED_OPERATING <- round(exp(predict(MOD1,newdata=PRED_DATA))) +POWER_OPERATORS <- c(0,PRED_OPERATING ) +ALL_VALUES <- DOLLAR_VALUES +ALL_VALUES$POWER_OPERATORS <- POWER_OPERATORS + + +#ggplot(REG_DATA,aes(x=Capacity,y=log(Emp)))+geom_point()+geom_smooth(method='lm') + + +MOD2 <- feols(Peak_Const~Capacity+Report_Year+Report_Quality,DATA,vcov='hetero') +#ggplot(DATA,aes(x=Capacity,y=Peak_Const))+geom_point()+geom_smooth(method='lm') + +###Construction Data +CONST_SCHEDULE_HISTORIC <- c(45,75,90,115,175,235,285,350,400,350,255,175,95,65) #Employment by month in the most recent 2011 Wyoming application for a generator (See one drive data) +PEAK_CONST_EMP_HISTORIC <- 400 #Historic peak employment rate +PEAK_RATIO <- (sum(CONST_SCHEDULE_HISTORIC )/12)/PEAK_CONST_EMP_HISTORIC +PEAK_RATIO #Also aligns with the 60% estimate used in the data center report on expenses +PRED_DATA_CONST <- PRED_DATA +PRED_DATA_CONST$Capacity <- c(640,640,0,2400) #Capacity Added in a given year +CONST_EMPLOYMENT_PRED <- round(predict(MOD2,PRED_DATA_CONST)*PEAK_RATIO) +CONST_EMPLOYMENT_PRED + +EMP_2029 <- CONST_EMPLOYMENT_PRED[1]/4 #Shift based on starting in Q4 of 2029 +CONST_EMPLOYMENT_PRED +CONST_EMPLOYMENT_PRED[1] <- CONST_EMPLOYMENT_PRED[1]-EMP_2029 +CONST_EMPLOYMENT_PRED <- c(EMP_2029,CONST_EMPLOYMENT_PRED) +CONST_EMPLOYMENT_PRED <- CONST_EMPLOYMENT_PRED[c(1:3,5,4)] #Assume the CCG is built mostly in the previous year, but single cycles are same year, based on Enyo data sheet + +ALL_VALUES$TURBINE_CONST_WORKERS <- CONST_EMPLOYMENT_PRED +ALL_VALUES + diff --git a/Scale.r b/Scale.r deleted file mode 100644 index 785cd96..0000000 --- a/Scale.r +++ /dev/null @@ -1,75 +0,0 @@ -library(tidyverse) -library(fixest) - -NAMES <- c("Trumbull Energy Center","Orange County Advanced Power Station","Shady Hills Combined Cycle Facility","Cumberland (TN)","Kingston","Lincoln Land Energy Center","Delta Blues Advanced Power Station","Homer","Vicksburg","Cheyenne Prairie","Legend and Lone Star","Wolf Summit Energy","Franklin Farms","Viola Generating Station","CPV Basin Ranch Energy Center","Smarr Combined Cycle Energy Facility","Waterford 5 & 6","Lake Charles","Jefferson Power Station") -CAP <- c(308.7*2+360, - 453*2+400, - 612, - 454.8+323, - 323, - 638.4*2, - 477+341.7, - 4678, - 819.4, - 132, - 754+453, - 600, - 1560, - 705, - 1490, - 1425, - 1640, - 994, - 754 -) - -DETAILED_REPORT <- c(1,1,1,1,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0) -EMP <- c(25,27,12.5,30,NA,34,21,250,21,12,73,30,44,30,45,30,30,30,22) -PEAK_CONST <- c(920,NA,600,NA,300,500,300,2500,560,400,NA,400,(1500+1800)/2,500,1000,1200,700,1100,NA) -DATE <- c(2017,2018,2018,2022,2015,2020,2024,2025,2025,2012,2024,2025,2024,2024,2026,2026,2025,2020,2025) -DATA <- cbind(CAP,EMP,PEAK_CONST,DETAILED_REPORT,DATE) %>% as.matrix %>% as_tibble -DATA$NAMES <- NAMES -DATA -colnames(DATA ) <- c("Capacity","Emp","Peak_Const","Report_Quality","Report_Year","Plant") -REG_DATA <-DATA %>% select(Emp,Capacity,Report_Quality,Report_Year) -REG_DATA_TRIMMED <-DATA %>% filter(Plant!='Homer') %>% select(Emp,Capacity,Report_Quality,Report_Year) -DATA -MOD1 <- feols(log(Emp)~Capacity+Report_Quality+Report_Year,REG_DATA,vcov='hetero') -feols(log(Emp)~Capacity+Report_Quality+Report_Year,REG_DATA,vcov='hetero') -PRED_DATA <- DATA[1:4,] -PRED_DATA$Capacity <- c(250,750,1000,1500) -PRED_DATA$Report_Year <- 2026 -PRED_DATA$Plant <- 'Enyo' -PRED_DATA$Emp<- NA -round(exp(predict(MOD1,newdata=PRED_DATA))) -#PRED_DATA$Capacity<- c(640,1280,1280,3680) #Larger number includes the single cyle turbines that look to be turned off most of the time -PRED_OPERATING <- round(exp(predict(MOD1,newdata=PRED_DATA))) -PRED_OPERATING - -ggplot(REG_DATA,aes(x=Capacity,y=log(Emp)))+geom_point()+geom_smooth(method='lm') -#feols(log(Emp)~Capacity+Report_Quality+Report_Year,REG_DATA_TRIMMED,vcov='hetero') - - -MOD2 <- feols(Peak_Const~Capacity+Report_Year+Report_Quality,DATA,vcov='hetero') -feols(Peak_Const~Capacity+Report_Year+Report_Quality,DATA,vcov='hetero') -ggplot(DATA,aes(x=Capacity,y=Peak_Const))+geom_point()+geom_smooth(method='lm') - -###Construction Data -CONST_SCHEDULE <- c(45,75,90,115,175,235,285,350,400,350,255,175,95,65) -PEAK_RATIO <- (sum(CONST_SCHEDULE )/12)/400 -PEAK_RATIO -PRED_DATA_CONST <- PRED_DATA -PRED_DATA_CONST$Capacity <- c(640,640,0,2400) -CONST_EMPLOYMENT_PRED <- round(predict(MOD2,PRED_DATA_CONST)*PEAK_RATIO) -CONST_EMPLOYMENT_PRED - -MOD2 -CONST_SCHEDULE -95*2 - - -PRED_DATA <- DATA[1:4,] -PRED_DATA - - -