configure_mcscf Subroutine

private subroutine configure_mcscf(method, config)

Configure a MCSCF method instance from config%mcscf

Arguments

Type IntentOptional Attributes Name
class(qc_method_t), intent(inout) :: method
type(method_config_t), intent(in) :: config

Calls

proc~~configure_mcscf~~CallsGraph proc~configure_mcscf configure_mcscf state_weights state_weights proc~configure_mcscf->state_weights

Called by

proc~~configure_mcscf~~CalledByGraph proc~configure_mcscf configure_mcscf proc~factory_create method_factory_t%factory_create proc~factory_create->proc~configure_mcscf proc~create_method create_method proc~create_method->proc~factory_create proc~do_fragment_work do_fragment_work proc~do_fragment_work->proc~create_method proc~hessian_coordinator hessian_coordinator proc~hessian_coordinator->proc~create_method proc~hessian_worker hessian_worker proc~hessian_worker->proc~create_method interface~do_fragment_work do_fragment_work interface~do_fragment_work->proc~do_fragment_work interface~hessian_coordinator hessian_coordinator interface~hessian_coordinator->proc~hessian_coordinator interface~hessian_worker hessian_worker interface~hessian_worker->proc~hessian_worker proc~distributed_unfragmented_hessian distributed_unfragmented_hessian proc~distributed_unfragmented_hessian->interface~hessian_coordinator proc~distributed_unfragmented_hessian->interface~hessian_worker proc~node_worker node_worker proc~node_worker->interface~do_fragment_work proc~serial_fragment_processor serial_fragment_processor proc~serial_fragment_processor->interface~do_fragment_work proc~serial_gmbe_pie_processor serial_gmbe_pie_processor proc~serial_gmbe_pie_processor->interface~do_fragment_work proc~unfragmented_calculation unfragmented_calculation proc~unfragmented_calculation->interface~do_fragment_work

Source Code

   subroutine configure_mcscf(method, config)
      !! Configure a MCSCF method instance from config%mcscf
      class(qc_method_t), intent(inout) :: method
      type(method_config_t), intent(in) :: config

      select type (m => method)
      type is (mcscf_method_t)
         ! Common settings
         m%options%basis_set = config%basis_set
         m%options%spherical = config%use_spherical
         m%options%verbose = config%verbose

         ! Active space from config%mcscf
         m%options%n_active_electrons = config%mcscf%n_active_electrons
         m%options%n_active_orbitals = config%mcscf%n_active_orbitals
         m%options%n_inactive_orbitals = config%mcscf%n_inactive_orbitals

         ! State averaging
         m%options%n_states = config%mcscf%n_states
         if (allocated(config%mcscf%state_weights)) then
            if (allocated(m%options%state_weights)) deallocate (m%options%state_weights)
            allocate (m%options%state_weights(size(config%mcscf%state_weights)))
            m%options%state_weights = config%mcscf%state_weights
         end if

         ! Convergence
         m%options%max_macro_iter = config%mcscf%max_macro_iter
         m%options%max_micro_iter = config%mcscf%max_micro_iter
         m%options%orbital_tol = config%mcscf%orbital_convergence
         m%options%ci_tol = config%mcscf%ci_convergence

         ! PT2 corrections
         m%options%use_pt2 = config%mcscf%use_pt2
         m%options%pt2_type = config%mcscf%pt2_type
         m%options%ipea_shift = config%mcscf%ipea_shift
         m%options%imaginary_shift = config%mcscf%imaginary_shift
      end select
   end subroutine configure_mcscf