grid1d.c

来自「利用VC++进行FDTD三维远近场变换」· C语言 代码 · 共 43 行

C
43
字号
#include <math.h>#include "fdtd-macro.h"#include "fdtd-alloc.h"#define NLOSS 20  // number of lossy cells at end of 1D gridvoid gridInit1d(Grid *g) {  double imp0=377.0, depthInLayer, lossFactor;  int mm;  SizeX += NLOSS;    // size of domain /*@\label{grid1dA}@*/  Type   = oneDGrid; // set grid type  /*@\label{grid1dB}@*/  ALLOC_1D(g->hy,  SizeX-1, double);  ALLOC_1D(g->chyh,SizeX-1, double);  ALLOC_1D(g->chye,SizeX-1, double);  ALLOC_1D(g->ez,  SizeX,   double);  ALLOC_1D(g->ceze,SizeX,   double);  ALLOC_1D(g->cezh,SizeX,   double);  /* set electric-field update coefficients */  for (mm=0; mm<SizeX-1; mm++) {    if (mm<SizeX-1-NLOSS) {      Ceze1(mm) = 1.0;      Cezh1(mm) = Cdtds*imp0;      Chyh1(mm) = 1.0;      Chye1(mm) = Cdtds/imp0;    } else {      depthInLayer = mm - (SizeX-1-NLOSS) + 0.5;      lossFactor = 0.35*pow(depthInLayer/NLOSS,2);      Ceze1(mm) = (1.0 - lossFactor)/(1.0 + lossFactor);      Cezh1(mm) = Cdtds*imp0/(1.0 + lossFactor);      depthInLayer += 0.5;      lossFactor = 0.35*pow(depthInLayer/NLOSS,2);      Chyh1(mm) = (1.0 - lossFactor)/(1.0 + lossFactor);      Chye1(mm) = Cdtds/imp0/(1.0 + lossFactor);    }  }  return;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?