14#include "../base/base_uses.f90"
26 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'cp_iter_types'
27 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .false.
44 "SPLINE_FIND_COEFFS", &
51 CHARACTER(LEN=default_path_length),
PARAMETER,
PUBLIC,
DIMENSION(19) ::
each_desc_labels = [ &
52 "Iteration level for __ROOT__ (fictitious iteration level) ", &
53 "Iteration level for an ENERGY/ENERGY_FORCE calculation. ", &
54 "Iteration level for POWELL based optimization steps. ", &
55 "Iteration level for the SCF steps. ", &
56 "Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF steps. ", &
57 "Iteration level for the MD steps. ", &
58 "Iteration level for the Path integral md steps. ", &
59 "Iteration level for the METADYNAMICS steps (number of hills added). ", &
60 "Iteration level for the Geometry optimization steps. ", &
61 "Iteration level for the Rotational optimization steps in the Dimer calculation.", &
62 "Iteration level for the Cell optimization steps. ", &
63 "Iteration level for the BAND calculation steps ", &
64 "Iteration level for the Energy Perturbation (EP) linear solver ", &
65 "Iteration level for the solution of the coefficients of the splines ", &
66 "Iteration level for the evaluation of the Replica Environment ", &
67 "Iteration level for the Basis Set Superposition Error (BSSE) calculation ", &
68 "Iteration level for the Shell-Core distances optimization steps ", &
69 "Iteration level for the Time-Dependent Density Functional Theory SCF steps. ", &
70 "Iteration level for the NEGF SCF steps. "]
78 INTEGER :: ref_count = -1
79 INTEGER :: print_level = -1, n_rlevel = -1
80 INTEGER,
DIMENSION(:),
POINTER :: iteration => null()
81 LOGICAL,
DIMENSION(:),
POINTER :: last_iter => null()
82 CHARACTER(len=default_string_length) :: project_name =
""
83 CHARACTER(LEN=default_string_length), &
84 DIMENSION(:),
POINTER :: level_name => null()
97 CHARACTER(len=*),
INTENT(in) :: project_name
99 ALLOCATE (iteration_info)
101 iteration_info%ref_count = 1
102 iteration_info%print_level = 2
103 iteration_info%n_rlevel = 1
104 iteration_info%project_name = project_name
105 ALLOCATE (iteration_info%iteration(iteration_info%n_rlevel))
106 ALLOCATE (iteration_info%level_name(iteration_info%n_rlevel))
107 ALLOCATE (iteration_info%last_iter(iteration_info%n_rlevel))
108 iteration_info%iteration(iteration_info%n_rlevel) = 1
109 iteration_info%level_name(iteration_info%n_rlevel) =
"__ROOT__"
110 iteration_info%last_iter(iteration_info%n_rlevel) = .false.
122 CHARACTER(len=*),
PARAMETER :: routinen =
'cp_iteration_info_retain', &
123 routinep = modulen//
':'//routinen
125 IF (iteration_info%ref_count <= 0)
THEN
126 cpabort(routinep//
" iteration_info%ref_counf<=0")
128 iteration_info%ref_count = iteration_info%ref_count + 1
139 CHARACTER(len=*),
PARAMETER :: routinen =
'cp_iteration_info_release', &
140 routinep = modulen//
':'//routinen
142 IF (
ASSOCIATED(iteration_info))
THEN
143 IF (iteration_info%ref_count <= 0)
THEN
144 cpabort(routinep//
" iteration_info%ref_counf<=0")
146 iteration_info%ref_count = iteration_info%ref_count - 1
147 IF (iteration_info%ref_count == 0)
THEN
148 IF (
ASSOCIATED(iteration_info%iteration))
THEN
149 DEALLOCATE (iteration_info%iteration)
151 IF (
ASSOCIATED(iteration_info%last_iter))
THEN
152 DEALLOCATE (iteration_info%last_iter)
154 IF (
ASSOCIATED(iteration_info%level_name))
THEN
155 DEALLOCATE (iteration_info%level_name)
157 DEALLOCATE (iteration_info)
171 CHARACTER(len=*),
PARAMETER :: routinen =
'cp_iteration_info_copy_iter', &
172 routinep = modulen//
':'//routinen
176 IF (iteration_info_in%ref_count <= 0)
THEN
177 cpabort(routinep//
" iteration_info_in%ref_counf<=0")
180 iteration_info_out%n_rlevel = iteration_info_in%n_rlevel
182 DEALLOCATE (iteration_info_out%iteration)
183 i =
SIZE(iteration_info_in%iteration)
184 ALLOCATE (iteration_info_out%iteration(i))
185 iteration_info_out%iteration = iteration_info_in%iteration
187 DEALLOCATE (iteration_info_out%last_iter)
188 i =
SIZE(iteration_info_in%last_iter)
189 ALLOCATE (iteration_info_out%last_iter(i))
190 iteration_info_out%last_iter = iteration_info_in%last_iter
192 DEALLOCATE (iteration_info_out%level_name)
193 i =
SIZE(iteration_info_in%level_name)
194 ALLOCATE (iteration_info_out%level_name(i))
195 iteration_info_out%level_name = iteration_info_in%level_name
Collection of routines to handle the iteration info.
subroutine, public cp_iteration_info_copy_iter(iteration_info_in, iteration_info_out)
Copies iterations info of an iteration info into another iteration info.
pure subroutine, public cp_iteration_info_create(iteration_info, project_name)
creates an output info object
character(len=default_path_length), dimension(19), parameter, public each_possible_labels
subroutine, public cp_iteration_info_retain(iteration_info)
retains the iteration_info (see doc/ReferenceCounting.html)
subroutine, public cp_iteration_info_release(iteration_info)
releases the iteration_info (see doc/ReferenceCounting.html)
character(len=default_path_length), dimension(19), parameter, public each_desc_labels
Defines the basic variable types.
integer, parameter, public default_string_length
integer, parameter, public default_path_length
contains the information about the current state of the program to be able to decide if output is nec...