예제 #1
0
 def _create_convergence_criterion(self):
     convergence_criterion = convergence_criteria_factory.convergence_criterion(
         self._get_convergence_criterion_settings())
     conv_criteria = convergence_criterion.mechanical_convergence_criterion
     contact_criteria = ContactStructuralMechanicsApplication.MPCContactCriteria(
     )
     return KratosMultiphysics.AndCriteria(conv_criteria, contact_criteria)
    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", ""))
        # If we just use the adaptative convergence criteria
        if (missing_meshing_dependencies is True):
            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 = StructuralMechanicsApplication.ErrorMeshCriteria(
                    self.adaptative_remesh_parameters["compute_error_settings"]
                )
                adaptative_error_criteria.SetEchoLevel(
                    conv_settings["echo_level"].GetInt())
                return adaptative_error_criteria

        # Regular convergence criteria
        convergence_criterion = convergence_criteria_factory.convergence_criterion(
            conv_settings)

        # If we combine the regular convergence criteria with adaptative
        if (missing_meshing_dependencies is False):
            if ("_with_adaptative_remesh" in error_criteria):
                adaptative_error_criteria = StructuralMechanicsApplication.ErrorMeshCriteria(
                    self.adaptative_remesh_parameters["compute_error_settings"]
                )
                adaptative_error_criteria.SetEchoLevel(
                    conv_settings["echo_level"].GetInt())
                convergence_criterion.mechanical_convergence_criterion = KratosMultiphysics.AndCriteria(
                    convergence_criterion.mechanical_convergence_criterion,
                    adaptative_error_criteria)
        return convergence_criterion.mechanical_convergence_criterion
