Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Calculating magnetization of a star lattice vs magnetic field in 2D star lattice #8

Open
HamidArianZad opened this issue Oct 22, 2024 · 1 comment

Comments

@HamidArianZad
Copy link

Hi,

I want to apply your code to simulate the magnetization of a 2D star-hexagon lattice possessing 4 sites in a unit cell.
The system is in the presence of an external magnetic field.
Does your code support external fields ?
How can I introduce the geometry of my lattice ?

@jurajHasik
Copy link
Owner

jurajHasik commented Oct 30, 2024

Hi,

external magnetic field, i.e. a term in the Hamiltonian like $h_z \sum_{i\in\textrm{sites}} S^z_i$, can be easily implemented.
In particular, given an iPEPS, you can compute the single-site reduced density matrix and evaluate the expectation value of such term.
Consequently, you can define an "energy per site" (your loss function) which features such terms.
See Ising model in a transverse [external] field:

class ISING():

Regarding the lattice geometry, is this what you have in mind ?

https://en.wikipedia.org/wiki/Trihexagonal_tiling#/media/File:Hex-hexstar-tiling.svg

Currently, peps-torch assumes there is an iPEPS with rectangular unit cell. It computes environments for such iPEPS by CTMRG.
Environments & iPEPS together can be used to evaluate observables (i.e. through density matrices). These are all the ingredients you need to define a loss/cost function, "energy per site" of your model, and then minimize it by gradient-based optimization.

The geometry really comes in by the combination of iPEPS + energy evaluation.
There are different ways you can encode wavefunction on a lattice as an iPEPS with rectangular unit cell. From obvious ones, like

i) 1x1 unit cell holding a single tensor for square lattice, to less obvious ones such as

ii) square lattice with extra next-nearest-neighbour (NNN) interaction to implement nearest-neighbour (NN) model on a triangular lattice,

see

def energy_per_site(self,state,env,q=None,compressed=-1,unroll=False,\

ii) coarse-grained Kagome, where three spins on each up-pointing triangle are combined into a single site, thus forming an effective square lattice, or

iii) iPESS on Kagome lattice, see i.e.

class IPESS_KAGOME_GENERIC(IPEPS_KAGOME):

I suppose some combination of course-graining & playing with interactions (i.e. from NN to NNN) will do the trick.
There is a lot of freedom in how you decide to implement the geometry = parametrize the rectangular iPEPS. The best choice ultimately depends on the nature of the phase/physics you are interested in.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants