13 #include "./base/base_uses.f90"
18 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'optimize_basis_types'
20 PUBLIC :: basis_optimization_type, subset_type, flex_basis_type, &
25 TYPE exp_constraint_type
27 REAL(KIND=
dp) :: llim, ulim
28 REAL(KIND=
dp) :: init, var_fac
36 INTEGER :: lmin, lmax, nexp
37 INTEGER :: n, ncon_tot, nl
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
55 TYPE(subset_type),
DIMENSION(:),
ALLOCATABLE :: subset
60 LOGICAL,
DIMENSION(:),
ALLOCATABLE :: in_use
64 TYPE derived_basis_info
65 CHARACTER(LEN=default_string_length) :: basis_name
66 INTEGER :: reference_set
67 INTEGER,
DIMENSION(:, :),
ALLOCATABLE :: remove_contr
68 INTEGER :: nsets, ncontr
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
83 TYPE(derived_basis_info),
DIMENSION(:), &
84 ALLOCATABLE :: deriv_info
85 TYPE(flex_basis_type),
DIMENSION(:),
ALLOCATABLE :: flex_basis
90 INTEGER,
DIMENSION(:),
ALLOCATABLE :: member_list
97 TYPE basis_optimization_type
98 TYPE(comp_group_type),
DIMENSION(:),
ALLOCATABLE :: comp_group
99 INTEGER :: ntraining_sets
100 INTEGER :: ncombinations
101 LOGICAL :: use_condition_number
102 INTEGER,
DIMENSION(:),
POINTER :: group_partition
103 INTEGER :: n_groups_created
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
109 INTEGER :: write_frequency
110 INTEGER :: nbasis_deriv_types
111 REAL(KIND=
dp),
DIMENSION(:),
ALLOCATABLE :: x_opt
112 TYPE(opt_state_type) :: powell_param
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
133 TYPE(basis_optimization_type) :: opt_bas
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 ...