Fortran TutorialDepartment of Physics.docx
- 文档编号:25221232
- 上传时间:2023-06-06
- 格式:DOCX
- 页数:44
- 大小:37.93KB
Fortran TutorialDepartment of Physics.docx
《Fortran TutorialDepartment of Physics.docx》由会员分享,可在线阅读,更多相关《Fortran TutorialDepartment of Physics.docx(44页珍藏版)》请在冰豆网上搜索。
FortranTutorialDepartmentofPhysics
RichardKass
Winter2004
APhysics416FortranTutorial
(basedontheinformationat:
http:
//macams1.bo.infn.it/tutorial/)
1.WhatisFortran?
2.Fortranbasics
3.Variables,declarations,andtypes
4.Expressionsandassignment
5.Logicalexpressions
6.Theifstatements
7.Loops
8.Arrays
9.Subprograms
10.RandomnumbersandMonteCarlosimulations
11.Simpleinputandoutput
12.Formatstatements
13.FileI/O
14.Commonblocks
15.dataandblockdata
16.Debugging
17.RunningFortranonthePhysicsDepartment’sVAX(OHSTPY)computer
18.AsampleFortranprogramforLab1
1.WhatisFortran?
Fortranisageneralpurposeprogramminglanguage,mainlyintendedformathematicalcomputationsinscienceapplications(e.g.physics).FortranisanacronymforFORmulaTRANslation,andwasoriginallycapitalizedasFORTRAN.However,followingthecurrenttrendtoonlycapitalizethefirstletterinacronyms,wewillcallitFortran.Fortranwasthefirsthigh-levelprogramminglanguage.TheworkonFortranstartedinthe1950'satIBMandtherehavebeenmanyversionssince.Byconvention,aFortranversionisdenotedbythelasttwodigitsoftheyearthestandardwasproposed.ThuswehaveFortran66,Fortran77andFortran90(95).
ThemostcommonFortranversiontodayisstillFortran77,althoughFortran90isgrowinginpopularity.Fortran95isarevisedversionofFortran90whichisexpectedtobeapprovedbyANSIsoon(1996).TherearealsoseveralversionsofFortranaimedatparallelcomputers.ThemostimportantoneisHighPerformanceFortran(HPF),whichisade-factostandard.
UsersshouldbeawarethatmostFortran77compilersallowasupersetofFortran77,i.e.theyallownon-standardextensions.InthistutorialwewillemphasizestandardANSIFortran77.
WhylearnFortran?
Fortranisthedominantprogramminglanguageusedinscientificapplications.Itisthereforeimportantforphysics(orengineering)studentstobeabletoreadandmodifyFortrancode.Fromtimetotime,so-calledexpertspredictthatFortranwillrapidlyfadeinpopularityandsoonbecomeextinct.ThismayactuallyhappenasC(orC++)israpidlygrowinginpopularity.However,previouspredictionsofthedownfallofFortranhavealwaysbeenwrong.Fortranisthemostenduringcomputerprogramminglanguageinhistory.OneofthemainreasonsFortranhassurvivedandwillsurviveissoftwareinertia.Onceacompanyhasspentmanypeople-yearsandperhapsmillionsofdollarsonasoftwareproduct,itisunlikelytotrytotranslatethesoftwaretoadifferentlanguage.Reliablesoftwaretranslationisaverydifficulttaskandthere’s40yearsofFortrancodetoreplace!
Portability
AmajoradvantageFortranhasisthatitisstandardizedbyANSI(AmericanNationalStandardsInstitute)andISO(InternationalStandardsOrganization).Consequently,ifyourprogramiswritteninANSIFortran77thenitwillrunonanycomputerthathasaFortran77compiler.Thus,Fortranprogramsareportableacrosscomputerplatforms
2.Fortran77Basics
AFortranprogramisjustasequenceoflinesoftext.ThetexthastofollowacertainsyntaxtobeavalidFortranprogram.Westartbylookingatasimpleexamplewherewecalculatetheareaofacircle:
programcircle
realr,area
cThisprogramreadsarealnumberrandprints
ctheareaofacirclewithradiusr.
write(*,*)'Giveradiusr:
'
read(*,*)r
area=3.14159*r*r
write(*,*)'Area=',area
stop
end
Thelinesthatbeginwitha"c"arecommentsandhavenopurposeotherthantomaketheprogrammorereadableforhumans.Originally,allFortranprogramshadtobewritteninallupper-caseletters.Mostpeoplenowwritelower-casesincethisismorelegible.
Programorganization
AFortranprogramgenerallyconsistsofamainprogram(ordriver)andpossiblyseveralsubprograms(orproceduresorsubroutines).Fornowwewillassumeallthestatementsareinthemainprogram;subprogramswillbetreatedlater.Thestructureofamainprogramis:
programname
declarations
statements
stop
end
Inthistutorial,wordsthatareinitalicsshouldnotbetakenasliteraltext,butratherasagenericdescription.Thestopstatementisoptionalandmayseemsuperfluoussincetheprogramwillstopwhenitreachestheendanywaybutitisrecommendedtoalwaysterminateaprogramwiththestopstatementtoemphasizethattheexecutionflowstopsthere.
Columnpositionrules
Fortran77isnotafree-formatlanguage,buthasaverystrictsetofrulesforhowthesourcecodeshouldbeformatted.Themostimportantrulesarethecolumnpositionrules:
Col.1:
Blank,ora"c"or"*"forcomments
Col.2-5:
Statementlabel(optional)
Col.6:
Continuationofpreviousline(optional)
Col.7-72:
Statements
Col.73-80:
Sequencenumber(optional,rarelyusedtoday)
MostlinesinaFortran77programstartswith6blanksandendsbeforecolumn72,i.e.onlythestatementfieldisused.NotethatFortran90allowsfreeformat.
Comments
Alinethatbeginswiththeletter"c"oranasteriskinthefirstcolumnisacomment.Commentsmayappearanywhereintheprogram.Well-writtencommentsarecrucialtoprogramreadability.CommercialFortrancodesoftencontainabout50%comments.YoumayalsoencounterFortranprogramsthatusetheexclamationmark(!
)forcomments.Thisishighlynon-standardinFortran77,butisallowedinFortran90.Theexclamationmarkmayappearanywhereonaline(exceptinpositions2-6).
Continuation
Occasionally,astatementdoesnotfitintoonesingleline.Onecanthenbreakthestatementintotwoormorelines,andusethecontinuationmarkinposition6.Example:
c23456789(Thisdemonstratescolumnposition!
)
cThenextstatementgoesovertwophysicallines
area=3.14159265358979
+*r*r
Anycharactercanbeusedinsteadoftheplussignasacontinuationcharacter.Itisconsideredgoodprogrammingstyletouseeithertheplussign,anampersand,ornumbers(2forthesecondline,3forthethird,andsoon).
Blankspaces
BlankspacesareignoredinFortran77.SoifyouremoveallblanksinaFortran77program,theprogramisstillsyntacticallycorrectbutalmostunreadableforhumans.
3.Variables,types,anddeclarations
Variablenames
VariablenamesinFortranconsistof1-6characterschosenfromthelettersa-zandthedigits0-9.Thefirstcharactermustbealetter.(Note:
Fortran90allowsvariablenamesofarbitrarylength).Fortran77doesnotdistinguishbetweenupperandlowercase,infact,itassumesallinputisuppercase.However,nearlyallFortran77compilerswillacceptlowercase.IfyoushouldeverencounteraFortran77compilerthatinsistsonuppercaseitisusuallyeasytoconvertthesourcecodetoalluppercase.
Typesanddeclarations
Everyvariableshouldbedefinedinadeclaration.Thisestablishesthetypeofthevariable.Themostcommondeclarationsare:
integerlistofvariables
reallistofvariables
doubleprecisionlistofvariables
complexlistofvariables
logicallistofvariables
characterlistofvariables
Thelistofvariablesshouldconsistofvariablenamesseparatedbycommas.Eachvariableshouldbedeclaredexactlyonce.Ifavariableisundeclared,Fortran77usesasetofimplicitrulestoestablishthetype.Thismeansallvariablesstartingwiththelettersi-nareintegersandallothersarereal.ManyoldFortran77programsusestheseimplicitrules,butyoushouldnot!
Theprobabilityoferrorsinyourprogramgrowsdramaticallyifyoudonotconsistentlydeclareyourvariables.
Integersandfloatingpointvariables
Fortran77hasonlyonetypeforintegervariables.Integersareusuallystoredas32bits(4bytes)variables.Therefore,allintegervariablesshouldtakeonvaluesintherange[-m,m]wheremisapproximately2*10^9.
Fortran77hastwodifferenttypesforfloatingpointvariables,calledrealanddoubleprecision.Whilerealisoftenadequate,somenumericalcalculationsneedveryhighprecisionanddoubleprecisionshouldbeused.Usuallyarealisa4bytevariableandthedoubleprecisionis8bytes,butthisismachinedependent.Somenon-standardFortranversionsusethesyntaxreal*8todenote8bytefloatingpointvariables.
Theparameterstatement
Someconstantsappearmanytimesinaprogram.Itisthenoftendesirabletodefinethemonlyonce,inthebeginningoftheprogram.Thisiswhattheparameterstatementisfor.Italsomakesprogramsmorereadable.Forexample,thecircleareaprogramshouldhavebeenwrittenlikethis:
programcircle
realr,area,pi
parameter(pi=3.14159)
cThisprogramreadsarealnumberrandprints
ctheareaofacirclewithradiusr.
write(*,*)'Giveradiusr:
'
read(*,*)r
area=pi*r*r
write(*,*)'Area=',area
stop
end
Thesyntaxoftheparameterstatementis
parameter(name=constant,...,name=constant)
Therulesfortheparameterstatementare:
⎽The"variable"definedintheparameterstatementisnotavariablebutratheraconstantwhosevaluecanneverchange
⎽A"variable"canappearinatmostoneparameterstatement
⎽Theparameterstatement(s)mustcomebeforethefirstexecutablestatement
Somegoodreasonstousetheparameterstatementare:
⎽ithelpsreducethenumberoftypos
⎽itiseasytochangeaconstantthatappearsmanytimesinaprogram
4.Expressionsandassignment
Constants
Thesimplestformofanexpressionisaconstant.Thereare6typesofconstants,correspondingtothe6datatypes.Herearesomeintegerconstants:
1
0
-100
32767
+15
Thenwehaverealconstants:
1.0
-0.25
2.0E6
3.333E-1
TheE-notationmeansthatyoushouldmultiplytheconstantby10raisedto
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Fortran Tutorial Department of Physics