Exemplo n.º 1
0
    def _ConstructScheme(self, scheme_type, solution_type):

        self.main_model_part.ProcessInfo.SetValue(
            KratosPoro.VELOCITY_COEFFICIENT, 1.0)
        self.main_model_part.ProcessInfo.SetValue(
            KratosPoro.DT_PRESSURE_COEFFICIENT, 1.0)

        if (scheme_type == "Newmark"):
            beta = self.settings["newmark_beta"].GetDouble()
            gamma = self.settings["newmark_gamma"].GetDouble()
            theta = self.settings["newmark_theta"].GetDouble()
            rayleigh_m = self.settings["rayleigh_m"].GetDouble()
            rayleigh_k = self.settings["rayleigh_k"].GetDouble()
            self.main_model_part.ProcessInfo.SetValue(
                KratosStructural.RAYLEIGH_ALPHA, rayleigh_m)
            self.main_model_part.ProcessInfo.SetValue(
                KratosStructural.RAYLEIGH_BETA, rayleigh_k)
            if (solution_type == "quasi_static"):
                if (rayleigh_m < 1.0e-20 and rayleigh_k < 1.0e-20):
                    scheme = KratosPoro.NewmarkQuasistaticUPwScheme(
                        beta, gamma, theta)
                else:
                    scheme = KratosPoro.NewmarkQuasistaticDampedUPwScheme(
                        beta, gamma, theta)
            else:
                scheme = KratosPoro.NewmarkDynamicUPwScheme(beta, gamma, theta)
        else:
            raise Exception(
                "Apart from Newmark, other scheme_type are not available.")

        return scheme
Exemplo n.º 2
0
    def _ConstructScheme(self, scheme_type, solution_type):

        self.main_model_part.ProcessInfo.SetValue(
            KratosPoro.VELOCITY_COEFFICIENT, 1.0)
        self.main_model_part.ProcessInfo.SetValue(
            KratosPoro.DT_PRESSURE_COEFFICIENT, 1.0)

        if (scheme_type == "Newmark"):
            beta = self.settings["newmark_beta"].GetDouble()
            gamma = self.settings["newmark_gamma"].GetDouble()
            theta = self.settings["newmark_theta"].GetDouble()
            rayleigh_alpha = self.settings["rayleigh_alpha"].GetDouble()
            rayleigh_beta = self.settings["rayleigh_beta"].GetDouble()
            if self.settings["calculate_alpha_beta"].GetBool():
                omega_1 = self.settings["omega_1"].GetDouble()
                omega_n = self.settings["omega_n"].GetDouble()
                xi_1 = self.settings["xi_1"].GetDouble()
                xi_n = self.settings["xi_n"].GetDouble()
                rayleigh_beta = 2.0 * (xi_n * omega_n - xi_1 * omega_1) / (
                    omega_n * omega_n - omega_1 * omega_1)
                rayleigh_alpha = 2.0 * xi_1 * omega_1 - rayleigh_beta * omega_1 * omega_1
                KratosMultiphysics.Logger.PrintInfo(
                    "::[UPwSolver]:: Scheme Information")
                KratosMultiphysics.Logger.PrintInfo(
                    "::[UPwSolver]:: omega_1: ", omega_1)
                KratosMultiphysics.Logger.PrintInfo(
                    "::[UPwSolver]:: omega_n: ", omega_n)
                KratosMultiphysics.Logger.PrintInfo("::[UPwSolver]:: xi_1: ",
                                                    xi_1)
                KratosMultiphysics.Logger.PrintInfo("::[UPwSolver]:: xi_n: ",
                                                    xi_n)
                KratosMultiphysics.Logger.PrintInfo(
                    "::[UPwSolver]:: Alpha and Beta output")
                KratosMultiphysics.Logger.PrintInfo(
                    "::[UPwSolver]:: rayleigh_alpha: ", rayleigh_alpha)
                KratosMultiphysics.Logger.PrintInfo(
                    "::[UPwSolver]:: rayleigh_beta: ", rayleigh_beta)

            self.main_model_part.ProcessInfo.SetValue(
                KratosStructural.RAYLEIGH_ALPHA, rayleigh_alpha)
            self.main_model_part.ProcessInfo.SetValue(
                KratosStructural.RAYLEIGH_BETA, rayleigh_beta)
            if (solution_type == "implicit_quasi_static"):
                if (rayleigh_alpha < 1.0e-20 and rayleigh_beta < 1.0e-20):
                    scheme = KratosPoro.NewmarkQuasistaticUPwScheme(
                        beta, gamma, theta)
                else:
                    scheme = KratosPoro.NewmarkQuasistaticDampedUPwScheme(
                        beta, gamma, theta)
            else:
                scheme = KratosPoro.NewmarkDynamicUPwScheme(beta, gamma, theta)
        else:
            raise Exception(
                "Apart from Newmark, other scheme_type are not available.")

        return scheme
Exemplo n.º 3
0
    def _ConstructScheme(self, scheme_type, solution_type):

        if(scheme_type == "Newmark"):
            beta = self.settings["newmark_beta"].GetDouble()
            gamma = self.settings["newmark_gamma"].GetDouble()
            theta = self.settings["newmark_theta"].GetDouble()
            rayleigh_m = self.settings["rayleigh_m"].GetDouble()
            rayleigh_k = self.settings["rayleigh_k"].GetDouble()
            if(solution_type == "quasi_static"):
                if(rayleigh_m<1.0e-20 and rayleigh_k<1.0e-20):
                    scheme = KratosPoro.NewmarkQuasistaticUPwScheme(beta,gamma,theta)
                else:
                    scheme = KratosPoro.NewmarkQuasistaticDampedUPwScheme(beta,gamma,theta,rayleigh_m,rayleigh_k)
            else:
                scheme = KratosPoro.NewmarkDynamicUPwScheme(beta,gamma,theta,rayleigh_m,rayleigh_k)
        else:
            raise Exception("Apart from Newmark, other scheme_type are not available.")

        return scheme