模拟物理-01

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

模拟物理王圣军sjwang@126.com(2013秋)课程简介•模拟物理是为高等学校物理类各专业设置的一门基础选修课。•讲授计算机模拟方法在物理学中的应用。•涉及内容包括:–确定性方法和随机方法基础知识;–微正则系综和正则系综分子动力学;布朗动力学;–蒙特卡罗方法及其在巨正则系综中的应用。课程简介•模拟物理是为高等学校物理类各专业设置的一门基础选修课。•讲授计算机模拟方法在物理学中的应用。•涉及内容包括:–基本数值计算方法;–确定性方法和随机方法基础知识;–微正则系综和正则系综分子动力学;布朗动力学;–蒙特卡罗方法及其在巨正则系综中的应用。模拟是重要的•IntheMarch4(2011)issueofPhysicalReviewLetters,26outof47publicationsexclusivelyoressentiallyrelyonlargescalecomputations!•利用计算机进行数值计算是理论的重要补充。•利用计算机处理数据,大大扩展了对于科学实验数据的分析能力。•计算机模拟是实验的重要补充。•计算机模拟是复杂系统研究的重要手段。内容非常丰富•举例来说,1959年美国解密曼哈顿计划,以“计算物理方法”丛书的名义陆续编辑出版。这套丛书从1963年到1977年共出版17卷。•内容涉及到统计物理、量子力学、流体力学、核物理、天体物理、固体物理、等离子体物理、受控热核反应…等方面的物理问题。•介绍了有关的计算方法及研究成果,它反映了“计算物理”的概貌。•经过几十年的发展,可以想象其内容是更加庞大了。教材众多•各种计算物理教材也会有所侧重。•有一些针对大学基础课程的教材,不针对专门问题,内容比较基本,但是看起来比较像计算方法教科书。教学计划中的参考书1.《计算物理学》[美]StevenE.Koonin著;秦克诚译,高等教育出版社,19922.《理论物理学中的计算机模拟方法》[德]D.W.Heermann著,秦克诚译,北京大学出版社,1986年3月第2版。这两本书作为基础课程教科书,都比较注重物理问题。参考书2是我们开设高年级选修课和研究课使用的教材。内容多,课时少。着重讲其中最为常用的部分,而不会全部讲完。•《计算机模拟方法在物理学中的应用(影印版)》古德高等教育出版社2006部分优秀参考书关于课程名字•计算物理–注重数值计算方法–把计算方法应用于简单的物理问题–内容比较基本–参考书众多•模拟物理–创建虚拟的实验室–注重讲解物理条件的实现。–对于科学研究来说实用性强–参考书少•模拟物理应当是计算物理的后续课程。•模拟物理更关注物理系统的模拟方法,而不是数学问题的数值处理方法。关于工具的问题编程语言•Fortran•C/C++•Python•MatLabFortran90•Fortran是第一个高级编程语言。•Fortran90非常适合科学计算,因为它具有高效的内部函数和强大的数组特性。•Fortran在物理中广泛使用,因此所有物理学生都应当具备关于它的基本知识。•Fortran90比其它现代语言更容易学习。~py502/操作系统•Linux–免费获取–工具丰富–性能优越–专业计算的首选•Windows–也能够完成所有计算任务编译软件•Gfortran:GNUFortran•开源,免费Gfortran的安装与使用•Google中搜索gfortran•选择GFortranBinaries-下载-安装•在cmd中使用gfortran命令进行编译。演示程序编辑器•Vi•Notepad++作业-0•在自己的电脑上安装–Gfortran–Notepad++Fortran语言简介Fortran发展史•Fortran的含义:FormulaTranslation•它是第一种高级语言•它是所有科学计算语言的祖先•三代Fortran–FortranIV及以前–Fortran77–Fortran90及以后例子:Hello程序Programmainprint*,”Hello!”write(*,*)”hello!”Endprogram•程序的开始与结尾–Programname–Endprogram•输出到屏幕:print*,或者write(*,*)•与C语言不同的是,行的末尾不需要;Fortran语言简介•固定格式–为了配合早期使用穿孔卡片输入程序所发明的格式。Fortran语言简介•固定格式–为了配合早期使用穿孔卡片输入程序所发明的格式。Fortran语言简介•固定格式•自由格式–叹号“!”后面的文本是注释,(必须是英语字符中的标点符号)–每行可以编写132个字符–一行程序代码的最后如果是&,代表下一行程序会和这一行连接。例子:Hello程序!FreeformatProgrammainprint*,”Hello!”!注释write(*,*)&”hello!”Wri&&te(*,*)”hello!”Endprogram变量的声明•整形类型integerintegera!声明整形变量ainteger::a=1!声明a并且赋初值为1integer*4ainteger(4)a•浮点型realreal::areal*8::a变量的声明•复数complexcomplex::aa=(1.0,2.0)!a=1.0+2.0i•字符与字符串charactercharacter::acharacter*10::ba=“H”b=“ello.”变量的声明•逻辑变量logicallogical::aa=.true.•变量的取名测量–只能使用,英文字母,数字,和下划线_–最好取成有意义的词变量的声明•使用implicitnone–程序的第二行应该是implicitnone–不要使用隐含声明–隐含声明的规则:i,j,k,l,m,n开始的变量为整形•声明常数parameterreal::piparameter(pi=3.14159)real,parameter::pi=3.1415926数学表达式•数学运算符号+加法,-减法,*乘法,/除法,**乘幂,()括号•乘号不能省略•2的3次方:2**3•除法没有分式(A+B)*(C+D)/(2*(E+F))–不区分大小写流程控制:if语句if(逻辑判断式)then…!逻辑成立时,执行这里的代码endifif(逻辑判断式)then…!逻辑成立时else…!逻辑不成立时endif逻辑运算==判断是否“相等”.eq./=判断是否“不相等”.ne.判断是否“大于”.gt.=判断是否“大于或等于”.ge.判断是否“小于”.lt.=判断是否“小于或等于”.le..and..or..not循环DOdo…if()exitenddodocounter=1,10…!重复运行10次enddodowhile(逻辑运算)…!逻辑运算成立时,一直重复enddo循环的流程控制•cycle命令使流程直接回到循环的开头,而忽略cycle命令后面的代码•exit命令的功能是直接跳出一个正在运行的循环。数组•一维数组integer,parameter::N=10integer::a(N)•二维数组integer::a(3,3)•对整个数组的操作子程序programmainimplicitnonecallsub1()callsub2()endprogramsubroutinesub1()implicitnoneprint*,“thisissub1”endsubroutinesub1subroutinesub2()implicitnoneprint*,“thisissub2.”endsubroutinesub2函数functionprogrammainimplicitnonereal::a=1,b=2real,external::addprint*,add(a,b)endfunctionadd(a,b)implicitnonereal::a,breal::addadd=a+bend文件programmainimplicitnoneopen(unit=10,file=‘hello.tex’)write(10,*)“hello”endprogram作业:你自己建立了什么样的计算平台。编写一个程序输出hello,编译并运行。通过电子邮件发一个截图给我,展示你的源代码以及命令窗口中的编译和运行结果。

1 / 39
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功