Close

Vale employee smiling in green landscape. She is wearing a green Vale
uniform, goggles, helmet and ear plugs. Visual wave artifact Vale
Imagem de header interno Imagem de header interno
5/9/23

Environment, Iron ore

Vale and GravitHy sign MoU to develop a plant dedicated to direct reduction iron ore briquettes production

Vale and the French DRI producer GravitHy have signed a Memorandum of Understanding (MoU) to pursue solutions focused on a carbon-neutral steelmaking process by using Vale’s innovative iron ore briquettes technology. Within the scope of the MoU, Vale and GravitHy will jointly evaluate the construction of a plant co-located in GravitHy’s site in Fos-sur-Mer (France) to produce direct reduction briquettes from Vale’s high-quality iron ore feedstock. 

GravitHy’s first Direct Reduction Iron (DRI) plant is expected to start-up production in 2027 in Fos-sur-Mer. The plant is designed to produce DRI using hydrogen as reductant fuel, reducing substantially carbon emissions in the steelmaking chain when compared to pig iron production through the integrated BF-BOF route. The DRI plant to be built by GravitHy is expected to have 2 Mtpy production capacity and investments of € 2 billion. The company is advancing its engineering and permitting studies, and construction is expected to start in 2024. 

Rogério Nogueira, director of Product and Business Development at Vale, said: “Vale is committed in providing low carbon emission solutions for the global steel industry. GravitHy is a good example of a changing steel market where new players take on the challenge to utilize hydrogen to produce low carbon DRI to supply an expected growing EAF production capacity. We are happy to work with a frontrunner in H2-based DRI production as we believe in the outstanding features of our iron ore briquettes for DRI production”. 

Commenting about the MoU, Jose Noldin, CEO of GravitHy said: “Decarbonization of steel production is a major challenge and requires innovative solutions, not only in technology but also in product and new business models. We are very pleased to start this collaboration with Vale to assess their unique and state-of-the-art briquetting technology that can be a game changer in low carbon solutions offered by the mining sector”. 

This MoU reinforces Vale’s confidence on direct reduction route and hydrogen usage to enable steelmaking decarbonization. Vale is committed to reduce 15% of net Scope 3 emissions by 2035. Since 2021, Vale engaged with more than 30 ironmaking clients representing approximately 50% of the company’s Scope 3 emissions. Additionally, Vale seeks to reduce its absolute Scope 1 and 2 emissions by 33% by 2030 and achieve net zero by 2050, in line with the Paris Agreement, leading the way to sustainable mining. 

In May 3rd, Vale informed that it has successfully tested a new type of iron ore briquette, adapted for the direct reduction route, which will contribute to the decarbonization of steel production. The new type of briquette emits about 80% less CO2 compared to pellets in its manufacture, abating the company's direct and indirect emissions (scopes 1 and 2). 

About GravitHy

GravitHy was launched in 2022 by a world-class consortium comprised by EIT InnoEnergy, the innovation engine for sustainable energy supported by the European Institute of Innovation & Technology, a body of the European Union (EU), Engie, Plug, Forvia, Groupe IDEC and Primetals Technologies. 

GravitHy is a sustainable iron company, with its first plant to be located in Fos-sur-Mer, Southern France. As the steel industry decarbonizes, GravitHy will address the growing demand for green iron, by producing and using low-carbon hydrogen to produce DRI. The DRI will be used directly or traded globally under the form of Hot-Briquetted Iron (HBI) to be used as a feedstock in low CO2 steel production.

Content with Press topics Iron ore .

An error occurred while processing the template.
The following has evaluated to null or missing:
==> restClient.get("/headless-admin-taxonomy/v1.0/sites/" + groupId + "/taxonomy-vocabularies?filter=name eq 'Press topics' or name eq 'Temas de imprensa'&fields=id&restricFields=actions,availableLanguages&page=1&pageSize=1").items  [in template "44549#44620#65143" at line 4, column 42]

