前言
如題,本章主要準(zhǔn)備講解的是:基于蒙特卡洛(MC)和pennes模型的三維生物熱傳導(dǎo)的具體理論原理和實現(xiàn)普监。預(yù)計這章寫完可以開始寫基于CUDA的GPU運算加速(大概)贵试。
附上前文鏈接:
理論
從傅里葉到pennes
在生物熱仿真(1):無生命材料的熱傳導(dǎo)簡析中提到的一維傅里葉熱傳導(dǎo)經(jīng)典公式如下:
式中假設(shè)了
是均勻的琉兜,將此式拓展到三維可得到:
其中有,并且
不一定均勻毙玻,所以上式也可寫為:
為式添加血液(blood)傳熱項
和代謝(metabolism)產(chǎn)熱項
豌蟋,得到pennes模型[1]的傳熱式:
pennes模型屬于生物傳熱的最經(jīng)典模型之一,在許多相關(guān)研究中都有用到桑滩,例如低溫外科手術(shù)方面的Lisa X[2]梧疲,腫瘤加熱治療方面的李和杰[3],在微波溫?zé)嶂委煼矫娴?em>Thamire[4]等人运准,均使用pennes模型作為傳熱仿真的理論基礎(chǔ)幌氮。
pennes模型具體說明
在pennes模型中,有:
其中為體積血液灌注率(
)宇智,對于此參數(shù)的選擇尚無特別好的結(jié)論;
為血液比熱容普筹;
為動脈血液溫度,一般可設(shè)為體核溫度(37度)隘马。
的計算依賴于具體的加熱方式太防,對于RF加熱常使用比吸收率(SAR)進(jìn)行計算;對于單純的傳導(dǎo)式加熱則可使用固定的代謝值進(jìn)行處理,例如Deng[5]使用式
作為膚下高度血管化腫瘤的代謝值酸员。
三維均勻熱傳導(dǎo)率物體的顯式差分迭代
將公式中的溫度場設(shè)定為三維溫度場蜒车,并認(rèn)為導(dǎo)熱率不變,可得到如下形式的公式:
根據(jù)公式和
幔嗦,上式可化為:
簡單整理邀泉,將常數(shù)項移到最右邊:
其中有 ,將上式如生物熱仿真(1):無生命材料的熱傳導(dǎo)簡析中進(jìn)行一樣的處理因谎,時間采用前向差分基括,空間采用中間差分,三維空間步長一致(
)财岔,并對其中無導(dǎo)數(shù)的
使用
進(jìn)行松弛风皿,則對第個時刻河爹,坐標(biāo)為
的位置的溫度迭代式為:
為了簡化上式咸这,使用如下定義:
然后可得簡化式(m為維度炊苫,現(xiàn)在m=3):
移項可得:
最后可得迭代式:
為了使所有的項的系數(shù)之和為1,從而符合MC方式的要求冰沙,對右邊提取公因式侨艾,首先設(shè)
,可將上式化為:
從式中可以看到拓挥,三維的顯式差分方程和一維差別不算很大唠梨,由s時刻的該位置和周圍位置的溫度,可以計算s+1時刻的溫度侥啤;另外当叭,基于pennes模型,多考慮了一項
來代表代謝產(chǎn)熱和血流散熱的影響盖灸,更加適用于生物傳熱場景蚁鳖。
當(dāng)令 時,有
赁炎,上式會回歸為工程傳熱的三維公式醉箕,可見pennes模型和傳統(tǒng)模型是完全兼容的。
顯式差分的問題
使用MC方式計算式徙垫,首先需要計算概率讥裤,各個位置的概率如下:
- 原位置:
- 鄰居位置:
松弛因子為,熱擴散率
姻报,則有:
為了維持差分穩(wěn)定性吴旋,需要滿足损肛,由于
常常小于1,所以只需要滿足
即可荣瑟。
所以穩(wěn)定性條件為:荧关, 當(dāng)
較小時,
會被次方級的限制至一個非常小的空間褂傀。
例如,若我們使用的空間步長加勤,則有
隱式差分的迭代式
由于顯式已經(jīng)推導(dǎo)過仙辟,推導(dǎo)過程類似同波,迭代式為:
然而,雖然隱式差分能克服一定的穩(wěn)定性問題叠国,但由于本身需要聯(lián)立求解未檩,對于多線程加速十分不友好。
P.S. 補充一個穩(wěn)定性分析
只要所有系數(shù)都大于0即可滿足MC方法下的穩(wěn)定性粟焊,即
在
時,恒滿足
恒滿足
所以穩(wěn)定性條件可化為
在
時冤狡,有
可見由于不依賴于
,
的取值空間得到了很大的改善
基于蒙特卡洛的求解思路-隨機游走
在調(diào)研了許多論文之后项棠,發(fā)現(xiàn)基于MC思路求解的方法往往基于隨機游走(Random Walk)進(jìn)行實現(xiàn)悲雳,其核心思路在于基于統(tǒng)計方法獲取內(nèi)部點和邊界點/初始點的溫度關(guān)系,從而實現(xiàn):邊界點迭代->內(nèi)部點跟隨進(jìn)行變化 這樣的過程香追。優(yōu)勢在于便于并行計算合瓢,計算量相對小等[6]。但是透典,其概率的計算仍然基于有限差分晴楔,所以仍然需要滿足有限差分的穩(wěn)定性條件。
代碼實現(xiàn)
隨機游走算法描述
為了提高差分穩(wěn)定性峭咒,此處使用隱式形式的差分税弃。
//計算(x,y,z)位置, n次隨機游走的結(jié)果
double MonteCarlo::computeTempWithRandomWalk(int x, int y, int z, int n)
{
// 計算各個方向的概率
std::vector<double> probs = this->computeProbs(x,y,z);
std::vector<double> interval = GlobalFun::getProbsInterval(probs);
std::vector<std::vector<int>> neighs;
GlobalFun::getNeighPos({x,y,z}, neighs, this->shape->getSize().toVectorInt());
// 開始迭代
int N = (n < 1) ? 1 : n;
double result = 0.0;
std::vector<int> cur_pos = {x, y, z};
srand((unsigned)time(NULL));
//判斷狀態(tài),流體不更新溫度
if(this->shape->getState(x,y,z)==ShapeState::FLUENT){
result = this->temp_3d[x][y][z];
} else {
for (int i = 0; i < N; ++i) {
for (int s=0; s<this->curr_iterate_time; ++s) {
double rand_prob = rand() / double(RAND_MAX);
for(int neigh_idx=0; neigh_idx<neighs.size(); ++neigh_idx){
if(rand_prob>=interval[neigh_idx] && rand_prob<=interval[neigh_idx+1]){
cur_pos = neighs[neigh_idx];
}
}
}
result += this->temp_3d[cur_pos[0]][cur_pos[1]][cur_pos[2]];
}
result /= N;
//判斷鄰居凑队,如果為流體的鄰居则果,則使用牛頓冷卻定律先進(jìn)行低精度仿真
for(std::vector<int> neigh : neighs){
if(this->shape->getState(neigh[0],neigh[1],neigh[2])==ShapeState::FLUENT){
double delta_temp = this->temp_3d[x][y][z] - this->fluent_value;
if(delta_temp > 0.0){
result -= this->k*delta_temp*this->step;
}
}
}
}
return result;
}
引用
-
劉 靜,王存誠顽决,等.生物傳熱學(xué)[M].北京:科學(xué)出版社.1997 ?
-
Xu LX短条,Zhang At.,Sandison GA才菠,et al.A microscale model for prediction of the breast cancer cell damage during cryosurgery[C].ASME Summer Heat Transfer Conference茸时,July 20—23,2003 ?
-
李和杰赋访,劉 靜可都,張學(xué)學(xué),等.激光汽化活體生物組織的傳熱過程分析[J].航天醫(yī)學(xué)與醫(yī)學(xué)工程蚓耽,2002渠牲,1(2):103—107. ?
-
Thamire CS.Bellary S.A numerical,study of microwave thermotherapy for benign prostatic hyperplasia [C]. ASME Summer Heat Transfer Co nference,July 20—23步悠,2003 ?
-
Deng Z, Liu J. MONTE CARLO METHOD TO SOLVE MULTIDIMENSIONAL BIOHEAT TRANSFER PROBLEM[J]. Numerical Heat Transfer Part B-fundamentals, 2002, 42(6): 543-567. ?
-
王輝, 吳建國. 生物傳熱學(xué)及其醫(yī)學(xué)應(yīng)用[J]. 同濟大學(xué)學(xué)報:醫(yī)學(xué)版, 2004, 025(002):159-162. ?