Skip to content
Snippets Groups Projects
Commit 94a3a417 authored by Alvarez, Gonzalo's avatar Alvarez, Gonzalo
Browse files

-m option accepts dressed brakets and commas

parent 6f79832f
No related branches found
No related tags found
No related merge requests found
......@@ -53,6 +53,7 @@ void mainLoop3(const ModelType& model,
typedef typename GeometryType::ComplexOrRealType ComplexOrRealType;
typedef LanczosPlusPlus::Engine<ModelType,InternalProductTemplate,SpecialSymmetryType> EngineType;
typedef typename EngineType::TridiagonalMatrixType TridiagonalMatrixType;
typedef PsimagLite::Vector<PsimagLite::String>::Type VectorStringType;
const GeometryType& geometry = model.geometry();
EngineType engine(model,geometry.numberOfSites(),io);
......@@ -64,8 +65,19 @@ void mainLoop3(const ModelType& model,
PsimagLite::String filename = PsimagLite::basenameOf(io.filename());
const SizeType nmeas = lanczosOptions.measure.size();
for (SizeType i = 0; i < nmeas; ++i)
engine.measure(lanczosOptions.measure[i]);
for (SizeType i = 0; i < nmeas; ++i) {
VectorStringType tokens;
PsimagLite::split(tokens, lanczosOptions.measure[i], ",");
const SizeType ntokens = tokens.size();
for (SizeType j = 0; j < ntokens; ++j) {
VectorStringType braOpKet;
PsimagLite::split(braOpKet, tokens[j], "|");
const SizeType ind = (braOpKet.size() == 3) ? 1 : 0;
if (braOpKet.size() != 1 && ind == 0)
err("Wrong braket\n");
engine.measure(braOpKet[ind]);
}
}
for (SizeType gfi=0;gfi<lanczosOptions.gf.size();gfi++) {
SizeType counter = 0;
......
......@@ -33,14 +33,16 @@ public:
return true;
break;
case Label::N:
result = (bitSaved) ? 0 : 1;
return true;
return (bitSaved);
break;
case Label::SZ:
result = (bitSaved) ? -zeroPointFive : zeroPointFive;
return true;
break;
case Label::C:
bit = !bit;
return ((bitSaved && !transpose_) || (!bitSaved && transpose_));
break;
default:
throw PsimagLite::RuntimeError("RahulOperator::actOn internal error\n");
break;
......
......@@ -229,7 +229,7 @@ private:
basis.getN(ket1,ket2,i,SPIN_DOWN,orb));
for (SizeType j=0;j<nsite;j++) {
ComplexOrRealType value = coulombCoupling(i,j);
ComplexOrRealType value = 0.5*coulombCoupling(i,j);
if (PsimagLite::real(value) == 0 && PsimagLite::imag(value) == 0) continue;
RealType tmp2 = basis.getN(ket1,ket2,j,SPIN_UP,orb) +
basis.getN(ket1,ket2,j,SPIN_DOWN,orb);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment