def _create_linear_solver(self):
     import PressureMultiLevelSolver
     pressure_nit_max = 1000
     pressure_linear_tol = 1e-6
     linear_solver = PressureMultiLevelSolver.MultilevelLinearSolver(
         pressure_linear_tol, pressure_nit_max)
     return linear_solver
    def __init__(self, model_part, domain_size):

        # neighbour search
        number_of_avg_elems = 10
        number_of_avg_nodes = 10
        self.neighbour_search = FindNodalNeighboursProcess(
            model_part, number_of_avg_elems, number_of_avg_nodes)

        self.model_part = model_part
        self.domain_size = domain_size

        # assignation of parameters to be used
        self.vel_toll = float(0.001)
        self.press_toll = float(0.001)
        self.max_vel_its = 6
        self.max_press_its = 3
        self.time_order = 2
        self.compute_reactions = False
        self.ReformDofAtEachIteration = False
        self.CalculateNormDxFlag = True
        self.predictor_corrector = False
        self.use_dt_in_stabilization = False

        self.echo_level = 0

        self.step = 1
        self.projections_are_initialized = False

        self.dynamic_tau = 0.001
        self.activate_tau2 = False

        self.Comm = CreateCommunicator()

#
        velocity_nit_max = 100
        velocity_linear_tol = 1e-6

        import MonolithicMultiLevelSolver
        self.velocity_linear_solver = MonolithicMultiLevelSolver.LinearSolver(
            velocity_linear_tol, velocity_nit_max)

        pressure_nit_max = 100
        pressure_linear_tol = 1e-6

        import PressureMultiLevelSolver
        self.pressure_linear_solver = PressureMultiLevelSolver.MultilevelLinearSolver(
            pressure_linear_tol, pressure_nit_max)

        self.use_slip_conditions = False

        self.use_spalart_allmaras = False
        self.use_des = False
        self.Cdes = 1.0
        self.wall_nodes = list()
        self.spalart_allmaras_linear_solver = None

        self.divergence_clearance_steps = 0
Exemplo n.º 3
0
    def ActivateSpalartAllmaras(self, wall_nodes, DES=False):

        number_of_avg_elems = 10
        number_of_avg_nodes = 10
        neighbour_search = FindNodalNeighboursProcess(
            self.model_part,
            number_of_avg_elems,
            number_of_avg_nodes)
        neighbour_search.Execute()

        for node in wall_nodes:
            node.SetValue(IS_VISITED, 1.0)
            node.SetSolutionStepValue(DISTANCE, 0, 0.0)

        # Compute distance function
        if self.domain_size == 2:
            distance_calculator = ParallelDistanceCalculator2D()
        else:
            distance_calculator = ParallelDistanceCalculator3D()

        max_levels = 15
        max_dist = 100.0
        distance_calculator.CalculateDistancesLagrangianSurface\
            (self.model_part,
             DISTANCE,
             NODAL_AREA,
             max_levels,
             max_dist)

        import PressureMultiLevelSolver
        turbulence_linear_solver = PressureMultiLevelSolver.MultilevelLinearSolver(
            1e-4, 1000)

        non_linear_tol = 0.001
        max_it = 3
        reform_dofset = self.ReformDofSetAtEachStep
        time_order = 2

        self.C = CreateCommunicator()
        self.turbulence_model = TrilinosSpalartAllmarasTurbulenceModel(
            self.C,
            self.model_part,
            turbulence_linear_solver,
            self.domain_size,
            non_linear_tol,
            max_it,
            reform_dofset,
            time_order)
# self.turbulence_model = TrilinosSpalartAllmarasTurbulenceModel(self.Comm,self.model_part,turbulence_linear_solver,self.domain_size,non_linear_tol,max_it,reform_dofset,time_order)
        if DES:
            self.turbulence_model.ActivateDES(1.0)
Exemplo n.º 4
0
    def __init__(self, model_part, domain_size, reform_dof_at_every_step):

        # Set parameters
        self.time_order = 2
        self.model_part = model_part
        self.domain_size = domain_size
        self.reform_dof_at_every_step = reform_dof_at_every_step

        # Create communicator
        self.Comm = CreateCommunicator()

        # Define solver
        import PressureMultiLevelSolver
        pressure_nit_max = 1000
        pressure_linear_tol = 1
        self.linear_solver = PressureMultiLevelSolver.MultilevelLinearSolver(
            pressure_linear_tol, pressure_nit_max)
Exemplo n.º 5
0
    def __init__(self, model_part, domain_size, reform_dof_at_every_step):

        self.model_part = model_part
        self.domain_size = domain_size
        self.reform_dof_at_every_step = reform_dof_at_every_step

        #AddDofs(model_part)

        # assignation of parameters to be used
        self.time_order = 1

        # Create communicator
        self.Comm = CreateCommunicator()

        # Define solver
        import PressureMultiLevelSolver
        pressure_nit_max = 1000
        pressure_linear_tol = 1e-6
        self.linear_solver = PressureMultiLevelSolver.MultilevelLinearSolver(
            pressure_linear_tol, pressure_nit_max)
Exemplo n.º 6
0
fluid_solver.time_order = 2
fluid_solver.ReformDofAtEachIteration = False
fluid_solver.echo_level = 0

# pILUPrecond = ILU0Preconditioner()
# pDiagPrecond = DiagonalPreconditioner()
# fluid_solver.pressure_linear_solver =  BICGSTABSolver(1e-3, 5000,pDiagPrecond)
# fluid_solver.pressure_linear_solver = SkylineLUFactorizationSolver();

# for node in model_part.Nodes:
# if(node.X < 0.001 and node.Y<0.001):
# node.Fix(PRESSURE)

import PressureMultiLevelSolver

fluid_solver.pressure_linear_solver = PressureMultiLevelSolver.MultilevelLinearSolver(
    1e-4, 1000)

fluid_solver.Initialize()

# settings to be changed
Re = 100.0
nsteps = 8  # 100
output_step = 2

Dt = 1000.0 / Re
if (Dt > 0.1):
    Dt = 0.1
out = 0
for node in model_part.Nodes:
    node.SetSolutionStepValue(DENSITY, 0, 1.0)
    node.SetSolutionStepValue(VISCOSITY, 0, 1.0 / Re)