Dylan Jayatilaka
Daniel James Grimwood
Copyright © 2000, 2001, 2002 by Dylan Jayatilaka
Table of Contents
An Overview of TONTO
Welcome to TONTO
The mission of TONTO
Who is TONTO for?
How is TONTO different from other packages?
What can TONTO do?
How do I get TONTO
What do I need to compile and install TONTO
How do I use TONTO for calculations?
What do I need to start programming in TONTO?
Contributing code to TONTO
Citation and attribution in TONTO
Compiling and Installing TONTO
Compiler requirements for TONTO
System requirements for TONTO
Known problems installing TONTO
Compiling TONTO
Making the TONTO html documentation
Installing TONTO
What to do if compiling TONTO fails
Your system is not known to us
You are missing the
BLAS
and
LAPACK
libraries
There are Fortran compiler problems
There are Fortran code problems
There are
foo
preprocessor problems
Compiling the BLAS and LAPACK libraries
What you can do if a site_config file does not exist for your system
Using TONTO to do calculations
How to run a TONTO calculation
Writing an input file: the basics
What is an input file?
What does an input file look like?
How do I know which are the allowed input keywords?
What about keywords which aren't in this manual?
How do I know when to enter data?
What kinds of data are there?
How do I enter data?
How do I enter simple data?
How do I change units with simple data?
How do I enter derived data?
How do I enter lists of derived data?
Altering the input order for lists of derived data
Embedded commands in lists of derived data
Examples of derived data input
Example input for a
GAUSSIAN
Example input for a
SHELL
Examples of TONTO input files
A restricted Hartree-Fock calculation
Using the library basis sets
Input from a gaussian checkpoint file
Outputting a MORPHY input file
A constrained X-ray wavefunction calculation
An MO pair-energy decompisitoin
Morokuma-like analysis
Spin density plot
ELF density plot
A ZORA relativistic calculation, g
zz
tensor calculation, and parity violating weak force energy shift calculation
Keyword documentation for TONTO
The online documentation
The short documentation
The long documentation
Finding keywords in TONTO online
ATOM
Purpose
Synopsis
Default input data order
Listing of keywords
BASIS
Purpose
Synopsis
Default input data order
Listing of keywords
CRYSTAL
Purpose
Synopsis
Default input data order
Listing of keywords
DFTGRID
Purpose
Synopsis
Default input data order
Listing of keywords
GAUSSIAN
Purpose
Synopsis
Default input data order
Listing of keywords
MOL
Purpose
Synopsis
Special note
Default input data order
Listing of keywords
PLOTGRID
Purpose
Synopsis
Default input data order
Listing of keywords
POINTGROUP
Purpose
Synopsis
Default input data order
Listing of keywords
REFLECTION
Purpose
Synopsis
Default input data order
Listing of keywords
SCFDATA
Purpose
Synopsis
Default input data order
Listing of keywords
SHELL
Purpose
Synopsis
Default input data order
Listing of keywords
SHELL1
Purpose
Synopsis
Default input data order
Listing of keywords
SPACEGROUP
Purpose
Synopsis
References
Default input data order
Listing of keywords
TEXTFILE
Purpose
Synopsis
Important note
Default input data order
Listing of keywords
Writing programs with TONTO
The design of TONTO
Modules in TONTO
The
foo
language in TONTO
The documentation and style in TONTO
Conventional routines
Customisability and efficiency of TONTO
Communication and data storage in TONTO
Compiling customised versions of TONTO
What can be customised, and what is the default?
Which Fortran compiler options to use?
The
FC
variable
The
FOPTNS
variable
The
FFLAGS
variable
The
FFAST
variable
The
FDEBUG
variable
The
FPROF
variable
The
FSUFFIX
variable
The
PROGSUFFIX
variable
The
MODSUFFIX
variable
The
OBJSUFFIX
variable
The
LIBS
variable
The
MODCASE
variable
The
DEFS
variable
Which C-preprocessor options to use?
The
USE_ERROR_MANAGEMENT
switch
The
USE_PRE_AND_POST_CONDITIONS
switch
The
USE_CALL_STACK_MANAGEMENT
switch
The
LANGUAGE_FORTRAN_90
switch
The
BROKEN_TYPE_INITIALIZATION
switch
How TONTO builds executables
The make program and the Makefile
Machine specific code in TONTO
Code dependencies in TONTO
The problem of unnecessary recompilation of Fortran90 modules
make
and the recompilation strategy used in TONTO
The TONTO input file: technical specification
Rules to explain the rules for writing input file
The input file:
KEYWORD
and
DATA
SIMPLE-DATA
SIMPLE-ARRAY-DATA
DERIVED-DATA
Writing Fortran modules for TONTO
Critical requirements
Aesthetic requirements
Linking your Fortran code
The
foo
preprocessor
Key advantages of the
foo
preprocessor
How
foo
works
Rules for valid
foo
preprocessor code
What
foo
does to produce Fortran95 code
Automatic
function
and
subroutine
detection
Automatic insertion of first argument to a routine
Automatic
end
keyword completion
Dot notation
Automatic overloading and interface files
Explicit overloading
New syntax for
recursive
,
pure
and
elemental
routines
Functionals and subroutinals
Preconditions, postconditions, and error management facilities
Memory and call-stack management
C-preprocessor macros and type definitions
Writing
foo
modules for TONTO
What is the module supposed to do?
Deciding what is data and what should be a routine
Defining the type in the
types.foo
file
Modifying the
foo
pre-processor
Pre-processor changes for array types
The conventional routines
Principles for well designed modules
Large modules
Function arguments
Writing the main
run_XXXX
program
Are we hypocrites?
Examples of simple TONTO programs
The
TEXTFILE
module
Code
Results
The
BUFFER
module
Code
Results
The
INT
module
Code
Results
The
STRVEC
module
Code
Results
The
REAL
module
Code
Results
The
REALVEC
module
Code
Results
The
GAUSSIAN2
and
DFTGRID
modules
Code
Results
The
SHELL4
module
Code
Results
The underlying philosophy of TONTO
Cooperation: naiveté or just good sense?
Final word
List of Tables
1.
Modules available in TONTO.
2.
Shorthand symbols for simple data with input examples
3.
Shorthand symbols for simple vector data with input examples
4.
Shorthand symbols for simple matrix data with input examples
Next >>
An Overview of TONTO