SCR相对标准偏差、氨氮比、截面速度,多平面计算

SCR截面速度、氨氮比等标准及相对标准偏差计算。
程序用来处理fluent通过xyplot导出的数据,导出可以选择多个平面,可计算标准偏差SD、相对标准偏差RSD,平均速度,适用于求解多个平面

# -*- coding: utf-8 -*-
"""
Created on Wed Sep 20 20:40:30 2023
该程序用来处理fluent通过xyplot导出的数据,导出可以选择多个平面,可计算标准偏差SD、相对标准偏差RSD,平均速度,适用于求解多个平面
联系QQ:3123575367,专业SCR脱硝仿真。
@author: PS
"""

import chardet #识别文件的编码格式

#确定文件编码格式
def check_code(text):
    #detect函数只需要一个 非unicode字符串参数,返回一个字典。该字典包括判断到的编码格式及判断的置信度。
    with open(text, 'rb') as f:    
        adchar = chardet.detect(f.read())  
    # adchar = chardet.detect(text)
    # 由于windows系统的编码有可能是Windows-1254,打印出来后还是乱码,所以不直接用adchar['encoding']编码

    if adchar['encoding'] == 'gbk' or adchar['encoding'] == 'GBK' or adchar['encoding'] == 'GB2312':
        
        return 'GB2312'
    else:
        return 'utf-8'

  # lists_dict ={}
  # for i in range(num_lists):
  #     lists_dict[f"list_{i}"] = []
  # print(lists_dict)
  # lists_dict[list_0]
    
#读取文件并进行计算 
def read_file_text(file_url):
    
    
    # num_lists = eval(input("请输入要面的数量:"))
   
    with open(file_url, 'r',encoding=check_code(file_url)) as f0:
        row_nul = 2
        for i in range(row_nul):
            next(f0)#跳行,跳过前两行
        f0_word = f0.readlines()  #读取每一行
        plane_name = []
        # for i in range(array.shape[0]):
        ls = []
        #将文本数据按照行整理到列表中
        for line in f0_word:
                line = line.strip('\n')#将每段的回车替换为空格
                line = line.replace(')','')
                words = line.split()#将字符串以空格分开
                # if ls !=""
                #     point_num
                ls.append(words)
        ls = list(filter(None,ls))#删除空列表   
        # print(ls)  
        sub_lists=[] #将非字符替换成002100
        for j in range(len(ls)):
            try:
                sub_lists.append(float(ls[j][1])) #保存每一行的第1列

            except:
                print(ls[j][1])
                plane_name.append(ls[j][1])  #保存名字
                sub_lists.append("002100")   #将名字所在的位置替换成002100
                print("跳出")
                # break
                continue
        
        
        #通过特定字符分割列表
        
        # 要分割的元素
        split_element = '002100'
        # 初始化结果列表
        result = []
        temp_list = []

        # 遍历原始列表
        for item in sub_lists:
            if item == split_element:
                # 如果遇到分割元素,将临时列表添加到结果列表,并重置临时列表
                if temp_list:
                    result.append(temp_list)
                    temp_list = []
            else:
                # 否则,将当前元素添加到临时列表
                temp_list.append(item)

        # 添加最后一个子列表到结果列表
        if temp_list:
            result.append(temp_list)


        res_rec_cv ={}#储存相对标准偏差(RSD)%
        res_rec_vec ={}#储存速度
        for i in range(len(plane_name)):
            print("===========================")
            print(plane_name[i])
            y = result[i]
            #计算
            #计算含0的数据
            mean = sum(y)/len(y)
            qh =[]
            for num in y:
                qh.append(pow(num-mean,2))
            qv = pow(sum(qh)/(len(qh)-1),0.5) #标准偏差 
            cv = qv/mean #相对标准偏差
            print('+++++++未操作数据 +++++++')
            print(f'平均值为:{round(mean,4)}')
            print(f'标准偏差(SD)为:{round(qv*100,4)} %\n相对标准偏差(RSD)为:{round(cv*100,4)} %')
            
            #计算去除0后的数据
            y_no_zero = [i for i in y if i!= 0] #去除0元素
            mean_no_zero = sum(y_no_zero)/len(y_no_zero)
            qh_no_zero = [pow(num-mean_no_zero,2) for num in y_no_zero]
            qv_no_zero = pow(sum(qh_no_zero)/(len(qh_no_zero)-1),0.5)
            cv_no_zero = qv_no_zero/mean_no_zero
            # res_rec_cv[plane_name[i]] = cv_no_zero*100#填充字典
            # res_rec_vec[plane_name[i]] = mean_no_zero#填充字典
            print('------------去除 0 数据------------')
            print(f'平均值为:{round(mean_no_zero,4)}')
            print(f'标准偏差(SD)为:{round(qv_no_zero*100,4)} %\n相对标准偏差(RSD)为:{round(cv_no_zero*100,4)} %')
        
        
            #计算去除指定后的数据
            y_no_dz = [i for i in y if i> 20] #由于近壁面效应,考虑除去改数值
            mean_no_dz = sum(y_no_dz)/len(y_no_dz)
            qh_no_dz = [pow(num-mean_no_dz,2) for num in y_no_dz]
            qv_no_dz = pow(sum(qh_no_dz)/(len(qh_no_dz)-1),0.5)
            cv_no_dz = qv_no_dz/mean_no_dz
            res_rec_cv[plane_name[i]] = cv_no_dz*100#填充字典
            res_rec_vec[plane_name[i]] = mean_no_dz#填充字典
            print('------------去除 0 数据------------')
            print(f'平均值为:{round(mean_no_zero,4)}')
            print(f'标准偏差(SD)为:{round(qv_no_zero*100,4)} %\n相对标准偏差(RSD)为:{round(cv_no_zero*100,4)} %')        
        
        print("<><><><><><><><><>><><><><><")
        print("相对标准偏差(RSD)%")
        for key,value in res_rec_cv.items():
            print(key,value,"%")
        print("<><><><><><><><><>><><><><><")  
        print("速度平均值 m/s ")
        for key,value in res_rec_vec.items():
            print(key,value,"m/s")
        
