Skip to content
Snippets Groups Projects
rotate_c_plane_nxnky_to_nkxny.m 1.90 KiB
function [ data ] = rotate_c_plane_nxnky_to_nkxny( data )
%to go from nx nky Gene representation to nkx ny HeLaZ one

kx_full  = data.kx;

ky_full  = [data.ky; -data.ky(end-1:-1:2)];

dens = data.DENS_I; temp = data.TEMP_I; phi = data.PHI;

dims = size(dens); nz = dims(3); nt = dims(4);

nkx = numel(data.kx); 
nky = numel(data.ky); 
nx  = nkx;
ny  = 2*numel(data.ky)-1;

%note, we need one extra point which we set to zero for the ifft 
dens_full                        = zeros(nx,ny,nz,nt);
dens_full(:,1:nky,:,:)           = dens(:,:,:,:);
dens_full(1,(nky+1):(ny),:,:)    = conj(dens(1,nky:-1:2,:,:));       
dens_full(2:nx,(nky+1):(ny),:,:) = conj(dens(nx:-1:2,nky:-1:2,:,:)); 
dens_full = cat(2,dens(1:data.Nkx,:,:,:),conj(dens(1:data.Nkx,end-1:-1:2,:,:)));

temp_full                        = zeros(nx,ny,nz,nt);
temp_full(:,1:nky,:,:)           = temp(:,:,:,:);
temp_full(1,(nky+1):(ny),:,:)    = conj(temp(1,nky:-1:2,:,:));       
temp_full(2:nx,(nky+1):(ny),:,:) = conj(temp(nx:-1:2,nky:-1:2,:,:)); 
temp_full = cat(2,temp(1:data.Nkx,:,:,:),conj(temp(1:data.Nkx,end-1:-1:2,:,:)));

phi_full                        = zeros(nx,ny,nz,nt);
phi_full(:,1:nky,:,:)           = phi(:,:,:,:);
phi_full(1,(nky+1):(ny),:,:)    = conj(phi(1,nky:-1:2,:,:));       
phi_full(2:nx,(nky+1):(ny),:,:) = conj(phi(nx:-1:2,nky:-1:2,:,:));
phi_full  = cat(2, phi(1:data.Nkx,:,:,:),conj( phi(1:data.Nkx,end-1:-1:2,:,:)));

data.DENS_I = dens_full(1:data.Nkx/2+1,:,:,:);
data.TEMP_I = temp_full(1:data.Nkx/2+1,:,:,:);
data.PHI    = phi_full (1:data.Nkx/2+1,:,:,:);
data.kx     = kx_full(1:data.Nkx/2+1);
data.ky     = ky_full;
data.Nkx    = numel(data.kx);
data.Nky    = numel(data.ky);
data.Nx     = nx+1;
data.Ny     = ny-1;

dkx = data.kx(2); dky = data.ky(2);
Lx = 2*pi/dkx;   Ly = 2*pi/dky;
x = linspace(-Lx/2,Lx/2,data.Nx+1); x = x(1:end-1);
y = linspace(-Ly/2,Ly/2,data.Ny+1); y = y(1:end-1);
data.x = x; data.y = y; data.Lx = Lx; data.Ly = Ly;
end