예제 #1
0
    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
예제 #4
0
 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 )
예제 #5
0
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)
예제 #6
0
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 )
예제 #7
0
    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)
예제 #8
0
 def vector_double(self, size):
     return binding.vector_double(size)
예제 #9
0
 def vector_double(self, size):
     return binding.vector_double(size)