FDTD的PML设置

//设置三维PML层电导率和导磁系数
    for (i = 1; i < npml; i++)      //后边
    {
        for (j = 0; j <= JE; j++)
        {
            for (k = 0; k <= KE; k++)
            {
                sigmax[i][j][k] = (npml*sigma_MAX / (n_change + 1))
                    * (pow((npml - i + 0.5) / npml, (n_change + 1))
                    - pow((npml - i - 0.5) / npml, (n_change + 1)));
            }
        }
    }
    for (i = IE - npml + 1; i < IE; i++)  //前边
    {
        for (j = 0; j <= JE; j++)
        {
            for (k = 0; k <= KE; k++)
            {
                sigmax[i][j][k] = (npml*sigma_MAX / (n_change + 1))
                    * (pow((i - (IE - npml) + 0.5) / npml, (n_change + 1))
                    - pow((i - (IE - npml) - 0.5) / npml, (n_change + 1)));
            }
        }
    }
    for (i = 0; i < npml; i++)  //后边
    {
        for (j = 0; j <= JE; j++)
        {
            for (k = 0; k <= KE; k++)
            {
                sigmamx[i][j][k] = mur0*(npml*sigma_MAX / (n_change + 1))
                    * (pow((((npml - i - 0.5) + 0.5) / npml), (n_change + 1))
                    - pow((((npml - i - 0.5) - 0.5) / npml), (n_change + 1)))
                    / epsilon;
            }
        }
    }
    for (i = IE - npml; i < IE; i++)  //前边
    {
        for (j = 0; j <= JE; j++)
        {
            for (k = 0; k <= KE; k++)
            {
                sigmamx[i][j][k] = mur0*(npml*sigma_MAX / (n_change + 1))
                    * (pow((i - (IE - npml) + 0.5 + 0.5) / npml, (n_change + 1))
                    - pow((i - (IE - npml) + 0.5 - 0.5) / npml, (n_change + 1)))
                    / epsilon;
            }
        }
    }
    for (i = 0; i <= IE; i++)  //左边
    {
        for (j = 1; j < npml; j++)
        {
            for (k = 0; k <= KE; k++)
            {
                sigmay[i][j][k] = (npml*sigma_MAX / (n_change + 1))
                    * (pow((npml - j + 0.5) / npml, (n_change + 1))
                    - pow((npml - j - 0.5) / npml, (n_change + 1)));
            }
        }
    }
    for (i = 0; i <= IE; i++)  //右边
    {
        for (j = JE - npml + 1; j < JE; j++)
        {
            for (k = 0; k <= KE; k++)
            {
                sigmay[i][j][k] = (npml*sigma_MAX / (n_change + 1))
                    * (pow((j - (JE - npml) + 0.5) / npml, (n_change + 1))
                    - pow((j - (JE - npml) - 0.5) / npml, (n_change + 1)));
            }
        }
    }
    for (i = 0; i <= IE; i++)  //左边
    {
        for (j = 0; j < npml; j++)
        {
            for (k = 0; k <= KE; k++)
            {
                sigmamy[i][j][k] = mur0*(npml*sigma_MAX / (n_change + 1))
                    * (pow((((npml - j - 0.5) + 0.5) / npml), (n_change + 1))
                    - pow((((npml - j - 0.5) - 0.5) / npml), (n_change + 1)))
                    / epsilon;
            }
        }
    }
    for (i = 0; i <= IE; i++)  //右边
    {
        for (j = JE - npml; j < JE; j++)
        {
            for (k = 0; k <= KE; k++)
            {
                sigmamy[i][j][k] = mur0*(npml*sigma_MAX / (n_change + 1))
                    * (pow((j - (JE - npml) + 0.5 + 0.5) / npml, (n_change + 1))
                    - pow((j - (JE - npml) + 0.5 - 0.5) / npml, (n_change + 1)))
                    / epsilon;
            }
        }
    }
    for (i = 0; i <= IE; i++)
    {
        for (j = 0; j <= JE; j++)
        {
            for (k = 1; k < npml; k++)
            {
                sigmaz[i][j][k] = (npml*sigma_MAX / (n_change + 1))
                    * (pow((npml - k + 0.5) / npml, (n_change + 1))
                    - pow((npml - k - 0.5) / npml, (n_change + 1)));
            }
        }
    }
    for (i = 0; i <= IE; i++)
    {
        for (j = 0; j <= JE; j++)
        {
            for (k = KE - npml + 1; k < KE; k++)
            {
                sigmaz[i][j][k] = (npml*sigma_MAX / (n_change + 1))
                    * (pow((k - (KE - npml) + 0.5) / npml, (n_change + 1))
                    - pow((k - (KE - npml) - 0.5) / npml, (n_change + 1)));
            }
        }
    }
    for (i = 0; i <= IE; i++)
    {
        for (j = 0; j <= JE; j++)
        {
            for (k = 0; k < npml; k++)
            {
                sigmamz[i][j][k] = mur0*(npml*sigma_MAX / (n_change + 1))
                    * (pow((((npml - k - 0.5) + 0.5) / npml), (n_change + 1))
                    - pow((((npml - k - 0.5) - 0.5) / npml), (n_change + 1)))
                    / epsilon;
            }
        }
    }
    for (i = 0; i <= IE; i++)
    {
        for (j = 0; j <= JE; j++)
        {
            for (k = KE - npml; k < KE; k++)
            {
                sigmamz[i][j][k] = mur0*(npml*sigma_MAX / (n_change + 1))
                    * (pow((k - (KE - npml) + 0.5 + 0.5) / npml, (n_change + 1))
                    - pow((k - (KE - npml) + 0.5 - 0.5) / npml, (n_change + 1)))
                    / epsilon;
            }
        }
    }

你可能感兴趣的:(C++,FDTD)