read_file_text(r'D:\20241014-lc\CASE6-BOT\2\MODEL.xy') #只需要更改此处
#

在这里插入图片描述
计算结果如图:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/900129.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

maven本地打jar包依赖

本地工程的pom文件中引入了mysql依赖&#xff0c;但是在maven库中没有拉下来&#xff0c;可以到mysql官网下载jar包&#xff0c;使用maven手动打包到本地仓库中&#xff1a; 官网地址&#xff1a;MySQL :: Download MySQL Connector/J (Archived Versions) 在jar包所在位置的路…

jupyter界面修改成中文教程

在系统变量里面增加一个变量名&#xff1a;LANG 变量值&#xff1a;zh_ CN.UTF8 成功修改成为中文

什么是JavaBean?

什么是JavaBean&#xff1f;—— Java开发中的数据封装利器 在Java开发中&#xff0c;JavaBean 是一个非常实用且常见的设计模式&#xff0c;它用于简洁、高效地封装和传递数据。随着Java应用的广泛使用&#xff0c;JavaBean成为许多开发者不可或缺的工具。在本文中&#xff0c…

【linux】centos7卸载默认的jdk

查看是否已经安装java java -version 查看java文件 rpm -qa | grep java 卸载相关包 rpm -e --nodeps java-1.8.0-openjdk-headless-1.8.0.262.b10-1.el7.x86_64rpm -e --nodeps python-javapackages-3.4.1-11.el7.noarchrpm -e --nodeps tzdata-java-2020a-1.el7.noarchrpm…

Labview通讯测试耗时

写法 写命令立即读出 写命令后立即读出&#xff0c;在同一时间不能有多个地方写入&#xff0c;因此需要在整个写入后读出过程加锁 项目中会存在多个循环并行执行该VI&#xff0c;轮询PLC指令 在锁内耗时&#xff0c;就是TCP读写的实际耗时为5-8ms&#xff0c;在主VI六个循环…

【面试经典150】day 7

