def get_sample(): """ Returns a sample with cosine ripples on a substrate. The structure is modelled as a 2D Lattice. """ # defining materials m_ambience = ba.HomogeneousMaterial("Air", 0.0, 0.0) m_substrate = ba.HomogeneousMaterial("Substrate", 6e-6, 2e-8) m_particle = ba.HomogeneousMaterial("Particle", 6e-4, 2e-8) # collection of particles ripple1_ff = ba.FormFactorRipple1(100*nm, 20*nm, 4*nm) ripple = ba.Particle(m_particle, ripple1_ff) particle_layout = ba.ParticleLayout() particle_layout.addParticle(ripple, 1.0) interference = ba.InterferenceFunction2DLattice( 200.0*nm, 50.0*nm, 90.0*deg, 0.0*deg) pdf = ba.FTDecayFunction2DCauchy( 1000.*nm/2./numpy.pi, 100.*nm/2./numpy.pi) interference.setDecayFunction(pdf) particle_layout.setInterferenceFunction(interference) # assemble the sample air_layer = ba.Layer(m_ambience) air_layer.addLayout(particle_layout) substrate_layer = ba.Layer(m_substrate) multi_layer = ba.MultiLayer() multi_layer.addLayer(air_layer) multi_layer.addLayer(substrate_layer) return multi_layer
""" Plot form factors. """ import bornagain as ba from bornagain import nanometer, degree import bornplot as bp det = bp.Detector( 200, 0, 5, 0, 5 ) n = 4 results = [] for i in range(n): omega=90*i/(n-1) title = r'$\omega=%d^\circ$' % omega ff = ba.FormFactorRipple1(25*nanometer, 10*nanometer, 8*nanometer ) trafo = ba.RotationZ(omega*degree) data = bp.run_simulation(det,ff,trafo) results.append( bp.Result(i, data, title) ) bp.make_plot( results, det, "ff_Ripple1" )
ba.FormFactorAnisoPyramid(20.0, 16.0, 13.0, 60.0 * deg), ba.FormFactorBox(20.0, 16.0, 13.0), ba.FormFactorCone(10.0, 13.0, 60.0 * deg), ba.FormFactorCone6(10.0, 13.0, 60.0 * deg), ba.FormFactorCuboctahedron(20.0, 13.0, 0.7, 60.0 * deg), ba.FormFactorCylinder(8.0, 16.0), ba.FormFactorDodecahedron(5.0), ba.FormFactorEllipsoidalCylinder(8.0, 13.0, 16.0), ba.FormFactorFullSphere(8.0), ba.FormFactorFullSpheroid(10.0, 13.0), ba.FormFactorHemiEllipsoid(10.0, 6.0, 8.0), ba.FormFactorIcosahedron(8.0), ba.FormFactorPrism3(10.0, 13.0), ba.FormFactorPrism6(5.0, 11.0), ba.FormFactorPyramid(18.0, 13.0, 60.0 * deg), ba.FormFactorRipple1(27.0, 20.0, 14.0), ba.FormFactorRipple2(36.0, 25.0, 14.0, 3.0), ba.FormFactorTetrahedron(15.0, 6.0, 60.0 * deg), ba.FormFactorTruncatedSphere(5.0, 7.0), ba.FormFactorTruncatedSpheroid(7.5, 9.0, 1.2), ba.FormFactorTruncatedCube(15.0, 6.0) ] def get_sample(formfactor): """ Returns a one-layer sample that contains particles with given form factor. """ # defining materials m_ambience = ba.HomogeneousMaterial("Air", 0.0, 0.0) m_particle = ba.HomogeneousMaterial("Particle", 6e-4, 2e-8)