This page needs update
In the W-SLDA toolkit, it is possible to simulate "strict 2d" cases without any restriction for the z-direction. This can be done by simply choosing the simulation box size as NxNy1. To do that, one needs to modify the predefines.h:
/**
* Define lattice size and lattice spacing
* */
#define NX 100
#define NY 100
#define NZ 1
Setting the Correct Fermi Momentum
The default Fermi momentum is defined in the toolkit for the 3d case. If you are using strict 2d or 1d cases, it is highly suggested to set the value of the Fermi momentum in the input file as referencekF.
The Fermi momentum for the 2d case:
k_F = \sqrt{2\pi n}
The Fermi momentum for the 1d case:
k_F = \frac{\pi n}{2}
where n
is the total density (spin up + spin down) of the gas.
Choosing the Functional
The SLDA (and consequently ASLDA) functional has a self-energy term, which is designed for 3d cases. For the strict 2d case, we suggest using the BDG functional. This can be done by choosing the BDG flag in the predefines.h file and requires the scattering length (aBdG) to be defined in the input file.
An alternative way to calculate the pairing interaction is to set a fixed coupling constant. This can be done by modifying the pairing potential:
void modify_potentials(int it, wslda_density h_densities, wslda_potential h_potentials, double *params, size_t extra_data_size, void *extra_data)
{
// DETERMINE LOCAL SIZES OF ARRAYS (CODE DIMENSIONALITY DEPENDENT)
int lNX=h_densities.nx, lNY=h_densities.ny, lNZ=h_densities.nz; // local sizes
int ix, iy, iz, ixyz;
// params0 -> effective coupling strength
ixyz=0;
for(ix=0; ix<lNX; ix++) for(iy=0; iy<lNY; iy++) for(iz=0; iz<lNZ; iz++)
{
h_potentials.delta[ixyz] = -1.0*params[0]*h_densities.nu[ixyz];
...
ixyz++;
}
}
Here params[0] is the effective coupling constant which has to be set in the input file:
# ------------------- PARAMS -----------------------
params0 -2.30 # g_eff
By changing the value of this parameter, one can set the magnitude of the pairing field to a desired value.