1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- from flask import Flask, request, jsonify
- import math
- import numpy as np
- 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)
- """
- # 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']
- alpha = data.get('alpha', 1.2) # 默认修正系数
- # 计算解冻时间
- thaw_time = calculate_thaw_time(mass, specific_heat, thermal_conductivity, length, width, height, T_thaw, T_env, T_initial, 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)
|