• Main Page
  • Classes
  • Files
  • File List
  • File Members

mainpage.h

Go to the documentation of this file.
00001 /////////////////////////////////////////////////////////////////////////////
00002 ///
00003 /// \file
00004 ///
00005 /// The main page for the source code documentation.
00006 ///
00007 /////////////////////////////////////////////////////////////////////////////
00008 /**
00009 
00010 \mainpage
00011 
00012 
00013 \section intro Introduction
00014 
00015 This software is developed within the framework of the
00016 <a href="http://www.pawelpilarczyk.com/cohomology/">Computational
00017 Cohomology</a> project.
00018 It is aimed at constructing the chain contraction
00019 of a cellular complex, and using this means to compute
00020 the homology, cohomology, and related operations
00021 on cubical or simplicial complexes.
00022 This software is currently under development,
00023 and a limited number of features are available at this time.
00024 In this version, the ring of coefficients is assumed
00025 to be the integers modulo 2, which best reflects
00026 the combinatorial nature of the approach.
00027 
00028 
00029 \section compilation Compilation
00030 
00031 The compilation of the library and the programs is quite intuitive.
00032 In the directory into which the source code has been unpacked,
00033 one has to run the command <em>make</em>.
00034 Since this software requires
00035 the <a href="http://chomp.rutgers.edu/">CHomP library</a>,
00036 it must be downloaded and compiled first,
00037 and the path to where it is located must be corrected
00038 in the <em>makefile</em> if necessary.
00039 
00040 In Linux all the necessary utilities
00041 should be present in the system by default
00042 (the GNU C++ compiler and the GNU make),
00043 but in Windows one should install them first (e.g. from the
00044 <a href="http://www.bloodshed.net/dev/devcpp.html">Dev-C++</a>
00045 distribution).
00046 For convenience, pre-compiled binary programs for some systems
00047 may be provided at the project website.
00048 
00049 
00050 \section library Software Library
00051 
00052 The main part of this software is provided in terms
00053 of a C++ library, programmed as templates of classes
00054 and functions for optimal flexibility (so-called
00055 generic programming technique).
00056 All the header files of which the programming library consists
00057 are located in the subdirectory <em>chaincon</em>.
00058 
00059 
00060 \section programs Programs
00061 
00062 The programs included in this package constitute a simple interface
00063 to the main functions of the C++ programming library.
00064 These are command-line utilities, to be run from a text terminal window
00065 (a.k.a. command prompt).
00066 Each program displays brief usage information
00067 when called without arguments.
00068 The programs read data from files in the text format
00069 and display all the results to the output stream,
00070 which is the screen by default,
00071 but can also be logged to a file using the "--log filename"
00072 command-line argument.
00073 
00074 
00075 \section data Data Formats
00076 
00077 The classes defined in the software library
00078 are equipped with reading and writing operators
00079 that allows the conversion of the data to and from
00080 human-readable and intuitive text format.
00081 This format is in most part compatible
00082 with the CHomP software, and is described below.
00083 In particular, any line beginning with the semicolon ';'
00084 is treated as a comment and is skipped.
00085 
00086 <b>Cubical complexes</b> are defined by listing all the cubical cells
00087 line by line, one cell per line.
00088 Faces of cells must be either omitted,
00089 or listed later than the corresponding cells.
00090 A cubical cell is defined as the Cartesian product
00091 of intervals of length 1 or 0 (degenerate ones),
00092 e.g. <em>[1,2]x[0]x[-3,-2]x[3]</em> (note the brackets,
00093 the commas, the letter 'x', and the way of defining degenerate intervals).
00094 If the dimension of the cell equals the dimension
00095 of the embedding space then it can be defined
00096 by listing the minimal coordinates of the vertices,
00097 e.g. <em>(1,0,-3,3)</em> (note the parentheses and the commas).
00098 
00099 <b>Simplicial complexes</b> are defined by listing all the simplices
00100 line by line, one simplex per line.
00101 Faces of simplices must be either omitted,
00102 or listed later than the corresponding simplices.
00103 A simplex is defined as a comma-separated list of numbers of its vertices,
00104 e.g. <em>(1,3,18)</em>.
00105 
00106 Several examples (see below) illustrate how these data formats
00107 can be actually used in practice, and also how the provided
00108 command-line programs can be used.
00109 
00110 
00111 \section examples Examples
00112 
00113 There are some examples (to be downloaded separately)
00114 which may be helpful if one wants to quickly learn
00115 how the command-line programs should be used.
00116 Running these examples also gives some hint on the effectiveness
00117 of the software, and shows what kind of information it computes.
00118 The examples were prepared in such a way that a variety of features
00119 can be illustrated.
00120 Each example has a description in a text file,
00121 and a shell script (a.k.a. batch file)
00122 which runs a few commands and displays brief explanations of all the steps.
00123 A GUI Python script <em>examples.py</em> has been prepared,
00124 which can be used to browse the examples
00125 prepared for this piece of software.
00126 The list of examples is continually expanding.
00127 Contributions of new examples or suggestions are welcome.
00128 
00129 
00130 \section license License
00131 
00132 This software package is published under the terms
00133 of the <a href="http://www.gnu.org/licenses/gpl.html">GNU
00134 General Public License, version 3</a>.
00135 
00136 
00137 \section remark Remarks
00138 
00139 This documentation is currently under construction.
00140 Although many classes and functions already have their descriptions,
00141 I am aware of the fact that these descriptions are not as detailed
00142 as the user might wish to have. Therefore, this documentation
00143 has been generated in such a way that it includes the entire source code
00144 which sould be consulted if in doubt. The code has many additional
00145 comments which shed light on what it actually does.
00146 
00147 I am still working on making this documentation more informative
00148 and complete, but it takes a lot of time.
00149 Therefore, I apologize for any inconvenience caused by the incomplete
00150 documentation and I invite to browse the source code instead,
00151 or ask me specific questions by email.
00152 
00153 Pawel Pilarczyk
00154 
00155 **/

Generated on Tue Apr 5 2011 00:06:32 for Chain Contraction Software by  doxygen 1.7.2