Esempio n. 1
0
    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()
Esempio n. 2
0
    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
Esempio n. 3
0
    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