Commit 956db691 authored by Daniel Claudino's avatar Daniel Claudino
Browse files

Updated Hamiltonian in adapt_h2.cpp to the QCOR format and the ADAPT class constructor



Signed-off-by: default avatarDaniel Claudino <6d3@ornl.gov>
parent b79db55c
Loading
Loading
Loading
Loading
+8 −7
Original line number Diff line number Diff line
@@ -10,13 +10,14 @@ __qpu__ void initial_state(qreg q) {
int main() {

  // Define the Hamiltonian using the QCOR API
  std::string opstr =
      "(0.1202,0) Z0 Z1 + (0.168336,0) Z0 Z2 + (0.1202,0) Z2 Z3 + (0.17028,0) "
      "Z2 + (0.17028,0) Z0 + (0.165607,0) Z0 Z3 + (0.0454063,0) Y0 Y1 X2 X3 + "
      "(-0.106477,0) + (-0.220041,0) Z3 + (0.174073,0) Z1 Z3 + (0.0454063,0) "
      "Y0 Y1 Y2 Y3 + (-0.220041,0) Z1 + (0.165607,0) Z1 Z2 + (0.0454063,0) X0 "
      "X1 Y2 Y3 + (0.0454063,0) X0 X1 X2 X3";
  auto H = qcor::createObservable(opstr);
  auto H = 0.1202 * Z(0) * Z(1) + 0.168336 * Z(0) * Z(2) +
           0.1202 * Z(2) * Z(3) + 0.17028 * Z(2) + 0.17028 * Z(0) +
           0.165607 * Z(0) * Z(3) + 0.0454063 * Y(0) * Y(1) * X(2) * X(3) -
           0.106477 - 0.220041 * Z(3) + 0.174073 * Z(1) * Z(3) +
           0.0454063 * Y(0) * Y(1) * Y(2) * Y(3) - 0.220041 * Z(1) +
           0.165607 * Z(1) * Z(2) + 0.0454063 * X(0) * X(1) * Y(2) * Y(3) +
           0.0454063 * X(0) * X(1) * X(2) * X(3);

  // optimizer
  auto optimizer = qcor::createOptimizer("nlopt");

+5 −4
Original line number Diff line number Diff line
@@ -472,7 +472,7 @@ void execute_adapt(qreg q, const HeterogeneousMap &&m);

template <typename... KernelArgs> class ADAPT {
protected:
  std::shared_ptr<Observable> observable;
  Observable &observable;
  void *state_prep_ptr;
  const std::string pool, subAlgo;
  const int nElectrons;
@@ -481,14 +481,15 @@ protected:
  qreg q;

public:

  ADAPT(void (*state_prep_kernel)(std::shared_ptr<CompositeInstruction>, qreg,
                                  KernelArgs...),
        std::shared_ptr<Observable> obs, const int _ne, const std::string _pool,
        Observable &obs, const int _ne, const std::string _pool,
        const std::string _subAlgo, std::shared_ptr<Optimizer> opt)
      : state_prep_ptr(reinterpret_cast<void *>(state_prep_kernel)),
        observable(obs), nElectrons(_ne), pool(_pool), subAlgo(_subAlgo),
        optimizer(opt) {
    q = qalloc(obs->nBits());
    q = qalloc(obs.nBits());
  }

  double execute(KernelArgs... initial_args) {
@@ -507,7 +508,7 @@ public:
                      {"optimizer", optimizer},
                      {"sub-algorithm", subAlgo},
                      {"accelerator", accelerator},
                      {"observable", observable}});
                      {"observable", &observable}});
    return q.results()->getInformation("opt-val").template as<double>();
  }
};