From 6ac08036749b58e586286646434e5ccd4d807947 Mon Sep 17 00:00:00 2001 From: Valentin Joncquieres Date: Wed, 28 Aug 2024 15:00:08 +0200 Subject: [PATCH 1/2] delete spaces in documentation equations --- .../documentation/energy_invest_disc.md | 2 +- .../energy_or_ccs_invest_disc.md | 4 +- .../documentation/independent_invest_disc.md | 2 +- .../documentation/techno_invest_disc.md | 2 +- .../geologic_mineralization_disc.markdown | 4 +- .../electrolysis_pem_disc.markdown | 2 +- .../documentation/FORMULA clean.markdown | 4 +- .../documentation/FORMULA_resume.markdown | 66 ++++++++++--------- .../plasma_cracking_disc.markdown | 64 +++++++++--------- .../plasma_cracking_disc_v2.markdown | 61 ++++++++--------- .../water_gas_shift_disc.markdown | 8 +-- .../fischer_tropsch_disc.markdown | 20 +++--- .../upgrading_biogas_disc.markdown | 2 +- .../coal_extraction_disc.markdown | 4 +- .../documentation/pelletizing_disc.markdown | 2 +- .../autothermal_reforming_disc.markdown | 2 +- .../biomass_gasification_disc.markdown | 8 +-- .../co_electrolysis_disc.markdown | 6 +- .../coal_gasification_disc.markdown | 4 +- 19 files changed, 135 insertions(+), 132 deletions(-) diff --git a/energy_models/core/investments/disciplines/documentation/energy_invest_disc.md b/energy_models/core/investments/disciplines/documentation/energy_invest_disc.md index f16e87112..2c2ae181d 100644 --- a/energy_models/core/investments/disciplines/documentation/energy_invest_disc.md +++ b/energy_models/core/investments/disciplines/documentation/energy_invest_disc.md @@ -2,5 +2,5 @@ The distribution of investments is made according to the investments level mix dataframe in input. Each coefficient for each energy/technology over the years is normalized by the sum of coefficients for one year and multiplied by the total investments level : -$$ energy\_investment = total\_investment * \frac{energy\_mix\_coefficient}{\sum energy\_mix\_coefficient}$$ +$$energy\_investment = total\_investment * \frac{energy\_mix\_coefficient}{\sum energy\_mix\_coefficient}$$ diff --git a/energy_models/core/investments/disciplines/documentation/energy_or_ccs_invest_disc.md b/energy_models/core/investments/disciplines/documentation/energy_or_ccs_invest_disc.md index e5961dc64..5e54ce6dd 100644 --- a/energy_models/core/investments/disciplines/documentation/energy_or_ccs_invest_disc.md +++ b/energy_models/core/investments/disciplines/documentation/energy_or_ccs_invest_disc.md @@ -2,7 +2,7 @@ The distribution of global investments into CCS and energy conversion is made following a percentage of CCS investment compared to global investment. -$$ ccs\_investment = global\_investment * \frac{ccs\_mix\_percentage}{100}$$ +$$ccs\_investment = global\_investment * \frac{ccs\_mix\_percentage}{100}$$ -$$ energy\_conversion\_investment = global\_investment *(1.0- \frac{ccs\_mix\_percentage}{100})$$ +$$energy\_conversion\_investment = global\_investment *(1.0- \frac{ccs\_mix\_percentage}{100})$$ diff --git a/energy_models/core/investments/disciplines/documentation/independent_invest_disc.md b/energy_models/core/investments/disciplines/documentation/independent_invest_disc.md index ac6b1202a..5587e5d12 100644 --- a/energy_models/core/investments/disciplines/documentation/independent_invest_disc.md +++ b/energy_models/core/investments/disciplines/documentation/independent_invest_disc.md @@ -2,5 +2,5 @@ The distribution of investments is made according to the investments coming from the design space. A constraint is computed in order to obtain a sum of investments lower than the investment dedicated for energy production coming from the macroeconomics model. -$$ investment\_constraint = energy\_investment > \sum technos\_investments$$ +$$investment\_constraint = energy\_investment > \sum technos\_investments$$ diff --git a/energy_models/core/investments/disciplines/documentation/techno_invest_disc.md b/energy_models/core/investments/disciplines/documentation/techno_invest_disc.md index f16e87112..2c2ae181d 100644 --- a/energy_models/core/investments/disciplines/documentation/techno_invest_disc.md +++ b/energy_models/core/investments/disciplines/documentation/techno_invest_disc.md @@ -2,5 +2,5 @@ The distribution of investments is made according to the investments level mix dataframe in input. Each coefficient for each energy/technology over the years is normalized by the sum of coefficients for one year and multiplied by the total investments level : -$$ energy\_investment = total\_investment * \frac{energy\_mix\_coefficient}{\sum energy\_mix\_coefficient}$$ +$$energy\_investment = total\_investment * \frac{energy\_mix\_coefficient}{\sum energy\_mix\_coefficient}$$ diff --git a/energy_models/models/carbon_storage/geologic_mineralization/documentation/geologic_mineralization_disc.markdown b/energy_models/models/carbon_storage/geologic_mineralization/documentation/geologic_mineralization_disc.markdown index 4081bf27b..b065da8b2 100644 --- a/energy_models/models/carbon_storage/geologic_mineralization/documentation/geologic_mineralization_disc.markdown +++ b/energy_models/models/carbon_storage/geologic_mineralization/documentation/geologic_mineralization_disc.markdown @@ -2,8 +2,8 @@ The CO2 mineralization process is proposed by carbfix [^1] amongst others. The process consists of the dissolution of CO2 into water and inject the CO2- heavy water to react with basalt rocks. The CO2-heavy water reacts with Calcium (Ca) and Magnesium (Mg) contained in basalt for long term storage. -$$ CaO + CO_2 --> CaCO_3$$ -$$ MgO + CO_2 --> MgCO_3$$ +$$CaO + CO_2 --> CaCO_3$$ +$$MgO + CO_2 --> MgCO_3$$ ![](Geologic_Mineralization.PNG)[^1] diff --git a/energy_models/models/gaseous_hydrogen/electrolysis/pem/documentation/electrolysis_pem_disc.markdown b/energy_models/models/gaseous_hydrogen/electrolysis/pem/documentation/electrolysis_pem_disc.markdown index c999b2f31..6354f6978 100644 --- a/energy_models/models/gaseous_hydrogen/electrolysis/pem/documentation/electrolysis_pem_disc.markdown +++ b/energy_models/models/gaseous_hydrogen/electrolysis/pem/documentation/electrolysis_pem_disc.markdown @@ -32,7 +32,7 @@ PEM electrolysers need expensive noble metals (platinum, iridium) which makes th PEM electrolysers are not yet fully developped but Buttler [^6] reported around 6MW of PEM electrolysers nominal power around the world in 2017. With new project emerging, the nominal power of PEM is around 50MW in 2021 (a new 10MW hydrogen electrolysis plant, the largest of its kind in Europe operates in 2020[^7] and another 20 MW, the largest of its kind in the world, will start operating in 2021 in Quebec (Canada) [^10] ) leading to a global hydrogen production of 0.4TWh per year. Public investment in Europe for electrolysers is handled by the Fuel Cell and Hydrogen Joint Undertaking (FCH-JU) organism [^8].In 2019, european investments was around 156 MEUR or around 190 MDollars. We assume half of it is dedicated tor PEM. Around 36% of PEM electrolysers is financed by European union worldwide [^9]. Consequently the hypothesis investment in 2019 for PEM is around : -$$\frac{190*100}{2*36}= 263.88 \ MDollars$$ +$$\frac{190*100}{2*36}= 263.88 \ MDollars$$ ## Heat In Electrolysis, heat production assumed the net difference between total electricity consumption and total hydrogen production. diff --git a/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/FORMULA clean.markdown b/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/FORMULA clean.markdown index e3ea2ead8..f17382ed3 100644 --- a/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/FORMULA clean.markdown +++ b/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/FORMULA clean.markdown @@ -89,7 +89,7 @@ $$A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}]+ [Carbon\_dem        if Carbon\_storage > Carbon\_storage\_max : -$$ A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ +$$A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ #### energy_prices: @@ -114,7 +114,7 @@ $$A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}]+ [Carbon\_dem $$\dfrac {\partial X}{\partial invest} =\dfrac {[ \dfrac {\partial H2\_prod}{\partial invest} * H2\_price * A ]}{[H2\_revenue + A ]^2}$$ with: -$$ A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ +$$A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ \ \ \ diff --git a/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/FORMULA_resume.markdown b/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/FORMULA_resume.markdown index 3e2b2e9b3..3be45e5f7 100644 --- a/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/FORMULA_resume.markdown +++ b/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/FORMULA_resume.markdown @@ -1,45 +1,46 @@ ## FORMULA -$$H2_{price}= PC_{cost} * Margin * X $$ +$$H2_{price}= PC_{cost} * Margin * X$$ ### Gradients to compute: - $$\dfrac {\partial H2_{price}}{\partial invest}= Margin * X * \dfrac {\partial PC_{cost}}{\partial invest} - + PC_{cost} * Margin * \dfrac {\partial X}{\partial invest} $$ + $$\dfrac {\partial H2_{price}}{\partial invest}= Margin * X * \dfrac {\partial PC_{cost}}{\partial invest} + + PC_{cost} * Margin * \dfrac {\partial X}{\partial invest}$$ - $$\dfrac {\partial H2_{price}}{\partial energy\_prices}= Margin * X * \dfrac {\partial PC_{cost}}{\partial energy\_prices} - + PC_{cost} * Margin * \dfrac {\partial X}{\partial energy\_prices} $$ + $$\dfrac {\partial H2_{price}}{\partial energy\_prices}= Margin * X * \dfrac {\partial PC_{cost}}{\partial energy\_prices} + + PC_{cost} * Margin * \dfrac {\partial X}{\partial energy\_prices}$$ $$\dfrac {\partial H2_{price}}{\partial energy\_CO2\_emission}= Margin * X * \dfrac {\partial PC_{cost}}{\partial energy\_CO2\_emission} + 0 $$ ### X computation: -$$ X = \dfrac {H2\_revenue}{H2\_revenue - + A + +$$X = \dfrac {H2\_revenue}{H2\_revenue ++ A }$$ with: -if Carbon\_prod < Carbon\_demand : -$$ A = Carbon\_sold\_revenue$$ +if Carbon\_prod < Carbon\_demand : +$$A = Carbon\_sold\_revenue$$ if Carbon\_prod > Carbon\_demand :        Carbon\_storage = Carbon\_prod - Carbon\_demand -       if Carbon\_storage < Carbon\_storage\_max : -$$ A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}] +       if Carbon\_storage < Carbon\_storage\_max : +$$A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}] + [Carbon\_demand * (Carbon\_price - \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]$$        if Carbon\_storage > Carbon\_storage\_max : -$$ A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ +$$A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ \ \ ### Gradient computation: #### energy_prices: -$$ \dfrac {\partial X}{\partial energy\_prices} = +$$\dfrac {\partial X}{\partial energy\_prices} = \dfrac { \dfrac {\partial H2\_price}{\partial energy\_prices} * H2\_prod * A @@ -50,24 +51,25 @@ $$ with: -if Carbon\_prod < Carbon\_demand : -$$ A = Carbon\_sold\_revenue$$ +if Carbon\_prod < Carbon\_demand : +$$A = Carbon\_sold\_revenue$$ if Carbon\_prod > Carbon\_demand :        Carbon\_storage = Carbon\_prod - Carbon\_demand -       if Carbon\_storage < Carbon\_storage\_max : -$$ A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}] +       if Carbon\_storage < Carbon\_storage\_max : +$$A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}] + [Carbon\_demand * (Carbon\_price - \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]$$ \ -       if Carbon\_storage > Carbon\_storage\_max : +       if Carbon\_storage > Carbon\_storage\_max : -$$ A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ +$$A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ \ \ #### invest: -$$ \dfrac {\partial X}{\partial invest} = + +$$\dfrac {\partial X}{\partial invest} = \dfrac { [ \dfrac {\partial H2\_prod}{\partial invest} * H2\_price * A ] - @@ -79,23 +81,23 @@ $$ with: -if Carbon\_prod < Carbon\_demand : -$$ A = Carbon\_sold\_revenue$$ -$$ B = Carbon\_price $$ +if Carbon\_prod < Carbon\_demand : +$$A = Carbon\_sold\_revenue$$ +$$B = Carbon\_price$$ if Carbon\_prod > Carbon\_demand :        Carbon\_storage = Carbon\_prod - Carbon\_demand -       if Carbon\_storage < Carbon\_storage\_max : -$$ A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}] +       if Carbon\_storage < Carbon\_storage\_max : +$$A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}] + [Carbon\_demand * (Carbon\_price - \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]$$ -$$ B = \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol} $$ +$$B = \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol}$$ -       if Carbon\_storage > Carbon\_storage\_max : -$$ A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ -$$ B = 0 $$ +       if Carbon\_storage > Carbon\_storage\_max : +$$A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ +$$B = 0$$ \ \ \ @@ -105,11 +107,11 @@ $$ * $$\dfrac {\partial Carbon\_prod}{\partial invest} = computed\_value2 $$ -* $$\dfrac {\partial PC_{cost}}{\partial invest} = already\_computed\_value 1$$ +* $$\dfrac {\partial PC_{cost}}{\partial invest} = already\_computed\_value 1$$ -* $$\dfrac {\partial PC_{cost}}{\partial energy\_prices} = already\_computed\_value 2$$ +* $$\dfrac {\partial PC_{cost}}{\partial energy\_prices} = already\_computed\_value 2$$ -* $$\dfrac {\partial PC_{cost}}{\partial energy\_CO2\_emission} = already\_computed\_value 3$$ +* $$\dfrac {\partial PC_{cost}}{\partial energy\_CO2\_emission} = already\_computed\_value 3$$ finally, the only gradient to compute is: diff --git a/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/plasma_cracking_disc.markdown b/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/plasma_cracking_disc.markdown index 36db41a99..7f44f77fc 100644 --- a/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/plasma_cracking_disc.markdown +++ b/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/plasma_cracking_disc.markdown @@ -23,39 +23,39 @@ PC_cost : Plasma Cracking cost ### Formula: -$$H2_{price}= PC_{cost} * Margin * X $$ +$$H2_{price}= PC_{cost} * Margin * X$$ -$$H2_{price}= PC_{cost}(invest, energy\_prices,energy\_CO2\_emission) * Margin$$ -$$ * X(invest, energy\_prices, all\_stream\_demand\_ratio, resources\_price) $$ +$$H2_{price}= PC_{cost}(invest, energy\_prices,energy\_CO2\_emission) * Margin$$ +$$* X(invest, energy\_prices, all\_stream\_demand\_ratio, resources\_price)$$ ### Gradients to compute: - $$\dfrac {\partial H2_{price}}{\partial invest}= Margin * X * \dfrac {\partial PC_{cost}}{\partial invest} - + PC_{cost} * Margin * \dfrac {\partial X}{\partial invest} $$ - - $$\dfrac {\partial H2_{price}}{\partial energy\_prices}= Margin * X * \dfrac {\partial PC_{cost}}{\partial energy\_prices} - + PC_{cost} * Margin * \dfrac {\partial X}{\partial energy\_prices} $$ + $$\dfrac {\partial H2_{price}}{\partial invest}= Margin * X * \dfrac {\partial PC_{cost}}{\partial invest} + + PC_{cost} * Margin * \dfrac {\partial X}{\partial invest}$$ - $$\dfrac {\partial H2_{price}}{\partial energy\_CO2\_emission}= Margin * X * \dfrac {\partial PC_{cost}}{\partial energy\_CO2\_emission} - + 0 $$ + $$\dfrac {\partial H2_{price}}{\partial energy\_prices}= Margin * X * \dfrac {\partial PC_{cost}}{\partial energy\_prices} + + PC_{cost} * Margin * \dfrac {\partial X}{\partial energy\_prices}$$ + $$\dfrac {\partial H2_{price}}{\partial energy\_CO2\_emission}= Margin * X * \dfrac {\partial PC_{cost}}{\partial energy\_CO2\_emission} + + 0$$ - $$\dfrac {\partial H2_{price}}{\partial all\_stream\_demand\_ratio}= PC_{cost} * Margin * \dfrac {\partial X}{\partial all\_stream\_demand\_ratio} $$ +$$\dfrac {\partial H2_{price}}{\partial all\_stream\_demand\_ratio}= PC_{cost} * Margin * \dfrac {\partial X}{\partial all\_stream\_demand\_ratio}$$ -$$\dfrac {\partial H2_{price}}{\partial resources\_price}= PC_{cost} * Margin * \dfrac {\partial X}{\partial resources\_price} $$ +$$\dfrac {\partial H2_{price}}{\partial resources\_price}= PC_{cost} * Margin * \dfrac {\partial X}{\partial resources\_price}$$ ### X computation: -$$ X = \dfrac {H2\_revenue}{H2\_revenue - + A + +$$X = \dfrac {H2\_revenue}{H2\_revenue ++ A }$$ with: if Carbon\_prod < Carbon\_demand : -$$ A = Carbon\_sold\_revenue $$ +$$A = Carbon\_sold\_revenue$$ if Carbon\_prod > Carbon\_demand : @@ -69,7 +69,7 @@ $${\footnotesize A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol} ### energy_prices gradient computation: -$$ \dfrac {\partial X}{\partial energy\_prices} = +$$\dfrac {\partial X}{\partial energy\_prices} = \dfrac { \dfrac {\partial H2\_price}{\partial energy\_prices} * H2\_prod * A @@ -82,7 +82,7 @@ with: if Carbon\_prod < Carbon\_demand : -$$ A = Carbon\_sold\_revenue$$ +$$A = Carbon\_sold\_revenue$$ if Carbon\_prod > Carbon\_demand : @@ -95,7 +95,7 @@ $${\footnotesize A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol} ### invest gradient computation: -$$ \dfrac {\partial X}{\partial invest} = +$$\dfrac {\partial X}{\partial invest} = \dfrac { [ \dfrac {\partial H2\_prod}{\partial invest} * H2\_price * A ] - @@ -109,9 +109,9 @@ with: if Carbon\_prod < Carbon\_demand : -$$ A = Carbon\_sold\_revenue$$ +$$A = Carbon\_sold\_revenue$$ -$$ B = Carbon\_price $$ +$$B = Carbon\_price$$ if Carbon\_prod > Carbon\_demand : @@ -120,14 +120,14 @@ if Carbon\_prod > Carbon\_demand : $${\footnotesize A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}]+ [Carbon\_demand * (Carbon\_price - \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]}$$ -$$ B = \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol} $$ +$$B = \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol}$$ \ ### all stream demand ratio computation: -$$ {\footnotesize\dfrac {\partial X}{\partial all\_stream\_demand\_ratio} = +$${\footnotesize\dfrac {\partial X}{\partial all\_stream\_demand\_ratio} = \dfrac { [ \dfrac {\partial H2\_prod}{\partial all\_stream\_demand\_ratio} * H2\_price * A ] - @@ -141,9 +141,9 @@ with: if Carbon\_prod < Carbon\_demand : -$$ A = Carbon\_sold\_revenue$$ +$$A = Carbon\_sold\_revenue$$ -$$ B = Carbon\_price $$ +$$B = Carbon\_price$$ if Carbon\_prod > Carbon\_demand : @@ -152,12 +152,12 @@ if Carbon\_prod > Carbon\_demand : $${\footnotesize A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}]+ [Carbon\_demand * (Carbon\_price - \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]}$$ -$$ B = \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol} $$ +$$B = \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol}$$ ### resources price computation: -$$ {\footnotesize\dfrac {\partial X}{\partial resources\_price} = +$${\footnotesize\dfrac {\partial X}{\partial resources\_price} = \dfrac { - [\dfrac {\partial Carbon\_price} {\partial resources\_price} * B * @@ -170,9 +170,9 @@ with: if Carbon\_prod < Carbon\_demand : -$$ A = Carbon\_sold\_revenue$$ +$$A = Carbon\_sold\_revenue$$ -$$ B = Carbon\_sold\_revenue$$ +$$B = Carbon\_sold\_revenue$$ if Carbon\_prod > Carbon\_demand : @@ -181,7 +181,7 @@ if Carbon\_prod > Carbon\_demand : $${\footnotesize A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}]+ [Carbon\_demand * (Carbon\_price - \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]}$$ -$$ B = Carbon\_demand $$ +$$B = Carbon\_demand$$ ## Gradient computation - More details @@ -259,9 +259,9 @@ $$=\dfrac {[ \dfrac {\partial H2\_prod}{\partial invest} * H2\_price * Carbon\_s if Carbon\_prod > Carbon\_demand : -$$ {\scriptsize X = \dfrac {H2\_prod * H2\_price}{[H2\_prod * H2\_price ] + [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}]+ [Carbon\_demand * (Carbon\_price- \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]} }$$ +$${\scriptsize X = \dfrac {H2\_prod * H2\_price}{[H2\_prod * H2\_price ] + [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}]+ [Carbon\_demand * (Carbon\_price- \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]} }$$ -$$ = \dfrac {H2\_prod * H2\_price}{H2\_revenue + A}$$ +$$= \dfrac {H2\_prod * H2\_price}{H2\_revenue + A}$$ with: @@ -290,4 +290,4 @@ $$=\dfrac {[ \dfrac {\partial H2\_prod}{\partial invest} * H2\_price * A ] - with: -$$ {\small A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}]+ [Carbon\_demand * (Carbon\_price- \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]}$$ +$${\small A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}]+ [Carbon\_demand * (Carbon\_price- \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]}$$ diff --git a/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/plasma_cracking_disc_v2.markdown b/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/plasma_cracking_disc_v2.markdown index f839cbe0b..9c1326f62 100644 --- a/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/plasma_cracking_disc_v2.markdown +++ b/energy_models/models/gaseous_hydrogen/plasma_cracking/documentation/plasma_cracking_disc_v2.markdown @@ -15,53 +15,53 @@ This process allows to extract solid carbon out of methane and if used with biom In order to H2 price via PlasmaCracking technology, it computes: - -$$H2_{price}= PC_{cost} * Margin * X $$ +$$H2_{price}= PC_{cost} * Margin * X$$ ### Gradients to compute: - $$\dfrac {\partial H2_{price}}{\partial invest}= Margin * X * \dfrac {\partial PC_{cost}}{\partial invest} - + PC_{cost} * Margin * \dfrac {\partial X}{\partial invest} $$ + $$\dfrac {\partial H2_{price}}{\partial invest}= Margin * X * \dfrac {\partial PC_{cost}}{\partial invest} + + PC_{cost} * Margin * \dfrac {\partial X}{\partial invest}$$ - $$\dfrac {\partial H2_{price}}{\partial energy\_prices}= Margin * X * \dfrac {\partial PC_{cost}}{\partial energy\_prices} - + PC_{cost} * Margin * \dfrac {\partial X}{\partial energy\_prices} $$ + $$\dfrac {\partial H2_{price}}{\partial energy\_prices}= Margin * X * \dfrac {\partial PC_{cost}}{\partial energy\_prices} + + PC_{cost} * Margin * \dfrac {\partial X}{\partial energy\_prices}$$ - $$\dfrac {\partial H2_{price}}{\partial energy\_CO2\_emission}= Margin * X * \dfrac {\partial PC_{cost}}{\partial energy\_CO2\_emission} - + 0 $$ + $$\dfrac {\partial H2_{price}}{\partial energy\_CO2\_emission}= Margin * X * \dfrac {\partial PC_{cost}}{\partial energy\_CO2\_emission} + + 0$$ ### X computation: -$$ X = \dfrac {H2\_revenue}{H2\_revenue - + A + +$$X = \dfrac {H2\_revenue}{H2\_revenue ++ A }$$ with: if Carbon\_prod < Carbon\_demand : -$$ A = Carbon\_sold\_revenue$$ +$$A = Carbon\_sold\_revenue$$ if Carbon\_prod > Carbon\_demand :        Carbon\_storage = Carbon\_prod - Carbon\_demand        if Carbon\_storage < Carbon\_storage\_max : - -$$ A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}] + +$$A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}] + [Carbon\_demand * (Carbon\_price - \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]$$        if Carbon\_storage > Carbon\_storage\_max : -$$ A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ +$$A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ \ \ \ ### energy_prices gradient computation: -$$ \dfrac {\partial X}{\partial energy\_prices} = +$$\dfrac {\partial X}{\partial energy\_prices} = \dfrac { \dfrac {\partial H2\_price}{\partial energy\_prices} * H2\_prod * A @@ -74,7 +74,7 @@ with: if Carbon\_prod < Carbon\_demand : -$$ A = Carbon\_sold\_revenue$$ +$$A = Carbon\_sold\_revenue$$ if Carbon\_prod > Carbon\_demand : @@ -82,17 +82,18 @@ if Carbon\_prod > Carbon\_demand :        if Carbon\_storage < Carbon\_storage\_max : -$$ A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}] +$$A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}] + [Carbon\_demand * (Carbon\_price - \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]$$ \ -       if Carbon\_storage > Carbon\_storage\_max : +       if Carbon\_storage > Carbon\_storage\_max : -$$ A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ +$$A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ \ \ ### invest gradient computation: -$$ \dfrac {\partial X}{\partial invest} = + +$$\dfrac {\partial X}{\partial invest} = \dfrac { [ \dfrac {\partial H2\_prod}{\partial invest} * H2\_price * A ] - @@ -106,27 +107,27 @@ with: if Carbon\_prod < Carbon\_demand : -$$ A = Carbon\_sold\_revenue$$ +$$A = Carbon\_sold\_revenue$$ -$$ B = Carbon\_price $$ +$$B = Carbon\_price$$ if Carbon\_prod > Carbon\_demand :        Carbon\_storage = Carbon\_prod - Carbon\_demand        if Carbon\_storage < Carbon\_storage\_max : - -$$ A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}] + +$$A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}] + [Carbon\_demand * (Carbon\_price - \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol})]$$ - -$$ B = \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol} $$ + +$$B = \dfrac {Carbon\_mol * CO2\_credit}{CO2\_mol}$$        if Carbon\_storage > Carbon\_storage\_max : -$$ A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ +$$A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ -$$ B = 0 $$ +$$B = 0$$ \ \ \ @@ -221,7 +222,7 @@ $$A = [\dfrac {Carbon\_prod* Carbon\_mol * CO2\_credit}{CO2\_mol}]+ [Carbon\_dem        if Carbon\_storage > Carbon\_storage\_max : -$$ A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ +$$A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ #### energy_prices: @@ -250,7 +251,7 @@ $$\dfrac {\partial X}{\partial invest} =\dfrac {[ \dfrac {\partial H2\_prod}{\pa with: -$$ A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ +$$A = [Carbon\_demand * Carbon\_price]+ [\dfrac {(Carbon\_storage\_max)* Carbon\_mol * CO2\_credit}{CO2\_mol}]$$ \ \ \ \ No newline at end of file diff --git a/energy_models/models/gaseous_hydrogen/water_gas_shift/documentation/water_gas_shift_disc.markdown b/energy_models/models/gaseous_hydrogen/water_gas_shift/documentation/water_gas_shift_disc.markdown index 264e694dd..595b5c10e 100644 --- a/energy_models/models/gaseous_hydrogen/water_gas_shift/documentation/water_gas_shift_disc.markdown +++ b/energy_models/models/gaseous_hydrogen/water_gas_shift/documentation/water_gas_shift_disc.markdown @@ -23,15 +23,15 @@ $$(H_2 +r_1 CO) + cH_20 --> dCO_2 + e(H_2 +r_2CO)$$ with $r_1$ and $r_2$ syngas ratios before and after the reaction : -$$ r_i = \frac{mol CO}{mol H2}$$ +$$r_i = \frac{mol CO}{mol H2}$$ and with $c$,$d$ and $e$ coefficients of the reaction that can be computed with $r_1$ and $r_2$ to satisfy chemical equilibrium : -$$ c = \frac{r1-r2}{1+r2}$$ +$$c = \frac{r1-r2}{1+r2}$$ -$$ d = r1 - \frac{r2(1+r1)}{1+r2}$$ +$$d = r1 - \frac{r2(1+r1)}{1+r2}$$ -$$ e = \frac{1+r1}{1+r2}$$ +$$e = \frac{1+r1}{1+r2}$$ ## Data diff --git a/energy_models/models/liquid_fuel/fischer_tropsch/documentation/fischer_tropsch_disc.markdown b/energy_models/models/liquid_fuel/fischer_tropsch/documentation/fischer_tropsch_disc.markdown index 16260de93..8f9baf09e 100644 --- a/energy_models/models/liquid_fuel/fischer_tropsch/documentation/fischer_tropsch_disc.markdown +++ b/energy_models/models/liquid_fuel/fischer_tropsch/documentation/fischer_tropsch_disc.markdown @@ -5,7 +5,7 @@ ## The Fischer Tropsch Reaction The Fischer-Tropsch process is used to generate high carbon chain up to synthetic fuel and water wi th $n$ the carbon molecular number of the wanted synthetic fuel. -$$(2n + 1) H_2 + n CO --> C_nH_{2n+2} + nH_2O$$ (2) +$$(2n + 1) H_2 + n CO --> C_nH_{2n+2} + nH_2O$$(2) These reactions occur in the presence of metal catalysts, typically at temperatures of 150–300 °C (302–572 °F) and pressures of one to several tens of atmospheres. The process was first developed by Franz Fischer and Hans Tropsch in 1925.[^1] @@ -39,7 +39,7 @@ The first PtL (Power to Liquid with Electrolysis) demo plant at industrial scale ## Modifying the syngas ratio for the synthesis The ratio $\frac{CO}{H_2}$ of the needed syngas (gas composed of carbon monoxyde $CO$ and hydrogen $H_2$) must be equal to : -$$ r_{syngas} = \frac{n}{2n+1}$$ +$$r_{syngas} = \frac{n}{2n+1}$$ Depending on the syngas production technology, the syngas ratio of $CO$ over $H_2$ can be different. If the ratio of input syngas is lower than $\frac{n}{2n+1}$ we need to enrich the syngas with carbon monoxyde. If the syngas ratio is higher, some CO in the syngas must be removed. @@ -48,19 +48,19 @@ If the syngas ratio is higher, some CO in the syngas must be removed. The Reverse Water Gas Shift reaction is able to enrich a syngas mixture using carbon dioxyde ($CO_2$) : -$$dCO_2 + e(H_2 +r_1CO) --> (H_2 +r_2 CO) + cH_20 $$ +$$dCO_2 + e(H_2 +r_1CO) --> (H_2 +r_2 CO) + cH_20$$ with $r_1r_2$ syngas ratios before and after the reaction : and with $c$, $d$ and $e$ coefficients of the reaction that can be computed with $r_1$ and $r_2$ to satisfy chemical equilibrium : -$$ c = \frac{r1-r2}{1+r2}$$ +$$c = \frac{r1-r2}{1+r2}$$ -$$ d = r1 - \frac{r2(1+r1)}{1+r2}$$ +$$d = r1 - \frac{r2(1+r1)}{1+r2}$$ -$$ e = \frac{1+r1}{1+r2}$$ +$$e = \frac{1+r1}{1+r2}$$ In our context, we know the value of $r_2= \frac{n}{2n+1}$ with $n=12$ which is a valid assumption for kerosene jet fuel (between 10 and 16 carbon atoms by moles). diff --git a/energy_models/models/methane/upgrading_biogas/documentation/upgrading_biogas_disc.markdown b/energy_models/models/methane/upgrading_biogas/documentation/upgrading_biogas_disc.markdown index 5db391ee9..296c4db8b 100644 --- a/energy_models/models/methane/upgrading_biogas/documentation/upgrading_biogas_disc.markdown +++ b/energy_models/models/methane/upgrading_biogas/documentation/upgrading_biogas_disc.markdown @@ -12,7 +12,7 @@ There are many amine chemicals that dissolve into water as a solvent for biogas The reaction between MEA and CO2 is an exothermic reaction; for each mole of CO2 absorbed in MEA solution, 72kJ of thermal energy is released. -$$ 2(OH - 2CH_2 - NH_2) + CO_2 <--> (OH) - (CH_2)_2 - NHCOO- + OH - (CH_2)_2 - NH_3$$ +$$2(OH - 2CH_2 - NH_2) + CO_2 <--> (OH) - (CH_2)_2 - NHCOO- + OH - (CH_2)_2 - NH_3$$ $$2(OH - (CH_2)_2 - NH_2) + H_2S <--> (HOCH_2CH_2NH_3)_2S$$ $$(HOCH_2CH_2NH_3)_2S + H_2S <-->2HOCH_2CH_2NH_3HS$$ diff --git a/energy_models/models/solid_fuel/coal_extraction/documentation/coal_extraction_disc.markdown b/energy_models/models/solid_fuel/coal_extraction/documentation/coal_extraction_disc.markdown index f7e61966c..a9b121661 100644 --- a/energy_models/models/solid_fuel/coal_extraction/documentation/coal_extraction_disc.markdown +++ b/energy_models/models/solid_fuel/coal_extraction/documentation/coal_extraction_disc.markdown @@ -35,11 +35,11 @@ The emission of methane is a big issue for coal extraction mines. A lot of metha The Model for Calculating Coal Mine Methane (MC2M) developed by [^4] and used by IPCC models computed the annual CH4 emissions from coal mines with the equation : -$$CH4\_emissions (m^3) = coal\_production (t) *gas\_content(mine\_depth,coal\_type)*ef\_coefficient$$ +$$CH4\_emissions (m^3) = coal\_production (t) *gas\_content(mine\_depth,coal\_type)*ef\_coefficient$$ with $ef\_coefficient$ the emission factor coefficient equals to 1.7 in [^4] ans 1.6 in the Global Coal Mine Tracker [^6] and gas\_content(mine\_depth,coal\_type) the equivalent of CH4 emissions per ton of coal mined in $m^3/t$ : -$$ gas\_content(mine\_depth,coal\_type) = \frac{VL_{coal} depth}{PL_{coal}+depth}$$ +$$gas\_content(mine\_depth,coal\_type) = \frac{VL_{coal} depth}{PL_{coal}+depth}$$ with $VL_{coal}$ and $PL_{coal}$ the Langmuir volume and pressure of the coal type (different for anthracite or subbituminous). diff --git a/energy_models/models/solid_fuel/pelletizing/documentation/pelletizing_disc.markdown b/energy_models/models/solid_fuel/pelletizing/documentation/pelletizing_disc.markdown index ca718d7d0..8c008e02e 100644 --- a/energy_models/models/solid_fuel/pelletizing/documentation/pelletizing_disc.markdown +++ b/energy_models/models/solid_fuel/pelletizing/documentation/pelletizing_disc.markdown @@ -35,7 +35,7 @@ The resources needed to produce pellets are raw biomass and electricity (for chi The quantity of raw biomass depends on the moisture content of the biomass and the produced pellets following this formula: -$$ Q_{ty biomass}=\frac{(1+m_{biomass})}{(1+m_{pellets})}Q_{ty pellets}$$ +$$Q_{ty biomass}=\frac{(1+m_{biomass})}{(1+m_{pellets})}Q_{ty pellets}$$ An average value of the moisture content has been taken at 30% for the biomass and 8% for the pellets. diff --git a/energy_models/models/syngas/autothermal_reforming/documentation/autothermal_reforming_disc.markdown b/energy_models/models/syngas/autothermal_reforming/documentation/autothermal_reforming_disc.markdown index 02bb6081c..87f7f1457 100644 --- a/energy_models/models/syngas/autothermal_reforming/documentation/autothermal_reforming_disc.markdown +++ b/energy_models/models/syngas/autothermal_reforming/documentation/autothermal_reforming_disc.markdown @@ -2,7 +2,7 @@ Autothermal reforming uses CO_2 and oxygen in a reaction with methane to form syngas. The reaction takes place in a single chamber where the methane is partially oxidized. The reaction is exothermic due to the oxidation. -$$ 2CH_4 + O_2 + CO_2 --> 3CO + H_2O + 3H_2 $$ +$$2CH_4 + O_2 + CO_2 --> 3CO + H_2O + 3H_2$$ The syngas produced ratio of H2:CO is 1:1. diff --git a/energy_models/models/syngas/biomass_gasification/documentation/biomass_gasification_disc.markdown b/energy_models/models/syngas/biomass_gasification/documentation/biomass_gasification_disc.markdown index 46212fad3..95aecd749 100644 --- a/energy_models/models/syngas/biomass_gasification/documentation/biomass_gasification_disc.markdown +++ b/energy_models/models/syngas/biomass_gasification/documentation/biomass_gasification_disc.markdown @@ -12,13 +12,13 @@ The selection of the gasifier type depends on the raw material. Various gasifica Produced syngas followed the below formula and consist in a primarily mixture of carbon monoxide and hydrogen : -$$ Biomass(CH_aO_bN_cS_d) + O_2 --> CO_2$$ -$$ Biomass(CH_aO_bN_cS_d) + CO_2 --> 2CO$$ -$$ Biomass(CH_aO_bN_cS_d) + H_20 --> CO + H_2$$ +$$Biomass(CH_aO_bN_cS_d) + O_2 --> CO_2$$ +$$Biomass(CH_aO_bN_cS_d) + CO_2 --> 2CO$$ +$$Biomass(CH_aO_bN_cS_d) + H_20 --> CO + H_2$$ then when aggregate -$$ Biomass(CH_aO_bN_cS_d) + O_2 + H_2O --> CO + CO_2 + H_2 + other species$$ +$$Biomass(CH_aO_bN_cS_d) + O_2 + H_2O --> CO + CO_2 + H_2 + other species$$ (other species => $N_2$, $H_2S$ less than 0.3 Mole Frac(%)) diff --git a/energy_models/models/syngas/co_electrolysis/documentation/co_electrolysis_disc.markdown b/energy_models/models/syngas/co_electrolysis/documentation/co_electrolysis_disc.markdown index bad15ac81..97d06c18e 100644 --- a/energy_models/models/syngas/co_electrolysis/documentation/co_electrolysis_disc.markdown +++ b/energy_models/models/syngas/co_electrolysis/documentation/co_electrolysis_disc.markdown @@ -2,13 +2,13 @@ High temperature co-electrolysis is a process which electro-chemically reduces H2O and CO2 using solid oxide electrolyzer cell via the reactions in the equations : -$$ H_2O -> H2 + 1/2 O_2 $$ +$$H_2O -> H2 + 1/2 O_2$$ -$$ CO_2 -> CO + 1/2 O_2 $$ +$$CO_2 -> CO + 1/2 O_2$$ Total reaction is : -$$ H_2O + CO_2 -> H2 + CO + O_2 $$ +$$H_2O + CO_2 -> H2 + CO + O_2$$ ![](coelectrolysis.jpg) diff --git a/energy_models/models/syngas/coal_gasification/documentation/coal_gasification_disc.markdown b/energy_models/models/syngas/coal_gasification/documentation/coal_gasification_disc.markdown index 7ff6a96e7..3f2696b8c 100644 --- a/energy_models/models/syngas/coal_gasification/documentation/coal_gasification_disc.markdown +++ b/energy_models/models/syngas/coal_gasification/documentation/coal_gasification_disc.markdown @@ -3,7 +3,7 @@ ## Definition Coal gasification is the process of producing syngas from coal,water and oxygen. During gasification, the coal is blown through with oxygen and water vapor : -$$ 3C(coal) + O_2 + H_2O \rightarrow H_2 + 3CO$$ +$$3C(coal) + O_2 + H_2O \rightarrow H_2 + 3CO$$ If the refiner wants to produce liquid fuels, the coal gas is collected at this state and routed to a Fischer–Tropsch reactor. If, however, hydrogen is the desired end-product, the coal gas (primarily the CO product) undergoes the water gas shift reaction. @@ -15,7 +15,7 @@ The two main applications of coal gasification are to produce energy (hydrogen w In industry, syngas from coal gasification is used to transform iron oxides extracted from iron mines into iron ore using the Direct Reduced Iron (DRI) technology : - $$ 2FeO + (CO + H_2) \rightarrow 2Fe + CO_2 + H_2O $$ +$$2FeO + (CO + H_2) \rightarrow 2Fe + CO_2 + H_2O$$ IEA website reports a coal consumption of 3333 TWh for other transformation [^3] (includes Hydrogen and DRI) and 264.72 TWh for liquefaction plants. From dd9c5141f70db14cdda30992e91843e8c524aa4c Mon Sep 17 00:00:00 2001 From: perrotcap Date: Wed, 28 Aug 2024 21:53:14 +0200 Subject: [PATCH 2/2] fixed gradients ratio --- energy_models/core/techno_type/techno_disc.py | 4 ++-- .../jacobian_pkls/jacobian_hydrogen_WGS.pkl | Bin 9004 -> 9031 bytes .../jacobian_ratio_CoalExtraction.pkl | Bin 2590 -> 2586 bytes .../jacobian_ratio_Electrolysis.PEM.pkl | Bin 6275 -> 6300 bytes .../jacobian_ratio_FischerTropsch.pkl | Bin 6909 -> 7633 bytes .../jacobian_ratio_FossilGas.pkl | Bin 2596 -> 2573 bytes .../jacobian_ratio_HydrogenLiquefaction.pkl | Bin 5413 -> 5814 bytes .../jacobian_pkls/jacobian_ratio_Nuclear.pkl | Bin 2319 -> 2894 bytes .../jacobian_pkls/jacobian_ratio_Refinery.pkl | Bin 3691 -> 4986 bytes .../jacobian_pkls/jacobian_ratio_SMR.pkl | Bin 2592 -> 3189 bytes .../jacobian_ratio_WaterGasShift.pkl | Bin 6917 -> 6896 bytes ...cobian_ratio_hydrogen.gaseous_hydrogen.pkl | Bin 3514 -> 3544 bytes 12 files changed, 2 insertions(+), 2 deletions(-) diff --git a/energy_models/core/techno_type/techno_disc.py b/energy_models/core/techno_type/techno_disc.py index 912ee14fb..db612c3b5 100644 --- a/energy_models/core/techno_type/techno_disc.py +++ b/energy_models/core/techno_type/techno_disc.py @@ -507,7 +507,7 @@ def compute_sos_jacobian(self): if 'all_resource_ratio_usable_demand' in inputs_dict.keys(): if ratio_name in inputs_dict[ 'all_resource_ratio_usable_demand'].columns and ratio_name != GlossaryEnergy.Years: - production_woratio = self.techno_model.production_woratio[column] + production_woratio = self.techno_model.production_woratio[column].values self.dprod_column_dratio[column][ratio_name] = self.techno_model.compute_dprod_dratio( production_woratio, ratio_name=ratio_name, @@ -592,7 +592,7 @@ def compute_sos_jacobian(self): self.techno_model.construction_resource_list]: pass else: - consumption_woratio = self.techno_model.consumption_woratio[column] + consumption_woratio = self.techno_model.consumption_woratio[column].values dprod_dratio = self.techno_model.compute_dprod_dratio( consumption_woratio, ratio_name=ratio_name, diff --git a/energy_models/tests/jacobian_pkls/jacobian_hydrogen_WGS.pkl b/energy_models/tests/jacobian_pkls/jacobian_hydrogen_WGS.pkl index 6a080af8f2a07be192b4d66600a3a5f36663a415..59041b2d32596cd96d8b7383bbb4eef5b0e1f28b 100644 GIT binary patch literal 9031 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 literal 9004 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 S_!<%a#oUoj6eK<|G#>y>3|>nB diff --git a/energy_models/tests/jacobian_pkls/jacobian_ratio_CoalExtraction.pkl b/energy_models/tests/jacobian_pkls/jacobian_ratio_CoalExtraction.pkl index 08a69ac2b6648139ed03bafee08f1a253115079a..931bc33845c5d412795e4ef3419ea306b084c542 100644 GIT binary patch literal 2586 zcmXYq2{_b=8^?b$^D~Vx_%ZI38OONtcdVPKxngJ>6YV-yp>apWN>m!-8aIPzRy9Sg z6_TT3GtQ;lo0L>aC85I+%uc_01QXTd)50+lQ@5QI!|~Kn&KJ-4;9$VjG?yuHPiMIFCEIP)RJG1Fk?% zD1pkL+K@1$;at*qa>;C zm`_-WQ^N3Bfw0oYFL|thN=y>T2$^Aoa6n>h#7RVQP6{W8i-e4oe9DcKf=c<~fNv06 zjgZbD1y!cBjxx)KOP8rj*+@1_0000oZo4aOi~qB{vq7=}Kqu>QMKPQuBrpH~^u}(p zlPH86_Xzncq3CvE8%ANFC|k6&kO6l7>j5Az@Lz$9Cj|+%)y@wD)rJiKL)#8KtVPH$ zF;r9{C^~6a=Z>(~@NmV1Jozjb${U6;rvfOX0tJ8x z0XzV_p6bK_kRfUlC0MYq5>!RedF9eHI8sc>^B$u*e}yr7Oc<8cgJ;NAc&&c211n}NQSK3_BlQ>E4*x{VZ$1AcVx9`TJZ8xctySTH2Vlm3+cQ( zxj+L0Hp0|i3@@WDBjA!a5SPo5R>d*!KXVY~WC{!i+^7W6iGi}3aCJCI6&6Fvpv%B- z12=d$lE(?OTNW-1cIZu%0?nElUk&|tXv!nFAW`m zEan=2Nv-XA#jmzn3g;8M#Q(BLu%%w9cbs|z>d_oyIZ6ogb`l*S)s-5(tmTYy86vhQ z^plT}Yct}!_E}%}xIl{S%cn{Ex8RE{27cAKznRJrjeHq%!AqdbL?0#_tL9g^Fi}6w zU$RY%IC*Gn&1!#eov3Y7%N>4*>#80>(6nKe#n|AY7;1(x}Fj7$^}9c>$F<#o#u+qQJ!exhN5CM8>+uLb`JMp zavJ}6#{Z9b+xzbi>|aRvZJpUVX%}Femy%x4%hVFeHJnNEUmv1f_tPfPvmb=T>y&=f zJM;8pr*?at5$8(c-jj#aLPWGACCr}xxKU&~dvA|!Nup&{ck`iuw0Z5K2cG+qbHI%B z6ipwxiax%n4|%R*@WrAq`TX0{P09fKeitU!v8);ue1iB&_uQDsgxM+isPN`(1jx0C zZv>Hj%p12tCOA^@xCrOB^}8DkE!?>OA@ZaJ#y2N|NvlT;Vk+dbj=s63&a+eJIajFX z>1@xP()`998+>I4{%0AXdllLK4Gw6hJ(lArmbrlZZSFv ziSk)IfE^AV)DT-6qMF!=%X=UxvxKr`mx$WxGw0cFxe6$Wr(zTHikwwl#&BC`9oaOM zpsdnRm&`i%Si~QzWdtXGT9BRXXw9XSi5PI;9vO{`BhuHL@OoknX}P1*@$pw*^ob2o z;NP%_ZOVkg(x#q|p)yX?i%Elt2177*+GQfFy{&yJ(|juB_c2QRo&&KPOX>ou|4;bAFQ94VV9asHjW7F`)1{;U3;NmqrWc_7{y%!8eMwar=2Pij^qU_qICeDL z|I{XyB_jq{D$9E0pAY-d_*&`96JNc$74tR(KY_R=dF`lOo#G`vTj$a|`gur5Wr6Hz zW>|JuZKEWa#jNt=8TX7aIz1mn`i!|g@sPae+7%KQju=rfzh{9}_Dj{1`i*e>WJy5)Y#T&2w?t^=7lPnUyeQD*ntFOAxoiT$3?FZ6%i(t5A|soLx@!f%*R z(6Ep2&~1t%iq~_*FtrH}5*7{2waW6WEM)j@UT)l8wwG>e#?rAi42Gd z8F2eZ_E_zsq!45}PA7VIlmi0gzjXCJ#lDjMStxuH)v}SCIIZp6GPk(53x@3;I|Y+C z*}Q(`t!hXWXE_gJq@n6cDwd3m&wY>0-TONie| zW10w~J&Ts#q;$P|>{vkeQww5(30UDzuV++L2Pwx1RL2$HCExNAGvjW0OelKNUVdy}p{Nci}Ls?_P@n5?Aj-`8N}}xbete z`Go_yqpKGq6Z7xlw}LC-Rg}JV{vUS@IB7HTY2Ht zUv>CqR>LGD>Z@LCc15Q=l=y5C*4Hc?k+}bT%qw!cHUm$&Wur9WFbp+}>gYrSfKy2J z^^Pq+0TXPMt$X|lx_KZT{ECet<8TQ?=BNe zg~vS9ywi#}2Q+gvL4iB%x`ulC|Dr-K_poBEGOeLyo#-fB(m-F=53R_(>Un}wH5S3h zmsnl-u^nE0>a0hc*Urg4v1l!;w|1?1k7TH~cg5~wcspmJfO2%nn&^ zqoV_W6mHHz8Rvs?#&;J&XY@I%R|<>{tFOwoyaUPlfAC;1J(b-@;pm#vTZXG&oeqpw cybrErCyQcnCqm=5((b7iY0*h%n77&g0I^DAs{jB1 literal 2590 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 SAP-=F;_gVN3K9Ye`)eTg7dw&w delta 6269 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%0AmU_GlE!ZX+~xYT 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 diff --git a/energy_models/tests/jacobian_pkls/jacobian_ratio_FischerTropsch.pkl b/energy_models/tests/jacobian_pkls/jacobian_ratio_FischerTropsch.pkl index b5369ff39589de49e0c7512d64033e86643ea4bb..92d29f6bd3fe7740cfcb913568516c1bc803d54f 100644 GIT binary patch literal 7633 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 literal 6909 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 BXp;Z{ diff --git a/energy_models/tests/jacobian_pkls/jacobian_ratio_HydrogenLiquefaction.pkl b/energy_models/tests/jacobian_pkls/jacobian_ratio_HydrogenLiquefaction.pkl index 0f665f320f7a89cc1093f18eb92716080cc43940..b8e12b5e5f45a2c374d90f48df027c58330a40f4 100644 GIT binary patch literal 5814 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 AUH||9 literal 5413 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 PANaeHDZ+$+SyKRji;M3f diff --git a/energy_models/tests/jacobian_pkls/jacobian_ratio_Nuclear.pkl b/energy_models/tests/jacobian_pkls/jacobian_ratio_Nuclear.pkl index 14e41e96542e5df9f6a881295411b683485dab46..55744edc5fce73a070e6b83b63be5d4da21b0566 100644 GIT binary patch literal 2894 zcmY+Gc|6mPAICpqn>of@nK{~KjwHv-6~4{PF`8Sc97|{@xyz_#Mu^OPl_rwZ7bzu0 zmXRan3|*umT2mq^$FCm0-#@?S1(m}d~k<9@u&jWEqM$jRqj)5vrljm}b#|@SWWLu5UdElH&LzNsK@^I?1OTyGIsl*u zf9#(H{tGIUO8}tRU=l@2ivThdXVLb`i`QtCQ1SR6KCP5+7%9u`IgAhL;qwUmAvVv* z5TtAb)eukTp=eYBy(hE=rs7o)rcNGOU@#w}=yW;(ZcPPH&}1$EfVcqaPYnJ~tSAux z;85n@17MwO-Ar7=t~Fh|GiGg?c71`7mgBhLz7SfOR#qxHy5YHEOGSa2rG^L_Zt9i4 z%90o8GHyU1baVwz9~u2qW69=PEgeMJn@eFt{VQ z0{}Z0WR>LN0zSHG$!ge4Zk~9!<6I;@4fB)Q zG03W`IuB1882iLnst;71v!SVHMy&mwmOkek|DLD7Z`(TkT=+XlYr8G)F>rDt?bY!2 zw)zia;%(@d+$aE|h9pxSxP9q66ue(`&LWxDag%}y+&#i{p6t9^gGH9CdSDxzRG%&m zSmwOeu4v#6@n5_GfZP`zc0T>6t{Wm?YXy?SWQD9Vlnn`xxs1!B z{GH1_j^~$AyU}#4O~`Icn;ny&CsLw@*6`W_wM0fv4YrK+ek0=B}}FlKNAW#erQW z6X(wc>sc_tOH!MS-}4@amJoWuWiI_-2yggwFH zEE)p7#0T5OZ|#&g&b2uQ>Op|QK8L(ig<;(;$^(qjLWJdUt6O*%r@$kz}h79MyH{Na6K79vwc7aelRGV(BH!N(P;`Rl6%&&mf?XlC!I+?Xs4z5t9s73i_s}%IG)lirtd8b8xdE5 z`*4Y@hKPjy=|%PH)uJ=SAj84il#3xvca^@#!BQ^vHgR0P^{a$Amez^+bp*CoKn@Ak zPrqW9ms{3`>b}*a&~mXAo0v!M?(olYfl5OojoGSB=DPbhuymPAoLNF<&3F#n zGa+eTILyVKay&qwyL%mHo*z4ycuQVU#6j#ujPeV!uj^+E^2-iSq?0Dlt!6msT8fk{ zQYHe@T@*poxq=Nk*0}XV9RssxHm%_I>ri5g)>_S4=NC!O&t}VM2h>?B1!wdxczAp9 zn#1g-`$G=RFD5GcxQ57im0o&S_e4r6ZSj+1yH`-K*3xqQj$Qdm=D3*F(}}GH724t- zC~}BM9>p#hB_U_>$lwRqE2%uVAnJ=qYqs8RTq7O0i;~`H;-{&le#3auD1Mm-r`N^?UnK9BshxaawiTG&*_{_I=s6J z|8t{TUl{#%B<6-xj~1geo^_OZ=l!E8jgZR;%L40r0c`@)RT~BH?gn=?kF?|UT`wbn mu91N41|I)T#+s%^H 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 buKD72>$lsZ;7Zp|+EOHYBO@$?t=;|y4Ov92 literal 3691 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 LrwS4tXGg~%2!KD{ diff --git a/energy_models/tests/jacobian_pkls/jacobian_ratio_hydrogen.gaseous_hydrogen.pkl b/energy_models/tests/jacobian_pkls/jacobian_ratio_hydrogen.gaseous_hydrogen.pkl index 0b1aa23603f092065004923ded7ae7d078256bcb..fb5f18722908547693ca75321273d4353234fb09 100644 GIT binary patch delta 3501 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 delta 3471 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