【计算电磁学】简单的C语言一维FDTD仿真程序
通过时域有限差分法(FDTD)可以利用上一时刻的磁场和同一时刻相邻空间的电场递推下一时刻的磁场以及利用上一时刻的电场和同一时刻相邻空间的磁场递推下一时刻的电场,由此可以计算出整个空间的场分布。
以下为仿真电磁波在自由空间中传播的程序,计算区域中含200个电场点和磁场点。
高斯激励源的简单一维FDTD仿真程序:
/* 硬源激励的基本FDTD仿真 */#include <stdio.h>#include <math.h>#define SIZE 200int main ()
{double ez[SIZE] = {0.}, hy[SIZE] = {0.}, imp0 = 377.0; //{0.}保证数组初始化为0int qTime, maxTime = 250, mm; //qTime为时间步,总步数为maxTimeFILE *fp;fp = fopen("1.txt", "w+");/* 开始时间循环 */
for (qTime = 0; qTime < maxTime; qTime++)
{/* 递推磁场 */for (mm = 0; mm < SIZE - 1; mm++)hy[mm] = hy[mm] + (ez[mm + 1] - ez [mm]) / imp0;/* 递推电场 */for (mm = 1; mm < SIZE; mm++)ez[mm] = ez[mm] + (hy[mm] - hy[mm - 1]) * imp0;fprintf(fp, "%.6g\n", ez[50]); //记录50时刻的电场值并打印到txt文件 ez[0] = exp(-(qTime - 30.) * (qTime - 30.) / 100.); //高斯脉冲源 printf ("%g\n", ez[50]);} fclose(fp);return 0;
}
作图的MATLAB程序如下:
fid3=textread('1.txt', '%n', 'whitespace', '');
[m,n]=size(fid3);
Ox=1:m;
figure;
plot(Ox,fid3,'-');
grid on;
横坐标为时间步,纵坐标为Ez[50]。由于我们设定稳定常数为1,所以场每个时间步移动一个空间步长,记录到的信号从源点延时50个时间步。
参考
[1] John B. Schneider, Understanding the Finite-Difference Time-Domain Method [M]
【计算电磁学】简单的C语言一维FDTD仿真程序相关推荐
- feko软件_计算电磁学各种方法和电磁仿真软件简述
计算电磁学中有众多不同的算法,如时域有限差分法(FDTD).时域有限积分法(FITD).有限元法(FE).矩量法(MoM).边界元法(BEM). 谱域法(SM).传输线法(TLM).模式匹配法(MM) ...
- CEM计算电磁学 -- Lecture 2 学习笔记 (1) ---TMM 传输矩阵法(1)
目录 一.电磁场中的一维结构 二.传递矩阵法 1.模型结构 2.4×4矩阵方法(需要sort) (1)前提内容 (2)4×4矩阵方程式(用于求解电磁场方程) (3)LHI 情况下的解 (4)计算传输矩 ...
- 仿真必修课:计算电磁学入门(附件参考文献与笔记)
转载自电磁CAEer ,作者:刘兵 "作为一个电磁设计师,有必要了解计算电磁学吗?" 答案是肯定的.电磁计算从业人员按照分工大致可以分为两类:一类从事CEM(计算电磁学),一类从事 ...
- 一维FDTD电磁波仿真
一维FDTD电磁波Matlab仿真 1.1 时域有限差分法的基本方程 广义麦克斯韦方程(线性.均匀.各向同性) Δ×H⃗=ε∂E∂t+σeE+Ji\Delta \times \vec H = \v ...
- 电动力学专题:计算电磁学简介
数值计算的不可能三角 计算用时少 程序编写易 结果精度高 数值计算名言: 只有猜到正确的结果,才能假定正确的输出 计算电磁学是现代电磁学的一个重要分支,广泛应用于电磁场的仿真.物理场的数值计算.电 ...
- c语言用一维数组求字符串,c语言一维数组练习题.doc
c语言一维数组练习题 精品文档2016全新精品资料-全新公文范文-全程指导写作 –独家原创 PAGE1 / NUMPAGES1 c语言一维数组练习题 4.1内容概述 本章主要介绍了数值数组和字符数组的 ...
- c语言向自定数组_C语言一维数组的定义和引用
C语言一维数组的定义和引用 C语言支持一维数组和多维数组.如果一个数组的所有元素都不是数组,那么该数组称为一维数组. 一维数组的定义方式 在C语言中使用数组必须先进行定义.一维数组的定义方式为: 类型 ...
- 最简单的c语言的编程题目,编程列入考题
① 简单的C语言考试题目!(不需要编程) 写入数据的时候,写入的是123,作为一个数处理的. 将printf("%d%d\n",k,n); 改成printf("%d %d ...
- C语言 | 一维数组
C语言一维数组的定义 一般形式 类型符 数组名[常量表达式] C语言使用一维数组注意事项 数组名的命名规则和变量名相同,遵循标识符命名规则. 在定义数组时,需要指定数组中元素的个数,方括号中的常量表达 ...
- 如何将计算思维融合到C语言程序设计中,利用案例融合计算思维与C语言教学
摘 要: C语言程序设计的教学目标是使学生利用C语言结合算法解决简单的实际问题.要实现该目标不仅要熟练掌握C语言本身的基本语法和结构,还要具备设计合理算法的思维能力.然而,当前各高校课程教学往往忽略思 ...
最新文章
- PHP全栈学习笔记20
- spring3 发送邮件和附件
- SAP UI5 oFileUpload.getUploadEnabled()
- ospf hello时间和dead_网络工程师_思科 | OSPF由简到难,配合命令学
- python 数据库查询结果_python 数据库查询结果
- 陈奕迅为什么也哭穷?
- 设置屏幕横屏_android设置横屏和竖屏的两种方法
- 查找和杀掉postgresql堵塞的会话
- 2017.0713.《计算机组成原理》-汉明码
- Javascript之把网页加入收藏夹功能
- linux清除系统垃圾文件
- RabbitMQ的安装教程
- 2022年数维杯国际数模赛浅评
- 《Java SE实战指南》09:访问级别修饰符(Access level modifiers)
- Juniper链路及接口配置
- PowerDesigner常见使用
- 对stm32程序(HEX)的读取和烧录(使用JLink和JFlash)
- 电脑上做的ppt拿到别的电脑或手机上播放的时候字体错位的解决方法
- app-framework学习--pannel介绍
- 搞IT产品,请谨记Mobile First