SolverParameters: Add Scenario reference.

scenarios
Pierre-Antoine Rouby 2024-07-22 11:49:33 +02:00
parent ba4603e850
commit 4271fbb85f
1 changed files with 86 additions and 57 deletions

View File

@ -20,6 +20,7 @@ from copy import copy
from tools import trace, timer
from Solver.Solvers import solver_type_list
from Model.Scenario import Scenario
from Model.Tools.PamhyrList import PamhyrModelList
@ -80,13 +81,15 @@ class SolverParametersList(PamhyrModelList):
@classmethod
def _db_create(cls, execute):
execute("""
execute(f"""
CREATE TABLE solver_parameter(
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
ind INTEGER NOT NULL,
name TEXT NOT NULL,
value TEXT NOT NULL,
solver TEXT NOT NULL
solver TEXT NOT NULL,
{Scenario.create_db_add_scenario()},
{Scenario.create_db_add_scenario_fk()}
)
""")
@ -97,7 +100,8 @@ class SolverParametersList(PamhyrModelList):
major, minor, release = version.strip().split(".")
if major == minor == "0":
if int(release) < 3:
release = int(release)
if release < 3:
execute(
"UPDATE solver_parameter SET name='mage_implicitation' " +
"WHERE name='mage_implication'"
@ -107,9 +111,34 @@ class SolverParametersList(PamhyrModelList):
"WHERE name='mage_iter_type'"
)
if int(release) < 4:
def insert(name, value, ind):
return execute(
"INSERT INTO " +
"solver_parameter(ind, name, value, solver) " +
"VALUES (" +
f"{ind}, " +
f"'{cls._db_format(name)}', " +
f"'{cls._db_format(value)}', " +
f"'{cls._db_format(solver)}'" +
")"
)
if release < 4:
cls._db_update_to_0_0_4(execute, insert)
if release < 7:
cls._db_update_to_0_0_7(execute, insert)
if release < 14:
cls._db_update_to_0_0_14(execute)
return cls._update_submodel(execute, version)
@classmethod
def _db_update_to_0_0_4(cls, execute, insert):
solvers = execute(
"SELECT DISTINCT solver FROM solver_parameter")
"SELECT DISTINCT solver FROM solver_parameter"
)
for solver in solvers:
if solver != "mage8":
@ -125,24 +154,22 @@ class SolverParametersList(PamhyrModelList):
f"WHERE solver = '{solver}'"
)
def insert(name, value, ind): return execute(
"INSERT INTO " +
"solver_parameter(ind, name, value, solver) " +
"VALUES (" +
f"{ind}, " +
f"'{cls._db_format(name)}', " +
f"'{cls._db_format(value)}', " +
f"'{cls._db_format(solver)}'" +
")"
)
ind = 0
lst = []
for v in data:
insert(v[0], v[1], ind)
ind += 1
if int(release) < 7:
@classmethod
def _db_update_to_0_0_7(cls, execute, insert):
solvers = execute(
"SELECT DISTINCT solver FROM solver_parameter"
)
for solver in solvers:
if solver != "mage8":
continue
insert("mage_init_internal", "N", ind)
ind += 1
@ -165,7 +192,9 @@ class SolverParametersList(PamhyrModelList):
insert(v[0], v[1], ind)
ind += 1
return cls._update_submodel(execute, version)
@classmethod
def _db_update_to_0_0_14(cls, execute):
Scenario.update_db_add_scenario(execute, "solver_parameter")
@classmethod
def _db_load(cls, execute, data=None):