I am running a lattice simulation of a single chain polymer on a lattice with every other site occupied by solvent. The additional wrinkle is that every particle on the lattice has a number/spin orientation associated with it, which is subject to change throughout the simulation. There are $Z$ spins possible for every particle. The range of interaction is a nearest-neighbor interaction. Two particles cannot occupy the same site. \begin{align} &\mathcal{H} = \sum _{(i,j)} \epsilon _{ij} \\ &\epsilon_{ij} = \begin{cases} \epsilon ^a, \text{ if spins at locations $i, j$ are the same }\\ \epsilon^n, \text{ if spins at locations $i, j$ spins are not the same} \end{cases} \end{align} where $(i,j)$ are two lattice sites which are nearest neighbor to one another. Once I plant a polymer on such a lattice and fill up every other site on the lattice with solvent, I want to sample this system. How do I perform polymer configuration moves, such as configurational bias chain regrowth (CBCR)? This is how I would run CBCR if I did not have solvent:
- Pick a uniformly random monomer on the chain.
- Pick a side where you want to regrow polymer.
- Regrow polymer one monomer at a time. Calculate all the possible energetic states of the monomer per Rosenbluth sampling.
- Include Rosenbluth weights in acceptance criterion.
But how do I do this type of regrowth if I have a lattice full of solvent? Every time I go to a new spot, I have to displace a solvent molecule. How do I account for the fact that every move involves some sort of solvent displacement. If required, I can give more explanation of the system I am performing.
I would appreciate any advice you have for me!