Exemplo n.º 1
0
def CreateSolver(model_part, config):
    fluid_solver = IncompressibleFluidSolver(model_part, config.domain_size)

    # default settings
    fluid_solver.vel_toll = config.vel_toll
    if (hasattr(config, "vel_toll")):
        fluid_solver.vel_toll = config.vel_toll
    if (hasattr(config, "press_toll")):
        fluid_solver.press_toll = config.press_toll
    if (hasattr(config, "max_vel_its")):
        fluid_solver.max_vel_its = config.max_vel_its
    if (hasattr(config, "max_press_its")):
        fluid_solver.max_press_its = config.max_press_its
    if (hasattr(config, "time_order")):
        fluid_solver.time_order = config.time_order
    if (hasattr(config, "compute_reactions")):
        fluid_solver.compute_reactions = config.compute_reactions
    if (hasattr(config, "ReformDofAtEachIteration")):
        fluid_solver.ReformDofAtEachIteration = config.ReformDofAtEachIteration
    if (hasattr(config, "predictor_corrector")):
        fluid_solver.predictor_corrector = config.predictor_corrector
    if (hasattr(config, "echo_level")):
        fluid_solver.echo_level = config.echo_level
    if (hasattr(config, "dynamic_tau")):
        fluid_solver.dynamic_tau = config.dynamic_tau

    # linear solver settings
    import deprecated_trilinos_linear_solver_factory
    if (hasattr(config, "pressure_linear_solver_config")):
        fluid_solver.pressure_linear_solver = deprecated_trilinos_linear_solver_factory.ConstructSolver(
            config.pressure_linear_solver_config)
    if (hasattr(config, "velocity_linear_solver_config")):
        fluid_solver.velocity_linear_solver = deprecated_trilinos_linear_solver_factory.ConstructSolver(
            config.velocity_linear_solver_config)
    if (hasattr(config, "divergence_cleareance_step")):
        fluid_solver.divergence_clearance_steps = config.divergence_cleareance_step

    # RANS or DES settings
    if hasattr(config, "TurbulenceModel"):
        if config.TurbulenceModel == "Spalart-Allmaras":
            fluid_solver.use_spalart_allmaras = True
        elif config.TurbulenceModel == "Smagorinsky-Lilly":
            if hasattr(config, "SmagorinskyConstant"):
                fluid_solver.activate_smagorinsky(config.SmagorinskyConstant)
            else:
                msg = """Fluid solver error: Smagorinsky model requested, but
                         the value for the Smagorinsky constant is
                         undefined."""
                raise Exception(msg)

    return fluid_solver
Exemplo n.º 2
0
def CreateSolver(model_part, config):
    fluid_solver = MonolithicSolver(model_part, config.domain_size)

    if(hasattr(config, "alpha")):
        fluid_solver.alpha = config.alpha

    # definition of the convergence criteria
    if(hasattr(config, "velocity_relative_tolerance")):
        fluid_solver.rel_vel_tol = config.velocity_relative_tolerance
    if(hasattr(config, "velocity_absolute_tolerance")):
        fluid_solver.abs_vel_tol = config.velocity_absolute_tolerance
    if(hasattr(config, "pressure_relative_tolerance")):
        fluid_solver.rel_pres_tol = config.pressure_relative_tolerance
    if(hasattr(config, "pressure_absolute_tolerance")):
        fluid_solver.abs_pres_tol = config.pressure_absolute_tolerance
    if(hasattr(config, "dynamic_tau")):
        fluid_solver.dynamic_tau = config.dynamic_tau
    if(hasattr(config, "oss_switch")):
        fluid_solver.oss_switch = config.oss_switch
    if(hasattr(config, "max_iteration")):
        fluid_solver.max_iter = config.max_iteration
    if(hasattr(config, "echo_level")):
        fluid_solver.echo_level = config.echo_level
    if(hasattr(config, "compute_reactions")):
        fluid_solver.compute_reactions = config.compute_reactions
    if(hasattr(config, "ReformDofSetAtEachStep")):
        fluid_solver.ReformDofSetAtEachStep = config.ReformDofSetAtEachStep
    if(hasattr(config, "divergence_cleareance_step")):
        fluid_solver.divergence_clearance_steps = config.divergence_cleareance_step

    import deprecated_trilinos_linear_solver_factory
    if(hasattr(config, "linear_solver_config")):
        fluid_solver.linear_solver = deprecated_trilinos_linear_solver_factory.ConstructSolver(
            config.linear_solver_config)

    if hasattr(config, "TurbulenceModel"):
        if config.TurbulenceModel == "Spalart-Allmaras":
            fluid_solver.use_spalart_allmaras = True
        elif config.TurbulenceModel == "Smagorinsky-Lilly":
            if hasattr(config, "SmagorinskyConstant"):
                fluid_solver.activate_smagorinsky(config.SmagorinskyConstant)
            else:
                msg = """Fluid solver error: Smagorinsky model requested, but
                         the value for the Smagorinsky constant is
                         undefined."""
                raise Exception(msg)

    return fluid_solver