56#include "./../base/base_uses.f90"
61 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'rt_projection_mo_utils'
77 INTEGER :: i_rep, j_td, n_rep_val, nbr_mo_td_max, &
79 INTEGER,
DIMENSION(:),
POINTER :: tmp_ints
85 NULLIFY (rtp_control%proj_mo_list, tmp_ints, proj_mo, logger, &
86 input, proj_mo_section, print_key, mos)
94 ALLOCATE (rtp_control%proj_mo_list(nrep))
97 NULLIFY (rtp_control%proj_mo_list(i_rep)%proj_mo)
98 ALLOCATE (rtp_control%proj_mo_list(i_rep)%proj_mo)
99 proj_mo => rtp_control%proj_mo_list(i_rep)%proj_mo
105 c_val=proj_mo%ref_mo_file_name)
108 i_val=proj_mo%ref_nlumo)
111 IF (.NOT. rtp_control%fixed_ions) &
113 l_val=proj_mo%propagate_ref)
117 IF (proj_mo%ref_mo_file_name ==
"DEFAULT")
THEN
119 IF (n_rep_val > 0)
THEN
126 extension=
".wfn", my_local=.false.)
132 ALLOCATE (proj_mo%ref_mo_index, source=tmp_ints(:))
134 i_val=proj_mo%ref_mo_spin)
137 CALL read_reference_mo_from_wfn(qs_env, proj_mo)
140 IF (proj_mo%ref_mo_file_name ==
"DEFAULT")
THEN
141 CALL cp_abort(__location__, &
142 "Input error in DFT%REAL_TIME_PROPAGATION%PRINT%PROJECTION_MO. "// &
143 "For REFERENCE_TYPE XAS_TDP one must define the name "// &
144 "of the .wfn file to read the reference MO from. Please define REF_MO_FILE_NAME.")
146 ALLOCATE (proj_mo%ref_mo_index(1))
148 proj_mo%ref_mo_index(1) = 1
149 proj_mo%ref_mo_spin = 1
151 CALL read_reference_mo_from_wfn(qs_env, proj_mo, xas_ref=.true.)
157 l_val=proj_mo%sum_on_all_ref)
160 i_val=proj_mo%td_mo_spin)
161 IF (proj_mo%td_mo_spin >
SIZE(mos)) &
162 CALL cp_abort(__location__, &
163 "You asked to project the time dependent BETA spin while the "// &
164 "real time DFT run has only one spin defined. "// &
165 "Please set TD_MO_SPIN to 1 or use UKS.")
170 nbr_mo_td_max = mos(proj_mo%td_mo_spin)%mo_coeff%matrix_struct%ncol_global
172 ALLOCATE (proj_mo%td_mo_index, source=tmp_ints(:))
173 IF (proj_mo%td_mo_index(1) == -1)
THEN
174 DEALLOCATE (proj_mo%td_mo_index)
175 ALLOCATE (proj_mo%td_mo_index(nbr_mo_td_max))
176 ALLOCATE (proj_mo%td_mo_occ(nbr_mo_td_max))
177 DO j_td = 1, nbr_mo_td_max
178 proj_mo%td_mo_index(j_td) = j_td
179 proj_mo%td_mo_occ(j_td) = mos(proj_mo%td_mo_spin)%occupation_numbers(proj_mo%td_mo_index(j_td))
182 ALLOCATE (proj_mo%td_mo_occ(
SIZE(proj_mo%td_mo_index)))
183 proj_mo%td_mo_occ(:) = 0.0_dp
184 DO j_td = 1,
SIZE(proj_mo%td_mo_index)
185 IF (proj_mo%td_mo_index(j_td) > nbr_mo_td_max) &
186 CALL cp_abort(__location__, &
187 "The MO number available in the Time Dependent run "// &
188 "is smaller than the MO number you have required in TD_MO_INDEX.")
189 proj_mo%td_mo_occ(j_td) = mos(proj_mo%td_mo_spin)%occupation_numbers(proj_mo%td_mo_index(j_td))
194 l_val=proj_mo%sum_on_all_td)
207 SUBROUTINE read_reference_mo_from_wfn(qs_env, proj_mo, xas_ref)
210 LOGICAL,
OPTIONAL :: xas_ref
212 INTEGER :: i_ref, ispin, mo_index, natom, &
213 nbr_mo_max, nbr_ref_mo, nspins, &
214 real_mo_index, restart_unit
215 LOGICAL :: is_file, my_xasref
218 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_s
220 TYPE(
mo_set_type),
DIMENSION(:),
POINTER :: mo_qs, mo_ref_temp
224 TYPE(
qs_kind_type),
DIMENSION(:),
POINTER :: qs_kind_set
226 NULLIFY (mo_qs, mo_ref_temp, mo_set, qs_kind_set, particle_set, para_env, dft_control, &
227 mo_ref_fmstruct, matrix_s)
230 IF (
PRESENT(xas_ref)) my_xasref = xas_ref
233 qs_kind_set=qs_kind_set, &
234 particle_set=particle_set, &
235 dft_control=dft_control, &
236 matrix_s_kp=matrix_s, &
240 natom =
SIZE(particle_set, 1)
244 IF (my_xasref .AND. nspins < 2)
THEN
247 ALLOCATE (mo_ref_temp(nspins))
253 mo_set => mo_qs(ispin)
255 mo_ref_temp(ispin)%nmo = mo_set%nmo + proj_mo%ref_nlumo
256 NULLIFY (mo_ref_fmstruct)
258 ncol_global=mo_ref_temp(ispin)%nmo, para_env=para_env, context=mo_set%mo_coeff%matrix_struct%context)
259 NULLIFY (mo_ref_temp(ispin)%mo_coeff)
260 ALLOCATE (mo_ref_temp(ispin)%mo_coeff)
261 CALL cp_fm_create(mo_ref_temp(ispin)%mo_coeff, mo_ref_fmstruct)
264 mo_ref_temp(ispin)%nao = mo_set%nao
265 mo_ref_temp(ispin)%homo = mo_set%homo
266 mo_ref_temp(ispin)%nelectron = mo_set%nelectron
267 ALLOCATE (mo_ref_temp(ispin)%eigenvalues(mo_ref_temp(ispin)%nmo))
268 ALLOCATE (mo_ref_temp(ispin)%occupation_numbers(mo_ref_temp(ispin)%nmo))
281 IF (para_env%is_source())
THEN
282 INQUIRE (file=trim(proj_mo%ref_mo_file_name), exist=is_file)
284 CALL cp_abort(__location__, &
285 "Reference file not found! Name of the file CP2K looked for: "//trim(proj_mo%ref_mo_file_name))
287 CALL open_file(file_name=proj_mo%ref_mo_file_name, &
288 file_action=
"READ", &
289 file_form=
"UNFORMATTED", &
291 unit_number=restart_unit)
295 particle_set=particle_set, natom=natom, &
296 rst_unit=restart_unit)
298 IF (para_env%is_source())
CALL close_file(unit_number=restart_unit)
300 IF (proj_mo%ref_mo_spin >
SIZE(mo_ref_temp)) &
301 CALL cp_abort(__location__, &
302 "You asked as reference spin the BETA one while the "// &
303 "reference .wfn file has only one spin. Use a reference .wfn "// &
304 "with 2 spins separated or set REF_MO_SPIN to 1")
307 nbr_mo_max = mo_ref_temp(proj_mo%ref_mo_spin)%mo_coeff%matrix_struct%ncol_global
308 IF (proj_mo%ref_mo_index(1) == -1)
THEN
309 DEALLOCATE (proj_mo%ref_mo_index)
310 ALLOCATE (proj_mo%ref_mo_index(nbr_mo_max))
311 DO i_ref = 1, nbr_mo_max
312 proj_mo%ref_mo_index(i_ref) = i_ref
315 DO i_ref = 1,
SIZE(proj_mo%ref_mo_index)
316 IF (proj_mo%ref_mo_index(i_ref) > nbr_mo_max) &
317 CALL cp_abort(__location__, &
318 "The MO number available in the Reference SCF "// &
319 "is smaller than the MO number you have required in REF_MO_INDEX.")
322 nbr_ref_mo =
SIZE(proj_mo%ref_mo_index)
324 IF (nbr_ref_mo > nbr_mo_max) &
325 CALL cp_abort(__location__, &
326 "The number of reference mo is larger then the total number of available one in the .wfn file.")
329 ALLOCATE (proj_mo%mo_ref(nbr_ref_mo))
331 context=mo_ref_temp(proj_mo%ref_mo_spin)%mo_coeff%matrix_struct%context, &
332 nrow_global=mo_ref_temp(proj_mo%ref_mo_spin)%mo_coeff%matrix_struct%nrow_global, &
335 IF (dft_control%rtp_control%fixed_ions) &
336 CALL cp_fm_create(mo_coeff_temp, mo_ref_fmstruct,
'mo_ref')
338 DO mo_index = 1, nbr_ref_mo
339 real_mo_index = proj_mo%ref_mo_index(mo_index)
340 IF (real_mo_index > nbr_mo_max) &
341 CALL cp_abort(__location__, &
342 "One of reference mo index is larger then the total number of available mo in the .wfn file.")
345 CALL cp_fm_create(proj_mo%mo_ref(mo_index), mo_ref_fmstruct,
'mo_ref')
346 IF (dft_control%rtp_control%fixed_ions)
THEN
348 CALL cp_fm_to_fm(mo_ref_temp(proj_mo%ref_mo_spin)%mo_coeff, mo_coeff_temp, &
350 source_start=real_mo_index, &
355 CALL cp_fm_to_fm(mo_ref_temp(proj_mo%ref_mo_spin)%mo_coeff, proj_mo%mo_ref(mo_index), &
357 source_start=real_mo_index, &
366 DEALLOCATE (mo_ref_temp)
369 IF (dft_control%rtp_control%fixed_ions) &
372 END SUBROUTINE read_reference_mo_from_wfn
385 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_new
389 INTEGER :: i_ref, nbr_ref_mo, nbr_ref_td
390 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: phase, popu, sum_popu_ref
394 TYPE(
dbcsr_p_type),
DIMENSION(:, :),
POINTER :: matrix_s
398 NULLIFY (dft_control, input, proj_mo_section, print_mo_section, logger)
403 dft_control=dft_control, &
412 IF (proj_mo%propagate_ref)
CALL propagate_ref_mo(qs_env, proj_mo)
416 print_mo_section,
""), &
420 IF (.NOT. dft_control%rtp_control%fixed_ions)
THEN
422 matrix_s_kp=matrix_s)
424 context=proj_mo%mo_ref(1)%matrix_struct%context, &
425 nrow_global=proj_mo%mo_ref(1)%matrix_struct%nrow_global, &
427 CALL cp_fm_create(s_mo_ref, mo_ref_fmstruct,
'S_mo_ref')
430 nbr_ref_mo =
SIZE(proj_mo%ref_mo_index)
431 nbr_ref_td =
SIZE(proj_mo%td_mo_index)
432 ALLOCATE (popu(nbr_ref_td))
433 ALLOCATE (phase(nbr_ref_td))
435 IF (proj_mo%sum_on_all_ref)
THEN
436 ALLOCATE (sum_popu_ref(nbr_ref_td))
437 sum_popu_ref(:) = 0.0_dp
438 DO i_ref = 1, nbr_ref_mo
440 IF (.NOT. dft_control%rtp_control%fixed_ions)
THEN
442 CALL compute_proj_mo(popu, phase, mos_new, proj_mo, i_ref, s_mo_ref=s_mo_ref)
444 CALL compute_proj_mo(popu, phase, mos_new, proj_mo, i_ref)
446 sum_popu_ref(:) = sum_popu_ref(:) + popu(:)
448 IF (proj_mo%sum_on_all_td)
THEN
449 CALL write_proj_mo(qs_env, print_mo_section, proj_mo, popu_tot=sum(sum_popu_ref), n_proj=n_proj)
451 CALL write_proj_mo(qs_env, print_mo_section, proj_mo, popu=sum_popu_ref, n_proj=n_proj)
453 DEALLOCATE (sum_popu_ref)
455 DO i_ref = 1, nbr_ref_mo
456 IF (.NOT. dft_control%rtp_control%fixed_ions)
THEN
458 CALL compute_proj_mo(popu, phase, mos_new, proj_mo, i_ref, s_mo_ref=s_mo_ref)
460 CALL compute_proj_mo(popu, phase, mos_new, proj_mo, i_ref)
462 IF (proj_mo%sum_on_all_td)
THEN
463 CALL write_proj_mo(qs_env, print_mo_section, proj_mo, i_ref=i_ref, popu_tot=sum(popu), n_proj=n_proj)
466 CALL write_proj_mo(qs_env, print_mo_section, proj_mo, i_ref=i_ref, popu=popu, phase=phase, n_proj=n_proj)
471 IF (.NOT. dft_control%rtp_control%fixed_ions)
THEN
490 SUBROUTINE compute_proj_mo(popu, phase, mos_new, proj_mo, i_ref, S_mo_ref)
491 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: popu, phase
492 TYPE(
cp_fm_type),
DIMENSION(:),
POINTER :: mos_new
497 CHARACTER(len=*),
PARAMETER :: routinen =
'compute_proj_mo'
499 INTEGER :: handle, j_td, nbr_ref_td, spin_td
501 REAL(kind=
dp) :: imag_proj, real_proj
505 CALL timeset(routinen, handle)
508 IF (
PRESENT(s_mo_ref)) is_emd = .true.
510 nbr_ref_td =
SIZE(popu)
511 spin_td = proj_mo%td_mo_spin
514 context=mos_new(1)%matrix_struct%context, &
515 nrow_global=mos_new(1)%matrix_struct%nrow_global, &
517 CALL cp_fm_create(mo_coeff_temp, mo_ref_fmstruct,
'mo_temp')
519 DO j_td = 1, nbr_ref_td
522 CALL cp_fm_to_fm(mos_new(2*spin_td - 1), mo_coeff_temp, &
524 source_start=proj_mo%td_mo_index(j_td), &
528 CALL cp_fm_trace(mo_coeff_temp, s_mo_ref, real_proj)
531 CALL cp_fm_trace(mo_coeff_temp, proj_mo%mo_ref(i_ref), real_proj)
536 CALL cp_fm_to_fm(mos_new(2*spin_td), mo_coeff_temp, &
538 source_start=proj_mo%td_mo_index(j_td), &
542 CALL cp_fm_trace(mo_coeff_temp, s_mo_ref, imag_proj)
544 CALL cp_fm_trace(mo_coeff_temp, proj_mo%mo_ref(i_ref), imag_proj)
548 phase(j_td) = atan2(imag_proj, real_proj)
549 popu(j_td) = proj_mo%td_mo_occ(j_td)*(real_proj**2 + imag_proj**2)
555 CALL timestop(handle)
557 END SUBROUTINE compute_proj_mo
572 SUBROUTINE write_proj_mo(qs_env, print_mo_section, proj_mo, i_ref, popu, phase, popu_tot, n_proj)
576 INTEGER,
OPTIONAL :: i_ref
577 REAL(kind=
dp),
DIMENSION(:),
OPTIONAL :: popu, phase
578 REAL(kind=
dp),
OPTIONAL :: popu_tot
579 INTEGER,
OPTIONAL :: n_proj
581 CHARACTER(LEN=default_string_length) :: ext, filename
582 INTEGER :: j_td, output_unit, print_unit
590 IF (.NOT. (output_unit > 0))
RETURN
592 IF (proj_mo%sum_on_all_ref)
THEN
593 ext =
"-"//trim(adjustl(
cp_to_string(n_proj)))//
"-ALL_REF.dat"
598 trim(adjustl(
cp_to_string(proj_mo%ref_mo_index(i_ref))))// &
605 IF (print_unit /= output_unit)
THEN
606 INQUIRE (unit=print_unit, name=filename)
610 WRITE (unit=print_unit, fmt=
"(/,(T2,A,T40,I6))") &
611 "Real time propagation step:", qs_env%sim_step
613 WRITE (unit=output_unit, fmt=
"(/,T2,A)")
"PROJECTION MO"
616 IF (proj_mo%sum_on_all_ref)
THEN
617 WRITE (print_unit,
"(T3,A)") &
618 "Projection on all the required MO number from the reference file "// &
619 trim(proj_mo%ref_mo_file_name)
620 IF (proj_mo%sum_on_all_td)
THEN
621 WRITE (print_unit,
"(T3, A, E20.12)") &
622 "The sum over all the TD MOs population:", popu_tot
624 WRITE (print_unit,
"(T3,A)") &
625 "For each TD MOs required is printed: Population "
626 DO j_td = 1,
SIZE(popu)
627 WRITE (print_unit,
"(T5,1(E20.12, 1X))") popu(j_td)
631 WRITE (print_unit,
"(T3,A)") &
632 "Projection on the MO number "// &
633 trim(adjustl(
cp_to_string(proj_mo%ref_mo_index(i_ref))))// &
634 " from the reference file "// &
635 trim(proj_mo%ref_mo_file_name)
637 IF (proj_mo%sum_on_all_td)
THEN
638 WRITE (print_unit,
"(T3, A, E20.12)") &
639 "The sum over all the TD MOs population:", popu_tot
641 WRITE (print_unit,
"(T3,A)") &
642 "For each TD MOs required is printed: Population & Phase [rad] "
643 DO j_td = 1,
SIZE(popu)
644 WRITE (print_unit,
"(T5,2(E20.12, E16.8, 1X))") popu(j_td), phase(j_td)
651 END SUBROUTINE write_proj_mo
663 SUBROUTINE propagate_ref_mo(qs_env, proj_mo)
675 CALL get_rtp(rtp=rtp, sinvb=sinvb, dt=dt)
678 context=proj_mo%mo_ref(1)%matrix_struct%context, &
679 nrow_global=proj_mo%mo_ref(1)%matrix_struct%nrow_global, &
683 DO i_ref = 1,
SIZE(proj_mo%ref_mo_index)
692 END SUBROUTINE propagate_ref_mo
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
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
Utility routines to open and close files. Tracking of preconnections.
subroutine, public open_file(file_name, file_status, file_form, file_action, file_position, file_pad, unit_number, debug, skip_get_unit_number, file_access)
Opens the requested file using a free unit number.
subroutine, public close_file(unit_number, file_status, keep_preconnection)
Close an open file given by its logical unit number. Optionally, keep the file and unit preconnected.
basic linear algebra operations for full matrices
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....
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_create(matrix, matrix_struct, name, use_sp)
creates a new full matrix with the given structure
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
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
character(len=default_path_length) function, public cp_print_key_generate_filename(logger, print_key, middle_name, extension, my_local)
Utility function that returns a unit number to write the print key. Might open a file with a unique f...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
integer, parameter, public cp_p_file
integer function, public cp_print_key_should_output(iteration_info, basis_section, print_key_path, used_print_key, first_time)
returns what should be done with the given property if btest(res,cp_p_store) then the property should...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Interface to the message passing library MPI.
Define the data structure for the particle information.
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, 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, 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, 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, ecoul_1c, rho0_s_rs, rho0_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)
Get the QUICKSTEP environment.
Define the quickstep kind type and their sub types.
Definition and initialisation of the mo data type.
subroutine, public read_mos_restart_low(mos, para_env, qs_kind_set, particle_set, natom, rst_unit, multiplicity, rt_mos, natom_mismatch)
Reading the mos from apreviously defined restart file.
Definition and initialisation of the mo data type.
subroutine, public deallocate_mo_set(mo_set)
Deallocate a wavefunction data structure.
Function related to MO projection in RTP calculations.
subroutine, public init_mo_projection(qs_env, rtp_control)
Initialize the mo projection objects for time dependent run.
subroutine, public compute_and_write_proj_mo(qs_env, mos_new, proj_mo, n_proj)
Compute the projection of the current MO coefficients on reference ones and write the results.
Types and set_get for real time propagation depending on runtype and diagonalization method different...
subroutine, public get_rtp(rtp, exp_h_old, exp_h_new, h_last_iter, rho_old, rho_next, rho_new, mos, mos_new, mos_old, mos_next, s_inv, s_half, s_minus_half, b_mat, c_mat, propagator_matrix, mixing, mixing_factor, s_der, dt, nsteps, sinvh, sinvh_imag, sinvb, admm_mos)
...
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...
stores all the informations relevant to an mpi environment
Provides all information about a quickstep kind.