# -*- coding: utf-8 -*- from Solver.ASolver import AbstractSolver class Mage(AbstractSolver): def __init__(self, name): super(Mage, self).__init__(name) self._type = "mage" self._cmd_input = "" self._cmd_solver = "@path @input -o @output" self._cmd_output = "" @classmethod def default_parameters(cls): lst = super(Mage, cls).default_parameters() lst += [ ("mage_min_timestep", "1.0"), ("mage_timestep_tra", "3600"), ("mage_timestep_bin", "0"), # ("mage_timestep_melissa", "0"), ("mage_implication", "0.70"), ("mage_continuity_discretization", "S"), ("mage_qsj_discretization", "B"), ("mage_stop_criterion_iterations", "R"), ("mage_iter_type", "0"), ("mage_smooth_coef", "0"), ("mage_cfl_max", "-1."), ("mage_min_height", "0.1"), ("mage_max_niter", "10"), ("mage_timestep_reduction_factor", "2"), ("mage_precision_reduction_factor_Z", "1"), ("mage_precision_reduction_factor_Q", "1"), ("mage_niter_max_precision", "99"), ("mage_niter_before_switch", "99"), ("mage_max_froude", "1.5"), ("mage_diffluence_node_height_balance", "-1"), ("mage_compute_reach_volume_balance", "y"), ("mage_max_reach_volume_balance", "0.001"), ("mage_min_reach_volume_to_check", "1000.0"), ] return lst class Mage7(Mage): def __init__(self, name): super(Mage7, self).__init__(name) self._type = "mage7" @classmethod def default_parameters(cls): lst = super(Mage7, cls).default_parameters() return lst class Mage8(Mage): def __init__(self, name): super(Mage8, self).__init__(name) self._type = "mage8" @classmethod def default_parameters(cls): lst = super(Mage8, cls).default_parameters() # Insert new parameters at specific position names = list(map(lambda t: t[0], lst)) i = names.index("mage_precision_reduction_factor_Q") lst.insert(i+1, ("mage_precision_reduction_factor_r", "1")) return lst