docstr: Determine the `MF` parameter (Method Flag) for the Fortran subroutine `dvode`.
  
  In the Fortran code, the legal values of `MF` are:
      10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25,
      -11, -12, -14, -15, -21, -22, -24, -25
  but this Python wrapper does not use negative values.
  
  Returns
  
      mf  = 10*self.meth + miter
  
  self.meth is the linear multistep method:
      self.meth == 1:  method="adams"
      self.meth == 2:  method="bdf"
  
  miter is the correction iteration method:
      miter == 0:  Functional iteration; no Jacobian involved.
      miter == 1:  Chord iteration with user-supplied full Jacobian.
      miter == 2:  Chord iteration with internally computed full Jacobian.
      miter == 3:  Chord iteration with internally computed diagonal Jacobian.
      miter == 4:  Chord iteration with user-supplied banded Jacobian.
      miter == 5:  Chord iteration with internally computed banded Jacobian.
  
  Side effects: If either self.mu or self.ml is not None and the other is None,
  then the one that is None is set to 0.
docstr_tok: ["Determine","the","`","MF","`","parameter","(","Method","Flag",")","for","the","Fortran","subroutine","`","dvode","`",".","In","the","Fortran","code",",","the","legal","values","of","`","MF","`","are",":","10",",","11",",","12",",","13",",","14",",","15",",","20",",","21",",","22",",","23",",","24",",","25",",","-11",",","-12",",","-14",",","-15",",","-21",",","-22",",","-24",",","-25","but","this","Python","wrapper","does","not","use","negative","values",".","Returns","mf","=","10","*","self.meth","+","miter","self.meth","is","the","linear","multistep","method",":","self.meth","==","1",":","method=","''","adams","''","self.meth","==","2",":","method=","''","bdf","''","miter","is","the","correction","iteration","method",":","miter","==","0",":","Functional","iteration",";","no","Jacobian","involved",".","miter","==","1",":","Chord","iteration","with","user-supplied","full","Jacobian",".","miter","==","2",":","Chord","iteration","with","internally","computed","full","Jacobian",".","miter","==","3",":","Chord","iteration","with","internally","computed","diagonal","Jacobian",".","miter","==","4",":","Chord","iteration","with","user-supplied","banded","Jacobian",".","miter","==","5",":","Chord","iteration","with","internally","computed","banded","Jacobian",".","Side","effects",":","If","either","self.mu","or","self.ml","is","not","None","and","the","other","is","None",",","then","the","one","that","is","None","is","set","to","0","."]
code: def _determine_mf_and_set_bands(self, has_jac):
      """
      Determine the `MF` parameter (Method Flag) for the Fortran subroutine `dvode`.
  
      In the Fortran code, the legal values of `MF` are:
          10, 11, 12, 13, 14, 15, 20, 21, 22, 23, 24, 25,
          -11, -12, -14, -15, -21, -22, -24, -25
      but this Python wrapper does not use negative values.
  
      Returns
  
          mf  = 10*self.meth + miter
  
      self.meth is the linear multistep method:
          self.meth == 1:  method="adams"
          self.meth == 2:  method="bdf"
  
      miter is the correction iteration method:
          miter == 0:  Functional iteration; no Jacobian involved.
          miter == 1:  Chord iteration with user-supplied full Jacobian.
          miter == 2:  Chord iteration with internally computed full Jacobian.
          miter == 3:  Chord iteration with internally computed diagonal Jacobian.
          miter == 4:  Chord iteration with user-supplied banded Jacobian.
          miter == 5:  Chord iteration with internally computed banded Jacobian.
  
      Side effects: If either self.mu or self.ml is not None and the other is None,
      then the one that is None is set to 0.
      """
  
      jac_is_banded = self.mu is not None or self.ml is not None
      if jac_is_banded:
          if self.mu is None:
              self.mu = 0
          if self.ml is None:
              self.ml = 0
  
      # has_jac is True if the user provided a Jacobian function.
      if has_jac:
          if jac_is_banded:
              miter = 4
          else:
              miter = 1
      else:
          if jac_is_banded:
              if self.ml == self.mu == 0:
                  miter = 3  # Chord iteration with internal diagonal Jacobian.
              else:
                  miter = 5  # Chord iteration with internal banded Jacobian.
          else:
              # self.with_jacobian is set by the user in
              # the call to ode.set_integrator.
              if self.with_jacobian:
                  miter = (
                      2  # Chord iteration with internal full Jacobian.
                  )
              else:
                  miter = (
                      0  # Functional iteration; no Jacobian involved.
                  )
  
      mf = 10 * self.meth + miter
      return mf
  
imports: import re
  import warnings
  from numpy import asarray, array, zeros, isscalar, real, imag, vstack
  from .None import _vode
  from .None import _dop
  from .None import _lsoda
label_desc: Use image node_id 2 for calling the vode obj's underlying member method code with example usage: obj._determine_mf_and_set_bands(has_jac) and returns: mf