[C++调试笔记]网格划分grid_pic.cpp
生活随笔
收集整理的這篇文章主要介紹了
[C++调试笔记]网格划分grid_pic.cpp
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
????????
?
#include <stdio.h> #include <math.h> #include "define.h" /* *ptr_e,ptr_D,ptr_C3分別代表指向三種類型的指針* *dens[]代表三種粒子的密度*char_dens代表電荷密度 */ void grid_pic(particle* prt_e, particle* ptr_D, particle* ptr_C3, int* numb, double(*dens)[Nz_plas], double* char_dens) {int i;pic(prt_e, numb[0], qe, dens[0]);pic(ptr_D, numb[1], qi, dens[1]);pic(ptr_C3, numb[2], q_C3, dens[2]);for (i = 0; i < Nz_plas; i++)char_dens[i] = dens[0][i] + dens[1][i] + dens[2][i];for (i = 0; i < Nz_plas; i++){/* 網格點電荷密度->網格點數密度 */dens[0][i] /= qe; dens[1][i] /= qi;dens[2][i] /= q_C3;/* 最后一個網格的電子數密度 */if (i == Nz_plas - 1)printf("最后一個網格的電子數密度=%10.6e \n", dens[0][i]);}stime(); }/* 云分室法求解電荷密度 */ void pic(particle* ptr, int numb, double q, double* dens) {int i, ip;double l1, l2;double q_real, z;/* 每個網格點電荷密度重置為0 */for (i = 0; i < Nz_plas; i++)dens[i] = 0.0;/* 網格點電荷密度->網格點電荷量 */for (i = 0; i < numb; i++)//遍歷每個粒子{q_real = ptr[i].weig * q;//電荷量權重變換z = ptr[i].z;ip = (int)(z / dz_plas);//第i個粒子的位置l2 = z / dz_plas - ip; //左半網格l1 = 1.0 - l2; //右半網格dens[ip] += q_real * l1; //權重分配dens[ip + 1] += q_real * l2; //權重分配}/* 網格點電荷量->網格點電荷密度 */for (i = 1; i < Nz_plas - 1; i++) //遍歷2-Nz_plas個網格dens[i] /= dz_plas; //將網格點的電荷量平均到左右半個網格上dens[0] /= (0.5 * dz_plas); //首個網格點的電荷量平均到右半網格上dens[Nz_plas - 1] /= (0.5 * dz_plas); //最后一個網格點的電荷量平均到左半網格上 }總結
以上是生活随笔為你收集整理的[C++调试笔记]网格划分grid_pic.cpp的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你的存在,就是打我脸的
- 下一篇: 别看程序员只是表面风光