Skip to content

Chern gauss bonnet

cymyc.chern_gauss_bonnet ¤

Calculation of topological invariants (Chern classes, Euler characteristic) for a general Kahler manifold. Note some functions may specialise to the case of a projective variety. Note the following:

  • As with curvature, these functions involve \(n\)-th order derivatives of some function fun. These are computed with autodiff - a good usage pattern is to make a partial closure to bind all arguments to fun except the coordinate dependence.
  • These functions expect local coordinates z in a c_dim-dimensional space, with the real and imaginary parts concatenated to form a real-valued 2*c_dim vector, p = [Re(z); Im(z)].
  • The Euler characteristic is defined up to an integer factor from the normalisation of the volume form. The canonical choice is to normalise according to the intersection number computation.

riem_real(p: Float[Array, 2 * i], metric_fn: Callable[[Array], Array], *args: Sequence, pullbacks: Optional[Float[Array, 'dim i']] = None, return_down: bool = False) -> Float[Array, '2*dim 2*dim 2*dim 2*dim'] ¤

Viewing the \(n\)-dim Kähler manifold as a real \((2n)\)-dimensional manifold, computes the real \((2n)\)-dimensional Riemann tensor corresponding to the given metric tensor.

Parameters:

Name Type Description Default
p array_like

2 * complex_dim real coords with float type at which fun is evaluated. Consists of the concatenation of real and imaginary parts along the last axis.

required
metric_fn callable

Function representing metric tensor in local coordinates.

required
*args tuple

Additional arguments to pass to metric_fn.

()
pullbacks array_like

Pullback matrix from ambient to projective variety. If supplied, computes Riemann tensor on the variety, by default None.

None
return_down bool

If True, return the Riemann tensor with all indices lowered, by default False.

False

Returns:

Type Description
array_like

The real (2n)-dimensional Riemann tensor. If return_down is True, returns the tensor with all indices lowered.

chern1(riem: Complex[Array, 'dim dim dim dim']) -> Complex[Array, 'dim dim'] ¤

Computes the first Chern class. Let \(\mathcal{R} \in \Omega^2_X\left(\text{End}(T_X)\right)\) be the curvature two-form on \(X\), then $$ c_1 \propto \textsf{Tr}\mathcal{R}~.$$

Parameters:

Name Type Description Default
riem array_like

(1,3) Riemann tensor corresponding to the Kahler connection \(R^{\kappa}_{\lambda \mu \bar{\nu}}\).

required

Returns:

Type Description
array_like

First Chern form.

chern2(riem: Complex[Array, 'dim dim dim dim']) -> Complex[Array, 'dim dim dim dim'] ¤

Computes the second Chern class, $$ c_2 \propto \left(\textsf{Tr}\mathcal{R}^2 - \textsf{Tr}\mathcal{R} \wedge \textsf{Tr}\mathcal{R} \right)~.$$

Parameters:

Name Type Description Default
riem array_like

(1,3) Riemann tensor corresponding to the Kahler connection \(R^{\kappa}_{\lambda \mu \bar{\nu}}\).

required

Returns:

Name Type Description
c2 array_like

Second Chern form.

chern3(riem: Complex[Array, 'dim dim dim dim']) -> Complex[Array, ''] ¤

Computes the third Chern class,

\[ c_3 \propto c_1 \wedge c_2 + c_1 \wedge \textsf{Tr} \mathcal{R}^2 - \textsf{Tr}\mathcal{R}^3~. \]

Parameters:

Name Type Description Default
riem array_like

(1,3) Riemann tensor corresponding to the Kahler connection \(R^{\kappa}_{\lambda \mu \bar{\nu}}\).

required

Returns:

Name Type Description
c3 array_like

The third Chern form, expressed as the coefficient of the complex wedgey part in standard form: \(dz^1 \wedge d\bar{z}^1 \wedge \cdots \wedge dz^n \wedge d\bar{z}^n\).

euler_characteristic(data: Tuple[Float[Array, 2 * i], Float[Array, ''], Float[Array, '']], pullbacks: Optional[Float[Array, 'dim i']], metric_fn: Callable[[Array], Array], cy_dim: int = 3) -> Float[Array, ''] ¤

Computes the Euler characteristic from the Pfaffian of the curvature two-form \(\mathcal{R} \in \Omega^2_X(T_X)\), with support for Calabi-Yau \(n\)-folds for \(n=1,2,3\).

\[\chi = \frac{1}{(2\pi)^n} \int_X \textsf{Pf}(\mathcal{R})~.\]

Parameters:

Name Type Description Default
data tuple

A tuple containing coordinates p, weights, and the volume form dVol_Omega.

required
pullbacks array_like

Pullback matrix from ambient to projective variety. If supplied, computes the Euler characteristic on the variety, by default None.

required
metric_fn callable

Function representing metric tensor in local coordinates.

required
cy_dim int

Complex dimension of Calabi-Yau, default 3.

3

Returns:

Name Type Description
chi array - like

The Euler characteristic.

euler_characteristic_form(data: Tuple[Float[Array, 2 * i], Float[Array, ''], Float[Array, '']], pullbacks: Optional[Float[Array, 'dim i']], metric_fn: Callable[[Array], Array], cy_dim: int = 3) -> Float[Array, ''] ¤

Computes the Euler characteristic via integration of the third Chern class over \(X\) for a Calabi-Yau threefold.

\[\chi = \int_X c_3~.\]

Parameters:

Name Type Description Default
data tuple

A tuple containing coordinates p, weights, and the volume form dVol_Omega.

required
pullbacks array_like

Pullback matrix from ambient to projective variety. If supplied, computes the Euler characteristic on the variety, by default None.

required
metric_fn callable

Function representing metric tensor in local coordinates.

required
cy_dim int

Complex dimension of Calabi-Yau.

3

Returns:

Name Type Description
chi array - like

The Euler characteristic.