目录 1.买卖股票的最佳时机 II 2.跳跃游戏 3.跳跃游戏 II 4.H 指数 5.O(1) 时间插入、删除和获取随机元素 6.除自身以外数组的乘积 7.加油站 8.分发糖果 1.买卖股票的最佳时机 II class Solution {public int maxProfit(int[] prices) {//和1相比&#xff0c;这个可以一直买…

【WebSocket实战】——创建项目初始架构

这一篇文章主要是为了介绍如何在visual中创建一个项目并服务于我们要做的websockt项目&#xff0c;所以这里如果已经懂得的人&#xff0c;可以直接跳过。 目录 1&#xff09;创建空白解决方案 2&#xff09;创建asp.NET Core项目 3&#xff09;创建winform项目作为客户端1 …

53页 PPT煤炭行业数字化转型规划方案

▲关注智慧方案文库&#xff0c;学习9000多份最新解决方案&#xff0c;其中 PPT、WORD超过7000多份 &#xff0c;覆盖智慧城市多数领域的深度知识社区&#xff0c;稳定更新4年&#xff0c;日积月累&#xff0c;更懂行业需求。 53页 PPT煤炭行业数字化转型规划方案 通过对煤企高…

乐维网管平台(一):如何精准掌控 IP 管理

业网络已成为支撑业务运转的关键基础设施&#xff0c;而在企业网络管理中&#xff0c;IP 管理至关重要&#xff0c;它就像是网络秩序的守护者&#xff0c;确保网络的高效运行、安全可靠。 一、为什么企业要进行 IP 管理 1. 优化资源分配 IP 地址作为网络中的重要资源&#xf…

驱动-----向内核新加文件

编译的过程是: 1.先复制一个默认的配置到.config(存放make menuconfig的配置结果)文件。 2.make menuconfig来可视化的选择编译的对象。 3.编译与否保存在.config里面 4.然后就makefile,使用.config中的配置 接下来就是加自己的驱动文件,把自己的文件编译加到内核里面…

探索 CSS Houdini:轻松构建酷炫的 3D 卡片翻转动画

在本文中&#xff0c;我将通过构建一个3D翻卡动画来探索Houdini的功能。这将帮助你了解Houdini的核心概念&#xff0c;并引导你完成实际的代码实现。你不仅能够掌握 Houdini 的核心概念&#xff0c;还可以跟随实际的代码实现&#xff0c;逐步完成这个动画效果。 我们将深入探讨…

SpringBoot基于若依项目工时统计成本核算管理源码带教程

是前后端分离的架构&#xff0c;前端使用Vue2&#xff0c;后端使用SpringBoot2。 技术框架&#xff1a;SpringBoot2.0.0 Mybatis1.3.2 Shiro swagger-ui jpa lombok Vue2 Mysql5.7 运行环境&#xff1a;jdk8 IntelliJ IDEA maven 宝塔面板 系统与功能介绍 这是一…

Date工具类详细汇总-Date日期相关方法

# 1024程序员节 | 征文 # 目录 简介 Date工具类单元测试 Date工具类 简介 本文章是个人总结实际工作中常用到的Date工具类&#xff0c;主要包含Java-jdk8以下版本的Date相关使用方法&#xff0c;可以方便的在工作中灵活的应用&#xff0c;在个人工作期间频繁使用这些时间的格…

paddleocr使用FastDeploy 部署工具部署 rknn 模型

在 PC 端转换 pdmodel 模型为 rknn 模型和在板端使用百度飞浆开发的 FastDeploy 部署工具部署 rknn 模型 以下内容是在 PC 端系统为 Ubuntu20.04&#xff0c;板端系统为ubuntu20.04 的环境下实现的 描述&#xff1a; 官网地址 RKNN软件栈可以帮助用户快速将AI模型部署到Rockc…

【C++】STL容器-string常用接口

1.string类的优势及重要性&#xff08;部分&#xff09; C语言中&#xff0c;字符串是以’\0’结尾的一些字符的集合&#xff0c;为了操作方便&#xff0c;C标准库中提供了一些str系列的库函数&#xff0c;但是这些库函数与字符串是分离开的&#xff0c;不太符合OOP的思想&…

join 在使用的时候优化

join 在使用的时候优化 join 在使用的时候要大表驱动小表,所谓大表驱动小表要如何判别大表和小表的区别呢? 简要分析 join MySQL 的执行计划 explain select * from t1 join t2 on t1.id = t2.id;我们直接执行上面的 explain 就可以看到他们的执行计划,并且在被驱动表中看…

计算机网络-RSTP工作过程与原理

前面我们已经学习了RSTP的一些基础概念以及对于STP的改进之处&#xff0c;因为RSTP兼容STP&#xff0c;所以实际上两者工作原理是一致的&#xff0c;这里只简单过一遍&#xff0c;然后进行一些基础实验即可&#xff0c;大致还是遵循选举根桥、确定端口角色与状态、全网收敛的思…

蓝牙资讯|iOS 18.1 正式版下周推送,AirPods Pro 2耳机将带来助听器功能

苹果公司宣布将在下周发布 iOS 18.1 正式版&#xff0c;同时确认该更新将为 AirPods Pro 2 耳机带来新增“临床级”助听器功能。在启用功能后&#xff0c;用户首先需要使用 AirPods 和 iPhone 进行简短的听力测试&#xff0c;如果检测到听力损失&#xff0c;系统将创建一项“个…

DevOps实践:在GitLab CI/CD中集成静态分析Helix QAC的工作原理与优势

基于云的GitLab CI/CD平台使开发团队能够简化其CI/CD流程&#xff0c;并加速软件开发生命周期&#xff08;SDLC&#xff09;。 将严格的、基于合规性的静态分析&#xff08;如Helix QAC所提供&#xff09;作为新阶段添加到现有的GitLab CI/CD流程中&#xff0c;将进一步增强SD…

什么是恶意爬虫,有什么应对措施

在当今数字化时代&#xff0c;网络爬虫作为一种重要的数据收集工具&#xff0c;广泛应用于搜索引擎、数据分析、商业情报等领域。然而&#xff0c;恶意爬虫的出现&#xff0c;却给网站安全带来了前所未有的挑战。今天我们就来简单了解下什么是恶意爬虫&#xff0c;爬虫对网站的…