Conventions used in the Physics package
<Text-field style="Heading 2" layout="Heading 2" bookmark="info">Description</Text-field>
The Physics package provides, in the Maple worksheet, computational representations for mathematical objects that do not exist as such without loading the package. Among these objects are noncommutative and anticommutative variables, related (not commutative) product and differentiation operators, three-dimensional abstract (non-projected) vectors, a spacetime metric, the d_, covariant D_ and dAlembertian differentiation operators, Fundiff for functional differentiation, Dirac gamma and Pauli sigma matrices and a Trace command to compute traces of products of them, state vectors (in Dirac's notation) for quantum mechanics, a scalar product for them, quantum operators for representing quantum fields and a FeynmanDiagrams for algebraic diagram computations. There is also a set with the standard general relativity tensors, and the package works using the Einstein sum rule for repeated indices. For examples see Physics, examples.
The implementation of representations for these mathematical physics objects includes some conventions. Almost all of these conventions can be changed in some way. This page aims at collecting in one place all of the conventions scattered among the help pages of the Physics package.
Firstly, you can query the settings for these conventions or change these settings by using the Setup command or launching the Setup applet (enter Setup(); at the Maple prompt). Information about each setting is presented in separate sections in the Setup help page. In what follows, conventions for Physics commands are presented, while conventions for the Physics[Vectors] commands are shown in the Vectors conventions help page.
Go to: <Spacetime, tensor simplification, and default settings>
<Commutative, anticommutative, and noncommutative variables and functions>
<Differentiation and not commutative product>
<Space of quantum states: Dirac notation and scalar product>
<Text-field style="Heading 3" layout="Heading 3" bookmark="Spacetime">Spacetime, tensor simplification, and default settings</Text-field>
To represent total differentials of scalars or tensors that depend on the coordinates use the d_ and D_ commands without indexation.
Computations performed with the Physics package commands take into account Einstein's sum rule for repeated indices in products of tensors - see `.` and Simplify. This summation convention is automatically used by all the differentiation commands of the package; they are the diff, d_, the covariant D_ and the functional differentiation Fundiff commands.
The distinction between covariant and contravariant indices in the input of tensors is done by prefixing contravariant ones with ~, say as in ~mu; in the output, contravariant indices are displayed as superscripts. For contracted indices, you can enter them one covariant and one contravariant. Note however that - provided that the spacetime metric is galilean (Euclidean or Minkowski), or the object is a tensor also in curvilinear coordinates - this distinction in the input is not relevant, and so contracted indices can be entered as both covariant or both contravariant, in which case they will be automatically rewritten as one covariant and one contravariant.
When you load Physics, only the package's commands that are spacetime tensors, such as the metric g_[mu, nu] or the differential operator d_[mu], are automatically set to represent spacetime tensors. Every other symbol that you want to be considered a spacetime tensor must be defined as such by using the Define command, and nothing else will be considered a spacetime tensor during computations. So you can compute straightforwardly with a mathematical expression including spacetime tensors also including any other indexed object not defined as a tensor, and the spacetime tensorial properties and sum rule for repeated indices will be applied only to the spacetime tensors.
To represent the spacetime vector you can use the labels set using the Coordinates command or the SpaceTimeVector as explained in these two help pages. Each time you set a coordinate system, a corresponding spacetime vector is automatically defined as a tensor of 1 index.
In a nongalilean spacetime, none of the spacetime vector NiNJRCNtc3Vic3VwKG1pKCJYIiksbm9uZSgpLG1pKCImbXU7IikpRzYi, the Christoffel symbols, NiNJZ3AjbXN1YihtaSgiJkdhbW1hOyIpLG1yb3cobWkoIiZtdTsiKSxtbygiJmNvbW1hOyIpLG1pKCImYWxwaGE7IiksbW8oIiZjb21tYTsiKSxtaSgiJmJldGE7IikpKUc2Ig== or the non-covariant spacetime differentiation operator NiNJQyNtc3ViKG1pKCImUGFydGlhbEQ7IiksbWkoIiZtdTsiKSlHNiI= are actually tensors. None of them transform as the differentials of the coordinates or as derivatives of a scalar. Nonetheless, it is possible to compute algebraically with them as if they were tensors, using the sum rule for repeated indices, with the convention that we raise and lower indices in these objects by contracting them with the metric, for instance as in NiNJW3UjbXJvdyhtc3ViKG1pKCJYIiksbWkoIiZtdTsiKSksbW8oIiZlcXVhbHM7IiksbXN1YihtaSgiZyIpLG1yb3cobWkoIiZtdTsiKSxtbygiJmNvbW1hOyIpLG1pKCImbnU7IikpKSxtbygiJkludmlzaWJsZVRpbWVzOyIpLG1zdWJzdXAobWkoIlgiKSxub25lKCksbWkoIiZudTsiKSkpRzYi.
Tensors can have spacetime and space indices at the same time. To change the type of letter used to represent spacetime or space indices see Setup.
The contraction of indices between two tensors is performed in the same way that you do it by hand. For example, after defining NiNJIkFHNiI= as a spacetime tensor by using the Define command, you can enter enter NiMtSSVtcm93RzYkSSpwcm90ZWN0ZWRHRiYvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0c2JEYmSShfc3lzbGliR0YpNiUtSSVtc3ViRzYkRiYvRihGKjYkLUkjbWlHNiRGJi9GKEYqNiNRI2dfRiktRiQ2JS1GNDYjUSUmbXU7RiktSSNtb0c2JEYmL0YoRio2I1EoJmNvbW1hO0YpLUY0NiNRJSZudTtGKS1GPzYjUTEmSW52aXNpYmxlVGltZXM7RiktRi82JC1GNDYjUSJBRilGOw==, and have this product simplified to NiMtSSVtc3ViRzYkSSpwcm90ZWN0ZWRHRiYvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0c2JEYmSShfc3lzbGliR0YpNiQtSSNtaUc2JEYmL0YoRio2I1EiQUYpLUYvNiNRJSZudTtGKQ== by applying the Simplify command to it. Because of the use of Einstein's summation convention for repeated indices, you do not need to put products of tensors inside a Sum construction in order to represent the contraction of their indices.
The main simplifier of the package is the Simplify command, which simplifies only aspects related to the extension of the computational domain introduced by the Physics package; for everything else, use the default simplify command. The simplifications carried out by Physics/Simplify concern only tensor indices, taking into account Einstein's summation convention for repeated indices and noncommutative products and algebras. The simplification of spacetime indices includes rules for products involving the metric g_, the Levi-Civita symbol, the Kronecker Delta, and symmetry and antisymmetry permutation properties of all or part of the indices of spacetime tensors that you have defined by using the Define command.
As a general rule, you can also have a product of tensorial expressions being automatically simplified by entering the product using the Physics `.` operator instead of *.
Among the settable options of the package, the only convention loaded automatically with the Physics package is that spacetime is a 3+1 manifold, commonly described as a Minkowski space with three space and one time dimensions and metric (-,-,-,+), following reference [1], below. It is common to say that the index of a spacetime tensor mu assumes values from 0 to 3, with 0 representing the time component. In a Maple worksheet, you can use the number 0 or the number 4 to represent the time component; if you use 0, it will automatically be rewritten as 4. This has the small but concrete computational advantage of having spacetime indices running from "1 to the dimension" (a straightforward operation on a computer).
The spacetime metric g_ can be set in various manners, either using Setup or the metric g_ with keywords as explained in its help page. When setting the metric g_ with the Setup command you can do that passing directly the line element.
A set of metrics known in the literature can be set directly by passing the corresponding keyword to the g_ command. The database is also searchable by passing incomplete keywords as explained in the help page for g_. This permits setting the metric and related coordinate systems in one step, to then change the metric in different manners as desired.
To perform coordinate transformations on the metric see the TransformCoordinates command; its output can be directly passed to the Setup command if desired to set the transformed metric as the current one.
The dimension of spacetime can also be changed - see Setup.
All the general relativity tensors g_, Christoffel, Einstein, LeviCivita (in curvilinear coordinates), Ricci, Riemann and Weyl automatically update the values of their components on the fly each time you change the metric. With these tensors you can compute algebraically, as done with paper and pencil, or request them to return a specific value by giving numerical values to their indices. In doing so, if the numbers are prefixed by ~ they are interpreted as contravariant and the corresponding value is returned. These tensors also accept the keyword nonzero as a index, in which case they return a set with all the nonzero values, as well as the keyword array, in which case an Array with all the tensor's components is returned. If the indices are passed together, the returned Array will have the corresponding covariant or contravariant values.
When working with curvilinear coordinates, the LeviCivita command can represent either the galilean or the nongalilean LeviCivita symbols - you can set this option using Setup (option levicivita).
The Riemann tensor can also be indexed with the keyword scalars in which case it returns the Riemann scalars as described in the corresponding help page.
Conversion routines are also provided to express tensorial expressions in terms of the different general relativity tensors. For example, you can express the Christoffel symbols in terms of the metric g_ and its derivatives; for that purpose use convert(..., g_). Likely, you can use convert(..., T) where T is any of g_, Christoffel, Ricci and d_. The expand command can also be used with some of these purposes.
Among the most frequent mistakes when working with indexed tensors are entering different terms in a sum where the free indices are not the same, and repeating an index more than once in a product. The command to check for these mistakes is Check, and if used with optional arguments, it returns the repeated indices per term as well as the free indices of an expression.
Another frequent mistake is to enter a tensor as a tensor of n indices, which is defined elsewhere in the calculations with a different number of indices. To prevent this situation, after defining a spacetime tensor, every posterior handling of this tensor by the Physics commands checks, in the background, automatically, that the number of indices of each tensor is the correct one. So if you start the worksheet with NiMtSSVtc3ViRzYkSSpwcm90ZWN0ZWRHRiYvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0c2JEYmSShfc3lzbGliR0YpNiQtSSNtaUc2JEYmL0YoRio2I1EiQUYpLUYvNiNRJSZtdTtGKQ==, and at some point want to work with NiMtSSVtc3ViRzYkSSpwcm90ZWN0ZWRHRiYvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0c2JEYmSShfc3lzbGliR0YpNiQtSSNtaUc2JEYmL0YoRio2I1EiQUYpLUklbXJvd0c2JEYmL0YoRio2JS1GLzYjUSUmbXU7RiktSSNtb0c2JEYmL0YoRio2I1EoJmNvbW1hO0YpLUYvNiNRJSZudTtGKQ==, you need to redo the definition of NiNJIkFHNiI= by using the Define command with the redo option.
For more advanced commands for general relativity, in the context of differential geometry, see DifferentialGeometry[Tensor].
Go to: <Spacetime, tensor simplification, and default settings>
<Commutative, anticommutative, and noncommutative variables and functions>
<Differentiation and not commutative product>
<Space of quantum states: Dirac notation and scalar product>
<Text-field style="Heading 3" layout="Heading 3" bookmark="C_AC_NC">Commutative, anticommutative, and noncommutative variables and functions</Text-field>
Variables are classified by three exclusive classes: commutative (C), anticommutative (NC), and noncommutative (NC) variables, according to whether they commute, anticommute, or do not commute in a product. For example, commutative, anticommutative, and noncommutative variables satisfy LUklbXJvd0c2JEkqcHJvdGVjdGVkR0YlL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHNiRGJUkoX3N5c2xpYkdGKDYpLUkjbWlHNiRGJS9GJ0YpNiNRIkFGKC1JI21vRzYkRiUvRidGKTYjUTEmSW52aXNpYmxlVGltZXM7RigtRi42I1EiQkYoLUY0NiNRKSZlcXVhbHM7RihGOUYzRi0=, LUklbXJvd0c2JEkqcHJvdGVjdGVkR0YlL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHNiRGJUkoX3N5c2xpYkdGKDYqLUkjbWlHNiRGJS9GJ0YpNiNRIkFGKC1JI21vRzYkRiUvRidGKTYjUTEmSW52aXNpYmxlVGltZXM7RigtRi42I1EiQkYoLUY0NiNRKSZlcXVhbHM7RigtRjQ2I1EqJnVtaW51czA7RihGOUYzRi0=, and LUklbXJvd0c2JEkqcHJvdGVjdGVkR0YlL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHNiRGJUkoX3N5c2xpYkdGKDYqLUkjbWlHNiRGJS9GJ0YpNiNRIkFGKC1JI21vRzYkRiUvRidGKTYjUTEmSW52aXNpYmxlVGltZXM7RigtRi42I1EiQkYoLUY0NiNRJSZsdDtGKC1GNDYjUSUmZ3Q7RihGOUYzRi0=, respectively.
In connection with this, when you load Physics, the product, power, and differentiation operators, represented by *, ^, and diff, respectively, are redefined in order to work correctly with C, AC, and NC variables, including differentiation with respect to anticommutative variables.
In a worksheet, the convention is that every symbol represents a C variable unless it is prefixed with the anticommutative prefix or the noncommutative prefix. These prefixes are not loaded automatically when you load Physics, and must be set by using the Setup command. However, they are automatically set when you choose to load the advanced Physics setup, by entering Setup(advanced) at the prompt.
Functions or indexed variables inherit the commutativity properties of their names so, for example, to input an anticommutative function, it suffices to input one with an anticommutative name. The same rule applies to indexed functions; for example, NiMtJkkiUUc2IjYjSSJqR0YmNiNJInhHRiY= is anticommutative if NiNJIlFHNiI= is. Symbols defined as quantum operators by the Setup command, as well as the operators returned by the Annihilation and Creation commands, are considered noncommutative.
Note that expressions involving sums, products, and powers of C, AC, and NC variables and functions are also of one of these three types. The following are the conventions concerning the classification of composed objects:
Products:
C * AC = AC * Cis of AC typeC * NC = NC * Cis of NC typeAC * NC <> NC * ACis of NC type
Sums:
C + AC = AC + Cis of NC typeC + NC = NC + Cis of NC typeAC + NC = NC + ACis of NC type
The command to perform the recognition between C, AC, and NC variables, functions, or expressions is type, as in type(expression, kind), where kind is one of NiRJLGNvbW11dGF0aXZlRzYiSTBhbnRpY29tbXV0YXRpdmVHRiQ=, or NiNJL25vbmNvbW11dGF0aXZlRzYi.
Go to: <Spacetime, tensor simplification, and default settings>
<Commutative, anticommutative, and noncommutative variables and functions>
<Differentiation and not commutative product>
<Space of quantum states: Dirac notation and scalar product>
<Text-field style="Heading 3" layout="Heading 3" bookmark="DifferentiationAndNoncommutativeProducts">Differentiation and not commutative product</Text-field>
When the Physics package is loaded, the differentiation command diff is extended to allow you to:
differentiate with respect to functions, as is frequently done in physics (for example, with respect to the velocity represented as a function of NiNJInRHNiI=)
differentiate with respect to anticommutative variables
use Einstein's summation convention for repeated indices of tensorial objects, defined as such by the Define command, or already loaded as such with the Physics package (for example, the space metric g_ or the LeviCivita symbol)
For information on differentiating with respect to anticommutative variables, see diff,anticommutative.
The product operation is also extended in order to handle anticommutative and noncommutative variables, functions, or expressions as described in `*`. To expand these products with respect to sums, use the expand command; if you want to expand only the noncommutative products, use the Physics[Expand] command.
Some basic simplifications are applied to noncommutative products each time the operator `*` is entered, including a Check for correctness of the free and repeated indices of spacetime tensors, defined by the Define command. It is also possible to have repeated indices automatically simplified, for example, so that NiMtSSVtcm93RzYkSSpwcm90ZWN0ZWRHRiYvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0c2JEYmSShfc3lzbGliR0YpNiUtSSVtc3ViRzYkRiYvRihGKjYkLUkjbWlHNiRGJi9GKEYqNiNRI2dfRiktRiQ2JS1GNDYjUSUmbXU7RiktSSNtb0c2JEYmL0YoRio2I1EoJmNvbW1hO0YpLUY0NiNRJSZudTtGKS1GPzYjUTEmSW52aXNpYmxlVGltZXM7RiktRi82JC1GNDYjUSJBRilGOw== automatically returns NiMtSSVtc3ViRzYkSSpwcm90ZWN0ZWRHRiYvSSttb2R1bGVuYW1lRzYiSSxUeXBlc2V0dGluZ0c2JEYmSShfc3lzbGliR0YpNiQtSSNtaUc2JEYmL0YoRio2I1EiQUYpLUYvNiNRJSZudTtGKQ== without having to call the Simplify command. For that purpose, use the Setup command.
An important convention is that of the function application of a product construction: the rule implemented is LUklbXJvd0c2JEkqcHJvdGVjdGVkR0YlL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHNiRGJUkoX3N5c2xpYkdGKDYsLUkobWZlbmNlZEc2JEYlL0YnRik2Iy1GIzYlLUkjbWlHNiRGJS9GJ0YpNiNRImFGKC1JI21vRzYkRiUvRidGKTYjUSYmYXN0O0YoLUY1NiNRImJGKC1GLjYjLUYjNiMtRjU2I1EieEYoLUY7NiNRJyZyYXJyO0YoRjQtRjs2I1EwJkFwcGx5RnVuY3Rpb247RihGQ0Y6RkBGTUZD for all NiNJImFHNiI= and NiNJImJHNiI=. Note that this convention is different from the convention for the application of the scalar (inner) product `.`, where NiNJImFHNiI= and NiNJImJHNiI= are only applied to NiNJInhHNiI= if they are quantum operators.
A frequently useful command, related to applying noncommutative products as if they were operators, is the Parameters command; so that if NiNJImFHNiI= is a parameter, then the rule used is LUklbXJvd0c2JEkqcHJvdGVjdGVkR0YlL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHNiRGJUkoX3N5c2xpYkdGKDYqLUkobWZlbmNlZEc2JEYlL0YnRik2Iy1GIzYlLUkjbWlHNiRGJS9GJ0YpNiNRImFGKC1JI21vRzYkRiUvRidGKTYjUSYmYXN0O0YoLUY1NiNRImJGKC1GLjYjLUYjNiMtRjU2I1EieEYoLUY7NiNRJyZyYXJyO0YoRjRGOkZALUY7NiNRMCZBcHBseUZ1bmN0aW9uO0YoRkM=.
Go to: <Spacetime, tensor simplification, and default settings>
<Commutative, anticommutative, and noncommutative variables and functions>
<Differentiation and not commutative product>
<Space of quantum states: Dirac notation and scalar product>
<Text-field style="Heading 3" layout="Heading 3" bookmark="SpaceOfQuantumStates">Space of quantum states: Dirac notation and scalar product</Text-field>
The commands available for representing quantum states and related operations are Bra, Ket, Bracket, Annihilation, Creation, Dagger, and the scalar product operator `.`. To represent state vectors, Dirac's notation is used.
The state vectors represented by Bras and Kets are assumed to be non-degenerate, so their correspondence to quantum states is one-to-one.
The space of quantum states to which the state vector belongs is identified by a label (any name), the first argument of Bra and Ket. The corresponding bases of quantum states are assumed to be discrete, unless explicitly stated as continuous by the Setup command.
The quantum numbers associated with a state vector are stated explicitly, represented by either numbers or expressions given as arguments to Bra and Ket after the label identifying the space of states to which the state vector belongs.
An important convention concerns the function application of a scalar product construction. The rule implemented is that when you enter NiMtLUkiLkc2JEkqcHJvdGVjdGVkR0YnSShfc3lzbGliRzYiNiRJIkFHRilJIkJHRik2I0kieEdGKQ==, the operands entering the scalar product are scanned from right to left, according to: if the operand is a quantum operator, then it is applied to NiNJInhHNiI= and the result returned; if after scanning all the operands, a quantum operator has not been found, then the scalar product is just multiplied by NiNJInhHNiI=.
For example, if NiNJIkJHNiI= is a quantum operator, then LUklbXJvd0c2JEkqcHJvdGVjdGVkR0YlL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHNiRGJUkoX3N5c2xpYkdGKDYqLUkobWZlbmNlZEc2JEYlL0YnRik2Iy1GIzYlLUkjbWlHNiRGJS9GJ0YpNiNRIkFGKC1JI21vRzYkRiUvRidGKTYjUSIuRigtRjU2I1EiQkYoLUYuNiMtRiM2Iy1GNTYjUSJ4RigtRjs2I1EnJnJhcnI7RihGNEY6RkAtRjs2I1EwJkFwcGx5RnVuY3Rpb247RihGQw==, and if neither NiNJIkFHNiI= nor NiNJIkJHNiI= is a quantum operator, then LUklbXJvd0c2JEkqcHJvdGVjdGVkR0YlL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHNiRGJUkoX3N5c2xpYkdGKDYoLUkobWZlbmNlZEc2JEYlL0YnRik2Iy1GIzYlLUkjbWlHNiRGJS9GJ0YpNiNRIkFGKC1JI21vRzYkRiUvRidGKTYjUSIuRigtRjU2I1EiQkYoLUYuNiMtRiM2Iy1GNTYjUSJ4RigtRjs2I1EnJnJhcnI7RihGLS1GOzYjUSYmYXN0O0YoRkc=, where the product operation * is either commutative or not commutative, depending on the type of NiNJIkFHNiI=, NiNJIkJHNiI=, and NiNJInhHNiI=. This is different from the application rule implemented for noncommutative products, where LUklbXJvd0c2JEkqcHJvdGVjdGVkR0YlL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHNiRGJUkoX3N5c2xpYkdGKDYsLUkobWZlbmNlZEc2JEYlL0YnRik2Iy1GIzYlLUkjbWlHNiRGJS9GJ0YpNiNRImFGKC1JI21vRzYkRiUvRidGKTYjUSYmYXN0O0YoLUY1NiNRImJGKC1GLjYjLUYjNiMtRjU2I1EieEYoLUY7NiNRJyZyYXJyO0YoRjQtRjs2I1EwJkFwcGx5RnVuY3Rpb247RihGQ0Y6RkBGTUZD. By combining product constructions using `*` and `.`, taking into account the different application rules of these two kinds of products and using the Parameters command, it is possible to represent, in a Maple worksheet, varied products and operator applications as done when computing with paper and pencil.
Go to: <Spacetime, tensor simplification, and default settings>
<Commutative, anticommutative, and noncommutative variables and functions>
<Differentiation and not commutative product>
<Space of quantum states: Dirac notation and scalar product>
<Text-field style="Heading 2" layout="Heading 2" bookmark="bkmrk0">The Physics package</Text-field>
The Physics commands include: *, `.`, Annihilation, AntiCommutator, Antisymmetrize, Bra, Bracket, Check, Christoffel, Coefficients, Commutator, Coordinates, Creation, D_, Dagger, Define, Dgamma, Einstein, Expand, ExteriorDerivative, FeynmanDiagrams, Fundiff, Geodesics, GrassmannParity, Gtaylor, Intc, Inverse, Ket, KillingVectors, KroneckerDelta, LeviCivita, Library, LieBracket, LieDerivative, Normal, Parameters, PerformOnAnticommutativeSystem, Projector, Psigma, Ricci, Riemann, Setup, Simplify, SpaceTimeVector, SubstituteTensorIndices, SumOverRepeatedIndices, Symmetrize, TensorArray, ToFieldComponents, ToSuperfields, Trace, TransformCoordinates, Vectors, Weyl, ^, dAlembertian, d_, diff, g_. A complete list is provided on the Physics help page.
Further information relevant to the use of these commands can be found at commutative, anticommutative, and noncommutative variables.
The Physics[Vectors] commands are: &x, `+`, Vectors[`.`], ChangeBasis, Component, Curl, DirectionalDiff, Divergence, Gradient, Identify, Laplacian, Nabla, Norm, diff .
<Text-field style="Heading 2" layout="Heading 2" bookmark="seealso">See Also</Text-field>DifferentialGeometry, DifferentialGeometry[Tensor], Physics constants, Physics, Physics examples, Physics Updates, Tensors - a complete guide, Mini-Course Computer Algebra for Physicists
<Text-field style="Heading 2" layout="Heading 2" bookmark="bkmrk1">References</Text-field>
Landau, L.D., and Lifshitz, E.M. The Classical Theory of Fields, Course of Theoretical Physics Volume 2, fourth revised English edition. Elsevier, 1975.