Package reflectometry :: Package model3d :: Module isigsax_chuck_comparison

Source Code for Module reflectometry.model3d.isigsax_chuck_comparison

 1  #%Christopher Metting
 
 2  #%Starting Date: 4/14/2008
 
 3  #%Re-evaluation of the formula from scratch. Paul's redo
 
 4  
 
 5  #%Christopher Metting
 
 6  #%Starting Date: 4/14/2008
 
 7  #%Re-evaluation of the formula from scratch. Paul's redo
 
 8  #clear all;
 
 9  import par_form,par_structure,plotting,BornModel,GSAXS_orthaganal 
10  
 
11  from numpy import array, sum, linspace, zeros, sqrt, exp, log10,shape,size,abs,max,pi,min 
12  
 
13  
 
14  
 
15  #%*************************Lattice Description***************************
 
16  #%Required known information for features made of one materials
 
17  
 
18  struc = par_structure.Rectilinear(Dx = 10000,nx = 1000) 
19  
 
20  #%*************************Feature Description***************************
 
21  
 
22  depth = array([2450,200],'d') 
23  SLD = array([2.265e-5,2.265e-6],'d') 
24  depth,SLD = depth[0:size(depth)],SLD[0:size(depth)] 
25  
 
26  feature_form = par_form.Parallelapiped(37000,37000,depth,SLD) 
27  #%sample rotation (rotation)
 
28  phi = 0 
29  
 
30  
 
31  #%%*************************Substrate Description****************************
 
32  thickness = array([50000],'d') 
33  SLD_sub = array([2.265e-5],'d') 
34  thickness,SLD_sub = thickness[0:size(thickness)],SLD_sub[0:size(thickness)] 
35  
 
36  substrate_form = par_form.Substrate(struc.Dx,struc.Dy,thickness,SLD_sub) 
37  
 
38  #%*************************Plot Parameters*************************
 
39  #%plotting information
 
40  plot_points = 2000 
41  
 
42  #%plotting Parameters
 
43  maxqx = 0.0020 
44  maxqy = 0.009 
45  maxqz = 0.12 
46  qx = linspace(-maxqx,maxqx,plot_points+1) 
47  qz = linspace(1.0e-6,maxqz,plot_points-1) 
48  qy = zeros(1,'d') 
49  
 
50  #this is to test Chucks formula
 
51  type = 'parallelepiped' 
52  
 
53  [feature,sub] = par_form.form_loop(feature_form,substrate_form,qx,qy,qz) 
54  scatter_contrib = BornModel.BornModel(par_structure.structure_loop(qx,qy,qz,struc),feature,sub) 
55  intensity_chuck = (BornModel.calculate(scatter_contrib,qx,qy,qz)) 
56  
 
57  
 
58  #the following two pieces allows for shape comparisons
 
59  
 
60  type = 'parallelepiped' 
61  
 
62  [feature,sub] = GSAXS_orthaganal.form_loop(type,feature_form,substrate_form,qx,qy,qz) 
63  scatter_contrib = BornModel.BornModel(par_structure.structure_loop(qx,qy,qz,struc),feature,sub) 
64  intensity_Gparallel = BornModel.calculate(scatter_contrib,qx,qy,qz) 
65  
 
66  type = 'prism_3' 
67  
 
68  [feature,sub] = GSAXS_orthaganal.form_loop(type,feature_form,substrate_form,qx,qy,qz) 
69  scatter_contrib = BornModel.BornModel(par_structure.structure_loop(qx,qy,qz,struc),feature,sub) 
70  intensity_Gprism = BornModel.calculate(scatter_contrib,qx,qy,qz) 
71  
 
72  type = 'cylinder' 
73  
 
74  [feature,sub] = GSAXS_orthaganal.form_loop(type,feature_form,substrate_form,qx,qy,qz) 
75  scatter_contrib = BornModel.BornModel(par_structure.structure_loop(qx,qy,qz,struc),feature,sub) 
76  intensity_Gcylinder = BornModel.calculate(scatter_contrib,qx,qy,qz) 
77  
 
78  diff_intensity =((intensity_chuck*(4*pi/(.08*37000**2))**2-intensity_Gparallel))/intensity_Gparallel 
79  
 
80  print min(intensity_chuck),max(intensity_chuck) 
81  print min(intensity_Gparallel),max(intensity_Gparallel) 
82  print min(diff_intensity),max(diff_intensity) 
83  plotting.two_Dim_with_z_slice(qx,qz,diff_intensity,plot_points,maxqz) 
84