code: def eq_add(self, expr, var, intf=False):
          
  
          # determine the type of the equation, ('f', 'g') based on var
  
          # We assume that all differential equations are only modifiable by
          #   the model itself
          # Only interface to algebraic varbailes of external models
  
          ty = ''
          if var in self._algebs:
              ty = 'g'
          elif var in self._states:
              ty = 'f'
          else:
              for _, item in self._ac:
                  if var in item:
                      ty = 'g'
                      if intf is False:
                          intf = True
              for _, item in self._dc:
                  if var == item:
                      ty = 'g'
                      if intf is False:
                          intf = True
          if ty == '':
              self.log(
                  'Equation associated with interface variable {var} '
                  'assumed as algeb'.
                  format(var=var),
                  DEBUG)
              ty = 'g'
  
          self._equations.append((expr, var, intf, ty))
docs: Add an equation to this model.
  
          An equation is associated with the addresses of a variable.  The
          number of equations must equal that of variables.
  
          Stored to ``self._equations`` is a tuple of ``(expr, var, intf,
          ty)`` where ``ty`` is in ('f', 'g')
  
          :param str expr: equation expression
          :param str var: variable name to be associated with
          :param bool intf: if this equation is added to an interface equation,
              namely, an equation outside this model
  
          :return: None