2019-06-19 MP Toolkit (2)

2019-06-19  本文已影响0人  低维量子系统

See mptoolkit/models


      UnitCell Cell(Site);
      UnitCellOperator Sp(Cell, "Sp"), Sm(Cell, "Sm"), Sz(Cell, "Sz");
      InfiniteLattice Lattice(&Cell);

      Lattice["H_J1z"] = sum_unit(Sz(0)*Sz(1));
      Lattice["H_J1t"] = 0.5 * sum_unit(Sp(0)*Sm(1) + Sm(0)*Sp(1));
      Lattice["H_J1"]  = Lattice["H_J1z"] + Lattice["H_J1t"];

      Lattice["H_J2z"] = sum_unit(Sz(0)*Sz(2));
      Lattice["H_J2t"] = sum_unit(0.5*(Sp(0)*Sm(2) + Sm(0)*Sp(2)));
      Lattice["H_J2"] = sum_unit(Sz(0)*Sz(2) + 0.5*(Sp(0)*Sm(2) + Sm(0)*Sp(2)));

      Lattice["H_B1"] = sum_unit(pow(Sz(0)*Sz(1) + 0.5*(Sp(0)*Sm(1) + Sm(0)*Sp(1)), 2));
      Lattice["H_B2"] = sum_unit(pow(Sz(0)*Sz(2) + 0.5*(Sp(0)*Sm(2) + Sm(0)*Sp(2)), 2));

      Lattice["H_B1xy"] = sum_unit(pow(0.5*(Sp(0)*Sm(1) + Sm(0)*Sp(1)), 2));

      Lattice["H_mu"] = sum_unit(Sz(0)*Sz(0));

      Lattice["H_dimer"] = sum_unit(Sz(0)*Sz(1) + 0.5*(Sp(0)*Sm(1) + Sm(0)*Sp(1))
                    - (Sz(1)*Sz(2) + 0.5*(Sp(1)*Sm(2) + Sm(1)*Sp(2))), 2);

      Lattice["H_stag"] = sum_unit(Sz(0) - Sz(1), 2);

half_int Spin = 0.5;
LatticeSite Site = SpinSU2(Spin);

      // The UnitCell consists of a single site
      UnitCell Cell(Site);

      // Make an infinite lattice of our unit cell
      InfiniteLattice Lattice(&Cell);

      // A short-cut to refer to an operator defined within our unit cell
      UnitCellOperator S(Cell, "S"), Q(Cell, "Q"), I(Cell, "I");

      // Define operators that have support over the infinite lattice
      Lattice["H_J1"] = sum_unit(inner(S(0), S(1)));
      Lattice["H_J2"] = sum_unit(inner(S(0), S(2)));
      Lattice["H_J3"] = sum_unit(inner(S(0), S(3)));

      Lattice["H_B1"] = sum_unit(pow(inner(S(0), S(1)), 2));
      Lattice["H_B2"] = sum_unit(pow(inner(S(0), S(2)), 2));
      Lattice["H_B3"] = sum_unit(pow(inner(S(0), S(3)), 2));

      Lattice["H_Q1"] = sum_unit(inner(Q(0), Q(1)));
      Lattice["H_Q2"] = sum_unit(inner(Q(0), Q(2)));
      Lattice["H_Q3"] = sum_unit(inner(Q(0), Q(3)));

      Lattice["H_D"] = -sum_unit(pow(inner(S(0), S(1)), 2) - I(0));
      UnitCellMPO S3 = inner(S(0)+S(1)+S(2), S(0)+S(1)+S(2));
      Lattice["H_T"] = (1.0/24.0) * sum_unit((S3 - 2*I(0)) * (S3 - 6*I(0)) * (S3 - 12*I(0)));

half_int Spin = 0.5;
LatticeSite Site = SpinSite(Spin);
      UnitCell Cell(Site);
      UnitCellOperator Sx(Cell, "Sx"), Sy(Cell, "Sy"), Sz(Cell, "Sz"), Sp(Cell, "Sp"), Sm(Cell, "Sm");
      UnitCellOperator I(Cell, "I"); // identity operator
      InfiniteLattice Lattice(&Cell);

      UnitCellMPO SpinExchange = Sx(0)*Sx(1) + Sy(0)*Sy(1) + Sz(0)*Sz(1);

      Lattice["H_xx"] = sum_unit(Sx(0)*Sx(1));
      Lattice["H_yy"] = sum_unit(Sy(0)*Sy(1));
      Lattice["H_zz"] = sum_unit(Sz(0)*Sz(1));

      Lattice["H_x"] = sum_unit(Sx(0));
      Lattice["H_y"] = sum_unit(Sy(0));
      Lattice["H_z"] = sum_unit(Sz(0));

      Lattice["H_J1z"] = Lattice["H_zz"];
      Lattice["H_J1t"] = Lattice["H_xx"] + Lattice["H_yy"];
      Lattice["H_J1"] = sum_unit(SpinExchange);
      Lattice["H_B1"] = sum_unit(SpinExchange*SpinExchange);

      Lattice["H_B1xy"] = sum_unit(pow(Sx(0)*Sx(1) + Sy(0)*Sy(1),2));

      Lattice["H_mu"] = sum_unit(Sz(0)*Sz(0));

      Lattice["H_dimer"] = sum_unit(Sz(0)*Sz(1) + 0.5*(Sp(0)*Sm(1) + Sm(0)*Sp(1))
                    - (Sz(1)*Sz(2) + 0.5*(Sp(1)*Sm(2) + Sm(1)*Sp(2))), 2);

      Lattice["H_stag"] = sum_unit(Sz(0) - Sz(1), 2);

half_int Spin = 0.5;
int Legs = 2;
 int CellSize = Legs;

      LatticeSite Site = SpinSU2(Spin);
      UnitCell Cell(repeat(Site, CellSize));
      InfiniteLattice Lattice(&Cell);
      UnitCellOperator S(Cell, "S");

      UnitCellMPO J1x, J1y;
      for (int i = 0; i < Legs-1; ++i)
      {
         J1x += inner(S(0)[i], S(1)[i]);
         J1y += inner(S(0)[i], S(0)[i+1]);
      }
      J1x += inner(S(0)[Legs-1], S(1)[Legs-1]);

      Lattice["H_J1x"] = sum_unit(J1x);
      Lattice["H_J1y"] = sum_unit(J1y);
      Lattice["H_J1yp"] = sum_unit(J1y + inner(S(0)[0], S(0)[Legs-1]));
      Lattice["H_J1"] = sum_unit(J1x+J1y);
      Lattice["H_J1p"] = sum_unit(J1x+J1y + inner(S(0)[0], S(0)[Legs-1]));

Sm(5)[1] : the spin S- operator at site 1 of the 5th unit cell


SpinLadder_iDMRGsvg.png
上一篇下一篇

猜你喜欢

热点阅读