Viscous energy loss
Hi, I'm trying to analyze a .vtk data set from MRI. I already calculate the kinetic energy. Now I'm trying to calculate the viscous energy loss but the result that I found does not respect the reality so I think that I'm doing something wrong.
Can someone help me with this?
%% FUNCTION
function energy_loss = calculateViscousEnergyLossForAllPhases(MRI_Velocity, dynamic_viscosity,interval)
% Preallocate the energy_dissipation array
energy_loss = zeros(1, 30);
for idx_phase = 1:30
% Velocity field
vel_x = MRI_Velocity{1, idx_phase}.velocity(:,1) * 1e-2; % Velocity in X from cm/s to m/s
vel_y = MRI_Velocity{1, idx_phase}.velocity(:,2) * 1e-2; % Velocity in Y in m/s
vel_z = MRI_Velocity{1, idx_phase}.velocity(:,3) * 1e-2; % Velocity in Z in m/s
% Coordinates
x = MRI_Velocity{1, idx_phase}.points(:,1) * 1e-3; % from mm to m
y = MRI_Velocity{1, idx_phase}.points(:,2) * 1e-3;
z = MRI_Velocity{1, idx_phase}.points(:,3) * 1e-3;
% Compute partial derivatives
dUdx = gradient(vel_x, x, 1);
dUdy = gradient(vel_x, y, 2);
dUdz = gradient(vel_x, z, 3);
dVdx = gradient(vel_y, x, 1);
dVdy = gradient(vel_y, y, 2);
dVdz = gradient(vel_y, z, 3);
dWdx = gradient(vel_z, x, 1);
dWdy = gradient(vel_z, y, 2);
dWdz = gradient(vel_z, z, 3);
% Calculate energy dissipation
ED = 2 * (dUdx.^2 + dUdy.^2 + dUdz.^2) + ...
2 * (dVdx.^2 + dVdy.^2 + dVdz.^2) + ...
2 * (dWdx.^2 + dWdy.^2 + dWdz.^2) + ...
(dUdz + dWdx).^2 + (dVdx + dUdy).^2 + (dWdy + dVdz).^2;
% Scale by dynamic viscosity of fluid and store
energy_loss(idx_phase) = sum(ED, 'all', 'omitnan') * dynamic_viscosity * interval.^3;
end
end
%% CODE
dynamic_viscosity_blood = 0.0039;
% human dynamic_viscosity_blood from 0.003 to 0.004; % Approximate value for blood at body temperature
% Call the function to calculate viscous energy loss for blood flow for all phases
energy_loss_RV_J = calculateViscousEnergyLossForAllPhases(MRI_Velocity_RV, dynamic_viscosity_blood,interval/1000);
energy_loss_LV_J = calculateViscousEnergyLossForAllPhases(MRI_Velocity_LV, dynamic_viscosity_blood,interval/1000);
% From Joule to milliwatt (mW)
energy_loss_RV_mW = energy_loss_RV_J.*1e3;
energy_loss_LV_mW = energy_loss_LV_J.*1e3;
figure
plot(time, energy_loss_RV_mW, 'r','LineWidth',1.5);
hold on
plot(time, energy_loss_LV_mW,'b','LineWidth',1.5);
title('Viscous energy loss over Cycle','FontSize',14);
xlabel('Cycle','FontSize',12);
ylabel('Viscous energy loss [mW]','FontSize',12);
legend('RV','LV')
1 Comment
Time DescendingHi @Margherita Premi, we have moved your question to MATLAB Answers here, where a wider support audience is available to help you:
Comments have been disabled.