alvarezcl
alvarezcl

Reputation: 579

FFT Runtime Error in Running Galsim

I keep receiving the following error when running a script to save an animation:

RuntimeError: SB Error: fourierDraw() requires an FFT that is too large, 6144
If you can handle the large FFT, you may update gsparams.maximum_fft_size.

So I went into /Galsim/include/galsim/GSparams.h

and I changed the following

maximum_fft_size(16384) from maximum_fft_size(4096)

or 2^14 from 2^12.

I still get the same error as before. Should I restart my machine or something?

Upvotes: 2

Views: 382

Answers (1)

Mike Jarvis
Mike Jarvis

Reputation: 919

That is not where to change the maximum_fft_size parameter. See demo7 for an example of how to use the GSParams object and to update parameters. There is also an example in the doc string for GSObject:

    >>> gal = galsim.Sersic(n=4, half_light_radius=4.3)
    >>> psf = galsim.Moffat(beta=3, fwhm=2.85)
    >>> conv = galsim.Convolve([gal,psf])
    >>> im = galsim.Image(1000,1000, scale=0.05)        # Note the very small pixel scale!
    >>> im = conv.drawImage(image=im)                   # This uses the default GSParams.
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "galsim/base.py", line 1236, in drawImage
        image.added_flux = prof.SBProfile.draw(imview.image, gain, wmult)
    RuntimeError: SB Error: fourierDraw() requires an FFT that is too large, 6144
    If you can handle the large FFT, you may update gsparams.maximum_fft_size.
    >>> big_fft_params = galsim.GSParams(maximum_fft_size=10240)
    >>> conv = galsim.Convolve([gal,psf],gsparams=big_fft_params)
    >>> im = conv.drawImage(image=im)                   # Now it works (but is slow!)
    >>> im.write('high_res_sersic.fits')

Upvotes: 2

Related Questions