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