parameters: (self, Model, settings)
docstring: The default constructor of the class
  
          Keyword arguments:
          self -- It signifies an instance of a class.
          Model -- the container of the different model parts.
          settings -- Kratos parameters containing solver settings.
docstring_summary: The default constructor of the class
docstring_tokens: The default constructor of the class
function: def __init__(self, Model, settings):
          """ The default constructor of the class
  
          Keyword arguments:
          self -- It signifies an instance of a class.
          Model -- the container of the different model parts.
          settings -- Kratos parameters containing solver settings.
          """
          KM.Process.__init__(self)
  
          # NOTE: Due to recursive check "search_model_part" and "assume_master_slave" requires to pre-define configurations, if more that 10 pairs of contact are required, just add. I assume nobody needs that much
          # Settings string in json format
          default_parameters = KM.Parameters("""
          {
              "help"                        : "This class is a base class used to perform the search for contact and mesh tying. This class constructs the model parts containing the conditions. The class creates search utilities to be used to create the pairs",
              "mesh_id"                     : 0,
              "model_part_name"             : "Structure",
              "search_model_part"           : {"0":[],"1":[],"2":[],"3":[],"4":[],"5":[],"6":[],"7":[],"8":[],"9":[]},
              "assume_master_slave"         : {"0":[],"1":[],"2":[],"3":[],"4":[],"5":[],"6":[],"7":[],"8":[],"9":[]},
              "search_property_ids"         : {"0": 0,"1": 0,"2": 0,"3": 0,"4": 0,"5": 0,"6": 0,"7": 0,"8": 0,"9": 0},
              "interval"                    : [0.0,"End"],
              "zero_tolerance_factor"       : 1.0,
              "integration_order"           : 2,
              "consider_tessellation"       : false,
              "normal_check_proportion"     : 0.1,
              "search_parameters" : {
                  "type_search"                         : "in_radius_with_obb",
                  "simple_search"                       : false,
                  "adapt_search"                        : false,
                  "search_factor"                       : 3.5,
                  "active_check_factor"                 : 0.01,
                  "max_number_results"                  : 1000,
                  "bucket_size"                         : 4,
                  "dynamic_search"                      : false,
                  "static_check_movement"               : false,
                  "database_step_update"                : 1,
                  "normal_orientation_threshold"        : 1.0e-1,
                  "consider_gap_threshold"              : false,
                  "debug_mode"                          : false,
                  "predict_correct_lagrange_multiplier" : false,
                  "check_gap"                           : "check_mapping",
                  "octree_search_parameters" : {
                      "bounding_box_factor"             : 0.1,
                      "debug_obb"                       : false,
                      "OBB_intersection_type"           : "SeparatingAxisTheorem",
                      "build_from_bounding_box"         : true,
                      "lower_bounding_box_coefficient"  : 0.0,
                      "higher_bounding_box_coefficient" : 1.0
                  }
              }
          }
          """)
  
          # Overwrite the default settings with user-provided parameters
          self.settings = settings
          self.settings.RecursivelyValidateAndAssignDefaults(default_parameters)
  
          # The main model part
          self.model = Model
          self.main_model_part = self.model[self.settings["model_part_name"].GetString()]
  
          self.dimension = self.main_model_part.ProcessInfo[KM.DOMAIN_SIZE]
  
          self.database_step = 0
  
          # Detect "End" as a tag and replace it by a large number
          if self.settings.Has("interval"):
              if self.settings["interval"][1].IsString():
                  if self.settings["interval"][1].GetString() == "End":
                      self.settings["interval"][1].SetDouble(1e30) # = default_settings["interval"][1]
                  else:
                      raise Exception("the second value of interval can be \"End\" or a number, interval currently:"+settings["interval"].PrettyPrintJsonString())
  
          # Assign this here since it will change the "interval" prior to validation
          self.interval = KM.IntervalUtility(self.settings)
function_tokens: def __init__ ( self , Model , settings ) : KM . Process . __init__ ( self ) # NOTE: Due to recursive check "search_model_part" and "assume_master_slave" requires to pre-define configurations, if more that 10 pairs of contact are required, just add. I assume nobody needs that much # Settings string in json format default_parameters = KM . Parameters ( """
          {
              "help"                        : "This class is a base class used to perform the search for contact and mesh tying. This class constructs the model parts containing the conditions. The class creates search utilities to be used to create the pairs",
              "mesh_id"                     : 0,
              "model_part_name"             : "Structure",
              "search_model_part"           : {"0":[],"1":[],"2":[],"3":[],"4":[],"5":[],"6":[],"7":[],"8":[],"9":[]},
              "assume_master_slave"         : {"0":[],"1":[],"2":[],"3":[],"4":[],"5":[],"6":[],"7":[],"8":[],"9":[]},
              "search_property_ids"         : {"0": 0,"1": 0,"2": 0,"3": 0,"4": 0,"5": 0,"6": 0,"7": 0,"8": 0,"9": 0},
              "interval"                    : [0.0,"End"],
              "zero_tolerance_factor"       : 1.0,
              "integration_order"           : 2,
              "consider_tessellation"       : false,
              "normal_check_proportion"     : 0.1,
              "search_parameters" : {
                  "type_search"                         : "in_radius_with_obb",
                  "simple_search"                       : false,
                  "adapt_search"                        : false,
                  "search_factor"                       : 3.5,
                  "active_check_factor"                 : 0.01,
                  "max_number_results"                  : 1000,
                  "bucket_size"                         : 4,
                  "dynamic_search"                      : false,
                  "static_check_movement"               : false,
                  "database_step_update"                : 1,
                  "normal_orientation_threshold"        : 1.0e-1,
                  "consider_gap_threshold"              : false,
                  "debug_mode"                          : false,
                  "predict_correct_lagrange_multiplier" : false,
                  "check_gap"                           : "check_mapping",
                  "octree_search_parameters" : {
                      "bounding_box_factor"             : 0.1,
                      "debug_obb"                       : false,
                      "OBB_intersection_type"           : "SeparatingAxisTheorem",
                      "build_from_bounding_box"         : true,
                      "lower_bounding_box_coefficient"  : 0.0,
                      "higher_bounding_box_coefficient" : 1.0
                  }
              }
          }
          """ ) # Overwrite the default settings with user-provided parameters self . settings = settings self . settings . RecursivelyValidateAndAssignDefaults ( default_parameters ) # The main model part self . model = Model self . main_model_part = self . model [ self . settings [ "model_part_name" ] . GetString ( ) ] self . dimension = self . main_model_part . ProcessInfo [ KM . DOMAIN_SIZE ] self . database_step = 0 # Detect "End" as a tag and replace it by a large number if self . settings . Has ( "interval" ) : if self . settings [ "interval" ] [ 1 ] . IsString ( ) : if self . settings [ "interval" ] [ 1 ] . GetString ( ) == "End" : self . settings [ "interval" ] [ 1 ] . SetDouble ( 1e30 ) # = default_settings["interval"][1] else : raise Exception ( "the second value of interval can be \"End\" or a number, interval currently:" + settings [ "interval" ] . PrettyPrintJsonString ( ) ) # Assign this here since it will change the "interval" prior to validation self . interval = KM . IntervalUtility ( self . settings )