/* FDTD-1D-2.2.c 1D FDTD simulation of a lossy dielectric medium */
/* Simulation of a sinusoidal wave or a Gauss pulse transmiting in a lossy dielectric medium exsiting in free space */
/*8888888888888 Using a new formulation and using flux density 8888888888888*/
/* The Fourier Transform has been added */
/* 1D FDTD simulation of a frequency dependent material */
# include <math.h>
# include <stdlib.h>
# include <stdio.h>
# define KE 200 /* KE is the number of cells to be used */
# define NF 10 /* NF is the number of the frequence in fourier transform */
# define Pi 3.1415926
void main ()
{
double ex_low_m1, ex_low_m2,ex_high_m1,ex_high_m2;
double dx[KE],ix[KE],ex[KE],hy[KE],sx[KE];
double ga[KE],gb[KE],gc[KE];
int n, m,k, kc,NSTEPS;
int kstart_dielectric; /* 介质的左边界*/
int kend_dielectric; /* 介质的右边界*/
double T;
double t0, spread,pulse, pulse1, freq_in, pulse2; /*pulse1 is Gauss pulse, Pulse2 is a sinusoidal wave */
double epsilon_r,epsilon_0; /* 介质的相对介电常数 和 真空介电常数*/
double sigma; /* 介质的电导率 */
double ddx, dt; /* The FDTD Cell size and the time interval */
double freq[NF], arg[NF], ampn[NF][KE],phasen[NF][KE];
double real_part[NF][KE], imag_part[NF][KE];
double real_in[NF], imag_in[NF], amp_in[NF], phase_in[NF];
double mag[KE] ;
double tau, chil, del_exp;
FILE *fp ;
/* Initialize */
ddx=0.01; /* Set the cell size to 1cm */
dt=ddx/(2*3e8) ; /* calculate the time step */
epsilon_0=8.85419e-12;
kc=5; /* 激励源所引入的位置 */
t0= 50.0; /* Center of the incident pulse */
spread=10.0; /* Width of the incident pulse */
T=0;
NSTEPS=1;
ex_low_m1=0; /* 在n+1时存储左边界处前一个格点ex[1] 结果 */
ex_low_m2=0; /* 在n+2时存储左边界处前一个格点ex[1] 结果 */
ex_high_m1=0; /* 在n+1时存储右边界处前一个格点ex[KE-2] 结果 */
ex_high_m2=0; /* 在n+2时存储右边界处前一个格点ex[KE-2] 结果 */
for (k=0; k<KE; k++)
{ ga[k]=1.0; /* initialize to free space */
gb[k]=0.;
gc[k]=0; /* initialize to free space */
ex[k]=0.;
hy[k]=0.;
dx[k]=0.;
ix[k]=0;
sx[k]=0;
mag[k]=0;
for (m=0;m<=2;m++)
{ real_part[m][k]=0.; /* Real and imaginary parts of fourier transform */
imag_part[m][k]=0.;
ampn[m][k]=0.; /* Amplituds and phase of the fourier transform */
phasen[m][k]=0.;
}
}
for (m=0;m<=2;m++)
{ real_in[m]=0.; /* Fourier Trans. of input pulse */
imag_in[m]=0.;
}
/* Parameters for the Fourier Transform */
freq[0]=50.e6;
freq[1]=200.e6;
freq[2]=500.e6;
for (m=0;m<=2;m++)
{ arg[m]=2*Pi*freq[m]*dt;
printf("%2d %6.2f MHz %7.5f \n ", m, freq[m]*1e-6,arg[m]);
}
/* These parameters specify the input pulse */
// printf("input frequence (MHz) -->");
// scanf("%lf", &freq_in);
// freq_in=freq_in*1e6;
// printf("%8.0f \n",freq_in);
printf("Dielectric start at kstart_dielectric -->");
scanf("%d", &kstart_dielectric);
printf("Dielectric end at kend_dielectric -->");
scanf("%d", &kend_dielectric);
printf("Epsilon_r -->");
scanf("%lf", &epsilon_r);
printf("Conductivity -->");
scanf("%lf", &sigma);
printf("chil----->");
scanf("%lf", &chil);
tau=1000.; /* Make sure tau is >0. */
if (chil>0.0001)
{printf("tau (in microseconds)--->"); scanf("%lf",&tau); del_exp=exp(-dt/tau);}
printf ("%d %d %f %f %f %f \n", kstart_dielectric,kend_dielectric,epsilon_r, sigma,tau,chil);
tau=1.e-6*tau;
printf("del_exp= %f \n",del_exp) ;
for (k=kstart_dielectric; k<=kend_dielectric;k++)
{ ga[k]=1/(epsilon_r+sigma*dt/epsilon_0+chil*dt/tau);
gb[k]=sigma*dt/epsilon_0; /* initialize to dielectric medium */
gc[k]=chil*dt/tau;
}
for (k=0;k<KE;k++)
{ printf("%2d %4.2f %4.2f \n",k,ga[k],gb[k]); }
/* Main part of program */
while (NSTEPS>0)
{ printf("NSTEPS -->"); /* NSTEPS is the number of times that the Main loop has executed */
scanf("%d", &NSTEPS);
printf ("%d \n", NSTEPS);
printf("程序正在运行,请稍侯! \n");
for (n=1; n<=NSTEPS; n++)
{
T=T+1; /* T keeps track of the total number of times the main loop is executed */
/* Main FDTD Loop */
/* Calculate the Dx field */
for (k=1; k<KE; k++)
{ dx[k]=dx[k]+ 0.5*(hy[k-1]-hy[k]); }
/* Put a sinusoidal wave or the Gauss pulse at the cell kc */
pulse1=exp(-0.5*(pow((t0-T)/spread,2.0)));
// pulse2=sin(2*Pi*freq_in*dt*T);
pulse=pulse1; /* 脉冲的类型由pulse1和pulse2两个变量来选择 */
dx[kc]=dx[kc]+pulse;
printf("%5.1f %f %6.2f \n", T,pulse,dx[kc]);
/* Calculate the Ex from the Dx */
for (k=0;k<KE;k++)
{ ex[k]=ga[k]*(dx[k]-ix[k]-sx[k]);
ix[k]=ix[k]+gb[k]*ex[k];
sx[k]=del_exp*sx[k]+gc[k]*ex[k];
}
/* Calculate the fourier trasform of Ex */
for (k=0;k<KE;k++)
{ for (m=0;m<=2;m++)
{ real_part[m][k]=real_part[m][k]+cos(arg[m]*T)*ex[k];
imag_part[m][k]=imag_part[m][k]-sin(arg[m]*T)*ex[k];
}
}
/* Fourier Transform of the input pulse */
if (T<100)
{
for (m=0;m<=2;m++)
{ real_in[m]=real_in[m]+cos(arg[m]*T)*ex[10];
imag_in[m]=imag_in[m]-sin(arg[m]*T)*ex[10];
}
}
/* Absorbing boundary conditions */
ex[0]=ex_low_m2;
ex_low_m2=ex_low_m1;
ex_low_m1=ex[1];
ex[KE-1]=ex_high_m2;
ex_high_m2=ex_high_m1;
ex_high_m1=ex[KE-2];
/* Calculate the hy field */
for (k=0; k<KE-1;k++)
{ hy[k]=hy[k]+0.5*(ex[k]-ex[k+1]); }
}
/* End of the Main FDTD Loop */
/* At the end of the calculation, print out the Ex and Hy field */
for (k=0; k<KE; k++)
{ printf("%3d %6.2f %6.2f \n", k, ex[k], hy[k]);
}
/* Write the E field out to a file "Ex" */
fp=fopen("Ex.txt","w");
fprintf(fp, "T=%5.0f \n", T);
for (k=0;k<KE;k++)
{
fprintf (fp," %5d %6.2f %6.2f \n", k,dx[k],ex[k]);
}
fclose(fp);
/* Write the H field out to a file "Hy" */
fp=fopen("Hy.txt","w");
fprintf(fp, "T=%5.0f \n", T);
for (k=0;k<KE;k++)
{
fprintf (fp,"%5d %6.2f \n",k, hy[k]);
}
fclose(fp);
printf(" %5.0f \n", T);
/* calculate the amplitude and phase of each frequency */
/* Amplitude and the phase of the input pulse */
for (m=0; m<=2;m++)
{ amp_in[m]=sqrt(pow(imag_in[m],2.0)+pow(real_in[m],2.0));
phase_in[m]=atan2(imag_in[m],real_in[m]);
printf("%d Input pulse: %8.4f %8.4f %8.4f %7.2f \n", m,real_in[m],imag_in[m],amp_in[m],(180.0/Pi)*phase_in[m]);
for(k=0;k<KE;k++)
{ ampn[m][k]=(1.0/amp_in[m]*sqrt(pow(real_part[m][k],2.0)+pow(imag_part[m][k],2.0)));
phasen[m][k]=atan2(imag_part[m][k],real_part[m][k])-phase_in[m];
}
}
/* write the amplitude field out to a files "amp " */
fp=fopen ("amp0.txt","w");
for (k=0;k<KE;k++)
{ fprintf(fp,"%d %8.5f \n ", k,ampn[0][k] ); }
fclose(fp);
fp=fopen ("amp1.txt","w");
for (k=0;k<KE;k++)
{ fprintf(fp,"%d %8.5f \n ", k,ampn[1][k] ); }
fclose(fp);
fp=fopen ("amp2.txt","w");
for (k=0;k<KE;k++)
{ fprintf(fp,"%d %8.5f \n ", k,ampn[2][k] ); }
fclose(fp);
}
printf("程序运行完毕 \n");
}
运行之后出现如下错误
root@gallup-virtual-machine:/home/source# gcc -Wall li.c -o li
li.c:7:6: 警告: ‘main’的返回类型不是‘int’ [-Wmain]root@gallup-virtual-machine:/home/source#
解决方法:
1、 root@gallup-virtual-machine:/home/source# gcc li.c -lm -o li
文章浏览阅读651次。在vscode中是用模块化的时候会出现报错,提示如下Access to script at ‘file:///F:/%E5%AD%A6%E4%B9%A0/%E7%BA%BF%E4%B8%8BJS/test/js./modul.js’ from origin ‘null’ has been blocked by CORS policy: Cross origin requests are only supported for protocol schemes: http, data, chrome, ch_indesssss.html:1 access to script at 'file:///i:/vscode/cheshi/tesss.js' fro
文章浏览阅读218次。为什么80%的码农都做不了架构师?>>> ..._h3c virtual converged framework切片
文章浏览阅读1.9w次,点赞44次,收藏268次。AndroidIOSHarmonyOS (鸿蒙)文档概览-HarmonyOS应用开发官网2.1.1 系统的定位搭载该操作系统的设备在系统层⾯融为⼀体、形成超级终端,让设备的硬件能⼒可以弹性 扩展,实现设备之间 硬件互助,资源共享。对消费者⽽⾔,HarmonyOS能够将⽣活场景中的各类终端进⾏能⼒整合,实现不同终端 设备之间的快速连接、能⼒互助、资源共享,匹配合适的设备、提供流畅的全场景体验。⾯向开发者,实现⼀次开发,多端部署。_鸿蒙移动应用开发
文章浏览阅读2.8k次。AndroidStudio 升级到 4.2.2 版本后,没有代码高亮了,很蛋疼。解决办法是:点开上方的 File,先勾选 Power Save Mode 再取消就可以了。_android studio 高亮
文章浏览阅读1k次。使用swift4.0整合Unity出现[ valueForUndefinedKey:]: this class is not key value coding-compliant for the key unity.'在对应属性前加@objc 即可。或者调回swift3.2版本_forundefinedkey swift4
文章浏览阅读1.3k次。http auto-config="true" access-denied-page="/common/403.htm"> intercept-url pattern="/login.**" access="IS_AUTHENTICATED_ANONYMOUSLY"/> form-login login-page="/login.jsp" defau_springsecurity 设置cookie失效时间
文章浏览阅读1.9w次,点赞26次,收藏185次。目录一.请简述下什么是kotlin?它有什么特性?二.Kotlin 中注解 @JvmOverloads 的作用?三.Kotlin中的MutableList与List有什么区别?四.kotlin实现单例的几种方式?五. kotlin中关键字data的理解?相对于普通的类有哪些特点?六.什么是委托属性?简单说一下应用场景?七.kotlin中with、run、apply、let函数的区别?一般用于什么场景?八.kotlin中Unit的应用以及和Java中void的区别?九.Ko_kotlin面试题
文章浏览阅读2.8k次。有这个想法一方面是确实很多时候会记不得一些缩写是什么意思。另外也是受 http://blog.csdn.net/lin453701006/article/details/52797415这篇博客的启发,本文主要用于自己记忆 内容主要整理自http://blog.sina.com.cn/s/blog_520811730101hmj9.html http://blog.csdn.net/feix_反量化 英文缩写
文章浏览阅读7.3k次,点赞6次,收藏36次。超级简单的Python爬虫入门教程(非常详细),通俗易懂,看一遍就会了_爬虫python入门
文章浏览阅读1.2k次。您的代码存在一些问题。首先,您在此处显示的两个模型是not等效的:尽管您将scikit-learn LogisticRegression设置为fit_intercept=True(这是默认设置),但您并没有这样做statsmodels一;来自statsmodels docs:默认情况下不包括拦截器,用户应添加。参见statsmodels.tools.add_constant。另一个问题是,尽管您处..._sm fit(method
文章浏览阅读518次。一、sfml官网下载32位的版本 一样的设置,64位的版本我没有成功,用不了。二、三、四以下这些内容拷贝过去:sfml-graphics-d.libsfml-window-d.libsfml-system-d.libsfml-audio-d.lib..._vsllfqm
文章浏览阅读2.7k次。由于工作需要,要做一个类似bc2的文本比较工具,用红色字体标明不同的地方,研究了半天,自己写了一个简易版的。文本比较的规则是1.先比较文本的行数,2.再比较对应行的字符串的长度3.再比较每一个字符串是否相同。具体代码如下:其中m_basestr和m_mergestr里面存放是待比较的字符串int basecount=m_basestr.GetLength(); int mergec_byoned compare 字符串比较算法