地下二層實驗室裡,時間失去了原本的刻度。
分辨白天還是黑夜的唯一方式,是看張淵去水房洗臉的頻率。
粉筆敲擊白板的聲音,成了這個密閉空間裡最單調也最穩定的節拍器。
陳拙站在白板前,右手握著一截白色的粉筆,左手拿著那個本子。
他寫得並不快,每寫完一行複雜的代數群對映公式,他就會停下來,看一眼本子上的草稿,在腦子裡過一遍邏輯,然後再繼續往白板上搬。
在他身後,鍵盤的敲擊聲像雨點一樣綿密。
林芳坐在電腦前,眼睛死死盯著白板,陳拙每寫完一個完整的代數式,她就在腦子裡迅速將其拆解,然後通過電腦,轉譯成一行行底層的C語言程式碼。
遇到邏輯跳躍太大的地方,張淵就會拉著椅子滑過去,和林芳一起低聲討論幾句,敲定轉譯的格式。
陳拙在前麵造磚,他們倆在後麵砌牆。
第一天,進度推得很順利。
常規的幾何曲麵被成功對映成了簡單的多項式係數,林芳看著監控後台平穩的記憶體占用率,長長地出了一口氣。
第二天,第三天。
隨著車頭幾何形狀越來越複雜,代數轉換的難度開始成倍增加。
陳拙站在白板前的時間越來越長。
有時候,為了推導一個平滑過渡的邊界約束條件,他會站在那裡半個小時一動不動,隻留下一個背影給張淵和林芳。
張淵開始大把大把地掉頭髮,他每次伸手抓頭,總能帶下幾根,他把那些頭髮掃到桌角,看著它們發呆。
實驗室裡的空氣越來越差,菸灰缸裡堆滿了揉碎的紙團,為了提神,張淵買了兩大罐速溶咖啡,直接拿涼水衝著喝。
到了第六天的淩晨。
節奏突然斷了。
陳拙手裡的粉筆停在半空,懸在一個尚未閉合的括號前。
白板上,關於列車尾部複雜流體渦流的代數對映,推導到這裡,卡住了。
陳拙皺了皺眉。
他退後半步,看了一眼整個公式的走向,然後拿起黑板擦,把剛剛寫下的那兩行擦掉。
重新換了個思路,寫下幾個新的符號。
不到兩分鐘,他又停下了。
陳拙歎了口氣,再次拿起黑板擦。
坐在電腦前的張淵察覺到了不對勁,鍵盤聲早就停了,林芳也有些不安地活動著僵硬的手腕。
“怎麼了?”
張淵站起身,走到陳拙身邊,看著白板上那塊被反覆擦拭,已經有些發灰的區域。
陳拙轉過頭,把粉筆扔進槽裡,拍了拍手。
“師兄,這裡走不通了。”
陳拙的聲音聽起來有些疲憊,但依然平靜。
張淵心裡猛地一沉,像是有一塊石頭砸了下去。
“什麼叫走不通了?”張淵盯著白板,“不是一直推得好好的嗎?記憶體也冇溢位啊。”
陳拙指著剛纔卡住的地方。
“前麵的車身流線型都很規則,代數簇的對映是平滑的,但到了車尾,流體分離會產生極其複雜的脫落渦,如果要把這個拓撲結構完美對映到代數空間,這裡缺一個嚴格的邊界同調證明。”
陳拙看著張淵。
“在數學上,這是一個冇有填補的奇點,我的邏輯鏈在這裡斷了。”
實驗室裡死一樣的安靜。
隻有伺服器風扇的嗡嗡聲在響。
“斷了......”
張淵喃喃地重複了一句,兩眼發直。
他轉身看了一眼桌上的日曆,今天已經是第六天,距離中科院超算中心的機時切入,滿打滿算隻剩下不到三天了。
如果底層演演算法卡在這裡,那他們之前所有的努力全成了泡影。
張淵突然覺得有點喘不上氣來。
他伸手用力抓著自己的頭髮,他在原地轉了兩圈,一腳踢在旁邊的廢紙簍上。
紙團滾了一地。
“陳拙,你再想想啊。”
張淵的聲音有些發抖,眼睛紅得嚇人。
“你腦子好使,你再想想,我們冇時間去翻文獻了,九天,哪怕你現編一個證明出來也行啊!”
林芳坐在椅子上,低下了頭。
她知道,讓一個搞數學的人現編一個理論,這本身就是一句瘋話。
陳拙冇有被張淵的焦躁情緒感染。
他安靜地看著張淵在實驗室裡困獸一樣地轉圈,等他踢完了紙簍,發泄完了那一陣情緒。
“師兄,拔頭髮是算不出方程的。”
陳拙語氣溫和,甚至帶了一點平時那種不鹹不淡的調侃。
張淵停下腳步,愣愣地看著陳拙。
“你如果在數院,遇到這種卡死的奇點,李建明教授會讓你乾什麼?”
張淵有些無力地問。
“先探討,冇有結果的話他會讓我把這塊白板鎖起來。”
陳拙轉過身,看著那些公式。
“然後去圖書館看半年的書,或者找人。”
張淵慘笑了一聲,跌坐在椅子上。
“半年......方院長在京城連三天都等不了了。”
陳拙走到白板前,重新拿起那半截粉筆。
“那是數院的做法。”陳拙說。
他轉過頭,看著頹廢的坐在那裡的張淵和林芳,微微揚了揚下巴。
“可這裡是物理院。”
陳拙手裡的粉筆落在白板上。
他冇有再去試圖寫那個虛無縹緲的嚴密證明,他直接在那個斷開的邏輯鏈上,畫了一道斜杠。
然後,他在旁邊加了一個帶有一階截斷的近似多項式。
“師兄,我問你。”
陳拙一邊寫,一邊頭也不回地問。
“你們需要絕對的宇宙真理嗎?”
張淵愣住了。
“在你們眼裡,圓周率是3.14159,還是後推一萬位的無理數,對造一輛列車來說,有區彆嗎?”
陳拙停下筆。
他轉過身,指著白板上新加上的那一行公式。
“既然這裡推不出完美的代數對映,那我就強行給它加一個懲罰項,我把它截斷。”
陳拙看著張淵,眼神裡透著一種務實。
“在數學上,這塊補丁很不講道理,如果拿著它去**文,盲審專家會覺得我瘋了。”
陳拙頓了頓。
“但在物理意義上,它產生的計算誤差,在小數點後六位。”
陳拙拿著粉筆,輕輕敲了敲白板。
“十萬分之一的誤差,影響你們去測那陣風的阻力嗎?”
張淵坐在椅子上,呆呆地看著陳拙,又看了看白板上那行強行縫合的公式。
身為工科生的常識在腦子裡迅速回籠。
是啊。
工程從來就不是一門追求絕對完美的科學,工程是一門關於妥協的藝術。
隻要誤差在允許的公差範圍內,哪怕這套理論再不嚴謹,它也是管用的工具。
張淵的眼睛慢慢亮了起來。
他猛地從椅子上站起來,大步走到電腦前。
“不影響。”
張淵的聲音依然沙啞,但那種絕望和無力感已經一掃而空。
他拉開林芳,自己坐到了主鍵盤前。
“十萬分之一的誤差,放在兩百多米長的列車上,連根頭髮絲的阻力都算不上,足夠了。”
張淵雙手放在鍵盤上,轉頭看著陳拙,眼底燒著火。
“敲程式碼,我們繞過去。”
陳拙看著張淵恢複了狀態,微微點了一下頭。
他轉過身,繼續把剩下的公式補完。
在接下來的三天裡,實驗室裡的鍵盤聲再也冇有停過。
陳拙強行打上的那個補丁,雖然在邏輯上不夠優美,但在程式碼層麵,它完美地規避了記憶體溢位的風險。
不再需要切割四千萬個網格。
所有的流體邊界,全都被轉化成了底層那一組組由多項式係數構成的大型方程組。
第九天。
晚上十一點四十分。
距離中科院超算中心的機時切入,還剩二十分鐘。
實驗室裡的空氣沉悶得像快要下雨的黃梅天。
張淵敲下最後一個分號。
他的手指懸在回車鍵上,遲遲冇有按下去。
林芳站在他身後,雙手死死攥著衣角,手心全是汗。
陳拙坐在旁邊的摺疊椅上,他麵前那本子攤開著,上麵記錄著這九天來在白板上推匯出的所有關鍵節點。
他擰上礦泉水瓶的蓋子,放輕了呼吸。
“全寫完了。”
張淵盯著黑底綠字的程式碼視窗,聲音很輕,像是在怕驚動什麼東西。
“跑吧。”陳拙說。
張淵嚥了口唾沫,手指用力,敲下了回車。
“啪。”
四台伺服器的風扇聲音在同一秒鐘拔高。
嗡嗡的低頻噪音在實驗室裡迴盪。
張淵死死盯著螢幕右下角的一個監控視窗,那是記憶體占用率的折線圖。
以前,隻要跑到跨音速階段,那條折線就會像坐火箭一樣垂直飆升,直到撞破100%的紅線,然後電腦藍屏宕機。
一分鐘過去了。
折線穩穩地停留在45%的位置,隻有微小的上下浮動。
“冇爆......”
林芳小聲唸叨著,聲音發抖。
螢幕中央,出現了一個進度條。
這一次,它冇有卡在令人絕望的1%。
2%。
5%。
15%。
綠色的光帶在黑色的介麵上緩慢但堅定地向前推進。
每一次跳動,都伴隨著底層海量代數方程組的實時求解,冇有網格節點的互相乾涉,隻有純粹的係數運算。
時間一分一秒地過去。
半個小時後。
風扇的聲音漸漸低了下去。
進度條推到了100%。
黑色的程式碼視窗瞬間消失,取而代之的,是一個粗糙但輪廓分明的三維列車頭部模型。
在這個模型的周圍,幾條代表著流體壓力變化的拋物線,平滑而優美地延展出去。
冇有任何斷層。
冇有任何代表著宕機的NaN無效資料。
哪怕它的精度在目前的伺服器上還顯得有些簡陋,但它的邏輯,完全閉環了。
沙盒,跑通了。
看著螢幕上的那幾條拋物線,張淵的雙手從鍵盤上滑落。
他冇有歡呼,也冇有像電影裡演的那樣跳起來抱頭痛哭。
他隻是像被人抽乾了全身的力氣一樣,軟軟地癱在轉椅的靠背上。
他仰著頭,看著天花板上那根一直髮出電流聲的燈管,胸口劇烈地起伏了一下,長長地,長長地吐出了一口憋了十幾天的濁氣。
林芳趴在桌子的邊緣,把臉埋在臂彎裡,冇有聲音,隻有肩膀在微微發抖。
活過來了。
在距離死刑執行還有最後二十分鐘的時候,他們硬生生把那扇名為算力的鐵門給砸開了。
陳拙坐在摺疊椅上,看著癱在那裡的兩個人,眼神依然溫和。
他冇有打擾他們。
他低下頭,從口袋裡摸出一支黑色的中性筆。
他翻到了本子的最新一頁,在那一頁上,記著他第六天在白板上強行加進去的那個一階截斷近似項。
陳拙看著那個公式。
在張淵和林芳的眼裡,那是拯救了專案的解藥,但在陳拙的眼裡,那是一個突兀的疤痕。
它在物理上是對的。
但在數學上,它不是對的。
一種純粹求知慾的遺憾,像一根極細的針,在他心裡輕輕紮了一下。
雖然不疼,但那種拚圖少了一塊的空落感,讓他很不舒服。
代數幾何。
同構對映的絕對邊界到底在哪?
陳拙在那個公式旁邊,畫了一個小小的問號。
然後,他輕輕合上了本子。
“滴——”
張淵桌子上的座機突然響了,聲音在這安靜的房間裡格外刺耳。
張淵像是觸電一樣彈了起來,一把抓起話筒。
“喂,老師。”
張淵的聲音沙啞得厲害,但透著一股前所未有的踏實和硬氣。
電話那頭,方士可能就坐在國家超算中心的某個休息室裡,熬著夜等這最後通牒。
“跑通了。”
張淵看著螢幕上的波形圖,眼眶紅了。
“我們把網格刪了,底層邏輯冇發散,沙盒跑通了。”
張淵的聲音越來越穩。
“老師,程式碼已經打包好了,您隨時可以上超算。”
陳拙把本子塞進雙肩包裡。
他拉上拉鍊,把包背在單邊肩膀上。
張淵還在電話裡跟方士彙報著資料檔案的路徑和編譯環境,激動得聲音都在發顫。
陳拙冇有出聲打斷他。
他走到桌邊,跟抬起頭的林芳對視了一眼。
陳拙指了指門外,微微笑了一下,點了點頭。
林芳看著他,眼底滿是感激,她張了張嘴,想說句謝謝。
陳拙擺了擺手,示意她不用客氣。
他轉過身,推開了那扇沉重的隔音門。
走廊裡的穿堂風吹過來,捲走了他身上沾染的那些長久不見光的黴味。
陳拙走出門外,反手將門輕輕帶上。