999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

計算物理教學中基于FORTRAN的結果可視化方法

2017-06-22 14:49:22王圣軍
物理通報 2017年6期
關鍵詞:可視化物理語言

王圣軍 金 濤

(陜西師范大學物理學與信息技術學院 陜西 西安 710062)

計算物理教學中基于FORTRAN的結果可視化方法

王圣軍 金 濤

(陜西師范大學物理學與信息技術學院 陜西 西安 710062)

介紹在計算物理教學中配合Fortran語言進行可視化輸出的一種高效的方法.以利薩如圖形的模擬和可視化輸出作為例子介紹了這種可視化方法.這種方法結合了Fortran的系統函數功能和gnuplot的腳本功能,可以自動地把數據文件以圖形的方式顯示出來或者保存為圖片文件.整個可視化過程需要的繪圖代碼少,操作簡潔,并且所用軟件都是在科學研究中常用的免費軟件.通過這種方法能夠低成本高效地實現計算結果的可視化.

計算物理學 可視化 Fortran Gnuplot

隨著計算機在物理學中被廣泛地應用,計算物理已經成為一門重要的課程.在計算物理中將數據轉換為圖像進行可視化輸出,可以使結果直觀、易于理解,是使用計算機處理數據的一大優勢.所以計算結果的可視化輸出是計算物理教學中的一個重要環節[1].對于計算物理中常用的編程語言來說,圖形化輸出是一件麻煩的事情.比如Fortran語言和C語言標準本身沒有圖形輸出功能.

為了可視化輸出結果,有些教材采用了BASIC或者Java等有圖形功能的計算機語言,在程序中編寫圖形輸出的代碼.例如文獻[2]中采用的計算機語言是BASIC.在分子振動的半經典量子化的例子中,作者提供的程序包含了可視化輸出.程序代碼總長度是302行,而其中與圖形輸出相關的代碼子程序有172行.其中有大量的代碼被用來設定圖形輸出的環境和格式.這種可視化方式花費的代價比較大.在教學中解釋這些代碼需要花費比較多的時間.

在傳統的編程語言之外,MatLab是一個非常強大的工具,在計算和數據可視化方面的功能都非常豐富并且使用方便輸出美觀[3].但是傳統的編程語言在科學計算中仍被廣泛使用.所以本文關注配合傳統編程語言使用的繪圖工具和可視化輸出方法.

本文介紹了以Fortran語言作為教學語言的情況下計算結果可視化輸出的方法.我們選用的Fortran語言編譯器是Gfortran.這是一個性能良好的免費軟件,它既支持Fortran77也支持最新的Fortran語言標準.

我們選用的繪圖軟件是Gnuplot.這是一種比較常用的免費科學繪圖軟件,可以繪制函數和數據的2維以及3維圖.它常被用于科學出版物的繪圖,能在各種主流操作系統上運行,包括Windows,Linux等.Gnuplot可以把圖形直接輸出到屏幕上,也可以保存為多種格式的圖像文件,包括EPS,PDF,JPEG等.它可以通過命令行以交互的方式使用,也可以通過腳本以批處理模式使用.

我們通過一個例子來說明使用這些軟件進行可視化輸出的方法.這個例子是用Fortran語言寫程序輸出利薩如曲線.我們以腳本方式使用Gnuplot進行繪圖.首先建立一個Fortran源程序prog.f90.具體內容如下:

program main

implicit none

real :: x,y,omx,omy,phix,t,h

open(10,file=′x-y.txt′)

t=0;h=0.01

omx=3.0;omy=4.0;phix=3.1415926/2

do while(t<100)

x=sin(omx*t+phix)

y=sin(omy*t)

write(10,*)x,y

t=t+h

enddo

close(10)

call system("gnuplot pl.txt")

endprogram

然后,建立一個Gnuplot的腳本文件pl.txt.把這個文件和Fortran源程序文件prog.f90放在同一個文件夾里面.這個腳本文件是一個純文本文件.文件的內容只有兩行.具體內容如下:

plot ′x-y.txt′ with lines

pause-1

在Windows的命令窗口中,使用Gfortran編譯源程序的命令為:

gfortran prog.f90

編譯以后得到的可執行程序是a.exe.這個程序首先完成計算過程,把數據保存到文件”x-y.txt”中.然后當程序運行到call system("gnuplot pl.txt")的時候,它調用Gnuplot軟件.此時彈出如圖1所示的圖形輸出窗口.

圖1 Gnuplot的圖形輸出窗口

在程序prog.f90中,關于繪圖的代碼只有一行:

call system("gnuplot pl.txt")

在這里,我們使用了系統函數system(),括號中的字符串被傳遞給操作系統的命令窗口.這一句的功能是在命令窗口中調用Gnuplot并且讓它使用腳本pl.txt繪圖.

這里的Gnuplot腳本文件只有兩行.第一行使用了繪制2維圖的命令plot.在命令中寫入了數據文件的名字x-y.txt.Gnuplot軟件會去硬盤上讀取這個文件,用其中的數據進行繪圖.plot命令的選項with lines指定了使用線來繪圖.第二行pause-1指示Gnuplot在繪圖之后不要退出,而是等待輸入.這時在命令窗口中按Enter鍵就可以關閉圖形輸出窗口并退出Gnuplot.

系統函數system()在早期的Fortran語言標準中不是內部函數,但是多數編譯器都支持這個函數.在使用Gfortran進行編譯的時候可以直接使用這個函數.在使用Visual Fortran進行編譯的時候要使用一個模塊use DFPORT.在使用ifort編譯的情況下,要使用的模塊是use IFPORT.在最新的Fortran語言標準中已經包含了此功能,使用它的方法是調用標準的內部子程序:

call execute_command_line (“gnuplot pl.txt”)

在支持新標準的編譯器中使用這種方法時不需要在源程序中包含特殊的模塊.

這里介紹的做法實際等效于先保存數據文件,然后使用獨立的繪圖軟件導入數據,進行繪圖.但是Gnuplot的腳本功能使我們不需要操作繪圖軟件.Fortran語言的系統函數功能,結合Gnuplot的腳本功能,使得畫圖成為一個自動化的過程.這種方式在課堂演示中非常快捷方便.另外,在科學計算的編程和模擬中,快速地對結果進行圖形化輸出是檢驗程序是否存在錯誤或者尋找適當參數的快捷方法.所以這個方式在科學計算中也具有實際的應用價值.

在Gnuplot的腳本中可以通過簡單的命令進行更多的設置.這里介紹幾個常用的設置.首先,可以設定坐標軸上的標簽.例如使用命令:

set xlabel ′x′

set ylable ′y′

把x軸和y軸的標簽設定為x和y.其次,還可以使用對數坐標.設定坐標軸采用對數坐標的命令是:

set logscale x

set logscale y

也可以設定讓Gnuplot不把結果輸出到屏幕上,而是把結果保存成一個圖片文件.Gnuplot支持多種圖片格式.例如,可以把利薩如曲線輸出一個png格式的圖片.在腳本中首先設定輸出終端類型:

set terminal png

然后設定輸出文件名稱:

set output ′fig.png′

輸出為圖片文件時,腳本中不寫pause-1.一個完整腳本的例子如下:

set terminal png

set output ′fig.png′

set xlabel ′x′

set ylabel ′y′

plot ′x-y.txt′ with lines

使用這個腳本,得到的圖片如圖2所示.

圖2 Gnuplot輸出的圖片

Gnuplot盡管是一個免費軟件,但是目前已經被廣泛地應用到了科學研究的繪圖任務中.一些重要的免費版科學數據分析軟件是以Gnuplot為繪圖組件的.在計算物理中學習Gnuplot的簡單使用方法,對于未來的學習和研究都有潛在的幫助.此外,Gnuplot的使用方式和Matlab等商業版軟件比較接近,對于學習Matlab也有幫助.

