126 work_orb_orb => null(), &
127 work_orb_orb2 => null(), &
128 work_orb_orb3 => null(), &
129 work_aux_orb => null(), &
130 work_aux_orb2 => null(), &
131 work_aux_orb3 => null(), &
132 work_aux_aux => null(), &
133 work_aux_aux2 => null(), &
134 work_aux_aux3 => null(), &
135 work_aux_aux4 => null(), &
136 work_aux_aux5 => null()
139 POINTER :: lambda => null(), &
140 lambda_inv => null(), &
141 lambda_inv_sqrt => null(), &
143 r_purify => null(), &
144 work_orb_nmo => null(), &
145 work_nmo_nmo1 => null(), &
146 r_schur_r_t => null(), &
147 work_nmo_nmo2 => null(), &
148 work_aux_nmo => null(), &
149 work_aux_nmo2 => null(), &
152 mo_derivs_tmp => null(), &
155 m_purify => null(), &
156 p_to_be_purified => null(), &
157 lambda_inv2 => null(), &
160 ks_to_be_merged => null(), &
161 scf_work_aux_fit => null()
162 TYPE(eigvals_p_type),
DIMENSION(:), &
163 POINTER :: eigvals_lambda => null(), &
164 eigvals_p_to_be_purified => null()
166 xc_section_aux => null()
167 REAL(kind=
dp) :: gsi(3) = 0.0_dp, &
168 lambda_merlot(2) = 0.0_dp, &
169 n_large_basis(3) = 0.0_dp
170 INTEGER :: nao_orb = 0, nao_aux_fit = 0, nmo(2) = 0
172 LOGICAL :: charge_constrain = .false., do_admmp = .false., &
173 do_admmq = .false., do_admms = .false.
176 LOGICAL :: aux_exch_func_param = .false.
177 REAL(kind=
dp),
DIMENSION(3) :: aux_x_param = 0.0_dp
178 LOGICAL :: block_dm = .false.
179 LOGICAL :: block_fit = .false.
180 INTEGER,
DIMENSION(:, :),
POINTER :: block_map => null()
182 LOGICAL :: do_gapw = .false.
186 POINTER :: mos_aux_fit => null()
188 DIMENSION(:),
POINTER :: sab_aux_fit => null(), sab_aux_fit_asymm => null(), sab_aux_fit_vs_orb => null()
190 POINTER :: matrix_ks_aux_fit_im => null()
192 matrix_ks_aux_fit_dft, &
193 matrix_ks_aux_fit_hfx, &
195 matrix_s_aux_fit_vs_orb
196 TYPE(
qs_rho_type),
POINTER :: rho_aux_fit => null(), rho_aux_fit_buffer => null()
199 POINTER :: mo_derivs_aux_fit => null()
219 SUBROUTINE admm_env_create(admm_env, admm_control, mos, para_env, natoms, nao_aux_fit, blacs_env_ext)
225 INTEGER,
INTENT(IN) :: natoms, nao_aux_fit
228 INTEGER :: i, iatom, iblock, ispin, j, jatom, &
231 TYPE(
cp_fm_struct_type),
POINTER :: fm_struct_aux_aux, fm_struct_aux_nmo, fm_struct_aux_orb, &
232 fm_struct_nmo_nmo, fm_struct_orb_nmo, fm_struct_orb_orb
240 CALL get_mo_set(mos(1), mo_coeff=mo_coeff, nmo=nmo, nao=nao_orb)
241 blacs_env => mo_coeff%matrix_struct%context
242 IF (
PRESENT(blacs_env_ext)) blacs_env => blacs_env_ext
245 admm_env%nao_aux_fit = nao_aux_fit
246 admm_env%nao_orb = nao_orb
249 nrow_global=nao_aux_fit, &
250 ncol_global=nao_aux_fit, &
254 nrow_global=nao_aux_fit, &
255 ncol_global=nao_orb, &
259 nrow_global=nao_orb, &
260 ncol_global=nao_orb, &
263 NULLIFY (admm_env%S, admm_env%S_inv, admm_env%Q, admm_env%A, admm_env%B, &
264 admm_env%work_orb_orb, admm_env%work_orb_orb2, admm_env%work_orb_orb3, &
265 admm_env%work_aux_orb, admm_env%work_aux_orb2, admm_env%work_aux_orb3, &
266 admm_env%work_aux_aux, admm_env%work_aux_aux2, admm_env%work_aux_aux3, &
267 admm_env%work_aux_aux4, admm_env%work_aux_aux5)
268 ALLOCATE (admm_env%S, admm_env%S_inv, admm_env%Q, admm_env%A, admm_env%B, &
269 admm_env%work_orb_orb, admm_env%work_orb_orb2, admm_env%work_orb_orb3, &
270 admm_env%work_aux_orb, admm_env%work_aux_orb2, admm_env%work_aux_orb3, &
271 admm_env%work_aux_aux, admm_env%work_aux_aux2, admm_env%work_aux_aux3, &
272 admm_env%work_aux_aux4, admm_env%work_aux_aux5)
273 CALL cp_fm_create(admm_env%S, fm_struct_aux_aux, name=
"aux_fit_overlap")
274 CALL cp_fm_create(admm_env%S_inv, fm_struct_aux_aux, name=
"aux_fit_overlap_inv")
275 CALL cp_fm_create(admm_env%Q, fm_struct_aux_orb, name=
"mixed_overlap")
276 CALL cp_fm_create(admm_env%A, fm_struct_aux_orb, name=
"work_A")
277 CALL cp_fm_create(admm_env%B, fm_struct_orb_orb, name=
"work_B")
278 CALL cp_fm_create(admm_env%work_orb_orb, fm_struct_orb_orb, name=
"work_orb_orb")
279 CALL cp_fm_create(admm_env%work_orb_orb2, fm_struct_orb_orb, name=
"work_orb_orb")
280 CALL cp_fm_create(admm_env%work_orb_orb3, fm_struct_orb_orb, name=
"work_orb_orb3")
281 CALL cp_fm_create(admm_env%work_aux_orb, fm_struct_aux_orb, name=
"work_aux_orb")
282 CALL cp_fm_create(admm_env%work_aux_orb2, fm_struct_aux_orb, name=
"work_aux_orb2")
283 CALL cp_fm_create(admm_env%work_aux_orb3, fm_struct_aux_orb, name=
"work_aux_orb3")
284 CALL cp_fm_create(admm_env%work_aux_aux, fm_struct_aux_aux, name=
"work_aux_aux")
285 CALL cp_fm_create(admm_env%work_aux_aux2, fm_struct_aux_aux, name=
"work_aux_aux2")
286 CALL cp_fm_create(admm_env%work_aux_aux3, fm_struct_aux_aux, name=
"work_aux_aux3")
287 CALL cp_fm_create(admm_env%work_aux_aux4, fm_struct_aux_aux, name=
"work_aux_aux4")
288 CALL cp_fm_create(admm_env%work_aux_aux5, fm_struct_aux_aux, name=
"work_aux_aux5")
290 ALLOCATE (admm_env%lambda_inv(nspins))
291 ALLOCATE (admm_env%lambda(nspins))
292 ALLOCATE (admm_env%lambda_inv_sqrt(nspins))
293 ALLOCATE (admm_env%R(nspins))
294 ALLOCATE (admm_env%R_purify(nspins))
295 ALLOCATE (admm_env%work_orb_nmo(nspins))
296 ALLOCATE (admm_env%work_nmo_nmo1(nspins))
297 ALLOCATE (admm_env%R_schur_R_t(nspins))
298 ALLOCATE (admm_env%work_nmo_nmo2(nspins))
299 ALLOCATE (admm_env%eigvals_lambda(nspins))
300 ALLOCATE (admm_env%eigvals_P_to_be_purified(nspins))
301 ALLOCATE (admm_env%H(nspins))
302 ALLOCATE (admm_env%K(nspins))
303 ALLOCATE (admm_env%M(nspins))
304 ALLOCATE (admm_env%M_purify(nspins))
305 ALLOCATE (admm_env%P_to_be_purified(nspins))
306 ALLOCATE (admm_env%work_aux_nmo(nspins))
307 ALLOCATE (admm_env%work_aux_nmo2(nspins))
308 ALLOCATE (admm_env%mo_derivs_tmp(nspins))
309 ALLOCATE (admm_env%H_corr(nspins))
310 ALLOCATE (admm_env%ks_to_be_merged(nspins))
311 ALLOCATE (admm_env%lambda_inv2(nspins))
312 ALLOCATE (admm_env%C_hat(nspins))
313 ALLOCATE (admm_env%P_tilde(nspins))
316 CALL get_mo_set(mos(ispin), mo_coeff=mo_coeff, nmo=nmo)
317 admm_env%nmo(ispin) = nmo
320 nrow_global=nao_aux_fit, &
325 nrow_global=nao_orb, &
334 CALL cp_fm_create(admm_env%work_orb_nmo(ispin), fm_struct_orb_nmo, name=
"work_orb_nmo")
335 CALL cp_fm_create(admm_env%work_nmo_nmo1(ispin), fm_struct_nmo_nmo, name=
"work_nmo_nmo1")
336 CALL cp_fm_create(admm_env%R_schur_R_t(ispin), fm_struct_nmo_nmo, name=
"R_schur_R_t")
337 CALL cp_fm_create(admm_env%work_nmo_nmo2(ispin), fm_struct_nmo_nmo, name=
"work_nmo_nmo2")
338 CALL cp_fm_create(admm_env%lambda(ispin), fm_struct_nmo_nmo, name=
"lambda")
339 CALL cp_fm_create(admm_env%lambda_inv(ispin), fm_struct_nmo_nmo, name=
"lambda_inv")
340 CALL cp_fm_create(admm_env%lambda_inv_sqrt(ispin), fm_struct_nmo_nmo, name=
"lambda_inv_sqrt")
341 CALL cp_fm_create(admm_env%R(ispin), fm_struct_nmo_nmo, name=
"R")
342 CALL cp_fm_create(admm_env%R_purify(ispin), fm_struct_aux_aux, name=
"R_purify")
343 CALL cp_fm_create(admm_env%K(ispin), fm_struct_aux_aux, name=
"K")
344 CALL cp_fm_create(admm_env%H(ispin), fm_struct_aux_nmo, name=
"H")
345 CALL cp_fm_create(admm_env%H_corr(ispin), fm_struct_orb_orb, name=
"H_corr")
346 CALL cp_fm_create(admm_env%M(ispin), fm_struct_nmo_nmo, name=
"M")
347 CALL cp_fm_create(admm_env%M_purify(ispin), fm_struct_aux_aux, name=
"M aux")
348 CALL cp_fm_create(admm_env%P_to_be_purified(ispin), fm_struct_aux_aux, name=
"P_to_be_purified")
349 CALL cp_fm_create(admm_env%work_aux_nmo(ispin), fm_struct_aux_nmo, name=
"work_aux_nmo")
350 CALL cp_fm_create(admm_env%work_aux_nmo2(ispin), fm_struct_aux_nmo, name=
"work_aux_nmo2")
351 CALL cp_fm_create(admm_env%mo_derivs_tmp(ispin), fm_struct_orb_nmo, name=
"mo_derivs_tmp")
352 CALL cp_fm_create(admm_env%lambda_inv2(ispin), fm_struct_nmo_nmo, name=
"lambda_inv2")
353 CALL cp_fm_create(admm_env%C_hat(ispin), fm_struct_aux_nmo, name=
"C_hat")
354 CALL cp_fm_create(admm_env%P_tilde(ispin), fm_struct_aux_aux, name=
"P_tilde")
355 CALL cp_fm_create(admm_env%ks_to_be_merged(ispin), fm_struct_orb_orb, name=
"KS_to_be_merged")
357 ALLOCATE (admm_env%eigvals_lambda(ispin)%eigvals)
358 ALLOCATE (admm_env%eigvals_P_to_be_purified(ispin)%eigvals)
359 ALLOCATE (admm_env%eigvals_lambda(ispin)%eigvals%data(nmo))
360 ALLOCATE (admm_env%eigvals_P_to_be_purified(ispin)%eigvals%data(nao_aux_fit))
361 admm_env%eigvals_lambda(ispin)%eigvals%data = 0.0_dp
362 admm_env%eigvals_P_to_be_purified(ispin)%eigvals%data = 0.0_dp
373 cpassert(
ASSOCIATED(admm_control))
374 admm_env%purification_method = admm_control%purification_method
375 admm_env%scaling_model = admm_control%scaling_model
376 admm_env%aux_exch_func = admm_control%aux_exch_func
381 admm_env%aux_exch_func_param = admm_control%aux_exch_func_param
382 admm_env%aux_x_param(:) = admm_control%aux_x_param(:)
386 admm_env%do_admmp = .true.
389 admm_env%do_admmq = .true.
392 admm_env%do_admms = .true.
398 ALLOCATE (admm_env%block_map(natoms, natoms))
399 admm_env%block_map(:, :) = 0
400 DO iblock = 1,
SIZE(admm_control%blocks)
401 DO i = 1,
SIZE(admm_control%blocks(iblock)%list)
402 iatom = admm_control%blocks(iblock)%list(i)
403 DO j = 1,
SIZE(admm_control%blocks(iblock)%list)
404 jatom = admm_control%blocks(iblock)%list(j)
405 admm_env%block_map(iatom, jatom) = 1
411 NULLIFY (admm_env%admm_gapw_env)
412 admm_env%do_gapw = .false.
414 NULLIFY (admm_env%mos_aux_fit, admm_env%sab_aux_fit, admm_env%sab_aux_fit_asymm, admm_env%sab_aux_fit_vs_orb)
415 NULLIFY (admm_env%matrix_ks_aux_fit_im)
416 NULLIFY (admm_env%rho_aux_fit, admm_env%rho_aux_fit_buffer, admm_env%task_list_aux_fit, admm_env%mo_derivs_aux_fit)
434 cpassert(
ASSOCIATED(admm_env))
452 DEALLOCATE (admm_env%S, admm_env%S_inv, admm_env%Q, admm_env%A, admm_env%B, &
453 admm_env%work_orb_orb, admm_env%work_orb_orb2, admm_env%work_orb_orb3, &
454 admm_env%work_aux_orb, admm_env%work_aux_orb2, admm_env%work_aux_orb3, &
455 admm_env%work_aux_aux, admm_env%work_aux_aux2, admm_env%work_aux_aux3, &
456 admm_env%work_aux_aux4, admm_env%work_aux_aux5)
480 DO ispin = 1,
SIZE(admm_env%eigvals_lambda)
481 DEALLOCATE (admm_env%eigvals_lambda(ispin)%eigvals%data)
482 DEALLOCATE (admm_env%eigvals_P_to_be_purified(ispin)%eigvals%data)
483 DEALLOCATE (admm_env%eigvals_lambda(ispin)%eigvals)
484 DEALLOCATE (admm_env%eigvals_P_to_be_purified(ispin)%eigvals)
486 DEALLOCATE (admm_env%eigvals_lambda)
487 DEALLOCATE (admm_env%eigvals_P_to_be_purified)
489 IF (
ASSOCIATED(admm_env%block_map))
THEN
490 DEALLOCATE (admm_env%block_map)
493 IF (
ASSOCIATED(admm_env%xc_section_primary))
THEN
496 IF (
ASSOCIATED(admm_env%xc_section_aux))
THEN
500 IF (
ASSOCIATED(admm_env%admm_gapw_env))
CALL admm_gapw_env_release(admm_env%admm_gapw_env)
501 IF (
ASSOCIATED(admm_env%admm_dm))
CALL admm_dm_release(admm_env%admm_dm)
503 IF (
ASSOCIATED(admm_env%mos_aux_fit))
THEN
504 DO ispin = 1,
SIZE(admm_env%mos_aux_fit)
507 DEALLOCATE (admm_env%mos_aux_fit)
511 IF (
ASSOCIATED(admm_env%scf_work_aux_fit))
THEN
527 IF (
ASSOCIATED(admm_env%rho_aux_fit))
THEN
529 DEALLOCATE (admm_env%rho_aux_fit)
531 IF (
ASSOCIATED(admm_env%rho_aux_fit_buffer))
THEN
533 DEALLOCATE (admm_env%rho_aux_fit_buffer)
536 IF (
ASSOCIATED(admm_env%task_list_aux_fit))
CALL deallocate_task_list(admm_env%task_list_aux_fit)
538 DEALLOCATE (admm_env)
594 SUBROUTINE get_admm_env(admm_env, mo_derivs_aux_fit, mos_aux_fit, sab_aux_fit, sab_aux_fit_asymm, &
595 sab_aux_fit_vs_orb, matrix_s_aux_fit, matrix_s_aux_fit_kp, matrix_s_aux_fit_vs_orb, matrix_s_aux_fit_vs_orb_kp, &
596 task_list_aux_fit, matrix_ks_aux_fit, matrix_ks_aux_fit_kp, matrix_ks_aux_fit_im, &
597 matrix_ks_aux_fit_dft, matrix_ks_aux_fit_hfx, matrix_ks_aux_fit_dft_kp, matrix_ks_aux_fit_hfx_kp, rho_aux_fit, &
598 rho_aux_fit_buffer, admm_dm)
600 TYPE(
admm_type),
INTENT(IN),
POINTER :: admm_env
601 TYPE(
cp_fm_type),
DIMENSION(:),
OPTIONAL,
POINTER :: mo_derivs_aux_fit
602 TYPE(
mo_set_type),
DIMENSION(:),
OPTIONAL,
POINTER :: mos_aux_fit
604 OPTIONAL,
POINTER :: sab_aux_fit, sab_aux_fit_asymm, &
607 POINTER :: matrix_s_aux_fit
609 POINTER :: matrix_s_aux_fit_kp
611 POINTER :: matrix_s_aux_fit_vs_orb
613 POINTER :: matrix_s_aux_fit_vs_orb_kp
616 POINTER :: matrix_ks_aux_fit
618 POINTER :: matrix_ks_aux_fit_kp
620 POINTER :: matrix_ks_aux_fit_im, &
621 matrix_ks_aux_fit_dft, &
622 matrix_ks_aux_fit_hfx
624 POINTER :: matrix_ks_aux_fit_dft_kp, &
625 matrix_ks_aux_fit_hfx_kp
626 TYPE(
qs_rho_type),
OPTIONAL,
POINTER :: rho_aux_fit, rho_aux_fit_buffer
629 cpassert(
ASSOCIATED(admm_env))
631 IF (
PRESENT(mo_derivs_aux_fit)) mo_derivs_aux_fit => admm_env%mo_derivs_aux_fit
632 IF (
PRESENT(mos_aux_fit)) mos_aux_fit => admm_env%mos_aux_fit
633 IF (
PRESENT(sab_aux_fit)) sab_aux_fit => admm_env%sab_aux_fit
634 IF (
PRESENT(sab_aux_fit_asymm)) sab_aux_fit_asymm => admm_env%sab_aux_fit_asymm
635 IF (
PRESENT(sab_aux_fit_vs_orb)) sab_aux_fit_vs_orb => admm_env%sab_aux_fit_vs_orb
636 IF (
PRESENT(task_list_aux_fit)) task_list_aux_fit => admm_env%task_list_aux_fit
637 IF (
PRESENT(matrix_ks_aux_fit_im)) matrix_ks_aux_fit_im => admm_env%matrix_ks_aux_fit_im
638 IF (
PRESENT(rho_aux_fit)) rho_aux_fit => admm_env%rho_aux_fit
639 IF (
PRESENT(rho_aux_fit_buffer)) rho_aux_fit_buffer => admm_env%rho_aux_fit_buffer
640 IF (
PRESENT(admm_dm)) admm_dm => admm_env%admm_dm
642 IF (
PRESENT(matrix_ks_aux_fit)) matrix_ks_aux_fit =>
get_1d_pointer(admm_env%matrix_ks_aux_fit)
643 IF (
PRESENT(matrix_ks_aux_fit_kp)) matrix_ks_aux_fit_kp =>
get_2d_pointer(admm_env%matrix_ks_aux_fit)
644 IF (
PRESENT(matrix_ks_aux_fit_dft)) matrix_ks_aux_fit_dft =>
get_1d_pointer(admm_env%matrix_ks_aux_fit_dft)
645 IF (
PRESENT(matrix_ks_aux_fit_dft_kp)) matrix_ks_aux_fit_dft_kp =>
get_2d_pointer(admm_env%matrix_ks_aux_fit_dft)
646 IF (
PRESENT(matrix_ks_aux_fit_hfx)) matrix_ks_aux_fit_hfx =>
get_1d_pointer(admm_env%matrix_ks_aux_fit_hfx)
647 IF (
PRESENT(matrix_ks_aux_fit_hfx_kp)) matrix_ks_aux_fit_hfx_kp =>
get_2d_pointer(admm_env%matrix_ks_aux_fit_hfx)
648 IF (
PRESENT(matrix_s_aux_fit)) matrix_s_aux_fit =>
get_1d_pointer(admm_env%matrix_s_aux_fit)
649 IF (
PRESENT(matrix_s_aux_fit_kp)) matrix_s_aux_fit_kp =>
get_2d_pointer(admm_env%matrix_s_aux_fit)
650 IF (
PRESENT(matrix_s_aux_fit_vs_orb)) matrix_s_aux_fit_vs_orb =>
get_1d_pointer(admm_env%matrix_s_aux_fit_vs_orb)
651 IF (
PRESENT(matrix_s_aux_fit_vs_orb_kp)) matrix_s_aux_fit_vs_orb_kp =>
get_2d_pointer(admm_env%matrix_s_aux_fit_vs_orb)
678 SUBROUTINE set_admm_env(admm_env, mo_derivs_aux_fit, mos_aux_fit, sab_aux_fit, sab_aux_fit_asymm, &
679 sab_aux_fit_vs_orb, matrix_s_aux_fit, matrix_s_aux_fit_kp, matrix_s_aux_fit_vs_orb, matrix_s_aux_fit_vs_orb_kp, &
680 task_list_aux_fit, matrix_ks_aux_fit, matrix_ks_aux_fit_kp, matrix_ks_aux_fit_im, &
681 matrix_ks_aux_fit_dft, matrix_ks_aux_fit_hfx, matrix_ks_aux_fit_dft_kp, matrix_ks_aux_fit_hfx_kp, rho_aux_fit, &
682 rho_aux_fit_buffer, admm_dm)
684 TYPE(
admm_type),
INTENT(INOUT),
POINTER :: admm_env
685 TYPE(
cp_fm_type),
DIMENSION(:),
OPTIONAL,
POINTER :: mo_derivs_aux_fit
686 TYPE(
mo_set_type),
DIMENSION(:),
OPTIONAL,
POINTER :: mos_aux_fit
688 OPTIONAL,
POINTER :: sab_aux_fit, sab_aux_fit_asymm, &
691 POINTER :: matrix_s_aux_fit
693 POINTER :: matrix_s_aux_fit_kp
695 POINTER :: matrix_s_aux_fit_vs_orb
697 POINTER :: matrix_s_aux_fit_vs_orb_kp
700 POINTER :: matrix_ks_aux_fit
702 POINTER :: matrix_ks_aux_fit_kp
704 POINTER :: matrix_ks_aux_fit_im, &
705 matrix_ks_aux_fit_dft, &
706 matrix_ks_aux_fit_hfx
708 POINTER :: matrix_ks_aux_fit_dft_kp, &
709 matrix_ks_aux_fit_hfx_kp
710 TYPE(
qs_rho_type),
OPTIONAL,
POINTER :: rho_aux_fit, rho_aux_fit_buffer
713 cpassert(
ASSOCIATED(admm_env))
715 IF (
PRESENT(mo_derivs_aux_fit)) admm_env%mo_derivs_aux_fit => mo_derivs_aux_fit
716 IF (
PRESENT(mos_aux_fit)) admm_env%mos_aux_fit => mos_aux_fit
717 IF (
PRESENT(sab_aux_fit)) admm_env%sab_aux_fit => sab_aux_fit
718 IF (
PRESENT(sab_aux_fit_asymm)) admm_env%sab_aux_fit_asymm => sab_aux_fit_asymm
719 IF (
PRESENT(sab_aux_fit_vs_orb)) admm_env%sab_aux_fit_vs_orb => sab_aux_fit_vs_orb
720 IF (
PRESENT(task_list_aux_fit)) admm_env%task_list_aux_fit => task_list_aux_fit
721 IF (
PRESENT(matrix_ks_aux_fit_im)) admm_env%matrix_ks_aux_fit_im => matrix_ks_aux_fit_im
722 IF (
PRESENT(rho_aux_fit)) admm_env%rho_aux_fit => rho_aux_fit
723 IF (
PRESENT(rho_aux_fit_buffer)) admm_env%rho_aux_fit_buffer => rho_aux_fit_buffer
724 IF (
PRESENT(admm_dm)) admm_env%admm_dm => admm_dm
726 IF (
PRESENT(matrix_ks_aux_fit))
CALL set_1d_pointer(admm_env%matrix_ks_aux_fit, matrix_ks_aux_fit)
727 IF (
PRESENT(matrix_ks_aux_fit_kp))
CALL set_2d_pointer(admm_env%matrix_ks_aux_fit, matrix_ks_aux_fit_kp)
728 IF (
PRESENT(matrix_ks_aux_fit_dft))
CALL set_1d_pointer(admm_env%matrix_ks_aux_fit_dft, matrix_ks_aux_fit_dft)
729 IF (
PRESENT(matrix_ks_aux_fit_dft_kp))
CALL set_2d_pointer(admm_env%matrix_ks_aux_fit_dft, matrix_ks_aux_fit_dft_kp)
730 IF (
PRESENT(matrix_ks_aux_fit_hfx))
CALL set_1d_pointer(admm_env%matrix_ks_aux_fit_hfx, matrix_ks_aux_fit)
731 IF (
PRESENT(matrix_ks_aux_fit_hfx_kp))
CALL set_2d_pointer(admm_env%matrix_ks_aux_fit_hfx, matrix_ks_aux_fit_hfx_kp)
732 IF (
PRESENT(matrix_s_aux_fit))
CALL set_1d_pointer(admm_env%matrix_s_aux_fit, matrix_s_aux_fit)
733 IF (
PRESENT(matrix_s_aux_fit_kp))
CALL set_2d_pointer(admm_env%matrix_s_aux_fit, matrix_s_aux_fit_kp)
734 IF (
PRESENT(matrix_s_aux_fit_vs_orb))
CALL set_1d_pointer(admm_env%matrix_s_aux_fit_vs_orb, matrix_s_aux_fit_vs_orb)
735 IF (
PRESENT(matrix_s_aux_fit_vs_orb_kp))
CALL set_2d_pointer(admm_env%matrix_s_aux_fit_vs_orb, matrix_s_aux_fit_vs_orb_kp)