63 TYPE(
mp2_type),
INTENT(INOUT) :: mp2_env
65 CHARACTER(len=*),
PARAMETER :: routinen =
'read_mp2_section'
67 CHARACTER(LEN=default_string_length), &
68 DIMENSION(:),
POINTER :: string_pointer
69 CHARACTER(LEN=max_line_length) :: error_message
70 INTEGER :: gw_sc, handle, i, i_special_kp, ival, &
71 print_level_nto_analysis, unit_nr
72 INTEGER,
DIMENSION(:),
POINTER :: tmplist
73 LOGICAL :: do_mp2, do_opt_ri_basis, do_ri_mp2, &
75 REAL(kind=
dp),
DIMENSION(:),
POINTER :: r_vals
78 eri_mme_section, gw_section, &
79 low_scaling_section, mp2_section
81 CALL timeset(routinen, handle)
99 CALL check_method(mp2_env%method)
106 CALL section_vals_val_get(mp2_section,
"RI_RPA%SIGMA_FUNCTIONAL", i_val=mp2_env%ri_rpa%sigma_param)
109 CALL check_method(mp2_env%method)
112 CALL section_vals_val_get(mp2_section,
"RI_RPA%RPA_NUM_QUAD_POINTS", i_val=mp2_env%ri_rpa%rpa_num_quad_points)
113 CALL section_vals_val_get(mp2_section,
"RI_RPA%NUM_INTEG_GROUPS", i_val=mp2_env%ri_rpa%rpa_num_integ_groups)
115 CALL section_vals_val_get(mp2_section,
"RI_RPA%MINIMAX_QUADRATURE", l_val=mp2_env%ri_rpa%minimax_quad)
118 mp2_env%ri_rpa%reuse_hfx = .false.
121 i_val=mp2_env%ri_rpa%exchange_correction)
123 i_val=mp2_env%ri_rpa%exchange_block_size)
125 l_val=mp2_env%ri_rpa%use_hfx_implementation)
129 CALL section_vals_val_get(mp2_section,
"RI_RPA%PRINT_DGEMM_INFO", l_val=mp2_env%ri_rpa%print_dgemm_info)
134 l_val=mp2_env%ri_rpa%do_ri_g0w0)
138 i_val=mp2_env%ri_g0w0%corr_mos_occ)
140 i_val=mp2_env%ri_g0w0%corr_mos_virt)
142 i_val=mp2_env%ri_g0w0%num_poles)
144 i_val=mp2_env%ri_g0w0%nparam_pade)
146 i_val=mp2_env%ri_g0w0%analytic_continuation)
148 r_val=mp2_env%ri_g0w0%omega_max_fit)
150 i_val=mp2_env%ri_g0w0%crossing_search)
152 r_val=mp2_env%ri_g0w0%fermi_level_offset)
154 l_val=mp2_env%ri_g0w0%do_hedin_shift)
156 i_val=mp2_env%ri_g0w0%iter_evGW)
157 IF (gw_sc ==
evgw) mp2_env%ri_g0w0%iter_evGW = 10
159 i_val=mp2_env%ri_g0w0%iter_sc_GW0)
160 IF (gw_sc ==
evgw0) mp2_env%ri_g0w0%iter_sc_GW0 = 10
162 r_val=mp2_env%ri_g0w0%eps_iter)
164 i_val=mp2_env%ri_g0w0%print_exx)
166 l_val=mp2_env%ri_g0w0%print_self_energy)
168 l_val=mp2_env%ri_g0w0%do_ri_Sigma_x)
173 ALLOCATE (mp2_env%ri_g0w0%ic_corr_list(1)%array(
SIZE(r_vals)))
174 mp2_env%ri_g0w0%ic_corr_list(1)%array(:) = r_vals(:)
178 ALLOCATE (mp2_env%ri_g0w0%ic_corr_list(2)%array(
SIZE(r_vals)))
179 mp2_env%ri_g0w0%ic_corr_list(2)%array(:) = r_vals(:)
181 l_val=mp2_env%ri_g0w0%do_gamma_only_sigma)
183 l_val=mp2_env%ri_g0w0%update_xc_energy)
185 r_val=mp2_env%ri_g0w0%regularization_minimax)
187 i_val=mp2_env%ri_g0w0%soc_type)
189 r_val=mp2_env%ri_g0w0%soc_energy_window)
191 NULLIFY (bse_section)
194 l_val=mp2_env%bse%do_bse)
196 i_val=mp2_env%bse%bse_spin_config)
198 r_val=mp2_env%bse%bse_cutoff_occ)
200 r_val=mp2_env%bse%bse_cutoff_empty)
202 i_val=mp2_env%bse%num_print_exc)
204 i_val=mp2_env%bse%num_print_exc_descr)
206 l_val=mp2_env%bse%print_directional_exc_descr)
208 r_val=mp2_env%bse%eps_x)
210 i_val=mp2_env%bse%davidson_abort_cond)
212 i_val=mp2_env%bse%num_exc_en)
214 i_val=mp2_env%bse%num_add_start_z_space)
216 i_val=mp2_env%bse%fac_max_z_space)
218 i_val=mp2_env%bse%num_new_t)
220 r_val=mp2_env%bse%eps_res)
222 r_val=mp2_env%bse%eps_exc_en)
224 i_val=mp2_env%bse%num_davidson_iter)
226 r_val=mp2_env%bse%z_space_energy_cutoff)
228 i_val=mp2_env%bse%bse_diag_method)
230 i_val=mp2_env%bse%flag_tda)
232 l_val=mp2_env%bse%use_ks_energies)
234 i_val=mp2_env%bse%screening_method)
236 r_val=mp2_env%bse%screening_factor)
238 l_val=mp2_env%bse%bse_debug_print)
240 l_val=mp2_env%bse%bse_print_spectrum)
242 r_val=mp2_env%bse%bse_spectrum_freq_step_size)
244 r_val=mp2_env%bse%bse_spectrum_freq_start)
246 r_val=mp2_env%bse%bse_spectrum_freq_end)
248 r_vals=mp2_env%bse%bse_eta_spectrum_list)
250 i_val=print_level_nto_analysis)
254 mp2_env%bse%do_nto_analysis = .true.
256 mp2_env%bse%do_nto_analysis = .false.
259 r_val=mp2_env%bse%eps_nto_eigval)
261 r_val=mp2_env%bse%eps_nto_osc_str)
263 i_val=mp2_env%bse%num_print_exc_ntos)
265 explicit=mp2_env%bse%explicit_nto_list)
266 IF (mp2_env%bse%explicit_nto_list)
THEN
268 i_vals=mp2_env%bse%bse_nto_state_list)
272 l_val=mp2_env%ri_g0w0%do_ic_model)
274 l_val=mp2_env%ri_g0w0%print_ic_values)
276 r_val=mp2_env%ri_g0w0%eps_dist)
279 l_val=mp2_env%ri_g0w0%do_periodic)
281 i_vals=mp2_env%ri_g0w0%kp_grid)
283 i_val=mp2_env%ri_g0w0%num_kp_grids)
285 r_val=mp2_env%ri_g0w0%eps_kpoint)
287 l_val=mp2_env%ri_g0w0%do_mo_coeff_gamma)
288 CALL section_vals_val_get(mp2_section,
"RI_RPA%GW%PERIODIC_CORRECTION%AVERAGE_DEGENERATE_LEVELS", &
289 l_val=mp2_env%ri_g0w0%do_average_deg_levels)
291 r_val=mp2_env%ri_g0w0%eps_eigenval)
293 l_val=mp2_env%ri_g0w0%do_extra_kpoints)
295 l_val=mp2_env%ri_g0w0%do_aux_bas_gw)
297 r_val=mp2_env%ri_g0w0%frac_aux_mos)
299 i_val=mp2_env%ri_g0w0%num_omega_points)
302 i_val=mp2_env%ri_g0w0%n_kp_in_kp_line)
304 n_rep_val=mp2_env%ri_g0w0%n_special_kp)
305 ALLOCATE (mp2_env%ri_g0w0%xkp_special_kp(3, mp2_env%ri_g0w0%n_special_kp))
306 DO i_special_kp = 1, mp2_env%ri_g0w0%n_special_kp
308 i_rep_val=i_special_kp, c_vals=string_pointer)
309 cpassert(
SIZE(string_pointer(:), 1) == 3)
312 mp2_env%ri_g0w0%xkp_special_kp(i, i_special_kp), &
314 IF (len_trim(error_message) > 0) cpabort(trim(error_message))
319 i_vals=mp2_env%ri_g0w0%kp_grid_Sigma)
322 r_val=mp2_env%ri_g0w0%dos_lower)
324 r_val=mp2_env%ri_g0w0%dos_upper)
326 r_val=mp2_env%ri_g0w0%dos_prec)
328 i_val=mp2_env%ri_g0w0%dos_min)
330 i_val=mp2_env%ri_g0w0%dos_max)
332 i_val=mp2_env%ri_g0w0%min_level_self_energy)
334 i_val=mp2_env%ri_g0w0%max_level_self_energy)
336 r_val=mp2_env%ri_g0w0%dos_eta)
338 mp2_env%ri_g0w0%do_kpoints_Sigma = mp2_env%ri_g0w0%n_special_kp > 0 .OR. &
339 mp2_env%ri_g0w0%kp_grid_Sigma(1)* &
340 mp2_env%ri_g0w0%kp_grid_Sigma(2)* &
341 mp2_env%ri_g0w0%kp_grid_Sigma(3) > 0
344 mp2_section,
"RI_RPA%GW%PRINT%LOCAL_BANDGAP"), &
347 r_val=mp2_env%ri_g0w0%energy_window_print_loc_bandgap)
349 r_val=mp2_env%ri_g0w0%energy_spacing_print_loc_bandgap)
351 r_val=mp2_env%ri_g0w0%ldos_thresh_print_loc_bandgap)
353 i_vals=mp2_env%ri_g0w0%stride_loc_bandgap)
355 NULLIFY (low_scaling_section)
358 l_val=mp2_env%do_im_time)
360 CALL section_vals_val_get(low_scaling_section,
"MEMORY_CUT", i_val=mp2_env%ri_rpa_im_time%cut_memory)
361 CALL section_vals_val_get(low_scaling_section,
"MEMORY_INFO", l_val=mp2_env%ri_rpa_im_time%memory_info)
362 CALL section_vals_val_get(low_scaling_section,
"EPS_FILTER", r_val=mp2_env%ri_rpa_im_time%eps_filter)
363 CALL section_vals_val_get(low_scaling_section,
"EPS_STORAGE_SCALING", r_val=mp2_env%ri_rpa_im_time%eps_compress)
364 mp2_env%ri_rpa_im_time%eps_compress = mp2_env%ri_rpa_im_time%eps_compress*mp2_env%ri_rpa_im_time%eps_filter
365 mp2_env%ri_rpa_im_time%eps_compress = max(mp2_env%ri_rpa_im_time%eps_compress, 1.0e-16_dp)
366 CALL section_vals_val_get(low_scaling_section,
"EPS_FILTER_FACTOR", r_val=mp2_env%ri_rpa_im_time%eps_filter_factor)
369 l_val=mp2_env%ri_rpa_im_time%do_im_time_kpoints)
371 i_vals=mp2_env%ri_rpa_im_time%kp_grid)
372 mp2_env%ri_rpa_im_time%do_kpoints_from_Gamma = sum(mp2_env%ri_rpa_im_time%kp_grid) > 0
373 IF (mp2_env%ri_rpa_im_time%do_kpoints_from_Gamma)
THEN
374 cpassert(mp2_env%ri_g0w0%do_kpoints_Sigma)
377 i_val=mp2_env%ri_rpa_im_time%kpoint_weights_W_method)
379 r_val=mp2_env%ri_rpa_im_time%exp_tailored_weights)
381 r_val=mp2_env%ri_rpa_im_time%regularization_RI)
383 r_val=mp2_env%ri_rpa_im_time%eps_eigval_S)
385 r_val=mp2_env%ri_rpa_im_time%eps_eigval_S_Gamma)
387 l_val=mp2_env%ri_rpa_im_time%make_chi_pos_definite)
389 l_val=mp2_env%ri_rpa_im_time%make_overlap_mat_ao_pos_definite)
391 l_val=mp2_env%ri_rpa_im_time%trunc_coulomb_ri_x)
393 l_val=mp2_env%ri_rpa_im_time%do_extrapolate_kpoints)
395 r_val=mp2_env%ri_rpa_im_time%rel_cutoff_trunc_coulomb_ri_x)
397 i_val=mp2_env%ri_rpa_im_time%k_mesh_g_factor)
400 l_val=mp2_env%ri_rpa_im_time%keep_quad)
401 NULLIFY (mp2_env%ri_rpa_im_time%tau_tj)
402 NULLIFY (mp2_env%ri_rpa_im_time%tau_wj)
403 NULLIFY (mp2_env%ri_rpa_im_time%tj)
404 NULLIFY (mp2_env%ri_rpa_im_time%wj)
405 NULLIFY (mp2_env%ri_rpa_im_time%weights_cos_tf_t_to_w)
406 NULLIFY (mp2_env%ri_rpa_im_time%weights_cos_tf_w_to_t)
409 i_val=mp2_env%ri_rpa_im_time%min_bsize)
412 i_val=mp2_env%ri_rpa_im_time%min_bsize_mo)
415 IF (do_ri_sos_mp2)
THEN
416 CALL check_method(mp2_env%method)
419 CALL section_vals_val_get(mp2_section,
"RI_SOS_MP2%QUADRATURE_POINTS", i_val=mp2_env%ri_laplace%n_quadrature)
420 CALL section_vals_val_get(mp2_section,
"RI_SOS_MP2%NUM_INTEG_GROUPS", i_val=mp2_env%ri_laplace%num_integ_groups)
424 CALL check_method(mp2_env%method)
428 CALL section_vals_val_get(mp2_section,
"RI_MP2%NUMBER_INTEGRATION_GROUPS", i_val=mp2_env%ri_mp2%number_integration_groups)
429 CALL section_vals_val_get(mp2_section,
"RI_MP2%PRINT_DGEMM_INFO", l_val=mp2_env%ri_mp2%print_dgemm_info)
437 CALL section_vals_val_get(mp2_section,
"RI%RI_METRIC%POTENTIAL_TYPE", i_val=mp2_env%ri_metric%potential_type)
440 CALL section_vals_val_get(mp2_section,
"RI%RI_METRIC%CUTOFF_RADIUS", r_val=mp2_env%ri_metric%cutoff_radius)
441 CALL section_vals_val_get(mp2_section,
"RI%RI_METRIC%T_C_G_DATA", c_val=mp2_env%ri_metric%filename)
443 CALL erfc_cutoff(mp2_env%eps_range, mp2_env%ri_metric%omega, mp2_env%ri_metric%cutoff_radius)
446 CALL section_vals_val_get(mp2_section,
"RI%OPT_RI_BASIS%_SECTION_PARAMETERS_", l_val=do_opt_ri_basis)
447 IF (do_opt_ri_basis)
THEN
448 CALL check_method(mp2_env%method)
452 r_val=mp2_env%ri_opt_param%DI_rel)
454 r_val=mp2_env%ri_opt_param%DRI)
456 r_val=mp2_env%ri_opt_param%eps_step)
458 i_val=mp2_env%ri_opt_param%max_num_iter)
460 i_val=mp2_env%ri_opt_param%basis_quality)
464 IF (tmplist(1) > 0)
THEN
465 ALLOCATE (mp2_env%ri_opt_param%RI_nset_per_l(0:
SIZE(tmplist) - 1))
466 mp2_env%ri_opt_param%RI_nset_per_l = 0
467 DO ival = 1,
SIZE(tmplist)
468 mp2_env%ri_opt_param%RI_nset_per_l(ival - 1) = tmplist(ival)
473 CALL section_vals_val_get(mp2_section,
"INTEGRALS%SIZE_LATTICE_SUM", i_val=mp2_env%mp2_gpw%size_lattice_sum)
474 CALL section_vals_val_get(mp2_section,
"INTEGRALS%WFC_GPW%EPS_FILTER", r_val=mp2_env%mp2_gpw%eps_filter)
475 CALL section_vals_val_get(mp2_section,
"INTEGRALS%WFC_GPW%EPS_GRID", r_val=mp2_env%mp2_gpw%eps_grid)
476 CALL section_vals_val_get(mp2_section,
"INTEGRALS%WFC_GPW%CUTOFF", r_val=mp2_env%mp2_gpw%cutoff)
477 CALL section_vals_val_get(mp2_section,
"INTEGRALS%WFC_GPW%REL_CUTOFF", r_val=mp2_env%mp2_gpw%relative_cutoff)
478 CALL section_vals_val_get(mp2_section,
"INTEGRALS%WFC_GPW%PRINT_LEVEL", i_val=mp2_env%mp2_gpw%print_level)
479 CALL section_vals_val_get(mp2_section,
"INTEGRALS%WFC_GPW%EPS_PGF_ORB_S", r_val=mp2_env%mp2_gpw%eps_pgf_orb_S)
481 i_val=mp2_env%potential_parameter%potential_type)
483 r_val=mp2_env%potential_parameter%cutoff_radius)
485 c_val=mp2_env%potential_parameter%filename)
487 r_val=mp2_env%potential_parameter%omega)
489 r_val=mp2_env%potential_parameter%scale_coulomb)
491 r_val=mp2_env%potential_parameter%scale_longrange)
493 NULLIFY (mp2_env%eri_mme_param)
494 ALLOCATE (mp2_env%eri_mme_param)
502 mp2_env%not_last_hfx = .true.
503 mp2_env%p_screen = .true.
506 CALL section_vals_val_get(mp2_section,
"CANONICAL_GRADIENTS%FREE_HFX_BUFFER", l_val=mp2_env%ri_grad%free_hfx_buffer)
507 CALL section_vals_val_get(mp2_section,
"CANONICAL_GRADIENTS%EPS_CANONICAL", r_val=mp2_env%ri_grad%eps_canonical)
508 CALL section_vals_val_get(mp2_section,
"CANONICAL_GRADIENTS%DOT_PRODUCT_BLKSIZE", i_val=mp2_env%ri_grad%dot_blksize)
509 CALL section_vals_val_get(mp2_section,
"CANONICAL_GRADIENTS%MAX_PARALLEL_COMM", i_val=mp2_env%ri_grad%max_parallel_comm)
511 IF (
ASSOCIATED(cphf_section))
THEN
514 CALL section_vals_val_get(cphf_section,
"SCALE_STEP_SIZE", r_val=mp2_env%ri_grad%scale_step_size)
517 CALL section_vals_val_get(cphf_section,
"ENFORCE_DECREASE", l_val=mp2_env%ri_grad%enforce_decrease)
518 CALL section_vals_val_get(cphf_section,
"RECALC_RESIDUAL", l_val=mp2_env%ri_grad%recalc_residual)
519 CALL section_vals_val_get(cphf_section,
"DO_POLAK_RIBIERE", l_val=mp2_env%ri_grad%polak_ribiere)
526 WRITE (unit_nr,
'(T2,A)')
""
527 SELECT CASE (mp2_env%method)
529 WRITE (unit_nr,
'(T2,A)')
"MP2| using direct canonical MP2"
531 WRITE (unit_nr,
'(T2,A)')
"MP2| using MP2 GPW style"
533 WRITE (unit_nr,
'(T2,A)')
"MP2| using RI-MP2-GPW"
535 WRITE (unit_nr,
'(T2,A)')
"RI-RPA| using GPW style"
537 WRITE (unit_nr,
'(T2,A)')
"RI-SOS-Laplace-MP2| using GPW style"
539 WRITE (unit_nr,
'(T2,A)')
"MP2| Optimize RI auxiliary basis"
543 WRITE (unit_nr,
'(T2,A)')
""
550 CALL timestop(handle)