結論:本文介紹了一種高效地把數值計算結果可視化輸出的方法.該方法結合了Fortran語言的系統函數功能和Gnuplot軟件的腳本繪圖功能,能夠自動化地把數據文件輸出到屏幕或者圖形文件,不需要操作繪圖軟件的中間過程,有利于實現高效的課堂演示.這種方式需要的代碼少,使用方便,容易掌握.這里介紹的所有軟件都是免費軟件,便于學生在個人計算機上使用,從而有利于學生靈活地開展計算物理課程的上機實踐.

1 彭芳麟, 梁穎. 科學計算可視化與計算物理學. 大學物理, 2013, 32(7): 2~12

2 S. E. Koonin著. 計算物理學. 秦克誠,譯. 北京: 高等教育出版社, 19923 彭芳麟. 計算物理基礎. 北京: 高等教育出版社, 2010

2016-11-24)

猜你喜歡
可視化物理語言
只因是物理
井岡教育(2022年2期)2022-10-14 03:11:44
基于CiteSpace的足三里穴研究可視化分析
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
基于CGAL和OpenGL的海底地形三維可視化
語言是刀
文苑(2020年4期)2020-05-30 12:35:30
處處留心皆物理
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
讓語言描寫搖曳多姿
三腳插頭上的物理知識
累積動態分析下的同聲傳譯語言壓縮
主站蜘蛛池模板: 露脸真实国语乱在线观看| 欧美午夜理伦三级在线观看| 99久久精品美女高潮喷水| 日本午夜网站| 国产无码精品在线播放| 高潮毛片免费观看| 午夜国产精品视频| 91精品国产自产在线老师啪l| 日本高清有码人妻| 国产区人妖精品人妖精品视频| 91亚瑟视频| 亚洲男人的天堂网| 91色在线观看| 亚洲午夜天堂| 亚洲国产第一区二区香蕉| 麻豆国产精品一二三在线观看| 色网站在线免费观看| 亚洲黄网视频| 澳门av无码| 狠狠做深爱婷婷综合一区| 欧美国产日产一区二区| 成人国产精品网站在线看| 激情综合激情| 国产91在线|日本| h网站在线播放| 国产在线观看第二页| 久久综合成人| 色婷婷综合激情视频免费看| 国产亚洲高清视频| 91亚洲国产视频| 国产无码网站在线观看| 亚洲黄色激情网站| 女人毛片a级大学毛片免费| 欧美成人亚洲综合精品欧美激情| 亚洲一区免费看| 男女性午夜福利网站| 99激情网| 国产毛片不卡| 国产精品不卡永久免费| 日本手机在线视频| 国产门事件在线| 精品少妇三级亚洲| 在线观看免费AV网| 国产专区综合另类日韩一区| 亚洲AV无码久久精品色欲| 国产尤物视频网址导航| 波多野结衣一级毛片| 人人爽人人爽人人片| 无码中文AⅤ在线观看| 99re精彩视频| 色综合五月婷婷| 国产日韩精品欧美一区喷| 性欧美在线| 老司国产精品视频91| 乱系列中文字幕在线视频 | 综合色88| 香蕉综合在线视频91| 欧美另类一区| 亚洲国产成人在线| 精品夜恋影院亚洲欧洲| 国产精品久线在线观看| 色老二精品视频在线观看| 狠狠综合久久久久综| 欧美日韩91| 国产午夜精品一区二区三区软件| 91亚瑟视频| AV在线天堂进入| 国产性生交xxxxx免费| 亚洲天堂色色人体| 97久久精品人人做人人爽| 澳门av无码| 精品丝袜美腿国产一区| 欧美成人国产| 成色7777精品在线| 国产在线精品网址你懂的| 国产精品久久久久久影院| 成年人免费国产视频| 欧美日韩免费在线视频| 91精品aⅴ无码中文字字幕蜜桃 | 日韩高清一区 | 国产永久免费视频m3u8| 国产精品污污在线观看网站|