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
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
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