Beispiel #1
0
    def __init__(self,
                 k,
                 p,
                 kIR=None,
                 qv=None,
                 oneloop=False,
                 shear=True,
                 third_order=True,
                 low_ring=True):

        self.oneloop = oneloop
        self.shear = shear
        self.third_order = third_order

        self.k = k
        self.p = p

        if kIR is not None:
            self.ir_less = np.exp(-(self.k / kIR)**2)
            self.ir_greater = -np.expm1(-(self.k / kIR)**2)
        else:
            self.ir_less = 1
            self.ir_greater = 0

        if qv is None:
            self.qv = np.logspace(-5, 5, 2e4)
        else:
            self.qv = qv

        self.sph = SphericalBesselTransform(self.k,
                                            L=5,
                                            low_ring=True,
                                            fourier=True)
        self.sphr = SphericalBesselTransform(self.qv,
                                             L=5,
                                             low_ring=True,
                                             fourier=False)

        self.setup_xiln()
        self.setup_2pts()

        if self.shear:
            self.setup_shear()

        if self.oneloop:
            self.setup_QR()
            self.setup_oneloop_2pts()

        if self.third_order:
            self.setup_third_order()
    def __init__(self, *args, kmin = 3e-3, kmax=0.5, nk = 100, kswitch=1e-2, jn = 5, cutoff=20, **kw):
        '''
        Same keywords and arguments as the other two classes for now.
        '''
        # Setup ffts etc.
        VelocityMoments.__init__(self, *args, third_order=True, **kw)

        self.kmin, self.kmax, self.nk = kmin, kmax, nk
        self.kv = np.logspace(np.log10(kmin), np.log10(kmax), nk); self.nk = nk
        
        self.kint = np.logspace(-5,3,4000)
        self.plin = loginterp(self.k, self.p)(self.kint)
        self.sph_gsm  = SphericalBesselTransform(self.kint,L=3,fourier=True)
        self.rint = np.logspace(-3,5,4000)
        self.rint = self.rint[(self.rint>0.1)*(self.rint<600)] #actual range of integration
        
        self.window = tukey(4000)
        self.weight =  0.5 * (1 + np.tanh(3*np.log(self.kint/kswitch)))
        self.weight[self.weight < 1e-3] = 0
        
        self.pars = np.array([0,0,0,0, 0,0,0,0, 0])
        self.peft = None
        self.veft = None
        self.s0eft = None
        self.s2eft = None
        
        self.setup_velocity_moments()