平面波法用于一维光子晶体

本算法进一步深入熟悉平面波展开法

结果如下:与文献molding the flow of light 相一致

ps:有多余线,需要进一步求证

主程序如下:

%This is a simple demo for 1D Photonic Crystals simulation
%10 points is considered.
%by Gao Haikuo
%date:20170411

clear; clc;
global NG G f  Nkpoints eigenValue modeset kCorner
global epsa epsb epssys a b1 b2
epssys=1.0e-6; %设定一个最小量,避免系统截断误差或除0错误

%this is the lattice vector and the reciprocal lattice vector
a=1; a1=a*[1 0]; a2=a*[0 1];
b1=2*pi/a*[1 0];b2=2*pi/a*[0 1];
Nkpoints=10; %每个方向上取的点数,
modeset=2;% 1:‘TE‘ 2 ‘TM‘
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%定义晶格的参数
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
epsa = 13; %inner
epsb = 12; %outer

% Pf = 0.1257; %Pf = Ac/Au 填充率,可根据需要自行设定
% Au =a^2; %二维格子原胞面积
% Rc = (Pf *Au/pi)^(1/2); %介质柱截面半径
% Ac = pi*(Rc)^2; %介质柱横截面积
kCorner=(2*pi/a)*[0.5 0;epssys 0]; %T X M
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%get gap
[G,f]=getGAndf_1D(0.5);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%get gap
eigenValue=getFrequency(kCorner);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%get gap
gap=getGap();

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%绘draw band
drawBand(gap,0.3);

其中的获取展开系数的getGAndf_1D函数如下

function [G,f]=getGAndf_1D(d)
%这个生成一维空间中的G和f
global NG G f  Nkpoints eigenValue kCorner modeset a
global epsa epsb epssys b1 b2
NrSquare = 10;
NG =(2*NrSquare+1)^2;  % NG is the number of the G value
G = zeros(NG,2);
i = 1;
for l = -NrSquare:NrSquare
    for m = -NrSquare:NrSquare
        G(i,:)=l*b1+m*b2;
        i = i+1;
    end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%生成k空间中的f(Gi-Gj)的值,i,j 从1到NG。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
f=zeros(NG,NG);
for i=1:NG
    for j=1:NG
        Gij=G(i,:)-G(j,:);
        if abs(Gij(2))>epssys
            f(i,j)=0;
        elseif abs(Gij(1))<epssys
            f(i,j)=1/epsb+(1/epsa-1/epsb)*d;
        else
            f(i,j)=(1/epsa-1/epsb)*2/Gij(1)*sin(Gij(1)*d/2);
        end;
    end;
end; 
时间: 2024-10-17 20:32:51

平面波法用于一维光子晶体的相关文章

51nod_1199 树的先跟遍历+区间更新树状数组

题目是中文,所以不讲题意 做法顺序如下: 使用先跟遍历,把整棵树平铺到一维平面中 使用自己整的区间更新树状数组模板进行相关操作. http://www.cnblogs.com/rikka/p/7359185.html 放代码如下: 1 #include<bits/stdc++.h> 2 3 using namespace std; 4 5 6 /* 7 *常量MAXN用于设定树状数组的尺寸大小 8 */ 9 const long long MAXN=500233; 10 class TreeL

科研第三天

今天学习:光子晶体(人工合成的材料,光子传播速度更快,因此比传统的材料要好) 能隙,分为不完全能隙和完全能隙(光完全不透射) 看了BandSOLVE中的第五章如何制作光子晶体的结构 step1:在rsoft中先设定设计工具为BandSOLVE step2: 选择方法1.FDTD(时域有限差分法) :可以把晶体的损耗考虑在内(平面波法不可以) 2.Plane Wave(平面波法):更快速,精确,允许BandSOLVE自动确认能隙 step3:选择维数 第二部分确认晶体的性能 在看中,很多参数的意义

纹理(讲得比较详细的文章)

