2026年1月1日。上午九点四十分。
林远坐在工位上,面前的四块屏幕上同时滚动着不同维度的气象数据。值班室里只有他一个人,整个气象台大楼安静得像一座空壳。元旦假期,绝大多数同事都休假了,只剩下轮值的几个人在楼下喝茶聊天,守着那部偶尔响起的值班电话。
他没有休假。不是不能休,是他自己申请的元旦值班。每年的第一天他都会坐在这个位置上,像一种仪式——他要亲眼看着新年的第一组数据从卫星传下来,从探空站发回来,从浮标和雷达上汇聚到这个房间的服务器里。九年的习惯,改不掉。
窗外是灰白色的天。北方一月份常见的霾层压在城市上空,能见度一般,没什么特别。但林远此刻盯着屏幕的目光是凝固的。
凌晨三点,风云四号B星的红外云图捕捉到一个细节——太平洋中部,一个低压系统的中心云顶温度在六小时内从-55℃骤降至-78℃。这个变化率超出了常规经验,他当时在手机上看了一眼,以为是卫星定标误差,没有深究。
但此刻,当他调出凌晨三点到九点的全部连续观测数据后,那个"误差"的嫌疑被排除了。六个小时里,那个低压的中心气压下降了28百帕。28。一个冬季生成的、位于副热带洋面上的低压系统,在六小时内完成了一次快速增强,而现在它的核心风速已经逼近台风级别。
一月份的台风。不是没有过,但极其罕见。更罕见的是它增强的速度。
林远从抽屉里拿出一个旧硬盘,连上电脑。硬盘里装着一套他自己写的集合预报程序,代码量将近两万行,是他利用业余时间花了三年一点一点攒起来的。程序没有经过官方认证,界面简陋得像上世纪的DOS系统,但它的核心算法——一种基于多尺度嵌套网格的扰动生成方案——是林远自己设计的。官方的大型机他调不动,那是首席预报员才有权限的,但本地跑一跑自己的小模型,没人管。
他输入数据。开始跑。
十点二十分,第一批结果输出。林远看着屏幕上滚动的曲线,左手不自觉地握紧了鼠标。一百个集合成员里,八十三个指向同一种情景:那个低压将在四十八小时内与南下的冷涡形成耦合,之后在两者之间生成一条持续性的水汽输送带。这条带的强度超出历史极值,持续时间在模型边界条件下被推到了极限。
他站起来,走到窗前。窗外的霾层看起来依旧平静,但在他脑中,那条"带"的形态已经成型——从热带洋面一直延伸到华北腹地,宽度几百公里,像一根悬在空中的动脉。
他拨通了首席预报员老陈的电话。
响了六声,那边接起来。背景里有电视的声音,在播新闻,还有锅碗碰撞的动静。
"喂?林远?元旦还值班呢?"老陈的声音带着点意外,状态听起来就是在家里待着。
"老陈,你看过今早的卫星图没有?太平洋上那个低压,凌晨三点开始爆发性增强,六个小时压降28百帕。我给欧洲中心的模式做了一版本地扰动推演,结果很异常。"
电话那边安静了几秒,然后是椅子的响声,像是老陈换了个姿势坐下。"28百帕?你确认数据没偏?"
"确认过了。连续六组探空和卫星匹配,偏差在正常范围内。"
"路径呢?"
"西偏北,直指东南沿海。关键是它后面跟了一个冷涡,两个系统会在黄海上空形成耦合——"
"耦合之后呢?"
林远沉默了一瞬。"水汽通道。持续性的。模型给出的稳定时段上限……"他顿了一下,"三百六十五天。"
电话那头彻底安静了。好一会儿,老陈的声音才重新传过来,比刚才低了不少。"林远,你那个程序边界条件设置是不是太理想化了?海温、风切变、水汽供应量——现实里这些变量不可能持续稳定一整年。"
"我把所有的扰动都开到了上限,但边界条件的来源是真实观测。海温距平已经+2.8℃了,老陈,这不是模型自己造的数据。"
"……两度八?你确定?"
"确定。你可以在内网调NCEP的再分析资料,十二月的月均海温图,第二页。"
电话那头传来一声很长的呼气。老陈似乎在权衡什么。片刻后他说:"我今天下午去一趟台里。你在那儿等我,带上你的全部输出。"
"好。"
挂断电话,林远回到工位,将程序跑出的所有图表导出、打印、装进文件袋。做完这一切,他看了眼时间,十一点四十分。窗外的天还是灰白的,但云层比早晨稍微薄了一些,有一团模糊的光亮在霾层后面挣扎着透出来。
他的手机震了一下。苏晚发来一条消息:"中午回来吃饭吗?炖了排骨。"
林远正要回"回",手指停在屏幕上方,停了两秒,然后他打了另一行字:"下午吧,老陈要来台里。你先吃,给我留一碗。"
苏晚回了一个"好",加了一个小太阳的表情。
他把手机扣在桌上,翻开面前那个硬壳笔记本,准备把今天的数据要点手写一份存档。翻开新的一页,他拿起笔,笔尖落在纸面上,准备写日期、时间、关键数据编号。但他的手没有动。
大约三秒钟,他保持着握笔的姿势,看着空白的纸面,脑子里跑过的却是那条水汽通道的剖面图——暖湿空气沿等熵面爬升,凝结释放潜热,加热中层大气,进一步加深地面低压,增强辐合,吸入更多水汽……闭环。
这是一个正反馈。一旦启动,外界没有足够强的干扰,它就不会停止。
他回神,低头写字。但笔尖落在纸面上的那一刻,他发现自己画的不是日期和数字——是一个符号。一滴水的轮廓,水滴的弧线里包裹着一个圆形的太阳。
他愣了一下,看着那个自己画出来的图案。不记得什么时候学过这个东西。不知道为什么要画它。
他把它划掉,重新写了日期。但划掉的那个痕迹在纸面上留下了一道浅浅的凹槽,手指摸过去能感觉到。
下午一点四十分,老陈到了。他穿着件深蓝色的旧羽绒服,领口拉链没拉到底,露出里面的毛衣领子。花白的短发上沾着一点没化的雨水——外面开始飘小雨了,很细的那种,像雾。
两人面对面坐在值班室的小圆桌旁。桌上摊着林远打印出来的全部图表,台灯的光把纸面照得发白。老陈一张一张地看,速度很慢,有时候停在一张图上盯着看好几分钟,有时候翻回前面重新对照。
林远没有催促。他坐在对面,双手捧着杯已经凉掉的茶,等着。
大约四十分钟后,老陈把最后一张图放下,摘下老花镜揉了揉鼻梁。他没有立刻说话,而是看着桌面上那些纸页的边缘,像是在整理措辞。
"你程序里的海温蒸发系数,"他开口,"取的是动力粗糙度公式的上限?"
"对。"
"为什么取上限?"
"因为风速在增强。那个低压的环流半径会不断扩大,它所驱动的低空急流会持续向水汽通道注入动量,海面粗糙度随之提升,蒸发通量成倍增长。我取上限不是假设,是模型根据风场推演自动生成的。"
老陈点了点头。他没有反驳,这本身就是一个信号。
"你这个稳态解,"他指了指其中一张图上的那条平直曲线,"需要满足几个前提?"
"第一,海温不降。第二,冷涡位置不东移。第三,陆地上的降雨入海后重新被蒸发——这个环节在现有的全球水文模型里是被低估的,但我加了本地化的径流-蒸发耦合项。"
"你加的这个耦合项……"
"是我自己推导的。"林远说,"公式在后面附录第二页,你可以看。"
老陈翻到附录,看了大约五分钟。然后他把附录合上,长出了一口气。
"推导过程没有问题。"他说,"但结论……你自己信吗?"
林远看着老陈的眼睛。"我信数据。"他说,"我信这个东西有发生的数学可能。至于它会不会真的发生,需要时间验证。"
"如果发生了呢?你打算怎么办?"
这句话问出来的时候,两个人都安静了几秒。外面的雨声在变大,细密的沙沙声变成了清晰的噼啪声,打在值班室的窗玻璃上。
"我打算做准备。"林远说。
"做什么准备?"
"囤物资。找一个能长期使用的地下空间。改一辆能涉水的车。"他停了停,"老陈,这件事我现在只跟你一个人说。你来不来,你自己决定。"
老陈看着他,很久。台灯的光在林远的侧脸上投下深重的阴影,他坐在那里,姿态平静得像是在说一件再普通不过的事。
最后老陈站起身来,走到窗边,看着窗外越下越密的雨。外面的能见度已经降了不少,灰白色的霾层被雨幕替换成了一种更沉重的铅灰色。
"你把你的程序拷一份给我。"老陈背对着他说,"我今天晚上回去跑一整夜。明天早上我给你答复。"
"好。"
老陈转身走向门口。经过林远身边的时候停了一步,拍了拍他的肩膀,没再说什么,推门出去了。门合上的一瞬,走廊里的穿堂风带进来一阵湿冷的气息。
林远独自坐在小圆桌旁。他看着摊了满桌的图表,伸手一张一张地收拢、对齐、装回文件袋。收拾到最后一张的时候,他看见纸面上有一个隐约的圆形压痕——像是有什么东西在打印之前被放在纸上压过,留下了痕迹。
他看了看自己的手。右手掌心的纹路里残留着一点水渍,不知道是什么时候沾上的。
他甩了甩手,把那最后一张图也收进文件袋,关了台灯,走出值班室。走廊里很暗,只有尽头安全出口的绿色指示灯在墙上投下一小片冷光。雨声从四面八方涌来,包裹着整栋大楼。
他走出气象台大门,撑开伞,走进雨中。雨丝打在伞面上发出沙沙的声响。天已经暗下来了,下午三点半,但看起来像傍晚六点。
他朝家的方向走。脚步不快不慢,踩在积了薄薄一层水的路面上,溅起细碎的水花。路边法桐的枯枝被雨压弯了,有水滴顺着枝桠滑下来,在他经过的时候正好落在他肩上。他感觉到那滴水穿过外套的布料,接触到他肩膀皮肤的一瞬间——有一丝微弱的温热感。
不是错觉。雨滴本应是冰凉的,但他肩头那块皮肤感受到的分明是一阵暖意,像被一条温热的舌头轻轻舔了一下。
他停下脚步,回头看了看身后。没有人。只有雨。
他继续走。
那天晚上,他回到家的时候,苏晚已经把排骨热了两遍。她看见他进门,没问他为什么回来晚了,只是把碗端到桌上,又加了一勺汤。他们面对面坐着吃饭,客厅的灯开着,暖黄色的光把雨夜的寒意挡在窗外。
苏晚说:"今天雨好像比预报的大。"
林远夹起一块排骨,应了一声:"嗯。"
他没有说更多。至少今晚不说。
但他右肩上那个被雨滴触碰过的位置,直到吃完饭后很久,指尖按上去还是温热的。