- Illustrates the construction of the Tavis-Cummings Hamiltonian using MBO.
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
static const int nAtoms = 10;
static const int nPhotons = 30;
static const double omegaC = 2.345e0;
static const int numIter = 2;
static double omega(int i);
int main()
{
MboTensorOp inhomogeneousJz, jPlus, jMinus, idField, idAtoms, A, Ad, N,
H, *factors;
MboVec x, y;
int i;
for (i = 0; i < nAtoms; ++i) {
}
for (i = 0; i < nAtoms; ++i) {
tmp.re = omega(i);
tmp.im = 0;
}
for (i = 0; i < nAtoms; ++i) {
}
for (i = 0; i < nAtoms; ++i) {
}
tmp.re = omegaC;
tmp.im = 0;
factors = malloc(2 * sizeof(*factors));
factors[0] = idField;
factors[1] = inhomogeneousJz;
factors[0] = N;
factors[1] = idAtoms;
factors[0] = A;
factors[1] = jPlus;
factors[0] = Ad;
factors[1] = jMinus;
free(factors);
assert(err == MBO_SUCCESS);
printf("Dimension of total Hilbert Space: %lld\n",
printf("GFLOPs per operator application (estimated): %lf\n",
printf("Total GFLOPs (estimated): %lf\n",
tmp.re = 1.0;
tmp.im = 0.0;
for (i = 0; i < numIter; ++i) {
}
return 0;
}
double omega(int i)
{
return 1.3 * i;
}
Plain source code
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
static const int nAtoms = 10;
static const int nPhotons = 30;
static const double omegaC = 2.345e0;
static const int numIter = 2;
static double omega(int i);
int main()
{
MboTensorOp inhomogeneousJz, jPlus, jMinus, idField, idAtoms, A, Ad, N,
H, *factors;
MboVec x, y;
int i;
for (i = 0; i < nAtoms; ++i) {
}
for (i = 0; i < nAtoms; ++i) {
tmp.re = omega(i);
tmp.im = 0;
}
for (i = 0; i < nAtoms; ++i) {
}
for (i = 0; i < nAtoms; ++i) {
}
tmp.re = omegaC;
tmp.im = 0;
factors = malloc(2 * sizeof(*factors));
factors[0] = idField;
factors[1] = inhomogeneousJz;
factors[0] = N;
factors[1] = idAtoms;
factors[0] = A;
factors[1] = jPlus;
factors[0] = Ad;
factors[1] = jMinus;
free(factors);
assert(err == MBO_SUCCESS);
printf("Dimension of total Hilbert Space: %lld\n",
printf("GFLOPs per operator application (estimated): %lf\n",
printf("Total GFLOPs (estimated): %lf\n",
tmp.re = 1.0;
tmp.im = 0.0;
for (i = 0; i < numIter; ++i) {
}
return 0;
}
double omega(int i)
{
return 1.3 * i;
}