Solve bioheat transfer equation

Hello,
I want to write a code in matlab which solves bioheat transfer equation for a given heat source and other parameters. In which the source would be laser source;
ρC_ρ ∂T/∂t-κ∇^2 T=Q-Q_ρ

8 Comments

No question was asked, and you didn't specify which variable/symbol was the "given heat source" and which of the variables/symbols were the "other parameters" for which you know the values of.
If you have a question, then ask it, and attach your data and code to read it in with the paperclip icon after you read this:
thank you, Q is heat source, The temperature of tissue is T, the temperature of blood is Tb, the specific heat capacity is Cb, density of blood is Pb P is the blood perfusion, k is thermal conductivity, C is heat capacity, p is density, and Q_ρ=Pρ_b C_b (T-T_b) is for blood, and temperature changes with time is the output of equation
That's just an equation. It's like saying the Pythagorean theorem is "a^2 + b^2 = c^c. Solve it."
What is there to actually "solve" for? Which is the unknown? Do you have numerical values for any of the variables you gave, like
Q_p = 10
C_b = 14
or whatever?
This equation is to solve temperature change with time, which is T. T is the unknown.
I have:
rho_blood=1000 % kg/m³
Cp_blood=3000 % J/(kg·K)
omega_blood= 0.7 % 1/s
T_blood= 310.15 % K
eps_diel=30
eps_cat=32
f= 10e14
P_in= 12 % mw
Cp=3400 % J/(kg·K)
rho=1000 % kg/m³
k=0.4 % W/(m·K)
A= 5.5e39 % (1/s) frequency factor
dE = 2.3e5 % J/mol activation energy
sigma= 0.05 % S/m
Use "pdepe" to solve. Examples how to use the code can be found here:
You will have to specify the temporal and spatial range of integration plus the initial and boundary conditions for T.
Hi @soso,
Well, now you have given more than the number of 'parameters' .
Hi@Sam Chak, yes because some of them for other equation, you can use whatever needed in this equation
what is your external heat source? Is it from laser beam or photon fluence?

Sign in to comment.

Answers (1)

Raj Kumar
Raj Kumar on 4 Jun 2026 at 11:36
% Simulation Timing
t_final = 30.0; % Total laser exposure heating time (seconds)
dt = 0.01; % Time step size (seconds)
n_steps = ceil(t_final / dt);
% Re-verify FDM Stability Criteria using the corrected size constraints
alpha = k_cond / (rho * c_p);
stability_check = alpha * dt * (1/dx_m^2 + 1/dy_m^2 + 1/dz_m^2);
if stability_check >= 0.5
error('FDM instability detected! Decrease time-step variable dt.');
end
% Initialize Temperature Fields using the exact safe matrix sizes
T = ones(nx, ny, nz) * T_b;
T_next = T;
% Run Explicit Time-Stepping Finite Difference Loop
fprintf('Computing Transient Temperature Rise (%d steps)...\n', n_steps);
for step = 1:n_steps
% Enforce Internal Voxel 3D Conduction Laplacians
% Ignoring outer edge ghost voxels to implement simpler insulation boundary
for i = 2:nx-1
for j = 2:ny-1
for k = 2:nz-1
d2T_dx2 = (T(i+1,j,k) - 2*T(i,j,k) + T(i-1,j,k)) / dx_m^2;
d2T_dy2 = (T(i,j+1,k) - 2*T(i,j,k) + T(i,j-1,k)) / dy_m^2;
d2T_dz2 = (T(i,j,k+1) - 2*T(i,j,k) + T(i,j,k-1)) / dz_m^2;
% Pennes Equation: dT/dt = (k*Laplacian + Q_perfusion + Q_metabolic + Q_laser)/(rho*cp)
Q_perf = w_b * rho_b * c_b * (T_b - T(i,j,k));
dT_dt = (k_cond * (d2T_dx2 + d2T_dy2 + d2T_dz2) + Q_perf + Q_m + Q_laser(i,j,k)) / (rho * c_p);
T_next(i,j,k) = T(i,j,k) + dt * dT_dt;
end
end
end

Categories

Find more on Chemistry in Help Center and File Exchange

Asked:

on 11 Sep 2022

Commented:

on 4 Jun 2026 at 11:37

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!