I am currently testing scripts for volume absorption applied in CIS simulation, and facing some issues which are not so certain for me.
Here, I take reference from the examples of 2Dangular response (CMOS_angle_2D) and pabs_advanced (usr_absorption_advanced) :
When we transfer to 3D simulation, should the filter for different interested area directly changed into “interested box”:
for example, red_filter = (X >= red_x1) & (X <= red_x2) & (Y >= red_y1) & (Y <= red_y2);
transfer into : red_filter = (X >= red_x1) & (X <= red_x2) & (Y >= red_y1) & (Y <= red_y2) & (Z >= red_z1) & (Z <= red_z2); and then integrate in this interested region, and the rest of the script just turn into 3d axis? Moreover, when I change the original script in 2D (Pred = integrate(Pabspinch(red_filter),1:2,x,y)into =>
Pred = integrate2(PabsA_filter,1:3,x,y,z); without "pinch(red_filter), it works. On the other hand, if I still use the original form with “pinch” there is error message:“matrix arguments of * are not the same size.” Why does this happen? Is that due to the source in not broadband and lead to the pinch(A_filter) removing frequency dimension and cause mismatch?
For advanced method in Bloch boundaries correction, (for example, in the simulation of image sensor array for volume absorption,) :
a) Since the monitors must extend across the entire simulation region in the directions where periodic boundaries are used, if we are only interested in specific region like mentioned in 1) filters, can this correction be ignored?
(In other words, just avoid the monitors from boundaries and cover the interested regions at the same time, then determine the filter for integrate regions.)
b) In the Lumerical example, the absorption in the wavelength longer than 500nm is larger than 1, is that reasonable?