JGCRI / gcam-core

GCAM -- The Global Change Analysis Model
http://jgcri.github.io/gcam-doc/
Other
263 stars 159 forks source link

Query on fixing Natural Gas consumption rate for one region - Russia #403

Open Nbiswas2 opened 3 months ago

Nbiswas2 commented 3 months ago

I have a dataset on Natural Gas consumption forecast (in EJ) for Russia up to 2100. I am trying to use those forecast as the consumption rate for Russia. I tried using fixed output for Natural gas in Russia, zip folder contains attached file (NG_feasiblerange - Approach 1.xml)

The runs do complete but do not give the fixed-output results. Any idea how to go about this? gcam_files_1P5C_contrainedNG.zip

<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40">

  | 1990 | 2005 | 2010 | 2015 | 2020 | 2025 | 2030 | 2035 | 2040 | 2045 | 2050 | 2055 | 2060 | 2065 | 2070 | 2075 | 2080 | 2085 | 2090 | 2095 | 2100 -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- desired NG consumption (EJ) | 16.2216 | 14.6371 | 16.0226 | 15.3042 | 16.1887 | 14.17266 | 13.26385 | 11.61206 | 10.16596 | 8.899959 | 8.535494 | 8.538686 | 8.368371 | 8.003196 | 7.631709 | 7.337895 | 7.136155 | 7.049196 | 6.88276 | 6.525374 | 6.125598 model run NG consumption (EJ) | 16.2216 | 14.6371 | 16.0226 | 15.3042 | 5.602 | 4.11399 | 3.66244 | 2.81586 | 2.03258 | 1.67303 | 1.56294 | 1.52955 | 1.5297 | 1.4892 | 1.41018 | 1.31343 | 1.22908 | 1.14612 | 1.02804 | 0.918846 | 0.823527

pkyle commented 3 months ago

The zip attachment didn't load properly, which isn't surprising. The use of fixedOutput doesn't really work at the commodity (supplysector) level, as the model has no way to compute the price. In the price calculation (weighted average of all technologies within a supplysector), the price of any fixedOutput technology is dropped. So, if you successfully fix the output of all technologies of regional natural gas (which include technologies of pipeline imports, LNG imports, and domestic production; the output of this sector is equal to the region's consumption of natural gas) then the model should crash. My understanding is that fixedOutput can only be used for individual technologies within a sector that has at least one technology that can be used to calculate a price. There's also an open question of which commodity you want to fix the output of. regional natural gas goes to gas processing which also has technologies of coal-to-gas and biogas, before going to gas pipeline and on to the end-use commodities wholesale gas (industry, energy transformation sectors) and delivered gas (buildings, transportation). Note however that there is a flow from regional natural gas directly to H2 central production and the gas to liquids technology of refining which you may want to shut off. Any of these supplysectors could have constraints assigned, but of course the net result would be different. If you fix the output of regional natural gas then to a first order the model will just substitute gasified coal ("town gas"), which probably isn't the result you're aiming for here. To set a constraint we usually use input-tax or input-subsidy, and to hard-wire a result (i.e., have the constraint also act as a floor), you just allow the price to go negative (see min-price in the XML snippet below). Here's an example of hard-wiring the gaseous fuels consumption in Russia in the year 2020 (irrespective of feedstocks, which might anyways be 100% natural gas):

<scenario>
   <world>
      <region name="Russia">
         <policy-portfolio-standard name="Gas-Limit">
            <policyType>subsidy</policyType>
            <market>Russia</market>
            <min-price year="2020" fillout="1">-100</min-price>
            <constraint year="2020">16.1887</constraint>
         </policy-portfolio-standard>
         <supplysector name="wholesale gas">
            <subsector name="wholesale gas">
               <technology name="wholesale gas">
                   <period year="2020">
                       <input-subsidy name="Gas-Limit"/>
                   </period>
               </technology>
           </subsector>
         </supplysector>
         <supplysector name="delivered gas">
            <subsector name="delivered gas">
               <technology name="delivered gas">
                   <period year="2020">
                       <input-subsidy name="Gas-Limit"/>
                   </period>
               </technology>
           </subsector>
         </supplysector>
      </region>
   </world>
</scenario>
pkyle commented 3 months ago

Just as a brief follow-up here, in this approach the model will calculate a price of the floor/constraint, which might be positive and might be negative depending on whether the baseline is higher or lower than the value specified, and that price will be passed forward, which might or might not have desirable effects in your intended study design. For example, the policy's cost/subsidy would be passed forward into electricity prices (because some electricity is produced from wholesale gas) which would in turn affect electricity demand. If you're trying to do this without any distortionary price impacts, then you might just need to use fixedOutput but applied to all technologies in the end-use and energy transformation sectors that consume gas (e.g., resid heating, comm heating, electricity, and so on). Just query the output database for inputs by technology and sort by input to see all of the technologies that use delivered gas and wholesale gas. Of course you couldn't just set the 16.1887 constraint across all sectors; would need to determine off-line how much to allow to each technology. But I don't know that there's any other way to do this without having equilibrium-related price impacts.

Nbiswas2 commented 3 months ago

Thank you @pkyle I want to observe the distortionary price impacts and so I appreciate your example with the input-subsidy. I shall try this out. I also like your idea on defining a fixedOutput applied to each end sector, but I am afraid I haven't yet found a way to determine how much to allow each technology.