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()
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 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")
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()
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()
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")
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()