def __init__(self, model, custom_settings):

        ## Settings string in json format
        contact_settings = auxiliar_methods_solvers.AuxiliarContactSettings()

        ## Overwrite the default settings with user-provided parameters
        self.settings = custom_settings
        self.validate_and_transfer_matching_settings(self.settings,
                                                     contact_settings)
        self.contact_settings = contact_settings["contact_settings"]

        # Linear solver settings
        if self.settings.Has("linear_solver_settings"):
            self.linear_solver_settings = self.settings[
                "linear_solver_settings"]
        else:
            self.linear_solver_settings = KM.Parameters("""{}""")

        # Construct the base solver.
        super(ContactStaticMechanicalSolver,
              self).__init__(model, self.settings)

        # Setting default configurations true by default
        auxiliar_methods_solvers.AuxiliarSetSettings(self.settings,
                                                     self.contact_settings)

        # Setting echo level
        self.echo_level = self.settings["echo_level"].GetInt()

        # Initialize the processes list
        self.processes_list = None

        # Initialize the post process
        self.post_process = None

        KM.Logger.PrintInfo(
            "::[Contact Mechanical Static Solver]:: ",
            "Construction of ContactMechanicalSolver finished")
 def GetDefaultSettings(cls):
     this_defaults = auxiliar_methods_solvers.AuxiliarContactSettings()
     this_defaults.RecursivelyAddMissingParameters(
         super(ContactStaticMechanicalSolver, cls).GetDefaultSettings())
     return this_defaults