39#include "./base/base_uses.f90"
45 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_tddfpt2_bse_utils'
47 LOGICAL,
PARAMETER,
PRIVATE :: debug_this_module = .false.
49 INTEGER,
PARAMETER,
PRIVATE :: nderivs = 3
50 INTEGER,
PARAMETER,
PRIVATE :: maxspins = 2
66 SUBROUTINE zeroth_order_gw(qs_env, Aop_evects, evects, S_evects, gs_mos, matrix_s, matrix_ks)
68 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(INOUT) :: aop_evects
69 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(IN) :: evects, s_evects
72 TYPE(
dbcsr_type),
INTENT(in),
POINTER :: matrix_s
73 TYPE(
dbcsr_p_type),
DIMENSION(:),
INTENT(in) :: matrix_ks
75 CHARACTER(LEN=*),
PARAMETER :: routinen =
'zeroth_order_gw'
77 INTEGER :: handle, i, ispin, ivect, j, nactive, &
78 nao, nmo, nspins, nvects, occ, virt
79 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: gw_occ, gw_virt
82 TYPE(
cp_fm_type) :: fms, hevec, matrixtmp, matrixtmp2, &
83 matrixtmp3, sweighted_vect, &
91 CALL timeset(routinen, handle)
93 NULLIFY (ex_env, sab_orb)
94 CALL get_qs_env(qs_env, exstate_env=ex_env, sab_orb=sab_orb)
96 nspins =
SIZE(matrix_ks, 1)
97 nspins =
SIZE(evects, 1)
98 nvects =
SIZE(evects, 2)
102 cpassert(.NOT.
ASSOCIATED(gs_mos(ispin)%evals_occ_matrix))
105 nmo =
SIZE(ex_env%gw_eigen)
106 CALL cp_fm_get_info(matrix=evects(ispin, 1), matrix_struct=matrix_struct, &
107 nrow_global=nao, ncol_global=nactive)
108 NULLIFY (blacs_env, para_env)
109 CALL get_qs_env(qs_env, para_env=para_env, blacs_env=blacs_env)
111 occ =
SIZE(gs_mos(ispin)%evals_occ)
112 nactive = gs_mos(ispin)%nmo_active
113 nmo =
SIZE(ex_env%gw_eigen)
114 virt =
SIZE(gs_mos(ispin)%evals_virt)
117 context=blacs_env, nrow_global=virt, ncol_global=virt)
123 context=blacs_env, nrow_global=virt, ncol_global=nao)
129 context=blacs_env, nrow_global=nao, ncol_global=nao)
137 CALL cp_fm_create(weighted_vect, gs_mos(ispin)%mos_virt%matrix_struct)
138 CALL cp_fm_create(sweighted_vect, gs_mos(ispin)%mos_virt%matrix_struct)
139 CALL cp_fm_to_fm(gs_mos(ispin)%mos_virt, weighted_vect)
142 ALLOCATE (gw_virt(virt))
143 ALLOCATE (gw_occ(nactive))
144 gw_virt(1:virt) = ex_env%gw_eigen(occ + 1:nmo)
146 j = gs_mos(ispin)%index_active(i)
147 gw_occ(i) = ex_env%gw_eigen(j)
155 CALL parallel_gemm(
'N',
'N', nao, virt, nao, 1.0_dp, fms, weighted_vect, 0.0_dp, sweighted_vect)
156 CALL parallel_gemm(
'N',
'T', virt, nao, virt, 1.0_dp, matrixtmp, sweighted_vect, 0.0_dp, matrixtmp2)
157 CALL parallel_gemm(
'N',
'N', nao, nao, virt, 1.0_dp, sweighted_vect, matrixtmp2, 0.0_dp, matrixtmp3)
164 CALL cp_fm_get_info(matrix=evects(ispin, 1), matrix_struct=matrix_struct, &
165 nrow_global=nao, ncol_global=nactive)
170 aop_evects(ispin, ivect), ncol=nactive, &
171 alpha=1.0_dp, beta=1.0_dp)
188 virt =
SIZE(aop_evects, 2)
189 CALL timestop(handle)
203 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(INOUT) :: aop_evects
204 TYPE(
cp_fm_type),
DIMENSION(:, :),
INTENT(IN) :: evects
209 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_bse_debug'
211 INTEGER :: a_nao_col, a_virt_col, b_nao_col, c_virt_col, handle, i_occ_row, i_row_global, &
212 ii, iounit, ispin, ivect, j_col_global, j_occ_row, jj, k_occ_col, mu_col_global, nao, &
213 ncol_block, ncol_block_bse, ncol_block_cs, ncol_local, ncol_local_bse, ncol_local_cs, &
214 nrow_block, nrow_block_bse, nrow_block_cs, nrow_local, nrow_local_bse, nrow_local_cs, &
215 nspins, nvects, nvirt
216 INTEGER,
DIMENSION(2) :: nactive
217 INTEGER,
DIMENSION(:),
POINTER :: col_indices, col_indices_bse, &
218 col_indices_cs, row_indices, &
219 row_indices_bse, row_indices_cs
220 REAL(kind=
dp) :: alpha
221 REAL(kind=
dp),
CONTIGUOUS,
DIMENSION(:, :), &
222 POINTER :: my_block, my_bse_w_matrix_mo, my_csvirt
225 TYPE(
cp_fm_type) :: csvirt, fms, wxaoao, wxmat2, wxvirtao
236 CALL timeset(routinen, handle)
238 nspins =
SIZE(evects, 1)
239 nvects =
SIZE(evects, 2)
250 NULLIFY (ex_env, para_env, blacs_env, matrix_s)
251 CALL get_qs_env(qs_env, exstate_env=ex_env, para_env=para_env, blacs_env=blacs_env, &
255 context=blacs_env, nrow_global=nao, ncol_global=nao)
260 NULLIFY (bse_w_matrix_mo)
261 bse_w_matrix_mo => ex_env%bse_w_matrix_MO(1, 1)
265 NULLIFY (matrix_struct, fmstruct)
266 CALL cp_fm_get_info(matrix=evects(ispin, 1), matrix_struct=matrix_struct, &
267 nrow_global=nao, ncol_global=nactive(ispin))
268 nvirt =
SIZE(gs_mos(ispin)%evals_virt)
271 context=blacs_env, nrow_global=nvirt, ncol_global=nao)
276 context=blacs_env, nrow_global=nactive(ispin)*nactive(ispin), &
277 ncol_global=nvirt*nao)
283 context=blacs_env, nrow_global=nactive(ispin)*nactive(ispin), &
289 CALL parallel_gemm(
'T',
'N', nvirt, nao, nao, 1.0_dp, gs_mos(ispin)%mos_virt, fms, 0.0_dp, csvirt)
290 NULLIFY (row_indices, col_indices)
291 CALL cp_fm_get_info(matrix=wxvirtao, nrow_local=nrow_local, ncol_local=ncol_local, &
292 row_indices=row_indices, col_indices=col_indices, &
293 nrow_block=nrow_block, ncol_block=ncol_block, local_data=my_block)
294 CALL cp_fm_get_info(matrix=csvirt, nrow_local=nrow_local_cs, ncol_local=ncol_local_cs, &
295 row_indices=row_indices_cs, col_indices=col_indices_cs, &
296 nrow_block=nrow_block_cs, ncol_block=ncol_block_cs, local_data=my_csvirt)
297 CALL cp_fm_get_info(matrix=bse_w_matrix_mo, nrow_local=nrow_local_bse, ncol_local=ncol_local_bse, &
298 row_indices=row_indices_bse, col_indices=col_indices_bse, &
299 nrow_block=nrow_block_bse, ncol_block=ncol_block_bse, local_data=my_bse_w_matrix_mo)
303 DO ii = 1, nrow_local
304 i_row_global = row_indices(ii)
305 DO jj = 1, ncol_local
306 j_col_global = col_indices(jj)
308 i_occ_row = (i_row_global - 1)/nactive(ispin) + 1
309 j_occ_row = mod(i_row_global - 1, nactive(ispin)) + 1
310 a_virt_col = (j_col_global - 1)/nao + 1
311 b_nao_col = mod(j_col_global - 1, nao) + 1
313 DO c_virt_col = 1, nvirt
314 mu_col_global = (a_virt_col - 1)*nvirt + c_virt_col
316 wxvirtao%local_data(i_row_global, j_col_global) = wxvirtao%local_data(i_row_global, j_col_global) + &
317 bse_w_matrix_mo%local_data(i_row_global, mu_col_global)*csvirt%local_data(c_virt_col, b_nao_col)
323 NULLIFY (row_indices, col_indices)
324 CALL cp_fm_get_info(matrix=wxaoao, nrow_local=nrow_local, ncol_local=ncol_local, &
325 row_indices=row_indices, col_indices=col_indices, &
326 nrow_block=nrow_block, ncol_block=ncol_block)
329 DO ii = 1, nrow_local
330 i_row_global = row_indices(ii)
331 DO jj = 1, ncol_local
332 j_col_global = col_indices(jj)
334 i_occ_row = (i_row_global - 1)/nactive(ispin) + 1
335 j_occ_row = mod(i_row_global - 1, nactive(ispin)) + 1
336 a_nao_col = (j_col_global - 1)/nao + 1
337 b_nao_col = mod(j_col_global - 1, nao) + 1
339 DO k_occ_col = 1, nvirt
340 mu_col_global = (k_occ_col - 1)*nao + a_nao_col
342 wxaoao%local_data(i_row_global, j_col_global) = wxaoao%local_data(i_row_global, j_col_global) + &
343 wxvirtao%local_data(i_row_global, mu_col_global)*csvirt%local_data(k_occ_col, b_nao_col)
353 context=blacs_env, nrow_global=nao, ncol_global=nactive(ispin))
358 DO ii = 1, nrow_local
359 i_row_global = row_indices(ii)
360 DO jj = 1, ncol_local
361 j_col_global = col_indices(jj)
363 i_occ_row = (i_row_global - 1)/nactive(ispin) + 1
364 j_occ_row = mod(i_row_global - 1, nactive(ispin)) + 1
365 a_nao_col = (j_col_global - 1)/nao + 1
366 b_nao_col = mod(j_col_global - 1, nao) + 1
368 wxmat2%local_data(a_nao_col, i_occ_row) = wxmat2%local_data(a_nao_col, i_occ_row) + &
369 wxaoao%local_data(i_row_global, j_col_global)*evects(ispin, ivect)%local_data(b_nao_col, j_occ_row)
388 CALL timestop(handle)
402 TYPE(cp_fm_type),
DIMENSION(:, :),
INTENT(INOUT) :: aop_evects
403 TYPE(cp_fm_type),
DIMENSION(:, :),
INTENT(IN) :: evects
404 TYPE(tddfpt_ground_state_mos),
DIMENSION(:), &
406 TYPE(qs_environment_type),
POINTER :: qs_env
407 TYPE(cp_fm_type),
DIMENSION(:, :),
INTENT(IN) :: s_evects
409 CHARACTER(LEN=*),
PARAMETER :: routinen =
'tddfpt_apply_bse'
411 INTEGER :: handle, ispin, ivect, nao, nspins, &
413 INTEGER,
DIMENSION(2) :: nactive
414 REAL(kind=dp) :: alpha
415 REAL(kind=dp),
ALLOCATABLE,
DIMENSION(:) :: eigvec_entries, rho
416 TYPE(cp_blacs_env_type),
POINTER :: blacs_env
417 TYPE(cp_fm_struct_type),
POINTER :: fmstruct
418 TYPE(cp_fm_type) :: csvirt, evects_mo, evects_unsplit, fms, &
420 TYPE(cp_fm_type),
POINTER :: bse_a_matrix_mo
421 TYPE(dbcsr_p_type),
DIMENSION(:),
POINTER :: matrix_s
422 TYPE(excited_energy_type),
POINTER :: ex_env
423 TYPE(mp_para_env_type),
POINTER :: para_env
425 CALL timeset(routinen, handle)
427 nspins =
SIZE(evects, 1)
428 nvects =
SIZE(evects, 2)
434 CALL cp_fm_get_info(gs_mos(1)%mos_occ, nrow_global=nao)
436 CALL cp_fm_get_info(evects(ispin, 1), ncol_global=nactive(ispin))
439 NULLIFY (ex_env, para_env, blacs_env, matrix_s)
440 CALL get_qs_env(qs_env, exstate_env=ex_env, para_env=para_env, blacs_env=blacs_env, &
443 CALL cp_fm_struct_create(fmstruct=fmstruct, para_env=para_env, &
444 context=blacs_env, nrow_global=nao, ncol_global=nao)
445 CALL cp_fm_create(fms, fmstruct)
446 CALL cp_fm_struct_release(fmstruct)
447 CALL copy_dbcsr_to_fm(matrix_s(1)%matrix, fms)
449 NULLIFY (bse_a_matrix_mo)
450 bse_a_matrix_mo => ex_env%bse_a_matrix_MO(1, 1)
451 para_env => bse_a_matrix_mo%matrix_struct%para_env
456 CALL cp_fm_get_info(matrix=evects(ispin, 1), &
457 nrow_global=nao, ncol_global=nactive(ispin))
458 nvirt =
SIZE(gs_mos(ispin)%evals_virt)
460 CALL cp_fm_struct_create(fmstruct=fmstruct, para_env=para_env, &
461 context=blacs_env, nrow_global=nvirt, ncol_global=nao)
462 CALL cp_fm_create(csvirt, fmstruct)
463 CALL cp_fm_struct_release(fmstruct)
464 CALL parallel_gemm(
'T',
'N', nvirt, nao, nao, 1.0_dp, gs_mos(ispin)%mos_virt, &
468 CALL cp_fm_struct_create(fmstruct, para_env=para_env, context=blacs_env, &
469 nrow_global=nvirt, ncol_global=nactive(ispin))
470 CALL cp_fm_create(evects_mo, fmstruct)
471 CALL cp_fm_struct_release(fmstruct)
473 CALL cp_fm_struct_create(fmstruct, para_env=para_env, context=blacs_env, &
474 nrow_global=nvirt, ncol_global=nactive(ispin))
475 CALL cp_fm_create(rhosplit, fmstruct)
476 CALL cp_fm_struct_release(fmstruct)
478 CALL cp_fm_struct_create(fmstruct, para_env=para_env, context=blacs_env, &
479 nrow_global=nao, ncol_global=nactive(ispin))
480 CALL cp_fm_create(rhomu, fmstruct)
481 CALL cp_fm_struct_release(fmstruct)
483 CALL cp_fm_struct_create(fmstruct, para_env=para_env, context=blacs_env, &
484 nrow_global=nactive(ispin)*nvirt, ncol_global=1)
485 CALL cp_fm_create(evects_unsplit, fmstruct)
486 CALL cp_fm_struct_release(fmstruct)
489 CALL parallel_gemm(
"T",
"N", nvirt, nactive(ispin), nao, 1.0_dp, gs_mos(ispin)%mos_virt, &
490 s_evects(ispin, ivect), 0.0_dp, evects_mo)
492 CALL contract_bse(evects_mo, evects_unsplit, nactive(ispin), nvirt, eigvec_entries)
494 ALLOCATE (rho(nvirt*nactive(ispin)))
495 CALL cp_fm_matvec(bse_a_matrix_mo, eigvec_entries, rho, 1.0_dp, 0.0_dp)
497 CALL split_bse(rho, rhosplit, nvirt)
499 CALL parallel_gemm(
"T",
"N", nao, nactive(ispin), nvirt, 1.0_dp, csvirt, &
500 rhosplit, 0.0_dp, rhomu)
502 CALL cp_fm_scale_and_add(1.0_dp, aop_evects(ispin, ivect), 1.0_dp, rhomu)
504 CALL cp_fm_release(rhomu)
505 CALL cp_fm_release(csvirt)
506 CALL cp_fm_release(evects_mo)
507 CALL cp_fm_release(rhosplit)
508 CALL cp_fm_release(evects_unsplit)
510 DEALLOCATE (eigvec_entries)
515 CALL cp_fm_release(fms)
517 CALL timestop(handle)
529 SUBROUTINE contract_bse(evects_mo, evects_unsplit, nactive, nvirt, eigvec_entries)
530 TYPE(cp_fm_type),
INTENT(IN) :: evects_mo
531 TYPE(cp_fm_type),
INTENT(INOUT) :: evects_unsplit
532 INTEGER :: nactive, nvirt
533 REAL(kind=dp),
ALLOCATABLE,
DIMENSION(:) :: eigvec_entries
535 CHARACTER(LEN=*),
PARAMETER :: routinen =
'contract_bse'
537 INTEGER :: handle, jj
539 CALL timeset(routinen, handle)
541 ALLOCATE (eigvec_entries(nvirt*nactive))
543 CALL cp_fm_to_fm_submat(msource=evects_mo, mtarget=evects_unsplit, &
544 nrow=nvirt, ncol=1, s_firstrow=1, s_firstcol=jj, &
545 t_firstrow=(jj - 1)*nvirt + 1, t_firstcol=1)
547 CALL cp_fm_vectorssum(evects_unsplit, eigvec_entries,
"R")
549 CALL timestop(handle)
550 END SUBROUTINE contract_bse
558 SUBROUTINE split_bse(rho, rhosplit, nvirt)
559 REAL(kind=dp),
ALLOCATABLE,
DIMENSION(:), &
561 TYPE(cp_fm_type),
INTENT(INOUT) :: rhosplit
562 INTEGER,
INTENT(IN) :: nvirt
564 CHARACTER(LEN=*),
PARAMETER :: routinen =
'split_bse'
566 INTEGER :: handle, i_occ_row, ii, j_occ_row
568 CALL timeset(routinen, handle)
570 CALL cp_fm_set_all(rhosplit, 0.0_dp)
573 i_occ_row = (ii - 1)/nvirt + 1
574 j_occ_row = mod(ii - 1, nvirt) + 1
575 CALL cp_fm_set_element(rhosplit, j_occ_row, i_occ_row, rho(ii))
578 CALL timestop(handle)
579 END SUBROUTINE split_bse
methods related to the blacs parallel environment
subroutine, public dbcsr_set(matrix, alpha)
...
subroutine, public dbcsr_release(matrix)
...
Routines that link DBCSR and CP2K concepts together.
subroutine, public cp_dbcsr_alloc_block_from_nbl(matrix, sab_orb, desymmetrize)
allocate the blocks of a dbcsr based on the neighbor list
DBCSR operations in CP2K.
subroutine, public cp_dbcsr_sm_fm_multiply(matrix, fm_in, fm_out, ncol, alpha, beta)
multiply a dbcsr with a fm matrix
subroutine, public copy_dbcsr_to_fm(matrix, fm)
Copy a DBCSR matrix to a BLACS matrix.
subroutine, public copy_fm_to_dbcsr(fm, matrix, keep_sparsity)
Copy a BLACS matrix to a dbcsr matrix.
Basic linear algebra operations for full matrices.
subroutine, public cp_fm_column_scale(matrixa, scaling)
scales column i of matrix a with scaling(i)
subroutine, public cp_fm_scale_and_add(alpha, matrix_a, beta, matrix_b)
calc A <- alpha*A + beta*B optimized for alpha == 1.0 (just add beta*B) and beta == 0....
subroutine, public cp_fm_matvec(amat, xv, yv, alpha, beta)
Calculates yv = alpha*amat*xv + beta*yv where amat: fm matrix xv : vector replicated yv : vector repl...
represent the structure of a full matrix
subroutine, public cp_fm_struct_create(fmstruct, para_env, context, nrow_global, ncol_global, nrow_block, ncol_block, descriptor, first_p_pos, local_leading_dimension, template_fmstruct, square_blocks, force_block)
allocates and initializes a full matrix structure
subroutine, public cp_fm_struct_release(fmstruct)
releases a full matrix structure
represent a full matrix distributed on many processors
subroutine, public cp_fm_get_info(matrix, name, nrow_global, ncol_global, nrow_block, ncol_block, nrow_local, ncol_local, row_indices, col_indices, local_data, context, nrow_locals, ncol_locals, matrix_struct, para_env)
returns all kind of information about the full matrix
subroutine, public cp_fm_vectorssum(matrix, sum_array, dir)
summing up all the elements along the matrix's i-th index or
subroutine, public cp_fm_create(matrix, matrix_struct, name, use_sp, nrow, ncol, set_zero)
creates a new full matrix with the given structure
subroutine, public cp_fm_to_fm_submat(msource, mtarget, nrow, ncol, s_firstrow, s_firstcol, t_firstrow, t_firstcol)
copy just a part ot the matrix
subroutine, public cp_fm_set_all(matrix, alpha, beta)
set all elements of a matrix to the same value, and optionally the diagonal to a different one
subroutine, public cp_fm_set_element(matrix, irow_global, icol_global, alpha)
sets an element of a matrix
subroutine, public cp_fm_write_formatted(fm, unit, header, value_format)
Write out a full matrix in plain text.
various routines to log and control the output. The idea is that decisions about where to log should ...
integer function, public cp_logger_get_default_io_unit(logger)
returns the unit nr for the ionode (-1 on all other processors) skips as well checks if the procs cal...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
Types for excited states potential energies.
Defines the basic variable types.
integer, parameter, public dp
Interface to the message passing library MPI.
basic linear algebra operations for full matrixes
subroutine, public get_qs_env(qs_env, atomic_kind_set, qs_kind_set, cell, super_cell, cell_ref, use_ref_cell, kpoints, dft_control, mos, sab_orb, sab_all, qmmm, qmmm_periodic, mimic, sac_ae, sac_ppl, sac_lri, sap_ppnl, sab_vdw, sab_scp, sap_oce, sab_lrc, sab_se, sab_xtbe, sab_tbe, sab_core, sab_xb, sab_xtb_pp, sab_xtb_nonbond, sab_almo, sab_kp, sab_kp_nosym, sab_cneo, particle_set, energy, force, matrix_h, matrix_h_im, matrix_ks, matrix_ks_im, matrix_vxc, run_rtp, rtp, matrix_h_kp, matrix_h_im_kp, matrix_ks_kp, matrix_ks_im_kp, matrix_vxc_kp, kinetic_kp, matrix_s_kp, matrix_w_kp, matrix_s_ri_aux_kp, matrix_s, matrix_s_ri_aux, matrix_w, matrix_p_mp2, matrix_p_mp2_admm, rho, rho_xc, pw_env, ewald_env, ewald_pw, active_space, mpools, input, para_env, blacs_env, scf_control, rel_control, kinetic, qs_charges, vppl, xcint_weights, rho_core, rho_nlcc, rho_nlcc_g, ks_env, ks_qmmm_env, wf_history, scf_env, local_particles, local_molecules, distribution_2d, dbcsr_dist, molecule_kind_set, molecule_set, subsys, cp_subsys, oce, local_rho_set, rho_atom_set, task_list, task_list_soft, rho0_atom_set, rho0_mpole, rhoz_set, rhoz_cneo_set, ecoul_1c, rho0_s_rs, rho0_s_gs, rhoz_cneo_s_rs, rhoz_cneo_s_gs, do_kpoints, has_unit_metric, requires_mo_derivs, mo_derivs, mo_loc_history, nkind, natom, nelectron_total, nelectron_spin, efield, neighbor_list_id, linres_control, xas_env, virial, cp_ddapc_env, cp_ddapc_ewald, outer_scf_history, outer_scf_ihistory, x_data, et_coupling, dftb_potential, results, se_taper, se_store_int_env, se_nddo_mpole, se_nonbond_env, admm_env, lri_env, lri_density, exstate_env, ec_env, harris_env, dispersion_env, gcp_env, vee, rho_external, external_vxc, mask, mp2_env, bs_env, kg_env, wanniercentres, atprop, ls_scf_env, do_transport, transport_env, v_hartree_rspace, s_mstruct_changed, rho_changed, potential_changed, forces_up_to_date, mscfg_env, almo_scf_env, gradient_history, variable_history, embed_pot, spin_embed_pot, polar_env, mos_last_converged, eeq, rhs, do_rixs, tb_tblite)
Get the QUICKSTEP environment.
Define the neighbor list data types and the corresponding functionality.
subroutine, public zeroth_order_gw(qs_env, aop_evects, evects, s_evects, gs_mos, matrix_s, matrix_ks)
...
subroutine, public tddfpt_apply_bse(aop_evects, evects, gs_mos, qs_env, s_evects)
...
subroutine, public tddfpt_apply_bse_debug(aop_evects, evects, gs_mos, qs_env)
Update action of TDDFPT operator on trial vectors by adding BSE W term.
represent a blacs multidimensional parallel environment (for the mpi corrispective see cp_paratypes/m...
keeps the information about the structure of a full matrix
type of a logger, at the moment it contains just a print level starting at which level it should be l...
Contains information on the excited states energy.
stores all the informations relevant to an mpi environment
Ground state molecular orbitals.