-
Antoine Cyril David Hoffmann authoredAntoine Cyril David Hoffmann authored
heat_flux_postproc.m 3.37 KiB
% Hflux_x = 0;
% Hflux_x = 0 * data.Ts5D;
filename = '/home/ahoffman/HeLaZ/results/shearless_cyclone/64x32x16x5x3_CBC_100/outputs_00.h5';
kernel_i = h5read(filename,'/data/metric/kernel_i');
Jacobian = h5read(filename,'/data/metric/Jacobian');
STEPS = 1:numel(data.Ts5D);
Hflux_x = 1:numel(STEPS);
its_ = 1;
for it = STEPS
t = data.Ts5D(it);
[~,it5d] = min(abs(data.Ts5D-t));
[~,it3d] = min(abs(data.Ts3D-t));
Nj = data.Jmaxi;
Nz = data.Nz; z = data.z; dz = data.z(2)-data.z(1);
kx = data.kx; ky = data.ky; Nkx = data.Nkx; Nky = data.Nky;
Jz = squeeze(Jacobian(:,1));
invjac = 1/2/pi/data.Q0;
% Factors for sum kern mom
c2n = @(n_) 0.5*sqrt(2);
c0n = @(n_) 2*n_+ 1.5;
% c0n = @(n_) 2*n_+ 2/3;
c0np1 = @(n_) -(n_+1);
c0nm1 = @(n_) -n_;
% Factors for correction operator
% dn = @(n_) -2*(n_+ 1.5);
dn = @(n_) -2*n_+ 1.5;
dnp1 = @(n_) (n_+1);
dnm1 = @(n_) n_;
% BUILD TERM TO SUM
sumkernmom = zeros(Nky,Nkx,Nz);
correct_op = zeros(Nky,Nkx,Nz);
for in = 1:Nj
n = in-1;
Kn = squeeze(kernel_i(in,:,:,:,1));
N2n = squeeze(data.Nipj(3,in ,:,:,:,it5d));
N0n = squeeze(data.Nipj(1,in ,:,:,:,it5d));
sumkernmom = sumkernmom + ...
Kn.* (c2n(n) .* N2n + c0n(n) .* N0n);
correct_op = correct_op + ...
Kn.* dn(n) .* Kn;
if(in > 1)
N0nm1 = squeeze(data.Nipj(1,in-1,:,:,:,it5d));
sumkernmom = sumkernmom + Kn.* c0nm1(n).*N0nm1;
Knm1 = squeeze(kernel_i(in-1,:,:,:,1));
correct_op = correct_op + Kn.* dnm1(n) .* Knm1;
end
if(in<Nj)
N0np1 = squeeze(data.Nipj(1,in+1,:,:,:,it5d));
sumkernmom = sumkernmom + Kn.* c0np1(n).*N0np1;
Knp1 = squeeze(kernel_i(in+1,:,:,:,1));
correct_op = correct_op + Kn.* dnp1(n) .* Knp1;
end
end
[~,KYY,ZZZ] = meshgrid(kx,ky,z);
% -- adding correction term
correction_term = data.PHI(:,:,:,it3d) .* correct_op/ data.scale;
% -- summing up
u = -1i*KYY.*data.PHI(:,:,:,it3d);
n = sumkernmom + correction_term;
clear sumkernmom correction_term correct_op KYY;
sum_kxky = conj(u).*n;
half_plane= sum_kxky;
Ny = 2*Nky-1;
sum_kxky = zeros(Ny,Nkx,Nz);
sum_kxky(1:Nky,:,:)=half_plane(:,:,:);
sum_kxky((Nky+1):(Ny),1,:)=conj(half_plane(Nky:-1:2,1,:));
sum_kxky((Nky+1):(Ny),2:Nkx,:)=conj(half_plane(Nky:-1:2,Nkx:-1:2,:));
sum_kxky = squeeze(sum(sum(sum_kxky,1),2));
% Z average
J_= 0;
q_ = 0;
for iz = 1:Nz
% add = u(1,1,iz)*n(1,1,iz)...
% +2*sum(real(u(2:Nky,1,iz).*conj(n(2:Nky,1,iz))),1)...
% +sum(2*real(u(1,2:Nkx/2+1,iz).*conj(n(1,2:Nkx/2+1,iz))) ...
% +sum(2*real(u(2:Nky,2:Nkx/2+1,iz).*conj(n(2:Nky,2:Nkx/2+1,iz)))+...
% 2*real(u(2:Nky,Nkx/2+1:Nkx,iz).*conj(n(2:Nky,Nkx/2+1:Nkx,iz))),1),2);
add = sum_kxky(iz);
if(mod(iz,2)==1)
q_ = q_ + 4 * Jz(iz)*add;
J_ = J_ + 4 * Jz(iz);
else
q_ = q_ + 2 * Jz(iz)*add;
J_ = J_ + 2 * Jz(iz);
end
end
q_ = q_/J_;
Hflux_x(its_) = real(q_);
its_ = its_ + 1;
end
%%
figure
plot(data.Ts0D,data.HFLUX_X.*data.scale); hold on;
plot(data.Ts5D(STEPS),Hflux_x.*data.scale)