Пример #1
0
    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)
Пример #2
0
    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)
Пример #4
0
    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(".")
Пример #5
0
    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(".")
Пример #8
0
    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)
Пример #9
0
    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)
Пример #11
0
    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(".")
Пример #12
0
 def tearDown(self):
     with UnitTest.WorkFolderScope(self.work_folder,__file__):
         KratosUtilities.DeleteTimeFiles('.')
Пример #13
0
    def _runTest(self):
        self.addCleanup(lambda: kratos_utilities.DeleteTimeFiles("."))

        RunParametricTestCase(self.parameters_file_name, self.working_folder,
                              self.parameters, self.print_output)
Пример #14
0
    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)
Пример #16
0
 def _runTest(self):
     self.test.Run()
     kratos_utils.DeleteTimeFiles(self.problem_dir_name)