7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 1/72
Introduction toFortran 90
Si LiuSi Liu
July 19, 2010July 19, 2010
NCAR/CISL/OSD/HSSNCAR/CISL/OSD/HSS
Consulting Services rou!Consulting Services rou!
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 2/72
Syllabus
Intro"uction
#$sic synt$%
Arr$ysControl structures
Sco!es
I/O
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 3/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 4/72
History of Fortran
-OR.RAN is $n $crony *or -ORul$ .RANsl$tion
I#( -ortr$n 19
-ortr$n 33 st$n"$r" 1933-ortr$n st$n"$r" 194
-ortr$n 90 st$n"$r" 1991
-ortr$n 9 st$n"$r" 1993
-ortr$n 2005 st$n"$r"
-ortr$n 2004 st$n"$r"
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 5/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 6/72
Objective, continued
7rovi"e "$t$ !$r$llel c$!$&ility
7$r$llel $rr$y o!er$tions *or &etter use o* vector $n" !$r$llel
!rocessors
Co!$ti&ility )it+ -ortr$n
-ortr$n is $ su&set o* -ortr$n 90
I!rove s$*ety
Re"uce ris; o* errors in st$n"$r" co"e
St$n"$r" con*or$nce
Co!iler ust re!ort non st$n"$r" co"e $n" o&solescent
*e$tures
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 7/72
Major new features
Arr$y !rocessing Dyn$ic eory $lloc$tion
(o"ules
7roce"ures<8 O!tion$l/=ey)or" 7$r$eters
8 Intern$l 7roce"ures
8 Recursive 7roce"ures7ointers
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 8/72
Other new features
-ree:*or$t source co"e
S!eci*ic$tions/I!licit none
7$r$eteri6e" "$t$ ty!es =IND
Derive" ty!es
O!er$tor overlo$"ing
Ne) control structuresNe) intrinsic *unctions
Ne) I/O *e$tures
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 9/72
Available Fortran 90 comilers
gfortran — the GNU Fortran compiler
Cray CF90
DEC Fortran 90
EPC Fortran 90
IBM XF
ahey F90Micro!ay
N" #oft!are F90$
N"G f90
Pacific #ierra %"#&'90
Para(oft
#alfor) F&N90
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 10/72
First Fortran ro!ramSynta" #"amle$ helloworld
synt$%>e%1?*90
7RORA( Hello@orl"
Hello @orl" in -ortr$n 90 $n" 9
@RI.B,B Hello @orl"
ND 7RORA(
Co!ile $n" run
g*ortr$n synt$%>e%1?*90 :o synt$%>e%1?o
?/synt$%>e%1?o
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 11/72
Source form
Lines u! to 152 c+$r$ctersLo)erc$se letters !eritte"
N$es u! to 51 c+$r$cters inclu"ing un"erscore
Seicolon to se!$r$te ulti!le st$teents on oneline
Coents $y *ollo) e%cl$$tion
A!ers$n" is $ continu$tion sy&ol
C+$r$cter set inclu"es E F G : K
Ne) rel$tion$l o!er$tors< FM, FM, M,M/,MG,MGM
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 12/72
#"amle% Source form*ree>source>*or?*90
7RORA( *ree>source>*or
Long n$es )it+ un"erscores
No s!eci$l coluns
I(7LICI. NON
u!!er $n" lo)er c$se lettersRAL << t%, ty, t6 tr$iling coent
(ulti!le st$teents !er line
t% 1?0 ty 2?0 t6 t% B ty
Continu$tion on line to &e continue"
7RIN. B, t%, ty, t6
8 ND 7RORA( *ree>source>*or
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 13/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 14/72
Secifications, continued
tye &&,attribute'((( %%' entity list
attribute can be7ARA(.R, 7#LIC, 7RIA.,
ALLOCA.A#L, 7OIN.R, .AR.,
IN.N.inout, DI(NSION e%tent:list,
O7.IONAL, SA, T.RNAL,IN.RINSIC
C$n initi$li6e v$ri$&les in s!eci*ic$tions
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 15/72
#"amle% Secifications
Integer v$ri$&les<
IN.R << i$, i&
7$r$eters<IN.R, 7ARA(.R << n100, 1000
Initi$li6$tion o* v$ri$&les<
RAL << $ 2?31424, & 5?1U19 Logic$l v$ri$&le
LOICAL << ?-$lse?
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 16/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 17/72
IM)*I+I -O-#
In -ortr$n , i!licit ty!ing !eritte" use o*
un"ecl$re" v$ri$&les? .+is +$s &een t+e c$use
o* $ny !rogr$ing errors?
I(7LICI. NON *orces you to "ecl$re t+e ty!eo* $ll v$ri$&les, $rr$ys, $n" *unctions?
I(7LICI. NON $y &e !rece"e" in $ !rogr$
unit only &y S $n" -OR(A.?It is recoen"e" to inclu"e t+is st$teent in
$ll !rogr$ units?
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 18/72
.ind /alues
intrinsic ty!es< RAL, IN.R, CO(7LT,
CHARAC.R, LOICAL
$c+ ty!e +$s $n $ssoci$te" non neg$tive integer v$lue
c$lle" t+e =IND ty!e !$r$eter
se*ul *e$ture *or )riting !ort$&le co"e reVuiring
s!eci*ie" !recision
A !rocessor ust su!!ort $t le$st 2 ;in"s *or RAL $n"
CO(7LT, $n" 1 *or IN.R, LOICAL $n"
CHARAC.R
($ny intrinsics *or enVuiring $&out $n" setting ;in"
v$lues
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 19/72
#"amle% .ind /alues
IN.R4 << I
RAL=INDU << -
CHARAC.R10 << C
IN.R << I=SLC.D>IN.>=IND9
IN.R << IRSLC.D>RAL>=IND5,10
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 20/72
.ind values% I-##1
IN.R =IND )! << i$ or
IN.R)! << i$
Integers usu$lly +$ve 13, 52, or 3U &it 13 &it integer nor$lly !erits :5234 F i F 523
=in" v$lues $re syste "e!en"ent
8 An 4 &yte integer v$ri$&le usu$lly +$s ;in" v$lue 4 or 2
8 A U &yte integer v$ri$&le usu$lly +$s ;in" v$lue U or 1
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 21/72
.ind values% I-##1, continued
.o "ecl$re integer in syste in"e!en"ent )$y, s!eci*y
;in" v$lue $ssoci$te" )it+ r$nge o* integers reVuire"<
IN.R, 7ARA(.R << i4 SLC.D>IN.>=IND4
IN.R =IND i4 << i$, i&, ic
i$, i& $n" ic c$n +$ve v$lues &et)een :104 $n" E104 $tle$st i* !eritte" &y !rocessor?
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 22/72
.ind values% 1#A*
RAL =IND )! << r$ or
RAL)! << r$
Decl$re $ re$l v$ri$&le, r$, )+ose !recision is"eterine" &y t+e v$lue o* t+e ;in" !$r$eter, )!
=in" v$lues $re syste "e!en"ent
8 An 4 &yte 3U &it re$l v$ri$&le usu$lly +$s ;in" v$lue 4 or 2?
8 A U &yte 52 &it re$l v$ri$&le usu$lly +$s ;in" v$lue U or 1? Liter$l const$nts set )it+ ;in" v$lue< const 1?0>)!
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 23/72
.ind values% 1#A*,continued
.o "ecl$re re$l in syste in"e!en"ent )$y, s!eci*y ;in"
v$lue $ssoci$te" )it+ !recision $n" e%!onent r$nge
reVuire"<
IN.R, 7ARA(.R <<
i10 SLC.D>RAL>=IND10, 200
RAL =IND i10 << $, &, c
$, & $n" c +$ve $t le$st 10 "eci$l "igits o* !recision $n"
t+e e%!onent r$nge 200?
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 24/72
.ind values% Intrinsics
IN.R, 7ARA(.R <<
i4 SLC.D>IN.>=IND4
IN.R =IND i4 << i$
7RIN. B, =INDi$
&hi( !ill print the *in) +al,e of ia-
IN.R, 7ARA(.R <<
i10 SLC.D>RAL>=IND10, 200
RAL =IND i10 << $ 7RIN. B, RAN$, 7RCISION$, =IND$
&hi( !ill print the e.ponent range/ the )ecimal )igit( of
preci(ion an) the *in) +al,e of a-
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 25/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 26/72
Syntax Example 2 , cntinue!
-unction Are$%,y,6
i!licit none
*unction ty!e
re$l << Are$re$l, intent in << %, y, 6
re$l << t+et$, +eig+t
t+et$ $cos%BB2EyBB2:6BB2/2?0B%By
+eig+t %Bsint+et$
Are$ 0?ByB+eig+t
en" *unction Are$
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 27/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 28/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 29/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 30/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 31/72
+ontrol Structures
.+ree &loc; constructs
8 I-
8 DO $n" DO @HIL8 CAS
All c$n &e neste"
All $y +$ve construct n$es to +el!
re$"$&ility or to incre$se *le%i&ility
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 32/72
+ontrol structure% IF
Pn$e<QI- logic$l e%!ression .HN&loc;
PLS I- logic$l e%!ression .HN
Pn$eQ &loc;Q???
PLS Pn$eQ
&loc;Q
ND I- Pn$eQ
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 33/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 34/72
+ontrol Structure% 2o
Pn$e<Q DO Pcntrl clau"e%
&loc;
ND DO Pn$eQ
Cntrl clau"e may be&
8 $n iter$tion control cl$use
count initi$l, *in$l P,incQ
8 $ @HIL control cl$use
@HIL logic$l e%!ression
8 or not+ing no control cl$use $t $ll
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 35/72
#"amle% 2O
Iter$tion control cl$use<
ro)s< DO i 1, ncols< DO ' 1,
$i, ' i E '
ND DO colsND DO ro)s
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 36/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 37/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 38/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 39/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 40/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 41/72
+ontrol Structure% +AS#
ener$l *or<
Pn$e<Q SLC. CAS expre""in$PCAS "electr$ 'name%
&loc;Q
???ND SLC. Pn$eQ
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 42/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 43/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 44/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 45/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 46/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 47/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 48/72
Array +onstructor
S!eci*y t+e v$lue o* $n $rr$y &y listing its eleents
! / 2, 5, , , 11, 15, 1 /
DA.A
RAL RR3
DA.A RR /3B0/
Res+$!e
RAL, DI(NSION 5, 2 << r$
r$ RSHA7 / i E ', i 1, 5, ' 1, 2 /,
SHA7 / 5, 2 /
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 49/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 50/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 51/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 52/72
7hole array oerations, continued
-ortr$n <
RAL $20, &20, c20
Y
DO 10 i 1, 20
$i 0?0
10 CON.IN
Y
DO 20 i 1, 20
$i $i / 5?1 E &i BSXR.ci
20 CON.IN
Y
-ortr$n 90<
RAL, DI(NSION 20 << $, &, c
???
$ 0?0 ???
Y$ $ / 5?1 E & B SXR.c
???
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 53/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 54/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 55/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 56/72
Allocatable array
Arr$y e%$!le 5 : $lloc$t$&le $rr$y
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 57/72
S * b l d
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 58/72
Scoes% *abels and names
.+e sco!e o* $ l$&el is $ $in !rogr$ or $ !roce"ure,
e%clu"ing $ny intern$l !roce"ures cont$ine" )it+in it?
ntities "ecl$re" in "i**erent sco!ing unit $re $l)$ys
"i**erent?
@it+in $ sco!ing unit, e$c+ n$e" entity ust +$ve $
"istinct n$e, )it+ t+e e%ce!tion o* generic n$es o*!roce"ures?
.+e n$es o* !rogr$ units $re glo&$l, so e$c+ ust
"istinct *ro t+e ot+ers $n" *ro $ny o* t+e loc$l entities o*
t+e !rogr$ unit? .+e sco!e o* $ n$e "ecl$re" in $ o"ule e%ten"s to $ny
!rogr$ units t+$t S t+e o"ule?
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 59/72
Scoe e"amle
sco!e>e%1?*90
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 60/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 61/72
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 62/72
#"amle% -amelist
???
IN.R << si6e 2
CHARAC.R LN U <<
color5 / M re"M, M!in;M, M&lueM /
NA(LIS. /clot+es/ si6e, color
@RI.B, N(L clot+es
???
out!uts<
CLO.HS
SIZ 2,
COLOR re",!in;,&lue, /
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 63/72
#"amle% Formatted I8O
7RORA( .S.>IO>1
I(7LICI. NON
IN.R << I,J
RAL<< A,#
RAD B, I,J
RAD B,A,#
7RIN. B,I,J7RIN. B,A,#
ND 7RORA( .S.>IO>1
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 64/72
#"amle% Formatted I8O
7RORA( .S.>IO>2
I(7LICI. NON
RAL A,#,C
@RI.B,B7le$se enter 5 re$l nu&ers<
RADB,10A,#,C
@RI.B,B.+ese 5 re$l nu&ers $re<
7RIN. 20,A,#,C
10 -OR(A.5-3?2,1T 20 -OR(A.1T,WA W,-3?2,W # W,-3?2,W C W, -3?2
ND 7RORA( .S.>IO>2
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 65/72
#"amle
IN.R << rec>len
???
INXIR IOLN.H rec>len n$e, title,
$ge, $""ress, tel???
O7N NI. 1, -IL MtestM, RCL rec>len,
-OR( MN-OR(A..DM
[email protected] n$e, title, $ge, $""ress, tel
I-4I1# by I8O list
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 66/72
I-4I1# by I8O list
INXIR IOLN.Hlengt+ out!ut:list
.o "eterine t+e lengt+ o* $n un*or$tte"
out!ut ite list
($y &e use" $s v$lue o* RCL s!eci*ier in
su&seVuent O7N st$teent
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 67/72
#"amle% 4nformatted I8O 8 n*or$tte" "irect $ccess I/O ost e**icient, &ut not +u$n:
re$"$&le
8 ou ust o!en $ *ile )it+ t+e *or$tun*or$tte"M $ttri&ute in or"e
to )rite "$t$ to it? %$!le<
See io>e%U?*90 *or "et$il
Yinteger I, iu iu is t+e unit nu&er *or your *ile, *oo?out
re$l T << ?0
o!en iu, *orWun*or$tte"W,$ccessW"irectM,*ileW*oo?outW
"o iter 1,U
)rite iu, reciter, Ten" "o
close iu
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 68/72
1esources
CS )ill !rovi"e -ortr$n 90 su!!ort?
@$l;:in, $il, !+one, etc? (L suite U2?
CS:)i;i [-ortr$n90 tutori$l
8 +tt!s<//)i;i?uc$r?e"u/"is!l$y/csg/Intro"ucti
onEtoE-ortr$n90
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 69/72
1eferences
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 70/72
1eferences
Fortran 90 A +onversion +ourse for Fortran ::)ro!rammers 12P 1+er+ie!(
Lin, S Ram"!en, M A Pettip)er, M 3r4e, G S Nlan!,
Manc)e"ter an! Nrt) 5PC T6EC
An introduction to Fortran 90 and Fortran 90 for
ro!rammers
A Mar")all, -ni.er"ity 1 Li.erpl
Fortran 90 for Fortran 33 Programmer(
Cli.e pa*e, -ni.er"ity 1 Leice"ter
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 71/72
Ac;nowled!ments
8 Si!!)art)a G)")
8 +a.i!e +el 7ent
8 Rry 8elly
8 +ic4 7alent
8 Ot)er cllea*ue" 1rm CISL
8 Manc)e"ter an! Nrt) 5PC T6EC 8 -ni.er"ity 1 Li.erpl 1r example"
7/25/2019 Fortran90 Course1 Slides
http://slidepdf.com/reader/full/fortran90-course1-slides 72/72
Top Related