예제 #3
0
    def _create_convergence_criterion(self):
        """This method is overridden to make sure it always uses "displacement_criterion" """
        convergence_criterion_setting = self._get_convergence_criterion_settings(
        )
        if convergence_criterion_setting["convergence_criterion"].GetString(
        ) != "displacement_criterion":
            warn_msg = 'Convergence criterion "displacement_criterion" is required. \n'
            warn_msg += '"' + convergence_criterion_setting[
                "convergence_criterion"].GetString(
                ) + '" specification will be ignored'
            KratosMultiphysics.Logger.PrintWarning(
                "StructuralMechanicsPrebucklingAnalysis; Warning", warn_msg)
            convergence_criterion_setting["convergence_criterion"].SetString(
                "displacement_criterion")

        convergence_criterion = convergence_criteria_factory.convergence_criterion(
            convergence_criterion_setting)
        return convergence_criterion.mechanical_convergence_criterion
    def __init__(self, model_part, convergence_criterion_parameters):
        # The main model part
        self.model_part = model_part

        # Note that all the convergence settings are introduced via a Kratos parameters object.
        self.echo_level = convergence_criterion_parameters[
            "echo_level"].GetInt()
        self.convergence_criterion_name = convergence_criterion_parameters[
            "convergence_criterion"].GetString()
        self.mortar_type = convergence_criterion_parameters[
            "mortar_type"].GetString()
        self.frictional_decomposed = convergence_criterion_parameters[
            "frictional_decomposed"].GetBool()
        self.print_convergence_criterion = convergence_criterion_parameters[
            "print_convergence_criterion"].GetBool()
        self.compute_dynamic_factor = convergence_criterion_parameters[
            "compute_dynamic_factor"].GetBool()
        self.gidio_debug = convergence_criterion_parameters[
            "gidio_debug"].GetBool()
        if "contact" in self.convergence_criterion_name:
            D_RT = convergence_criterion_parameters[
                "displacement_relative_tolerance"].GetDouble()
            D_AT = convergence_criterion_parameters[
                "displacement_absolute_tolerance"].GetDouble()
            R_RT = convergence_criterion_parameters[
                "residual_relative_tolerance"].GetDouble()
            R_AT = convergence_criterion_parameters[
                "residual_absolute_tolerance"].GetDouble()
            CD_RT = convergence_criterion_parameters[
                "contact_displacement_relative_tolerance"].GetDouble()
            CD_AT = convergence_criterion_parameters[
                "contact_displacement_absolute_tolerance"].GetDouble()
            CR_RT = convergence_criterion_parameters[
                "contact_residual_relative_tolerance"].GetDouble()
            CR_AT = convergence_criterion_parameters[
                "contact_residual_absolute_tolerance"].GetDouble()
            FSTCD_RT = convergence_criterion_parameters[
                "frictional_stick_contact_displacement_relative_tolerance"].GetDouble(
                )
            FSTCD_AT = convergence_criterion_parameters[
                "frictional_stick_contact_displacement_absolute_tolerance"].GetDouble(
                )
            FSTCR_RT = convergence_criterion_parameters[
                "frictional_stick_contact_residual_relative_tolerance"].GetDouble(
                )
            FSTCR_AT = convergence_criterion_parameters[
                "frictional_stick_contact_residual_absolute_tolerance"].GetDouble(
                )
            FSLCD_RT = convergence_criterion_parameters[
                "frictional_slip_contact_displacement_relative_tolerance"].GetDouble(
                )
            FSLCD_AT = convergence_criterion_parameters[
                "frictional_slip_contact_displacement_absolute_tolerance"].GetDouble(
                )
            FSLCR_RT = convergence_criterion_parameters[
                "frictional_slip_contact_residual_relative_tolerance"].GetDouble(
                )
            FSLCR_AT = convergence_criterion_parameters[
                "frictional_slip_contact_residual_absolute_tolerance"].GetDouble(
                )
            RNTT = convergence_criterion_parameters[
                "ratio_normal_tangent_threshold"].GetDouble()
            condn_convergence_criterion = convergence_criterion_parameters[
                "condn_convergence_criterion"].GetBool()
            ensure_contact = convergence_criterion_parameters[
                "ensure_contact"].GetBool()

            if self.echo_level >= 1:
                KM.Logger.PrintInfo(
                    "::[Mechanical Solver]:: ", "CONVERGENCE CRITERION : " +
                    self.convergence_criterion_name)

            if self.convergence_criterion_name == "contact_displacement_criterion":
                if "ALMContactFrictional" in self.mortar_type and self.frictional_decomposed:
                    if "PureSlip" in self.mortar_type:
                        pure_slip = True
                    else:
                        pure_slip = auxiliar_methods_solvers.AuxiliarPureSlipCheck(
                            self.model_part)
                    self.mechanical_convergence_criterion = CSMA.DisplacementLagrangeMultiplierFrictionalContactCriteria(
                        D_RT, D_AT, CD_RT, CD_AT, FSTCD_RT, FSTCD_AT, FSLCD_RT,
                        FSLCD_AT, RNTT, ensure_contact, pure_slip,
                        self.print_convergence_criterion)
                elif "Penalty" in self.mortar_type:
                    self.mechanical_convergence_criterion = CSMA.DisplacementContactCriteria(
                        D_RT, D_AT, self.print_convergence_criterion)
                else:
                    self.mechanical_convergence_criterion = CSMA.DisplacementLagrangeMultiplierContactCriteria(
                        D_RT, D_AT, CD_RT, CD_AT, ensure_contact,
                        self.print_convergence_criterion)

                self.mechanical_convergence_criterion.SetEchoLevel(
                    self.echo_level)

            elif self.convergence_criterion_name == "contact_residual_criterion":
                if "ALMContactFrictional" in self.mortar_type and self.frictional_decomposed:
                    if "PureSlip" in self.mortar_type:
                        pure_slip = True
                    else:
                        pure_slip = auxiliar_methods_solvers.AuxiliarPureSlipCheck(
                            self.model_part)
                    self.mechanical_convergence_criterion = CSMA.DisplacementLagrangeMultiplierResidualFrictionalContactCriteria(
                        R_RT, R_AT, CR_RT, CR_AT, FSTCD_RT, FSTCR_AT, FSLCD_RT,
                        FSLCR_AT, RNTT, ensure_contact, pure_slip,
                        self.print_convergence_criterion)
                elif "Penalty" in self.mortar_type:
                    self.mechanical_convergence_criterion = CSMA.DisplacementResidualContactCriteria(
                        R_RT, R_AT, self.print_convergence_criterion)
                else:
                    self.mechanical_convergence_criterion = CSMA.DisplacementLagrangeMultiplierResidualContactCriteria(
                        R_RT, R_AT, CR_RT, CR_AT, ensure_contact,
                        self.print_convergence_criterion)
                self.mechanical_convergence_criterion.SetEchoLevel(
                    self.echo_level)

            elif self.convergence_criterion_name == "contact_mixed_criterion":
                if "ALMContactFrictional" in self.mortar_type and self.frictional_decomposed:
                    if "PureSlip" in self.mortar_type:
                        pure_slip = True
                    else:
                        pure_slip = auxiliar_methods_solvers.AuxiliarPureSlipCheck(
                            self.model_part)
                    self.mechanical_convergence_criterion = CSMA.DisplacementLagrangeMultiplierMixedFrictionalContactCriteria(
                        R_RT, R_AT, CR_RT, CR_AT, FSTCD_RT, FSTCR_AT, FSLCD_RT,
                        FSLCR_AT, RNTT, ensure_contact, pure_slip,
                        self.print_convergence_criterion)
                elif "Penalty" in self.mortar_type:
                    self.mechanical_convergence_criterion = CSMA.DisplacementResidualContactCriteria(
                        R_RT, R_AT, self.print_convergence_criterion)
                else:
                    self.mechanical_convergence_criterion = CSMA.DisplacementLagrangeMultiplierMixedContactCriteria(
                        R_RT, R_AT, CR_RT, CR_AT, ensure_contact,
                        self.print_convergence_criterion)
                self.mechanical_convergence_criterion.SetEchoLevel(
                    self.echo_level)

            elif self.convergence_criterion_name == "contact_and_criterion":
                if "Penalty" in self.mortar_type:
                    Displacement = CSMA.DisplacementContactCriteria(
                        D_RT, D_AT, self.print_convergence_criterion)
                    Residual = CSMA.DisplacementResidualContactCriteria(
                        R_RT, R_AT, self.print_convergence_criterion)
                else:
                    Displacement = CSMA.DisplacementLagrangeMultiplierContactCriteria(
                        D_RT, D_AT, CD_RT, CD_AT, ensure_contact,
                        self.print_convergence_criterion)
                    Residual = CSMA.DisplacementLagrangeMultiplierResidualContactCriteria(
                        R_RT, R_AT, CR_RT, CR_AT, ensure_contact,
                        self.print_convergence_criterion)

                Displacement.SetEchoLevel(self.echo_level)
                Residual.SetEchoLevel(self.echo_level)
                self.mechanical_convergence_criterion = KM.AndCriteria(
                    Residual, Displacement)

            elif self.convergence_criterion_name == "contact_or_criterion":
                if "Penalty" in self.mortar_type:
                    Displacement = CSMA.DisplacementContactCriteria(
                        D_RT, D_AT, self.print_convergence_criterion)
                    Residual = CSMA.DisplacementResidualContactCriteria(
                        R_RT, R_AT, self.print_convergence_criterion)
                else:
                    Displacement = CSMA.DisplacementLagrangeMultiplierContactCriteria(
                        D_RT, D_AT, CD_RT, CD_AT, ensure_contact,
                        self.print_convergence_criterion)
                    Residual = CSMA.DisplacementLagrangeMultiplierResidualContactCriteria(
                        R_RT, R_AT, CR_RT, CR_AT, ensure_contact,
                        self.print_convergence_criterion)

                Displacement.SetEchoLevel(self.echo_level)
                Residual.SetEchoLevel(self.echo_level)
                self.mechanical_convergence_criterion = KM.OrCriteria(
                    Residual, Displacement)

            # Adding the mortar criteria
            Mortar = self.GetMortarCriteria()

            if condn_convergence_criterion:
                # Construct the solver
                settings_max = KM.Parameters("""
                {
                    "solver_type"             : "power_iteration_highest_eigenvalue_solver",
                    "max_iteration"           : 10000,
                    "tolerance"               : 1e-9,
                    "required_eigen_number"   : 1,
                    "verbosity"               : 0
                }
                """)
                eigen_solver_max = eigen_solver_factory.ConstructSolver(
                    settings_max)
                settings_min = KM.Parameters("""
                {
                    "solver_type"             : "power_iteration_eigenvalue_solver",
                    "max_iteration"           : 10000,
                    "tolerance"               : 1e-9,
                    "required_eigen_number"   : 1,
                    "verbosity"               : 0
                }
                """)
                eigen_solver_min = eigen_solver_factory.ConstructSolver(
                    settings_min)

                condition_number_utility = KM.ConditionNumberUtility(
                    eigen_solver_max, eigen_solver_min)
            else:
                condition_number_utility = None

            self.mechanical_convergence_criterion = CSMA.MortarAndConvergenceCriteria(
                self.mechanical_convergence_criterion, Mortar,
                self.print_convergence_criterion, condition_number_utility)

            self.mechanical_convergence_criterion.SetEchoLevel(self.echo_level)
            self.mechanical_convergence_criterion.SetActualizeRHSFlag(True)

        elif self.convergence_criterion_name == "adaptative_remesh_criteria":
            self.mechanical_convergence_criterion = None
        else:  # Standard criteria (same as structural mechanics application)
            base_mechanical_convergence_criterion = convergence_criteria_factory.convergence_criterion(
                convergence_criterion_parameters)

            # Adding the mortar criteria
            if "ALMContact" in self.mortar_type or "MeshTying" in self.mortar_type:
                Mortar = self.GetMortarCriteria(False)
                self.mechanical_convergence_criterion = KM.AndCriteria(
                    base_mechanical_convergence_criterion.
                    mechanical_convergence_criterion, Mortar)
                self.mechanical_convergence_criterion.SetActualizeRHSFlag(True)
            else:
                self.mechanical_convergence_criterion = base_mechanical_convergence_criterion.mechanical_convergence_criterion
