12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import scattnlay
- import os
- from scattnlay import fieldnlay
- import numpy as np
- class bcolors:
- HEADER = '\033[95m'
- OKBLUE = '\033[94m'
- OKGREEN = '\033[92m'
- WARNING = '\033[93m'
- FAIL = '\033[91m'
- ENDC = '\033[0m'
- BOLD = '\033[1m'
- UNDERLINE = '\033[4m'
- def is_test_coord_passed(x,m,coord):
- terms, E, H = fieldnlay(x, m, coord)
- Er = np.absolute(E)
- Eabs = np.sqrt(Er[0, :, 0]**2 + Er[0, :, 1]**2 + Er[0, :, 2]**2)
- analytic_E = (3/(m[0,0]**2+2)).real
- for value in Eabs:
-
- if ( value-analytic_E > 10e-7 ):
- print(bcolors.FAIL+"Test failed: value="+str(value)+" for m="+str(m[0,0])
- +" instead of analytic Eabs="+str(analytic_E))
- print("Coords",coord)
- return False
- return True
- def is_test_all_coord_passed(x,m):
- npts = 5
- scan = np.linspace(0.999*x[0, 0], -0.999*x[0, 0], npts)
- zero = np.zeros(npts, dtype = np.float64)
- coordZ = np.vstack((zero, zero, scan)).transpose()
- coordY = np.vstack((zero, scan, zero)).transpose()
- coordX = np.vstack((scan, zero, zero)).transpose()
- if (is_test_coord_passed(x,m,coordX)
- and is_test_coord_passed(x,m,coordY)
- and is_test_coord_passed(x,m,coordY)):
- return True
- return False
- def test_sphere():
- path = os.path.dirname(scattnlay.__file__)
- print(bcolors.HEADER+"===== Small dielectric sphere test ====="+bcolors.ENDC)
- print("Test for python module of Scattnlay: "+scattnlay.__file__)
-
- x = np.ones((1, 1), dtype = np.float64)
- x[0, 0] = 0.0001
- m = np.ones((1, 1), dtype = np.complex128)
- m[0, 0] = 1.0
- delta_m = 0.712
- for n in xrange(0,15):
- m[0,0] = 1.0 + delta_m*n
- print("Testing index m="+str(m[0,0]))
- if not is_test_all_coord_passed(x,m):
- print(bcolors.FAIL+"Test for dielectric sphere failed!"+bcolors.ENDC)
- return False
- print(bcolors.OKGREEN+"All tests for dielectric sphere passed!"+bcolors.ENDC)
- return True
- test_sphere()
|