Industry Insights
A Call to the Natural Gas and Low-Carbon Hydrogen Industry
Earlier this year the International Energy Administration (IEA) released its first Global Hydrogen Review urging faster adoption of low-carbon hydrogen to put the world on track for a sustainable energy system by 2050. The global production level of low-carbon hydrogen is currently very low, but the IEA views hydrogen as an important bridge fuel for reaching net zero global emissions by 2050—a perspective that’s shared by the European Commission’s hydrogen strategy.
"Governments need to take rapid actions to lower the barriers that are holding low-carbon hydrogen back from faster growth, which will be important if the world is to have a chance of reaching net zero emissions by 2050,” IEA executive director,Fatih Birol, wrote in the introduction to the IEA report, which also noted the importance of accelerating technological innovation in the industry.
One of the major advantages of low-carbon hydrogen as a bridge fuel is that it can be mixed with natural gas in existing distribution grids to reduce greenhouse gas emissions associated with burning the fossil fuel. It’s generally agreed that blending up to 10% hydrogen with natural gas (on a volumetric basis) would require no modifications to the low-pressure distribution grid or to domestic end-user appliances, and blending up to 20% likely could be achieved with certain modifications. In fact, several demonstration projects are currently underway on this.
However, there’s a significant barrier that could slow broader industry adoption if, and when, the supply of low-carbon hydrogen increases and legal limits are removed. Despite general industry and scientific agreement about the amount of hydrogen that natural gas devices can withstand, there’s currently no regulatory framework for certifying devices in compliance with the new gas compositions.
A Testing Framework for Industry Consideration
Itron is currently using a comprehensive framework for testing the compatibility of our natural gas meters with blends of natural gas and hydrogen. The company’s R&D group developed the framework over the last four years in conjunction with European notified bodies and researchers at Germany’s University of Applied Sciences, Offenburg and University of Applied Sciences, Karlsruhe.
We’ve offered the following five-part testing framework to European standards committees and the American Gas Association for consideration and possible adoption.
- Material compatibility –Test how hydrogen may affect the performance of any exposed material (metals, membranes, etc.) in a product.
- Embrittlement – Ensure long-term durability by determining whether or not metal components will stiffen and/or fracture with exposure to higher levels of hydrogen over time.
- Tightness – Assess if leakage rates need to be redefined for internal testing, due to the smaller size of hydrogen molecules, compared to natural gas.
- Explosion Risk – Determine how devices should be redesigned to account for the different explosion characteristics of increasing rates of hydrogen gas.
- Metrology – Evaluate how increasing rates of hydrogen and different pressure levels affect the accuracy of different measurement principles and meter types.
The Path Toward Compliance
A few notifying bodies are beginning to provide facilities for testing metering devices with hydrogen. But currently the industry lacks the necessary metrology chain—a traceable set of standards and common references to assure that results from one laboratory are comparable to those produced at another facility. In addition, there’s not yet a standard for the production of test-quality gas blends.
Itron has been helping to lead the NewGasMet project with several testing bodies to assess how testing standards need to be changed and ratified. This would allow manufacturers to develop hydrogen-compatible meters and submit them for compliance certification. To date, we’ve been supplying our meters and know-how to the project. But we need broader participation and support to help move the industry beyond this barrier.
Undeniably, metering is only one of numerous challenges to be overcome if low-carbon hydrogen is to become a viable solution for lowering greenhouse gas emissions and balancing the unpredictability of renewable energy supplies. However, this is our piece of the puzzle to solve. Last September I wrote in a commentary on Power Engineering International that industries in every sector need better regulatory frameworks to accelerate climate innovation. Here is our opportunity to create one such framework, and Itron invites all interested parties to join with us in the process.
Kesalahan terjadi ketika Memproses Template.
The following has evaluated to null or missing:
==> authorContent.contentFields [in template "44616#44647#114455" at line 9, column 17]
----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
----
----
FTL stack trace ("~" means nesting-related):
- Failed at: contentFields = authorContent.content... [in template "44616#44647#114455" at line 9, column 1]
----
1<#assign
2 webContentData = jsonFactoryUtil.createJSONObject(author.getData())
3 classPK = webContentData.classPK
4/>
5
6<#assign
7authorContent = restClient.get("/headless-delivery/v1.0/structured-contents/" + classPK + "?fields=contentFields%2CfriendlyUrlPath%2CtaxonomyCategoryBriefs")
8contentFields = authorContent.contentFields
9categories=authorContent.taxonomyCategoryBriefs
10authorContentData = jsonFactoryUtil.createJSONObject(authorContent)
11friendlyURL = authorContentData.friendlyUrlPath
12authorCategoryId = "0"
13/>
14
15<#list contentFields as contentField >
16 <#assign
17 contentFieldData = jsonFactoryUtil.createJSONObject(contentField)
18 name = contentField.name
19 />
20 <#if name == 'authorImage'>
21 <#if (contentField.contentFieldValue.image)??>
22 <#assign authorImageURL = contentField.contentFieldValue.image.contentUrl />
23 </#if>
24 </#if>
25 <#if name == 'authorName'>
26 <#assign authorName = contentField.contentFieldValue.data />
27 <#list categories as category >
28 <#if authorName == category.taxonomyCategoryName>
29 <#assign authorCategoryId = category.taxonomyCategoryId />
30 </#if>
31 </#list>
32 </#if>
33 <#if name == 'authorDescription'>
34 <#assign authorDescription = contentField.contentFieldValue.data />
35
36 </#if>
37
38 <#if name == 'authorJobTitle'>
39 <#assign authorJobTitle = contentField.contentFieldValue.data />
40
41 </#if>
42
43</#list>
44
45<div class="blog-author-info">
46 <#if authorImageURL??>
47 <img class="blog-author-img" id="author-image" src="${authorImageURL}" alt="" />
48 </#if>
49 <#if authorName??>
50 <#if authorName != "">
51 <p class="blog-author-name">By <a id="author-detail-page" href="/w/${friendlyURL}?filter_category_552298=${authorCategoryId}"><span id="author-full-name">${authorName}</span></a></p>
52 <hr />
53 </#if>
54 </#if>
55 <#if authorJobTitle??>
56 <#if authorJobTitle != "">
57 <p class="blog-author-title" id="author-job-title" >${authorJobTitle}</p>
58 <hr />
59 </#if>
60 </#if>
61 <#if authorDescription??>
62 <#if authorDescription != "" && authorDescription != "null" >
63 <p class="blog-author-desc" id="author-job-desc">${authorDescription}</p>
64 <hr />
65 </#if>
66 </#if>
67</div>
The following has evaluated to null or missing: ==> authorContent.contentFields [in template "44616#44647#114455" at line 9, column 17] ---- Tip: It's the step after the last dot that caused this error, not those before it. ---- Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)?? ---- ---- FTL stack trace ("~" means nesting-related): - Failed at: contentFields = authorContent.content... [in template "44616#44647#114455" at line 9, column 1] ----
1<#assign
2 webContentData = jsonFactoryUtil.createJSONObject(author.getData())
3 classPK = webContentData.classPK
4/>
5
6<#assign
7authorContent = restClient.get("/headless-delivery/v1.0/structured-contents/" + classPK + "?fields=contentFields%2CfriendlyUrlPath%2CtaxonomyCategoryBriefs")
8contentFields = authorContent.contentFields
9categories=authorContent.taxonomyCategoryBriefs
10authorContentData = jsonFactoryUtil.createJSONObject(authorContent)
11friendlyURL = authorContentData.friendlyUrlPath
12authorCategoryId = "0"
13/>
14
15<#list contentFields as contentField >
16 <#assign
17 contentFieldData = jsonFactoryUtil.createJSONObject(contentField)
18 name = contentField.name
19 />
20 <#if name == 'authorImage'>
21 <#if (contentField.contentFieldValue.image)??>
22 <#assign authorImageURL = contentField.contentFieldValue.image.contentUrl />
23 </#if>
24 </#if>
25 <#if name == 'authorName'>
26 <#assign authorName = contentField.contentFieldValue.data />
27 <#list categories as category >
28 <#if authorName == category.taxonomyCategoryName>
29 <#assign authorCategoryId = category.taxonomyCategoryId />
30 </#if>
31 </#list>
32 </#if>
33 <#if name == 'authorDescription'>
34 <#assign authorDescription = contentField.contentFieldValue.data />
35
36 </#if>
37
38 <#if name == 'authorJobTitle'>
39 <#assign authorJobTitle = contentField.contentFieldValue.data />
40
41 </#if>
42
43</#list>
44
45<div class="blog-author-info">
46 <#if authorImageURL??>
47 <img class="blog-author-img" id="author-image" src="${authorImageURL}" alt="" />
48 </#if>
49 <#if authorName??>
50 <#if authorName != "">
51 <p class="blog-author-name">By <a id="author-detail-page" href="/w/${friendlyURL}?filter_category_552298=${authorCategoryId}"><span id="author-full-name">${authorName}</span></a></p>
52 <hr />
53 </#if>
54 </#if>
55 <#if authorJobTitle??>
56 <#if authorJobTitle != "">
57 <p class="blog-author-title" id="author-job-title" >${authorJobTitle}</p>
58 <hr />
59 </#if>
60 </#if>
61 <#if authorDescription??>
62 <#if authorDescription != "" && authorDescription != "null" >
63 <p class="blog-author-desc" id="author-job-desc">${authorDescription}</p>
64 <hr />
65 </#if>
66 </#if>
67</div>