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
Пример #2
0
    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
Пример #3
0
 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