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))
"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" } }""" ) local_gradient = MeshingApplication.ComputeHessianSolMetricProcess2D(main_model_part, KratosMultiphysics.DISTANCE, metric_param) local_gradient.Execute() # We create the remeshing process remesh_param = KratosMultiphysics.Parameters("""{ }""") MmgProcess = MeshingApplication.MmgProcess2D(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": {