31 #include "./base/base_uses.f90"
41 INTEGER :: nexc_atoms = 0
42 INTEGER :: nexc_search = 0
43 INTEGER :: spin_channel = 0
44 INTEGER :: state_type = 0
45 INTEGER :: xas_method = 0
46 INTEGER :: dipole_form = 0
47 INTEGER :: added_mos = 0
48 INTEGER :: max_iter_added = 0
51 INTEGER,
DIMENSION(:),
POINTER :: exc_atoms => null()
52 INTEGER,
DIMENSION(:),
POINTER :: orbital_list => null()
53 LOGICAL :: cubes = .false., do_centers = .false.
54 LOGICAL :: xas_restart = .false.
55 INTEGER,
DIMENSION(:),
POINTER :: list_cubes => null()
57 REAL(dp) :: eps_added = 0.0_dp, overlap_threshold = 0.0_dp
58 REAL(dp) :: xes_core_occupation = 0.0_dp
59 REAL(dp) :: xes_homo_occupation = 0.0_dp
60 REAL(dp) :: nel_tot = 0.0_dp, xas_core_occupation = 0.0_dp
61 END TYPE xas_control_type
63 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'xas_control'
67 PUBLIC :: xas_control_type
86 TYPE(xas_control_type),
INTENT(INOUT) ::
xas_control
87 TYPE(section_vals_type),
POINTER :: xas_section
89 INTEGER :: i, ir, n_rep, nex_at, nex_st
90 INTEGER,
DIMENSION(:),
POINTER ::
list
91 LOGICAL :: hempty, was_present
142 i_rep_val=ir, i_vals=
list)
144 IF (
ASSOCIATED(
list))
THEN
150 nex_at = nex_at +
SIZE(
list)
184 i_rep_val=ir, i_vals=
list)
186 IF (
ASSOCIATED(
list))
THEN
191 nex_st = nex_st +
SIZE(
list)
212 TYPE(section_vals_type),
POINTER :: dft_section
214 INTEGER :: output_unit
215 TYPE(cp_logger_type),
POINTER :: logger
219 "PRINT%DFT_CONTROL_PARAMETERS", extension=
".Log")
220 IF (output_unit > 0)
THEN
223 WRITE (unit=output_unit, fmt=
"(/,T2,A,T40,A)") &
225 " Transition potential with half hole"
227 WRITE (unit=output_unit, fmt=
"(/,T2,A,T40,A)") &
229 " Transition potential with excited half hole"
231 WRITE (unit=output_unit, fmt=
"(/,T2,A,T40,A)") &
233 " Transition potential with full hole"
235 WRITE (unit=output_unit, fmt=
"(/,T2,A,T40,A)") &
237 " Transition potential with excited full hole"
239 WRITE (unit=output_unit, fmt=
"(/,T2,A,T40,A)") &
241 " Only XES with full core and hole in lumo"
243 WRITE (unit=output_unit, fmt=
"(/,T2,A,T25,A)") &
245 " Transition potential with occupation of core state given from input"
247 WRITE (unit=output_unit, fmt=
"(/,T2,A,T40,A)") &
249 " DSCF for the first excited state"
251 cpabort(
"unknown xas method "//trim(adjustl(cp_to_string(
xas_control%xas_method))))
254 WRITE (unit=output_unit, fmt=
"(/,T2,A,T30,A)") &
255 "XAS|",
" Orbitals read from atom-specific restart file when available"
259 "PRINT%DFT_CONTROL_PARAMETERS")
295 TYPE(xas_control_type),
INTENT(INOUT) ::
xas_control
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
Defines the basic variable types.
integer, parameter, public dp
An array-based list which grows on demand. When the internal array is full, a new array of twice the ...
Utility routines for the memory handling.
Defines control structures, which contain the parameters and the settings for the calculations.
subroutine, public xas_control_release(xas_control)
...
subroutine, public read_xas_control(xas_control, xas_section)
read from input the instructions for a xes/xas calculation
subroutine, public xas_control_create(xas_control)
create retain release the xas_control_type
subroutine, public write_xas_control(xas_control, dft_section)
write on the instructions for a xes/xas calculation