def __init__(self, model, original_model_part_name, model_part_number, domain_size, problem_name, move_mesh_flag): # Construct the utility self.model = model self.model_part_number = model_part_number self.original_model_part_name = original_model_part_name self.domain_size = domain_size if domain_size == 2: self.PropagationUtility = KratosPoro.FracturePropagation2DUtilities( ) self.tcl_proc = "Poromechanics_Application::PropagateFractures2D" else: self.PropagationUtility = KratosPoro.FracturePropagation3DUtilities( ) self.tcl_proc = "Poromechanics_Application::PropagateFractures3D" import platform if platform.system() == "Windows": self.execute_gid = "gid" else: self.execute_gid = "./gid" self.move_mesh_flag = move_mesh_flag # Define FracturesData with open("FracturesData.json", 'r') as parameter_file: self.FracturesData = KratosMultiphysics.Parameters( parameter_file.read()) # Define control variables self.propagation_frequency = self.FracturesData["fracture_data"][ "propagation_frequency"].GetInt() self.step_count = 0 self.propagation_count = self.propagation_frequency self.remesh_count = 0 # Define names and paths self.problem_name = problem_name self.problem_path = os.getcwd() self.gid_path = self.FracturesData["fracture_data"][ "gid_path"].GetString() self.orig_state_path = os.path.join(str(self.problem_path), "OriginalState") self.last_state_path = os.path.join(str(self.problem_path), "LastState") # Create the file containing a list with all post.bin files all_list_filename = str(self.problem_name) + "_all.post.lst" all_list_file = open(all_list_filename, 'w') all_list_file.write("Multiple\n") all_list_file.close() # Save files of the original state self.SaveInitialProblemFiles()
def Initialize(self, parameters): domain_size = parameters["solver_settings"]["domain_size"].GetInt() if domain_size == 2: self.PropagationUtility = KratosPoro.FracturePropagation2DUtilities( ) self.tcl_proc = "Poromechanics_Application::PropagateFractures2D" else: self.PropagationUtility = KratosPoro.FracturePropagation3DUtilities( ) self.tcl_proc = "Poromechanics_Application::PropagateFractures3D" self.move_mesh_flag = parameters["solver_settings"][ "move_mesh_flag"].GetBool() # Create the file containing a list with all post.bin files self.problem_name = parameters["problem_data"][ "problem_name"].GetString() all_list_filename = str(self.problem_name) + "_all.post.lst" all_list_file = open(all_list_filename, 'w') all_list_file.write("Multiple\n") all_list_file.close() # Save files of the original state self.SaveInitialProblemFiles() # Update parameters with the new model part name self.original_model_part_name = parameters["solver_settings"][ "model_part_name"].GetString() model_part_name = str(self.original_model_part_name) + '_' + str( self.model_part_number) parameters["solver_settings"]["model_part_name"].SetString( model_part_name) if parameters.Has("processes"): for name, value in parameters["processes"].items(): value = self.UpdateModelPartNames(value) if parameters.Has("output_processes"): for name, value in parameters["output_processes"].items(): value = self.UpdateModelPartNames(value) # Overwrite materials with the new model part name with open("PoroMaterials.json", 'r') as parameter_file: materials = KratosMultiphysics.Parameters(parameter_file.read()) for p in range(materials["properties"].size()): old_name = materials["properties"][p]["model_part_name"].GetString( ) a, b = old_name.split(".") new_name = str(self.original_model_part_name) + '_' + str( self.model_part_number) + '.' + str(b) materials["properties"][p]["model_part_name"].SetString(new_name) with open("PoroMaterials.json", 'w') as outfile: outfile.write(materials.PrettyPrintJsonString()) return parameters
def Initialize(self, parameters): domain_size = parameters["solver_settings"]["domain_size"].GetInt() if domain_size == 2: self.PropagationUtility = KratosPoro.FracturePropagation2DUtilities( ) self.tcl_proc = "Poromechanics_Application::PropagateFractures2D" else: self.PropagationUtility = KratosPoro.FracturePropagation3DUtilities( ) self.tcl_proc = "Poromechanics_Application::PropagateFractures3D" self.move_mesh_flag = parameters["solver_settings"][ "move_mesh_flag"].GetBool() # Create the file containing a list with all post.bin files self.problem_name = parameters["problem_data"][ "problem_name"].GetString() all_list_filename = str(self.problem_name) + "_all.post.lst" all_list_file = open(all_list_filename, 'w') all_list_file.write("Multiple\n") all_list_file.close() # Save files of the original state self.SaveInitialProblemFiles() # Update parameters with the new model part name self.original_model_part_name = parameters["solver_settings"][ "model_part_name"].GetString() model_part_name = str(self.original_model_part_name) + '_' + str( self.model_part_number) parameters["solver_settings"]["model_part_name"].SetString( model_part_name) if parameters.Has("processes"): for name, value in parameters["processes"].items(): value = self.UpdateModelPartNames(value) if parameters.Has("output_processes"): for name, value in parameters["output_processes"].items(): value = self.UpdateModelPartNames(value) return parameters