2323232

(说明:进入系统用root登录后按CTRL+ALT+F3进入全命令界面再执行以下操作。) 小明需要使用traceroute www.baidu.com 对途经路由跟踪,发现系统默认没有该命令, 用yum install traceroute安装提示没有软件仓库所以需要配置yum本地源,安装该程序。 任务一:设置本地YUM源并安装traceroute 操作:挂载光驱 mount /dev/cdrom /media 使用vi建立配置文件 vi /etc/yum.repos.d/dvd.repo 文件内容如下: [Media] name=Media baseurl=file:///media/BaseOS gpgcheck=0 enabled=1 [rhel8-AppStream] name=rhel8-AppStream baseurl=file:///media/AppStream gpgcheck=0 enabled=1 按esc再输入:wq保存后即可用命令安装traceroute和vim命令 (安装完成后使用traceroute www.baidu.com 执行后拍照) 任务二:设置登陆后静态欢迎界面,设置本地登录后静态的欢迎语: Welcome to my Linux 2323232+zhangsan (学号+姓名拼音) 操作:修改/etc/motd文件内容即可 (设置好后用exit命令退出后重新登录显示欢迎语后拍照) 任务三:设置登录前动态欢迎界面如下: 操作: 修改对应配置文件 vim /etc/issue 内容改为如下信息: ********************************* ChinaSkills 2025–zhangsan(此处用学生自己姓名全拼) Module C Linux >>\n<< >>\s \r<< >>\d \t<< ********************************* 保存后在登录界面输入exit退出登录即可看到设置的界面信息。(拍照) (以上转义序列的含义:\n - 显示主机名\s - 操作系统名称\r - 操作系统版本\d - 当前日期\t - 当前时间)
最新发布
09-24
2025年CCF非专业级别软件能力认证第一轮模拟测 试 (CSP-J1)入门级 C++ 语言试题 认证时间:2024年9月21日09:30-11:30 一、单项选择题(共15题,每题2分,共计30分) 1. 以下哪一项不属于内存(D) A. RAM B. ROM C. Cache D. DOS 2. 下列四种不同进制的数中,与其他三项不同的是(D) A. (11111101001)2 B. (5622)7 C. (BCA)13 D. (13231)6 3. 现在有一个存有2048 × 1024 像素的黑白图像,请问需要多大存储空间?B A. 512KB B. 256KB C. 2MB D. 1MB 4. 5个男生,3个女生围成一圈,要求女生之间互不相邻,求有多少种方案?A A. 1440 B. 7200 C. 576 D. 2880 5. 中国计算机学会于( B )年创办全国青少年计算机程序设计竞赛。 A. 1983 B. 1984 C. 1985 D. 1986 6. 现在有序列 “7,4,5,2,3” 若使用冒泡排序获得其单调递增序列,需要进行多少次交换操作? A. 6 B. 7 C. 8 D. 9 7. 二叉树的前序遍历为 “1,2,3,4,5,6,7,8,9”,中序遍历为 “3,2,5,4,6,1,7,9,8”,则后序遍历为() A. “3,5,6,4,2,9,8,7,1” B. “4,5,6,3,2,9,8,7,1” C. “4,5,6,3,2,9,7,8,1” D. “4,6,5,3,2,9,7,8,1” 8. 能找出欧拉回路的无向图可能不具有的性质有() A. 所有点的度数都为偶数 B. 图中的所有点互相连通 C. 图中包含的边数为偶数 D. 一定能找到一条欧拉路 9. 以下哪项不是C++语言的关键字() A. goto B. do C. caseI D. cin 10. 2025以内,与2025互质的数有多少个?() A. 1080 B. 1024 C. 1001 D. 945 11. 16 位 unsigned short int 的数据范围是() A. 0~32767 B. 0~32768 C. 0~65535 D. 0~65536 12. (3+(7-2)*5-6)/2 的后缀表达式为() A. 3 7 2 - 5 * 6 - + 2 / B. 3 7 + 2 - 5 * 6 - 2 / C. 3 7 2 - 5 * 6 + - 2 / D. 6 7 2 - 5 * 3 + - 2 / 13. 73 的格雷码为() A. 1010101 B. 1001001 C. 1101101 D. 0110110 14. 下列语言中使用解释器将源代码转为机器代码的语言为() A. C# B. JavaScript C. Java D. C++ 15. 在使用快速幂算法时,计算2^23时需要使用多少次乘法() A. 6 B. 7 C. 8 D. 22 二、 阅读程序(程序输入不超过数组成字符串定义的范围:判断题正确填"T",错误填"F";除特殊说明外,判断题1.5 分,选择题3分,共计40分) 程序一 16. 第 行中 函数若传入的 则可能导致编译错误() 17. tree[i] 表示 a[i]~a[i+lowbit(i)] 的和() 18. ask(i) 求解的是 a[1]~a[i] 的和 () #include<iostream> using namespace std; const int NN = 1e5; int n; int a[NN]; int tree[NN]; int lowbit(int x){return x & (-x);} void add(int pos,int num){ while(pos<= n){ tree[pos] += num; pos += lowbit(pos); } } int ask(int pos){ int ans = 0; while(pos){ ans += tree[pos]; pos -= lowbit(pos); } return ans; } int main(){ cin >> n; for(int i = 1; i <= n; ++i) cin >> a[i]; for(int i = 1; i <= n; ++i) add(i,a[i]); int m; cin >> m; for(int i = 1,pos,num; i <= m; ++i){ cin >> pos >> num; a[pos] += num; add(pos,num); } int query; cin >> query; while(query--){ int l,r; cin >> l >> r; cout << ask(r) - ask(l-1) << endl; } } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 19. 当输入如下时,输出为() A. 13 B. 16 C. 17 D. 20 20. 程序第 行,若将 query++ 换为 `++query 对于程序(输入合法)的影响为() A. 能得到所有正确的输出,但是输入结束后程序未能正常结束 B. 只能得到部分输出,且输出的答案并非完全正确 C. 能得到所有正确的输出,且输入结束后程序正常结束 D. 只能得到部分输出,但输出的答案完全正确 程序二 21. 当输入的字符串为 AC{[3FUN}]% 时程序的输出为 AC{FUNFUNFUN} () 22. (2分)程序的输出一定不包含 “%” 和 “ ”(空格)() 5 3 1 2 4 6 1 1 3 2 4 1 2 5 1 2 3 4 5 6 7 #include<iostream> #include<string> using namespace std; string encode(){ int num; char ch; string ans = "", ori = ""; while(cin >> ch && ch != '%'){ if(ch == '['){ cin >> num; ori = encode(); while(num--) ans += ori; } else if(ch == ']') return ans; else ans += ch; } return ans; } int main(){ cout << encode(); return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 23. 将第 行替换为 while(ch != '%' && cin >> ch){ 对程序答案的输出没有影响() 24. 当输入的字符串为 AC[3 2%[2 FUN]%HAPPY 时,输出为() A. AC222FUNFUN B. AC2FUNFUN2FUNFUN2FUNFUN C. AC222FUNFUNHAPPY D. AC2FUNFUN2FUNFUN2FUNFUNHAPPY 25. (4分)当输入的字符串为 AC[3 2 3 %[4 [2% 3 2 FUN]% 时,输出为() A. AC23232332FUN32FUN32FUN32FUN B. AC2 3 2 3 2 3 2 FUN2 FUN2 FUN2 FUN C. AC2 3 2 3 2 3 2 3 2 FUN 3 2 FUN 3 2 FUN 3 2 FUN D. AC2323232FUN2FUN2FUN2FUN 26. 若将 encode 函数所有的返回语句都改为 return ori + ans + ori 则输入 AC[3FUN]% 得到的输出为() A. ACFUNFUNFUNFUNFUN B. FUNACFUNFUNFUNFUN C. FUNFUNACFUNFUNFUN D. FUNFUNFUNACFUNFUN 程序三 #include<iostream> using namespace std; int n,a[500010],c[500010]; long long ans; void merge_sort(int left,int right) { if(left == right) return; int mid = (left + right) / 2, i = left, j = mid+1, k = left; merge_sort(left,mid); merge_sort(mid+1,right); while(i <= mid && j <= right) if(a[i] <= a[j]) c[k++] = a[i++]; else c[k++] = a[j++], ans += mid-i; while(i <= mid) c[k++] = a[i++]; while(j <= right) c[k++] = a[j++]; for(int i = left; i <= right; i++) a[i] = c[i]; } int main(){ cin >> n; for(int i = 1; i <= n; i++) cin >> a[i]; merge_sort(1,n); cout << ans; return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 27. 若将第 行 的赋值改为 mid = left + (right-left)/2.0 ,对程序无影响( ) 28. 该程序总是输出非负整数() 29. 该程序用于求解逆序对个数() 30. 若输入 5 2 4 3 1 3 则程序输出为() A. 2 B. 4 C. 5 D. 10 31. (4分)若将第 行的 ans += mid - i 改为 ans += right - i - mid + 2 并输入 5 2 4 3 1 3 则程序 输出为() A. 2 B. 4 C. 5 D. 10 32. 若 , 则程序可能输出的答案的最大值为() A. 12 B. 15 C.18 D. 21 三、完善程序(单选题,每小题 分,共计 分) 1 立方根求解 问题:给一浮点数 ,输出其立方根(保留5位小数) 33. ①处应填() A. 1e5 B. 1e-5 C. 1e-6 D. 1e-7 34. ②处应填() A. right - left > eps B. right - left > -eps C. left - right > eps D. left - right > -eps 35. ③处应填() A. left = mid B. right = mid C. left = mid + eps D. right = mid - eps 36. ④处应填() A. left = mid B. right = mid C. left = mid + eps D. right = mid - eps #include<cstdio> using namespace std; const double eps = ①; int main(){ double a; double left = -1000.0,right = 1000.0,mid; scanf("%lf",&a); while(②){ mid = left + (right - left) / 2; if(mid * mid < a / mid) ③; else ④; } printf("⑤",mid); return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 37. ⑤处应填() A. %5.lf B. %.5lf C. %6.lf D. %.6lf 2 石子合并 给一排 堆石子,每堆石子的质量为 ,每次合并操作代价为两堆石子质量之和,求将所有石子堆合并为一个大石堆 所需要的最小代价 38. ①处应填() A. sum_pre[i+1] = sum_pre[i] + a[i+1] B. sum_pre[i+1] = sum_pre[i] + a[i] C. sum_pre[i] = sum_pre[i-1] + a[i-1] D. sum_pre[i] = sum_pre[i-1] + a[i] 39. ②处应填() A. 0 B. 1 C. 2 D. 3 40. ③处应填() A. i + len B. i + len - 1 C. n - i - len D. n - i - len + 1 41. ④处应填() A. dp[i][k-1] + dp[k][j] + sum_pre[j] - sum_pre[i] B. dp[i][k-1] + dp[k][j] + sum_pre[j] - sum_pre[i-1] C. dp[i][k] + dp[k+1][j] + sum_pre[j] - sum_pre[i] D. dp[i][k] + dp[k+1][j] + sum_pre[j] - sum_pre[i-1] 42. ⑤处应填() A. dp[1][1] B. dp[n][n] C. dp[1][n] D. dp[1][1] + dp[1][n] + dp[n][n] #include<iostream> using namespace std; int n,a[310],sum_pre[310],dp[310][310]; int main() { cin >> n; memset(dp,0x3f,sizeof(dp)); for(int i = 1; i <= n; i++) { cin >> a[i]; ①; ②; } for(int len = ③; len <= n; len++) { for(int i = 1; i <= n-len+1; i++) { int j = ③; for(int k = i; k < j; k++) dp[i][j] = min(dp[i][j], ④); } } cout << dp[1][n]; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
07-25
Variables = "x", "T", "P", "N", "Y", "r" 0.0000000E+00 1.0000000E+03 5.0000000E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 2.0202020E-02 1.0000000E+03 4.9898375E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 4.0404040E-02 1.0000000E+03 4.9795496E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 6.0606062E-02 1.0000000E+03 4.9691359E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 8.0808081E-02 1.0000000E+03 4.9585922E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 1.0101010E-01 1.0000000E+03 4.9479172E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 1.2121212E-01 1.0000000E+03 4.9371070E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 1.4141414E-01 1.0000000E+03 4.9261602E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 1.6161616E-01 1.0000000E+03 4.9150742E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 1.8181819E-01 1.0000000E+03 4.9038465E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 2.0202020E-01 1.0000000E+03 4.8924727E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 2.2222222E-01 1.0000000E+03 4.8809523E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 2.4242425E-01 1.0000000E+03 4.8692809E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 2.6262626E-01 1.0000000E+03 4.8574566E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 2.8282827E-01 1.0000000E+03 4.8454746E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 3.0303031E-01 1.0000000E+03 4.8333336E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 3.2323232E-01 1.0000000E+03 4.8210289E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 3.4343433E-01 1.0000000E+03 4.8085586E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 3.6363637E-01 1.0000000E+03 4.7959184E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 3.8383839E-01 1.0000000E+03 4.7831051E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 4.0404040E-01 1.0000000E+03 4.7701148E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 4.2424244E-01 1.0000000E+03 4.7569445E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 4.4444445E-01 1.0000000E+03 4.7435898E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 4.6464646E-01 1.0000000E+03 4.7300473E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 4.8484850E-01 1.0000000E+03 4.7163125E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 5.0505048E-01 1.0000000E+03 4.7023812E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 5.2525252E-01 1.0000000E+03 4.6882492E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 5.4545456E-01 1.0000000E+03 4.6739133E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 5.6565654E-01 1.0000000E+03 4.6593668E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 5.8585858E-01 1.0000000E+03 4.6446074E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 6.0606062E-01 1.0000000E+03 4.6296297E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 6.2626261E-01 1.0000000E+03 4.6144281E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 6.4646465E-01 1.0000000E+03 4.5989980E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 6.6666669E-01 1.0000000E+03 4.5833336E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 6.8686867E-01 1.0000000E+03 4.5674297E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 7.0707071E-01 1.0000000E+03 4.5512820E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 7.2727275E-01 1.0000000E+03 4.5348836E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 7.4747473E-01 1.0000000E+03 4.5182293E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 7.6767677E-01 1.0000000E+03 4.5013121E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 7.8787881E-01 1.0000000E+03 4.4841266E+04 0.0000000E+00 0.0000000E+00 0.0000000E+00 8.0808079E-01 Infinity Infinity Infinity NaN NaN 8.2828283E-01 NaN NaN NaN NaN 0.0000000E+00 8.4848487E-01 NaN NaN NaN NaN 0.0000000E+00 8.6868685E-01 NaN NaN NaN NaN 0.0000000E+00 8.8888890E-01 NaN NaN NaN NaN 0.0000000E+00 9.0909094E-01 NaN NaN NaN NaN 0.0000000E+00 9.2929292E-01 NaN NaN NaN NaN 0.0000000E+00 9.4949496E-01 NaN NaN NaN NaN 0.0000000E+00 9.6969700E-01 NaN NaN NaN NaN 0.0000000E+00 9.8989898E-01 NaN NaN NaN NaN 0.0000000E+00 1.0101010E+00 NaN NaN NaN NaN 0.0000000E+00 1.0303030E+00 NaN NaN NaN NaN 0.0000000E+00 1.0505050E+00 NaN NaN NaN NaN 0.0000000E+00 1.0707071E+00 NaN NaN NaN NaN 0.0000000E+00 1.0909091E+00 NaN NaN NaN NaN 0.0000000E+00 1.1111112E+00 NaN NaN NaN NaN 0.0000000E+00 1.1313131E+00 NaN NaN NaN NaN 0.0000000E+00 1.1515151E+00 NaN NaN NaN NaN 0.0000000E+00 1.1717172E+00 NaN NaN NaN NaN 0.0000000E+00 1.1919192E+00 NaN NaN NaN NaN 0.0000000E+00 1.2121212E+00 NaN NaN NaN NaN 0.0000000E+00 1.2323233E+00 NaN NaN NaN NaN 0.0000000E+00 1.2525252E+00 NaN NaN NaN NaN 0.0000000E+00 1.2727273E+00 NaN NaN NaN NaN 0.0000000E+00 1.2929293E+00 NaN NaN NaN NaN 0.0000000E+00 1.3131313E+00 NaN NaN NaN NaN 0.0000000E+00 1.3333334E+00 NaN NaN NaN NaN 0.0000000E+00 1.3535353E+00 NaN NaN NaN NaN 0.0000000E+00 1.3737373E+00 NaN NaN NaN NaN 0.0000000E+00 1.3939394E+00 NaN NaN NaN NaN 0.0000000E+00 1.4141414E+00 NaN NaN NaN NaN 0.0000000E+00 1.4343435E+00 NaN NaN NaN NaN 0.0000000E+00 1.4545455E+00 NaN NaN NaN NaN 0.0000000E+00 1.4747474E+00 NaN NaN NaN NaN 0.0000000E+00 1.4949495E+00 NaN NaN NaN NaN 0.0000000E+00 1.5151515E+00 NaN NaN NaN NaN 0.0000000E+00 1.5353535E+00 NaN NaN NaN NaN 0.0000000E+00 程序输出结果如上,修改程序module constants implicit none ! 物理常数 real, parameter :: pi = 3.141592653589793 real, parameter :: R_univ = 8.314462618 ! 通用气体常数 [J/(mol·K)] real, parameter :: k_B = 1.380649e-23 ! 玻尔兹曼常数 [J/K] real, parameter :: N_A = 6.02214076e23 ! 阿伏伽德罗常数 [1/mol] ! 水物性参数 real, parameter :: M_H2O = 0.018015 ! 水的摩尔质量 [kg/mol] real, parameter :: rho_l = 1000.0 ! 液态水密度 [kg/m³] real, parameter :: sigma_H2O = 0.072 ! 表面张力 [N/m] real, parameter :: h_fg = 2.257e6 ! 汽化潜热 [J/kg] real, parameter :: cp_v = 1410.0 ! 水蒸气比热 [J/(kg·K)] ! 发动机参数 real, parameter :: De = 0.2 ! 喷口直径 [m] real, parameter :: T0 = 1000.0 ! 喷口温度 [K] real, parameter :: P0 = 50000.0 ! 喷口压力 [Pa] real, parameter :: U0 = 2000.0 ! 喷口速度 [m/s] real, parameter :: X_H2O = 0.22 ! 水蒸气摩尔分数 ! 数值参数 integer, parameter :: nx = 100 ! 空间网格数 integer, parameter :: nt = 1000 ! 时间步数 real, parameter :: dt = 1e-5 ! 时间步长 [s] real, parameter :: L_domain = 10.0 * De ! 计算域长度 [m] ! 共享变量 real, allocatable :: P_g(:) ! 压力场 end module constants program condensation_model use constants implicit none ! 场变量定义 real :: x(nx), dx real :: T_g(nx), U_g(nx), rho_g(nx) real :: N_d(nx), Y_d(nx), r_d(nx) ! 液滴数密度、质量分数、半径 real :: m_v(nx), J_nuc(nx), dr_dt(nx) ! 凝结速率、成核率、半径增长率 ! 辅助变量 real :: S(nx), r_c(nx), P_sat(nx) integer :: i, t_step ! 分配共享数组 allocate(P_g(nx)) ! 初始化网格 dx = L_domain / (nx - 1) do i = 1, nx x(i) = (i - 1) * dx end do ! 初始化流场 (简化线性分布) do i = 1, nx P_g(i) = P0 * (1.0 - 0.8 * x(i)/L_domain) T_g(i) = T0 * (1.0 - 0.6 * x(i)/L_domain) U_g(i) = U0 * (1.0 - 0.3 * x(i)/L_domain) rho_g(i) = P_g(i) / (287.0 * T_g(i)) ! 空气气体常数 end do ! 初始化液相变量 N_d = 0.0 Y_d = 0.0 r_d = 0.0 ! 时间迭代循环 do t_step = 1, nt ! 计算过饱和比和临界半径 call calculate_saturation_ratio(P_g, T_g, S, P_sat, r_c) ! 初始化成核和生长参数 J_nuc = 0.0 dr_dt = 0.0 ! 应用Schmidt-Appleman冷凝判据 (显式循环代替where) do i = 1, nx if (S(i) > 1.0) then call nucleation_model_element(T_g(i), rho_g(i), S(i), r_c(i), J_nuc(i)) call droplet_growth_model_element(T_g(i), rho_g(i), r_d(i), r_c(i), S(i), dr_dt(i)) end if end do ! 计算凝结质量速率 do i = 1, nx if (r_d(i) > 0.0) then m_v(i) = 4.0 * pi * r_d(i)**2 * rho_l * dr_dt(i) * N_d(i) else m_v(i) = 0.0 endif end do ! 更新液相控制方程 call update_liquid_phase(N_d, Y_d, r_d, J_nuc, m_v, dr_dt, U_g, dx) ! 更新气相控制方程 call update_gas_phase(T_g, P_g, U_g, rho_g, m_v, dx) ! 输出数据 if (mod(t_step, 100) == 0) then call output_data(t_step, x, T_g, P_g, N_d, Y_d, r_d) end if end do ! 输出最终结果 call output_data(nt, x, T_g, P_g, N_d, Y_d, r_d) deallocate(P_g) contains ! 计算饱和比和临界半径 subroutine calculate_saturation_ratio(P, T, S, P_sat, r_c) real, intent(in) :: P(:), T(:) real, intent(out) :: S(:), P_sat(:), r_c(:) integer :: i do i = 1, nx P_sat(i) = 611.0 * exp(5423.0 * (1.0/273.0 - 1.0/T(i))) ! 简化Antoine方程 S(i) = (X_H2O * P(i)) / P_sat(i) r_c(i) = merge(2.0 * sigma_H2O / (rho_l * (R_univ/M_H2O) * T(i) * log(S(i))), & 1e-9, S(i) > 1.0) end do end subroutine ! 单元素成核模型 subroutine nucleation_model_element(T, rho_g, S, r_c, J_nuc) use constants, only: pi, sigma_H2O, k_B real, intent(in) :: T, rho_g, S, r_c real, intent(out) :: J_nuc real :: A, B, DeltaG if (S > 1.0) then DeltaG = 4.0 * pi * r_c**2 * sigma_H2O / 3.0 A = 1e30 ! 指前因子 B = 4.0 * pi * r_c**2 * sigma_H2O / (3.0 * k_B * T) J_nuc = A * exp(-B) else J_nuc = 0.0 end if end subroutine ! 单元素液滴生长模型 subroutine droplet_growth_model_element(T, rho_g, r, r_c, S, dr_dt) use constants, only: M_H2O, R_univ, rho_l, h_fg, sigma_H2O, pi, P_g real, intent(in) :: T, rho_g, r, r_c, S real, intent(out) :: dr_dt real :: lambda_v, Kn, Pr_v, T_sat if (S > 1.0 .and. r > 0.0) then lambda_v = 0.026 ! 导热系数 Kn = sqrt(pi * M_H2O / (2.0 * R_univ * T)) / r Pr_v = 0.71 ! 普朗特数 T_sat = 373.0 - (P_g(i) - 101325.0) * 0.00025 ! 简化计算 dr_dt = lambda_v * (T_sat - T) * (1.0 - r_c/r) & / (rho_l * h_fg * r * (1.0 + 3.78*(1.0 - 0.82*Kn)/Pr_v * Kn)) else dr_dt = 0.0 end if end subroutine ! 更新液相变量 subroutine update_liquid_phase(N_d, Y_d, r_d, J_nuc, m_v, dr_dt, U, dx) use constants, only: dt, rho_l, pi real, intent(inout) :: N_d(:), Y_d(:), r_d(:) real, intent(in) :: J_nuc(:), m_v(:), dr_dt(:), U(:), dx integer :: i do i = 2, nx-1 ! 数密度守恒 N_d(i) = N_d(i) + dt*(J_nuc(i) - U(i)*(N_d(i)-N_d(i-1))/dx) ! 质量分数守恒 Y_d(i) = Y_d(i) + dt*(m_v(i)/rho_l - U(i)*(Y_d(i)-Y_d(i-1))/dx) ! 更新液滴半径 if (N_d(i) > 0.0) then r_d(i) = (3.0 * Y_d(i) / (4.0 * pi * rho_l * N_d(i)))**(1.0/3.0) else r_d(i) = 0.0 end if end do end subroutine ! 更新气相变量 subroutine update_gas_phase(T, P, U, rho, m_v, dx) use constants, only: dt, h_fg, cp_v real, intent(inout) :: T(:), P(:), U(:), rho(:) real, intent(in) :: m_v(:), dx integer :: i do i = 2, nx-1 ! 连续方程 rho(i) = rho(i) - dt * m_v(i) ! 动量方程 U(i) = U(i) - dt * U(i) * (U(i)-U(i-1))/dx - dt*(P(i)-P(i-1))/(dx*rho(i)) ! 能量方程 T(i) = T(i) - dt * U(i) * (T(i)-T(i-1))/dx + dt * m_v(i) * h_fg / (rho(i)*cp_v) ! 状态方程 P(i) = rho(i) * 287.0 * T(i) end do end subroutine ! 数据输出 subroutine output_data(step, x, T, P, N, Y, r) integer, intent(in) :: step real, intent(in) :: x(:), T(:), P(:), N(:), Y(:), r(:) character(len=50) :: filename integer :: i write(filename, '(a,i6.6,a)') 'output_', step, '.dat' open(unit=10, file=filename, status='replace') write(10, '(A)') 'Variables = "x", "T", "P", "N", "Y", "r"' do i = 1, nx write(10, '(6ES16.7)') x(i), T(i), P(i), N(i), Y(i), r(i) end do close(10) end subroutine end program condensation_model
06-03
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值