Comments (9)
There is no region called "Global"
The policy portfolio standard file should have the extension ".xml" (I assume? Never tried running a txt file before) and should be copied by all 32 regions in similar fashion to most other files in the input/policy
directory (see e.g. carbon_tax_10_5.xml
. Each region should be assigned the same market which can be called "global" if you want to stick with our naming conventions, though really it could be called anything as long as it's the same market name assigned in each region. The values of the constraint need only be specified in one region (any one will work as all others share the market), and the min-price doesn't need to be copied by each time period since the string fillout="1"
will copy it forward. But there's also no harm in copying it a bunch of times.
from gcam-core.
Hi @pkyle
Thank you so much for helping out again. I had uploaded txt instead of xml because I wasn't able to upload anything apart from zip, txt, pdf or docx.
I will correct my file and try running again.
Thank you
from gcam-core.
There is no region called "Global" The policy portfolio standard file should have the extension ".xml" (I assume? Never tried running a txt file before) and should be copied by all 32 regions in similar fashion to most other files in the
input/policy
directory (see e.g.carbon_tax_10_5.xml
. Each region should be assigned the same market which can be called "global" if you want to stick with our naming conventions, though really it could be called anything as long as it's the same market name assigned in each region. The values of the constraint need only be specified in one region (any one will work as all others share the market), and the min-price doesn't need to be copied by each time period since the stringfillout="1"
will copy it forward. But there's also no harm in copying it a bunch of times.
Thank you for helping with this. However, I had a follow up question please.
Is there any means to shut off 'traded natural gas'.
I haven't been able to achieve the desired results.
The method that I tried is in this txt file (converted from xml)
NG_feasiblerange.txt
this is the output that I have received:
<style> </style>1990 | 2005 | 2010 | 2015 | 2020 | 2025 | 2030 | 2035 | 2040 | 2045 | 2050 | 2055 | 2060 | 2065 | 2070 | 2075 | 2080 | 2085 | 2090 | 2095 | 2100 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
target total natural gas | 57.9400549 | 74.9921501 | 88.7196319 | 91.52360191 | 95.61809641 | 82.77206506 | 87.10041888 | 89.39205342 | 91.73986936 | 94.33283065 | 96.63342965 | 99.0768031 | 100.7232169 | 101.618198 | 95.0033734 | 91.3913567 | 87.10673544 | 84.24629713 | 81.36768538 | 78.30786403 | 74.31206624 |
model output: b natural gas | 57.9400549 | 74.9921501 | 88.7196319 | 91.52360191 | 95.61819691 | 74.59257146 | 78.4930835 | 80.5583715 | 82.6741022 | 85.0108824 | 87.0840041 | 89.2860241 | 90.7696405 | 91.5761296 | 85.6150721 | 82.3598947 | 78.49854862 | 75.92076203 | 73.32683808 | 70.56929224 | 66.9684677 |
model output: traded natural gas | 12.20877588 | 23.70726638 | 26.32258 | 31.8291728 | 37.41871276 | 33.44562853 | 37.42052131 | 42.81020568 | 48.7843507 | 56.2543714 | 63.9488107 | 71.064927 | 77.3882067 | 82.5501484 | 82.1675155 | 83.6989043 | 84.2886671 | 85.4712598 | 85.2353263 | 84.4892534 | 83.6768875 |
from gcam-core.
The NG_feasiblerange.xml file has the incorrect structure in the policy portfolio standard parts. Everything looks good through the min-price
line, but then it seems to switch to the structure of a technology, not a policy, and uses fixedOutput, which we wouldn't want here even if we could apply it. The structure should look like this, for a single policy that restricts the consumption of natural gas in 2020, in two regions:
<region name="USA">
<policy-portfolio-standard name="Gas-Limit">
<policyType>subsidy</policyType>
<market>Global</market>
<min-price year="2020" fillout="1">-1000</min-price>
<constraint year="2020">95.61809641</constraint>
</policy-portfolio-standard>
<supplysector name="gas processing">
<subsector name="natural gas">
<stub-technology name="natural gas">
<period year="2020">
<input-subsidy name="Gas-Limit"/>
</period>
</stub-technology>
</subsector>
</supplysector>
</region>
<region name="Canada">
<policy-portfolio-standard name="Gas-Limit">
<market>Global</market>
</policy-portfolio-standard>
<supplysector name="gas processing">
<subsector name="natural gas">
<stub-technology name="natural gas">
<period year="2020">
<input-subsidy name="Gas-Limit"/>
</period>
</stub-technology>
</subsector>
</supplysector>
So, the policy portfolio standard is written to each region, with the market-name identified, but the constraints and other attributes only need to be specified in one region (you can do others, but it sets up the possibility of disagreement, involves a bunch of unnecessary copying). Each region has its gas processing/natural gas/natural gas
technology assigned an input of the policy. Note that you could also put this as in input to this same technology in the global technology database, and wouldn't have to copy that text by 32 regions. It's the same either way here because the policy is global, applied equally to all regions. This structure of using stub-technologies might be useful if you ever decide you want to exempt certain regions from the constraint, or set up region-specific constraints.
As a final note, I usually use input-subsidy
when I expect a policy to increase output from a baseline scenario, and input-tax
when I expect that the policy will decrease output. Then the prices of the policy are positive. Because you're allowing prices to go negative, this should work, but it might be a bit counter-intuitive in the interpretation, and could make it harder for the model to solve; I don't know. If you just replace the string subsidy
with tax
throughout the file, that will correctly switch the policyType
and the input-*
objects throughout the file.
from gcam-core.
The NG_feasiblerange.xml file has the incorrect structure in the policy portfolio standard parts. Everything looks good through the
min-price
line, but then it seems to switch to the structure of a technology, not a policy, and uses fixedOutput, which we wouldn't want here even if we could apply it. The structure should look like this, for a single policy that restricts the consumption of natural gas in 2020, in two regions:<region name="USA"> <policy-portfolio-standard name="Gas-Limit"> <policyType>subsidy</policyType> <market>Global</market> <min-price year="2020" fillout="1">-1000</min-price> <constraint year="2020">95.61809641</constraint> </policy-portfolio-standard> <supplysector name="gas processing"> <subsector name="natural gas"> <stub-technology name="natural gas"> <period year="2020"> <input-subsidy name="Gas-Limit"/> </period> </stub-technology> </subsector> </supplysector> </region> <region name="Canada"> <policy-portfolio-standard name="Gas-Limit"> <market>Global</market> </policy-portfolio-standard> <supplysector name="gas processing"> <subsector name="natural gas"> <stub-technology name="natural gas"> <period year="2020"> <input-subsidy name="Gas-Limit"/> </period> </stub-technology> </subsector> </supplysector>
So, the policy portfolio standard is written to each region, with the market-name identified, but the constraints and other attributes only need to be specified in one region (you can do others, but it sets up the possibility of disagreement, involves a bunch of unnecessary copying). Each region has its
gas processing/natural gas/natural gas
technology assigned an input of the policy. Note that you could also put this as in input to this same technology in the global technology database, and wouldn't have to copy that text by 32 regions. It's the same either way here because the policy is global, applied equally to all regions. This structure of using stub-technologies might be useful if you ever decide you want to exempt certain regions from the constraint, or set up region-specific constraints. As a final note, I usually useinput-subsidy
when I expect a policy to increase output from a baseline scenario, andinput-tax
when I expect that the policy will decrease output. Then the prices of the policy are positive. Because you're allowing prices to go negative, this should work, but it might be a bit counter-intuitive in the interpretation, and could make it harder for the model to solve; I don't know. If you just replace the stringsubsidy
withtax
throughout the file, that will correctly switch thepolicyType
and theinput-*
objects throughout the file.
Thank you for these inputs.
I did try to work on this method, from your previous suggestions. This is the format that I had used:
NG_feasiblerange (previous version).txt
But in this case also, I wasn't able to tweak the NG consumptions as per target values. :(
from gcam-core.
I'm surprised that doesn't crash the model. The supplysector is not embedded within a policy portfolio standard; see the structure of the example I mocked up in the prior message, and compare that with the (previous version) of your policy file. The policy-portfolio-standard
tag should be closed before opening up supplysector
from gcam-core.
I'm surprised that doesn't crash the model. The supplysector is not embedded within a policy portfolio standard; see the structure of the example I mocked up in the prior message, and compare that with the (previous version) of your policy file. The
policy-portfolio-standard
tag should be closed before opening upsupplysector
Hi @pkyle
I corrected the xml file as per your suggestion (I hope this is correct) :
NG_feasiblerange.txt
However I get the following error:
"SEVERE ERROR:Unrecognized policy type:
SEVERE ERROR:Valid policy type strings include: tax, RES, subsidy"
Do you think I should use
subsidy
for each region?
from gcam-core.
Oh maybe each region needs to have its policy type specified. Looks like it just wasn't inheriting the value from the global policy. So, in my text block above, I should have had:
<region name="Canada">
<policy-portfolio-standard name="Gas-Limit">
<policyType>subsidy</policyType>
<market>Global</market>
</policy-portfolio-standard>
from gcam-core.
Just to close out this issue, here's a version of the file that works. One of the issues is that apparently to be binding, global constraints values need to be read to all regions (in contrast to other policies like GHG constraints where just reading it into one region suffices). Adopting the same convention of re-setting the file extension to txt in order to get it to upload
NG_feasiblerange.txt
from gcam-core.
Related Issues (20)
- Issues on Transportation Sector CSV Data in GCAM HOT 2
- Can No hydrogen scenario be possible? HOT 4
- error ruuning jar file mac intel HOT 1
- In GCAM V 5.2: Equation behind the calculation of Transport service output by service in million pass/km or million ton/km from transport final energy demanded in EJ HOT 8
- output frm mac to window interface HOT 2
- GCAM (v7.0) -forcing a target temperature HOT 5
- Unable to create biofuel target policy
- Error while compiling a research branch, close to GCAM v6 with VS studio 2022 (v143) HOT 1
- 1.5 and 2° scenarios HOT 5
- hydrogen cogen interpretation HOT 10
- about multiple scenario setting HOT 3
- install from source HOT 6
- Discrepancy between Emissions Queries and the Set Net-Zero Target HOT 2
- Downscaling electricity generation by technology to the basin level in GCAM 7
- simulation name
- New iron and steel technologies missing nonCO2 emissions HOT 2
- Global Mean Temperature HOT 2
- Erroe in GCAM7 modelface 'gdp-per-capita-ppp' unit? HOT 2
- GCAM customized policies
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gcam-core.