27    character(len=LABEL_LEN)  :: label = 
"" 
   28    class(species_t), 
pointer  :: species => null() 
 
   29    integer, 
allocatable       :: c(:)
 
   32    real(real64), 
allocatable :: f_ii(:)
 
   33    real(real64), 
allocatable :: f_vdw(:)
 
   34    real(real64), 
allocatable :: f_loc(:)
 
   35    real(real64), 
allocatable :: f_nl(:)
 
   36    real(real64), 
allocatable :: f_fields(:)
 
   37    real(real64), 
allocatable :: f_u(:)
 
   38    real(real64), 
allocatable :: f_scf(:)
 
   39    real(real64), 
allocatable :: f_nlcc(:)
 
   40    real(real64), 
allocatable :: f_photons(:)
 
   43    generic   :: 
assignment(=) => copy
 
   55  subroutine atom_init(this, dim, label, species)
 
   56    type(atom_t),                      
intent(out) :: this
 
   57    integer,                           
intent(in)  :: dim
 
   58    character(len=*),                  
intent(in)  :: label
 
   59    class(species_t), 
target, 
optional, 
intent(in)  :: species
 
   63    this%label = trim(adjustl(label))
 
   64    this%species => null()
 
   65    if (
present(species)) this%species => species
 
   67    safe_allocate(this%c(1:dim))
 
   70    safe_allocate(this%f_ii(1:dim))
 
   71    safe_allocate(this%f_vdw(1:dim))
 
   72    safe_allocate(this%f_loc(1:dim))
 
   73    safe_allocate(this%f_nl(1:dim))
 
   74    safe_allocate(this%f_fields(1:dim))
 
   75    safe_allocate(this%f_u(1:dim))
 
   76    safe_allocate(this%f_scf(1:dim))
 
   77    safe_allocate(this%f_nlcc(1:dim))
 
   78    safe_allocate(this%f_photons(1:dim))
 
   94    class(atom_t), 
intent(out) :: atom_out
 
   95    class(atom_t), 
intent(in)  :: atom_in
 
   99    atom_out%label = atom_in%label
 
  100    atom_out%species => atom_in%species
 
  102    safe_allocate_source_a(atom_out%c,         atom_in%c)
 
  103    safe_allocate_source_a(atom_out%f_ii,      atom_in%f_ii)
 
  104    safe_allocate_source_a(atom_out%f_vdw,     atom_in%f_vdw)
 
  105    safe_allocate_source_a(atom_out%f_loc,     atom_in%f_loc)
 
  106    safe_allocate_source_a(atom_out%f_nl,      atom_in%f_nl)
 
  107    safe_allocate_source_a(atom_out%f_fields,  atom_in%f_fields)
 
  108    safe_allocate_source_a(atom_out%f_u,       atom_in%f_u)
 
  109    safe_allocate_source_a(atom_out%f_scf,     atom_in%f_scf)
 
  110    safe_allocate_source_a(atom_out%f_nlcc,    atom_in%f_nlcc)
 
  111    safe_allocate_source_a(atom_out%f_photons, atom_in%f_photons)
 
  118    type(atom_t), 
intent(inout) :: this
 
  123    this%species => null()
 
  125    safe_deallocate_a(this%c)
 
  127    safe_deallocate_a(this%f_ii)
 
  128    safe_deallocate_a(this%f_vdw)
 
  129    safe_deallocate_a(this%f_loc)
 
  130    safe_deallocate_a(this%f_nl)
 
  131    safe_deallocate_a(this%f_fields)
 
  132    safe_deallocate_a(this%f_u)
 
  133    safe_deallocate_a(this%f_scf)
 
  134    safe_deallocate_a(this%f_nlcc)
 
  135    safe_deallocate_a(this%f_photons)
 
  143    type(atom_t), 
intent(in) :: this
 
  145    character(len=len_trim(adjustl(this%label))) :: label
 
  147    label=trim(adjustl(this%label))
 
  153    type(
atom_t),             
intent(inout) :: this
 
  154    class(
species_t), 
target, 
intent(in)    :: species
 
  158    this%species => species
 
  165    type(
atom_t),     
target,  
intent(in)  :: this
 
  166    class(
species_t), 
pointer, 
intent(out) :: species
 
  171    if (
associated(this%species)) species => this%species
 
  177    type(
atom_t), 
intent(in) :: this
 
  178    type(
atom_t), 
intent(in) :: that
 
  188    type(
atom_t),     
intent(in) :: this
 
  199    type(
atom_t), 
intent(in)  :: atom(:)
 
  205      select type(spec => atom(i)%species)
 
  216    type(
atom_t), 
intent(in)  :: atom(:)
 
  222      select type(spec => atom(i)%species)
 
subroutine atom_copy(atom_out, atom_in)
 
pure logical function, public all_species_are_jellium_slab(atom)
Check if all species are jellium slab.
 
pure character(len=len_trim(adjustl(this%label))) function, public atom_get_label(this)
 
subroutine atom_finalize(this)
 
elemental logical function atom_same_species_aa(this, that)
 
pure logical function, public any_species_is_jellium_sphere(atom)
Check if any species is a jellium sphere.
 
elemental logical function atom_same_species_as(this, species)
 
subroutine, public atom_init(this, dim, label, species)
 
subroutine, public atom_get_species(this, species)
 
subroutine, public atom_set_species(this, species)
 
real(real64), parameter, public m_zero
 
brief This module defines the class unit_t which is used by the unit_systems_oct_m module.
 
This module defines the unit system, used for input and output.
 
An abstract class for species. Derived classes include jellium, all electron, and pseudopotential spe...