def test_Naca0012SmallTransonic(self): if not eignsolver_is_available: self.skipTest( "Missing required application: EigenSolversApplication") file_name = "naca0012_small_transonic" settings_file_name = file_name + "_parameters.json" work_folder = "naca0012_small_transonic_test" with WorkFolderScope(work_folder): self._runTest(settings_file_name) self._check_results( self.main_model_part.ProcessInfo[CPFApp.LIFT_COEFFICIENT], 0.4968313580730855, 0.0, 1e-9) self._check_results( self.main_model_part.ProcessInfo[CPFApp.MOMENT_COEFFICIENT], -0.1631792300021498, 0.0, 1e-9) self._check_results( self.main_model_part.ProcessInfo[CPFApp.LIFT_COEFFICIENT_JUMP], 0.4876931961465126, 0.0, 1e-9) self._check_results( self.main_model_part.ProcessInfo[ CPFApp.LIFT_COEFFICIENT_FAR_FIELD], 0.4953997676243705, 0.0, 1e-9) kratos_utilities.DeleteTimeFiles(work_folder)
def testBackwardFacingStepKEpsilonTransient(self): work_folder = "BackwardFacingStepTest" settings_file_name = "backward_facing_step_k_epsilon_transient_parameters.json" with UnitTest.WorkFolderScope(work_folder, __file__): self._runTest(settings_file_name) kratos_utilities.DeleteTimeFiles(".")
def runTestSteady(self): steady_analysis = CoSimulationSteadyAnalysis(self.cosim_parameters) steady_analysis.Run() self._GetFluidSolver(steady_analysis) kratos_utils.DeleteTimeFiles(self.problem_dir_name)
def testChannelFlowKEpsilonSteadyPeriodic(self): work_folder = "ChannelFlowTest" settings_file_name = "channel_flow_k_epsilon_steady_periodic_parameters.json" with UnitTest.WorkFolderScope(work_folder, __file__): self._runTest(settings_file_name, True) kratos_utilities.DeleteTimeFiles(".")
def testOneElementKEpsilonSteady(self): work_folder = "OneElement" settings_file_name = "one_element_steady_parameters.json" with UnitTest.WorkFolderScope(work_folder, __file__): self._runTest(settings_file_name) kratos_utilities.DeleteTimeFiles(".")
def test_Naca0012SmallTransonic(self): file_name = "naca0012_small_transonic" settings_file_name = file_name + "_parameters.json" work_folder = "naca0012_small_transonic_test" with WorkFolderScope(work_folder): self._runTest(settings_file_name) self._check_results( self.main_model_part.ProcessInfo[CPFApp.LIFT_COEFFICIENT], 0.9068468588561012, 0.0, 1e-8) self._check_results( self.main_model_part.ProcessInfo[CPFApp.MOMENT_COEFFICIENT], -0.3804473187215503, 0.0, 1e-8) self._check_results( self.main_model_part.ProcessInfo[CPFApp.LIFT_COEFFICIENT_JUMP], 0.8890010565994741, 0.0, 1e-8) self._check_results( self.main_model_part.ProcessInfo[ CPFApp.LIFT_COEFFICIENT_FAR_FIELD], 0.9085576033568474, 0.0, 1e-8) self._check_results( self.main_model_part.GetNode(13).GetValue( CPFApp.POTENTIAL_JUMP), 0.88900105659947, 0.0, 1e-9) kratos_utilities.DeleteTimeFiles(work_folder)
def test_SmallLiftJumpTest(self): file_name = "small_lift_jump" settings_file_name = file_name + "_parameters.json" work_folder = "naca0012_small_test" with WorkFolderScope(work_folder): self._runTest(settings_file_name) kratos_utilities.DeleteTimeFiles(".")
def _runTest(self): if (km.IsDistributedRun()): self.parameters["<PARALLEL_TYPE>"] = "MPI" else: self.parameters["<PARALLEL_TYPE>"] = "OpenMP" self.addCleanup(lambda: kratos_utilities.DeleteTimeFiles(".")) RunParametricTestCase(self.parameters_file_name, self.working_folder, self.parameters, self.print_output)
def _runTest(self): p = subprocess.Popen( ["python3", os.path.join(self.problem_dir_name,"dummy_flower_solver.py"), self.ext_parameter_file_name], cwd=os.path.dirname(os.path.abspath(__file__))) CoSimulationAnalysis(self.cosim_parameters).Run() p.communicate() kratos_utils.DeleteTimeFiles(self.problem_dir_name)
def _runTest(self): self.addCleanup(lambda: kratos_utilities.DeleteTimeFiles(".")) self.parameters = {} if (km.IsDistributedRun()): self.parameters["<PARALLEL_TYPE>"] = "MPI" else: self.parameters["<PARALLEL_TYPE>"] = "OpenMP" RunParametricTestCase( "backward_facing_step_incompressible_potential_flow_parameters.json", "BackwardFacingStepTest", self.parameters, self.print_output)
def testChannelFlowKEpsilonSteadyMPI(self): work_folder = "ChannelFlowTest" settings_file_name = "channel_flow_k_epsilon_steady_mpi_parameters.json" with UnitTest.WorkFolderScope(work_folder, __file__): self._runTest(settings_file_name) for file_name in os.listdir(): if file_name.startswith( "channel_flow_") and file_name.endswith(".mdpa"): kratos_utilities.DeleteFileIfExisting(file_name) kratos_utilities.DeleteTimeFiles(".")
def tearDown(self): with UnitTest.WorkFolderScope(self.work_folder,__file__): KratosUtilities.DeleteTimeFiles('.')
def _runTest(self): self.addCleanup(lambda: kratos_utilities.DeleteTimeFiles(".")) RunParametricTestCase(self.parameters_file_name, self.working_folder, self.parameters, self.print_output)
def test_mpi_sphere(self): KratosMultiphysics.Logger.GetDefaultOutput().SetSeverity(KratosMultiphysics.Logger.Severity.WARNING) # We create the model part current_model = KratosMultiphysics.Model() main_model_part = current_model.CreateModelPart("MainModelPart") main_model_part.ProcessInfo.SetValue(KratosMultiphysics.DOMAIN_SIZE, 3) # We add the variables needed main_model_part.AddNodalSolutionStepVariable(KratosMultiphysics.DISTANCE) main_model_part.AddNodalSolutionStepVariable(KratosMultiphysics.DISTANCE_GRADIENT) # We import the model main_model_part file_path = GetFilePath("/parmmg_eulerian_test/background_mesh_sphere") ReadModelPart(file_path, main_model_part) communicator = main_model_part.GetCommunicator().GetDataCommunicator() for node in main_model_part.Nodes: distance = math.sqrt(node.X**2+node.Y**2+node.Z**2) - 1.0/2.0 node.SetSolutionStepValue(KratosMultiphysics.DISTANCE,distance) ##COMPUTE DISTANCE GRADIENT AND NODAL_H local_gradient = KratosMultiphysics.ComputeNodalGradientProcess3D(main_model_part, KratosMultiphysics.DISTANCE, KratosMultiphysics.DISTANCE_GRADIENT, KratosMultiphysics.NODAL_AREA) local_gradient.Execute() find_nodal_h = KratosMultiphysics.FindNodalHNonHistoricalProcess(main_model_part) find_nodal_h.Execute() ##COMPUTE LEVEL SET METRIC metric_parameters = KratosMultiphysics.Parameters(""" { "minimal_size" : 0.5, "sizing_parameters": { "reference_variable_name" : "DISTANCE", "boundary_layer_max_distance" : 2.0, "interpolation" : "constant" }, "enforce_current" : false, "anisotropy_remeshing" : false } """) metric_process = KratosMultiphysics.MeshingApplication.ComputeLevelSetSolMetricProcess3D( main_model_part, KratosMultiphysics.DISTANCE_GRADIENT, metric_parameters) metric_process.Execute() ##PERFORM REMESHING pmmg_parameters = KratosMultiphysics.Parameters(""" { "filename" : "output", "save_external_files" : true, "save_colors_files" : true, "initialize_entities" : false, "preserve_flags" : false, "echo_level" : 0, "advanced_parameters" : { "number_of_iterations" : 4 } } """) pmmg_parameters["filename"].SetString(GetFilePath(pmmg_parameters["filename"].GetString())) pmmg_process = KratosMultiphysics.MeshingApplication.ParMmgProcess3D(main_model_part.GetRootModelPart(), pmmg_parameters) pmmg_process.Execute() reference_file_name = GetFilePath("parmmg_eulerian_test/cond_ref_map.json") result_file_name = GetFilePath("output_step=0_"+str(communicator.Rank())+".cond.ref.json") self._CompareColorFiles(reference_file_name, result_file_name) reference_file_name = GetFilePath("parmmg_eulerian_test/elem_ref_map.json") result_file_name = GetFilePath("output_step=0_"+str(communicator.Rank())+".elem.ref.json") self._CompareColorFiles(reference_file_name, result_file_name) result_dict_file_name=GetFilePath("parmmg_eulerian_test/reference_parmmg_spehere_mdpa_hierarchy.json") with open(result_dict_file_name, 'r') as f: reference_hierarchy = json.load(f) self.CheckModelPartHierarchie(main_model_part, reference_hierarchy[str(communicator.Size())]) for file_name in os.listdir(GetFilePath("")): if file_name.endswith(".json") or file_name.endswith(".mdpa") or file_name.endswith(".mesh") or file_name.endswith(".sol"): kratos_utilities.DeleteFileIfExisting(GetFilePath(file_name)) kratos_utilities.DeleteTimeFiles(os.getcwd())
def runTest(self): CoSimulationAnalysis(self.cosim_parameters).Run() kratos_utils.DeleteTimeFiles(self.problem_dir_name)
def _runTest(self): self.test.Run() kratos_utils.DeleteTimeFiles(self.problem_dir_name)