def _CreateDistanceReinitializationProcess(self): if (self._reinitialization_type == "variational"): # Construct the variational distance calculation process maximum_iterations = 2 #TODO: Make this user-definable redistancing_linear_solver = self._GetRedistancingLinearSolver() computing_model_part = self.GetComputingModelPart() epetra_communicator = self._GetEpetraCommunicator() if self.main_model_part.ProcessInfo[KratosMultiphysics.DOMAIN_SIZE] == 2: distance_reinitialization_process = KratosTrilinos.TrilinosVariationalDistanceCalculationProcess2D( epetra_communicator, computing_model_part, redistancing_linear_solver, maximum_iterations, KratosMultiphysics.VariationalDistanceCalculationProcess2D.CALCULATE_EXACT_DISTANCES_TO_PLANE) else: distance_reinitialization_process = KratosTrilinos.TrilinosVariationalDistanceCalculationProcess3D( epetra_communicator, computing_model_part, redistancing_linear_solver, maximum_iterations, KratosMultiphysics.VariationalDistanceCalculationProcess3D.CALCULATE_EXACT_DISTANCES_TO_PLANE) elif (self._reinitialization_type == "parallel"): if self.main_model_part.ProcessInfo[KratosMultiphysics.DOMAIN_SIZE] == 2: distance_reinitialization_process = KratosMultiphysics.ParallelDistanceCalculator2D() else: distance_reinitialization_process = KratosMultiphysics.ParallelDistanceCalculator3D() elif (self._reinitialization_type == "none"): KratosMultiphysics.Logger.PrintInfo(self.__class__.__name__, "Redistancing is turned off.") else: raise Exception("Please use a valid distance reinitialization type or set it as \'none\'. Valid types are: \'variational\' and \'parallel\'.") return distance_reinitialization_process
def set_variational_distance_process(self): # Construct the variational distance calculation process self.EpetraCommunicator = KratosTrilinos.CreateCommunicator() maximum_iterations = 5 ### for MPI trilinos_settings = KratosMultiphysics.Parameters(""" { "linear_solver_settings" : { "solver_type" : "amgcl" } } """) self.linear_solver = trilinos_linear_solver_factory.ConstructSolver( trilinos_settings["linear_solver_settings"]) if self.complete_model.ProcessInfo[ KratosMultiphysics.DOMAIN_SIZE] == 2: variational_distance_process = KratosTrilinos.TrilinosVariationalDistanceCalculationProcess2D( self.EpetraCommunicator, self.complete_model, self.linear_solver, maximum_iterations, KratosMultiphysics.VariationalDistanceCalculationProcess2D. CALCULATE_EXACT_DISTANCES_TO_PLANE, "distance_from_inlet_2D") else: variational_distance_process = KratosTrilinos.TrilinosVariationalDistanceCalculationProcess3D( self.EpetraCommunicator, self.complete_model, self.linear_solver, maximum_iterations, KratosMultiphysics.VariationalDistanceCalculationProcess3D. CALCULATE_EXACT_DISTANCES_TO_PLANE, "distance_from_inlet_3D") return variational_distance_process
def _set_variational_distance_process(self): # Construct the variational distance calculation process maximum_iterations = 2 if self.main_model_part.ProcessInfo[ KratosMultiphysics.DOMAIN_SIZE] == 2: variational_distance_process = KratosTrilinos.TrilinosVariationalDistanceCalculationProcess2D( self.EpetraCommunicator, self.computing_model_part, self.trilinos_linear_solver, maximum_iterations, KratosMultiphysics.VariationalDistanceCalculationProcess2D. CALCULATE_EXACT_DISTANCES_TO_PLANE) else: variational_distance_process = KratosTrilinos.TrilinosVariationalDistanceCalculationProcess3D( self.EpetraCommunicator, self.computing_model_part, self.trilinos_linear_solver, maximum_iterations, KratosMultiphysics.VariationalDistanceCalculationProcess3D. CALCULATE_EXACT_DISTANCES_TO_PLANE) return variational_distance_process
def _CreateDistanceReinitializationProcess(self): # Construct the variational distance calculation process maximum_iterations = 2 #TODO: Make this user-definable redistancing_linear_solver = self._GetRedistancingLinearSolver() computing_model_part = self.GetComputingModelPart() epetra_communicator = self._GetEpetraCommunicator() if self.main_model_part.ProcessInfo[ KratosMultiphysics.DOMAIN_SIZE] == 2: variational_distance_process = KratosTrilinos.TrilinosVariationalDistanceCalculationProcess2D( epetra_communicator, computing_model_part, redistancing_linear_solver, maximum_iterations, KratosMultiphysics.VariationalDistanceCalculationProcess2D. CALCULATE_EXACT_DISTANCES_TO_PLANE) else: variational_distance_process = KratosTrilinos.TrilinosVariationalDistanceCalculationProcess3D( epetra_communicator, computing_model_part, redistancing_linear_solver, maximum_iterations, KratosMultiphysics.VariationalDistanceCalculationProcess3D. CALCULATE_EXACT_DISTANCES_TO_PLANE) return variational_distance_process