Difference between revisions of "Matlab based temperature solver"
Line 3: | Line 3: | ||
=== What this code does === | === What this code does === | ||
− | This Matlab | + | This is a Crank-Nicholson Matlab-based temperature solver. The code mixed spatial and temporal finite differences using the Crank-Nicholson scheme. Non-homogeneous tissues properties (including tissue perfusion, thermal conductivity and heat capacity) are supported. The code is fully validated by comparison with the SEMCAD temperature solver. Two solve options are available: Transient temperature and steady-state calculations. |
=== Download files === | === Download files === | ||
− | The code can be downloaded [https://ptx.martinos.org/ | + | The code can be downloaded [https://ptx.martinos.org/index.php/File:PennesBioHeatSolver_LITE.zip here]. |
=== Instructions === | === Instructions === | ||
− | ==== | + | ==== Transient simulation ==== |
− | + | To run a simple example, go to the sub-folder SEMCAD_validation/Simu_1_Results and run the script "semcad_vs_pbhs.m". This runs a comparison of the transient solver with SEMCAD. This script should make it clear how the code is run. The input to the code are, in this order: | |
− | + | *T0: The initial temperature map (can be non-uniform) in K | |
− | * | + | *DUR: The total duration of the simulation in s |
− | * | + | *[dx dy dz]: A 1x3 Matlab vector with the x, y and z spatial resolutions in m |
− | + | *RHO: The density map (can be non-uniform) in kg/m^3 | |
− | ==== | + | *C: The heat capacity map (can be non-uniform) in J/kg/K |
− | + | *K: The thermal conductivity map (can be non-uniform) in W/m/K | |
+ | *Wb: The blood perfusion map (can be non-uniform) in kg/s/m^3 | ||
+ | *Cb: The blood heat capacity in J/kg/K | ||
+ | *Tb: The blood temperature in K | ||
+ | *Q: The heat rate generation map (i.e., SAR*RHO which can be non-uniform) in W/m^3 | ||
+ | |||
+ | ==== Steady state simulation ==== | ||
+ | To run a simple example of the steady-state simulation, go to the TEST_SteadyState/ folder and run "TEST_SS.m". Again, the way to run the code should be straightforward. The input to the steady-state function are similar to the input to the transient solve function, except obviously the duration is not needed. |
Revision as of 14:10, 15 April 2016
Citation
Guérin B, Gebhardt M, Cauley S, Adalsteinsson E, Wald LL (2014). "Local specific absorption rate (SAR), global SAR, transmitter power, and excitation accuracy trade‐offs in low flip‐angle parallel transmit pulse design." Magnetic Resonance in Medicine 71(4): 1446-1457.
What this code does
This is a Crank-Nicholson Matlab-based temperature solver. The code mixed spatial and temporal finite differences using the Crank-Nicholson scheme. Non-homogeneous tissues properties (including tissue perfusion, thermal conductivity and heat capacity) are supported. The code is fully validated by comparison with the SEMCAD temperature solver. Two solve options are available: Transient temperature and steady-state calculations.
Download files
The code can be downloaded here.
Instructions
Transient simulation
To run a simple example, go to the sub-folder SEMCAD_validation/Simu_1_Results and run the script "semcad_vs_pbhs.m". This runs a comparison of the transient solver with SEMCAD. This script should make it clear how the code is run. The input to the code are, in this order:
- T0: The initial temperature map (can be non-uniform) in K
- DUR: The total duration of the simulation in s
- [dx dy dz]: A 1x3 Matlab vector with the x, y and z spatial resolutions in m
- RHO: The density map (can be non-uniform) in kg/m^3
- C: The heat capacity map (can be non-uniform) in J/kg/K
- K: The thermal conductivity map (can be non-uniform) in W/m/K
- Wb: The blood perfusion map (can be non-uniform) in kg/s/m^3
- Cb: The blood heat capacity in J/kg/K
- Tb: The blood temperature in K
- Q: The heat rate generation map (i.e., SAR*RHO which can be non-uniform) in W/m^3
Steady state simulation
To run a simple example of the steady-state simulation, go to the TEST_SteadyState/ folder and run "TEST_SS.m". Again, the way to run the code should be straightforward. The input to the steady-state function are similar to the input to the transient solve function, except obviously the duration is not needed.