def Initialize(self):
        # The time step utility needs the NODAL_H
        KM.FindNodalHProcess(self.GetComputingModelPart()).Execute()
        self.EstimateDeltaTimeUtility = SW.EstimateDtShallow(self.GetComputingModelPart(), self.settings["time_stepping"])

        # Creating the solution strategy for the mesh stage
        self.conv_criteria = KM.DisplacementCriteria(self.settings["relative_tolerance"].GetDouble(),
                                                                     self.settings["absolute_tolerance"].GetDouble())
        (self.conv_criteria).SetEchoLevel(self.echo_level)

        self.time_scheme = SW.ResidualBasedIncrementalUpdateWettingScheme(self._GetWettingModel())
        # domain_size = self.main_model_part.ProcessInfo[KratosMultiphysics.DOMAIN_SIZE]
        # self.time_scheme = KratosMultiphysics.ResidualBasedIncrementalUpdateStaticSchemeSlip(domain_size,   # DomainSize
        #                                                                                      domain_size+1) # BlockSize

        self.builder_and_solver = KM.ResidualBasedBlockBuilderAndSolver(self.linear_solver)

        self.solver = KM.ResidualBasedNewtonRaphsonStrategy(self.GetComputingModelPart(),
                                                            self.time_scheme,
                                                            self.linear_solver,
                                                            self.conv_criteria,
                                                            self.builder_and_solver,
                                                            self.settings["maximum_iterations"].GetInt(),
                                                            self.settings["compute_reactions"].GetBool(),
                                                            self.settings["reform_dofs_at_each_step"].GetBool(),
                                                            self.settings["move_mesh_flag"].GetBool())

        self.main_model_part.ProcessInfo.SetValue(KM.DYNAMIC_TAU, self.settings["dynamic_tau"].GetDouble())

        (self.solver).SetEchoLevel(max(0, self.echo_level-1))
        (self.solver).Check()

        (self.solver).Initialize()

        KM.Logger.PrintInfo("::[ShallowWaterBaseSolver]::", "Mesh stage solver initialization finished")
Exemple #2
0
 def Initialize(self):
     # The time step utility needs the NODAL_H
     KM.FindNodalHProcess(self.GetComputingModelPart()).Execute()
     self.EstimateDeltaTimeUtility = SW.EstimateDtShallow(
         self.GetComputingModelPart(), self.settings["time_stepping"])