Example #1
0
    def createKernel( self, **kwds ):
        Qrange = self._parse( kwds['Q-range'] )
        Erange = self._parse( kwds['energy-range'] )

        from mccomponents.sample import sqekernel
        return sqekernel(
            Qrange = Qrange, Erange = Erange)
Example #2
0
 def test1(self):
     'SQEkernel'
     sqe = createSqe()
     gridsqe = ms.gridsqe( sqe )
     sqekernel = ms.sqekernel(
         1., 1., 1.,
         SQE=gridsqe,
         Qrange=(0, 12.), Erange=(-50, 50) )
     
     csqekernel = mh.scattererEngine( sqekernel )
     
     ev = mcni.neutron( r = (-5,0,0), v = (3000,0,0) )
     self.assertAlmostEqual( csqekernel.scattering_coefficient(ev), 1 )
     self.assertAlmostEqual( csqekernel.absorption_coefficient(ev), 2200./3000. )
     return
Example #3
0
    def createKernel(self, **kwds):
        Qrange = self._parse(kwds['Q-range'])
        Erange = self._parse(kwds['energy-range'])

        from mccomponents.sample import sqekernel
        return sqekernel(Qrange=Qrange, Erange=Erange)
            sqehist = sqehist[(), (None, Emax)].copy()
        hh.dump(sqehist, 'mp-sqe-%d.h5' % mpi.rank)
        journal.debug("phonon").log("computed multiphonon sqe")
        
        from mccomponents import sample
        # grid sqe
        gsqe = sample.gridsqe(sqehist)
        # q and e range
        qrange = q[0]/units.angstrom, q[-1]/units.angstrom
        erange = e[0]*units.meV, sqehist.energy[-1]*units.meV
        # kernel
        sqekernel = sample.sqekernel(
            # XXX: we may want to support more options
            # XXX: like absorption_cross_section and scattering_cross_section
            # XXX: or absorption_coefficient ...
            SQE = gsqe,
            Qrange = qrange, Erange = erange,
            absorption_cross_section = kernel.absorption_xs,
            scattering_cross_section = kernel.scattering_xs,
            )
        sqekernel.scatterer_origin = scatterer
        # 
        return sqekernel.identify(self)


    def onLinearlyInterpolatedDispersionOnGrid(self, dispersion):
        natoms = dispersion.nAtoms
        Qaxes = dispersion.Qaxes
        eps_npyarr = dispersion.eps_npyarr
        E_npyarr = dispersion.E_npyarr
        return self.factory.linearlyinterpolateddispersion(
             ('energy', e, 'meV')],
            s)
        journal.debug("phonon").log("computed multiphonon sqe")
        
        from mccomponents import sample
        # grid sqe
        gsqe = sample.gridsqe(sqehist)
        # q and e range
        qrange = q[0]/units.angstrom, q[-1]/units.angstrom
        erange = e[0]*units.meV, e[-1]*units.meV
        # kernel
        sqekernel = sample.sqekernel(
            # XXX: we may want to support more options
            # XXX: like absorption_cross_section and scattering_cross_section
            # XXX: or absorption_coefficient ...
            SQE = gsqe,
            Qrange = qrange, Erange = erange,
            absorption_cross_section = kernel.absorption_xs,
            scattering_cross_section = kernel.scattering_xs,
            )
        sqekernel.scatterer_origin = scatterer
        # 
        return sqekernel.identify(self)


    def onLinearlyInterpolatedDispersionOnGrid(self, dispersion):
        natoms = dispersion.nAtoms
        Qaxes = dispersion.Qaxes
        eps_npyarr = dispersion.eps_npyarr
        E_npyarr = dispersion.E_npyarr
        return self.factory.linearlyinterpolateddispersion(