Advertisement
mikofski

benchtest_newton_mp.py

Feb 3rd, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.27 KB | None | 0 0
  1. from multiprocessing import Pool
  2. import numpy as np
  3. from scipy.optimize import newton
  4.  
  5.  
  6. NUM_OF_IRRAD = 100000
  7. IL = np.random.rand(NUM_OF_IRRAD) + 6.0
  8.  
  9.  
  10. def f_solarcell(i, v, il, io, rs, rsh, vt):
  11.     vd = v + i * rs
  12.     return il - io * (np.exp(vd / vt) - 1.0) - vd / rsh - i
  13.  
  14.  
  15. def fprime(i, v, il, io, rs, rsh, vt):
  16.     return -io * np.exp((v + i * rs) / vt) * rs / vt - rs / rsh - 1
  17.  
  18.  
  19. def fprime2(i, v, il, io, rs, rsh, vt):
  20.     return -io * np.exp((v + i * rs) / vt) * (rs / vt)**2
  21.  
  22.  
  23. def newton_array(args):
  24.     """test newton with array"""
  25.     return newton(f_solarcell, 7.0, fprime, args)
  26.  
  27.  
  28. def halley_array(args):
  29.     """test newton with array"""
  30.     return newton(f_solarcell, 7.0, fprime, args, fprime2=fprime2)
  31.  
  32.  
  33. def secant_array(args):
  34.     """test newton with array"""
  35.     return newton(f_solarcell, 7.0, args=args)
  36.  
  37.  
  38. def bench_mp_newton():
  39.     p = Pool()
  40.     return p.map(newton_array,
  41.                  ((5.25, il, 1e-09, 0.004, 10, 0.27456) for il in IL))
  42.  
  43.  
  44. def bench_mp_halley():
  45.     p = Pool()
  46.     return p.map(halley_array,
  47.                  ((5.25, il, 1e-09, 0.004, 10, 0.27456) for il in IL))
  48.  
  49.  
  50. def bench_mp_secant():
  51.     p = Pool()
  52.     return p.map(secant_array,
  53.                  ((5.25, il, 1e-09, 0.004, 10, 0.27456) for il in IL))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement