13#include "./base/base_uses.f90"
18 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'optimize_basis_types'
25 TYPE exp_constraint_type
26 INTEGER :: const_type = -1
27 REAL(KIND=
dp) :: llim = -1.0_dp, ulim = -1.0_dp
28 REAL(KIND=
dp) :: init = -1.0_dp, var_fac = -1.0_dp
36 INTEGER :: lmin = -1, lmax = -1, nexp = -1
37 INTEGER :: n = -1, ncon_tot = -1, nl = -1
38 INTEGER,
DIMENSION(:),
ALLOCATABLE :: l
39 REAL(kind=
dp),
DIMENSION(:, :),
ALLOCATABLE :: coeff
40 LOGICAL,
DIMENSION(:, :),
ALLOCATABLE :: opt_coeff
41 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: coeff_x_ind
42 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: exps
43 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: opt_exps
44 INTEGER,
DIMENSION(:),
ALLOCATABLE :: exp_x_ind
45 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: exp_has_const
46 TYPE(exp_constraint_type),
DIMENSION(:), &
47 ALLOCATABLE :: exp_const
52 CHARACTER(LEN=default_string_length) :: basis_name =
""
60 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: in_use
65 CHARACTER(LEN=default_string_length) :: basis_name =
""
66 INTEGER :: reference_set = -1
67 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: remove_contr
68 INTEGER :: nsets = -1, ncontr = -1
69 INTEGER,
DIMENSION(:),
ALLOCATABLE :: remove_set
70 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: in_use_set
71 TYPE(use_contr_type),
DIMENSION(:),
ALLOCATABLE :: use_contr
80 CHARACTER(LEN=default_string_length) :: basis_name =
""
81 CHARACTER(LEN=default_string_length) :: element =
""
82 INTEGER :: nbasis_deriv = -1
84 ALLOCATABLE :: deriv_info
90 INTEGER,
DIMENSION(:),
ALLOCATABLE :: member_list
98 TYPE(comp_group_type),
DIMENSION(:),
ALLOCATABLE :: comp_group
99 INTEGER :: ntraining_sets = -1
100 INTEGER :: ncombinations = -1
101 LOGICAL :: use_condition_number = .false.
102 INTEGER,
DIMENSION(:),
POINTER :: group_partition => null()
103 INTEGER :: n_groups_created = -1
104 INTEGER,
DIMENSION(:),
ALLOCATABLE :: sub_sources
105 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: combination
106 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: fval_weight
107 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: condition_weight
108 INTEGER :: nkind = -1
109 INTEGER :: write_frequency = -1
110 INTEGER :: nbasis_deriv_types = -1
111 REAL(kind=
dp),
DIMENSION(:),
ALLOCATABLE :: x_opt
113 CHARACTER(LEN=default_path_length),
DIMENSION(:),
ALLOCATABLE :: training_input
114 CHARACTER(LEN=default_path_length),
DIMENSION(:),
ALLOCATABLE :: training_dir
115 CHARACTER(LEN=default_path_length) :: work_basis_file =
""
116 CHARACTER(LEN=default_path_length) :: output_basis_file =
""
117 CHARACTER(LEN=default_path_length) :: template_basis_file =
""
118 TYPE(kind_basis_type),
DIMENSION(:),
ALLOCATABLE :: kind_basis
119 INTEGER :: opt_id = -1
135 INTEGER :: igroup, ikind
137 IF (
ASSOCIATED(opt_bas%group_partition))
DEALLOCATE (opt_bas%group_partition)
138 IF (
ALLOCATED(opt_bas%sub_sources))
DEALLOCATE (opt_bas%sub_sources)
139 IF (
ALLOCATED(opt_bas%combination))
DEALLOCATE (opt_bas%combination)
140 IF (
ALLOCATED(opt_bas%x_opt))
DEALLOCATE (opt_bas%x_opt)
141 IF (
ALLOCATED(opt_bas%training_input))
DEALLOCATE (opt_bas%training_input)
142 IF (
ALLOCATED(opt_bas%training_dir))
DEALLOCATE (opt_bas%training_dir)
143 IF (
ALLOCATED(opt_bas%fval_weight))
DEALLOCATE (opt_bas%fval_weight)
144 IF (
ALLOCATED(opt_bas%condition_weight))
DEALLOCATE (opt_bas%condition_weight)
146 IF (
ALLOCATED(opt_bas%comp_group))
THEN
147 DO igroup = 1,
SIZE(opt_bas%comp_group)
148 IF (
ALLOCATED(opt_bas%comp_group(igroup)%member_list))
DEALLOCATE (opt_bas%comp_group(igroup)%member_list)
150 DEALLOCATE (opt_bas%comp_group)
153 IF (
ALLOCATED(opt_bas%kind_basis))
THEN
154 DO ikind = 1,
SIZE(opt_bas%kind_basis)
155 CALL deallocate_kind_basis(opt_bas%kind_basis(ikind))
157 DEALLOCATE (opt_bas%kind_basis)
168 SUBROUTINE deallocate_kind_basis(kind)
169 TYPE(kind_basis_type) :: kind
171 INTEGER :: ibasis, icont, iinfo, iset
173 IF (
ALLOCATED(kind%deriv_info))
THEN
174 DO iinfo = 0,
SIZE(kind%deriv_info) - 1
175 IF (
ALLOCATED(kind%deriv_info(iinfo)%remove_contr))
DEALLOCATE (kind%deriv_info(iinfo)%remove_contr)
176 IF (
ALLOCATED(kind%deriv_info(iinfo)%remove_set))
DEALLOCATE (kind%deriv_info(iinfo)%remove_set)
177 IF (
ALLOCATED(kind%deriv_info(iinfo)%in_use_set))
DEALLOCATE (kind%deriv_info(iinfo)%in_use_set)
178 IF (
ALLOCATED(kind%deriv_info(iinfo)%use_contr))
THEN
179 DO icont = 1,
SIZE(kind%deriv_info(iinfo)%use_contr)
180 IF (
ALLOCATED(kind%deriv_info(iinfo)%use_contr(icont)%in_use)) &
181 DEALLOCATE (kind%deriv_info(iinfo)%use_contr(icont)%in_use)
183 DEALLOCATE (kind%deriv_info(iinfo)%use_contr)
186 DEALLOCATE (kind%deriv_info)
189 IF (
ALLOCATED(kind%flex_basis))
THEN
190 DO ibasis = 0,
SIZE(kind%flex_basis) - 1
191 IF (
ALLOCATED(kind%flex_basis(ibasis)%subset))
THEN
192 DO iset = 1,
SIZE(kind%flex_basis(ibasis)%subset)
193 IF (
ALLOCATED(kind%flex_basis(ibasis)%subset(iset)%l)) &
194 DEALLOCATE (kind%flex_basis(ibasis)%subset(iset)%l)
195 IF (
ALLOCATED(kind%flex_basis(ibasis)%subset(iset)%coeff)) &
196 DEALLOCATE (kind%flex_basis(ibasis)%subset(iset)%coeff)
197 IF (
ALLOCATED(kind%flex_basis(ibasis)%subset(iset)%opt_coeff)) &
198 DEALLOCATE (kind%flex_basis(ibasis)%subset(iset)%opt_coeff)
199 IF (
ALLOCATED(kind%flex_basis(ibasis)%subset(iset)%coeff_x_ind)) &
200 DEALLOCATE (kind%flex_basis(ibasis)%subset(iset)%coeff_x_ind)
201 IF (
ALLOCATED(kind%flex_basis(ibasis)%subset(iset)%exps)) &
202 DEALLOCATE (kind%flex_basis(ibasis)%subset(iset)%exps)
203 IF (
ALLOCATED(kind%flex_basis(ibasis)%subset(iset)%opt_exps)) &
204 DEALLOCATE (kind%flex_basis(ibasis)%subset(iset)%opt_exps)
205 IF (
ALLOCATED(kind%flex_basis(ibasis)%subset(iset)%exp_x_ind)) &
206 DEALLOCATE (kind%flex_basis(ibasis)%subset(iset)%exp_x_ind)
207 IF (
ALLOCATED(kind%flex_basis(ibasis)%subset(iset)%exp_const)) &
208 DEALLOCATE (kind%flex_basis(ibasis)%subset(iset)%exp_const)
210 DEALLOCATE (kind%flex_basis(ibasis)%subset)
213 DEALLOCATE (kind%flex_basis)
216 END SUBROUTINE deallocate_kind_basis
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
integer, parameter, public default_path_length
subroutine, public deallocate_basis_optimization_type(opt_bas)
Deallocate everything which was allocated before. Note not all arrays are used depending on the type ...
type containing all information needed for basis matching