mirror of https://gitlab.com/pamhyr/pamhyr2
SolverParameters: Add Scenario reference.
parent
ba4603e850
commit
4271fbb85f
|
|
@ -20,6 +20,7 @@ from copy import copy
|
||||||
from tools import trace, timer
|
from tools import trace, timer
|
||||||
from Solver.Solvers import solver_type_list
|
from Solver.Solvers import solver_type_list
|
||||||
|
|
||||||
|
from Model.Scenario import Scenario
|
||||||
from Model.Tools.PamhyrList import PamhyrModelList
|
from Model.Tools.PamhyrList import PamhyrModelList
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -80,13 +81,15 @@ class SolverParametersList(PamhyrModelList):
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _db_create(cls, execute):
|
def _db_create(cls, execute):
|
||||||
execute("""
|
execute(f"""
|
||||||
CREATE TABLE solver_parameter(
|
CREATE TABLE solver_parameter(
|
||||||
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
|
||||||
ind INTEGER NOT NULL,
|
ind INTEGER NOT NULL,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
value 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(".")
|
major, minor, release = version.strip().split(".")
|
||||||
|
|
||||||
if major == minor == "0":
|
if major == minor == "0":
|
||||||
if int(release) < 3:
|
release = int(release)
|
||||||
|
if release < 3:
|
||||||
execute(
|
execute(
|
||||||
"UPDATE solver_parameter SET name='mage_implicitation' " +
|
"UPDATE solver_parameter SET name='mage_implicitation' " +
|
||||||
"WHERE name='mage_implication'"
|
"WHERE name='mage_implication'"
|
||||||
|
|
@ -107,66 +111,91 @@ class SolverParametersList(PamhyrModelList):
|
||||||
"WHERE name='mage_iter_type'"
|
"WHERE name='mage_iter_type'"
|
||||||
)
|
)
|
||||||
|
|
||||||
if int(release) < 4:
|
def insert(name, value, ind):
|
||||||
solvers = execute(
|
return execute(
|
||||||
"SELECT DISTINCT solver FROM solver_parameter")
|
"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)}'" +
|
||||||
|
")"
|
||||||
|
)
|
||||||
|
|
||||||
for solver in solvers:
|
if release < 4:
|
||||||
if solver != "mage8":
|
cls._db_update_to_0_0_4(execute, insert)
|
||||||
continue
|
|
||||||
|
|
||||||
data = execute("SELECT ind, name, value " +
|
if release < 7:
|
||||||
"FROM solver_parameter " +
|
cls._db_update_to_0_0_7(execute, insert)
|
||||||
f"WHERE solver = '{solver}' " +
|
|
||||||
"ORDER BY ind ACS")
|
|
||||||
|
|
||||||
execute(
|
if release < 14:
|
||||||
"DELETE FROM solver_parameter " +
|
cls._db_update_to_0_0_14(execute)
|
||||||
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:
|
|
||||||
insert("mage_init_internal", "N", ind)
|
|
||||||
ind += 1
|
|
||||||
|
|
||||||
new = [
|
|
||||||
("mage_sediment_masse_volumique", "2650.0"),
|
|
||||||
("mage_sediment_angle_repos", "40.0"),
|
|
||||||
("mage_sediment_porosity", "0.40"),
|
|
||||||
("mage_distance_han", "0.0"),
|
|
||||||
("mage_distance_chargement_d50", "100.0"),
|
|
||||||
("mage_distance_chargement_sigma", "100.0"),
|
|
||||||
("mage_methode_modification_geometrie", "1"),
|
|
||||||
("mage_shields_critique", "1"),
|
|
||||||
("mage_shields_correction", "1"),
|
|
||||||
("mage_capacite_solide", "1"),
|
|
||||||
("mage_pas_de_temps_charriage", "1"),
|
|
||||||
("mage_facteur_multiplicateur", "1.0"),
|
|
||||||
]
|
|
||||||
|
|
||||||
for v in new:
|
|
||||||
insert(v[0], v[1], ind)
|
|
||||||
ind += 1
|
|
||||||
|
|
||||||
return cls._update_submodel(execute, version)
|
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"
|
||||||
|
)
|
||||||
|
|
||||||
|
for solver in solvers:
|
||||||
|
if solver != "mage8":
|
||||||
|
continue
|
||||||
|
|
||||||
|
data = execute("SELECT ind, name, value " +
|
||||||
|
"FROM solver_parameter " +
|
||||||
|
f"WHERE solver = '{solver}' " +
|
||||||
|
"ORDER BY ind ACS")
|
||||||
|
|
||||||
|
execute(
|
||||||
|
"DELETE FROM solver_parameter " +
|
||||||
|
f"WHERE solver = '{solver}'"
|
||||||
|
)
|
||||||
|
|
||||||
|
ind = 0
|
||||||
|
lst = []
|
||||||
|
for v in data:
|
||||||
|
insert(v[0], v[1], ind)
|
||||||
|
ind += 1
|
||||||
|
|
||||||
|
@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
|
||||||
|
|
||||||
|
new = [
|
||||||
|
("mage_sediment_masse_volumique", "2650.0"),
|
||||||
|
("mage_sediment_angle_repos", "40.0"),
|
||||||
|
("mage_sediment_porosity", "0.40"),
|
||||||
|
("mage_distance_han", "0.0"),
|
||||||
|
("mage_distance_chargement_d50", "100.0"),
|
||||||
|
("mage_distance_chargement_sigma", "100.0"),
|
||||||
|
("mage_methode_modification_geometrie", "1"),
|
||||||
|
("mage_shields_critique", "1"),
|
||||||
|
("mage_shields_correction", "1"),
|
||||||
|
("mage_capacite_solide", "1"),
|
||||||
|
("mage_pas_de_temps_charriage", "1"),
|
||||||
|
("mage_facteur_multiplicateur", "1.0"),
|
||||||
|
]
|
||||||
|
|
||||||
|
for v in new:
|
||||||
|
insert(v[0], v[1], ind)
|
||||||
|
ind += 1
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def _db_update_to_0_0_14(cls, execute):
|
||||||
|
Scenario.update_db_add_scenario(execute, "solver_parameter")
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def _db_load(cls, execute, data=None):
|
def _db_load(cls, execute, data=None):
|
||||||
status = data["status"]
|
status = data["status"]
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue