⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 update_e_from_d_prepare.hpp

📁 采用FDTD时域有限差分法计算电磁波的传播问题等。
💻 HPP
字号:
/* This file was automatically generated --- DO NOT EDIT */if (have_d_minus_p) {  if (pol) {    if (f[Er][0]) {      // Am in cylindrical coordinates.      FOR_E_AND_D(ec,dc) if (f[ec][0]) {        if (is_real) {          for (int i=0;i<ntot;i++) {            for (polarization *np=pol,*op=olpol; np; np=np->next,op=op->next) {              np->energy[ec][i] = op->energy[ec][i];              np->energy[ec][i] += (0.5)*(np->P[ec][0][i] - op->P[ec][0][i])                 * f[ec][0][i];            }          }        } else { // not is_real          for (int i=0;i<ntot;i++) {            for (polarization *np=pol,*op=olpol; np; np=np->next,op=op->next) {              np->energy[ec][i] = op->energy[ec][i];              np->energy[ec][i] += (0.5)*(np->P[ec][0][i] - op->P[ec][0][i])                 * f[ec][0][i];              np->energy[ec][i] += (0.5)*(np->P[ec][1][i] - op->P[ec][1][i])                 * f[ec][1][i];            }          }        }        DOCMP {          for (int i=0;i<ntot;i++) {            d_minus_p[ec][cmp][i] = f[dc][cmp][i];            for (polarization *p = pol; p; p = p->next) {              d_minus_p[ec][cmp][i] -= p->P[ec][cmp][i];            }          }        }      }    } else { // not f[Er][0]      if (f[Ey][0]) {        if (f[Ez][0]) {          if (stride_any_direction[Z]) {            // Am in 3D            FOR_E_AND_D(ec,dc) if (f[ec][0]) {              if (is_real) {                for (int i=0;i<ntot;i++) {                  for (polarization *np=pol,*op=olpol; np; np=np->next,op=op->next) {                    np->energy[ec][i] = op->energy[ec][i];                    np->energy[ec][i] += (0.5)*(np->P[ec][0][i] - op->P[ec][0][i])                       * f[ec][0][i];                  }                }              } else { // not is_real                for (int i=0;i<ntot;i++) {                  for (polarization *np=pol,*op=olpol; np; np=np->next,op=op->next) {                    np->energy[ec][i] = op->energy[ec][i];                    np->energy[ec][i] += (0.5)*(np->P[ec][0][i] - op->P[ec][0][i])                       * f[ec][0][i];                    np->energy[ec][i] += (0.5)*(np->P[ec][1][i] - op->P[ec][1][i])                       * f[ec][1][i];                  }                }              }              DOCMP {                for (int i=0;i<ntot;i++) {                  d_minus_p[ec][cmp][i] = f[dc][cmp][i];                  for (polarization *p = pol; p; p = p->next) {                    d_minus_p[ec][cmp][i] -= p->P[ec][cmp][i];                  }                }              }            }          } else { // not stride_any_direction[Z]            // Am in 2D            FOR_E_AND_D(ec,dc) if (f[ec][0]) {              if (is_real) {                for (int i=0;i<ntot;i++) {                  for (polarization *np=pol,*op=olpol; np; np=np->next,op=op->next) {                    np->energy[ec][i] = op->energy[ec][i];                    np->energy[ec][i] += (0.5)*(np->P[ec][0][i] - op->P[ec][0][i])                       * f[ec][0][i];                  }                }              } else { // not is_real                for (int i=0;i<ntot;i++) {                  for (polarization *np=pol,*op=olpol; np; np=np->next,op=op->next) {                    np->energy[ec][i] = op->energy[ec][i];                    np->energy[ec][i] += (0.5)*(np->P[ec][0][i] - op->P[ec][0][i])                       * f[ec][0][i];                    np->energy[ec][i] += (0.5)*(np->P[ec][1][i] - op->P[ec][1][i])                       * f[ec][1][i];                  }                }              }              DOCMP {                for (int i=0;i<ntot;i++) {                  d_minus_p[ec][cmp][i] = f[dc][cmp][i];                  for (polarization *p = pol; p; p = p->next) {                    d_minus_p[ec][cmp][i] -= p->P[ec][cmp][i];                  }                }              }            }          }        } else { // not f[Ez][0]          // Am in 2D TE          FOR_E_AND_D(ec,dc) if (f[ec][0]) {            if (is_real) {              for (int i=0;i<ntot;i++) {                for (polarization *np=pol,*op=olpol; np; np=np->next,op=op->next) {                  np->energy[ec][i] = op->energy[ec][i];                  np->energy[ec][i] += (0.5)*(np->P[ec][0][i] - op->P[ec][0][i])                     * f[ec][0][i];                }              }            } else { // not is_real              for (int i=0;i<ntot;i++) {                for (polarization *np=pol,*op=olpol; np; np=np->next,op=op->next) {                  np->energy[ec][i] = op->energy[ec][i];                  np->energy[ec][i] += (0.5)*(np->P[ec][0][i] - op->P[ec][0][i])                     * f[ec][0][i];                  np->energy[ec][i] += (0.5)*(np->P[ec][1][i] - op->P[ec][1][i])                     * f[ec][1][i];                }              }            }            DOCMP {              for (int i=0;i<ntot;i++) {                d_minus_p[ec][cmp][i] = f[dc][cmp][i];                for (polarization *p = pol; p; p = p->next) {                  d_minus_p[ec][cmp][i] -= p->P[ec][cmp][i];                }              }            }          }        }      } else { // not f[Ey][0]        if (f[Ex][0]) {          // Am in 1D          FOR_E_AND_D(ec,dc) if (f[ec][0]) {            if (is_real) {              for (int i=0;i<ntot;i++) {                for (polarization *np=pol,*op=olpol; np; np=np->next,op=op->next) {                  np->energy[ec][i] = op->energy[ec][i];                  np->energy[ec][i] += (0.5)*(np->P[ec][0][i] - op->P[ec][0][i])                     * f[ec][0][i];                }              }            } else { // not is_real              for (int i=0;i<ntot;i++) {                for (polarization *np=pol,*op=olpol; np; np=np->next,op=op->next) {                  np->energy[ec][i] = op->energy[ec][i];                  np->energy[ec][i] += (0.5)*(np->P[ec][0][i] - op->P[ec][0][i])                     * f[ec][0][i];                  np->energy[ec][i] += (0.5)*(np->P[ec][1][i] - op->P[ec][1][i])                     * f[ec][1][i];                }              }            }            DOCMP {              for (int i=0;i<ntot;i++) {                d_minus_p[ec][cmp][i] = f[dc][cmp][i];                for (polarization *p = pol; p; p = p->next) {                  d_minus_p[ec][cmp][i] -= p->P[ec][cmp][i];                }              }            }          }        } else { // not f[Ex][0]          // Am in 2D TM          FOR_E_AND_D(ec,dc) if (f[ec][0]) {            if (is_real) {              for (int i=0;i<ntot;i++) {                for (polarization *np=pol,*op=olpol; np; np=np->next,op=op->next) {                  np->energy[ec][i] = op->energy[ec][i];                  np->energy[ec][i] += (0.5)*(np->P[ec][0][i] - op->P[ec][0][i])                     * f[ec][0][i];                }              }            } else { // not is_real              for (int i=0;i<ntot;i++) {                for (polarization *np=pol,*op=olpol; np; np=np->next,op=op->next) {                  np->energy[ec][i] = op->energy[ec][i];                  np->energy[ec][i] += (0.5)*(np->P[ec][0][i] - op->P[ec][0][i])                     * f[ec][0][i];                  np->energy[ec][i] += (0.5)*(np->P[ec][1][i] - op->P[ec][1][i])                     * f[ec][1][i];                }              }            }            DOCMP {              for (int i=0;i<ntot;i++) {                d_minus_p[ec][cmp][i] = f[dc][cmp][i];                for (polarization *p = pol; p; p = p->next) {                  d_minus_p[ec][cmp][i] -= p->P[ec][cmp][i];                }              }            }          }        }      }    }  } else { // not pol    if (f[Er][0]) {      // Am in cylindrical coordinates.      FOR_E_AND_D(ec,dc) if (f[ec][0]) {        DOCMP {          for (int i=0;i<ntot;i++) {            d_minus_p[ec][cmp][i] = f[dc][cmp][i];          }        }      }    } else { // not f[Er][0]      if (f[Ey][0]) {        if (f[Ez][0]) {          if (stride_any_direction[Z]) {            // Am in 3D            FOR_E_AND_D(ec,dc) if (f[ec][0]) {              DOCMP {                for (int i=0;i<ntot;i++) {                  d_minus_p[ec][cmp][i] = f[dc][cmp][i];                }              }            }          } else { // not stride_any_direction[Z]            // Am in 2D            FOR_E_AND_D(ec,dc) if (f[ec][0]) {              DOCMP {                for (int i=0;i<ntot;i++) {                  d_minus_p[ec][cmp][i] = f[dc][cmp][i];                }              }            }          }        } else { // not f[Ez][0]          // Am in 2D TE          FOR_E_AND_D(ec,dc) if (f[ec][0]) {            DOCMP {              for (int i=0;i<ntot;i++) {                d_minus_p[ec][cmp][i] = f[dc][cmp][i];              }            }          }        }      } else { // not f[Ey][0]        if (f[Ex][0]) {          // Am in 1D          FOR_E_AND_D(ec,dc) if (f[ec][0]) {            DOCMP {              for (int i=0;i<ntot;i++) {                d_minus_p[ec][cmp][i] = f[dc][cmp][i];              }            }          }        } else { // not f[Ex][0]          // Am in 2D TM          FOR_E_AND_D(ec,dc) if (f[ec][0]) {            DOCMP {              for (int i=0;i<ntot;i++) {                d_minus_p[ec][cmp][i] = f[dc][cmp][i];              }            }          }        }      }    }  }}

⌨️ 快捷键说明

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