structure_m Module

This module defines a data type 'structure', which is useful for constructing and using multilayer hybrid structures. It also exports the type definitions and constructors for all class(material) types, although these should rarely be needed.



Interfaces

public interface structure

  • private function structure_construct() result(this)

    Constructs a multilayer stack from a configuration file.

    Arguments

    None

    Return Value type(structure)


Derived Types

type, public ::  structure

Components

Type Visibility Attributes Name Initial
class(material), public, pointer :: a => null()

First material

class(material), public, pointer :: b => null()

Last material

integer, public, allocatable :: supercurrent

Output unit (allocate to write supercurrents to file)

integer, public, allocatable :: lossycurrent

Output unit (allocate to write lossycurrents to file)

integer, public, allocatable :: accumulation

Output unit (allocate to write accumulations to file)

integer, public, allocatable :: correlation

Output unit (allocate to write correlations to file)

integer, public, allocatable :: magnetization

Output unit (allocate to write magnetizations to file)

integer, public, allocatable :: distribution

Output unit (allocate to write distributions to file)

integer, public, allocatable :: density

Output unit (allocate to write density of states to file)

Constructor

private function structure_construct ()

Constructs a multilayer stack from a configuration file.

Type-Bound Procedures

procedure, public :: push => structure_push ../../

Construct a single layer

procedure, public :: conf => structure_conf ../../

Configure a single layer

procedure, public :: cmap => structure_cmap ../../

Configure all layers

procedure, public :: fmap => structure_fmap ../../

Manipulate all layers

procedure, public :: initialize => structure_initialize ../../

Reset the physical state

procedure, public :: save => structure_save ../../

Save the physical state

procedure, public :: load => structure_load ../../

Load the physical state

procedure, public :: update => structure_update ../../

Update the physical state

procedure, public :: update_prehook => structure_update_prehook ../../

Execute all update prehooks

procedure, public :: update_posthook => structure_update_posthook ../../

Execute all update posthooks

procedure, public :: converge => structure_converge ../../

Update until convergence

procedure, public :: write => structure_write ../../

Write out observables

procedure, public :: difference => structure_difference ../../

Check how much the physical state changes

procedure, public :: materials => structure_materials ../../

Check the number of enabled materials

procedure, public :: selfconsistency => structure_selfconsistency ../../

Whether selfconsistency iteration is required

procedure, public :: superconductors => structure_superconductors ../../

Check the number of enables superconductors

procedure, public :: chargeviolation => structure_chargeviolation ../../

Check the violation of charge conservation

procedure, public :: gap => structure_gap ../../

Check the minimum superconducting gap