def gridsqe(self, qbegin, qend, qstep, ebegin, eend, estep, s ): '''gridsqe: S(Q,E) on grid qbegin, qend, qstep: Q axis ebegin, eend, estep: E axis s: numpy array of S ''' shape = s.shape assert len(shape) == 2 assert shape[0] == int( (qend-qbegin)/qstep +0.5 ), ( 'qend: %s, qbegin: %s, qstep: %s, shape0: %s' % ( qend, qbegin, qstep, shape[0]) ) assert shape[1] == int( (eend-ebegin)/estep +0.5 ) size = shape[0] * shape[1] svector = b.vector_double( size ) saveshape = s.shape s.shape = -1, svector[:] = s s.shape = saveshape fxy = b.new_fxy( qbegin, qend, qstep, ebegin, eend, estep, svector) return b.GridSQE( fxy )
def testCompositeScatteringKernel(self): 'CompositeScatteringKernel' shape = mccompositebp.Block(1, 1, 1) from neutron_printer3 import cKernel as Printer printer = Printer() kernels = mccomponentsbp.pointer_vector_Kernel(0) kernels.append(printer) weights = mccomponentsbp.vector_double(0) weights.append(1.) average = False kernelcomposite = mccomponentsbp.CompositeScatteringKernel( kernels, weights, average) mcweights = mccomponentsbp.MCWeights_AbsorptionScatteringTransmission() scatterer = mccomponentsbp.HomogeneousNeutronScatterer( shape, kernelcomposite, mcweights) for i in range(10): ev = mcni.neutron(r=(0, 0, -5), v=(0, 0, 1)) scatterer.scatter(ev) continue return
def testCompositeScatteringKernel(self): 'CompositeScatteringKernel' shape = mccompositebp.Block(1,1,1) from neutron_printer3 import cKernel as Printer printer = Printer( ) kernels = mccomponentsbp.pointer_vector_Kernel(0) kernels.append( printer ) weights = mccomponentsbp.vector_double(0) weights.append(1.) rotmats = mccomponentsbp.vector_rotmat(0) rotmat = mcnibp.RotationMatrix_double(1,0,0, 0,1,0, 0,0,1) rotmats.append(rotmat) average=False kernelcomposite = mccomponentsbp.CompositeScatteringKernel( kernels, weights, rotmats, average) mcweights = mccomponentsbp.MCWeights_AbsorptionScatteringTransmission() scatterer = mccomponentsbp.HomogeneousNeutronScatterer( shape, kernelcomposite, mcweights ) for i in range(10): ev = mcni.neutron( r = (0,0,-5), v = (0,0,1) ) scatterer.scatter(ev) continue return
def linearlyinterpolateddos( self, e0, de, n, Z): '''create boost python object of LinearlyInterpolatedDOS e0: minimum phonon energy. float de: phonon energy step. float n: number of points. Z: values of DOS at the energy points defined by (e0, de, n) ''' Z1 = b.vector_double( n ) for i in range(n): Z1[i] = Z[i] return b.LinearlyInterpolatedDOS_dbl( e0, de, n, Z1 )
def gridsqe(self, qbegin, qend, qstep, ebegin, eend, estep, s): shape = s.shape assert len(shape) == 2 assert shape[0] == int((qend - qbegin) / qstep) assert shape[1] == int((eend - ebegin) / estep) size = shape[0] * shape[1] import mccomponents.mccomponentsbp as b svector = b.vector_double(size) s.shape = -1, svector[:] = s fxy = b.new_fxy(qbegin, qend, qstep, ebegin, eend, estep, svector) return b.GridSQE(fxy)
def gridsqe(self, qbegin, qend, qstep, ebegin, eend, estep, s ): shape = s.shape assert len(shape) == 2 assert shape[0] == int( (qend-qbegin)/qstep ) assert shape[1] == int( (eend-ebegin)/estep ) size = shape[0] * shape[1] import mccomponents.mccomponentsbp as b svector = b.vector_double( size ) s.shape = -1, svector[:] = s fxy = b.new_fxy( qbegin, qend, qstep, ebegin, eend, estep, svector) return b.GridSQE( fxy )
def gridsqe(self, qbegin, qend, qstep, ebegin, eend, estep, s): '''gridsqe: S(Q,E) on grid qbegin, qend, qstep: Q axis ebegin, eend, estep: E axis s: numpy array of S ''' shape = s.shape assert len(shape) == 2 assert shape[0] == int((qend - qbegin) / qstep + 0.5), ( 'qend: %s, qbegin: %s, qstep: %s, shape0: %s' % (qend, qbegin, qstep, shape[0])) assert shape[1] == int((eend - ebegin) / estep + 0.5) size = shape[0] * shape[1] svector = b.vector_double(size) saveshape = s.shape s.shape = -1, svector[:] = s s.shape = saveshape fxy = b.new_fxy(qbegin, qend, qstep, ebegin, eend, estep, svector) return b.GridSQE(fxy)
def vector_double(self, size): return binding.vector_double(size)