缺氧吧 关注:167,865贴子:2,213,161

解密缺氧热交换-缓慢更新中

只看楼主收藏回复

争取下个版本出来前写完


1楼2018-01-23 15:48回复
    二楼自留地,楼中楼用作网盘备份更新,请不要插。
    另外,虽然标题是热交换,本帖仍然会涉及一些不属于热交换但和温度有关的,仍然需要掌握的游戏内知识


    2楼2018-01-23 15:50
    收起回复
      2025-06-03 08:25:56
      广告
      第一节课 常规热交换
      以下内容基本转载自论坛Decrypting heat transfer,有能力的请尝试读原文
      游戏内的热交换包括
      格-格 热交换
      格-建筑物 热交换(包括小人造的,地图上现有的)
      格-其他实体 热交换(比如小人,喷泉,挖开的物质,存在箱子里的物质等等。不属于格子和建筑物的基本都在这儿)
      以下内容大多数都在石油和自动化版本上起作用
      (译注:截止管道版,热交换的细节有不小改动,但这三个大分类应该仍然适用。热吞噬的“温度交换”不在此列,之后会讲。引起相变时,也会发生不符合公式的现象,不打算讲。)
      你需要首先了解的公式
      |x| 绝对值;Q=cm△T
      不知道的右上角吧。这贴对你太难了。
      clamp(x, y, z) 去掉一个最大的,去掉一个最小的,留下一个中间的
      sign(x) 当x>0,sign(x)=1;当x=0,sign(x)=0; 当x<0, sign(x)=-1
      min(x,y) 输出最小的
      max(x,y) 输出最大的
      1.1格-格 热交换
      游戏的每个单元格都有如下属性:
      温度T,单位K
      质量m,单位kg
      绝热系数f,无单位。范围为0~255。目前仅绝热砖为2,其余都是255(译注:别和我提绝热管,那玩意儿是单元格吗?)
      元素种类,如液态氢,砂岩
      备注:不同物态的物质被认为是不同元素,如液态氢和氢气是两两种元素
      每个元素都有以下信息:
      物态(固液气。对于零号元素还有不可破坏和完全绝热两个特性)
      热导率k,单位 W/m/K
      比热容c,单位 J/g/K
      表面修正系数S,无单位。根据经验,液对液为25,气对固为25,其余为1。
      中间量:
      修正热导率 k' = k * (f/255)²
      总热容C = c * m
      绝对热量Q = C * T
      格格热交换中,必然有两个单元格参与。我们用1和2表示。对于有完全绝热属性的元素,不参与热交换。
      接下来开始计算一个热力学刷新周期中的热交换。
      第一步
      若|T2 - T1| < 1,不进行热交换
      ΔQ = Δt * min(k'1, k'2) * (T2 - T1) * (S1[格1对格2] * S2[格2对格1])
      Δt=0.25秒,代表游戏中热力学系统的刷新周期
      ΔQ' = sign(T2-T1) * min(|ΔQ|, |Q2-Q1|/8)
      第二步
      若 |ΔQ'| < 1.0E-4,不进行热交换
      第三步
      T'1 = T1 + ΔQ' / C1且T'2 = T2 - ΔQ' / C2
      若(T2 - T1) * (T'2 - T'1) < 0,则T'1 = T'2 = (Q1 + Q2) / (C1 + C2)
      第四步
      若|T'1 - T1| > |T2 - T1| / 4, 则T'1 = T1 + (T2 - T1)/4
      若|T2' - T2| > |T2 - T1| / 4, 则T'2 = T2 - (T2 - T1)/4
      第五步
      传递的热量为
      ΔQ'' = sign(ΔQ') * min(|T1' - T1| * C1, |T2' - T2| * C2)
      最终温度为
      T''1 = T1 + ΔQ'' / C1 and T''2 = T2 - ΔQ'' / C2
      译注:
      对以上几步做一下解释
      第一步:通过给定公式计算传输的热量(其实ΔQ' = sign(T2-T1) * min(|ΔQ|, |Q2-Q1|/8)这一行很不合理,不清楚现在是否仍然保留。)
      第二步:传热太小就不传了
      第三步:防止热交换后,较冷的反而变成较热的那一个
      第四步:防止温度变化过快。此处原文为|T2' - T2| > |T2 - T1|, 则T'2 = T2 - (T2 - T1)/4,应当是笔误
      第五步:收尾
      实战1
      格1 水100kg370K,格2 污水200kg315K
      ΔQ = 0.25 * min(0.609, 0.58) * (315-370) * 25 * 25 = -4984.375 (注意有两个25的表面修正系数)
      Q1 ≈1.55E5 且 Q2 ≈3.78E5, ΔQ' = ΔQ.(译注:原文应该是算错了,改了。)
      T'1 = 370 -4984.375 / (100 * 4.179) ≈ 358K且T'2 = 315 + 4984.375 / (200 * 6) ≈ 319.15K
      温度变化小于|T2 - T1|/4,结束。
      实战2
      格1 氢气1kg215K,格2 钨金属砖100kg300K
      注意,对于金属砖等实心砖,计算时是按照100kg的材料和100kg的砖头共同占据一格,所以格2等于 金属钨200kg300K
      (译注:这条挺不合理的。也许现在改了。没做过实验)
      ΔQ = 0.25 * min(0.168, 60) * (300 - 215) * 25 * 1 = 89.25
      ΔQ' = ΔQ
      T'1 = 215 + 89.25 / (1 * 2.4) = 252.1875且T'2 = 300 - 89.25 / (100 * 0.134) = 293.34
      因为|T'1 - T1| > |T2 - T1|/4所以T'1 = 215 + (300 - 215) / 4 = 236.25.
      ΔQ'' = min(|236.25 - 215| * (1 * 2.4), |293.34 - 300| * (100 * 0.134)) = min(51, 89.25) = 51
      最终温度为T''1 = 215 + 51/(1 * 2.4) = 236.25且T''2 = 300 - 51/(200 * 0.134) = 298.097K
      实战3
      因为|ΔQ| < 1E-4时没有热传递
      因此深渊石砖与其他固液传热时,温差需要大于40K
      深渊隔热与气体需要26010K,与固液需要650250K,换句话说就是基本不导热。
      译注:此处应该有改动。有一段时间深渊隔热很容易导热,之后虽然修复了这个错误,但隔热也没原来那么好。
      实战4
      这是关于计算绝对热量的不合理之处。不翻译了,看得懂原文的自己去看。不知道现在改了没,懒得做实验。


      3楼2018-01-23 16:48
      收起回复
        我昨天看到了,是R9MX4s发的翻译贴,不知道今天怎么就没了,原帖很好,楼主辛苦翻译了。原帖地址 https://forums.kleientertainment.com/topic/84275-decrypting-heat-transfer/


        IP属地:天津4楼2018-01-23 16:56
        收起回复
          顶顶


          IP属地:福建来自Android客户端5楼2018-01-23 17:09
          回复
            不错,收藏了,边百度边看


            IP属地:山西来自Android客户端6楼2018-01-23 17:10
            回复
              向大神学习


              IP属地:广东来自Android客户端7楼2018-01-23 18:26
              回复
                代表吧务欢迎大佬


                IP属地:海南来自Android客户端8楼2018-01-23 19:04
                回复
                  2025-06-03 08:19:56
                  广告
                  大脑细胞已死光


                  来自Android客户端10楼2018-01-24 11:31
                  回复
                    顶,记得以前看好像建筑与格子有加成,于是可以用冷水降温。其他,就看不下去了


                    IP属地:广东来自iPhone客户端11楼2018-01-24 20:12
                    回复(13)
                      第二课
                      1.2格-建筑物 热交换
                      建筑物包括小人造的,地图上现有的,也包括热交换板。
                      在模拟中,多数建筑物只与它们覆盖的格相互作用。
                      例外:如果建筑内部有储存一些物质,比如管道内的气液,送入农砖但还没被消耗完的水/污水。对于热交换板,除了与它们覆盖的一个格,还与周围一圈8个格子相互作用。
                      译注:根据@月下独影者 的测试,导热板和同物质的煤电(3*3)对比没有区别,所以以下计算公式仍然适用于导热板,在此表示感谢。
                      坐标因子A,用于标记上下左右格子和建筑物的作用关系(译注:应该是建筑所占的格子数。比如大气泵就是4)
                      修正总热容C' = C / 5 / A (这个修正总热容似乎只有建筑才有。按正常考虑,比热应该为C=c*m,但建筑物的修正总热容却为总热容除以5。这个5十分重要,之后我会提到)
                      本来建筑物和格子的热交换还会涉及建筑的发热,但我这里删掉了。之后会单独拎出来讲
                      格-建筑物 热交换的原理较为简单,这里用数字1表示格,2表示建筑物
                      对于每个热力学周期和每个建筑,首先定义ΔQ=0
                      遍历左右上下4个单元格,如果其元素满足特定值(推测为真空),无热交换,跳到下一个格子。
                      中间量Chot:若T1 < T2, Chot = C'2,否则Chot = C1
                      Tmin = min(T1, T2)
                      Tmax = max(T1, T2)
                      第一步:通过给定公式计算传输的热量
                      ΔQ = Δt * k'1 * k2 * Chot * (T1 - T2) * 0.005 * x
                      其中x是游戏全局变量,一般为100。仅在游戏加载时为0.01
                      第二步:防止热交换后,温度波动过大(举个例子,A10度和B20度的传热,不会变成A22度和B8度)
                      T'1 = clamp(T1 - ΔQ/C1, Tmin, Tmax)
                      T'2 = clamp(T2 + ΔQ/C'2, Tmin, Tmax)
                      第三步:防止热交换后,较冷的反而变成较热的那一个
                      若(T1 - T2) * (T'1 - T'2) < 0,则T'1 = T'2 = (C1 * T1 + C'2 * T2) / (C1 + C'2)
                      第四步:
                      T'1是单元格1的最后温度
                      ΔQtot = ΔQtot + C'2 * (T'2 - T2)
                      第五步:
                      1-4步中建筑只和一个格子进行了热交换。接下来重复1-4步,所有覆盖建筑物2的单元格都进行一遍1-4步。
                      建筑物2的最终温度为T'2 = T2 +ΔQtot/(C'2 * A)
                      实战1
                      砂岩的堆肥,800kg 275K。4格氢气,每格都是1kg 320K
                      氢较热。所以对于每个单元格和建筑的热交换,Chot = 1 * 2.4
                      ΔQ = 0.25 * 0.168 * 2.9 * 2.4 * (320 - 275) * 0.005 * 100 = 12.6544
                      每个格子的情况都相同,因此每个格子的最终温度都是T'1 = 320 - 12.6544 / 2.4 = 314.7K
                      堆肥的最终温度为T''2 = 275/ (0.8*800/5/4*4) = 275.39545K.
                      译注:这里没有计算堆肥工作时的发热
                      实战2
                      275K黑曜石管,外部是320K的1kg氢气。
                      275K黑曜石隔热管,外部是320K的1kg氢气。
                      注意管道隔热系数没写入公式,因此两个管道都会传递相同的热量(尽管由于质量增加,隔热管的升温速度会变慢)
                      实战3
                      采取与上述相同的情况,但对调管道和氢气温度。现在,传递的热量将与管道的质量成正比(在chot这个参数中起作用),绝热管道将传递更多的热量(虽然它们的温度是相同的)
                      译注:注意,管道和外部格子的热交换中,管道的隔热系数没有影响,但是隔热/普通管道的不同质量仍然会有影响。这点很重要


                      12楼2018-01-25 16:37
                      收起回复
                        感谢@shiyun66 的协力翻译
                        第三课
                        1.3单元格/其他实体热传递
                        实体有常规的质量/温度/比热容/热导率等属性,以及以下附加的概念:
                        表面积系数,标记为S,(这里与单元格/单元格 热传递不同的是,这里不取决于元素的状态)
                        厚度,标记为L
                        相当简单是不是?这里给出具体步骤。单元格的数值后标为1,实体数值为后标为2.
                        单个实体与它所在的单个单元格交换热量
                        如果它(实体)不能与该单元格交换热量(比如,真空),则,它会与该单元格的下面一格交换热量,速率为正常的1/4
                        热交换的每一个周期Δt,ΔQ= Δt * S2 / L * min(k1, k2) * (T2 - T1) (如果实体与单元格的下一格进行热交换,则需要乘以1/4)
                        如果|ΔQ| > |Q1 - Q2| / 1000, ΔQ = sign(ΔQ) * |Q1-Q2| / 1000,(是的,不合理的绝对热量差决定传递热量又回来了)
                        新的温度为,T'1 = T1 + ΔQ / C1且T'2 = T2 - ΔQ / C2
                        如果(T1 - T2) * (T'1 - T'2) < 0, 两者等温,T'1 = T'2 = (Q1 + Q2) / (C1 + C2)
                        这里,有一个例外,冰箱里存储的物品(包括未通电的冰箱)或者堆肥会与虚拟的热源277.15K(冰箱)或者348.15K(堆肥)互相影响,热导系数被设为1000。该单元格不会从该热交换中吸收/损失热量。(从技术上来讲,你可以反复地从冰箱里拿进拿出淤泥根来摧毁热量,但是不会很有效率。)
                        我认为大部分实体的S是1,厚度是0.001.这里举出一些例外:
                        呼吸草,S=10
                        复制人的厚度取决于他们的衣服,经过转换之后的数值(比如,5px会转换为L=0.002).需要注意的是:默认衣服的厚度不会被计算(所以说,清凉衣比默认的衣服更暖和)


                        13楼2018-01-27 12:35
                        回复
                          感谢@shiyun66 的协力翻译
                          第四课
                          1.4其他热传递
                          看上去已经很多了,但是还有很多情况没有加入进来。下面是部分列表:
                          管道/内容物 传热:基本按照 格/其他实体 热传递中的第一条公式进行热传递。ΔQ = Δt * 50* min(k1,k2) * (T2 - T1),注意S/L=50一般被定为50(来源:C# code)
                          建筑物的发热将会按建筑物的面积平分到每个单元格。当那个单元格的物质质量少于1.5kg时,那个格子分得的热量会按比例缩小。(来源: C# code)
                          建筑的发热、传热:(比如,液冷机,精炼机)。每一个都是独立不同的,他们可以通过反编译C#来读取,这里不涉及了
                          运动状态下的流体(气体,液体)传热:关于这点我不能告诉你什么,虽然看上去他很可能就是引起“滴水冷却”的部分(译注:国内的叫法有瀑布,梯冷,热吞噬等等,之后会讲。)
                          气体中的热扩散:当一个气体单元格吸收了热量,它会传递其中一些到它上方含有同样气体的单元格。如果这个单元格损失了热量,它会反过来扩散一些损失的热量到它下方的含有同样气体的单元格。这个扩散会继续下去,直到碰到了不同物质,或传递的热量过低。来源:debug模式下实验结果
                          任何有关物质创造/毁灭/转换的热量创造/毁灭
                          好了,我想已经说了很多我目前为止能发现的东西。大部分这些信息可能只有一点点用处,它也许能帮你明白游戏中奇怪的地方,比如:
                          隔热管的“隔热”部分
                          高导热率瓷砖与低导热率管道之间的热传递效率
                          隔热砖的实际效果(喔,这东西就像深渊晶石一样好)
                          等等
                          ============
                          译注:原贴翻译完毕。再说说隔热管。
                          截止管道测试版为止,隔热管和外界的热交换中,管道的隔热系数不参与。隔热管和内部液体的热交换则没有进行测试。根据原贴作者和另一位论坛大佬Risu的讨论,本人猜测:管道的隔热属性不是作用于自身,而是作用于它外界的格子。
                          例如:
                          建造热管时会赋予外界砖头隔热属性。先造好一排砖头,然后在砖头中埋入隔热管,这时砖头会被赋予隔热属性。
                          拆除隔热管时会将外界砖头的隔热属性也删除。造好一排隔热砖,然后在砖头中埋入隔热管,接着拆除隔热管,这时隔热砖的隔热属性会被删除。于是隔热砖的隔热属性就被废了。
                          以上猜测只针对当时的版本,并且不保证正确。


                          15楼2018-01-27 12:50
                          收起回复
                            以下就不是翻译了,差不多是本人研究成果的总结。
                            第五课:瀑布/梯冷/热吞噬……的触发条件
                            瀑布/梯冷/热吞噬其实都是一个东西,论坛的叫法则有滴水冷却、冷在上(CFA)。我接下来简称热吞噬。
                            热吞噬需要满足以下4个条件
                            1.高2宽1的两个单元格
                            2.填充两格的元素都是相同的流体(流体包括气/液)
                            3.上冷下热
                            4.上少下多
                            对于液体来说,当第四点上少下多不满足时,液体将马上开始流动并达到要求。因此前三点是关键。
                            满足条件后,将会对调上下两格的温度。
                            以后标1表示上方单元格,2表示下方单元格。最初有上方温度T1质量m1,下方T2 m2。T1<T2,m1<m2。
                            满足条件后,变为上方T2 m1,下方T1 m2。
                            在这一过程中,两格损失的热量为ΔQ=Q前-Q后=[(T1×m1+T2×m2)-(T2×m1-T1×m2)]×c=(m2-m1)×(T2-T1)×c,其中c为物质的比热容。
                            因为T1<T2,m1<m2,所以ΔQ>0,并且可以得出:m2-m1越大,T2-T1越大,损失的热量也越多。
                            实战1:
                            以液冷带瀑布为例。
                            液体经过液冷后降温14度,因此T2-T1=14K。(K为开氏度)
                            瀑布的流量一般在80g~200g,而瀑布中,一格水的质量大约是这个流量的四分之一。暂定m1=50g。
                            瀑布下方的水池,其表层应当满足m2=1000kg
                            ΔQ=(m2-m1)×(T2-T1)×c=(1000kg-50g)×14K×c≈1000kg×14K×c。差不多相当于直接降温14度。
                            实战2:
                            气体的热吞噬
                            气体与液体不同,会进行扩散。对于高2宽1的两个单元格,在自然状况下,如果气体种类相同,即使上少下多,m2-m1一般也不会太大。
                            ΔQ=(m2-m1)×(T2-T1)×c,当m2-m1很小时,ΔQ也很小。所以自然状况下气体的热吞噬一般是不需要考虑的


                            16楼2018-01-27 13:14
                            回复
                              2025-06-03 08:13:56
                              广告
                              2.2
                              第六课:建筑物的温度变化与建筑物发热
                              在建筑物温度变化过程中,有一个隐藏因子:因子5,建筑物改变温度只需要Q=cm△T计算得到的热量的五分之一。
                              例如:800kg铁需要359.2 KJ热量就能升温1度。但一个反熵(铁,800kg)只需71.84 kJ热量就能升温1度
                              降温同理。
                              这个因子是如何起作用的,可以回过头去看第二课。建筑物的“修正总热容C' = C / 5 / A ”,这里的5就是因子5了。
                              在机器发热过程中,有一个隐藏因子:因子200,真正产生的热量是显示发热的200倍。
                              例如:
                              反熵的显示热功率是-400W,但真正产生的热量是-80kw
                              电池的显示热功率是6.25W,但真正产生的热量是1250w
                              液体加热棒的显示热功率是20.32W,但真正产生的热量是4064kw
                              个人猜测,这是因为游戏里有一个叫“显示产热修正因子”全局变量。显示产热修正因子=0.005
                              更深入探讨建筑物发热
                              我们平时看到的建筑物产热都是 建筑物总产热/200,而建筑物总产热又可以进一步分为两部分:"操作热"和"排出热"
                              "操作热"用于加热建筑物本身,"排出热"直接加热建筑物周围的格子。
                              建筑物的"排出热"将会按建筑物的面积平分到每个单元格。当那个单元格的物质质量少于1.5kg时,那个格子分得的热量会按比例缩小。(见其他热传递)
                              ~~对于多数建筑物,如电池和反熵,"操作热"是"排出热"的4倍;
                              ~~对于空间加热器,"操作热"是"排出热"的8倍;
                              ~~对于液体加热棒,"操作热"是"排出热"的1/62.5;
                              ~~对于空调和液冷,它们只有"操作热","排出热"等于零。所有产生的热量都直接加热到机器本身。
                              如果建筑物周围的物质导热率低,建筑物的"排出热"比例较高,那么就可能出现周围的格子比建筑物温度高的情况。比如截止管道版的原油裂解系统,就是利用了这一特点。
                              绝大多数建筑物的"操作热"和"排出热"都是定值,但有以下例外。(基于252151版)
                              空调和液冷(采暖集热器)的"操作热"正好等于"从气体或液体中移走的热量",是实时计算的。
                              放置在真空中的建筑物,其"排出热"会消失。当“建筑物周围的格子”温度高于“建筑物的过热温度”时,其"排出热"也会消失。要注意的是,即使"排出热"消失了,显示的总产热并不会发生变化。所以你不能通过查看建筑物显示的产热,判断"排出热"是否正常产生。
                              一些需要通入冷却液的机器,如金属精炼机,除了正常的产热("操作热"和"排出热")外,还会有一部分热量排放到冷却液中。


                              17楼2018-01-27 13:38
                              回复