예제 #5
0
 def _create_convergence_criterion(self):
     convergence_criterion = convergence_criteria_factory.convergence_criterion(
         self._get_convergence_criterion_settings())
     return convergence_criterion.mechanical_convergence_criterion
예제 #6
0
 def _create_convergence_criterion(self):
     import KratosMultiphysics.StructuralMechanicsApplication.convergence_criteria_factory as convergence_criteria_factory
     convergence_criterion = convergence_criteria_factory.convergence_criterion(self._get_convergence_criterion_settings())
     return convergence_criterion.mechanical_convergence_criterion
    def __init__(self, convergence_criterion_parameters):
        # Note that all the convergence settings are introduced via a Kratos parameters object.
        self.echo_level = convergence_criterion_parameters[
            "echo_level"].GetInt()
        self.convergence_criterion_name = convergence_criterion_parameters[
            "convergence_criterion"].GetString()
        self.mortar_type = convergence_criterion_parameters[
            "mortar_type"].GetString()
        self.frictional_decomposed = convergence_criterion_parameters[
            "frictional_decomposed"].GetBool()
        self.print_convergence_criterion = convergence_criterion_parameters[
            "print_convergence_criterion"].GetBool()
        self.compute_dynamic_factor = convergence_criterion_parameters[
            "compute_dynamic_factor"].GetBool()
        self.gidio_debug = convergence_criterion_parameters[
            "gidio_debug"].GetBool()
        if "contact" in self.convergence_criterion_name:
            D_RT = convergence_criterion_parameters[
                "displacement_relative_tolerance"].GetDouble()
            D_AT = convergence_criterion_parameters[
                "displacement_absolute_tolerance"].GetDouble()
            R_RT = convergence_criterion_parameters[
                "residual_relative_tolerance"].GetDouble()
            R_AT = convergence_criterion_parameters[
                "residual_absolute_tolerance"].GetDouble()
            CD_RT = convergence_criterion_parameters[
                "contact_displacement_relative_tolerance"].GetDouble()
            CD_AT = convergence_criterion_parameters[
                "contact_displacement_absolute_tolerance"].GetDouble()
            CR_RT = convergence_criterion_parameters[
                "contact_residual_relative_tolerance"].GetDouble()
            CR_AT = convergence_criterion_parameters[
                "contact_residual_absolute_tolerance"].GetDouble()
            FCD_RT = convergence_criterion_parameters[
                "frictional_contact_displacement_relative_tolerance"].GetDouble(
                )
            FCD_AT = convergence_criterion_parameters[
                "frictional_contact_displacement_absolute_tolerance"].GetDouble(
                )
            FCR_RT = convergence_criterion_parameters[
                "frictional_contact_residual_relative_tolerance"].GetDouble()
            FCR_AT = convergence_criterion_parameters[
                "frictional_contact_residual_absolute_tolerance"].GetDouble()
            condn_convergence_criterion = convergence_criterion_parameters[
                "condn_convergence_criterion"].GetBool()
            ensure_contact = convergence_criterion_parameters[
                "ensure_contact"].GetBool()

            if self.echo_level >= 1:
                KM.Logger.PrintInfo(
                    "::[Mechanical Solver]:: ", "CONVERGENCE CRITERION : " +
                    self.convergence_criterion_name)

            if self.convergence_criterion_name == "contact_displacement_criterion":
                if (self.mortar_type == "ALMContactFrictional"
                        and self.frictional_decomposed):
                    self.mechanical_convergence_criterion = CSMA.DisplacementLagrangeMultiplierFrictionalContactCriteria(
                        D_RT, D_AT, CD_RT, CD_AT, FCD_RT, FCD_AT,
                        ensure_contact, self.print_convergence_criterion)
                elif "Penalty" in self.mortar_type:
                    self.mechanical_convergence_criterion = CSMA.DisplacementContactCriteria(
                        D_RT, D_AT, self.print_convergence_criterion)
                else:
                    self.mechanical_convergence_criterion = CSMA.DisplacementLagrangeMultiplierContactCriteria(
                        D_RT, D_AT, CD_RT, CD_AT, ensure_contact,
                        self.print_convergence_criterion)

                self.mechanical_convergence_criterion.SetEchoLevel(
                    self.echo_level)

            elif self.convergence_criterion_name == "contact_residual_criterion":
                if (self.mortar_type == "ALMContactFrictional"
                        and self.frictional_decomposed):
                    self.mechanical_convergence_criterion = CSMA.DisplacementLagrangeMultiplierResidualFrictionalContactCriteria(
                        R_RT, R_AT, CR_RT, CR_AT, FCR_RT, FCR_AT,
                        ensure_contact, self.print_convergence_criterion)
                elif "Penalty" in self.mortar_type:
                    self.mechanical_convergence_criterion = CSMA.DisplacementResidualContactCriteria(
                        R_RT, R_AT, self.print_convergence_criterion)
                else:
                    self.mechanical_convergence_criterion = CSMA.DisplacementLagrangeMultiplierResidualContactCriteria(
                        R_RT, R_AT, CR_RT, CR_AT, ensure_contact,
                        self.print_convergence_criterion)
                self.mechanical_convergence_criterion.SetEchoLevel(
                    self.echo_level)

            elif self.convergence_criterion_name == "contact_mixed_criterion":
                if (self.mortar_type == "ALMContactFrictional"
                        and self.frictional_decomposed):
                    self.mechanical_convergence_criterion = CSMA.DisplacementLagrangeMultiplierMixedFrictionalontactCriteria(
                        R_RT, R_AT, CR_RT, CR_AT, FCR_RT, FCR_AT,
                        ensure_contact, self.print_convergence_criterion)
                elif "Penalty" in self.mortar_type:
                    self.mechanical_convergence_criterion = CSMA.DisplacementResidualContactCriteria(
                        R_RT, R_AT, self.print_convergence_criterion)
                else:
                    self.mechanical_convergence_criterion = CSMA.DisplacementLagrangeMultiplierMixedContactCriteria(
                        R_RT, R_AT, CR_RT, CR_AT, ensure_contact,
                        self.print_convergence_criterion)
                self.mechanical_convergence_criterion.SetEchoLevel(
                    self.echo_level)

            elif self.convergence_criterion_name == "contact_and_criterion":
                if "Penalty" in self.mortar_type:
                    Displacement = CSMA.DisplacementContactCriteria(
                        D_RT, D_AT, self.print_convergence_criterion)
                    Residual = CSMA.DisplacementResidualContactCriteria(
                        R_RT, R_AT, self.print_convergence_criterion)
                else:
                    Displacement = CSMA.DisplacementLagrangeMultiplierContactCriteria(
                        D_RT, D_AT, CD_RT, CD_AT, ensure_contact,
                        self.print_convergence_criterion)
                    Residual = CSMA.DisplacementLagrangeMultiplierResidualContactCriteria(
                        R_RT, R_AT, CR_RT, CR_AT, ensure_contact,
                        self.print_convergence_criterion)

                Displacement.SetEchoLevel(self.echo_level)
                Residual.SetEchoLevel(self.echo_level)
                self.mechanical_convergence_criterion = KM.AndCriteria(
                    Residual, Displacement)

            elif self.convergence_criterion_name == "contact_or_criterion":
                if "Penalty" in self.mortar_type:
                    Displacement = CSMA.DisplacementContactCriteria(
                        D_RT, D_AT, self.print_convergence_criterion)
                    Residual = CSMA.DisplacementResidualContactCriteria(
                        R_RT, R_AT, self.print_convergence_criterion)
                else:
                    Displacement = CSMA.DisplacementLagrangeMultiplierContactCriteria(
                        D_RT, D_AT, CD_RT, CD_AT, ensure_contact,
                        self.print_convergence_criterion)
                    Residual = CSMA.DisplacementLagrangeMultiplierResidualContactCriteria(
                        R_RT, R_AT, CR_RT, CR_AT, ensure_contact,
                        self.print_convergence_criterion)

                Displacement.SetEchoLevel(self.echo_level)
                Residual.SetEchoLevel(self.echo_level)
                self.mechanical_convergence_criterion = KM.OrCriteria(
                    Residual, Displacement)

            # Adding the mortar criteria
            Mortar = self.GetMortarCriteria()

            if (condn_convergence_criterion is True):
                # Construct the solver
                from KratosMultiphysics import eigen_solver_factory
                settings_max = KM.Parameters("""
                {
                    "solver_type"             : "power_iteration_highest_eigenvalue_solver",
                    "max_iteration"           : 10000,
                    "tolerance"               : 1e-9,
                    "required_eigen_number"   : 1,
                    "verbosity"               : 0,
                    "linear_solver_settings"  : {
                        "solver_type"             : "SuperLUSolver",
                        "max_iteration"           : 500,
                        "tolerance"               : 1e-9,
                        "scaling"                 : false,
                        "verbosity"               : 0
                    }
                }
                """)
                eigen_solver_max = eigen_solver_factory.ConstructSolver(
                    settings_max)
                settings_min = KM.Parameters("""
                {
                    "solver_type"             : "power_iteration_eigenvalue_solver",
                    "max_iteration"           : 10000,
                    "tolerance"               : 1e-9,
                    "required_eigen_number"   : 1,
                    "verbosity"               : 0,
                    "linear_solver_settings"  : {
                        "solver_type"             : "SuperLUSolver",
                        "max_iteration"           : 500,
                        "tolerance"               : 1e-9,
                        "scaling"                 : false,
                        "verbosity"               : 0
                    }
                }
                """)
                eigen_solver_min = eigen_solver_factory.ConstructSolver(
                    settings_min)

                condition_number_utility = KM.ConditionNumberUtility(
                    eigen_solver_max, eigen_solver_min)
            else:
                condition_number_utility = None

            self.mechanical_convergence_criterion = CSMA.MortarAndConvergenceCriteria(
                self.mechanical_convergence_criterion, Mortar,
                self.print_convergence_criterion, condition_number_utility)

            self.mechanical_convergence_criterion.SetEchoLevel(self.echo_level)
            self.mechanical_convergence_criterion.SetActualizeRHSFlag(True)

        elif self.convergence_criterion_name == "adaptative_remesh_criteria":
            self.mechanical_convergence_criterion = None
        else:  # Standard criteria (same as structural mechanics application)
            # Construction of the class convergence_criterion
            from KratosMultiphysics.StructuralMechanicsApplication import convergence_criteria_factory
            base_mechanical_convergence_criterion = convergence_criteria_factory.convergence_criterion(
                convergence_criterion_parameters)

            # Adding the mortar criteria
            if "ALMContact" in self.mortar_type or "MeshTying" in self.mortar_type:
                Mortar = self.GetMortarCriteria(False)
                self.mechanical_convergence_criterion = KM.AndCriteria(
                    base_mechanical_convergence_criterion.
                    mechanical_convergence_criterion, Mortar)
                self.mechanical_convergence_criterion.SetActualizeRHSFlag(True)
            else:
                self.mechanical_convergence_criterion = base_mechanical_convergence_criterion.mechanical_convergence_criterion