code: def _NTU_max_for_P_solver(data, R1):
      '''Private function to calculate the upper bound on the NTU1 value in the
      P-NTU method. This value is calculated via a pade approximation obtained
      on the result of a global minimizer which calculated the maximum P1
      at a given R1 from ~1E-7 to approximately 100. This should suffice for 
      engineering applications. This value is needed to bound the solver.
      '''
      offset_max = data['offset'][-1]
      for offset, p, q in zip(data['offset'], data['p'], data['q']):
          if R1 < offset or offset == offset_max:
              x = R1 - offset
              return _horner(p, x)/_horner(q, xf _NTU_max_for_P_solver(data, R1):
      '''Private function to calculate the upper bound on the NTU1 value in the
      P-NTU method. This value is calculated via a pade approximation obtained
      on the result of a global minimizer which calculated the maximum P1
      at a given R1 from ~1E-7 to approximately 100. This should suffice for 
      engineering applications. This value is needed to bound the solver.
      '''
      offset_max = data['offset'][-1]
      for offset, p, q in zip(data['offset'], data['p'], data['q']):
          if R1 < offset or offset == offset_max:
              x = R1 - offset
              return _horner(p, x)/_horner(q, x)
docs: Private function to calculate the upper bound on the NTU1 value in the
      P-NTU method. This value is calculated via a pade approximation obtained
      on the result of a global minimizer which calculated the maximum P1
      at a given R1 from ~1E-7 to approximately 100. This should suffice for 
      engineering applications. This value is needed to bound the solver.