123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128 |
- from flask import Flask, request, jsonify
- import math
- # 1. 对流传热系数(h_convection)
- # 对流传热系数描述了热空气和物料之间的热交换效率。对于热风循环系统,通常来说:
- #
- # 对于静止空气,常用的对流传热系数约为 5 W/m²·°C。
- # 对于强制对流(如风扇或气流循环),该值可以显著增大,通常范围是 10-100 W/m²·°C,具体值会根据风速和空气流动的强度而变化。
- # 如何选择值:
- #
- # 如果你知道解冻库中风速的具体数值,可以参考下列表格估算:
- # 低风速(约 0.5-1 m/s):h_convection 约为 10-15 W/m²·°C
- # 中等风速(约 1-3 m/s):h_convection 约为 15-30 W/m²·°C
- # 高风速(超过 3 m/s):h_convection 约为 30-50 W/m²·°C
- # 因此,你可以根据实际风速或者系统的设计,调整该参数。
- #
- # 2. 热损失因子(heat_loss_factor)
- # 热损失因子用于反映热量的流失,通常与解冻库的保温效果、外界环境温度以及通风情况有关。热损失因子越大,表示热量损失越严重。
- #
- # 建议参考值:
- #
- # 热损失因子范围: 0.05 到 0.2。具体值取决于库房的保温水平和周围环境温度。
- # 低热损失(良好的隔热效果): 0.05 - 0.1
- # 中等热损失: 0.1 - 0.15
- # 较高热损失(较差的保温或极端环境): 0.15 - 0.2
- # 如何设定:
- # 如果你知道解冻库的结构(例如墙壁和门的绝热层厚度、外部环境温度等),可以通过热传导计算来确定热损失。
- # 如果没有明确的实验数据,可以使用经验值来估算这个因子。
- app = Flask(__name__)
- # 定义计算解冻时间的函数
- def calculate_thaw_time(mass, specific_heat, thermal_conductivity, length, width, height, T_thaw, T_env, T_initial, alpha=1.2):
- """
- mass: 煤矿质量 (kg)
- specific_heat: 比热容 (kJ/(kg·°C))
- thermal_conductivity: 热传导系数 (W/m·°C)
- length: 煤矿堆积的长度 (m)
- width: 煤矿堆积的宽度 (m)
- height: 煤矿堆积的高度 (m)
- T_thaw: 需要解冻的温度 (°C)
- T_env: 解冻库库温 (°C)
- T_initial: 煤矿初始温度 (°C)
- alpha: 修正系数 (默认 1.2)
- """
- # def calculate_thaw_time(mass, specific_heat, thermal_conductivity, length, width, height, T_thaw, T_env, T_initial, moisture_content=0.0, alpha=1.2):
- # """
- # mass: 煤矿质量 (kg)
- # specific_heat: 比热容 (kJ/(kg·°C))
- # thermal_conductivity: 热传导系数 (W/m·°C)
- # length: 煤矿堆积的长度 (m)
- # width: 煤矿堆积的宽度 (m)
- # height: 煤矿堆积的高度 (m)
- # T_thaw: 需要解冻的温度 (°C)
- # T_env: 解冻库库温 (°C)
- # T_initial: 煤矿初始温度 (°C)
- # moisture_content: 含水量(0到1之间,0表示无水分,1表示完全是水) 默认 0.0
- # h_convection: 对流传热系数(热风循环影响)
- # heat_loss_factor: 热损失因子
- # alpha: 修正系数 (默认 1.2)
- # """
- # 1. 计算煤矿堆的外部表面积 (A)
- external_area = 2 * (length * width + length * height + width * height) #表面积
- # 2. 修正表面积 (A_effective)
- effective_area = alpha * external_area
- # 3. 避免计算中 log 的负值和分母为零的情况
- print(f"T_initial: {T_initial}")
- if T_initial == T_env or (T_thaw - T_env) / (T_initial - T_env) <= 0:
- return None
- # 4. 计算解冻时间
- thaw_time = - (mass * specific_heat) / (thermal_conductivity * effective_area) * \
- math.log((T_thaw - T_env) / (T_initial - T_env))
- return thaw_time
- # 定义 REST API 路由
- @app.route('/calculate-thaw-time', methods=['POST'])
- def calculate():
- try:
- # 获取 JSON 参数
- data = request.json
- # 打印接收到的 JSON 数据
- print("Received data:", data)
- print("Request Headers:", request.headers)
- # 必填字段校验
- required_fields = ['mass', 'specific_heat', 'thermal_conductivity', 'length', 'width', 'height', 'T_thaw', 'T_env', 'T_initial']
- for field in required_fields:
- if field not in data:
- return jsonify({"error": f"Missing field: {field}"}), 400
- # 提取参数
- mass = data['mass']
- specific_heat = data['specific_heat']
- thermal_conductivity = data['thermal_conductivity']
- length = data['length']
- width = data['width']
- height = data['height']
- T_thaw = data['T_thaw']
- T_env = data['T_env']
- T_initial = data['T_initial']
- # moisture_content = data.get('moisture_content', 0.0) # 含水量,默认 0
- alpha = data.get('alpha', 30) # 默认修正系数
- # 计算解冻时间
- thaw_time = calculate_thaw_time(mass, specific_heat, thermal_conductivity, length, width, height, T_thaw, T_env, T_initial, alpha)
- # 加入含水量
- #thaw_time = calculate_thaw_time(mass, specific_heat, thermal_conductivity, length, width, height, T_thaw, T_env, T_initial, moisture_content, alpha)
- # 返回结果
- if thaw_time is None:
- return jsonify({"error": "Invalid input values for calculation"}), 400
- # 返回的解冻时间是小时
- return jsonify({"thaw_time": thaw_time})
- except Exception as e:
- return jsonify({"error": str(e)}), 500
- if __name__ == '__main__':
- app.run(port=9996, debug=True)
|