J'ai un tableau 3D de données réelles que je voudrais transformer avec soit un DST ou DCT le long d'un axe et DFT normale le long des deux autres axes. Le résultat devrait être un tableau complexe 3D contenant les coefficients de cette transformation. Savez-vous si le boîtier FFTW3 offre une telle routine - éventuellement en parallèle - prête à l'emploi? FFTW3 fournit une telle routine pour une 3D DFT simple dans les trois directions.Transformation FFTW 3D personnalisée (parallèle) possible?
Et si non, pourriez-vous avoir un indice sur la façon de le réaliser de la meilleure façon en C/C++?
Mon idée naïve: Assemblage de DST/DCT suivi d'une transformation 2D-complexe sur le premier axe à l'intérieur d'une routine d'encapsulation. Ensuite, on pourrait penser à une décomposition 1D pour atteindre le parallélisme. Un 2D serait plus agréable mais beaucoup plus de travail.
PS: Cette transformation est utilisée dans une méthode spectrale pour résoudre l'équation de Navier-Stokes.
Avez-vous regardé [FFTPACK] (http://www.netlib.org/fftpack/) (notez qu'il s'agit d'une ancienne bibliothèque Fortran, assez ancienne pour que je pense que c'était encore FORTRAN ....) –
Merci Pour votre aide. Oui, je l'ai fait. Cependant, FFTPACK est un peu plus lent que FFTW. En outre, FFTW offre déjà tous les blocs de construction pour la transformation nécessaire, il s'agit donc simplement de la manière de l'assembler. – mrdy
@DavidBowling Que voulez-vous dire par assez vieux? http://www.2decomp.org/, https://github.com/sdsc/p3dfft, ... –