北理工理论物理导论实验二:用C语言编程证明金刚石晶胞内原子特性的不同

实验一:用C 语言编程证明金刚石晶胞内原子特性的不同 一:实验要求

金刚石的晶胞是由两个面心立方嵌套而成,其中一个面心立方是另一个面心立方沿其对角线平移1/4而得。用C 语言编程证明金刚石晶胞中两类碳原子(原胞中两个原子)的物理性质是不同的。

二:实验目的

1) 深化对晶胞和原胞概念的理解。

2) 锻炼以C 语言为工具,去解决和证明问题的能力。

三:实验源代码

源代码:

#include

#include

#define pi 3.1415926

struct Atom

{ int x,y,z; };

void Angle(struct Atom v1,struct Atom v2)

{

float seta1,m1,m2,seta;

m1=sqrt(v1.x*v1.x+v1.y*v1.y+v1.z*v1.z);

m2=sqrt(v2.x*v2.x+v2.y*v2.y+v2.z*v2.z);

seta1=(v1.x*v2.x+v1.y*v2.y+v1.z*v2.z)/m1/m2;

seta=acos(seta1)/pi*180;

printf("%4f ",seta);

};

main()

{

int i,j;

struct Atom vector1[6];

struct Atom vector2[6];

struct Atom temp;

struct Atom catom1[14]={0,0,0,4,0,0,0,4,0,2,2,0,4,4,0,2,0,2,0,2,2,4,2,2,2,4,2,0,0,4,4,0,4,0,4,4,2,2,4,4,4,4};

struct Atom catom2[14];

for(i=0;i

{

catom2[i].x=catom1[i].x+1;

catom2[i].y=catom1[i].y+1;

catom2[i].z=catom1[i].z+1;

}

for(i=0,j=0;i

{

temp.x=catom1[i].x-catom2[0].x;

temp.y=catom1[i].y-catom2[0].y;

temp.z=catom1[i].z-catom2[0].z;

if((temp.x*temp.x+temp.y*temp.y+temp.z*temp.z)==3) {

vector2[j]=temp;

j++;

}

}

for(i=0,j=0;i

{

temp.x=catom2[i].x-catom1[13].x;

temp.y=catom2[i].y-catom1[13].y;

temp.z=catom2[i].z-catom1[13].z;

if((temp.x*temp.x+temp.y*temp.y+temp.z*temp.z)==3) {

vector1[j]=temp;

j++;

}

}

printf("I类原子最近一层原子的键角\n");

for(i=0;i

for(j=i+1;j

{ Angle(vector1[i],vector1[j]); }

printf("\n");

printf("II类原子最近一层原子的键角\n");

for(i=0;i

for(j=i+1;j

{ Angle(vector2[i],vector2[j]); }

printf("\n");

for(i=0,j=0;i

{

temp.x=catom1[i].x-catom2[0].x;

temp.y=catom1[i].y-catom2[0].y;

temp.z=catom1[i].z-catom2[0].z;

if((temp.x*temp.x+temp.y*temp.y+temp.z*temp.z)==11) {

vector2[j]=temp;

j++;

}

}

for(i=0,j=0;i

{

temp.x=catom2[i].x-catom1[13].x;

temp.y=catom2[i].y-catom1[13].y;

temp.z=catom2[i].z-catom1[13].z;

if((temp.x*temp.x+temp.y*temp.y+temp.z*temp.z)==11) {

vector1[j]=temp;

j++;

}

}

printf("I类原子次近一层原子的键角\n");

for(i=0;i

for(j=i+1;j

{ Angle(vector1[i],vector1[j]); }

printf("\n");

printf("II类原子次近一层原子的键角\n");

for(i=0;i

for(j=i+1;j

{ Angle(vector2[i],vector2[j]); }

printf("\n");

system("pause");

}

四:实验结果

结果如下图:

由图可知:同层原子的键角都不完全相同,所以金刚石晶胞内原子特性是不同的。

实验一:用C 语言编程证明金刚石晶胞内原子特性的不同 一:实验要求

金刚石的晶胞是由两个面心立方嵌套而成,其中一个面心立方是另一个面心立方沿其对角线平移1/4而得。用C 语言编程证明金刚石晶胞中两类碳原子(原胞中两个原子)的物理性质是不同的。

二:实验目的

1) 深化对晶胞和原胞概念的理解。

2) 锻炼以C 语言为工具,去解决和证明问题的能力。

三:实验源代码

源代码:

#include

#include

#define pi 3.1415926

struct Atom

{ int x,y,z; };

void Angle(struct Atom v1,struct Atom v2)

{

float seta1,m1,m2,seta;

m1=sqrt(v1.x*v1.x+v1.y*v1.y+v1.z*v1.z);

m2=sqrt(v2.x*v2.x+v2.y*v2.y+v2.z*v2.z);

seta1=(v1.x*v2.x+v1.y*v2.y+v1.z*v2.z)/m1/m2;

seta=acos(seta1)/pi*180;

printf("%4f ",seta);

};

main()

{

int i,j;

struct Atom vector1[6];

struct Atom vector2[6];

struct Atom temp;

struct Atom catom1[14]={0,0,0,4,0,0,0,4,0,2,2,0,4,4,0,2,0,2,0,2,2,4,2,2,2,4,2,0,0,4,4,0,4,0,4,4,2,2,4,4,4,4};

struct Atom catom2[14];

for(i=0;i

{

catom2[i].x=catom1[i].x+1;

catom2[i].y=catom1[i].y+1;

catom2[i].z=catom1[i].z+1;

}

for(i=0,j=0;i

{

temp.x=catom1[i].x-catom2[0].x;

temp.y=catom1[i].y-catom2[0].y;

temp.z=catom1[i].z-catom2[0].z;

if((temp.x*temp.x+temp.y*temp.y+temp.z*temp.z)==3) {

vector2[j]=temp;

j++;

}

}

for(i=0,j=0;i

{

temp.x=catom2[i].x-catom1[13].x;

temp.y=catom2[i].y-catom1[13].y;

temp.z=catom2[i].z-catom1[13].z;

if((temp.x*temp.x+temp.y*temp.y+temp.z*temp.z)==3) {

vector1[j]=temp;

j++;

}

}

printf("I类原子最近一层原子的键角\n");

for(i=0;i

for(j=i+1;j

{ Angle(vector1[i],vector1[j]); }

printf("\n");

printf("II类原子最近一层原子的键角\n");

for(i=0;i

for(j=i+1;j

{ Angle(vector2[i],vector2[j]); }

printf("\n");

for(i=0,j=0;i

{

temp.x=catom1[i].x-catom2[0].x;

temp.y=catom1[i].y-catom2[0].y;

temp.z=catom1[i].z-catom2[0].z;

if((temp.x*temp.x+temp.y*temp.y+temp.z*temp.z)==11) {

vector2[j]=temp;

j++;

}

}

for(i=0,j=0;i

{

temp.x=catom2[i].x-catom1[13].x;

temp.y=catom2[i].y-catom1[13].y;

temp.z=catom2[i].z-catom1[13].z;

if((temp.x*temp.x+temp.y*temp.y+temp.z*temp.z)==11) {

vector1[j]=temp;

j++;

}

}

printf("I类原子次近一层原子的键角\n");

for(i=0;i

for(j=i+1;j

{ Angle(vector1[i],vector1[j]); }

printf("\n");

printf("II类原子次近一层原子的键角\n");

for(i=0;i

for(j=i+1;j

{ Angle(vector2[i],vector2[j]); }

printf("\n");

system("pause");

}

四:实验结果

结果如下图:

由图可知:同层原子的键角都不完全相同,所以金刚石晶胞内原子特性是不同的。


相关文章

  • 固体物理导论部分考前复习试题
  • 第一章 1. 以堆积模型计算由同种原子构成的同体积的体心和面心立方晶体中原子数之比. 解:设原子的半径为R , 体心立方(bcc)晶胞的体对角线为4R , 晶胞的边长为 , 晶胞的体积为 , 一个晶胞包含两个原子, 一个原子占的体积为 ; ...查看


  • 选修3晶体结构与性质教案
  • 3-1 晶体的常识 [教学目标]之知识与技能 1.了解晶体与非晶体的本质差异.掌握晶体的基本性质 2.掌握晶体与晶胞的关系,通过对晶胞的分析,学会计算(均摊法)晶胞中粒子的个数 [教学目标]之过程与方法 1.通过生活常识.感情从宏观特征逐步 ...查看


  • 第七章 金属晶体与离子晶体的结构
  • 第七章 金属晶体与离子晶体的结构 Chapter 7. The Structure of Metallic and Ionic Crystals 学习导引: 本章基本内容是金属单质晶体结构和离子晶体结构,除了化学键类型不同以外,前者是等径圆 ...查看


  • 晶体学基础
  • 竞赛要求: 初赛要求: 晶体结构.晶胞.原子坐标.晶格能.晶胞中原子数或分子数的计算及与化学式的关系.分子晶体.原子晶体.离子晶体和金属晶体.配位数.晶体的堆积与填隙模型.常见的晶体结构类型,如NaCl .CsCl .闪锌矿(ZnS ).萤 ...查看


  • 半导体物理与器件公式以及参数
  • 半导体物理与器件公式以及参数 KT =0.0259ev Nc =2.8∗1019 N v =1.04∗1019 SI 材料的禁带宽度为:1.12ev. 硅材料的n i =1.5∗1010 Ge 材料的n i =2.4∗1013 GaAs材料 ...查看


  • 晶体类型和性质
  • 第一单元 晶体的类型与性质 第一节 离子晶体.分子晶体和原子晶体 [教学目的] 1.使学生了解离子晶体.分子晶体和原子晶体的结构模型及其性质的一般特点. 2.使学生理解离子晶体.分子晶体和原子晶体的晶体类型与性质的关系. 3.初步了解分子间 ...查看


  • 晶体与非晶体的区别
  • JISHOU UNIVERSITY <固体物理>期末 考核报告 晶体与非晶体的区别 摘要:自然界中的固体物质可以分为晶体和非晶体两大类.其中,晶体是指那些内部质点(原子.离子或分子)在三维空间周期性地重复排列构成的固体物质. 与 ...查看


  • 晶体的结构及性质
  • 晶体的结构及性质 基础知识 一.晶体和非晶体 1.定义:内部粒子(原子.分子或离子)在空间按一定规律做周期性重复排列的固体物质称为晶体.例如:高锰酸钾.金刚石.干冰.金属铜.石墨等.绝大多数常见固体都是晶体. 非晶体:内部原子或分子的排列呈 ...查看


  • 高中数理化竞赛参考书推荐
  • 高中化学竞赛参考书特别推荐 常规/高考类: <高中化学重难点手册>(华中师范大学出版社,王后雄老师主编):历年高考试题汇编(任何一种,最好有详细解析的): <高中化学读本>(很老的化学教材): <高中化学研究性 ...查看


热门内容