Chapter 14 MEA electricity calculation

This section explains the MEA electricity calculation. Existing VSPPs electricity generation are needed. Such a generation is obtained from R code chunks provided in Chapter 6.

This study merges 2 MEA’s electricity load data sets as follows:

  1. A budget load 2566–2567 (2023–2024)
  2. An electricity load from the NIDA study approved on 25 August 2022

The budget load provides a required electricity demand from the MEA areas. It covers from EGAT sales to total net generation for 3 utilities’ power system. An estimated electricity generation ranges from 2023-2028.

The MEA electricity load from the NIDA study is merged to the budget load from 2029 onward.

R code chunks to extract the budget load and the NIDA load are given below.

  • The budget load 2566–2567 (2023–2024) code chunk
b_mea_ene <-
  
  read_excel("raw_data/01 EGAT_20Oct2022_งบ66 67_Final_Sent อศง.xlsx",
             sheet = "MEA",
             range = "A8:N27",
             col_names = c("sector","a", 2017:2028)) %>%
  select(!a) %>% 
  drop_na() %>% 
  pivot_longer(-sector, names_to = "year", values_to = "mea_gwh") %>%
  mutate(year = as.numeric(year),
         year_th = as.numeric(year) + 543) %>% 
  filter(sector == "MEA's System Requirement")
  • The electricity load from the NIDA study approved on 25 August 2022
pdp2022_mea_ene <-
  
read_excel("raw_data/93 EGAT_25Aug2022_13 Energy ภาพรวม NIDA_BAU_ND_EE70__Sent.xlsx",
           sheet = "MEA",
           range = "A8:AB33",
           col_names = c("sector","a", 2012:2037)) %>%
  select(!a) %>% 
  drop_na() %>% 
  pivot_longer(-sector, names_to = "year", values_to = "mea_gwh") %>%
  mutate(year = as.numeric(year),
         year_th = as.numeric(year) + 543) %>% 
  filter(sector == "MEA's System Requirement")
  • Merge 2 datasets The rbind function combined both the MEA’s budget load and the NIDA’s load.
newmea_ene <-
  
  rbind(b_mea_ene %>% filter(year >= 2019), 
        pdp2022_mea_ene %>% filter(year >=2029))

The MEA electricity requirement increases from 53,290 GWh in 2022 to 71,127 GWh in 2037. It increases 1.943% annually (see Figure 14.1).

Estimated MEA electricity requirement from the budget load and the NIDA study

Figure 14.1: Estimated MEA electricity requirement from the budget load and the NIDA study

14.1 VSPP in MEA in PDP2018REV1

  • Extract VSPP data
    The electricity generation from VSPP in the MEA area was divided into existing VSPPs and newly VSPP contracts. Solar and biomass for communities were added in a newly VSPP category.
mea_vspp_pdp2018r1 <-
  
  read_excel("raw_data/01 Load_PDP2018 ปรับ VSPP_13Jan2020_Final (PDP2018R1).xlsx",
           sheet = "I_VSPP",
           range = "B29:L51",
           col_names = c("year","solar", "wind", "hydro", "biomass", "biogas", "waste", "crop", "geothermal", "re_eeothers", "cogen")) %>%
  replace(is.na(.), 0 ) %>%
  mutate(total = rowSums(across(c(solar:cogen)))) %>% 
  pivot_longer(-year, names_to = "fuel", values_to = "mea_gwh") %>% 
  mutate(year_th = as.numeric(year) + 543) 

An electricity generation from existing VSPP in the MEA areas is from cogeneration power plants, hydropower, solar power, waste power plants. Total generation would reach its peak 235 GWh in 2017. It would remain 193 GWh from 2019-2037 (see Figure 14.2).

Projected electricity generation from existing VSPP contracts in the PDP2018 revision 1

Figure 14.2: Projected electricity generation from existing VSPP contracts in the PDP2018 revision 1

An electricity generation from newly VSPP in the MEA areas is from biogas, biomass hydropower, solar power for community, waste power plants and energy efficiency improvement. Total generation would be almost 10,000 GWh in 2037 (see Figure 14.3).

Projected electricity generation from newly VSPP contracts in the PDP2018 revision 1

Figure 14.3: Projected electricity generation from newly VSPP contracts in the PDP2018 revision 1

  • Select and combine MEA vspp and new vspp from PDP2018REV1
# Select MEA vspp and new vspp from PDP2018REV1 ####
tot_mea_vspp_pdp2018r1 <- 
  
mea_vspp_pdp2018r1 %>% 
  select(year,fuel, mea_gwh) %>% 
  filter(fuel == "total")

