Commit f87994ee authored by Sarai Dery Folkestad's avatar Sarai Dery Folkestad
Browse files

Merge branch 'hf-response-input' into 'development'

Improve HF response input

See merge request eT-program/eT!1534
parents 4887f0ca 70264c64
Loading
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -226,6 +226,7 @@ some roots were converged and others below the linear dependence threshold. eT-p
- Updated README description of PCMSolver installation. eT-program/eT!1491
- Removed u_aibj from coupled cluster wavefunctions. eT-program/eT!1502
- Removed ``construct_right_transition_density_doubles``. eT-program/eT!1507
- Improve input keywords for (TD) HF response/es calculation to be consistent with CC and to allow for new keywords. eT-program/eT!1534

### Optimization
- Optimized CCSD Jacobian for triplet, dd7. eT-program/eT!/1209
+1 −1
Original line number Diff line number Diff line
@@ -85,7 +85,7 @@ contains
      call wf%set_n_tdhf_parameters()

      tamm_dancoff = .false.
      tamm_dancoff = input%is_keyword_present('tamm-dancoff', 'solver tdhf es')
      tamm_dancoff = input%is_keyword_present('tamm-dancoff', 'solver hf es')

      call solver_factory%create(wf, solver, tamm_dancoff)

+8 −8
Original line number Diff line number Diff line
@@ -137,7 +137,7 @@ contains

      do f = 1, this%n_frequencies

         if (.not. input%is_keyword_present('print iterations', 'solver tdhf response')) &
         if (.not. input%is_keyword_present('print iterations', 'solver hf response')) &
            call output%mute()

         do k = 1, 3
@@ -154,7 +154,7 @@ contains

         enddo

         if (.not. input%is_keyword_present('print iterations', 'solver tdhf response')) &
         if (.not. input%is_keyword_present('print iterations', 'solver hf response')) &
            call output%unmute()

         do k = 1, 3
@@ -181,11 +181,11 @@ contains

      class(tdhf_polarizability_task), intent(inout) :: this

      if (input%is_keyword_present('frequencies', 'solver tdhf response')) then
      if (input%is_keyword_present('frequencies', 'solver hf response')) then

         this%n_frequencies = input%get_n_elements_for_keyword('frequencies', 'solver tdhf response')
         this%n_frequencies = input%get_n_elements_for_keyword('frequencies', 'solver hf response')
         call mem%alloc(this%frequencies, this%n_frequencies)
         call input%get_array_for_keyword('frequencies', 'solver tdhf response', this%n_frequencies, this%frequencies)
         call input%get_array_for_keyword('frequencies', 'solver hf response', this%n_frequencies, this%frequencies)

      else

@@ -196,13 +196,13 @@ contains
      endif

      this%threshold = 1.0d-3
      call input%get_keyword('residual threshold', 'solver tdhf response', this%threshold)
      call input%get_keyword('residual threshold', 'solver hf response', this%threshold)

      this%max_dim_red = 100
      call input%get_keyword('max reduced dimension', 'solver tdhf response', this%max_dim_red)
      call input%get_keyword('max reduced dimension', 'solver hf response', this%max_dim_red)

      this%max_iterations = 100
      call input%get_keyword('max iterations', 'solver tdhf response', this%max_iterations)
      call input%get_keyword('max iterations', 'solver hf response', this%max_iterations)

   end subroutine read_polarizability_settings

+19 −24
Original line number Diff line number Diff line
@@ -189,6 +189,7 @@ contains
      type(section) :: grid_info
      type(section) :: harmonic_frequencies
      type(section) :: hf_mean_value
      type(section) :: hf_response
      type(section) :: integrals
      type(section) :: lanczos
      type(section) :: memory
@@ -206,14 +207,13 @@ contains
      type(section) :: solver_cc_response
      type(section) :: solver_cholesky
      type(section) :: solver_ci
      type(section) :: solver_cphf
      type(section) :: solver_cpp
      type(section) :: solver_fft_dipole_moment
      type(section) :: solver_fft_electric_field
      type(section) :: solver_geoopt
      type(section) :: solver_scf
      type(section) :: solver_tdhf_es
      type(section) :: solver_tdhf_response
      type(section) :: solver_hf_es
      type(section) :: solver_hf_response
      type(section) :: system
      type(section) :: visualization

@@ -305,13 +305,11 @@ contains
                                                'ground state',            &
                                                'geometry optimization',   &
                                                'harmonic frequencies',    &
                                                'tdhf response',           &
                                                'tdhf excited state',      &
                                                'excited state',           &
                                                'response',                &
                                                'mean value',              &
                                                'real time',               &
                                                'shielding',               &
                                                'restart'])


@@ -423,6 +421,12 @@ contains
                                                 'molecular gradient', &
                                                 'quadrupole'])

      hf_response = section(name_            = 'hf response',        &
                            required         = .false.,              &
                            allowed_keywords = [character(len=30) :: &
                                              'shielding', &
                                              'polarizabilities'])


      integrals = section(name_            = 'integrals',          &
                          required         = .false.,              &
@@ -650,17 +654,6 @@ contains
                                              'states',                &
                                              'storage'])


      solver_cphf = section(name_            = 'solver cphf',           &
                            required         = .false.,                 &
                            allowed_keywords = [character(len=30) ::    &
                                               'max iterations',        &
                                               'max reduced dimension', &
                                               'residual threshold',    &
                                               'restart',               &
                                               'storage'])


      solver_fft_dipole_moment = section(name_            = 'solver fft dipole moment', &
                                         required         = .false.,                    &
                                         allowed_keywords = [character(len=30) ::       &
@@ -725,7 +718,7 @@ contains
                                              'write molden'])


      solver_tdhf_es = section(name_            = 'solver tdhf es',         &
      solver_hf_es = section(name_            = 'solver hf es',         &
                               required         = .false.,                  &
                               allowed_keywords = [character(len=30) ::     &
                                                  'energy threshold',       &
@@ -738,14 +731,16 @@ contains
                                                  'tamm-dancoff'])


      solver_tdhf_response = section(name_            = 'solver tdhf response',  &
      solver_hf_response = section(name_           = 'solver hf response',       &
                                  required         = .false.,                    &
                                  allowed_keywords = [character(len=30) ::       &
                                                        'frequencies',           &
                                                        'max iterations',        &
                                                        'max reduced dimension', &
                                                        'print iterations',      &
                                                        'residual threshold'])
                                                        'residual threshold',    &
                                                        'restart',               &
                                                        'storage'])


      system = section(name_            = 'system',               &
@@ -795,6 +790,7 @@ contains
                       grid_info,                 &
                       harmonic_frequencies,      &
                       hf_mean_value,             &
                       hf_response,               &
                       integrals,                 &
                       lanczos,                   &
                       memory,                    &
@@ -812,14 +808,13 @@ contains
                       solver_cc_response,        &
                       solver_cholesky,           &
                       solver_ci,                 &
                       solver_cphf,               &
                       solver_cpp,                &
                       solver_fft_dipole_moment,  &
                       solver_fft_electric_field, &
                       solver_geoopt,             &
                       solver_scf,                &
                       solver_tdhf_es,            &
                       solver_tdhf_response,      &
                       solver_hf_es,            &
                       solver_hf_response,      &
                       system,                    &
                       visualization]

+6 −3
Original line number Diff line number Diff line
@@ -55,15 +55,18 @@ contains

      class(hf_engine), allocatable, intent(out) :: engine

      if (input%is_keyword_present('tdhf excited state', 'do')) then
      if (input%is_keyword_present('excited state', 'do') .and. &
         input%is_section_present('solver hf es')) then

         engine = tdhf_es_engine()

      elseif (input%is_keyword_present('tdhf response', 'do')) then
      elseif (input%is_keyword_present('response', 'do') .and. &
             input%is_keyword_present('polarizabilities', 'hf response')) then

         engine = tdhf_polarizability_engine()

      elseif (input%is_keyword_present('shielding', 'do')) then
      elseif (input%is_keyword_present('response', 'do') .and.  &
             input%is_keyword_present('shielding', 'hf response')) then

         engine = cphf_shielding_engine()

Loading