Skip to content

Tutorial: Tc

Urs Hähner edited this page Sep 4, 2018 · 29 revisions

Superconducting transition temperature Tc

In this example calculation, we study superconductivity in the 2D single-band Hubbard model. Putting the physics that lead to this fascinating phenomenon aside, we guide through the steps to obtain the superconducting transition temperature Tc for the case U = 6 and a filling of d = 0.95 using a 2x2 cluster and the standard DCA method. All relevant files can be found here.

Runtimes

MacBook Pro:

  • Intel Core i7-4980HQ @ 2.8GHz (4 cores)
  • MPI enabled (8 tasks)
  • "measurements": 100000
  • T = [1, 0.75, 0.5, 0.25, 0.125, 0.1, 0.09, 0.08, 0.07]
  • ~110 min

Piz Daint [Cray XC40 (multi-core)]:

  • Intel Xeon E5-2695 v4 @ 2.10GHz (18 cores), 2 sockets per compute node
  • MPI enabled: 25 nodes, 2 tasks per node
  • Threaded Monte Carlo solver: "walkers": 14, "accumulators": 20
  • "measurements": 100000
  • T = [1, 0.75, 0.5, 0.25, 0.125, 0.1, 0.095, 0.09, 0.085, 0.08, 0.075, 0.07]
  • ~9 min

1. Configure and build the applications main_dca and main_analysis

Use the following CMake options:

CMAKE_BUILD_TYPE = Release
DCA_BUILD_ANALYSIS = ON
DCA_BUILD_DCA = ON
DCA_CLUSTER_SOLVER = CT-AUX
DCA_LATTICE = square
DCA_MODEL = tight-binding
DCA_POINT_GROUP = D4
DCA_RNG = std::mt19937_64  # or std::ranlux48

In order to speed up the calculation, enable MPI

DCA_WITH_MPI = ON

and/or use the threaded Monte Carlo solver

DCA_WITH_THREADED_SOLVER = ON

2. Preparation of input files and batch scripts

Use the cooldown script to generate directories, input files and batch scripts for the DCA calculation. To do so, follow the steps 1-5 of the instructions for the script. Set the following simulation parameters in the cooldown script:

dca_plus = False
U = 6
d = 0.95

Nc = 4
cluster_vec_1 = [2, 0]
cluster_vec_2 = [0, 2]

iters_ht = 8
iters = 6

temps = [1, 0.75, 0.5, 0.25, 0.125, 0.1, 0.09, 0.08, 0.07]  # Or smaller steps.
T_analysis = 0.1

We provide preconfigured input templates specific for this tutorial in the tutorial's directory: input_sp.json.in and input_tp.json.in. The parameters "walkers" and "accumulators" need to be adjusted according to system specifications. In order to get meaningful results, the number of measurements should be at least 100 000.

Revise the generated batch scripts for the dca (job.dca_*) and analysis (job.analysis_*) jobs and adjust resources, if necessary.

3. Job submission/execution

Submit/execute the dca batch script, job.dca_*.

When all dca jobs finished running, submit/execute the analysis batch script, job.analysis_*.

4. Determine Tc

When the analysis jobs are finished, execute the python script compute_tc.py in your work directory (i.e. the directory that contains the T=... subdirectories) to determine the superconducting transition temperature Tc:

python compute_tc.py T=*  # Produces plot eigval_vs_temp.pdf.

The resulting plot (see Fig. 1) shows the temperature dependence of the leading eigenvalue λd of the Bether-Salpeter equation. Tc is the temperature where λd(T=Tc) = 1.

Figure 1: Reference results for 100k and 10M measurements, respectively, with error bars obtained from 10 independent calculations.
reference plot Tc

We can further analyze the results by looking, for example, at the momentum and frequency dependence of the eigenvector of the leading Bethe-Salpeter eigenvalue. This can be done by running the python script plot_eigenvector.py on one of the HDF5 files produced by main_analysis:

python plot_eigenvector.py T=0.08/analysis.hdf5  # Produces plot leading_eigenvector.pdf.
Figure 2: Eigenvector φ of the leading Bethe-Salpeter eigenvalue shown as a function of Matsubara frequency ωn for the four different cluster momenta K.
leading eigenvector