:從零配置到跑通首個算例)
FLUKA 這款軟件做輻射防護和粒子輸運的人應(yīng)該都不陌生。它和 MCNP、Geant4 并列為蒙特卡羅模擬工具里的老牌主力在加速器屏蔽設(shè)計、醫(yī)學物理、空間劑量評估這些方向都有大量應(yīng)用。問題是對很多剛接觸它的人來說第一步不是學會寫輸入卡片而是先把軟件在 Linux 上裝起來。我過去幫學生配過不少次環(huán)境也見過很多人卡在各種奇怪的報錯上最后連程序都沒跑起來就放棄了。這篇筆記基于我在 Ubuntu 20.04/22.04 上的完整安裝過程所有命令都實際操作驗證過按照步驟復(fù)制即可如果你想長線用 FLUKA 做計算我也把環(huán)境變量、配套 GUI、驗證方法這些細節(jié)一并寫了。我不打算講太多空泛的“蒙特卡羅原理”而是直接把你需要敲的命令、需要改的文件和需要避開的坑鋪開講。從一個從業(yè)者的角度說安裝這類科學計算軟件最核心的就三件事依賴環(huán)境是否齊全、路徑變量是否配置正確、能不能跑通一個官方自帶的測試算例。只要這三件事過關(guān)后面出問題的概率會小很多。1. 安裝前的準備工作別急著下載先把系統(tǒng)底子打好1.1 確認你的 Ubuntu 版本和系統(tǒng)架構(gòu)FLUKA 官方目前主要提供 64 位 Linux 版本理論上支持 Ubuntu 18.04 到 24.04 這些主流發(fā)行版實測下來 20.04 和 22.04 都得很順利。如果你用的是 24.04需要注意系統(tǒng)默認的 Python 版本已經(jīng)是 3.12對后面裝 Flair 或關(guān)聯(lián)工具會有一些影響但不影響 FLUKA 核心程序運行。首先確認你的系統(tǒng)信息uname -m正常情況下輸出是x86_64。如果你是在 ARM 架構(gòu)的機器上裝 Ubuntu比如某些開發(fā)板或者 Apple Silicon 虛擬機里跑的 ARM Linux那么你需要去官方下載頁面確認有沒有對應(yīng)的 ARM 架構(gòu)二進制包。我個人的建議是能用 x86_64 就跑 x86_64不要自己折騰源碼交叉編譯FLUKA 的構(gòu)建體系對新手并不友好。接著確認你的 Ubuntu 版本lsb_release -a1.2 一次性裝齊編譯器和基礎(chǔ)依賴FLUKA 本身雖然是預(yù)編譯好的二進制但它外層的運行腳本、配套工具和后續(xù)的幾何建模工具仍然依賴不少系統(tǒng)組件。我在第一次安裝時犯過一個低級錯誤只等著下載官方包結(jié)果運行腳本時報了一堆“找不到解釋器”“找不到命令”的錯后來才發(fā)現(xiàn)原來 tcsh 和 gfortran 沒裝。執(zhí)行下面這組命令把常見依賴一口氣裝完sudo apt update sudo apt upgrade -y sudo apt install -y tcsh perl make gcc g gfortran python3 python3-pip python3-tk libxm4 libxpm-dev libxft-dev libxext-dev解釋一下這些包的作用tcshFLUKA 的rfluka啟動腳本默認依賴 C Shell 語法如果沒裝 tcsh會報/bin/sh: bad interpreter或者類似錯誤。gfortran雖然官方二進制不需要你自己編譯 Fortran但某些輔助工具和擴展程序運行時需要 Fortran 運行時庫。libxpm-dev libxft-dev libxext-dev后面裝 Flair 或者某些圖形界面工具時會用到提前裝好省得再來一次。注意不要在這一步跳過tcsh。網(wǎng)上不少教程默認你的系統(tǒng)已經(jīng)有 C Shell但 Ubuntu 默認是沒有的。這個坑幾乎每個人都會踩一次。1.3 申請 FLUKA 下載權(quán)限和版本選擇FLUKA 的下載機制和普通開源軟件不太一樣它需要通過官方渠道提交申請審核通過后會給你一個下載鏈接。整個注冊流程比較簡單只需要提供工作郵箱和單位信息審核周期一般在一個工作日內(nèi)。我建議你直接去 FLUKA 官網(wǎng)提交下載請求拿到壓縮包后再回來繼續(xù)。不建議在第三方網(wǎng)盤或者論壇上找別人轉(zhuǎn)載的二進制包一來無法確認是否被篡改二來版本可能非常老舊缺少官方最近的修復(fù)和物理模型更新。FLUKA 目前主流版本是 4 系列你拿到的壓縮包可能是fluka-4-x.y.tar.gz這樣的命名解壓后具體版本號會有差異但安裝邏輯完全一樣。2. FLUKA 核心程序安裝從解壓到環(huán)境變量配置2.1 選擇安裝目錄并解壓官方壓縮包解壓后是一個獨立的目錄理論上放在任何位置都能運行。但考慮到后面寫輸入文件、跑算例都會生成大量文件我的建議是單獨建一個軟件目錄不要直接扔在~/Downloads里避免誤刪或者路徑混亂。下面是我常用的目錄結(jié)構(gòu)mkdir -p ~/opt cd ~/opt tar -xzf ~/Downloads/fluka-4-x.y.tar.gz ls -l解壓后你會看到一個以版本號命名的目錄比如fluka-4-3.0。為了后續(xù)配置環(huán)境變量方便我習慣于把它重命名成簡潔的FLUKAmv fluka-4-3.0 FLUKA2.2 配置 FLUPRO 環(huán)境變量FLUKA 運行時會通過環(huán)境變量FLUPRO查找自己的主目錄、示例文件、編譯好的可執(zhí)行程序。也就是說FLUPRO必須指向你剛才解壓出來的那個目錄否則運行腳本會一直報“找不到文件”。打開.bashrc文件vim ~/.bashrc在文件末尾追加export FLUPRO$HOME/opt/FLUKA export PATH$PATH:$FLUPRO/flutil:$FLUPRO/bin然后讓配置立刻生效source ~/.bashrc驗證路徑是否設(shè)置正確echo $FLUPRO如果輸出/home/你的用戶名/opt/FLUKA就說明這一步已經(jīng)完成了。提示有些教程會讓你在/etc/profile或者/etc/environment里配置全局環(huán)境變量我建議不要這么做。一方面把個人軟件路徑放到系統(tǒng)級配置里會讓其他用戶也看到另一方面后續(xù)如果換版本、改目錄還要動系統(tǒng)文件非常不靈活。寫在用戶級.bashrc里最合理。2.3 source 初始化腳本FLUKA 自帶一個初始化腳本通常在安裝目錄下的flutil/fluka-init或者類似位置。這個腳本會幫你把 PATH、LD_LIBRARY_PATH 等變量都整理好省得你自己一個個去 export。不同小版本之間這個腳本的名字可能略有差異以官網(wǎng)文檔為準。我這里是常見版本的做法source $FLUPRO/flutil/fluka-init如果你希望以后每次打開終端都自動加載可以把這行也寫入.bashrcecho source $FLUPRO/flutil/fluka-init ~/.bashrc不過要提醒一下如果你同時寫入了export FLUPRO和source fluka-init那么.bashrc中這兩行的順序不要弄反。必須先定義FLUPRO再執(zhí)行初始化腳本否則腳本里引用的$FLUPRO是空的。2.4 驗證核心程序是否可用安裝完成的標志是rfluka命令可以被系統(tǒng)找到。執(zhí)行which rfluka如果輸出類似~/opt/FLUKA/flutil/rfluka的路徑就說明命令已經(jīng)進入 PATH接下來可以開始測試運行了。3. Flair 圖形界面安裝與聯(lián)調(diào)讓復(fù)雜輸入文件不再勸退新手3.1 Flair 和 FLUKA 的關(guān)系FLUKA 核心程序本身是個命令行工具你輸入的是一份純文本的卡片文件.inp文件。但這套卡片語法比較繁瑣尤其是幾何定義部分稍不注意就寫錯一個坐標然后整個模型就廢了。Flair 是 FLUKA 官方配套的圖形界面工具可以幫你編輯輸入文件、檢查卡片格式、查看幾何結(jié)構(gòu)、提交計算任務(wù)并可視化結(jié)果。用一句不嚴謹?shù)美斫獾脑拋碚fFLUKA 是發(fā)動機Flair 是儀表盤。發(fā)動機不裝好儀表盤再漂亮也沒用但如果只是偶爾跑一兩個簡單算例只裝核心程序也可以。我個人的建議是新手一開始就把 Flair 裝好因為它的幾何預(yù)覽和卡片自動補全功能能省掉大量低級錯誤。3.2 Python 依賴和 Flair 安裝Flair 是用 Python 寫的所以需要先確認 Ubuntu 里 Python3 環(huán)境正常python3 --version接下來安裝 Python 包依賴。由于 Ubuntu 對系統(tǒng)級 Python 環(huán)境做了權(quán)限管理我強烈建議用虛擬環(huán)境或者--user方式安裝不要直接用 sudo pip 往系統(tǒng)目錄里寫pip3 install --user numpy matplotlibFlair 本身可以從 FLUKA 官方下載頁面拿到對應(yīng)的發(fā)行包一般是一個壓縮包解壓后是一個放在哪都能運行的目錄。官網(wǎng)經(jīng)常提供預(yù)打包版本優(yōu)先選擇預(yù)打包版本省去自己編譯依賴的麻煩。解壓后建議把 Flair 目錄也放進 PATHexport PATH$PATH:$HOME/opt/flair然后在終端里嘗試啟動flair如果能彈出一個圖形窗口說明核心依賴沒有問題。3.3 在 Flair 中指定 FLUKA 路徑第一次打開 Flair 時它不一定能自動找到 FLUKA 的根目錄。你需要在界面的設(shè)置項里手動指定FLUPRO路徑和 FLUKA 版本號。具體操作路徑根據(jù)版本略有不同但一般都在“Settings”或者“Configuration”里。設(shè)置好后Flair 會讀取 FLUKA 自帶的物理模型數(shù)據(jù)這樣你才能在圖形界面中正確分析輸入卡片。如果你是在本地 Ubuntu 上安裝Flair 直接打開、直接改文件、直接提交作業(yè)就可以。真正需要留意的是遠程服務(wù)器場景下面我會專門說一下。3.4 Ubuntu 24.04 的特殊處理Ubuntu 24.04 默認 Python 3.12 移除了distutils這本來不是什么大問題但某些版本的 Flair 依賴包在安裝時仍會對distutils做檢查導(dǎo)致安裝中斷。如果你遇到這類提示可以先裝一個兼容層sudo apt install -y python3-setuptools然后再重試 pip 安裝。這個坑在 20.04 和 22.04 上不會遇到但我在 24.04 上實測時就碰上了記錄下來提醒大家。4. 跑通第一個算例用官方示例驗證安裝是否真正可用4.1 準備一個運行目錄FLUKA 運行時會生成一堆中間文件包括輸入文件的拷貝、輸出文件、二進制結(jié)果文件等。我強烈建議每個算例都單獨建一個工作目錄不要把運行文件直接放在$FLUPRO下面否則時間一長軟件目錄會被各種臨時文件搞得亂七八糟。mkdir -p ~/flukarun/test01 cd ~/flukarun/test014.2 復(fù)制并運行官方示例FLUKA 壓縮包內(nèi)的examples目錄自帶多個示例輸入文件這些文件覆蓋了不同物理場景是驗證安裝最可靠的選擇。你不需要自己從零寫輸入卡片因為那反而可能因為卡片格式問題干擾你對“安裝是否成功”的判斷。ls $FLUPRO/examples/從列表里挑一個簡單的.inp文件復(fù)制到工作目錄然后運行cp $FLUPRO/examples/xxx.inp . rfluka xxx.inp其中xxx.inp是你選中的示例文件名字。FLUKA 默認會讀取當前目錄下所有需要的資源如果一切正常終端會刷出大量運行日志。4.3 如何判斷運行是否成功運行結(jié)束后當前目錄會出現(xiàn)多個文件最需要關(guān)注的是.out文件和.bnn文件。.out是標準輸出記錄了整個模擬過程的關(guān)鍵信息.bnn是二進制結(jié)果文件后面用 Flair 查看劑量分布都要靠它。判斷是否成功最簡單的辦法是看日志最后幾行tail -n 30 xxx001.out注意FLUKA 的輸出文件名會在輸入文件名后自動追加三位數(shù)字類似xxx001.out。如果正常結(jié)束日志末尾通常會出現(xiàn)“Run terminated”或者類似的結(jié)束標志如果中途崩潰日志會停在某個錯誤信息附近并伴有大量的問號提示。4.4 多線程加速參數(shù)說明跑測試算例時默認單線程就夠了但如果后續(xù)要跑實際物理模型建議利用多核 CPUrfluka -N 4 xxx.inp-N 4表示同時跑 4 個循環(huán)cycles一般取 CPU 核心數(shù)即可。需要注意的是FLUKA 的多線程機制是把不同循環(huán)分發(fā)給多個任務(wù)并行而不是像 OpenMP 那樣共享內(nèi)存并行。如果你的服務(wù)器有 16 個物理核心-N 16是可行的但如果你的機器本身還跑著其他任務(wù)建議留幾個核心給系統(tǒng)和其他進程。5. 我踩過的坑FLUKA 安裝與運行常見問題速查5.1 環(huán)境變量不生效每次都要重新 source癥狀終端里執(zhí)行rfluka提示command not found但明明剛才還能運行。原因你把export FLUPRO寫在了一個臨時終端窗口里并沒有寫進.bashrc或者寫入后沒有重新加載。解決source ~/.bashrc如果仍然找不到命令檢查是否在.bashrc里寫了export FLUPRO之后再寫source $FLUPRO/flutil/fluka-init順序錯誤會導(dǎo)致后面一行里的$FLUPRO是空的。5.2 運行報錯找不到 tcsh 或 bad interpreter癥狀rfluka一執(zhí)行就報錯提示解釋器有問題。原因Ubuntu 默認沒有安裝 tcsh而 FLUKA 的啟動腳本引用了 C Shell 語法。解決回到上面第 1.2 節(jié)執(zhí)行sudo apt install -y tcsh這類問題不會在官方文檔里被反復(fù)強調(diào)因為幾乎所有科學計算 Linux 環(huán)境都會預(yù)裝但普通的 Ubuntu 桌面版就是沒有。5.3 運行中途報錯找不到 gfortran 相關(guān)庫癥狀程序已經(jīng)在跑了但某個輔助模塊突然報錯提示找不到libgfortran.so。原因使用了某些需要 Fortran 運行時的輔助工具但系統(tǒng)沒裝 gfortran。解決sudo apt install -y gfortran裝完后再重跑一次即可。嚴格來說這不一定發(fā)生在安裝階段而是在后續(xù)編譯用戶自定義的輔助程序時更常見反正提前裝好不會有壞處。5.4 WSL 環(huán)境下 Flair 圖形界面打不開癥狀在 WSL 或者虛擬機里跑核心程序沒有問題但輸入flair后沒有圖形窗口彈出來。原因WSL 早期版本沒有內(nèi)置圖形界面支持需要 X Server 配合虛擬機則可能沒有正確安裝增強工具導(dǎo)致 OpenGL 相關(guān)功能異常。解決Windows 11 自帶 WSLg一般直接就能彈出窗口。如果是舊版 WSL可以在 Windows 側(cè)啟動 X Server然后在 WSL 里設(shè)置export DISPLAY:0。如果只是想快速驗證安裝可以不依賴圖形界面直接用文本編輯器改寫.inp文件用命令行跑rfluka效果完全一樣。5.5 運行目錄里出現(xiàn)大量臨時文件找不到主輸出癥狀跑完一個算例后目錄里全是.tmp、.dat、.out文件看得眼花繚亂。原因FLUKA 默認在當前目錄生成所有中間文件用戶沒有做目錄隔離。解決從一開始就養(yǎng)成“一個算例一個文件夾”的習慣每個文件都放在獨立的目錄里輸出文件名也保持和輸入文件名一致這樣后續(xù)整理數(shù)據(jù)和寫論文時都會省心很多。5.6 常見問題速查表癥狀可能原因處理方式command not found: rflukaPATH 未配置或未 source檢查.bashrc重新source ~/.bashrcbad interpreter缺少 tcshsudo apt install -y tcsh運行中斷日志中有問號提示輸入卡片格式問題或數(shù)據(jù)路徑缺失用官方示例對比確認所有文件路徑有效Flair 打不開顯示服務(wù)器或 Python 依賴問題WSLg/X Server 配置或重新安裝 Python 依賴libgfortran 相關(guān)錯誤缺少 gfortran 運行時sudo apt install -y gfortran找不到fluka-init版本不同腳本名可能不同查看解壓目錄內(nèi)文檔確認腳本位置6. 幾點實用的安裝后配置建議6.1 關(guān)于源碼編譯能勸退就勸退FLUKA 官方提供的是預(yù)編譯二進制包對絕大多數(shù)人來說完全夠用。但總有朋友出于“掌控感”想從源碼自己編譯結(jié)果一般都會陷入依賴泥潭需要特定版本的 gfortran、特定版本的 CMake、以及可能跟系統(tǒng)庫沖突的底層依賴。更有甚者FLUKA 某些底層代碼涉及大量編譯選項新手如果不知道如何開啟并行支持編譯出來的版本甚至可能比預(yù)編譯版本性能更低。所以我的結(jié)論是除非你是 FLUKA 內(nèi)部開發(fā)人員或者有明確的定制需求否則不要自己從源碼編譯。把時間花在物理模型學習和輸入卡片調(diào)試上收益大得多。6.2 建議保留一份干凈的模型計算目錄結(jié)構(gòu)我自己的習慣是這樣~/flukarun/ ├── case01/ │ ├── input.inp │ └── output/ ├── case02/ └── case03/每一個 case 目錄放一個獨立的算例輸出文件和輸入文件分開管理。這樣不管過了多久回來看我都能一眼找到想要的模型文件。FLUKA 的中間文件命名是靠輸入文件名加序號來區(qū)分的如果你把所有算例堆在同一個目錄里過兩個月自己都分不清哪個是哪個了。6.3 簡單但重要的備份習慣安裝完成后把整個~/opt/FLUKA目錄做一次備份也是非常推薦的。雖然正式建模時不需要頻繁重裝軟件但系統(tǒng)升級、硬盤更換、虛擬機遷移這些場景下有備份就能直接恢復(fù)不需要重新經(jīng)歷一次下載和申請流程。tar -czf fluka-backup.tar.gz ~/opt/FLUKA這一條看起來很簡單但真的能省很多事。6.4 學會查看官方文檔FLUKA 安裝包自帶doc目錄里面有大量 PDF 手冊包括輸入卡片說明、安裝說明和示例解釋。很多時候你遇到的問題早就有官方說明只是很多人習慣直接搜索網(wǎng)上的零散答案反而忽略了最權(quán)威的來源。遇到報錯時先翻一下$FLUPRO/doc目錄下的對應(yīng)手冊往往比在論壇里大海撈針高效得多?;氐轿业慕?jīng)驗上來FLUKA 在 Ubuntu 下的安裝整體并不算難真正的分水嶺在于你是否理解環(huán)境變量和啟動腳本之間的配合關(guān)系。只要把FLUPRO這個關(guān)鍵路徑配置準確再確認 tcsh 和 gfortran 這類基礎(chǔ)依賴都在10 分鐘內(nèi)就能讓程序跑起來。裝完以后別急著丟開拿官方示例完整跑一次看看輸出文件的結(jié)束標志這才是真正有效的驗收。以后你換電腦、換系統(tǒng)、幫同事配置環(huán)境時回頭再看這一步會感謝自己當初沒有跳過驗證環(huán)節(jié)。