File: modules.dox

package info (click to toggle)
cadabra2 2.4.3.2-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 78,796 kB
  • sloc: ansic: 133,450; cpp: 92,064; python: 1,530; javascript: 203; sh: 184; xml: 182; objc: 53; makefile: 51
file content (123 lines) | stat: -rw-r--r-- 5,233 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/// \defgroup core Core
/// All computer algebra functionality in the form of C++ classes.
///
/// \defgroup cleanup Cleanup
/// Functionality to clean up expressions so that they satisfy the requirements
/// of a consistent expression tree.
/// \ingroup core
///
/// \defgroup display Expression display
/// Classes to handle printing of expressions in various formats.
///
/// There are several different requirements for printing, depending on whether
/// output is to the console, the graphical notebook, or to a different
/// computer algebra system. In the latter case, one typically also needs
/// to be able to convert the output of that external system back into
/// Cadabra-parsable format, which is what e.g. the DisplayMMA::import
/// and DisplaySympy::import member functions do. 
/// \ingroup core
///
///
/// \defgroup compare Expression comparison
/// Functions to compare and match expressions stored in Ex objects. 
///
/// These can involve wildcards and dummy indices, and matching may depend on 
/// the properties attached to symbols.
/// This is an important bit of functionality used widely throughout the Cadabra core.
/// All substitution and component evaluation logic depends on this module.
/// \ingroup core
///
/// \defgroup files Notebooks and packages
/// Graphical notebook interface and Cadabra packages.
///
/// Functionality to store and manipulate Cadabra notebooks and use them as
/// packages inside other notebooks or scripts. 
/// \ingroup core

/// \defgroup pythoncore Python Core
/// Python wrapper around the C++ core module.
///
/// This wrapper makes the entire 
/// functionality of Cadabra accessible from Python. This consists of two
/// parts. One is core/cadabra2_defaults.py, which is a pure-python file.
/// It contains the display function to show Cadabra objects to the user
/// in a UI-independent way (e.g. switching between a text representation
/// on the command line and a LaTeX representation when running in a notebook).
/// The other part are the various files in core/pythoncdb, which build
/// the cadabra2 module for python, to be imported with 'from cadabra2 import *'.
///
/// The Python module has functionality to import Cadabra notebooks using
/// standard Python import syntax. This functionality is part of the
/// \ref files module and described there.
/// \ingroup core

/// \defgroup scalar Scalar algebra
/// Functionality to make Cadabra interface with scalar computer
/// algebra systems such as Sympy or Mathematica.
///
/// It converts scalar
/// parts of Cadabra expressions ('things without indices') to one of
/// these systems, runs them through, and then converts back to Cadabra
/// notation. Currently available are SymPy and Mathematica backends.
/// \ingroup core

/// \defgroup numerical Numerical evaluation
/// Functionality to evaluate mathematical expressions numerically.
/// 
/// Cadabra's symbolic expressions can be evaluated numerically,
/// e.g. when you want to plot a function. Cadabra contains its own
/// fast numerical evaluator and its own numerical tensor types.
/// \ingroup core

/// \defgroup algorithms Algorithms
/// Containing all algorithms acting on symbolic expression trees.
/// \ingroup core
///
/// \defgroup properties Properties
/// Containing all properties that can be attached to symbolic expressions.
/// \ingroup core
///
/// \defgroup clientserver Client-Server 
///
/// Base classes (independent of any GUI toolkit) to write Cadabra
/// clients and servers.
///
/// All clients use two threads. One is the main thread and runs
/// most of the logic in the DocumentThread object. The other one is
/// a thread which communicates with the server process; code for
/// this thread is in the ComputeThread object.  One typically
/// subclasses the former into a full-fledged object driving the
/// graphical user interface.
/// 
/// All functionality that deals with GUI updates is isolated in
/// GUIBase. A client should derive from this abstract base class
/// and implement the methods there. Clients should also derive from
/// DocumentThread, but there are no abstract virtual members
/// to implemented from this base class.
/// 
/// All actual updates to the document stored in the
/// DocumentThread::dtree member are made on the GUI thread as
/// well. The compute thread merely puts requests to change the
/// document onto a stack, and then requests that the GUI updates
/// the document.
///
/// In order to enable undo/redo, all updates to DocumentThread::dtree 
/// are made by putting objects derived from ActionBase onto the 
/// action stack. See DocumentThread::queue_action for details.
/// These ActionBase objects (among which ActionAddCell, ActionRemoveCell, 
/// ActionInsertText, etc) get executed on the GUI thread, and contain
/// the actual logic to perform updates to the document and related
/// GUI elements. 
///
///
/// \defgroup libcadabra2 Cadabra C++ library
///
/// All Cadabra functionality can be used directly from C++ programs without
/// using the Python frontend. A sample program can be found in
/// c++lib/simple.cc:
/// \include c++lib/simple.cc
///
///
/// \defgroup frontend Front-end
/// All code which implements graphical front-end notebook interfaces.