def testCylinder(self):
        with ControlledExecutionScope(os.path.dirname(os.path.realpath(__file__))):
            # solve fluid
            model = Kratos.Model()
            with open('AdjointVMSSensitivity2DTest/mpi_cylinder_test_parameters.json', 'r') as parameter_file:
                project_parameters = Kratos.Parameters(parameter_file.read())
                parameter_file.close()
            primal_simulation = FluidDynamicsAnalysis(model,project_parameters)
            primal_simulation.Run()
            KratosMPI.mpi.world.barrier()

            # solve adjoint
            with open('AdjointVMSSensitivity2DTest/mpi_cylinder_test_adjoint_parameters.json', 'r') as parameter_file:
                project_parameters = Kratos.Parameters(parameter_file.read())
                parameter_file.close()

            adjoint_model = Kratos.Model()
            adjoint_simulation = AdjointFluidAnalysis(adjoint_model,project_parameters)
            adjoint_simulation.Run()
            KratosMPI.mpi.world.barrier()
            rank = adjoint_simulation._solver.main_model_part.GetCommunicator().MyPID()
            # remove files
            if rank == 0:
                self._remove_file("./AdjointVMSSensitivity2DTest/mpi_cylinder_test_probe1.dat")
                self._remove_file("./AdjointVMSSensitivity2DTest/mpi_cylinder_test_probe2.dat")
                self._remove_file("./AdjointVMSSensitivity2DTest/mpi_cylinder_test_adjoint_probe1.dat")
                self._remove_file("./AdjointVMSSensitivity2DTest/mpi_cylinder_test_adjoint_probe2.dat")
                self._remove_file("./AdjointVMSSensitivity2DTest/mpi_cylinder_test_adjoint_probe3.dat")
                self._remove_file("./AdjointVMSSensitivity2DTest/cylinder_test.time")
                self._remove_h5_files("primal")
            self._remove_file("./AdjointVMSSensitivity2DTest/cylinder_test_" + str(rank) + ".time")
            self._remove_file("./AdjointVMSSensitivity2DTest/cylinder_test_" + str(rank) + ".mdpa")
예제 #2
0
    def _runTest(self,settings_file_name):
        model = km.Model()
        with open(settings_file_name,'r') as settings_file:
            settings = km.Parameters(settings_file.read())

        # to check the results: add output settings block if needed
        if self.print_output:
            settings.AddValue("output_configuration", km.Parameters(r'''{
                "result_file_configuration" : {
                    "gidpost_flags"       : {
                        "GiDPostMode"           : "GiD_PostBinary",
                        "WriteDeformedMeshFlag" : "WriteDeformed",
                        "WriteConditionsFlag"   : "WriteConditions",
                        "MultiFileFlag"         : "SingleFile"
                    },
                    "file_label"          : "time",
                    "output_control_type" : "step",
                    "output_frequency"    : 1,
                    "body_output"         : true,
                    "node_output"         : false,
                    "skin_output"         : false,
                    "plane_output"        : [],
                    "nodal_results"       : ["VELOCITY","PRESSURE"],
                    "gauss_point_results" : []
                },
                "point_data_configuration"  : []
            }'''))

        analysis = FluidDynamicsAnalysis(model,settings)
        analysis.Run()
    def _runTest(self,settings_file_name):
        model = km.Model()
        with open(settings_file_name,'r') as settings_file:
            settings = km.Parameters(settings_file.read())

        # to check the results: add output settings block if needed
        if self.print_output:
            settings["output_processes"].AddValue("gid_output", km.Parameters(R'''[{
            "python_module" : "gid_output_process",
            "kratos_module" : "KratosMultiphysics",
            "process_name"  : "GiDOutputProcess",
            "help"          : "This process writes postprocessing files for GiD",
            "Parameters"    : {
                "model_part_name"        : "FluidModelPart.fluid_computational_model_part",
                "output_name"            : "ale_fluid_test",
                "postprocess_parameters" : {
                    "result_file_configuration" : {
                        "gidpost_flags"       : {
                            "GiDPostMode"           : "GiD_PostBinary",
                            "WriteDeformedMeshFlag" : "WriteDeformed",
                            "WriteConditionsFlag"   : "WriteConditions",
                            "MultiFileFlag"         : "SingleFile"
                        },
                        "file_label"          : "time",
                        "output_control_type" : "step",
                        "output_frequency"    : 1.0,
                        "body_output"         : true,
                        "nodal_results"       : ["VELOCITY","PRESSURE","MESH_DISPLACEMENT","MESH_VELOCITY"]
                    }
                }
            }
            }]'''))

        analysis = FluidDynamicsAnalysis(model,settings)
        analysis.Run()
