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()
162 TYPE(eigvals_p_type),
DIMENSION(:), &
…
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
167 REAL(kind=
dp) :: gsi(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.
172 LOGICAL :: charge_constrain = .false., do_admmp = .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.
388 admm_env%do_admmq = .true.
390 admm_env%do_admms = .true.
395 ALLOCATE (admm_env%block_map(natoms, natoms))
396 admm_env%block_map(:, :) = 0
397 DO iblock = 1,
SIZE(admm_control%blocks)
398 DO i = 1,
SIZE(admm_control%blocks(iblock)%list)
399 iatom = admm_control%blocks(iblock)%list(i)
400 DO j = 1,
SIZE(admm_control%blocks(iblock)%list)
401 jatom = admm_control%blocks(iblock)%list(j)
402 admm_env%block_map(iatom, jatom) = 1
408 NULLIFY (admm_env%admm_gapw_env)
409 admm_env%do_gapw = .false.
411 NULLIFY (admm_env%mos_aux_fit, admm_env%sab_aux_fit, admm_env%sab_aux_fit_asymm, admm_env%sab_aux_fit_vs_orb)
412 NULLIFY (admm_env%matrix_ks_aux_fit_im)
413 NULLIFY (admm_env%rho_aux_fit, admm_env%rho_aux_fit_buffer, admm_env%task_list_aux_fit, admm_env%mo_derivs_aux_fit)
431 cpassert(
ASSOCIATED(admm_env))
449 DEALLOCATE (admm_env%S, admm_env%S_inv, admm_env%Q, admm_env%A, admm_env%B, &
450 admm_env%work_orb_orb, admm_env%work_orb_orb2, admm_env%work_orb_orb3, &
451 admm_env%work_aux_orb, admm_env%work_aux_orb2, admm_env%work_aux_orb3, &
452 admm_env%work_aux_aux, admm_env%work_aux_aux2, admm_env%work_aux_aux3, &
453 admm_env%work_aux_aux4, admm_env%work_aux_aux5)
477 DO ispin = 1,
SIZE(admm_env%eigvals_lambda)
478 DEALLOCATE (admm_env%eigvals_lambda(ispin)%eigvals%data)
479 DEALLOCATE (admm_env%eigvals_P_to_be_purified(ispin)%eigvals%data)
480 DEALLOCATE (admm_env%eigvals_lambda(ispin)%eigvals)
481 DEALLOCATE (admm_env%eigvals_P_to_be_purified(ispin)%eigvals)
483 DEALLOCATE (admm_env%eigvals_lambda)
484 DEALLOCATE (admm_env%eigvals_P_to_be_purified)
486 IF (
ASSOCIATED(admm_env%block_map)) &
487 DEALLOCATE (admm_env%block_map)
489 IF (
ASSOCIATED(admm_env%xc_section_primary)) &
491 IF (
ASSOCIATED(admm_env%xc_section_aux)) &
494 IF (
ASSOCIATED(admm_env%admm_gapw_env))
CALL admm_gapw_env_release(admm_env%admm_gapw_env)
495 IF (
ASSOCIATED(admm_env%admm_dm))
CALL admm_dm_release(admm_env%admm_dm)
497 IF (
ASSOCIATED(admm_env%mos_aux_fit))
THEN
498 DO ispin = 1,
SIZE(admm_env%mos_aux_fit)
501 DEALLOCATE (admm_env%mos_aux_fit)
505 IF (
ASSOCIATED(admm_env%scf_work_aux_fit))
THEN
521 IF (
ASSOCIATED(admm_env%rho_aux_fit))
THEN
523 DEALLOCATE (admm_env%rho_aux_fit)
525 IF (
ASSOCIATED(admm_env%rho_aux_fit_buffer))
THEN
527 DEALLOCATE (admm_env%rho_aux_fit_buffer)
530 IF (
ASSOCIATED(admm_env%task_list_aux_fit))
CALL deallocate_task_list(admm_env%task_list_aux_fit)
532 DEALLOCATE (admm_env)
588 SUBROUTINE get_admm_env(admm_env, mo_derivs_aux_fit, mos_aux_fit, sab_aux_fit, sab_aux_fit_asymm, &
589 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, &
590 task_list_aux_fit, matrix_ks_aux_fit, matrix_ks_aux_fit_kp, matrix_ks_aux_fit_im, &
591 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, &
592 rho_aux_fit_buffer, admm_dm)
594 TYPE(
admm_type),
INTENT(IN),
POINTER :: admm_env
595 TYPE(
cp_fm_type),
DIMENSION(:),
OPTIONAL,
POINTER :: mo_derivs_aux_fit
596 TYPE(
mo_set_type),
DIMENSION(:),
OPTIONAL,
POINTER :: mos_aux_fit
598 OPTIONAL,
POINTER :: sab_aux_fit, sab_aux_fit_asymm, &
601 POINTER :: matrix_s_aux_fit
603 POINTER :: matrix_s_aux_fit_kp
605 POINTER :: matrix_s_aux_fit_vs_orb
607 POINTER :: matrix_s_aux_fit_vs_orb_kp
610 POINTER :: matrix_ks_aux_fit
612 POINTER :: matrix_ks_aux_fit_kp
614 POINTER :: matrix_ks_aux_fit_im, &
615 matrix_ks_aux_fit_dft, &
616 matrix_ks_aux_fit_hfx
618 POINTER :: matrix_ks_aux_fit_dft_kp, &
619 matrix_ks_aux_fit_hfx_kp
620 TYPE(
qs_rho_type),
OPTIONAL,
POINTER :: rho_aux_fit, rho_aux_fit_buffer
623 cpassert(
ASSOCIATED(admm_env))
625 IF (
PRESENT(mo_derivs_aux_fit)) mo_derivs_aux_fit => admm_env%mo_derivs_aux_fit
626 IF (
PRESENT(mos_aux_fit)) mos_aux_fit => admm_env%mos_aux_fit
627 IF (
PRESENT(sab_aux_fit)) sab_aux_fit => admm_env%sab_aux_fit
628 IF (
PRESENT(sab_aux_fit_asymm)) sab_aux_fit_asymm => admm_env%sab_aux_fit_asymm
629 IF (
PRESENT(sab_aux_fit_vs_orb)) sab_aux_fit_vs_orb => admm_env%sab_aux_fit_vs_orb
630 IF (
PRESENT(task_list_aux_fit)) task_list_aux_fit => admm_env%task_list_aux_fit
631 IF (
PRESENT(matrix_ks_aux_fit_im)) matrix_ks_aux_fit_im => admm_env%matrix_ks_aux_fit_im
632 IF (
PRESENT(rho_aux_fit)) rho_aux_fit => admm_env%rho_aux_fit
633 IF (
PRESENT(rho_aux_fit_buffer)) rho_aux_fit_buffer => admm_env%rho_aux_fit_buffer
634 IF (
PRESENT(admm_dm)) admm_dm => admm_env%admm_dm
636 IF (
PRESENT(matrix_ks_aux_fit)) matrix_ks_aux_fit =>
get_1d_pointer(admm_env%matrix_ks_aux_fit)
637 IF (
PRESENT(matrix_ks_aux_fit_kp)) matrix_ks_aux_fit_kp =>
get_2d_pointer(admm_env%matrix_ks_aux_fit)
638 IF (
PRESENT(matrix_ks_aux_fit_dft)) matrix_ks_aux_fit_dft =>
get_1d_pointer(admm_env%matrix_ks_aux_fit_dft)
639 IF (
PRESENT(matrix_ks_aux_fit_dft_kp)) matrix_ks_aux_fit_dft_kp =>
get_2d_pointer(admm_env%matrix_ks_aux_fit_dft)
640 IF (
PRESENT(matrix_ks_aux_fit_hfx)) matrix_ks_aux_fit_hfx =>
get_1d_pointer(admm_env%matrix_ks_aux_fit_hfx)
641 IF (
PRESENT(matrix_ks_aux_fit_hfx_kp)) matrix_ks_aux_fit_hfx_kp =>
get_2d_pointer(admm_env%matrix_ks_aux_fit_hfx)
642 IF (
PRESENT(matrix_s_aux_fit)) matrix_s_aux_fit =>
get_1d_pointer(admm_env%matrix_s_aux_fit)
643 IF (
PRESENT(matrix_s_aux_fit_kp)) matrix_s_aux_fit_kp =>
get_2d_pointer(admm_env%matrix_s_aux_fit)
644 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)
645 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)
672 SUBROUTINE set_admm_env(admm_env, mo_derivs_aux_fit, mos_aux_fit, sab_aux_fit, sab_aux_fit_asymm, &
673 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, &
674 task_list_aux_fit, matrix_ks_aux_fit, matrix_ks_aux_fit_kp, matrix_ks_aux_fit_im, &
675 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, &
676 rho_aux_fit_buffer, admm_dm)
678 TYPE(
admm_type),
INTENT(INOUT),
POINTER :: admm_env
679 TYPE(
cp_fm_type),
DIMENSION(:),
OPTIONAL,
POINTER :: mo_derivs_aux_fit
680 TYPE(
mo_set_type),
DIMENSION(:),
OPTIONAL,
POINTER :: mos_aux_fit
682 OPTIONAL,
POINTER :: sab_aux_fit, sab_aux_fit_asymm, &
685 POINTER :: matrix_s_aux_fit
687 POINTER :: matrix_s_aux_fit_kp
689 POINTER :: matrix_s_aux_fit_vs_orb
691 POINTER :: matrix_s_aux_fit_vs_orb_kp
694 POINTER :: matrix_ks_aux_fit
696 POINTER :: matrix_ks_aux_fit_kp
698 POINTER :: matrix_ks_aux_fit_im, &
699 matrix_ks_aux_fit_dft, &
700 matrix_ks_aux_fit_hfx
702 POINTER :: matrix_ks_aux_fit_dft_kp, &
703 matrix_ks_aux_fit_hfx_kp
704 TYPE(
qs_rho_type),
OPTIONAL,
POINTER :: rho_aux_fit, rho_aux_fit_buffer
707 cpassert(
ASSOCIATED(admm_env))
709 IF (
PRESENT(mo_derivs_aux_fit)) admm_env%mo_derivs_aux_fit => mo_derivs_aux_fit
710 IF (
PRESENT(mos_aux_fit)) admm_env%mos_aux_fit => mos_aux_fit
711 IF (
PRESENT(sab_aux_fit)) admm_env%sab_aux_fit => sab_aux_fit
712 IF (
PRESENT(sab_aux_fit_asymm)) admm_env%sab_aux_fit_asymm => sab_aux_fit_asymm
713 IF (
PRESENT(sab_aux_fit_vs_orb)) admm_env%sab_aux_fit_vs_orb => sab_aux_fit_vs_orb
714 IF (
PRESENT(task_list_aux_fit)) admm_env%task_list_aux_fit => task_list_aux_fit
715 IF (
PRESENT(matrix_ks_aux_fit_im)) admm_env%matrix_ks_aux_fit_im => matrix_ks_aux_fit_im
716 IF (
PRESENT(rho_aux_fit)) admm_env%rho_aux_fit => rho_aux_fit
717 IF (
PRESENT(rho_aux_fit_buffer)) admm_env%rho_aux_fit_buffer => rho_aux_fit_buffer
718 IF (
PRESENT(admm_dm)) admm_env%admm_dm => admm_dm
720 IF (
PRESENT(matrix_ks_aux_fit))
CALL set_1d_pointer(admm_env%matrix_ks_aux_fit, matrix_ks_aux_fit)
721 IF (
PRESENT(matrix_ks_aux_fit_kp))
CALL set_2d_pointer(admm_env%matrix_ks_aux_fit, matrix_ks_aux_fit_kp)
722 IF (
PRESENT(matrix_ks_aux_fit_dft))
CALL set_1d_pointer(admm_env%matrix_ks_aux_fit_dft, matrix_ks_aux_fit_dft)
723 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)
724 IF (
PRESENT(matrix_ks_aux_fit_hfx))
CALL set_1d_pointer(admm_env%matrix_ks_aux_fit_hfx, matrix_ks_aux_fit)
725 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)
726 IF (
PRESENT(matrix_s_aux_fit))
CALL set_1d_pointer(admm_env%matrix_s_aux_fit, matrix_s_aux_fit)
727 IF (
PRESENT(matrix_s_aux_fit_kp))
CALL set_2d_pointer(admm_env%matrix_s_aux_fit, matrix_s_aux_fit_kp)
728 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)
729 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)