14 #include "../base/base_uses.f90"
20 PUBLIC :: cp_iteration_info_type, &
26 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'cp_iter_types'
27 LOGICAL,
PRIVATE,
PARAMETER :: debug_this_module = .false.
44 "SPLINE_FIND_COEFFS", &
50 CHARACTER(LEN=default_path_length),
PARAMETER,
PUBLIC,
DIMENSION(18) ::
each_desc_labels = (/ &
51 "Iteration level for __ROOT__ (fictitious iteration level) ", &
52 "Iteration level for an ENERGY/ENERGY_FORCE calculation. ", &
53 "Iteration level for POWELL based optimization steps. ", &
54 "Iteration level for the SCF steps. ", &
55 "Iteration level for the X-Ray Absorption Spectroscopy (XAS) SCF steps. ", &
56 "Iteration level for the MD steps. ", &
57 "Iteration level for the Path integral md steps. ", &
58 "Iteration level for the METADYNAMICS steps (number of hills added). ", &
59 "Iteration level for the Geometry optimization steps. ", &
60 "Iteration level for the Rotational optimization steps in the Dimer calculation.", &
61 "Iteration level for the Cell optimization steps. ", &
62 "Iteration level for the BAND calculation steps ", &
63 "Iteration level for the Energy Perturbation (EP) linear solver ", &
64 "Iteration level for the solution of the coefficients of the splines ", &
65 "Iteration level for the evaluation of the Replica Environment ", &
66 "Iteration level for the Basis Set Superposition Error (BSSE) calculation ", &
67 "Iteration level for the Shell-Core distances optimization steps ", &
68 "Iteration level for the Time-Dependent Density Functional Theory SCF steps. "/)
75 TYPE cp_iteration_info_type
76 INTEGER :: ref_count = -1
77 INTEGER :: print_level = -1, n_rlevel = -1
78 INTEGER,
DIMENSION(:),
POINTER :: iteration => null()
79 LOGICAL,
DIMENSION(:),
POINTER :: last_iter => null()
80 CHARACTER(len=default_string_length) :: project_name =
""
81 CHARACTER(LEN=default_string_length), &
82 DIMENSION(:),
POINTER :: level_name => null()
83 END TYPE cp_iteration_info_type
94 TYPE(cp_iteration_info_type),
POINTER :: iteration_info
95 CHARACTER(len=*),
INTENT(in) :: project_name
97 ALLOCATE (iteration_info)
99 iteration_info%ref_count = 1
100 iteration_info%print_level = 2
101 iteration_info%n_rlevel = 1
102 iteration_info%project_name = project_name
103 ALLOCATE (iteration_info%iteration(iteration_info%n_rlevel))
104 ALLOCATE (iteration_info%level_name(iteration_info%n_rlevel))
105 ALLOCATE (iteration_info%last_iter(iteration_info%n_rlevel))
106 iteration_info%iteration(iteration_info%n_rlevel) = 1
107 iteration_info%level_name(iteration_info%n_rlevel) =
"__ROOT__"
108 iteration_info%last_iter(iteration_info%n_rlevel) = .false.
118 TYPE(cp_iteration_info_type),
INTENT(INOUT) :: iteration_info
120 CHARACTER(len=*),
PARAMETER :: routinen =
'cp_iteration_info_retain', &
121 routinep = modulen//
':'//routinen
123 IF (iteration_info%ref_count <= 0)
THEN
124 cpabort(routinep//
" iteration_info%ref_counf<=0")
126 iteration_info%ref_count = iteration_info%ref_count + 1
135 TYPE(cp_iteration_info_type),
POINTER :: iteration_info
137 CHARACTER(len=*),
PARAMETER :: routinen =
'cp_iteration_info_release', &
138 routinep = modulen//
':'//routinen
140 IF (
ASSOCIATED(iteration_info))
THEN
141 IF (iteration_info%ref_count <= 0)
THEN
142 cpabort(routinep//
" iteration_info%ref_counf<=0")
144 iteration_info%ref_count = iteration_info%ref_count - 1
145 IF (iteration_info%ref_count == 0)
THEN
146 IF (
ASSOCIATED(iteration_info%iteration))
THEN
147 DEALLOCATE (iteration_info%iteration)
149 IF (
ASSOCIATED(iteration_info%last_iter))
THEN
150 DEALLOCATE (iteration_info%last_iter)
152 IF (
ASSOCIATED(iteration_info%level_name))
THEN
153 DEALLOCATE (iteration_info%level_name)
155 DEALLOCATE (iteration_info)
167 TYPE(cp_iteration_info_type),
INTENT(INOUT) :: iteration_info_in, iteration_info_out
169 CHARACTER(len=*),
PARAMETER :: routinen =
'cp_iteration_info_copy_iter', &
170 routinep = modulen//
':'//routinen
174 IF (iteration_info_in%ref_count <= 0)
THEN
175 cpabort(routinep//
" iteration_info_in%ref_counf<=0")
178 iteration_info_out%n_rlevel = iteration_info_in%n_rlevel
180 DEALLOCATE (iteration_info_out%iteration)
181 i =
SIZE(iteration_info_in%iteration)
182 ALLOCATE (iteration_info_out%iteration(i))
183 iteration_info_out%iteration = iteration_info_in%iteration
185 DEALLOCATE (iteration_info_out%last_iter)
186 i =
SIZE(iteration_info_in%last_iter)
187 ALLOCATE (iteration_info_out%last_iter(i))
188 iteration_info_out%last_iter = iteration_info_in%last_iter
190 DEALLOCATE (iteration_info_out%level_name)
191 i =
SIZE(iteration_info_in%level_name)
192 ALLOCATE (iteration_info_out%level_name(i))
193 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(18), 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(18), parameter, public each_desc_labels
Defines the basic variable types.
integer, parameter, public default_string_length
integer, parameter, public default_path_length