This tutorial will provide a step-by-step guide to using HQS Cloud, from creating your user account to running your first job!

Creating an Account#

To begin using HQS Cloud, you will need to log in to your user account. Click on the "Dashboard" tab, where you will be prompted to enter your credentials. If you do not yet have a user account, click on the "Register" link to apply for one.

HQS Cloud is currently in its beta. As such there is a waiting list for new users. Individuals who have submitted the registration form will be kept up-to-date regarding the status of their pending user account.

../../../_images/CreateAnAccount.png

Step 0: Create a user account#

A confirmation code will be sent in order to verify your e-mail address. Please be patient, as this confirmation code may take some time to arrive (potentially up to one hour).

../../../_images/Login.png

Step 1: Log in to your new user account#

The Dashboard#

After you've logged in, you'll be presented with the dashboard.

../../../_images/Dashboard_clean.png

An empty dashboard#

The dashboard provides an overview of the unit cells and systems you've saved, as well as a list of currently running and queued jobs. Account settings can be accessed by clicking on your name in the upper right corner, which is where you'll also find your remaining credit balance (HQ$).

After first logging in, the dashboard will be empty. In this tutorial we'll become familiar with each section of the dashboard, starting with the creation of your first unit cell.

Creating a Unit Cell#

NOTE: If you haven't read the documentation regarding unit cells, now might be a good time to do so. See Tutorials for more information.

Click the + button next to the "Unit-Cells" header to create your first unit cell.

Each unit cell consists of a collection of atoms, bonds and lattice vectors. The data for each unit cell is imported through a yaml file, which can either be loaded by pressing the LOAD CONFIG FROM FILE button, or manually edited in your browser.

../../../_images/CreateUnitCell_Input.png

Creating a unit cell#

After adding the data for the unit cell, give it a name. This name can be anything you wish, and will be used to display your new unit cell on the dashboard.

Before a unit cell can be saved, the input is validated and plotted. This ensures that only valid data is used, and also provides a visual representation of the input. Further changes can still be made to the input data even after validation.

../../../_images/CreateUnitCell_ValidatedAndPlotted.png

Validating and plotting the new unit cell#

Clicking "Save" will return you to the dashboard, where you will now find your recently-created unit cell.

../../../_images/Dashboard_Unitcell.png

Updated dashboard with new unit cell#

Unit Cell Examples#

Below are several examples of valid unit cells. Note that there is no unique way of defining a given unit cell - it is always possible to construct the same unit cell in several different ways.

Graphene

unitcell:
    atoms:
        - ['0', 'C', [0, 0, 0],0, 0]
        - ['1', 'C', [0, 0.86, 0], 0, 0 ]
    lattice_vectors: [[1, 0, 0],[0.5, 1.57, 0],[0,0,0]]
    bonds:
        - ['0', '1',[0, 0, 0],-1, 1]
        - ['1', '0',[0, 1, 0],-1, 1]
        - ['0', '1',[1,-1, 0],-1, 1]

2D square

unitcell:
    atoms:
        - ['0', 'C', [ 0, 0, 0], 0, 0]
    lattice_vectors: [[ 1, 0, 0],[ 0, -1, 0],[ 0, 0, 0]]
    bonds:
        - ['0', '0', [ -1, 0, 0], -1, 1]
        - ['0', '0', [ 0, 1, 0], -1, 1]

NaCl

unitcell:
    atoms:
        - ['0', 'Na', [0,0,0], 0, 0]
        - ['1', 'Cl', [0.5,0.5,0],0, 0]
    lattice_vectors: [[1,0,0],[0,1,0],[0,0,0]]
    bonds:
        - ['0', '1', [ 0, 0, 0], -1.0,   1]
        - ['0', '0', [ 1, 0, 0], -0.2, 0.5]
        - ['0', '0', [ 0, 1, 0], -0.2, 0.5]
        - ['0', '1', [ 0,-1, 0], -0.2, 0.5]
        - ['0', '1', [-1, 0, 0], -0.2, 0.5]
        - ['0', '1', [-1,-1, 0], -0.2, 0.5]

Creating a System#

NOTE: If you haven't read the documentation regarding Bravais lattice systems, now might be a good time to do so. See Tutorials for more information.

Click the + button next to the "Systems" header to switch to the systems view and create your first Bravais lattice system.

The data for a Bravais lattice system is generated in the same manner as for unit cells - data can be loaded from a yaml file by pressing the LOAD FROM FILE button, or by manually entering the values into the corresponding text box.

../../../_images/System_Input.png

Creating a new Bravais lattice system#

Before the lattice system can be saved, it must also be validated, just as for the unit cell. Again, this ensures that only valid lattice systems and unit cells are used in a simulation.

Click Validate to verify that the input is correct.

../../../_images/System_Validated.png

Validating the input data for the new system#

Once the input has been validated, click Save to return to the dashboard, which should now display your newly added lattice system.

../../../_images/Dashboard_Unitcell_System.png

Updated dashboard with new lattice system#

System Examples#

Below are several examples of valid systems for a HQS Cloud calculation. The first example will embed a 4-by-2 cluster into a greater system of 3-by-2 clusters. Using SCCE /iHF an effective mean field will be generated to act as environment for a fully interacting cluster, which is then studied using DMRG. The second example will run a calculation for a single fully interacting cluster using only DMRG. This system_size = [1, 1, 1] HQS Cloud mode offers additional functionality, such as access to BCS-type pairing terms.

SCCE Embedding example

system:
    cluster_size: [4,2,1]
    system_size: [3,2,1]

    ### OPTIONAL PARAMETERS ###
    # cluster_offset: [1,1,0]
    # system_boundary_condition: 'periodic'
    # site_type: 'spinless_fermions'
    # Sz: None
    # N: None

### OPTIONAL RUN PARAMETERS ###
run:
   max_iter: 30
   tol_mf: 1e-7
   states: 1
   iMF: 'iHF'
   output_type: 'hdf5'

Single cluster DMRG example

system:
    cluster_size: [4,2,1]
    system_size: [1,1,1]

    ### OPTIONAL PARAMETERS ###
    cluster_offset: [0,0,0]
    system_boundary_condition: 'periodic'
    site_type: 'spinless_fermions'
    # Sz: None
    # N: None

### OPTIONAL RUN PARAMETERS ###
run:
   max_iter: 30
   tol_mf: 1e-7
   states: 1
   #iMF: 'iHF'
   output_type: 'hdf5'

Running a Job#

A job takes a system and a unit cell as input. In general, systems and unit cells can be combined in multiple ways. Clicking Run will validate the job input and, if successful, start the job.

Note: A unit cell with only one lattice vector cannot be used for a system which has repetitions in several lattice vector directions.

../../../_images/RunJob.png

Selecting a unit cell along with a system and running the job#

../../../_images/Dashboard_Job_Created.png

Updated dashboard with the new job.#

The newly created job now appears in the dashboard. The details of the job can be accessed by clicking on Info.

../../../_images/Dashboard_Job_Info.png

The details of the newly-created job#

After running the job, its status will be displayed on the dashboard. The status of the job should change from "Created" to "Queued" automatically. The possible statuses for a job are:

  • Created: The job has been created.

  • Queued: The job is queued on our servers.

  • Running: The job is running.

  • Failed: The job has failed. Something went wrong.

  • Finished: The job is finished and the results can be downloaded.

If a job has failed (perhaps due to insufficient HQ$), the START NEXT JOB button can be used to re-run the job. In all other cases, jobs will automatically queue and run after job creation - there is no need to click on START NEXT JOB.

Note: Jobs are executed in the order they are created, from oldest to newest. For now, this ordering cannot be changed.