Closed evanberkowitz closed 1 year ago
Here are some results for nx=ny=5, nt=24, beta=1, mu=-2, h=0, V=(-5)*LegoSphere([0,0]):
I did 1000 configurations using a 50-step Omelyan MD integrator.
As a function of Monte Carlo time, here's the action
total auxiliary field
and total particle number (calculated with the fermionic observable)
We can compare the total particle number computed via a fermionic and bosonic auxiliary-field observable.
I need to
The observables are
so that seems promising, in terms of having good overlap with the two-particle sector.
Using a canonical projection to a definite sector of N particles I can measure the particle number and find good agreement
N=1 (1+2.367357929145847e-16j)
N=2 (2.0000000000000004+1.3638606258625583e-16j)
N=3 (2.999999999999999+2.760930113688608e-16j)
N=4 (4.000000000000003+2.5563137158560218e-15j)
N=5 (5.000000000000002+1.053870746602612e-14j)
N=6 (6.000000000000004-1.992214989353008e-14j)
N=7 (7.000000000000166+1.435257743085027e-16j)
N=8 (7.999999999999713+1.257294896393592e-13j)
N=9 (9.000000000002409-1.125684717679321e-12j)
N=10 (9.999999999990653+3.1727204554850295e-12j)
N=11 (11.000000000054369+8.379313314460578e-11j)
N=12 (11.999999998888338+4.787320460843398e-09j)
N=13 (12.999999996620543+7.950658345960198e-08j)
N=14 (13.999999195293695+3.7639393524914064e-07j)
N=15 (15.000005261885754-1.2004157021821112e-06j)
N=16 (15.99940242805744+0.0011252444840455153j)
N=17 (17.045562479530112+0.009664606343400203j)
N=18 (12.635748577086312+4.960130664044702j)
N=19 (2.1991243630525403-0.44385450914185465j)
all the way up to N=16 or so.
I also need to
By a7aaa16da6f5f480934d22333df583d63ed96683 the canonical projection interface is well-specified, except for the fact that I haven't yet specified an interface for grand-canonical observables. So it might be worth returning to the implementation of canonical.Projection.{N,S}
once that is set (#12). But for now we can consider the canonical projection interface complete, up to the fact that there's only one-body observables so far.
Actually, I decided that the reproduction of observables in the canonical sector presented as possible correctness risk. It would be better to just code observables once and then use them in different scenarios. I am now refactoring the canonical projection to draw deep down on the observables in the grand-canonical implementation.
As of 53d7007 we have a working contact operator that has been compared with an independently calculated exact two-body result.
We should establish some sanity checks on the entire many-body pipeline. This is, of course, very difficult.
Here are some ideas, both of which rely on inserting number- and spin-z projection operators to measure things in the canonical ensemble.
Are there other approaches where we can check something "honest" in a grand-canonical expectation value?