xtb_get_solvation_info Subroutine

private subroutine xtb_get_solvation_info(this, info_lines, n_lines)

Uses

    • pic_io
  • proc~~xtb_get_solvation_info~~UsesGraph proc~xtb_get_solvation_info xtb_config_t%xtb_get_solvation_info pic_io pic_io proc~xtb_get_solvation_info->pic_io

Get solvation configuration info for logging

Returns array of info strings describing the solvation setup. If no solvation is configured, n_lines = 0.

Type Bound

xtb_config_t

Arguments

Type IntentOptional Attributes Name
class(xtb_config_t), intent(in) :: this
character(len=128), intent(out) :: info_lines(4)

Up to 4 lines of info

integer, intent(out) :: n_lines

Number of lines populated


Calls

proc~~xtb_get_solvation_info~~CallsGraph proc~xtb_get_solvation_info xtb_config_t%xtb_get_solvation_info proc~xtb_has_solvation xtb_config_t%xtb_has_solvation proc~xtb_get_solvation_info->proc~xtb_has_solvation to_char to_char proc~xtb_get_solvation_info->to_char

Called by

proc~~xtb_get_solvation_info~~CalledByGraph proc~xtb_get_solvation_info xtb_config_t%xtb_get_solvation_info proc~config_log_settings method_config_t%config_log_settings proc~config_log_settings->proc~xtb_get_solvation_info proc~run_calculation run_calculation proc~run_calculation->proc~config_log_settings proc~compute_energy_and_forces compute_energy_and_forces proc~compute_energy_and_forces->proc~run_calculation proc~run_multi_molecule_calculations run_multi_molecule_calculations proc~run_multi_molecule_calculations->proc~run_calculation program~main main program~main->proc~run_calculation program~main->proc~run_multi_molecule_calculations

Source Code

   subroutine xtb_get_solvation_info(this, info_lines, n_lines)
      !! Get solvation configuration info for logging
      !!
      !! Returns array of info strings describing the solvation setup.
      !! If no solvation is configured, n_lines = 0.
      use pic_io, only: to_char
      class(xtb_config_t), intent(in) :: this
      character(len=128), intent(out) :: info_lines(4)  !! Up to 4 lines of info
      integer, intent(out) :: n_lines                    !! Number of lines populated

      n_lines = 0
      info_lines = ''

      if (.not. this%has_solvation()) return

      n_lines = 1
      if (trim(this%solvation_model) == 'cpcm') then
         if (this%dielectric > 0.0_dp) then
            info_lines(1) = "XTB solvation enabled: cpcm with dielectric = "//to_char(this%dielectric)
         else
            info_lines(1) = "XTB solvation enabled: cpcm with "//trim(this%solvent)
         end if
         n_lines = 3
         info_lines(2) = "  CPCM grid points (nang): "//to_char(this%cpcm_nang)
         info_lines(3) = "  CPCM radii scale: "//to_char(this%cpcm_rscale)
      else
         info_lines(1) = "XTB solvation enabled: "//trim(this%solvation_model)//" with "//trim(this%solvent)
         if (this%use_cds) then
            n_lines = n_lines + 1
            info_lines(n_lines) = "  CDS (non-polar) terms: enabled"
         end if
         if (this%use_shift) then
            n_lines = n_lines + 1
            info_lines(n_lines) = "  Solution state shift: enabled"
         end if
      end if
   end subroutine xtb_get_solvation_info