Difference between revisions of "Fortran"
From MohidWiki
Line 28: | Line 28: | ||
===Case=== | ===Case=== | ||
+ | |||
+ | ==Sample== | ||
+ | |||
+ | <htm> | ||
+ | <pre class="code" lang="fortran"> | ||
+ | program average | ||
+ | |||
+ | ! Read in some numbers and take the average | ||
+ | ! As written, if there are no data points, an average of zero is returned | ||
+ | ! While this may not be desired behavior, it keeps this example simple | ||
+ | |||
+ | implicit none | ||
+ | |||
+ | real, dimension(:), allocatable :: points | ||
+ | integer :: number_of_points | ||
+ | real :: average_points=0., positive_average=0., negative_average=0. | ||
+ | |||
+ | write (*,*) "Input number of points to average:" | ||
+ | read (*,*) number_of_points | ||
+ | |||
+ | allocate (points(number_of_points)) | ||
+ | |||
+ | write (*,*) "Enter the points to average:" | ||
+ | read (*,*) points | ||
+ | |||
+ | ! Take the average by summing points and dividing by number_of_points | ||
+ | if (number_of_points > 0) average_points = sum(points) / number_of_points | ||
+ | |||
+ | ! Now form average over positive and negative points only | ||
+ | if (count(points > 0.) > 0) then | ||
+ | positive_average = sum(points, points > 0.) / count(points > 0.) | ||
+ | end if | ||
+ | if (count(points < 0.) > 0) then | ||
+ | negative_average = sum(points, points < 0.) / count(points < 0.) | ||
+ | end if | ||
+ | |||
+ | deallocate (points) | ||
+ | |||
+ | ! Print result to terminal | ||
+ | write (*,'(a,g12.4)') 'Average = ', average_points | ||
+ | write (*,'(a,g12.4)') 'Average of positive points = ', positive_average | ||
+ | write (*,'(a,g12.4)') 'Average of negative points = ', negative_average | ||
+ | |||
+ | end program average | ||
+ | </pre> | ||
+ | </htm> | ||
==Other languages== | ==Other languages== |
Revision as of 01:44, 21 May 2010
Fortran95 is the language of choice to program in MOHID. Although a primitive form of language it proves to be the most efficient and performant in the area of scientific computing. Still widely used in numerical computation.
Contents
MOHID templates
Module
Program
Examples
Hello World program
Hello world in a module
Subroutine
Function
Variables
Types
Interface procedure
Arrays
If
Do
Case
Sample
program average
! Read in some numbers and take the average
! As written, if there are no data points, an average of zero is returned
! While this may not be desired behavior, it keeps this example simple
implicit none
real, dimension(:), allocatable :: points
integer :: number_of_points
real :: average_points=0., positive_average=0., negative_average=0.
write (*,*) "Input number of points to average:"
read (*,*) number_of_points
allocate (points(number_of_points))
write (*,*) "Enter the points to average:"
read (*,*) points
! Take the average by summing points and dividing by number_of_points
if (number_of_points > 0) average_points = sum(points) / number_of_points
! Now form average over positive and negative points only
if (count(points > 0.) > 0) then
positive_average = sum(points, points > 0.) / count(points > 0.)
end if
if (count(points < 0.) > 0) then
negative_average = sum(points, points < 0.) / count(points < 0.)
end if
deallocate (points)
! Print result to terminal
write (*,'(a,g12.4)') 'Average = ', average_points
write (*,'(a,g12.4)') 'Average of positive points = ', positive_average
write (*,'(a,g12.4)') 'Average of negative points = ', negative_average
end program average