예제 #4
0
    def testInputOutput(self):
        with ControlledExecutionScope(self.work_folder):
            # run simulation and write to hdf5 file
            model_out = Model()
            with open("output_test_parameters.json", 'r') as parameter_file:
                project_parameters = Parameters(parameter_file.read())
            test = FluidDynamicsAnalysis(model_out, project_parameters)
            test.Run()

            # start new simulation and read from hdf5 file
            model_in = Model()
            with open("input_test_parameters.json", 'r') as parameter_file:
                project_parameters = Parameters(parameter_file.read())
            test = FluidAnalysisWithoutSolution(model_in, project_parameters)
            test.Run()
예제 #5
0
    def _runTest(self, settings_file_name):
        model = km.Model()
        with open(settings_file_name, 'r') as settings_file:
            settings = km.Parameters(settings_file.read())

        # to check the results: add output settings block if needed
        if self.print_output:
            settings.AddValue(
                "output_processes",
                km.Parameters(r'''{
                "gid_output" : [{
                    "python_module" : "gid_output_process",
                    "kratos_module" : "KratosMultiphysics",
                    "process_name"  : "GiDOutputProcess",
                    "help"          : "This process writes postprocessing files for GiD",
                    "Parameters"    : {
                        "model_part_name"        : "fluid_computational_model_part",
                        "output_name"            : "interface_test",
                        "postprocess_parameters" : {
                            "result_file_configuration" : {
                                "gidpost_flags" : {
                                    "GiDPostMode"           : "GiD_PostBinary",
                                    "WriteDeformedMeshFlag" : "WriteUndeformed",
                                    "WriteConditionsFlag"   : "WriteElementsOnly",
                                    "MultiFileFlag"         : "SingleFile"
                                },
                                "file_label"          : "time",
                                "output_control_type" : "step",
                                "output_frequency"    : 1,
                                "body_output"         : true,
                                "node_output"         : false,
                                "skin_output"         : false,
                                "plane_output"        : [],
                                "nodal_results"       : ["VELOCITY","PRESSURE"],
                                "gauss_point_results" : []
                            },
                            "point_data_configuration"  : []
                        }
                    }
                }]
            }'''))

        analysis = FluidDynamicsAnalysis(model, settings)
        analysis.Run()
예제 #6
0
 def _createFluidTest(self, parameter_file_name):
     test = FluidDynamicsAnalysis(Model(), self._readParameters(parameter_file_name))
     return test
예제 #7
0
    def _run_test(self, primal_parameter_file_name,
                  adjoint_parameter_file_name):
        model = km.Model()
        settings = km.Parameters(r'''{}''')

        with open(primal_parameter_file_name, 'r') as primal_parameter_file:
            settings.AddValue("primal_settings",
                              km.Parameters(primal_parameter_file.read()))

        with open(adjoint_parameter_file_name, 'r') as adjoint_parameter_file:
            settings.AddValue("adjoint_settings",
                              km.Parameters(adjoint_parameter_file.read()))

        # Add hdf5 output to the primal problem
        settings["primal_settings"]["auxiliar_process_list"].Append(
            km.Parameters(r'''{
            "kratos_module" : "KratosMultiphysics.HDF5Application",
            "python_module" : "single_mesh_primal_output_process",
            "Parameters" : {
                "model_part_name" : "MainModelPart",
                "file_settings" : {
                    "file_access_mode" : "truncate"
                },
                "model_part_output_settings" : {
                    "prefix" : "/ModelData"
                },
                "nodal_solution_step_data_settings" : {
                    "list_of_variables": ["VELOCITY", "ACCELERATION", "PRESSURE"]
                },
                "output_time_settings" : {
                    "output_step_frequency": 1,
                    "file_name" : "primal_output"
                }
            }
        }'''))

        # to check the results: add output settings block if needed
        if self.print_output:
            settings["adjoint_settings"].AddValue(
                "output_configuration",
                km.Parameters(r'''{
                "result_file_configuration" : {
                    "gidpost_flags" : {
                        "GiDPostMode"           : "GiD_PostBinary",
                        "WriteDeformedMeshFlag" : "WriteUndeformed",
                        "WriteConditionsFlag"   : "WriteConditions",
                        "MultiFileFlag"         : "SingleFile"
                    },
                    "file_label"          : "time",
                    "output_control_type" : "step",
                    "output_frequency"    : 1,
                    "body_output"         : true,
                    "node_output"         : false,
                    "skin_output"         : false,
                    "plane_output"        : [],
                    "nodal_results"       : ["VELOCITY","PRESSURE","ADJOINT_VELOCITY","ADJOINT_PRESSURE","SHAPE_SENSITIVITY"],
                    "gauss_point_results" : []
                },
                "point_data_configuration"  : []
            }'''))

        primal_analysis = FluidDynamicsAnalysis(model,
                                                settings["primal_settings"])
        primal_analysis.Run()
        adjoint_model = km.Model()
        adjoint_analysis = AdjointFluidAnalysis(adjoint_model,
                                                settings["adjoint_settings"])
        adjoint_analysis.Run()

        kratos_utilities.DeleteFileIfExisting("cylinder_2d.time")
        self._remove_h5_files("primal_output")
