Converge教程:DS18冷流设置与压缩比调整详解

需积分: 50 12 下载量 177 浏览量 更新于2024-07-15 收藏 3.2MB PDF 举报
本资源是一份详细的Converge仿真软件教程,针对内燃机领域的初学者,特别针对DS18发动机模型的冷流设定。教程属于2.4版本,内容覆盖了Converge软件的基础操作流程,包括但不限于: 1. 总体介绍:这部分为用户提供了对Converge软件的全面理解,可能涉及软件的功能特性、适用场景以及在发动机设计中的重要性。 2. Converge文件结构和Studio界面:这部分介绍了软件的工作环境,包括文件组织方式和关键界面元素,如模型导入、设置管理等。 3. Boundary Flagging:这部分讲解如何正确地标记边界条件,对于冷流设定至关重要,可能涉及壁面类型划分和边界条件的设置规则。 4. Coldflowing Setting:教程详细阐述了冷流设置的过程,涉及到压缩比的确认与调整。压缩比是影响燃烧效率和性能的关键参数,通过两种方法进行校准:一是通过计算模型在特定转角下的TDC和BDC体积来确定,二是直接在Studio的Compressionratio面板进行调整。 5. 定容喷雾标定教程:这部分可能涉及喷油器工作原理和如何在Converge中准确模拟,确保燃油在燃烧室内的精确分布。 6. Spraying Setting:关于燃油喷射系统的设定,可能涵盖了喷嘴参数、喷射速率和喷射角度的设定技巧。 7. Combustion Setting:这部分着重于燃烧过程的设定,包括燃料混合物的形成、燃烧室内的化学反应以及排放物预测。 8. 网格预览与结果转换:介绍如何查看和优化网格质量,以确保仿真结果的精度,并处理计算结果的数据转换。 9. 三维动网格确认:这部分可能涉及动态网格技术,解释如何在发动机工作循环中实时调整网格,以适应复杂流动工况。 10. 保密与版权:文档强调了所有公司名称和商标的权益,并要求未经许可不得复制或使用,体现了严格的知识产权保护政策。 这份教程为想要深入学习和使用Converge在发动机冷流分析中的工程师提供了一套系统且详尽的指导,旨在提升他们模拟和优化发动机性能的能力。

帮我把下面一段C++代码改写成python代码:#include "Trade.h" #include "WPrice.h" #include <algorithm> double normalCDF(double x) // Phi(-∞, x) aka N(x) { return std::erfc(-x / std::sqrt(2)) / 2; //erfc()是互补误差函数,该返回值表示标准正态分布下var小于x的概率,即N(x) } CTrade::CTrade(double tick) : wp_bid(0.01), wp_ask(0.01), m_tick(tick), m_TimeRound(50) { newday(NULL); } CTrade::~CTrade() { } void CTrade::OnBook(const BTRec& btRec) { wp.setGamma(0.1); wp_bid = wp.getWP(&btRec.Bids); wp_ask = wp.getWP(&btRec.Asks); if (wp_mid > 0){ //wp_mid初始化为-1,仅遇到第一条BTRec记录时条件为false double wp_now = (wp_bid + wp_ask) / 2; //updated wp_mid int volume = btRec.volume; //volume between two orderbook records double ratio = normalCDF((wp_now - wp_mid) / (2 * m_tick)); //m_tick = tick = 0.2 double buyvolume = ratio*volume, sellvolume = (1 - ratio)*volume; m_TimeRound.update(buyvolume, sellvolume, btRec.rec_time.timestamp); //volume moving average if (mv_volume < 0) { mv_volume = volume; mv_buyvolume = buyvolume; } else{ mv_volume += 0.002*(volume - mv_volume); mv_buyvolume += 0.002*(buyvolume - mv_buyvolume); } // round trip volatility if (time_ini < 0 || btRec.rec_time.timestamp - time_ini >= time_scale){ if (time_ini>0){ double dp = wp_now - wp_ini; volatility += 0.05*(dp*dp - volatility); } time_scale = m_TimeRound.getTime() * 1000; //in milliseconds time_ini = btRec.rec_time.timestamp; wp_ini = wp_now; } } wp_mid = (wp_bid + wp_ask) / 2; } void CTrade::newday(const char* p) { wp_mid = -1; m_TimeRound.newday(p); volatility = 16 * m_tick*m_tick; time_slapse = -1, time_scale = -1, wp_ini = -1, time_ini = -1; mv_buyvolume = mv_volume = -1; }

203 浏览量

给下面代码每一行给上注释并说明这段代码的意思#include "pch.h" #include "FinBudgetSupport.h" #include <map> time_t StringToDateTime(char* str) { tm tm_; int year, month, day, hour, min, sec; afxDump << str << "\n\n\n\n"; sscanf_s(str, "%d-%d-%d %d:%d:%d", &year, &month, &day, &hour, &min, &sec); tm_.tm_year = year - 1900; tm_.tm_mon = month - 1; tm_.tm_mday = day; tm_.tm_hour = hour; tm_.tm_min = min; tm_.tm_sec = sec; tm_.tm_isdst = -1; time_t t_ = mktime(&tm_); return t_; } CString DateTimeToString(time_t _time) { tm *_tm = new tm(); gmtime_s(_tm ,&_time); CString t_str; t_str.Format(_T("%d-%d-%d %d:%d:%d"), _tm->tm_year+1900, 1+_tm->tm_mon, _tm->tm_mday, _tm->tm_hour , _tm->tm_min, _tm->tm_sec); delete _tm; return t_str; } CString _toCString(double _value) { CString t_str; t_str.Format(_T("%lf"), _value); return t_str; } CString _toCString(int _value) { CString t_str; t_str.Format(_T("%d"), _value); return t_str; } double _toDouble(CString _str) { return _ttof(_str); } char* CStringToCharArray(CString str) { int str_len = WideCharToMultiByte(CP_ACP, 0, str, str.GetLength(), NULL, 0, NULL, NULL);//计算字节数 char* CharArray = new char[str_len + 1]; WideCharToMultiByte(CP_ACP, 0, str, str.GetLength(), CharArray, str_len, NULL, NULL); CharArray[str_len] = '\0'; return CharArray; } void SplitString(const std::string& s, std::vector<std::string>& v, const std::string& c) { std::string::size_type pos1, pos2; pos2 = s.find(c); pos1 = 0; while (std::string::npos != pos2) { v.push_back(s.substr(pos1, pos2 - pos1)); pos1 = pos2 + c.size(); pos2 = s.find(c, pos1); } if (pos1 != s.length()) v.push_back(s.substr(pos1)); }

158 浏览量