Esempio n. 1
0
    def _CreateMetricsProcess(self):
        self.MetricsProcess = []
        if (self.strategy == "LevelSet"):
            level_set_parameters = KratosMultiphysics.Parameters("""{}""")
            level_set_parameters.AddValue("minimal_size",self.params["minimal_size"])
            level_set_parameters.AddValue("enforce_current",self.params["enforce_current"])
            level_set_parameters.AddValue("anisotropy_remeshing",self.params["anisotropy_remeshing"])
            level_set_parameters.AddValue("anisotropy_parameters",self.params["anisotropy_parameters"])
            if (self.dim == 2):
                self.MetricsProcess.append(MeshingApplication.ComputeLevelSetSolMetricProcess2D(
                    self.Model[self.model_part_name],
                    self.gradient_variable,
                    level_set_parameters))

            else:
                self.MetricsProcess.append(MeshingApplication.ComputeLevelSetSolMetricProcess3D(
                    self.Model[self.model_part_name],
                    self.gradient_variable,
                    level_set_parameters))

        elif (self.strategy == "Hessian"):
            hessian_parameters = KratosMultiphysics.Parameters("""{}""")
            hessian_parameters.AddValue("minimal_size",self.params["minimal_size"])
            hessian_parameters.AddValue("maximal_size",self.params["maximal_size"])
            hessian_parameters.AddValue("enforce_current",self.params["enforce_current"])
            hessian_parameters.AddValue("hessian_strategy_parameters",self.params["hessian_strategy_parameters"])
            hessian_parameters.AddValue("anisotropy_remeshing",self.params["anisotropy_remeshing"])
            hessian_parameters.AddValue("anisotropy_parameters",self.params["anisotropy_parameters"])
            for current_metric_variable in self.metric_variable:
                if (type(current_metric_variable) is KratosMultiphysics.Array1DComponentVariable):
                    if (self.dim == 2):
                        self.MetricsProcess.append(MeshingApplication.ComputeHessianSolMetricProcessComp2D(
                            self.Model[self.model_part_name],
                            current_metric_variable,
                            hessian_parameters))
                    else:
                        self.MetricsProcess.append(MeshingApplication.ComputeHessianSolMetricProcessComp3D(
                            self.Model[self.model_part_name],
                            current_metric_variable,
                            hessian_parameters))
                else:
                    if (self.dim == 2):
                        self.MetricsProcess.append(MeshingApplication.ComputeHessianSolMetricProcess2D(
                            self.Model[self.model_part_name],
                            current_metric_variable,
                            hessian_parameters))
                    else:
                        self.MetricsProcess.append(MeshingApplication.ComputeHessianSolMetricProcess3D(
                            self.Model[self.model_part_name],
                            current_metric_variable,
                            hessian_parameters))
Esempio n. 2
0
                    "interpolation_error"              : 0.004,
                    "mesh_dependent_constant"          : 0.28125
            },
            "minimal_size"                      : 0.005,
            "maximal_size"                      : 1.0,
            "enforce_current"                   : false,
            "anisotropy_remeshing"              : true,
            "anisotropy_parameters":{
                "reference_variable_name"          : "DISTANCE",
                "hmin_over_hmax_anisotropic_ratio" : 0.15,
                "boundary_layer_max_distance"      : 1.0,
                "interpolation"                    : "Linear"
            }
        }""")
    metric_param["minimal_size"].SetDouble(minimal_size)
    local_gradient = MeshingApplication.ComputeHessianSolMetricProcess3D(
        main_model_part, KratosMultiphysics.DISTANCE, metric_param)
    local_gradient.Execute()

    # We create the remeshing process
    remesh_param = KratosMultiphysics.Parameters("""{ }""")
    MmgProcess = MeshingApplication.MmgProcess3D(main_model_part, remesh_param)
    MmgProcess.Execute()

# Finally we export to GiD
from gid_output_process import GiDOutputProcess
gid_output = GiDOutputProcess(
    main_model_part, "gid_output",
    KratosMultiphysics.Parameters("""
                                {
                                    "result_file_configuration" : {
                                        "gidpost_flags": {