1
2
3
4
5
6
7
8
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
16
17
18 struc = par_structure.Rectilinear(Dx = 10000,nx = 1000)
19
20
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
28 phi = 0
29
30
31
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
39
40 plot_points = 2000
41
42
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
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
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