----
[[PageOutline(1-2,Table of Contents,inline)]]
----
= Status =
== Completed ==
* Fields return mass dimension based on spacetime dimension
== In Progress ==
* SUSY higher dimensional operators
* Lagrangian to display
* {{{Symbol}}} class
* Move {{{Symbol}}} class to directory {{{Notation}}}
* Add examples of what {{{Symbol}}} class does to documentation
== Planned ==
* Curved spacetime
* {{{Config}}} dialog contains spacetime dimensions
* Alter {{{CompactLieAlegbra}}} and {{{DiscreteGroup}}} location to be within {{{SemiSimpleAlgebra}}} and {{{SemiSimpleDiscreteGroup}}}
== Wish List ==
* Spontaneous Symmetry Breaking
----
= Structure =
== Core ==
=== Location of Objects ===
The various components of the code need to be stored in specific locations and to avoid redundancy, as per the [http://c2.com/cgi/wiki?DontRepeatYourself DRY] principle, they should only be stored in one location. This list is meant to be the authoritative list as to the location of the various components.
||= Object =||= Location =||
|| `CompactLieAlgebra` || Nowhere. Exist in memory only & known to program through a pointer{{{*}}} ||
|| `DiscreteGroup` || Nowhere. Exist in memory only & known to program through a pointer{{{*}}} ||
|| `SemiSimpleAlgebra` || `SymmetryGroupDirectProduct` ||
|| `SemiSimpleDiscreteGroup` || `SymmetryGroupDirectProduct` ||
|| `SymmetryGroup` || `SymmetryGroupDirectProduct`, pointer to `CompactLieAlgebra` or `DiscreteGroup` in `SemiSimple*` ||
|| `SymmetryGroupDirectProduct` || `Model` ||
|| `Field` || `Model`, pointer to `SymmetryGroupDirectProduct` and its representation information ||
|| `Parameter` || `Model` ||
|| `Lagrangian` || `Model`, pointer to `Field` and `Parameter` ||
{{{*}}} See Planned under Status
=== `Model` Object ===
The `Model` is the over-arching container that holds the various pieces of the theory. Explicitly these pieces are
* Symmetries{{{**}}}
* Interaction between the `Model` and the symmetries is handled exclusively by `SymmetryGroupDirectProduct`
* Fields
* Lagrangian
* Parameters
and these are, correspondingly, members. To interact with these pieces there are two categories:
{{{
#!html
- cosmetic changes
-
methods of the internal object that only affect that object and do not influence other objects (things such as changing the symbol)
- core changes
-
methods of the
Model
class that MUST be used as the changes impact other member objects (things such as deleting a group or changing its type)
}}}
{{{**}}} This should, in principle, include all symmetries; that is, spacetime (Poincare, Supersymmetry, etc) as well as internal (gauge, global, etc).
=== Handling Symmetries ===
`SymmetryGroupDirectProduct` has the responsibility of handling all requests that have to do with the symmetry groups. It therefore contains methods to do the following:
* add a symmetry group of any supported type
* remove a symmetry group
* return a representation (type `SymmetryGroupRep`) of any group
* return the properties of the symmetry group
* the group symbol
* is it local or global
* the (pointer to) the gauge boson
* the generators symbol
* the name of indices
* alter properties of a symmetry group
=== Handling Fields ===
Fields transform under the symmetries, and therefore they must be aware of the symmetries of the model. To this end the field object contains a pointer to `SymmetryGroupDirectProduct` (which has all the symmetries), but it also points to the various representations it has under the symmetries. This actually requires care as when a symmetry group is added or deleted, the field will necessarily need to have its internals updated.
== GUI ==
----
= References =
== !Saving/Reading ==
Possible XML parser Libraries in C++
* [http://xerces.apache.org/xerces-c/program-3.html Xerxes-C++]
* [http://libxmlplusplus.sourceforge.net/ libxml++]
* [http://expat.sourceforge.net/ ]
* [http://www.grinninglizard.com/tinyxml/ TinyXML]
* [http://www.applied-mathematics.net/tools/xmlParser.html Kranf's 104KB]
[http://lars.ruoff.free.fr/xmlcpp/ "comprehensive" list of C++/C XML parsers]
== {{{FieldContainer}}} class ==
This is potentially useful for generating all possible sub{{{FieldContainer}}}s
* [http://en.wikipedia.org/wiki/Combinatorial_number_system Combinatorial Number System]
* [http://code.activestate.com/recipes/500268-all-k-subsets-from-an-n-set/ Python Code for all k-subsets]
== MathML Output ==
* [http://www.w3.org/TR/REC-MathML/chap3_1.html W3C Presentation Markup]
* [http://www.tek-tips.com/viewthread.cfm?qid=1024751 Essentially is_numeric for string]
* [http://forums.codeguru.com/showthread.php?231054-C-String-How-to-convert-a-string-into-a-numeric-type Another is_numeric]
== Wiki Formatting ==
* [http://trac.edgewall.org/wiki/WikiFormatting TracWiki Formatting]