Hello,

I am new to using meep and have a couple of questions regarding calculating the 
radar cross section response from an object. I am using the python interface to 
setup my simulation. This is my first time using this mailing list and I did 
not see any rules or guidelines for message structure, so please forgive me if 
I make any errors. Also, whenever I try and open the links for the meep mailing 
list archives, I get a 403 forbidden error "You don't have permission to access 
/pipermail/meep-discuss/ on this server." How can I go about getting access to 
the mailing list archives such that I can try and read previous discussions to 
answer some of my questions/issues.

My first issue is with the units. I am trying to use an input frequency of 8 
GHz, bandwidth of 500MHz for a cylinder that is 3 meters long and has a 
diameter of 1 meter. For converting to dimensionless units, do I just choose a 
value for a that works for my system? Say a is 1cm, then frequency = 
1/wavelength = 1/3.75 = 0.267, bandwidth would be 0.5 / 8 = 0.0625 (used in df 
calculation for GaussianSource and in Simulation.add_flux), and then cylinder 
height = 3 / 0.01 = 300 and cylinder diameter = 1 / 0.01 = 100. Is this the 
proper approach for the dimensionless units?

Second, I am trying to create to separate input sources for my simulation. One 
that has z-polarization, and one that is orthogonal to the z-polarization and 
orthogonal to the k-point vector for an oblique planewave. I have attempted to 
do this by using the EigenModeSource and setting the center, size based on the 
closest cardinal plane projection and the k_point based on the direction of 
travel. The polarization I control with component and amp_func. An example of 
my code to achieve this would look like:

# For simplicity, I assume only rotations about the z axis
import numpy as np
import meep as mp

r = 100 #radius of cylinder
h = 300 #height of cylinder
dpml = 5
dair = 10
s = 2*dpml + 2*dair + h
cell_size = mp.Vector3(s, s, s)
frq_cen = 0.267
df = frq_cen * 0.0625
resolution = 16
pml_layers = [mp.PML(thickness=dpml)]


rot_angle = 30 # rotation around the z axis, with 0 equal to the x axis, and 90 
equal to the y axis
k_point = -1 * mp.Vector3(np.cos(rot_angle), np.sin(rot_angle),  0)
# center and size are determined by which cardinal plane normal has max dot 
product with the k_point vector
# with rot_angle equal to 30, the positive x plane is the best fit
offset = s/2 - dpml
center = mp.Vector3(offset, 0, 0)
size = mp.Vector3(0, offset, offset)



if polarization == "z":
    amp_x = lambda pt : 1
    Sources = [mp .EigenModeSource(src=GaussianSource(frq_cen, fwidth=df, 
is_integrated=True),
                                                                  center=center,
                                                                  size=size,
                                                                  
direction=mp.NO_DIRECTION,
                                                                  
eig_kpoint=k_point,
                                                                  eig_band=1,
                                                                  
component=mp.Ez,
                                                                  
amp_func=amp_z,
                                                                 
eig_match_freq=True)]
else:
    # the non z polarization should be orthogonal to both the z and k_point 
vectors. Using right hand rule with z x p = +k where p is the direction of the  
polarization vector.
    amp_x = lambda pt : -np.sin(np.deg2rad(rot_angle))
    amp_y = lambda pt : np.cos(np.deg2rad(rot_angle))
    Sources = [mp .EigenModeSource(src=GaussianSource(frq_cen, fwidth=df, 
is_integrated=True),
                                                                 center=center,
                                                                 size=size,
                                                                 
direction=mp.NO_DIRECTION,
                                                                 
eig_kpoint=k_point,
                                                                 eig_band=1,
                                                                 
component=mp.Ex,
                                                                 amp_func=amp_x,
                                                                 
eig_match_freq=True)
                       mp .EigenModeSource(src=GaussianSource(frq_cen, 
fwidth=df, is_integrated=True),
                                                                 center=center,
                                                                 size=size,
                                                                 
direction=mp.NO_DIRECTION,
                                                                 
eig_kpoint=k_point,
                                                                 eig_band=1,
                                                                 
component=mp.Ey,
                                                                 amp_func=amp_y,
                                                                 
eig_match_freq=True)]


The rest of my code generally follows the tutorial for differential/radar cross 
section in the python/basics section.

In actual code, I use a dot product with my k_point (which is my propagation 
direction vector) with each of the 6 cardinal planes normal to determine which 
cardinal plane to use, instead of manually setting these variables.

Is this the proper way to set arbitrary polarizations for oblique plane waves? 
The documentation mentions using eig_parity in 2-dimensions for setting the 
polarizations of EigenModeSource but I am not sure how I can generalize 
eig_parity for the non z direction. The documentation and the code also seem to 
warn against using the component keyword argument for EigenModeSource, which 
makes me question my setup. Is there a better way to approach this, or should 
this work?

Thank you for the help,

Paul

_______________________________________________
meep-discuss mailing list
meep-discuss@ab-initio.mit.edu
http://ab-initio.mit.edu/cgi-bin/mailman/listinfo/meep-discuss

Reply via email to