def _create_convergence_criterion(self): # Create an auxiliary Kratos parameters object to store the convergence settings. if (self.contact_settings["fancy_convergence_criterion"].GetBool() is True): table = KM.TableStreamUtility() table.SetOnProcessInfo(self.main_model_part.ProcessInfo) conv_params = KM.Parameters("{}") conv_params.AddValue("convergence_criterion", self.settings["convergence_criterion"]) conv_params.AddValue("rotation_dofs", self.settings["rotation_dofs"]) conv_params.AddValue("echo_level", self.settings["echo_level"]) conv_params.AddValue("displacement_relative_tolerance", self.settings["displacement_relative_tolerance"]) conv_params.AddValue("displacement_absolute_tolerance", self.settings["displacement_absolute_tolerance"]) conv_params.AddValue("residual_relative_tolerance", self.settings["residual_relative_tolerance"]) conv_params.AddValue("residual_absolute_tolerance", self.settings["residual_absolute_tolerance"]) conv_params.AddValue("contact_displacement_relative_tolerance", self.contact_settings["contact_displacement_relative_tolerance"]) conv_params.AddValue("contact_displacement_absolute_tolerance", self.contact_settings["contact_displacement_absolute_tolerance"]) conv_params.AddValue("contact_residual_relative_tolerance", self.contact_settings["contact_residual_relative_tolerance"]) conv_params.AddValue("contact_residual_absolute_tolerance", self.contact_settings["contact_residual_absolute_tolerance"]) conv_params.AddValue("mortar_type", self.contact_settings["mortar_type"]) conv_params.AddValue("condn_convergence_criterion", self.contact_settings["condn_convergence_criterion"]) conv_params.AddValue("print_convergence_criterion", self.contact_settings["print_convergence_criterion"]) conv_params.AddValue("ensure_contact", self.contact_settings["ensure_contact"]) conv_params.AddValue("gidio_debug", self.contact_settings["gidio_debug"]) import contact_convergence_criteria_factory convergence_criterion = contact_convergence_criteria_factory.convergence_criterion(conv_params) return convergence_criterion.mechanical_convergence_criterion
def GetConvergenceCriteria(self, error_criteria, conv_settings): if "_with_adaptative_remesh" in error_criteria: conv_settings["convergence_criterion"].SetString(error_criteria.replace("_with_adaptative_remesh", "")) import contact_convergence_criteria_factory convergence_criterion = contact_convergence_criteria_factory.convergence_criterion(conv_settings) # If we just use the adaptative convergence criteria if missing_meshing_dependencies: if "adaptative_remesh" in error_criteria: raise NameError('The AdaptativeErrorCriteria can not be used without compiling the MeshingApplication') else: if error_criteria == "adaptative_remesh_criteria": adaptative_error_criteria = CSMA.ContactErrorMeshCriteria(self.adaptative_remesh_parameters["compute_error_settings"]) convergence_criterion.mechanical_convergence_criterion = KM.AndCriteria(convergence_criterion.GetMortarCriteria(False), adaptative_error_criteria) elif "with_adaptative_remesh" in error_criteria: # If we combine the regular convergence criteria with adaptative adaptative_error_criteria = CSMA.ContactErrorMeshCriteria(self.adaptative_remesh_parameters["compute_error_settings"]) convergence_criterion.mechanical_convergence_criterion = KM.AndCriteria(convergence_criterion.mechanical_convergence_criterion, adaptative_error_criteria) return convergence_criterion.mechanical_convergence_criterion # If we combine the regular convergence criteria with adaptative if not missing_meshing_dependencies: if "with_adaptative_remesh" in error_criteria: adaptative_error_criteria = CSMA.ContactErrorMeshCriteria(self.adaptative_remesh_parameters["compute_error_settings"]) convergence_criterion.mechanical_convergence_criterion = KM.AndCriteria(convergence_criterion.mechanical_convergence_criterion, adaptative_error_criteria) return convergence_criterion.mechanical_convergence_criterion
def _create_convergence_criterion(self): # Create an auxiliary Kratos parameters object to store the convergence settings. conv_params = KM.Parameters("{}") conv_params.AddValue("convergence_criterion", self.settings["convergence_criterion"]) conv_params.AddValue("rotation_dofs", self.settings["rotation_dofs"]) conv_params.AddValue("echo_level", self.settings["echo_level"]) conv_params.AddValue("displacement_relative_tolerance", self.settings["displacement_relative_tolerance"]) conv_params.AddValue("displacement_absolute_tolerance", self.settings["displacement_absolute_tolerance"]) conv_params.AddValue("residual_relative_tolerance", self.settings["residual_relative_tolerance"]) conv_params.AddValue("residual_absolute_tolerance", self.settings["residual_absolute_tolerance"]) conv_params.AddValue( "contact_displacement_relative_tolerance", self.contact_settings["contact_displacement_relative_tolerance"]) conv_params.AddValue( "contact_displacement_absolute_tolerance", self.contact_settings["contact_displacement_absolute_tolerance"]) conv_params.AddValue( "contact_residual_relative_tolerance", self.contact_settings["contact_residual_relative_tolerance"]) conv_params.AddValue( "contact_residual_absolute_tolerance", self.contact_settings["contact_residual_absolute_tolerance"]) conv_params.AddValue("mortar_type", self.contact_settings["mortar_type"]) conv_params.AddValue( "condn_convergence_criterion", self.contact_settings["condn_convergence_criterion"]) conv_params.AddValue( "fancy_convergence_criterion", self.contact_settings["fancy_convergence_criterion"]) conv_params.AddValue( "print_convergence_criterion", self.contact_settings["print_convergence_criterion"]) conv_params.AddValue("ensure_contact", self.contact_settings["ensure_contact"]) conv_params.AddValue("gidio_debug", self.contact_settings["gidio_debug"]) import contact_convergence_criteria_factory convergence_criterion = contact_convergence_criteria_factory.convergence_criterion( conv_params) return convergence_criterion.mechanical_convergence_criterion
def _create_convergence_criterion(self): import contact_convergence_criteria_factory convergence_criterion = contact_convergence_criteria_factory.convergence_criterion(self._get_convergence_criterion_settings()) return convergence_criterion.mechanical_convergence_criterion