The very basic "Hello Feat" example
Releated files:
tutorials/tutorial00/src/hellofeat.f90
tutorials/tutorial00/configure
Hello FEAT
The very basic "Hello feat" example hellofeat.f90
in the Feat2 package reads as follows:
program HelloFeat
use fsystem
use genoutput
! Initialisation
call system_init()
call output_init("")
! Print a message
call output_line ("Hello world. This is FEAT-2.")
! Cleanup
call output_done()
end program
In the very beginning, the modules "fsystem" and "genoutput" are included and initialised:
use fsystem
use genoutput
The module fsystem
contains basic system-wide definitions and specifications. It has to be initialised with call system_init()
in the very beginning of every program.
Similarly, the module genoutput
(abbrev. for "general output") provides basic output routines for printing text to the terminal. It has to be initialised by one of the output_init
routines - for very basic use, a simple call output_init("")
is enough.
Afterwards, the command
call output_line ("Hello world. This is FEAT-2.")
prints a message to the terminal. The command output_line
the basic text output command for messages to the terminal and a replacement for print
and write (*,*)
. Without any parameters, it just prints the text message to the terminal. However, it provides additional output features like printing the text to a log file, adding a time stamp to the text, preventing line breaks etc. We come to this in a later tutorial.
The final call
call output_done()
cleans up the output subsystem. Afterwards, the program is finished.
Note that there is currently no cleanup command like system_done
. This is currently not necessary but might change in the future.
Configuration script
Compiling the "Hello FEAT" example involves the configuration script configure
in the main directory of tutorial00. This script creates a makefile which compiles the application as soon as the command make
is invoked.
The script reads as follows:
#!/bin/sh
LC_ALL=C
export LC_ALL
../../bin/configure \
--appname=hellofeat \
--programfile=src/hellofeat.f90 \
--srclist_app="`ls src/*.f90`" \
"$@"
It performs as follows:
An additional configuration script "../../bin/configure" is called which writes the actual makefile
The executable is named "hellofeat", set by the
--appname
parameter.The main program is in the file "src/hellofeat.f90", set by the
--programfile
parameter.The parameter
--srclist_app=
is a list of all source files. By default, all ".f90" files from the directorysrc/
are included into the project.
The "Hello FEAT" example can be used as a template for new applications written from the scratch. In this case, the two above parameters specified by --appname
and --programfile
have to be modified in the configure script to get it to work - that's all.
Compiling and starting the application
For compiling and starting the application, the following steps are necessary:
The
configure
script has to be invoked. This has to be done only once in advance (or after an "SVN update" or to switch the compiler configuration). The script generates a makefile.The
make
command has to be invoked. This compiles the application and all necessary libraries.The application can be started by
./hellofeat
On a terminal, ths reads as follows.
.../Featflow2> cd tutorials/tutorial00
.../Featflow2/tutorials/tutorial00> ./configure
This is the FEAT2 custom configuration program.
It is not GNU Configure.
There are a couple of optional arguments to this program,
use '--help' command line option to learn about them.
checking whether environment sets $MAKE... no
...
.../Featflow2/tutorials/tutorial00> make
# Building FEAT2.0 application <hellofeat>
make[1]: Entering directory `.../Featflow2/tutorials/tutorial00'
...
... -lumfpack -lamd -lsplib -llapack -lblas -o hellofeat
.../Featflow2/tutorials/tutorial00> ./hellofeat
Hello world. This is FEAT-2.
.../Featflow2/tutorials/tutorial00>