20170921
8:20 11:40 2:50 + 0:30 = 3:20
Case 1
重新測試均勻流算例,發散,不知道哪里改錯了。
查看在另一臺服務器上的程序發現,昨天測試算例有誤。
cell.fT[i][j] = aTP*cell.fBP[i][j] - bTP*cell.fT[i][j] + cell.DtSlashVolume*cell.fFlux[i][j];
cell.gT[i][j] = aTP*cell.gBP[i][j] - bTP*cell.gT[i][j] + cell.DtSlashVolume*cell.gFlux[i][j];
cell.fT[i][j] = aTP*cell.fBP[i][j] - bTP*cell.fT[i][j] + 4.0*dt*cell.fFlux[i][j];
cell.gT[i][j] = aTP*cell.gBP[i][j] - bTP*cell.gT[i][j] + 4.0*dt*cell.gFlux[i][j];
昨天的算例固定cell volume為0.25,所以dt/volume = 4.0*dt,但是1、2行的內容應該注釋掉,昨天測試不發散的算例都沒有注釋1、2行,這就意味著,fT被更新了兩次,結果錯誤。
Case 2
注釋上述1、2行代碼,更新網格文件,保證格點坐標無誤差,重新測試均勻流,初始化為激波結構上游平衡態,164步之后監測點發散,與之前結果不同的是,fT, fh在46步到145值恒定為9.184982020200943e-68 ,gT, gh在52步到145值恒定為5.487069988109647e-68,之后出現振蕩,進而發散。
14:20 18:00 3:10
Case 3
Case 31 ubuntu001
- 出現振蕩的分布函數基本都位于速度空間的邊緣,絕對值較大,在更新界面通量時,并沒有乘以時間,而是在更新fT的時候將通量乘以dt/V,推測是fh乘以大數引入了機器誤差,所以將dt移到xi_n_dS中,限制與fh相乘的值。
- 跳過宏觀量更新,將xi_n_dS的值乘以小數dt,結果發散。
- 跳過宏觀量更新,修改界面法矢量求解方法,不歸一化,220步發散。
- 修改監測點。
Case 32 ubuntu002
- 跳過宏觀量更新,界面分布函數和格心分布函數設為定值,系數保持恒定,fT在160步出現振蕩,gT在219步未發生振蕩。
- 添加通量輸出函數。
- 添加監測點周圍單元fT,gT的輸出。
- 重新測試,監測點位置不佳,更換監測點(12.75,0.25,199,3)。
- 將xi_n_dS的絕對值設為1,符號保持不變,
if(xi·n >=0) 1 else -1
Case 33 ubuntu003
- 跳過通量更新,保持宏觀量更新,系數保持恒定,2500步分布函數保持恒定。
20:20 22:30