예제 #8
0
 def _CreateAnalysisStage(self):
     return FluidDynamicsAnalysis(self.model, self.project_parameters)
예제 #9
0
        adjoint_parameter_file_name = argv[1]
    elif len(argv) == 3:
        primal_parameter_file_name = argv[1]
        adjoint_parameter_file_name = argv[2]
    else:
        err_msg =  'Unexpected amount of input arguments!\n'
        err_msg += 'To run the primal fluid problem followed by the adjoint solution, provide both parameter files:\n'
        err_msg += '    "python adjoint_fluid_analysis.py <primal-parameter-file>.json <adjoint-parameter-file>.json"\n'
        err_msg += 'To run only the adjoint problem, provide only the adjoint parameter file:\n'
        err_msg += '    "python adjoint_fluid_analysis.py <adjoint-parameter-file>.json"\n'
        raise Exception(err_msg)

    if primal_parameter_file_name is not None:
        with open(primal_parameter_file_name,'r') as primal_parameter_file:
            parameters.AddValue("primal_settings",Kratos.Parameters(primal_parameter_file.read()))
    else:
        parameters.AddEmptyValue("primal_settings")

    with open(adjoint_parameter_file_name,'r') as adjoint_parameter_file:
        parameters.AddValue("adjoint_settings", Kratos.Parameters(adjoint_parameter_file.read()))

    model = Kratos.Model()

    if primal_parameter_file_name is not None:
        primal_simulation = FluidDynamicsAnalysis(model,parameters["primal_settings"])
        primal_simulation.Run()

    adjoint_model = Kratos.Model()
    adjoint_simulation = AdjointFluidAnalysis(adjoint_model,parameters["adjoint_settings"])
    adjoint_simulation.Run()
예제 #10
0
fluid_model = KratosMultiphysics.Model()
structural_model = KratosMultiphysics.Model()

fluid_project_params_file_name = "ProjectParametersCFD.json"
with open(fluid_project_params_file_name, 'r') as parameter_file:
    parameters_fluid = KratosMultiphysics.Parameters(parameter_file.read())
structural_project_params_file_name = "ProjectParametersCSM.json"
with open(structural_project_params_file_name, 'r') as parameter_file:
    parameters_structure = KratosMultiphysics.Parameters(parameter_file.read())
'''
# --------------------------------------------------------
# ----- Setting up and initializing the Fluid Solver -----
# --------------------------------------------------------
'''
fluid_solver = FluidDynamicsAnalysis(fluid_model, parameters_fluid)

fluid_solver.Initialize()

fluid_model_part = fluid_model["MainModelPart"]

print("======================================================================")
print("||||||||||||||||||||||| SETTING UP FLUID DONE ||||||||||||||||||||||||")
print("======================================================================")
'''
# -------------------------------------------------------------
# ----- Setting up and initializing the Structural Solver -----
# -------------------------------------------------------------
'''
structural_solver = StructuralMechanicsAnalysis(structural_model,
                                                parameters_structure)