Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • wslda wslda
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Packages & Registries
    • Packages & Registries
    • Package Registry
    • Container Registry
    • Infrastructure Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • wtools
  • wsldawslda
  • Wiki
  • Quantum friction

Quantum friction · Changes

Page history
Update Quantum friction authored Jun 14, 2021 by Gabriel Wlazłowski's avatar Gabriel Wlazłowski
Hide whitespace changes
Inline Side-by-side
Quantum-friction.md
View page @ 2da0b1bd
......@@ -10,4 +10,103 @@ The quantum friction potential is given by:
```
where $`\rho_0=\frac{k_F^3}{6\pi^2}`$ is reference density. By construction, this potential removes any irrotational currents. Thus it provides a convenient method of removing phonon excitations from the system.
\ No newline at end of file
# Usage
The quantum friction is controlled via `input` file via tags:
```bash
# --------------- QUANTUM FRICTION ------------------
# qfalpha 0.0 # alpha parameter for quantum friction term
# qfstart 0.0 # start time for evolving with quantum friction [eF]
# qfstop 0.0 # stop time for evolving with quantum friction [eF]
# qfswitch 0.0 # the friction will be activated and deactivated gradually over this period of time [eF]
```
*Notes*:
* `qfalpha ~ 1` looks to be reasonable choice,
* too large value of `qfalpha` may lead to instability of the code, typically it manifests via growing of the energy during the evolution.
# Example
Consider application a time-dependent potential:
```math
V_{\textrm{ext}}(x,y,t)=s(t,t_{\textrm{start}}, t_{\textrm{stop}})\exp\left[-\frac{x^2}{2\sigma_x^2}-\frac{y^2}{2\sigma_y^2}\right]
```
to the unitary Fermi gas, being initially in the uniform state, where $`s(t,t_{\textrm{start}}, t_{\textrm{stop}})`$ is (smooth) step function that acquires 1 in time interval $`[t_{\textrm{start}}, t_{\textrm{stop}}]`$, otherwise is 0. Implemamntion of this potential is following (`problem-definition.h`):
```c
__device__ __host__ inline double switch_function(double t, double T, double alpha)
{
return 0.5*( 1.0+tanh( alpha*tan( M_PI_2*( 2.0*t/T-1.0 ) ) ) );
}
__device__ __host__ inline double smooth_step(double t, double step_start, double step_stop, double T, double alpha)
{
if(t<=step_start || t>=step_stop) return 0.0;
if(t>=step_start+T && t<=step_stop-T) return 1.0;
if(t>step_start && t<step_start+T) return switch_function(t-step_start, T, alpha);
else return 1.0-switch_function(t-step_stop+T, T, alpha);
}
__device__ double v_ext(int ix, int iy, int iz, int it, int spin, double *params, size_t extra_data_size, void *extra_data)
{
double x = DX*(ix-NX/2);
double y = DY*(iy-NY/2); // for 1d code iy will be always 0
double z = DZ*(iz-NZ/2); // for 1d and 2d codes iz will be always 0
double t = dc_t0 + dc_dt*it; // time
// ADD HERE FORMULA FOR V_ext(r)
double AMPLITUDE = params[0];
double AX=params[1];
double AY=params[2];
double AZ=params[3];
double T_START=params[4];
double T_STOP=params[5];
double T_SWITCH=params[6];
double gauss = AMPLITUDE *
smooth_step(t, T_START, T_STOP, T_SWITCH, 1.0) *
exp(-1.*AX*x*x -1.*AY*y*y -1.*AZ*z*z );
double V_ext = gauss;
return V_ext;
}
extern "C" void process_params(double *params, double *kF, double *mu, size_t extra_data_size, void *extra_data)
{
// PROCESS INPUT FILE PARAMETERS
double eF = 0.5*kF[0]*kF[0];
params[0]*=eF;
// sigmas
int i;
for(i=1; i<=3; i++) if(params[i]>1.0e-9) params[i] = 1.0/(2.0*params[i]*params[i]);
// times
for(i=4; i<=6; i++) params[i]/=eF;
}
```
When executing this code for lattice (`predefines.h`):
```c
#define NX 24
#define NY 24
#define NZ 8
#define FUNCTIONAL ASLDA
```
with input file parmaters:
```bash
params0 0.25 # gauss amplitude [eF]
params1 2.0 # width in x direction
params2 1.9 # width in y direction
params4 0.0 # turn-on
params5 50.0 # turn-off
params6 10.0 # switch-time
# ...
qfalpha 1.0 # or 0.0 (=deactivated)
qfstart 0.0
qfstop 250.0
qfswitch 1.0
# ...
```
the resulting evolution of the total energy looks like this:
![qf](uploads/0a927351fb183a211fb554689fdd30cb/qf.png)
It is observed, that time-dependent potential excites the system. Selected potential does not introduce angular momentum to the system, and only phonons are induced. When evolving this state with the quantum friction (`qfalpha=1.0`) we see that the system returns after some time to its ground state. The origin for energy fluctuations for `qfalpha=0.0` and for $`t\varepsilon_F>50`$ see [here](Regularization schemes of the pairing field).
\ No newline at end of file
Clone repository
  • API version
  • Automatic interpolations
  • Auxiliary tools
  • Browsing the code
  • Broyden algorithm
  • C and CUDA
  • Campaign of calculations
  • Checking correctness of settings
  • Chemical potentials control
  • Code & Results quality
  • Common failures of static codes
  • Common failures of time dependent codes
  • Computation domain
  • Configuring GPU machine
  • Constraining densities and potentials
View All Pages