tot_mea_newvspp_pdp2018r1 <-
  
mea_newvspp_pdp2018r1 %>% 
  select(year,fuel, mea_gwh) %>% 
  filter(fuel == "total")

tot_mea_vspp_pdp2018rev1 <-

tot_mea_vspp_pdp2018r1 %>%
  mutate(tot_mea_gwh = mea_gwh + tot_mea_newvspp_pdp2018r1$mea_gwh) %>% 
  select(!mea_gwh)
The PDP2018 rev.1 estimated that total electricity generation from VSPP in the MEA area will increase from 54 GWh in 2015 to 10,227 GWh in 2037. Solar power for community will dominate the generation.
Total MEA electricity generation from VSPP in the PDP2018 revision 1

Figure 14.4: Total MEA electricity generation from VSPP in the PDP2018 revision 1

14.1.1 Calculate EGAT sale from PDP2018REV1

The left_join function is used to combine a data frame and a calculated electricity sale from EGAT to MEA. It is calculated by a following equation.

\[\begin{equation} EGTSLE_{MEA,t} = MEAReq_{t} - VSPP_{MEA,t} \tag{14.1} \end{equation}\]

egt_sle_mea_pdp2018r1 <-

left_join(newmea_ene,
          tot_mea_vspp_pdp2018rev1%>% 
            select(year,tot_mea_gwh) %>% 
            filter(year >= 2019)) %>% 
  mutate(egatsale = mea_gwh - tot_mea_gwh)
MEA electricity requirement and EGAT electricity sale to MEA in the PDP2018 revision 1

Figure 14.5: MEA electricity requirement and EGAT electricity sale to MEA in the PDP2018 revision 1

14.2 VSPP in MEA region from PDP2023 case7

  • Extract VSPP data
tot_mea_vspp_pdp2022c7 <-
  
  
read_excel("raw_data/Case7_VSPP+DEDE+NVSPP_เพิ่มภาค.xlsx",
           sheet = "MAC",
           range = "A28:Q49",
           col_names = c("fuel", 2022:2037)) %>%
  replace(is.na(.), 0 ) %>% 
  pivot_longer(-fuel, names_to = "year", values_to = "mea_gwh") %>% 
  mutate(year = as.numeric(year)) %>% 
  pivot_wider(names_from = fuel, values_from = mea_gwh) %>% 
  rename_all(tolower) %>% 
  pivot_longer(-year, names_to = "fuel", values_to = "tot_mea_gwh") %>% 
  filter(fuel == "total")
  • Join an electricity generation from VSPP in the MEA area and the PDP2022 case 7. The full_join function is used.
tot_mea_vspp_ene_pdp2022c7 <-
  
full_join(mea_vspp_ene_ext %>% 
  filter(year >= 2015,
         fuel == "tot_vspp_gwh") %>% 
  select(year, year_th, mea_vspp_gwh),
tot_mea_vspp_pdp2022c7%>% 
  select(year,tot_mea_gwh) %>% 
  filter(year >= 2019) ,
by= c("mea_vspp_gwh" = "tot_mea_gwh",
      "year" = "year")) %>% 
  select(!year_th) 

14.2.1 Calculate EGAT sale from PDP2022 Case 7

The left_join function is used to combine a data frame and a calculated electricity sale from EGAT to MEA. It is calculated by using equation (14.1).

egt_sle_mea_pdp2022c7 <-
  
  left_join(newmea_ene,
            tot_mea_vspp_ene_pdp2022c7 %>% 
              select(year,mea_vspp_gwh) %>% 
              filter(year >= 2019)) %>% 
  mutate(egatsale = mea_gwh - mea_vspp_gwh)

14.3 Calculate electricity requirement in the MEA area

  • Calculating for the worst case
### Calculating for worst case  
### Calculation for MEA electricity demand

newmea_ene_req <-
newload3u %>% 
  mutate(cumulative = lag(cumprod(grw_mea_dmd$growth),n = 0,default = 1)) %>% 
  mutate(mea_ene_req_gwh = cumulative * mea_ene_latest) %>% 
  select(year_th, year, mea_ene_req_gwh) %>% 
  mutate(tot_mea_vspp_pdp2018rev1 %>% 
           filter(year >= 2019)%>% 
           select(-year, -fuel)) %>% 
  select(year, year_th, mea_ene_req_gwh, mea_vspp_pdp2018r1 = tot_mea_gwh) %>% 
  mutate(egt_sle_mea_worst_case = mea_ene_req_gwh - mea_vspp_pdp2018r1)