纹理是增强计算机生成的三维图像的真实感的有力工具.Microsoft® Direct3D®支持广泛的纹理特性,并使开发人员可以很方便地使用高级纹理技术. 本节讲述如何使用纹理. 纹理的基本概念 纹理坐标 纹理过滤 纹理资源 纹理环绕 纹理混合 表面 以下主题将更详细地介绍另外的纹理功能. Mipmap的自动生成 自动纹理管理 压缩纹理资源 使用纹理时需要考虑的硬件问题 立体纹理资源 要提高性能,可以考虑使用动态纹理.动态纹理在每一帧都可以被锁定,写入及解锁.更多信息请参阅使用动态纹理. 纹理的基

Numpy详解

NumPy 简介 Python并没有提供数组功能.虽然列表可以完成基本的数组功能,但它不是真正的数组,而且在数据量比较大时,使用列表的速度会很慢.为此,Numpy提供了真正的数组功能,以及对数据进行快速处理的函数. NumPy的主要对象是同种元素的多维数组.这是一个所有的元素都是一种类型.通过一个正整数元组索引的元素表格(通常是元素是数字).在NumPy中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank). 例如,在3D空间一个点的坐标 [1, 2, 3] 是一个秩为1的

Dubbo 源码分析 - 集群容错之 LoadBalance

1.简介 LoadBalance 中文意思为负载均衡,它的职责是将网络请求,或者其他形式的负载"均摊"到不同的机器上.避免集群中部分服务器压力过大,而另一些服务器比较空闲的情况.通过负载均衡,可以让每台服务器获取到适合自己处理能力的负载.在为高负载的服务器分流的同时,还可以避免资源浪费,一举两得.负载均衡可分为软件负载均衡和硬件负载均衡.在我们日常开发中,一般很难接触到硬件负载均衡.但软件负载均衡还是能够接触到一些的,比如 Nginx.在 Dubbo 中,也有负载均衡的概念和相应的实现

负载均衡算法 - 基本实现

? 最近在比赛一个项目 , 是给Dubbo写一个负载均衡接口 , 其实dubbo已经实现了下面四种, 所以他做的不是这个单面负载均衡, 需要做双向负载均衡 , 负载均衡的权重取决于服务端,所以有些时候我们不知道如何计算权重, 权重受到很多因素影响 ,所以就需要动态考虑了. ? Dubbo 提供了4种负载均衡实现,分别是基于权重随机算法的 RandomLoadBalance.基于最少活跃调用数算法的 LeastActiveLoadBalance.基于 hash 一致性的 ConsistentHas

Python数据分析之Numpy入门

目录 1.什么是numpy 2.安装numpy 3.n维数组对象 4.数组创建 5.数组维度 6.数组元素个数 7.数组元素数据类型 8.改变数组形状 9.数组索引和切片操作 10.数组转换与元素迭代 11.数组级联操作 12.数组数值舍入 13.数组数值添加 14.数组元素去重 15.常用数学函数 16.常用统计函数 17.矩阵运算 1.什么是numpy NumPy(Numerical Python)是Python语言中做科学计算的基础库.重在于数值计算,也是大部分Python科学计算库的基础

《Python数据分析常用手册》一、NumPy和Pandas篇

一.常用链接: 1.Python官网:https://www.python.org/ 2.各种库的whl离线安装包:http://www.lfd.uci.edu/~gohlke/pythonlibs/#scikit-learn 3.数据分析常用库的离线安装包(pip+wheels)(百度云):http://pan.baidu.com/s/1dEMXbfN 密码:bbs2 二.常用库 1.NumPy NumPy是高性能科学计算和数据分析的基础包.部分功能如下: ndarray, 具有矢量算术运算和

【转】jpeg文件格式详解

JPEG(Joint Photographic Experts Group)是联合图像专家小组的英文缩写.它由国际电话与电报咨询委员会CCITT(The International Telegraph and Telephone Consultative Committee)与国际标准化组织ISO于1986年联合成立的一个小组,负责制定静态数字图像的编码标准. 小组一直致力于标准化工作,开发研制出连续色调.多级灰度.静止图像的数字图像压缩编码方法,即JPEG算法.JPEG算法被确定为国际通用标准