banner

The site's hierarchy



Home page :: Private area :: Site Map :: Credits
Science / Outils statistiques / Outil de convolution d’un champ defini sur une grille 3D (module f90)

Navigation

Mar 2009
MTWTFSS
2324252627281
2345678
9101112131415
16171819202122
23242526272829
303112345
News
  • Les premiers zoom de galaxies sont accessibles
  • Le halo FOF 6133 de la boite Horizon L et le halo FOF 544 de Horizon S ont été resimulés avec plusieurs techniques de zoom. Il est important que chaque "zoomer" valide sa méthode, avant de lancer une campagne de zoom sur un plus grand cataloque.
  • Les données de la simulation Mare Nostrum sont disponibles
  • 34 snapshots jusqu’à z=4 sont accessibles sur horizon3 et sur le serveur de fichiers de l’IDRIS à la collaboration Horizon.
  • Méso Machine HPC1 opérationnelle
  • Depuis le 23 Octobre 2005, la Méso machine du site horizon est operationnelle. Elle correspond à 3 quadriprocesseurs avec chacun 64 Giga de RAM reliés par infiniband, ainsi qu’un access conséquent (sur une base de projet dédié) au reste de la ferme). Son acces est ouvert a toute personne de la collaboration ayant acces à la minigrille et qui en fait la demande a admin-minigrille
  • http://
  • Workshop Horizon le 14 et 15 novembre 2005
  • Il aura lieu à Paris les 14 et 15 novembre 2005 (prévoir une nuit sur place). L’enregistrement est ouvert dans la rubrique "meeting!"
  • http://

Outil de convolution d’un champ defini sur une grille 3D (module f90)


by Colombi Stéphane (Monday 20 March 2006)

Ce module, largement commente,

GZ - 2.2 kb

permet de convoluer un champ defini sur une grille 3D avec une fonction, dans l’espace de fourier. Cette fonction doit donc etre definie dans l’espace de fourier. Des exemples sont integres dans le module.


 !=======================================================================
 !
 ! CONTENTS :
 ! ++++++++++
 !
 ! Convolver :
 ! -----------
 !
 ! convolve : convolve a three dimensional array with a function.
 !
 ! Operators :
 ! -----------
 ! They all assume that the distance are expressed in units of grid
 ! element size.
 !
 ! gaussian_filter : gaussian smoothing window in fourier space
 ! tophat_filter : top hat smoothing window in fourier space
 ! grad3dx : operator of derivative in fourier space, along x coordinate
 ! grad3dy : operator of derivative in fourier space, along y coordinate
 ! grad3dz : operator of derivative in fourier space, along z coordinate
 ! pxk_op  : operator to find the x coordinate of the vector P verifying
 !           div(P)=field, rot(P)=0. P is a displacement field.
 ! pyk_op  : same as pxk_op but for the y coordinate of vector P
 ! pzk_op  : same as pxk_op but for the z coordinate of vector P
 !
 ! NOTE :
 ! ++++++
 !
 ! Need to install the library JMFFT (very easy).
 !
 !=======================================================================
 subroutine convolve(field,filter,nx,ny,nz,verbose,scale,message)
 !=======================================================================
 ! Convolve the array field with the function filter using JMFFT library
 ! The result is overwritten on field.
 !
 ! field(i,j,k) : array of real(kind=4), of dimension nx,ny,nz
 ! filter       : filter, complex(kind=8).  
 !                A list of possible filters can be found below.
 ! verbose      : .true. or .false., verbose mode
 ! scale        : scale in grid element size, real(kind=8), if relevant
 ! message      : a message to be printed out, characer(len=*)
 !=======================================================================
 !=======================================================================
 ! A list of possible functions to be used by convolve.
 !
 ! (xk,yk,zk) is the wave number, expressed as i/nx, j/ny, k/nz, where
 ! i,j,k are integers.
 !=======================================================================
 function gaussian_filter(xk,yk,zk)
 !=======================================================================
 ! Gaussian filter, of size scale, which is expressed in units of grid element
 ! size. The scale determines the value of twopiscale2s2=2.PI.scale^2/2
 ! which is a global module variable.
 !=======================================================================
 !=======================================================================
 function tophat_filter(kx,ky,kz)
 !=======================================================================
 ! Top hat filter, which correspond to convolving the field with a
 ! spherical top hat function of radius scale, where scale is expressed
 ! in units of grid element size.
 ! The scale determines the value of twopiscale2s2=2.PI.scale^2/2
 ! which is a global module variable.
 !=======================================================================
 !=======================================================================
 function grad3dx(xk,yk,zk)
 !=======================================================================
 ! Derivative along x coordinate in Fourier space.
 !=======================================================================
 !=======================================================================
 function grad3dy(xk,yk,zk)
 !=======================================================================
 ! Derivative along y coordinate in Fourier space.
 !=======================================================================
 !=======================================================================
 function grad3dz(xk,yk,zk)
 !=======================================================================
 ! Derivative along z coordinate in Fourier space.
 !=======================================================================
 !=======================================================================
 function pxk_op(kx,ky,kz)
 !=======================================================================
 ! Operator to solve the equation div(P)=delta, rot(P)=0 in Fourier
 ! space. Use this one to find x coordinate of P
 !=======================================================================
 !=======================================================================
 function pyk_op(kx,ky,kz)
 !=======================================================================
 ! Operator to solve the equation div(P)=delta, rot(P)=0 in Fourier
 ! space. Use this one to find y coordinate of P
 !=======================================================================
 !=======================================================================
 function pzk_op(kx,ky,kz)
 !=======================================================================
 ! Operator to solve the equation div(P)=delta, rot(P)=0 in Fourier
 ! space. Use this one to find z coordinate of P
 !=======================================================================