Thyra : Interfaces and Support code for Abstract Numerical Algorithms (ANAs)

Version of the Day

Outline

Introduction

The Thyra package contains a set of interfaces and supporting code that defines basic interoperability mechanisms between different types of numerical software. The foundation of all the interfaces related to abstract numerical algorithms (ANAs) are the mathematical concepts of vectors, vector spaces, and linear operators. All other ANA interfaces and support software are built on these fundamental operator/vector interfaces.

This main page provides the starting point for all of the documentation for Thyra interfaces and software. This documentation is generated using Doxygen.

The documentation for Thyra is broken up into a number of different doxygen collections as described in the next section.

Thyra Software Package Documentation Collections

The Doxygen-generated documentation is broken up into a number of different doxygen collections in an attempt to make each individual collection more manageable to browse and comprehend. To access each separate collection, just click on the [doxygen collection] next to each header below.

The thrya package is broadly divided into interoperability interfaces and support software and the directory structure and the doxygen documentation is also divided in this way. Below are links to the different Doxygen documentation collections for the different aspects of Thyra. This organization also mirrors the directory structure of thyra.

Thyra interoperability interfaces

Thyra support software and examples

Thyra adapters to other packages

Browse all of Thyra as a single doxygen collection

You can browse all of Thyra as a single doxygen collection. Warning: This is not the recommended way to learn about Thyra software. However, this is a good way to browse the directory structure of thyra, to locate files, etc.

Some Technicalities about Thyra Interfaces and Supporting Software

A few things about the software in the Thyra package are worth mentioning:

Other Trilinos Packages on which Thyra Depends

The Thyra code described here is dependent on the following Trilinos packages:

Configuration of the Thyra Package

The Thyra package's configure script (which should be called from the base Trilinos-level configure script) responds to a number of options that affect the code that is built and what code is installed.

Some of the more important configuration options are:

See the output from ./configure --help (where ./ is the base source directory for the thyra package) for a complete listing of all of the configure options that Thyra responds to.

The Thyra package is also affected by configure options passed to other packages; some of these options are:

Note that the above options will not be listed by Trilinos/packages/thyra/configure --help but instead are listed by Trilinos/packages/teuchos/configure --help.

Building and Linking Against Thyra in External Projects

It is recommended that developers external to Trilinos install Thyra with the rest of Trilinos and then compile and link against the installed headers and libraries (see the Trilinos Users Guide for a discussion of installing Trilinos). Remember that in order to install the contents of the thyra package, one must enable it (see the --enable-thyra and other configure options described above) before installation.

When make install is run, Thyra will be installed with the rest of Trilinos in the directory specified by the configure option --prefix=$TRILINOS_INSTALL_DIR. It is important that a client's external makefile system be consistent with the environment used to build Thyra. To do this, if the option --enable-export-makefiles was enabled at configure time, then a set of makefile fragments is installed in the directory

Once Thyra software is installed in the location specified by the configure option --prefix=$TRILINOS_INSTALL_DIR with the rest of Trilinos (where $TRILINOS_INSTALL_DIR is the path of the directory that you specify where Trilinos will be installed with make install), it is important that a client's external makefile system be consistent with the environment used to build Thyra. To do this, if the option --enable-export-makefiles was enabled at configure time, then a set of makefile fragments is installed in the directory

  $TRILINOS_INSTALL_DIR/include/

The installed makefile fragment files Makefile.export.thyra and Makefile.export.thyra.macros can then be included in an external makefile to give compiler options, include paths, libraries etc.

An example external makefile

When Thyra is installed with Trilinos, the directory

  $TRILINOS_INSTALL_DIR/example/thyra/

is created which contains an example of an external project that uses Thyra. The example makefile

  $TRILINOS_INSTALL_DIR/example/thyra/Makefile

that builds an external version the sillyCgSolve_serial.exe program is shown below:

##
## Example external makefile that shows how to compile and
## link against an installed version of Thyra (part of Trilinos)
##

# Points to where Trilinos is installed
TRILINOS_INSTALL_DIR = ../..

# Include the makefile fragment that specifies the compile/link commands 
include $(TRILINOS_INSTALL_DIR)/include/Makefile.export.thyra.macros
# Include the makefile fragement that defines the include paths and libraries
include $(TRILINOS_INSTALL_DIR)/include/Makefile.export.thyra

#
# Get the compile and link flags
#

LOCAL_CXX = $(THYRA_CXX)
LOCAL_CXXLD = $(THYRA_CXXLD)
LOCAL_CXXFLAGS = $(THYRA_CXXFLAGS)

_LOCAL_COMPILE_FLAGS = $(THYRA_CXXFLAGS) $(THYRA_DEFS) $(THYRA_CPPFLAGS) -I$(TRILINOS_INSTALL_DIR)/include
_LOCAL_LINK_FLAGS = $(THYRA_LIBS)
# For platforms where perl and GNUMake are used
LOCAL_COMPILE_FLAGS = $(shell perl $(TRILINOS_INSTALL_DIR)/include/strip_dup_incl_paths.pl $(_LOCAL_COMPILE_FLAGS))
LOCAL_LINK_FLAGS = $(shell perl $(TRILINOS_INSTALL_DIR)/include/strip_dup_libs.pl $(_LOCAL_LINK_FLAGS))
# For platforms where perl and/or GNUMake are not available
#LOCAL_COMPILE_FLAGS = $(_LOCAL_COMPILE_FLAGS)
#LOCAL_LINK_FLAGS = $(_LOCAL_LINK_FLAGS)

#
# Define the compile and link targets that use the included macros
#

sillyCgSolve_serial.exe : sillyCgSolve_serial.o
	$(LOCAL_CXXLD) $(LOCAL_CXXFLAGS) sillyCgSolve_serial.o -o sillyCgSolve_serial.exe $(LOCAL_LINK_FLAGS)

sillyCgSolve_serial.o : sillyCgSolve_serial.cpp
	$(LOCAL_CXX) $(LOCAL_COMPILE_FLAGS) -c sillyCgSolve_serial.cpp

clean:
	rm -f *.o *.exe *~

By using the macros starting with THYRA_ one is guaranteed that the same compiler with the same options are used to build the client's code that were used to build Trilinos. Of particular importance are THYRA_CXX, THYRA_DEFS, THYRA_CPPFLAGS, and THYRA_CXXLD since these ensure that the same C++ compiler and the same -D macro definitions are used.

Frequently Asked Questions (FAQ)

Click here for a list of frequently asked questions (FAQ) compiled for thyra.

Documents Describing or are Related to Thyra

Contributors to the Thyra Package and Related Software

The contributors to the Thyra package, or related packages, in alphabetical order, are:

Other Software Related to Thyra

Below is a partial list of software related to Thyra.


Generated on Tue Oct 20 12:48:30 2009 for Thyra by doxygen 1.4.7