----
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: pressTopicVocabularyId = restClient.g...  [in template "44549#44620#65143" at line 4, column 17]
----
1<#assign 
2    images_path = "/documents/d/guest/" 
3    namespace = "com_liferay_asset_publisher_web_portlet_AssetPublisherPortlet_" + stringUtil.randomId() 
4		pressTopicVocabularyId = restClient.get("/headless-admin-taxonomy/v1.0/sites/" + groupId + "/taxonomy-vocabularies?filter=name eq 'Press topics' or name eq 'Temas de imprensa'&fields=id&restricFields=actions,availableLanguages&page=1&pageSize=1").items[0].id 
5/> 
6 
7<#function getDisplayPageUrl asset> 
8    <#local 
9        assetRenderer = asset.getAssetRenderer() 
10        baseViewURL = assetPublisherHelper.getAssetViewURL(renderRequest, renderResponse, assetRenderer, asset, !stringUtil.equals(assetLinkBehavior, "showFullContent"))?split("?")?first?split("/-/")?first 
11    /> 
12    <#return baseViewURL?replace(themeDisplay.getURLPortal(), "")/> 
13</#function> 
14 
15<#function getCategoryFilterEndpoint asset> 
16    <#local 
17        pressTopicCategory = asset.getCategories()?filter(category -> category.getVocabularyId() == pressTopicVocabularyId)?first 
18        pressTopicCategoryId = pressTopicCategory.getCategoryId() 
19    /> 
20    <#return  "/-/categories/" + pressTopicCategoryId /> 
21</#function> 
22 
23<#function getDDMFormFieldsValue DDMFormFieldsReferencesMap DDMFormFieldValuesMap fieldReference> 
24    <#local field = DDMFormFieldsReferencesMap[fieldReference].name /> 
25    <#return DDMFormFieldValuesMap[field][0].getValue().getString(locale)!"" /> 
26</#function> 
27 
28<#function getCustomDisplayPageDataAttr customDisplayPageJson categoryFilterEndpoint> 
29    <#local 
30        groupId = customDisplayPageJson.getLong("groupId") 
31        uuid = customDisplayPageJson.getString("id") 
32        privateLayout = customDisplayPageJson.getBoolean("privateLayout") 
33    /> 
34    <#local customDisplayPageDataAttr> 
35        data-vale-custom-display-page='{"groupId":${groupId},"uuid":"${uuid}","privateLayout":${privateLayout?c}}' 
36        data-vale-category-endpoint=${categoryFilterEndpoint} 
37    </#local> 
38    <#return customDisplayPageDataAttr/> 
39</#function> 
40 
41<section class="vale-widget-imprensa-relacionadas bg-verde-vale" id="vale-widget-imprensa-relacionadas-${namespace}"> 
42    <div class="fragment-container overflow-hidden"> 
43        <div class="container"> 
44            <div class="titulo d-flex justify-content-between mt-7 mb-5"> 
45                <h2 class="text-amarelo-vale"> 
46			            <@liferay.language key="press" /> 
47                </h2> 
48                <div class="d-none d-md-flex align-self-center justify-content-end"> 
49                    <img 
50                        class="${namespace} carrossel-card-branco-categoria-button-prev btn btn-primary border-amarelo-vale bg-amarelo-vale mr-3 p-1 rounded-circle" 
51                        src="${images_path}seta-2-esq_bra" 
52                        alt="button-prev" 
53                    /> 
54                    <img 
55                        class="${namespace} carrossel-card-branco-categoria-button-next btn btn-primary border-amarelo-vale bg-amarelo-vale p-1 rounded-circle" 
56                        src="${images_path}seta-2-dir_bra" 
57                        alt="button-next" 
58                    /> 
59                </div> 
60            </div> 
61            <div class="swiper ${namespace} carrossel-card-branco-categoria"> 
62                <div class="swiper-wrapper mb-sm-6"> 
63                    <#if entries?has_content> 
64                        <#list entries as curEntry> 
65                            <#assign 
66                                assetRenderer = curEntry.getAssetRenderer() 
67                                article = assetRenderer.getArticle() 
68 
69                                categoryFilterEndpoint = getCategoryFilterEndpoint(curEntry) 
70 
71                                DDMFormFieldValuesMap = assetRenderer.getDDMFormValuesReader().getDDMFormValues().getDDMFormFieldValuesMap() 
72                                DDMFormFieldsReferencesMap = assetRenderer.article.DDMStructure.DDMForm.getDDMFormFieldsReferencesMap(true) 
73 
74                                customDisplayPageJsonString = getDDMFormFieldsValue(DDMFormFieldsReferencesMap, DDMFormFieldValuesMap, "customDisplayPage") 
75                                customDisplayPageJson = jsonFactoryUtil.createJSONObject(customDisplayPageJsonString) 
76 
77                                hasCustomDisplayPage = customDisplayPageJson.getString("groupId")?has_content 
78                                customDisplayPageDataAttr = hasCustomDisplayPage?then( 
79                                    getCustomDisplayPageDataAttr(customDisplayPageJson, categoryFilterEndpoint), "") 
80 
81                                displayPageUrl = getDisplayPageUrl(curEntry) + categoryFilterEndpoint 
82                            /> 
83                            <div class="swiper-slide"> 
84                            <a href="${displayPageUrl}" class="text-decoration-none" ${customDisplayPageDataAttr}> 
85                                <div class="box d-flex flex-column justify-content-between p-3"> 
86                                    <div> 
87                                        <p class="text-verde-aqua mb-2"> 
88                                            <#assign categories = curEntry.getCategories() /> 
89                                            <#list categories as category> 
90                                                <#if category.vocabularyId == pressTopicVocabularyId> 
91                                                    ${category.name} 
92                                                    <#break> 
93                                                </#if> 
94                                            </#list> 
95                                        </p> 
96                                        <p class="text-verde-vale"> 
97                                            ${curEntry.getTitle(locale)} 
98                                        </p> 
99                                    </div> 
100                                    <p class="text-cinza-escuro m-0"> 
101                                        <#assign dataField = DDMFormFieldsReferencesMap['data'].name /> 
102                                        <#assign data = DDMFormFieldValuesMap[dataField][0].getValue().getString(locale) /> 
103                                        <#assign date_localized = dateUtil.formatDate("yyyy-MM-dd", data, locale)/> 
104 
105                                        ${date_localized} 
106                                    </p> 
107                                    <img  
108                                        class="onda position-absolute" 
109                                        src="${images_path}onda_verde" 
110                                    /> 
111                                </div> 
112                            </a> 
113                            </div> 
114                        </#list> 
115                    </#if> 
116                </div> 
117            </div> 
118            <a  
119                class="bg-amarelo-vale border-amarelo-vale btn btn-nm btn-primary mb-6"  
120                href="${(locale == 'pt_BR')?then('/imprensa','/press-releases')}"  
121                target="_blank" 
122
123                <@liferay.language key="access-press-area" /> 
124            </a> 
125        </div> 
126    </div> 
127</section> 
128 
129<style> 
130.vale-widget-imprensa-relacionadas .onda { 
131    position: absolute; 
132    bottom: 1.875rem; 
133    right: -0.125rem; 
134
135 
136.vale-widget-imprensa-relacionadas .box { 
137    background-color: var(--branco); 
138    border-left: 10px solid var(--amarelo-vale); 
139    height: 14.6875rem; 
140    margin-bottom: 2rem; 
141
142 
143.vale-widget-imprensa-relacionadas p { 
144    display: -webkit-box;  
145    line-clamp: 4; 
146    overflow: hidden; 
147    -webkit-line-clamp: 4; 
148    -webkit-box-orient: vertical; 
149
150 
151@media screen and (min-width: 768px) { 
152    .vale-widget-imprensa-relacionadas .box { 
153        border-left: 20px solid var(--amarelo-vale); 
154        height: 11.875rem; 
155
156 
157    .vale-widget-imprensa-relacionadas p { 
158        line-clamp: 3; 
159        -webkit-line-clamp: 3; 
160
161
162 
163.vale-widget-imprensa-relacionadas .container { 
164    overflow: visible; 
165
166 
167.vale-widget-imprensa-relacionadas .swiper { 
168    overflow: visible; 
169
170 
171.vale-widget-imprensa-relacionadas .swiper-slide { 
172    width: auto; 
173
174 
175</style> 
176 
177<script> 
178(function(){ 
179 
180var swiper = new Swiper(".${namespace}.carrossel-card-branco-categoria", { 
181    slidesPerView: 1, 
182    spaceBetween: 32, 
183    navigation: { 
184      nextEl: ".${namespace}.carrossel-card-branco-categoria-button-next", 
185      prevEl: ".${namespace}.carrossel-card-branco-categoria-button-prev", 
186      disabledClass: "disabled", 
187      navigationDisabledClass: "disabled", 
188    }, 
189    pagination: { 
190      clickable: true, 
191    }, 
192    slideClass: "swiper-slide", 
193    breakpoints: { 
194        768: { 
195            slidesPerView: 2, 
196        }, 
197        1024: { 
198            slidesPerView: 3, 
199        }, 
200    }, 
201}); 
202 
203  // Tagueamento 
204 
205    const namespace = document.querySelector("#vale-widget-imprensa-relacionadas-${namespace}"); 
206 
207    const section = namespace.querySelector("h2").innerText; 
208 
209    const links =  namespace.querySelectorAll("a"); 
210 
211    const handleEventLinkClick = (title, href) => { 
212      Analytics.track("Link", { 
213          section: section, 
214          rotulo: title + " : " + href, 
215      }); 
216    }; 
217 
218    links.forEach(link => { 
219      const text = link.querySelector('p.text-verde-vale'); 
220      const title = text ? text.innerText : ''; 
221      link.addEventListener("click", () => handleEventLinkClick(title, link.href)) 
222    }) 
223 
224    // Configurar URL de página de exibição dinâmica 
225    const displayPageUrls = namespace.querySelectorAll('a[data-vale-custom-display-page]'); 
226 
227    displayPageUrls.forEach(displayPageUrl => { 
228        const customDisplayPage = displayPageUrl.dataset["valeCustomDisplayPage"]; 
229        const categoryEndpoint = displayPageUrl.dataset["valeCategoryEndpoint"]; 
230        Liferay.Service( 
231            '/layout/get-layout-by-uuid-and-group-id', 
232            JSON.parse(customDisplayPage), 
233            layout => { 
234                const friendlyURL = layout["friendlyURL"]; 
235                if (friendlyURL) { 
236                    displayPageUrl.href = friendlyURL + categoryEndpoint; 
237
238
239        ); 
240    }) 
241})() 
242 
243</script> 
Lupa de pesquisa

Did not find what you were looking for? Access our Search Center 

Reparation

Our commitment to repairing the communities and people impacted by the B1 dam failure is constant. See the social, environmental and safety actions taken by Vale. 
Foto:
Onda