[C++调试笔记]网格划分grid_pic.cpp
生活随笔
收集整理的這篇文章主要介紹了
[C++调试笔记]网格划分grid_pic.cpp
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
????????
?
#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++){/* 網(wǎng)格點(diǎn)電荷密度->網(wǎng)格點(diǎn)數(shù)密度 */dens[0][i] /= qe; dens[1][i] /= qi;dens[2][i] /= q_C3;/* 最后一個(gè)網(wǎng)格的電子數(shù)密度 */if (i == Nz_plas - 1)printf("最后一個(gè)網(wǎng)格的電子數(shù)密度=%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;/* 每個(gè)網(wǎng)格點(diǎn)電荷密度重置為0 */for (i = 0; i < Nz_plas; i++)dens[i] = 0.0;/* 網(wǎng)格點(diǎn)電荷密度->網(wǎng)格點(diǎn)電荷量 */for (i = 0; i < numb; i++)//遍歷每個(gè)粒子{q_real = ptr[i].weig * q;//電荷量權(quán)重變換z = ptr[i].z;ip = (int)(z / dz_plas);//第i個(gè)粒子的位置l2 = z / dz_plas - ip; //左半網(wǎng)格l1 = 1.0 - l2; //右半網(wǎng)格dens[ip] += q_real * l1; //權(quán)重分配dens[ip + 1] += q_real * l2; //權(quán)重分配}/* 網(wǎng)格點(diǎn)電荷量->網(wǎng)格點(diǎn)電荷密度 */for (i = 1; i < Nz_plas - 1; i++) //遍歷2-Nz_plas個(gè)網(wǎng)格dens[i] /= dz_plas; //將網(wǎng)格點(diǎn)的電荷量平均到左右半個(gè)網(wǎng)格上dens[0] /= (0.5 * dz_plas); //首個(gè)網(wǎng)格點(diǎn)的電荷量平均到右半網(wǎng)格上dens[Nz_plas - 1] /= (0.5 * dz_plas); //最后一個(gè)網(wǎng)格點(diǎn)的電荷量平均到左半網(wǎng)格上 }總結(jié)
以上是生活随笔為你收集整理的[C++调试笔记]网格划分grid_pic.cpp的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 你的存在,就是打我脸的
- 下一篇: 别看程序员只是表面风光