From a121c7571a4b6e7fed2904b325aa8127dd25261e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Omn=C3=A8s?= Date: Mon, 10 Jun 2024 10:59:09 +0200 Subject: [PATCH 1/2] Add `/D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR` to fix segfault (#2151) --- src/cmake/common-settings.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmake/common-settings.cmake b/src/cmake/common-settings.cmake index b659a5f46c..23326f6158 100644 --- a/src/cmake/common-settings.cmake +++ b/src/cmake/common-settings.cmake @@ -11,7 +11,7 @@ if (NOT WIN32) set(COMMON_GCC_FLAGS "${COMMON_GCC_FLAGS} -Werror=return-type") endif() set(COMMON_MSVC_FLAGS "/W3 /MP4") -set(COMMON_MSVC_FLAGS "${COMMON_MSVC_FLAGS} /we4715 /we4716") #adding no return or no return for all code paths as errors +set(COMMON_MSVC_FLAGS "${COMMON_MSVC_FLAGS} /we4715 /we4716 /D_DISABLE_CONSTEXPR_MUTEX_CONSTRUCTOR") #adding no return or no return for all code paths as errors set(ADDITIONAL_C_FLAGS " -Wconversion -Wmissing-prototypes -Wstrict-prototypes") set(ADDITIONAL_C_FLAGS "${ADDITIONAL_C_FLAGS} -Wmissing-noreturn -Wpacked -Wredundant-decls -Wbad-function-cast -W -Wcast-align -Wcast-qual -Wsign-compare -fno-exceptions -Wdeclaration-after-statement") From f1cfbc0a1d3f75928d52a426d536df42aca3e141 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20Omn=C3=A8s?= Date: Mon, 10 Jun 2024 17:07:22 +0200 Subject: [PATCH 2/2] Remove unused arrays & variables from `RESULTATS_HORAIRES` (#2147) Many `*Up`, `*Down`, `*Any` are unused. Remove them & allocations to simplify code and hopefully reduce memory footprint at runtime. --- .../opt_gestion_des_bornes_cas_lineaire.cpp | 3 -- .../sim_structure_probleme_economique.h | 17 ----------- .../simulation/sim_alloc_probleme_hebdo.cpp | 30 +------------------ 3 files changed, 1 insertion(+), 49 deletions(-) diff --git a/src/solver/optimisation/opt_gestion_des_bornes_cas_lineaire.cpp b/src/solver/optimisation/opt_gestion_des_bornes_cas_lineaire.cpp index dda3b10423..5bdbeef705 100644 --- a/src/solver/optimisation/opt_gestion_des_bornes_cas_lineaire.cpp +++ b/src/solver/optimisation/opt_gestion_des_bornes_cas_lineaire.cpp @@ -471,9 +471,6 @@ void OPT_InitialiserLesBornesDesVariablesDuProblemeLineaire(PROBLEME_HEBDO* prob .ValeursHorairesDeDefaillanceNegative[pdtHebdo]); AdresseOuPlacerLaValeurDesVariablesOptimisees[var] = adresseDuResultat; } - - problemeHebdo->ResultatsHoraires[pays].ValeursHorairesDeDefaillanceEnReserve[pdtHebdo] - = 0.0; } } diff --git a/src/solver/simulation/include/antares/solver/simulation/sim_structure_probleme_economique.h b/src/solver/simulation/include/antares/solver/simulation/sim_structure_probleme_economique.h index 307be5b068..8f74ccb94a 100644 --- a/src/solver/simulation/include/antares/solver/simulation/sim_structure_probleme_economique.h +++ b/src/solver/simulation/include/antares/solver/simulation/sim_structure_probleme_economique.h @@ -250,9 +250,6 @@ struct PDISP_ET_COUTS_HORAIRES_PAR_PALIER std::vector CoutHoraireDeProductionDuPalierThermique; - std::vector CoutHoraireDuPalierThermiqueUp; - std::vector CoutHoraireDuPalierThermiqueDown; - std::vector NombreMaxDeGroupesEnMarcheDuPalierThermique; std::vector NombreMinDeGroupesEnMarcheDuPalierThermique; }; @@ -302,8 +299,6 @@ struct ENERGIES_ET_PUISSANCES_HYDRAULIQUES double PenalisationDeLaVariationDeProductionHydrauliqueSurVariationMax; double WeeklyWaterValueStateRegular; - double WeeklyWaterValueStateUp; - double WeeklyWaterValueStateDown; bool TurbinageEntreBornes; bool SansHeuristique; @@ -405,9 +400,6 @@ struct PRODUCTION_THERMIQUE_OPTIMALE { std::vector ProductionThermiqueDuPalier; - std::vector ProductionThermiqueDuPalierUp; - std::vector ProductionThermiqueDuPalierDown; - std::vector NombreDeGroupesEnMarcheDuPalier; std::vector NombreDeGroupesQuiDemarrentDuPalier; @@ -423,20 +415,11 @@ struct RESULTATS_HORAIRES std::vector ValeursHorairesLmrViolations; // adq patch lmr violations std::vector ValeursHorairesSpilledEnergyAfterCSR; // adq patch spillage after CSR std::vector ValeursHorairesDtgMrgCsr; // adq patch DTG MRG after CSR - std::vector ValeursHorairesDeDefaillancePositiveUp; - std::vector ValeursHorairesDeDefaillancePositiveDown; - std::vector ValeursHorairesDeDefaillancePositiveAny; std::vector ValeursHorairesDeDefaillanceNegative; - std::vector ValeursHorairesDeDefaillanceNegativeUp; - std::vector ValeursHorairesDeDefaillanceNegativeDown; - std::vector ValeursHorairesDeDefaillanceNegativeAny; - std::vector ValeursHorairesDeDefaillanceEnReserve; std::vector PompageHoraire; std::vector TurbinageHoraire; - std::vector TurbinageHoraireUp; - std::vector TurbinageHoraireDown; std::vector niveauxHoraires; std::vector valeurH2oHoraire; diff --git a/src/solver/simulation/sim_alloc_probleme_hebdo.cpp b/src/solver/simulation/sim_alloc_probleme_hebdo.cpp index aa1a5c90e3..860d2b8bfe 100644 --- a/src/solver/simulation/sim_alloc_probleme_hebdo.cpp +++ b/src/solver/simulation/sim_alloc_probleme_hebdo.cpp @@ -387,26 +387,11 @@ void SIM_AllocateAreas(PROBLEME_HEBDO& problem, 0.); // adq patch problem.ResultatsHoraires[k].ValeursHorairesDtgMrgCsr.assign(NombreDePasDeTemps, 0.); // adq patch - problem.ResultatsHoraires[k] - .ValeursHorairesDeDefaillancePositiveUp.assign(NombreDePasDeTemps, 0.); - problem.ResultatsHoraires[k] - .ValeursHorairesDeDefaillancePositiveDown.assign(NombreDePasDeTemps, 0.); - problem.ResultatsHoraires[k] - .ValeursHorairesDeDefaillancePositiveAny.assign(NombreDePasDeTemps, 0.); + problem.ResultatsHoraires[k].ValeursHorairesDeDefaillanceNegative.assign(NombreDePasDeTemps, 0.); - problem.ResultatsHoraires[k] - .ValeursHorairesDeDefaillanceNegativeUp.assign(NombreDePasDeTemps, 0.); - problem.ResultatsHoraires[k] - .ValeursHorairesDeDefaillanceNegativeDown.assign(NombreDePasDeTemps, 0.); - problem.ResultatsHoraires[k] - .ValeursHorairesDeDefaillanceNegativeAny.assign(NombreDePasDeTemps, 0.); - problem.ResultatsHoraires[k] - .ValeursHorairesDeDefaillanceEnReserve.assign(NombreDePasDeTemps, 0.); problem.ResultatsHoraires[k].TurbinageHoraire.assign(NombreDePasDeTemps, 0.); problem.ResultatsHoraires[k].PompageHoraire.assign(NombreDePasDeTemps, 0.); - problem.ResultatsHoraires[k].TurbinageHoraireUp.assign(NombreDePasDeTemps, 0.); - problem.ResultatsHoraires[k].TurbinageHoraireDown.assign(NombreDePasDeTemps, 0.); problem.ResultatsHoraires[k].CoutsMarginauxHoraires.assign(NombreDePasDeTemps, 0.); problem.ResultatsHoraires[k].niveauxHoraires.assign(NombreDePasDeTemps, 0.); problem.ResultatsHoraires[k].valeurH2oHoraire.assign(NombreDePasDeTemps, 0.); @@ -438,25 +423,12 @@ void SIM_AllocateAreas(PROBLEME_HEBDO& problem, problem.PaliersThermiquesDuPays[k] .PuissanceDisponibleEtCout[j] .NombreMinDeGroupesEnMarcheDuPalierThermique.assign(NombreDePasDeTemps, 0); - - problem.PaliersThermiquesDuPays[k] - .PuissanceDisponibleEtCout[j] - .CoutHoraireDuPalierThermiqueUp.assign(NombreDePasDeTemps, 0.); - problem.PaliersThermiquesDuPays[k] - .PuissanceDisponibleEtCout[j] - .CoutHoraireDuPalierThermiqueDown.assign(NombreDePasDeTemps, 0.); } for (unsigned j = 0; j < NombreDePasDeTemps; j++) { problem.ResultatsHoraires[k].ProductionThermique[j].ProductionThermiqueDuPalier.assign( nbPaliers, 0.); - problem.ResultatsHoraires[k] - .ProductionThermique[j] - .ProductionThermiqueDuPalierUp.assign(nbPaliers, 0.); - problem.ResultatsHoraires[k] - .ProductionThermique[j] - .ProductionThermiqueDuPalierDown.assign(nbPaliers, 0.); problem.ResultatsHoraires[k] .ProductionThermique[j] .NombreDeGroupesEnMarcheDuPalier.assign(nbPaliers, 0.);