From 67161ce4e549b3dd5380096150a7071b79da0ce2 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Dec 2018 14:28:21 +0100 Subject: [PATCH 1/5] TODO --- TODO | 6 +----- src/.gitignore | 1 + 2 files changed, 2 insertions(+), 5 deletions(-) create mode 120000 src/.gitignore diff --git a/TODO b/TODO index 1e9f325e..f81453e9 100644 --- a/TODO +++ b/TODO @@ -1,6 +1,5 @@ # qp_module -* Change travis test * Mettre le fichier LIB # Web/doc @@ -14,16 +13,13 @@ # Exterieur -* Molden format : http://cheminf.cmbi.ru.nl/molden/molden_format.html +* Molden format : http://cheminf.cmbi.ru.nl/molden/molden_format.html : read+write * Un module pour lire les integrales Moleculaires depuis un FCIDUMP * Un module pour lire des integrales Atomiques (voir module de Mimi pour lire les AO Slater) # Tests: - * CIS - * CISD - * Multi-state * >1000 dets * Davidson * Lapack diff --git a/src/.gitignore b/src/.gitignore new file mode 120000 index 00000000..a10a1637 --- /dev/null +++ b/src/.gitignore @@ -0,0 +1 @@ +../../data/module_gitignore \ No newline at end of file From aa48b24f0d087008c3470f00bcf178b84561f9d4 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Fri, 28 Dec 2018 15:06:27 +0100 Subject: [PATCH 2/5] Moved qp_plugins --- docs/source/programmers_guide/plugins.rst | 3 +++ scripts/{module => }/qp_plugins | 4 ++++ src/hartree_fock/scf_old.irp.f | 3 +-- src/scf_utils/roothaan_hall_scf.irp.f | 11 +++++++++++ 4 files changed, 19 insertions(+), 2 deletions(-) rename scripts/{module => }/qp_plugins (98%) diff --git a/docs/source/programmers_guide/plugins.rst b/docs/source/programmers_guide/plugins.rst index fa00bd24..5ad9171a 100644 --- a/docs/source/programmers_guide/plugins.rst +++ b/docs/source/programmers_guide/plugins.rst @@ -6,6 +6,9 @@ Developing plugins Creating a repository of plugins -------------------------------- +The purpose of :file:`$QP_ROOT/plugins` is to contain local copies of +external repositories of plugins. + Create a repository, for example :file:`qp_plugins_user`, hosted somewhere (GitLab, GitHub, etc...), and clone the repository in the :file:`$QP_ROOT/plugins` directory. diff --git a/scripts/module/qp_plugins b/scripts/qp_plugins similarity index 98% rename from scripts/module/qp_plugins rename to scripts/qp_plugins index f69e5ade..19a3f46f 100755 --- a/scripts/module/qp_plugins +++ b/scripts/qp_plugins @@ -85,6 +85,8 @@ def save_new_module(path, l_child): """) def main(arguments): + arguments[""] = [ os.path.normpath(name) for name in arguments[""] ] + if arguments["list"]: if arguments["-q"]: l_result = [ f for f in listdir(QP_PLUGINS) if f not in [ ".gitignore", "local" ] ] @@ -218,6 +220,8 @@ def main(arguments): l_name = [ normalize_case[name.lower()] for name in arguments[""] ] for name in l_name: + + print name if name in d_local: print "{0} Is already installed".format(name) diff --git a/src/hartree_fock/scf_old.irp.f b/src/hartree_fock/scf_old.irp.f index 852fa128..c6f69191 100644 --- a/src/hartree_fock/scf_old.irp.f +++ b/src/hartree_fock/scf_old.irp.f @@ -53,8 +53,7 @@ subroutine run ! Choose SCF algorithm - call damping_SCF ! Deprecated routine -! call Roothaan_Hall_SCF + call damping_SCF end diff --git a/src/scf_utils/roothaan_hall_scf.irp.f b/src/scf_utils/roothaan_hall_scf.irp.f index d3549fe7..f3f252d8 100644 --- a/src/scf_utils/roothaan_hall_scf.irp.f +++ b/src/scf_utils/roothaan_hall_scf.irp.f @@ -48,6 +48,9 @@ END_DOC ! Increment cycle number iteration_SCF += 1 + if(no_oa_or_av_opt)then + call initialize_mo_coef_begin_iteration + endif ! Current size of the DIIS space @@ -79,6 +82,10 @@ END_DOC endif MO_coef = eigenvectors_Fock_matrix_MO + if(no_oa_or_av_opt)then + call reorder_active_orb + call initialize_mo_coef_begin_iteration + endif TOUCH MO_coef @@ -105,6 +112,10 @@ END_DOC TOUCH mo_coef level_shift = level_shift * 2.0d0 mo_coef(1:ao_num,1:mo_tot_num) = eigenvectors_Fock_matrix_MO(1:ao_num,1:mo_tot_num) + if(no_oa_or_av_opt)then + call reorder_active_orb + call initialize_mo_coef_begin_iteration + endif TOUCH mo_coef level_shift Delta_Energy_SCF = SCF_energy - energy_SCF_previous energy_SCF = SCF_energy From 8ce4d462c862e33c767a9a8bef67034900c422f4 Mon Sep 17 00:00:00 2001 From: Emmanuel Giner Date: Wed, 26 Dec 2018 16:45:57 +0100 Subject: [PATCH 3/5] minor changes in README.rst of many src files --- scripts/module/module_handler.py | 1 + src/ao_one_e_integrals/README.rst | 7 + src/ao_one_e_integrals/spread_dipole_ao.irp.f | 2 + src/aux_quantities/README.rst | 13 +- src/becke_numerical_grid/README.rst | 9 +- src/becke_numerical_grid/example.irp.f | 4 +- src/becke_numerical_grid/grid_becke.irp.f | 8 +- .../grid_becke_vector.irp.f | 6 +- src/davidson/README.rst | 3 + src/davidson/u0_h_u0.irp.f | 2 +- src/determinants/README.rst | 16 + src/dft_keywords/README.rst | 11 +- src/dft_utils_in_r/dm_in_r.irp.f | 134 +- src/dft_utils_one_e/e_xc.irp.f | 12 +- src/dft_utils_one_e/pot_ao.irp.f | 12 +- src/dft_utils_one_e/sr_exc.irp.f | 12 +- src/dft_utils_one_e/sr_pot_ao.irp.f | 12 +- src/dft_utils_two_body/.gitignore | 1 - src/dft_utils_two_body/INSTALL.cfg | 2 - src/dft_utils_two_body/NEED | 3 - src/dft_utils_two_body/mr_dft_energy.irp.f | 44 - .../print_rsdft_variational_energy.irp.f | 16 - src/dft_utils_two_body/psi_energy_erf.irp.f | 81 -- .../routines_save_integrals_dft.irp.f | 26 - src/dft_utils_two_body/slater_rules_erf.irp.f | 226 ---- src/dft_utils_two_body/u0_w_erf_u0.irp.f | 482 ------- .../write_effective_rsdft_hamiltonian.irp.f | 34 - src/dummy/NEED | 2 - src/generators_cas/README.rst | 2 +- src/mo_one_e_integrals/README.rst | 9 +- .../routines_save_integrals_erf.irp.f | 1 + src/mrpt_utils/.gitignore | 1 - src/mrpt_utils/EZFIO.cfg | 7 - src/mrpt_utils/NEED | 3 - src/mrpt_utils/README.rst | 5 - src/mrpt_utils/density_matrix_based.irp.f | 193 --- src/mrpt_utils/energies_cas.irp.f | 1109 ----------------- src/mrpt_utils/excitations_cas.irp.f | 708 ----------- src/mrpt_utils/fock_like_operators.irp.f | 210 ---- src/mrpt_utils/give_2h2p.irp.f | 35 - src/mrpt_utils/h_apply.irp.f | 187 --- src/mrpt_utils/mrpt_dress.irp.f | 187 --- src/mrpt_utils/mrpt_utils.irp.f | 365 ------ src/mrpt_utils/new_way.irp.f | 958 -------------- .../new_way_second_order_coef.irp.f | 796 ------------ src/mrpt_utils/psi_active_prov.irp.f | 579 --------- src/mrpt_utils/second_order_new.irp.f | 757 ----------- src/mrpt_utils/second_order_new_2p.irp.f | 283 ----- .../set_as_holes_and_particles.irp.f | 27 - src/mrpt_utils/utils_bitmask.irp.f | 36 - src/perturbation/NEED | 1 - src/perturbation/pt2_new.irp.f | 71 -- src/scf_utils/README.rst | 4 +- 53 files changed, 119 insertions(+), 7596 deletions(-) delete mode 120000 src/dft_utils_two_body/.gitignore delete mode 100644 src/dft_utils_two_body/INSTALL.cfg delete mode 100644 src/dft_utils_two_body/NEED delete mode 100644 src/dft_utils_two_body/mr_dft_energy.irp.f delete mode 100644 src/dft_utils_two_body/print_rsdft_variational_energy.irp.f delete mode 100644 src/dft_utils_two_body/psi_energy_erf.irp.f delete mode 100644 src/dft_utils_two_body/routines_save_integrals_dft.irp.f delete mode 100644 src/dft_utils_two_body/slater_rules_erf.irp.f delete mode 100644 src/dft_utils_two_body/u0_w_erf_u0.irp.f delete mode 100644 src/dft_utils_two_body/write_effective_rsdft_hamiltonian.irp.f delete mode 120000 src/mrpt_utils/.gitignore delete mode 100644 src/mrpt_utils/EZFIO.cfg delete mode 100644 src/mrpt_utils/NEED delete mode 100644 src/mrpt_utils/README.rst delete mode 100644 src/mrpt_utils/density_matrix_based.irp.f delete mode 100644 src/mrpt_utils/energies_cas.irp.f delete mode 100644 src/mrpt_utils/excitations_cas.irp.f delete mode 100644 src/mrpt_utils/fock_like_operators.irp.f delete mode 100644 src/mrpt_utils/give_2h2p.irp.f delete mode 100644 src/mrpt_utils/h_apply.irp.f delete mode 100644 src/mrpt_utils/mrpt_dress.irp.f delete mode 100644 src/mrpt_utils/mrpt_utils.irp.f delete mode 100644 src/mrpt_utils/new_way.irp.f delete mode 100644 src/mrpt_utils/new_way_second_order_coef.irp.f delete mode 100644 src/mrpt_utils/psi_active_prov.irp.f delete mode 100644 src/mrpt_utils/second_order_new.irp.f delete mode 100644 src/mrpt_utils/second_order_new_2p.irp.f delete mode 100644 src/mrpt_utils/set_as_holes_and_particles.irp.f delete mode 100644 src/mrpt_utils/utils_bitmask.irp.f delete mode 100644 src/perturbation/pt2_new.irp.f diff --git a/scripts/module/module_handler.py b/scripts/module/module_handler.py index 22677d33..a31a1d0c 100755 --- a/scripts/module/module_handler.py +++ b/scripts/module/module_handler.py @@ -84,6 +84,7 @@ def get_dict_child(l_root_abs=None): except IOError: pass else: +# print module_rel if module_rel not in d_ref: d_ref[module_rel] = l_children else: diff --git a/src/ao_one_e_integrals/README.rst b/src/ao_one_e_integrals/README.rst index 60ebfdf4..0901554a 100644 --- a/src/ao_one_e_integrals/README.rst +++ b/src/ao_one_e_integrals/README.rst @@ -4,3 +4,10 @@ AO_one_e_integrals All the one-electron integrals in the |AO| basis are here. +The most important providers for usual quantum-chemistry calculation are: + +# `ao_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_ao_ints.irp.f`) +# `ao_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_ao_ints.irp.f`) +# `ao_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`ao_mono_ints.irp.f`) + +Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_ao.irp.f`. diff --git a/src/ao_one_e_integrals/spread_dipole_ao.irp.f b/src/ao_one_e_integrals/spread_dipole_ao.irp.f index 5c3da801..9cff2c97 100644 --- a/src/ao_one_e_integrals/spread_dipole_ao.irp.f +++ b/src/ao_one_e_integrals/spread_dipole_ao.irp.f @@ -222,9 +222,11 @@ subroutine overlap_bourrin_spread(A_center,B_center,alpha,beta,power_A,power_B,overlap_x,lower_exp_val,dx,nx) + BEGIN_DOC ! Computes the following integral : ! int [-infty ; +infty] of [(x-A_center)^(power_A) * (x-B_center)^power_B * exp(-alpha(x-A_center)^2) * exp(-beta(x-B_center)^2) * x ] ! needed for the dipole and those things + END_DOC implicit none integer :: i,j,k,l integer,intent(in) :: power_A,power_B diff --git a/src/aux_quantities/README.rst b/src/aux_quantities/README.rst index 8654090e..7b7154fe 100644 --- a/src/aux_quantities/README.rst +++ b/src/aux_quantities/README.rst @@ -1,6 +1,13 @@ -============ -Data energy and density -============ +============== +aux_quantities +============== This module contains some global variables (such as densities and energies) which are stored in the EZFIO folder in a different place than determinants. This is used in practice to store density matrices which can be obtained from any methods, as long as they are stored in the same MO basis which is used for the calculations. In |RS-DFT| calculations, this can be done to perform damping on the density in order to speed up convergence. + +The main providers of that module are: + +# `data_one_body_alpha_dm_mo` and `data_one_body_beta_dm_mo` which are the one-body alpha and beta densities which are necessary read from the EZFIO folder. + + +Thanks to these providers you can use any density matrix that does not necessary corresponds to that of the current wave function. diff --git a/src/becke_numerical_grid/README.rst b/src/becke_numerical_grid/README.rst index 457e5259..b5019036 100644 --- a/src/becke_numerical_grid/README.rst +++ b/src/becke_numerical_grid/README.rst @@ -1,11 +1,18 @@ ==================== -Becke Numerical Grid +becke_numerical_grid ==================== This module contains all quantities needed to build the Becke's grid used in general for DFT integration. Note that it can be used for whatever integration in R^3 as long as the functions to be integrated are mostly concentrated near the atomic regions. This grid is built as the reunion of a spherical grid around each atom. Each spherical grid contains a certain number of radial and angular points. +The main providers of that module are: + +# :option:`becke_numerical_grid n_points_integration_angular` which is the number of angular integration points. WARNING: it obeys to specific rules so it cannot be any integer number. Some of the possible values are [ 50 | 74 | 266 | 590 | 1202 | 2030 | 5810 ] for instance. See :file:`angular.f` for more details. +# :option:`becke_numerical_grid n_points_radial_grid` which is the number of radial angular points. This can be any strictly positive integer. Nevertheless, a minimum of 50 is in general necessary. +# `final_grid_points` which are the (x,y,z) coordinates of the grid points. +# `final_weight_at_r_vector` which are the weights at each grid point + For a simple example of how to use the grid, see :file:`example.irp.f`. The spherical integration uses Lebedev-Laikov grids, which was used from the code distributed through CCL (http://www.ccl.net/). diff --git a/src/becke_numerical_grid/example.irp.f b/src/becke_numerical_grid/example.irp.f index 32f6990a..2f7759b3 100644 --- a/src/becke_numerical_grid/example.irp.f +++ b/src/becke_numerical_grid/example.irp.f @@ -35,7 +35,7 @@ subroutine example_becke_numerical_grid r(1) = final_grid_points(1,i) r(2) = final_grid_points(2,i) r(3) = final_grid_points(3,i) - weight = final_weight_functions_at_final_grid_points(i) + weight = final_weight_at_r_vector(i) double precision :: distance, f_r ! you compute the function to be integrated distance = dsqrt( (r(1) - center(1))**2 + (r(2) - center(2))**2 + (r(3) - center(3))**2 ) @@ -58,7 +58,7 @@ subroutine example_becke_numerical_grid r(1) = grid_points_per_atom(1,k,j,i) r(2) = grid_points_per_atom(2,k,j,i) r(3) = grid_points_per_atom(3,k,j,i) - weight = final_weight_functions_at_grid_points(k,j,i) + weight = final_weight_at_r(k,j,i) distance = dsqrt( (r(1) - center(1))**2 + (r(2) - center(2))**2 + (r(3) - center(3))**2 ) f_r = dexp(-alpha * distance) integral_2 += f_r * weight diff --git a/src/becke_numerical_grid/grid_becke.irp.f b/src/becke_numerical_grid/grid_becke.irp.f index 6a08e628..b2be30e7 100644 --- a/src/becke_numerical_grid/grid_becke.irp.f +++ b/src/becke_numerical_grid/grid_becke.irp.f @@ -123,7 +123,7 @@ BEGIN_PROVIDER [double precision, grid_points_per_atom, (3,n_points_integration_ enddo END_PROVIDER -BEGIN_PROVIDER [double precision, weight_functions_at_grid_points, (n_points_integration_angular,n_points_radial_grid,nucl_num) ] +BEGIN_PROVIDER [double precision, weight_at_r, (n_points_integration_angular,n_points_radial_grid,nucl_num) ] BEGIN_DOC ! Weight function at grid points : w_n(r) according to the equation (22) ! of Becke original paper (JCP, 88, 1988) @@ -156,7 +156,7 @@ BEGIN_PROVIDER [double precision, weight_functions_at_grid_points, (n_points_int accu += tmp_array(i) enddo accu = 1.d0/accu - weight_functions_at_grid_points(l,k,j) = tmp_array(j) * accu + weight_at_r(l,k,j) = tmp_array(j) * accu enddo enddo enddo @@ -164,7 +164,7 @@ BEGIN_PROVIDER [double precision, weight_functions_at_grid_points, (n_points_int END_PROVIDER -BEGIN_PROVIDER [double precision, final_weight_functions_at_grid_points, (n_points_integration_angular,n_points_radial_grid,nucl_num) ] +BEGIN_PROVIDER [double precision, final_weight_at_r, (n_points_integration_angular,n_points_radial_grid,nucl_num) ] BEGIN_DOC ! Total weight on each grid point which takes into account all Lebedev, Voronoi and radial weights. END_DOC @@ -182,7 +182,7 @@ BEGIN_PROVIDER [double precision, final_weight_functions_at_grid_points, (n_poin do k = 1, n_points_integration_angular ! for each angular point attached to the "jth" atom contrib_integration = derivative_knowles_function(alpha_knowles(int(nucl_charge(j))),m_knowles,x)& *knowles_function(alpha_knowles(int(nucl_charge(j))),m_knowles,x)**2 - final_weight_functions_at_grid_points(k,i,j) = weights_angular_points(k) * weight_functions_at_grid_points(k,i,j) * contrib_integration * dr_radial_integral + final_weight_at_r(k,i,j) = weights_angular_points(k) * weight_at_r(k,i,j) * contrib_integration * dr_radial_integral enddo enddo enddo diff --git a/src/becke_numerical_grid/grid_becke_vector.irp.f b/src/becke_numerical_grid/grid_becke_vector.irp.f index 46431e65..cf86121a 100644 --- a/src/becke_numerical_grid/grid_becke_vector.irp.f +++ b/src/becke_numerical_grid/grid_becke_vector.irp.f @@ -24,14 +24,14 @@ BEGIN_PROVIDER [integer, n_points_final_grid] END_PROVIDER BEGIN_PROVIDER [double precision, final_grid_points, (3,n_points_final_grid)] -&BEGIN_PROVIDER [double precision, final_weight_functions_at_final_grid_points, (n_points_final_grid) ] +&BEGIN_PROVIDER [double precision, final_weight_at_r_vector, (n_points_final_grid) ] &BEGIN_PROVIDER [integer, index_final_points, (3,n_points_final_grid) ] &BEGIN_PROVIDER [integer, index_final_points_reverse, (n_points_integration_angular,n_points_radial_grid,nucl_num) ] implicit none BEGIN_DOC ! final_grid_points(1:3,j) = (/ x, y, z /) of the jth grid point ! -! final_weight_functions_at_final_grid_points(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions +! final_weight_at_r_vector(i) = Total weight function of the ith grid point which contains the Lebedev, Voronoi and radial weights contributions ! ! index_final_points(1:3,i) = gives the angular, radial and atomic indices associated to the ith grid point ! @@ -52,7 +52,7 @@ END_PROVIDER final_grid_points(1,i_count) = grid_points_per_atom(1,k,i,j) final_grid_points(2,i_count) = grid_points_per_atom(2,k,i,j) final_grid_points(3,i_count) = grid_points_per_atom(3,k,i,j) - final_weight_functions_at_final_grid_points(i_count) = final_weight_functions_at_grid_points(k,i,j) + final_weight_at_r_vector(i_count) = final_weight_at_r(k,i,j) index_final_points(1,i_count) = k index_final_points(2,i_count) = i index_final_points(3,i_count) = j diff --git a/src/davidson/README.rst b/src/davidson/README.rst index bd88edfc..1ff7847a 100644 --- a/src/davidson/README.rst +++ b/src/davidson/README.rst @@ -8,4 +8,7 @@ a dressing is used, the dressing column should be defined and the :ref:`davidsondressed` module should be used. If no dressing is required, the :ref:`davidson` module should be used, and it has a default zero dressing vector. +The important providers for that module are: +# `psi_energy` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the Hamiltonian, dressed or not. It uses the general subroutine `u_0_H_u_0`. +# `psi_energy_bielec` which is the expectation value over the wave function (`psi_det`, `psi_coef`) of the standard two-electrons coulomb operator. It uses the general routine `u_0_H_u_0_bielec`. diff --git a/src/davidson/u0_h_u0.irp.f b/src/davidson/u0_h_u0.irp.f index 5158858f..fee36079 100644 --- a/src/davidson/u0_h_u0.irp.f +++ b/src/davidson/u0_h_u0.irp.f @@ -1,7 +1,7 @@ BEGIN_PROVIDER [ double precision, psi_energy, (N_states) ] implicit none BEGIN_DOC -! Energy of the current wave function +! Electronic energy of the current wave function END_DOC call u_0_H_u_0(psi_energy,psi_coef,N_det,psi_det,N_int,N_states,psi_det_size) integer :: i diff --git a/src/determinants/README.rst b/src/determinants/README.rst index ff83f7c4..63d88b02 100644 --- a/src/determinants/README.rst +++ b/src/determinants/README.rst @@ -3,3 +3,19 @@ Determinants ============ Contains everything for the computation of the Hamiltonian matrix elements in the basis of orthogonal Slater determinants built on a restricted spin-orbitals basis. + +The main providers for this module are: + +# :option:`determinants n_states`: number of states to be computed +# `psi_det`: list of determinants in the wave function used in many routines/providers of the |QP|. +# `psi_coef`: list of coefficients, for all :option:`determinants n_states` states, and all determinants. + +The main routines for this module are: + +# `i_H_j`: computes the Hamiltonian matrix element between two arbitrary Slater determinants. +# `i_H_j_s2`: computes the Hamiltonian and (:math:`S^2`) matrix element between two arbitrary Slater determinants. +# `i_H_j_verbose`: returns the decomposition in terms of one- and two-body components of the Hamiltonian matrix elements between two arbitrary Slater determinants. Also return the fermionic phase factor. +# `i_H_psi`: computes the Hamiltonian matrix element between an arbitrary Slater determinant and a wave function composed of a sum of arbitrary Slater determinants. + + +For an example of how to use these routines and providers, take a look at :file:`example.irp.f`. diff --git a/src/dft_keywords/README.rst b/src/dft_keywords/README.rst index febb0a9f..89980d79 100644 --- a/src/dft_keywords/README.rst +++ b/src/dft_keywords/README.rst @@ -1,12 +1,13 @@ ============ -DFT Keywords +dft_keywords ============ This module contains the main keywords related to a DFT calculation or RS-DFT calculation, such as: -# :option:exchange_functional -# :option:correlation_functional -# :option:HF_exchange : only relevent for the :ref:`ks_scf` program -# :option:density_for_dft : mainly relevent for multi-determinant range separated DFT, see the plugins of eginer. +# :option:`dft_keywords exchange_functional` +# :option:`dft_keywords correlation_functional` +# :option:`dft_keywords HF_exchange` : only relevent for the :ref:`ks_scf` program The keyword for the range separation parameter :math:`\mu` is the :option:`ao_two_e_erf_integrals mu_erf` keyword. + +The keyword for the type of density used in RS-DFT calculation with a multi-configurational wave function is the :option:`density_for_dft density_for_dft` keyword. diff --git a/src/dft_utils_in_r/dm_in_r.irp.f b/src/dft_utils_in_r/dm_in_r.irp.f index 888573cd..33da7ffe 100644 --- a/src/dft_utils_in_r/dm_in_r.irp.f +++ b/src/dft_utils_in_r/dm_in_r.irp.f @@ -103,8 +103,8 @@ end enddo end - BEGIN_PROVIDER [double precision, one_body_dm_mo_alpha_at_grid_points, (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) ] -&BEGIN_PROVIDER [double precision, one_body_dm_mo_beta_at_grid_points, (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) ] + BEGIN_PROVIDER [double precision, one_dm_alpha_in_r, (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) ] +&BEGIN_PROVIDER [double precision, one_dm_beta_in_r, (n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) ] implicit none integer :: i,j,k,l,m,istate double precision :: contrib @@ -114,8 +114,8 @@ end do k = 1, n_points_radial_grid -1 do l = 1, n_points_integration_angular do istate = 1, N_States - one_body_dm_mo_alpha_at_grid_points(l,k,j,istate) = 0.d0 - one_body_dm_mo_beta_at_grid_points(l,k,j,istate) = 0.d0 + one_dm_alpha_in_r(l,k,j,istate) = 0.d0 + one_dm_beta_in_r(l,k,j,istate) = 0.d0 enddo r(1) = grid_points_per_atom(1,l,k,j) r(2) = grid_points_per_atom(2,l,k,j) @@ -124,8 +124,8 @@ end double precision :: dm_a(N_states),dm_b(N_states) call dm_dft_alpha_beta_at_r(r,dm_a,dm_b) do istate=1,N_states - one_body_dm_mo_alpha_at_grid_points(l,k,j,istate) = dm_a(istate) - one_body_dm_mo_beta_at_grid_points(l,k,j,istate) = dm_b(istate) + one_dm_alpha_in_r(l,k,j,istate) = dm_a(istate) + one_dm_beta_in_r(l,k,j,istate) = dm_b(istate) enddo enddo @@ -161,15 +161,15 @@ END_PROVIDER END_PROVIDER - BEGIN_PROVIDER [double precision, one_body_dm_alpha_and_grad_at_r, (4,n_points_final_grid,N_states) ] -&BEGIN_PROVIDER [double precision, one_body_dm_beta_and_grad_at_r, (4,n_points_final_grid,N_states) ] + BEGIN_PROVIDER [double precision, one_dm_and_grad_alpha_in_r, (4,n_points_final_grid,N_states) ] +&BEGIN_PROVIDER [double precision, one_dm_and_grad_beta_in_r, (4,n_points_final_grid,N_states) ] &BEGIN_PROVIDER [double precision, one_body_grad_2_dm_alpha_at_r, (n_points_final_grid,N_states) ] &BEGIN_PROVIDER [double precision, one_body_grad_2_dm_beta_at_r, (n_points_final_grid,N_states) ] BEGIN_DOC -! one_body_dm_alpha_and_grad_at_r(1,i,i_state) = d\dx n_alpha(r_i,istate) -! one_body_dm_alpha_and_grad_at_r(2,i,i_state) = d\dy n_alpha(r_i,istate) -! one_body_dm_alpha_and_grad_at_r(3,i,i_state) = d\dz n_alpha(r_i,istate) -! one_body_dm_alpha_and_grad_at_r(4,i,i_state) = n_alpha(r_i,istate) +! one_dm_and_grad_alpha_in_r(1,i,i_state) = d\dx n_alpha(r_i,istate) +! one_dm_and_grad_alpha_in_r(2,i,i_state) = d\dy n_alpha(r_i,istate) +! one_dm_and_grad_alpha_in_r(3,i,i_state) = d\dz n_alpha(r_i,istate) +! one_dm_and_grad_alpha_in_r(4,i,i_state) = n_alpha(r_i,istate) ! one_body_grad_2_dm_alpha_at_r(i,istate) = d\dx n_alpha(r_i,istate)^2 + d\dy n_alpha(r_i,istate)^2 + d\dz n_alpha(r_i,istate)^2 ! where r_i is the ith point of the grid and istate is the state number END_DOC @@ -188,112 +188,18 @@ END_PROVIDER r(3) = final_grid_points(3,i) !!!! Works also with the ao basis call density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r(r,dm_a,dm_b, dm_a_grad, dm_b_grad, aos_array, grad_aos_array) - one_body_dm_alpha_and_grad_at_r(1,i,istate) = dm_a_grad(1,istate) - one_body_dm_alpha_and_grad_at_r(2,i,istate) = dm_a_grad(2,istate) - one_body_dm_alpha_and_grad_at_r(3,i,istate) = dm_a_grad(3,istate) - one_body_dm_alpha_and_grad_at_r(4,i,istate) = dm_a(istate) + one_dm_and_grad_alpha_in_r(1,i,istate) = dm_a_grad(1,istate) + one_dm_and_grad_alpha_in_r(2,i,istate) = dm_a_grad(2,istate) + one_dm_and_grad_alpha_in_r(3,i,istate) = dm_a_grad(3,istate) + one_dm_and_grad_alpha_in_r(4,i,istate) = dm_a(istate) one_body_grad_2_dm_alpha_at_r(i,istate) = dm_a_grad(1,istate) * dm_a_grad(1,istate) + dm_a_grad(2,istate) * dm_a_grad(2,istate) + dm_a_grad(3,istate) * dm_a_grad(3,istate) - one_body_dm_beta_and_grad_at_r(1,i,istate) = dm_b_grad(1,istate) - one_body_dm_beta_and_grad_at_r(2,i,istate) = dm_b_grad(2,istate) - one_body_dm_beta_and_grad_at_r(3,i,istate) = dm_b_grad(3,istate) - one_body_dm_beta_and_grad_at_r(4,i,istate) = dm_b(istate) + one_dm_and_grad_beta_in_r(1,i,istate) = dm_b_grad(1,istate) + one_dm_and_grad_beta_in_r(2,i,istate) = dm_b_grad(2,istate) + one_dm_and_grad_beta_in_r(3,i,istate) = dm_b_grad(3,istate) + one_dm_and_grad_beta_in_r(4,i,istate) = dm_b(istate) one_body_grad_2_dm_beta_at_r(i,istate) = dm_b_grad(1,istate) * dm_b_grad(1,istate) + dm_b_grad(2,istate) * dm_b_grad(2,istate) + dm_b_grad(3,istate) * dm_b_grad(3,istate) enddo enddo END_PROVIDER - - - - BEGIN_PROVIDER [double precision, one_body_dm_mo_alpha_and_grad_at_grid_points, (4,n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) ] -&BEGIN_PROVIDER [double precision, one_body_dm_mo_beta_and_grad_at_grid_points, (4,n_points_integration_angular,n_points_radial_grid,nucl_num,N_states) ] - BEGIN_DOC -! one_body_dm_mo_alpha_and_grad_at_grid_points(1,.....,i_state) = d\dx \rho_{\alpha}^{\istate}(r) -! one_body_dm_mo_alpha_and_grad_at_grid_points(2,.....,i_state) = d\dy \rho_{\alpha}^{\istate}(r) -! one_body_dm_mo_alpha_and_grad_at_grid_points(3,.....,i_state) = d\dz \rho_{\alpha}^{\istate}(r) -! one_body_dm_mo_alpha_and_grad_at_grid_points(4,.....,i_state) = \rho_{\alpha}^{\istate}(r) - END_DOC - implicit none - integer :: i,j,k,l,m,istate - double precision :: contrib - double precision :: r(3) - double precision :: aos_array(ao_num),grad_aos_array(3,ao_num) - do istate = 1, N_States - do j = 1, nucl_num - do k = 1, n_points_radial_grid -1 - do l = 1, n_points_integration_angular - do m = 1, 4 - one_body_dm_mo_alpha_and_grad_at_grid_points(m,l,k,j,istate) = 0.d0 - one_body_dm_mo_beta_and_grad_at_grid_points(m,l,k,j,istate) = 0.d0 - enddo - r(1) = grid_points_per_atom(1,l,k,j) - r(2) = grid_points_per_atom(2,l,k,j) - r(3) = grid_points_per_atom(3,l,k,j) - - !!!!! Works also with the ao basis - double precision :: dm_a(N_states),dm_b(N_states), dm_a_grad(3,N_states), dm_b_grad(3,N_states) - call density_and_grad_alpha_beta_and_all_aos_and_grad_aos_at_r(r,dm_a,dm_b, dm_a_grad, dm_b_grad, aos_array, grad_aos_array) - one_body_dm_mo_alpha_and_grad_at_grid_points(1,l,k,j,istate) = dm_a_grad(1,istate) - one_body_dm_mo_alpha_and_grad_at_grid_points(2,l,k,j,istate) = dm_a_grad(2,istate) - one_body_dm_mo_alpha_and_grad_at_grid_points(3,l,k,j,istate) = dm_a_grad(3,istate) - one_body_dm_mo_alpha_and_grad_at_grid_points(4,l,k,j,istate) = dm_a(istate) - - - one_body_dm_mo_beta_and_grad_at_grid_points(1,l,k,j,istate) = dm_b_grad(1,istate) - one_body_dm_mo_beta_and_grad_at_grid_points(2,l,k,j,istate) = dm_b_grad(2,istate) - one_body_dm_mo_beta_and_grad_at_grid_points(3,l,k,j,istate) = dm_b_grad(3,istate) - one_body_dm_mo_beta_and_grad_at_grid_points(4,l,k,j,istate) = dm_b(istate) - - - enddo - enddo - enddo - enddo - -END_PROVIDER - - - BEGIN_PROVIDER [ double precision, integral_density_alpha_knowles_becke_per_atom, (nucl_num)] -&BEGIN_PROVIDER [ double precision, integral_density_beta_knowles_becke_per_atom, (nucl_num)] - implicit none - double precision :: accu - integer :: i,j,k,l,istate - double precision :: x - double precision :: integrand(n_points_integration_angular), weights(n_points_integration_angular) - double precision :: f_average_angular_alpha,f_average_angular_beta - double precision :: derivative_knowles_function,knowles_function - - ! Run over all nuclei in order to perform the Voronoi partition - ! according ot equation (6) of the paper of Becke (JCP, (88), 1988) - ! Here the m index is referred to the w_m(r) weight functions of equation (22) - ! Run over all points of integrations : there are - ! n_points_radial_grid (i) * n_points_integration_angular (k) - do j = 1, nucl_num - integral_density_alpha_knowles_becke_per_atom(j) = 0.d0 - integral_density_beta_knowles_becke_per_atom(j) = 0.d0 - do i = 1, n_points_radial_grid-1 - ! Angular integration over the solid angle Omega for a FIXED angular coordinate "r" - f_average_angular_alpha = 0.d0 - f_average_angular_beta = 0.d0 - do istate = 1, N_states - do k = 1, n_points_integration_angular - f_average_angular_alpha += weights_angular_points(k) * one_body_dm_mo_alpha_at_grid_points(k,i,j,istate) * weight_functions_at_grid_points(k,i,j) - f_average_angular_beta += weights_angular_points(k) * one_body_dm_mo_beta_at_grid_points(k,i,j,istate) * weight_functions_at_grid_points(k,i,j) - enddo - enddo - ! - x = grid_points_radial(i) ! x value for the mapping of the [0, +\infty] to [0,1] - double precision :: contrib_integration -! print*,m_knowles - contrib_integration = derivative_knowles_function(alpha_knowles(int(nucl_charge(j))),m_knowles,x) & - *knowles_function(alpha_knowles(int(nucl_charge(j))),m_knowles,x)**2 - integral_density_alpha_knowles_becke_per_atom(j) += contrib_integration *f_average_angular_alpha - integral_density_beta_knowles_becke_per_atom(j) += contrib_integration *f_average_angular_beta - enddo - integral_density_alpha_knowles_becke_per_atom(j) *= dr_radial_integral - integral_density_beta_knowles_becke_per_atom(j) *= dr_radial_integral - enddo - -END_PROVIDER - diff --git a/src/dft_utils_one_e/e_xc.irp.f b/src/dft_utils_one_e/e_xc.irp.f index a27eb167..6d89fa7e 100644 --- a/src/dft_utils_one_e/e_xc.irp.f +++ b/src/dft_utils_one_e/e_xc.irp.f @@ -19,7 +19,7 @@ r(1) = final_grid_points(1,i) r(2) = final_grid_points(2,i) r(3) = final_grid_points(3,i) - weight=final_weight_functions_at_final_grid_points(i) + weight = final_weight_at_r_vector(i) rhoa(istate) = one_body_dm_alpha_at_r(i,istate) rhob(istate) = one_body_dm_beta_at_r(i,istate) call ec_LDA(rhoa(istate),rhob(istate),e_c,vc_a,vc_b) @@ -58,11 +58,11 @@ r(1) = final_grid_points(1,i) r(2) = final_grid_points(2,i) r(3) = final_grid_points(3,i) - weight=final_weight_functions_at_final_grid_points(i) - rho_a(istate) = one_body_dm_alpha_and_grad_at_r(4,i,istate) - rho_b(istate) = one_body_dm_beta_and_grad_at_r(4,i,istate) - grad_rho_a(1:3,istate) = one_body_dm_alpha_and_grad_at_r(1:3,i,istate) - grad_rho_b(1:3,istate) = one_body_dm_beta_and_grad_at_r(1:3,i,istate) + weight = final_weight_at_r_vector(i) + rho_a(istate) = one_dm_and_grad_alpha_in_r(4,i,istate) + rho_b(istate) = one_dm_and_grad_beta_in_r(4,i,istate) + grad_rho_a(1:3,istate) = one_dm_and_grad_alpha_in_r(1:3,i,istate) + grad_rho_b(1:3,istate) = one_dm_and_grad_beta_in_r(1:3,i,istate) grad_rho_a_2 = 0.d0 grad_rho_b_2 = 0.d0 grad_rho_a_b = 0.d0 diff --git a/src/dft_utils_one_e/pot_ao.irp.f b/src/dft_utils_one_e/pot_ao.irp.f index 02d5bcb7..e7c0d932 100644 --- a/src/dft_utils_one_e/pot_ao.irp.f +++ b/src/dft_utils_one_e/pot_ao.irp.f @@ -19,7 +19,7 @@ r(1) = final_grid_points(1,i) r(2) = final_grid_points(2,i) r(3) = final_grid_points(3,i) - weight=final_weight_functions_at_final_grid_points(i) + weight = final_weight_at_r_vector(i) rhoa(istate) = one_body_dm_alpha_at_r(i,istate) rhob(istate) = one_body_dm_beta_at_r(i,istate) call ec_LDA_sr(mu_local,rhoa(istate),rhob(istate),e_c,vc_a,vc_b) @@ -94,11 +94,11 @@ r(1) = final_grid_points(1,i) r(2) = final_grid_points(2,i) r(3) = final_grid_points(3,i) - weight=final_weight_functions_at_final_grid_points(i) - rho_a(istate) = one_body_dm_alpha_and_grad_at_r(4,i,istate) - rho_b(istate) = one_body_dm_beta_and_grad_at_r(4,i,istate) - grad_rho_a(1:3,istate) = one_body_dm_alpha_and_grad_at_r(1:3,i,istate) - grad_rho_b(1:3,istate) = one_body_dm_beta_and_grad_at_r(1:3,i,istate) + weight = final_weight_at_r_vector(i) + rho_a(istate) = one_dm_and_grad_alpha_in_r(4,i,istate) + rho_b(istate) = one_dm_and_grad_beta_in_r(4,i,istate) + grad_rho_a(1:3,istate) = one_dm_and_grad_alpha_in_r(1:3,i,istate) + grad_rho_b(1:3,istate) = one_dm_and_grad_beta_in_r(1:3,i,istate) grad_rho_a_2 = 0.d0 grad_rho_b_2 = 0.d0 grad_rho_a_b = 0.d0 diff --git a/src/dft_utils_one_e/sr_exc.irp.f b/src/dft_utils_one_e/sr_exc.irp.f index 6c54769b..0aee350a 100644 --- a/src/dft_utils_one_e/sr_exc.irp.f +++ b/src/dft_utils_one_e/sr_exc.irp.f @@ -19,7 +19,7 @@ r(1) = final_grid_points(1,i) r(2) = final_grid_points(2,i) r(3) = final_grid_points(3,i) - weight=final_weight_functions_at_final_grid_points(i) + weight = final_weight_at_r_vector(i) rhoa(istate) = one_body_dm_alpha_at_r(i,istate) rhob(istate) = one_body_dm_beta_at_r(i,istate) call ec_LDA_sr(mu_erf_dft,rhoa(istate),rhob(istate),e_c,vc_a,vc_b) @@ -58,11 +58,11 @@ r(1) = final_grid_points(1,i) r(2) = final_grid_points(2,i) r(3) = final_grid_points(3,i) - weight=final_weight_functions_at_final_grid_points(i) - rho_a(istate) = one_body_dm_alpha_and_grad_at_r(4,i,istate) - rho_b(istate) = one_body_dm_beta_and_grad_at_r(4,i,istate) - grad_rho_a(1:3,istate) = one_body_dm_alpha_and_grad_at_r(1:3,i,istate) - grad_rho_b(1:3,istate) = one_body_dm_beta_and_grad_at_r(1:3,i,istate) + weight = final_weight_at_r_vector(i) + rho_a(istate) = one_dm_and_grad_alpha_in_r(4,i,istate) + rho_b(istate) = one_dm_and_grad_beta_in_r(4,i,istate) + grad_rho_a(1:3,istate) = one_dm_and_grad_alpha_in_r(1:3,i,istate) + grad_rho_b(1:3,istate) = one_dm_and_grad_beta_in_r(1:3,i,istate) grad_rho_a_2 = 0.d0 grad_rho_b_2 = 0.d0 grad_rho_a_b = 0.d0 diff --git a/src/dft_utils_one_e/sr_pot_ao.irp.f b/src/dft_utils_one_e/sr_pot_ao.irp.f index 8e937a35..1b786cac 100644 --- a/src/dft_utils_one_e/sr_pot_ao.irp.f +++ b/src/dft_utils_one_e/sr_pot_ao.irp.f @@ -17,7 +17,7 @@ r(1) = final_grid_points(1,i) r(2) = final_grid_points(2,i) r(3) = final_grid_points(3,i) - weight=final_weight_functions_at_final_grid_points(i) + weight=final_weight_at_r_vector(i) rhoa(istate) = one_body_dm_alpha_at_r(i,istate) rhob(istate) = one_body_dm_beta_at_r(i,istate) call ec_LDA_sr(mu_erf_dft,rhoa(istate),rhob(istate),e_c,sr_vc_a,sr_vc_b) @@ -92,11 +92,11 @@ r(1) = final_grid_points(1,i) r(2) = final_grid_points(2,i) r(3) = final_grid_points(3,i) - weight=final_weight_functions_at_final_grid_points(i) - rho_a(istate) = one_body_dm_alpha_and_grad_at_r(4,i,istate) - rho_b(istate) = one_body_dm_beta_and_grad_at_r(4,i,istate) - grad_rho_a(1:3,istate) = one_body_dm_alpha_and_grad_at_r(1:3,i,istate) - grad_rho_b(1:3,istate) = one_body_dm_beta_and_grad_at_r(1:3,i,istate) + weight = final_weight_at_r_vector(i) + rho_a(istate) = one_dm_and_grad_alpha_in_r(4,i,istate) + rho_b(istate) = one_dm_and_grad_beta_in_r(4,i,istate) + grad_rho_a(1:3,istate) = one_dm_and_grad_alpha_in_r(1:3,i,istate) + grad_rho_b(1:3,istate) = one_dm_and_grad_beta_in_r(1:3,i,istate) grad_rho_a_2 = 0.d0 grad_rho_b_2 = 0.d0 grad_rho_a_b = 0.d0 diff --git a/src/dft_utils_two_body/.gitignore b/src/dft_utils_two_body/.gitignore deleted file mode 120000 index a10a1637..00000000 --- a/src/dft_utils_two_body/.gitignore +++ /dev/null @@ -1 +0,0 @@ -../../data/module_gitignore \ No newline at end of file diff --git a/src/dft_utils_two_body/INSTALL.cfg b/src/dft_utils_two_body/INSTALL.cfg deleted file mode 100644 index 2b126bf9..00000000 --- a/src/dft_utils_two_body/INSTALL.cfg +++ /dev/null @@ -1,2 +0,0 @@ -[scripts] -qp_cipsi_rsh diff --git a/src/dft_utils_two_body/NEED b/src/dft_utils_two_body/NEED deleted file mode 100644 index 70cf5ffe..00000000 --- a/src/dft_utils_two_body/NEED +++ /dev/null @@ -1,3 +0,0 @@ -dft_utils_one_e -determinants -davidson_undressed diff --git a/src/dft_utils_two_body/mr_dft_energy.irp.f b/src/dft_utils_two_body/mr_dft_energy.irp.f deleted file mode 100644 index ae85ce8e..00000000 --- a/src/dft_utils_two_body/mr_dft_energy.irp.f +++ /dev/null @@ -1,44 +0,0 @@ -BEGIN_PROVIDER [double precision, electronic_energy_mr_dft, (N_states)] - implicit none - BEGIN_DOC - ! Energy for the multi determinantal DFT calculation - END_DOC - - print*,'You are using a variational method which uses the wave function stored in the EZFIO folder' - electronic_energy_mr_dft = total_range_separated_electronic_energy - - -END_PROVIDER - - subroutine print_variational_energy_dft - implicit none - print*,'/////////////////////////' - print*, '****************************************' - print*,'///////////////////' - print*, ' Regular range separated DFT energy ' - write(*, '(A22,X,F32.10)') 'mu_erf = ',mu_erf - write(*, '(A22,X,F16.10)') 'TOTAL ENERGY = ',electronic_energy_mr_dft+nuclear_repulsion - print*, '' - print*, 'Component of the energy ....' - print*, '' - write(*, '(A22,X,F16.10)') 'nuclear_repulsion = ',nuclear_repulsion - write(*, '(A22,X,F16.10)') 'psi_energy_erf = ',psi_energy_erf - write(*, '(A22,X,F16.10)') 'psi_dft_energy_h_cor= ',psi_dft_energy_h_core - write(*, '(A22,X,F16.10)') 'short_range_Hartree = ',short_range_Hartree - write(*, '(A22,X,F16.10)') 'two_elec_energy = ',two_elec_energy_dft - write(*, '(A22,X,F16.10)') 'energy_x = ',energy_x - write(*, '(A22,X,F16.10)') 'energy_c = ',energy_c - write(*, '(A22,X,F16.10)') 'E_xc = ',energy_x + energy_c - write(*, '(A22,X,F16.10)') 'E_Hxc = ',energy_x + energy_c + short_range_Hartree - print*, '' - print*, '****************************************' - print*, '' - write(*, '(A22,X,F16.10)') 'Approx eigenvalue = ',electronic_energy_mr_dft+nuclear_repulsion + Trace_v_Hxc - (short_range_Hartree + energy_x + energy_c) - write(*, '(A22,X,F16.10)') 'Trace_v_xc = ',Trace_v_xc - write(*, '(A22,X,F16.10)') 'Trace_v_Hxc = ',Trace_v_Hxc - - write(*, '(A22,X,F16.10)') ' = ',psi_energy - write(*, '(A22,X,F16.10)') 'psi_energy_bielec = ',psi_energy_bielec - write(*, '(A22,X,F16.10)') 'psi_energy_h_core = ',psi_energy_h_core - end - diff --git a/src/dft_utils_two_body/print_rsdft_variational_energy.irp.f b/src/dft_utils_two_body/print_rsdft_variational_energy.irp.f deleted file mode 100644 index e00e3b4b..00000000 --- a/src/dft_utils_two_body/print_rsdft_variational_energy.irp.f +++ /dev/null @@ -1,16 +0,0 @@ -program DFT_Utils_two_body_main - implicit none - read_wf = .true. - touch read_wf - disk_access_mo_one_integrals = "None" - touch disk_access_mo_one_integrals - disk_access_mo_integrals = "None" - touch disk_access_mo_integrals - disk_access_ao_integrals = "None" - touch disk_access_ao_integrals - density_for_dft = "WFT" - touch density_for_dft - call print_variational_energy_dft - - -end diff --git a/src/dft_utils_two_body/psi_energy_erf.irp.f b/src/dft_utils_two_body/psi_energy_erf.irp.f deleted file mode 100644 index 05ac19ec..00000000 --- a/src/dft_utils_two_body/psi_energy_erf.irp.f +++ /dev/null @@ -1,81 +0,0 @@ - -BEGIN_PROVIDER [ double precision, psi_energy_erf, (N_states) ] - use bitmasks - implicit none - BEGIN_DOC - ! Computes e_0 = / - ! - END_DOC - integer :: i - call u_0_H_u_0_erf(psi_energy_erf,psi_coef,N_det,psi_det,N_int,N_states,psi_det_size) - do i=N_det+1,N_states - psi_energy_erf(i) = 0.d0 - enddo -END_PROVIDER - - -BEGIN_PROVIDER [ double precision, psi_energy_h_core_and_sr_hartree, (N_states) ] - implicit none - BEGIN_DOC -! psi_energy_h_core = - END_DOC - psi_energy_h_core_and_sr_hartree = psi_energy_h_core + short_range_Hartree -END_PROVIDER - - -BEGIN_PROVIDER [ double precision, total_range_separated_electronic_energy, (N_states) ] - implicit none - BEGIN_DOC -! Total_range_separated_electronic_energy = + (1/2) + + E_{x} + E_{c} - END_DOC - total_range_separated_electronic_energy = psi_energy_h_core + short_range_Hartree + psi_energy_erf + energy_x + energy_c -END_PROVIDER - - -BEGIN_PROVIDER [ double precision, two_elec_energy_dft, (N_states) ] - implicit none - BEGIN_DOC -! two_elec_energy_dft = (1/2) + - END_DOC - two_elec_energy_dft = short_range_Hartree + psi_energy_erf -END_PROVIDER - - - BEGIN_PROVIDER [ double precision, ref_bitmask_energy_erf ] -&BEGIN_PROVIDER [ double precision, bi_elec_ref_bitmask_energy_erf ] - use bitmasks - implicit none - BEGIN_DOC - ! Energy with the LONG RANGE INTERACTION of the reference bitmask used in Slater rules - END_DOC - - integer :: occ(N_int*bit_kind_size,2) - integer :: i,j - - call bitstring_to_list(ref_bitmask(1,1), occ(1,1), i, N_int) - call bitstring_to_list(ref_bitmask(1,2), occ(1,2), i, N_int) - - - ref_bitmask_energy_erf = 0.d0 - bi_elec_ref_bitmask_energy_erf = 0.d0 - - do j= 1, elec_alpha_num - do i = j+1, elec_alpha_num - bi_elec_ref_bitmask_energy_erf += mo_two_e_int_erf_jj_anti(occ(i,1),occ(j,1)) - ref_bitmask_energy_erf += mo_two_e_int_erf_jj_anti(occ(i,1),occ(j,1)) - enddo - enddo - - do j= 1, elec_beta_num - do i = j+1, elec_beta_num - bi_elec_ref_bitmask_energy_erf += mo_two_e_int_erf_jj_anti(occ(i,2),occ(j,2)) - ref_bitmask_energy_erf += mo_two_e_int_erf_jj_anti(occ(i,2),occ(j,2)) - enddo - do i= 1, elec_alpha_num - bi_elec_ref_bitmask_energy_erf += mo_two_e_int_erf_jj(occ(i,1),occ(j,2)) - ref_bitmask_energy_erf += mo_two_e_int_erf_jj(occ(i,1),occ(j,2)) - enddo - enddo - -END_PROVIDER - diff --git a/src/dft_utils_two_body/routines_save_integrals_dft.irp.f b/src/dft_utils_two_body/routines_save_integrals_dft.irp.f deleted file mode 100644 index 6809de86..00000000 --- a/src/dft_utils_two_body/routines_save_integrals_dft.irp.f +++ /dev/null @@ -1,26 +0,0 @@ - -subroutine save_one_e_effective_potential - implicit none - BEGIN_DOC -! used to save the effective_one_e_potential into the one-body integrals in the ezfio folder -! this effective_one_e_potential is computed with the current density -! and will couple the WFT with DFT for the next regular WFT calculation - END_DOC - call ezfio_set_mo_one_e_integrals_integral_nuclear(effective_one_e_potential_without_kin) - call ezfio_set_mo_one_e_integrals_integral_kinetic(mo_kinetic_integral) - - print *, 'Effective DFT potential is written on disk on the mo_ne_integral integrals' - call ezfio_set_mo_one_e_integrals_disk_access_mo_one_integrals("Read") - -end - -subroutine write_all_integrals_for_mrdft - implicit none - BEGIN_DOC - ! saves all integrals needed for RS-DFT-MRCI calculation: one-body effective potential and two-elec erf integrals - END_DOC - call save_one_e_effective_potential - call save_erf_bi_elec_integrals_mo - call save_erf_bi_elec_integrals_ao -end - diff --git a/src/dft_utils_two_body/slater_rules_erf.irp.f b/src/dft_utils_two_body/slater_rules_erf.irp.f deleted file mode 100644 index a1c3fd09..00000000 --- a/src/dft_utils_two_body/slater_rules_erf.irp.f +++ /dev/null @@ -1,226 +0,0 @@ -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!! THIS FILE CONTAINS EVERYTHING YOU NEED TO COMPUTE THE LONG RANGE PART OF THE INTERACTION -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -subroutine i_H_j_erf(key_i,key_j,Nint,hij) - use bitmasks - implicit none - BEGIN_DOC - ! Returns where i and j are determinants - ! and the W_{ee}^{lr} is the long range two-body interaction - END_DOC - integer, intent(in) :: Nint - integer(bit_kind), intent(in) :: key_i(Nint,2), key_j(Nint,2) - double precision, intent(out) :: hij - - integer :: exc(0:2,2,2) - integer :: degree - double precision :: get_mo_bielec_integral_erf - integer :: m,n,p,q - integer :: i,j,k - integer :: occ(Nint*bit_kind_size,2) - double precision :: diag_H_mat_elem_erf, phase,phase_2 - integer :: n_occ_ab(2) - PROVIDE mo_bielec_integrals_erf_in_map mo_integrals_erf_map int_erf_3_index_exc - - ASSERT (Nint > 0) - ASSERT (Nint == N_int) - ASSERT (sum(popcnt(key_i(:,1))) == elec_alpha_num) - ASSERT (sum(popcnt(key_i(:,2))) == elec_beta_num) - ASSERT (sum(popcnt(key_j(:,1))) == elec_alpha_num) - ASSERT (sum(popcnt(key_j(:,2))) == elec_beta_num) - - hij = 0.d0 - !DIR$ FORCEINLINE - call get_excitation_degree(key_i,key_j,degree,Nint) - integer :: spin - select case (degree) - case (2) - call get_double_excitation(key_i,key_j,exc,phase,Nint) - if (exc(0,1,1) == 1) then - ! Mono alpha, mono beta - if(exc(1,1,1) == exc(1,2,2) )then - hij = phase * int_erf_3_index_exc(exc(1,1,1),exc(1,1,2),exc(1,2,1)) - else if (exc(1,2,1) ==exc(1,1,2))then - hij = phase * int_erf_3_index_exc(exc(1,2,1),exc(1,1,1),exc(1,2,2)) - else - hij = phase*get_mo_bielec_integral_erf( & - exc(1,1,1), & - exc(1,1,2), & - exc(1,2,1), & - exc(1,2,2) ,mo_integrals_erf_map) - endif - else if (exc(0,1,1) == 2) then - ! Double alpha - hij = phase*(get_mo_bielec_integral_erf( & - exc(1,1,1), & - exc(2,1,1), & - exc(1,2,1), & - exc(2,2,1) ,mo_integrals_erf_map) - & - get_mo_bielec_integral_erf( & - exc(1,1,1), & - exc(2,1,1), & - exc(2,2,1), & - exc(1,2,1) ,mo_integrals_erf_map) ) - else if (exc(0,1,2) == 2) then - ! Double beta - hij = phase*(get_mo_bielec_integral_erf( & - exc(1,1,2), & - exc(2,1,2), & - exc(1,2,2), & - exc(2,2,2) ,mo_integrals_erf_map) - & - get_mo_bielec_integral_erf( & - exc(1,1,2), & - exc(2,1,2), & - exc(2,2,2), & - exc(1,2,2) ,mo_integrals_erf_map) ) - endif - case (1) - call get_mono_excitation(key_i,key_j,exc,phase,Nint) - !DIR$ FORCEINLINE - call bitstring_to_list_ab(key_i, occ, n_occ_ab, Nint) - if (exc(0,1,1) == 1) then - ! Mono alpha - m = exc(1,1,1) - p = exc(1,2,1) - spin = 1 - do i = 1, n_occ_ab(1) - hij += -int_erf_3_index_exc(occ(i,1),m,p) + int_erf_3_index(occ(i,1),m,p) - enddo - do i = 1, n_occ_ab(2) - hij += int_erf_3_index(occ(i,2),m,p) - enddo - else - ! Mono beta - m = exc(1,1,2) - p = exc(1,2,2) - spin = 2 - do i = 1, n_occ_ab(2) - hij += -int_erf_3_index_exc(occ(i,2),m,p) + int_erf_3_index(occ(i,2),m,p) - enddo - do i = 1, n_occ_ab(1) - hij += int_erf_3_index(occ(i,1),m,p) - enddo - endif - hij = hij * phase - case (0) - hij = diag_H_mat_elem_erf(key_i,Nint) - end select -end - - -double precision function diag_H_mat_elem_erf(key_i,Nint) - BEGIN_DOC -! returns where |i> is a determinant and -! W_{ee}^{lr} is the two body long-range interaction - END_DOC - implicit none - integer(bit_kind), intent(in) :: key_i(N_int,2) - integer, intent(in) :: Nint - integer :: i,j - integer :: occ(Nint*bit_kind_size,2) - integer :: n_occ_ab(2) - call bitstring_to_list_ab(key_i, occ, n_occ_ab, Nint) - diag_H_mat_elem_erf = 0.d0 - ! alpha - alpha - do i = 1, n_occ_ab(1) - do j = i+1, n_occ_ab(1) - diag_H_mat_elem_erf += mo_two_e_int_erf_jj_anti(occ(i,1),occ(j,1)) - enddo - enddo - - ! beta - beta - do i = 1, n_occ_ab(2) - do j = i+1, n_occ_ab(2) - diag_H_mat_elem_erf += mo_two_e_int_erf_jj_anti(occ(i,2),occ(j,2)) - enddo - enddo - - ! alpha - beta - do i = 1, n_occ_ab(1) - do j = 1, n_occ_ab(2) - diag_H_mat_elem_erf += mo_two_e_int_erf_jj(occ(i,1),occ(j,2)) - enddo - enddo -end -subroutine i_H_j_mono_spin_erf(key_i,key_j,Nint,spin,hij) - use bitmasks - implicit none - BEGIN_DOC - ! Returns where i and j are determinants differing by a single excitation - END_DOC - integer, intent(in) :: Nint, spin - integer(bit_kind), intent(in) :: key_i(Nint,2), key_j(Nint,2) - double precision, intent(out) :: hij - - integer :: exc(0:2,2) - double precision :: phase - - PROVIDE int_erf_3_index_exc mo_bielec_integrals_erf_in_map - - call i_H_j_erf(key_i,key_j,Nint,hij) -end - - - -subroutine i_H_j_double_spin_erf(key_i,key_j,Nint,hij) - use bitmasks - implicit none - BEGIN_DOC - ! Returns where i and j are determinants differing by a same-spin double excitation - END_DOC - integer, intent(in) :: Nint - integer(bit_kind), intent(in) :: key_i(Nint), key_j(Nint) - double precision, intent(out) :: hij - - integer :: exc(0:2,2) - double precision :: phase - double precision, external :: get_mo_bielec_integral_erf - - PROVIDE int_erf_3_index_exc mo_bielec_integrals_erf_in_map - - call get_double_excitation_spin(key_i,key_j,exc,phase,Nint) - hij = phase*(get_mo_bielec_integral_erf( & - exc(1,1), & - exc(2,1), & - exc(1,2), & - exc(2,2), mo_integrals_erf_map) - & - get_mo_bielec_integral_erf( & - exc(1,1), & - exc(2,1), & - exc(2,2), & - exc(1,2), mo_integrals_erf_map) ) -end - -subroutine i_H_j_double_alpha_beta_erf(key_i,key_j,Nint,hij) - use bitmasks - implicit none - BEGIN_DOC - ! Returns where i and j are determinants differing by an opposite-spin double excitation - END_DOC - integer, intent(in) :: Nint - integer(bit_kind), intent(in) :: key_i(Nint,2), key_j(Nint,2) - double precision, intent(out) :: hij - - integer :: exc(0:2,2,2) - double precision :: phase, phase2 - double precision, external :: get_mo_bielec_integral_erf - - PROVIDE int_erf_3_index_exc mo_bielec_integrals_erf_in_map - - call get_mono_excitation_spin(key_i(1,1),key_j(1,1),exc(0,1,1),phase,Nint) - call get_mono_excitation_spin(key_i(1,2),key_j(1,2),exc(0,1,2),phase2,Nint) - phase = phase*phase2 - if (exc(1,1,1) == exc(1,2,2)) then - hij = phase * int_erf_3_index_exc(exc(1,1,1),exc(1,1,2),exc(1,2,1)) - else if (exc(1,2,1) == exc(1,1,2)) then - hij = phase * int_erf_3_index_exc(exc(1,2,1),exc(1,1,1),exc(1,2,2)) - else - hij = phase*get_mo_bielec_integral_erf( & - exc(1,1,1), & - exc(1,1,2), & - exc(1,2,1), & - exc(1,2,2) ,mo_integrals_erf_map) - endif -end - - diff --git a/src/dft_utils_two_body/u0_w_erf_u0.irp.f b/src/dft_utils_two_body/u0_w_erf_u0.irp.f deleted file mode 100644 index daa1501d..00000000 --- a/src/dft_utils_two_body/u0_w_erf_u0.irp.f +++ /dev/null @@ -1,482 +0,0 @@ -subroutine u_0_H_u_0_erf(e_0,u_0,n,keys_tmp,Nint,N_st,sze) - use bitmasks - implicit none - BEGIN_DOC - ! Computes e_0 = / - ! - ! n : number of determinants - ! - END_DOC - integer, intent(in) :: n,Nint, N_st, sze - double precision, intent(out) :: e_0(N_st) - double precision, intent(inout) :: u_0(sze,N_st) - integer(bit_kind),intent(in) :: keys_tmp(Nint,2,n) - - double precision, allocatable :: v_0(:,:), s_0(:,:), u_1(:,:) - double precision :: u_dot_u,u_dot_v,diag_H_mat_elem - integer :: i,j - - allocate (v_0(sze,N_st),s_0(sze,N_st)) - call H_S2_u_0_erf_nstates_openmp(v_0,s_0,u_0,N_st,sze) - double precision :: norm - do i=1,N_st - norm = u_dot_u(u_0(1,i),n) - if (norm /= 0.d0) then - e_0(i) = u_dot_v(v_0(1,i),u_0(1,i),n)/u_dot_u(u_0(1,i),n) - else - e_0(i) = 0.d0 - endif - enddo - deallocate (s_0, v_0) -end - - - - - - -subroutine H_S2_u_0_erf_nstates_openmp(v_0,s_0,u_0,N_st,sze) - use bitmasks - implicit none - BEGIN_DOC - ! Computes v_0 = H|u_0> and s_0 = S^2 |u_0> - ! - ! Assumes that the determinants are in psi_det - ! - ! istart, iend, ishift, istep are used in ZMQ parallelization. - END_DOC - integer, intent(in) :: N_st,sze - double precision, intent(inout) :: v_0(sze,N_st), s_0(sze,N_st), u_0(sze,N_st) - integer :: k - double precision, allocatable :: u_t(:,:), v_t(:,:), s_t(:,:) - !DIR$ ATTRIBUTES ALIGN : $IRP_ALIGN :: u_t - allocate(u_t(N_st,N_det),v_t(N_st,N_det),s_t(N_st,N_det)) - do k=1,N_st - call dset_order(u_0(1,k),psi_bilinear_matrix_order,N_det) - enddo - v_t = 0.d0 - s_t = 0.d0 - call dtranspose( & - u_0, & - size(u_0, 1), & - u_t, & - size(u_t, 1), & - N_det, N_st) - - call H_S2_u_0_erf_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,1,N_det,0,1) - deallocate(u_t) - - call dtranspose( & - v_t, & - size(v_t, 1), & - v_0, & - size(v_0, 1), & - N_st, N_det) - call dtranspose( & - s_t, & - size(s_t, 1), & - s_0, & - size(s_0, 1), & - N_st, N_det) - deallocate(v_t,s_t) - - do k=1,N_st - call dset_order(v_0(1,k),psi_bilinear_matrix_order_reverse,N_det) - call dset_order(s_0(1,k),psi_bilinear_matrix_order_reverse,N_det) - call dset_order(u_0(1,k),psi_bilinear_matrix_order_reverse,N_det) - enddo - -end - - -subroutine H_S2_u_0_erf_nstates_openmp_work(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - use bitmasks - implicit none - BEGIN_DOC - ! Computes v_0 = H|u_0> and s_0 = S^2 |u_0> - ! - ! Default should be 1,N_det,0,1 - END_DOC - integer, intent(in) :: N_st,sze,istart,iend,ishift,istep - double precision, intent(in) :: u_t(N_st,N_det) - double precision, intent(out) :: v_t(N_st,sze), s_t(N_st,sze) - - - PROVIDE ref_bitmask_energy_erf N_int short_range_Hartree - - select case (N_int) - case (1) - call H_S2_u_0_erf_nstates_openmp_work_1(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - case (2) - call H_S2_u_0_erf_nstates_openmp_work_2(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - case (3) - call H_S2_u_0_erf_nstates_openmp_work_3(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - case (4) - call H_S2_u_0_erf_nstates_openmp_work_4(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - case default - call H_S2_u_0_erf_nstates_openmp_work_N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - end select -end -BEGIN_TEMPLATE - -subroutine H_S2_u_0_erf_nstates_openmp_work_$N_int(v_t,s_t,u_t,N_st,sze,istart,iend,ishift,istep) - use bitmasks - implicit none - BEGIN_DOC - ! Computes v_t = H|u_t> and s_t = S^2 |u_t> - ! - ! Default should be 1,N_det,0,1 - END_DOC - integer, intent(in) :: N_st,sze,istart,iend,ishift,istep - double precision, intent(in) :: u_t(N_st,N_det) - double precision, intent(out) :: v_t(N_st,sze), s_t(N_st,sze) - - double precision :: hij, sij - integer :: i,j,k,l - integer :: k_a, k_b, l_a, l_b, m_a, m_b - integer :: istate - integer :: krow, kcol, krow_b, kcol_b - integer :: lrow, lcol - integer :: mrow, mcol - integer(bit_kind) :: spindet($N_int) - integer(bit_kind) :: tmp_det($N_int,2) - integer(bit_kind) :: tmp_det2($N_int,2) - integer(bit_kind) :: tmp_det3($N_int,2) - integer(bit_kind), allocatable :: buffer(:,:) - integer :: n_doubles - integer, allocatable :: doubles(:) - integer, allocatable :: singles_a(:) - integer, allocatable :: singles_b(:) - integer, allocatable :: idx(:), idx0(:) - integer :: maxab, n_singles_a, n_singles_b, kcol_prev, nmax - integer*8 :: k8 - - maxab = max(N_det_alpha_unique, N_det_beta_unique)+1 - allocate(idx0(maxab)) - - do i=1,maxab - idx0(i) = i - enddo - - ! Prepare the array of all alpha single excitations - ! ------------------------------------------------- - - PROVIDE N_int nthreads_davidson - !$OMP PARALLEL DEFAULT(NONE) NUM_THREADS(nthreads_davidson) & - !$OMP SHARED(psi_bilinear_matrix_rows, N_det, & - !$OMP psi_bilinear_matrix_columns, & - !$OMP psi_det_alpha_unique, psi_det_beta_unique, & - !$OMP n_det_alpha_unique, n_det_beta_unique, N_int, & - !$OMP psi_bilinear_matrix_transp_rows, & - !$OMP psi_bilinear_matrix_transp_columns, & - !$OMP psi_bilinear_matrix_transp_order, N_st, & - !$OMP psi_bilinear_matrix_order_transp_reverse, & - !$OMP psi_bilinear_matrix_columns_loc, & - !$OMP psi_bilinear_matrix_transp_rows_loc, & - !$OMP istart, iend, istep, irp_here, v_t, s_t, & - !$OMP ishift, idx0, u_t, maxab) & - !$OMP PRIVATE(krow, kcol, tmp_det, spindet, k_a, k_b, i, & - !$OMP lcol, lrow, l_a, l_b, & - !$OMP buffer, doubles, n_doubles, & - !$OMP tmp_det2, hij, sij, idx, l, kcol_prev, & - !$OMP singles_a, n_singles_a, singles_b, & - !$OMP n_singles_b, k8) - - ! Alpha/Beta double excitations - ! ============================= - - allocate( buffer($N_int,maxab), & - singles_a(maxab), & - singles_b(maxab), & - doubles(maxab), & - idx(maxab)) - - kcol_prev=-1 - - ASSERT (iend <= N_det) - ASSERT (istart > 0) - ASSERT (istep > 0) - - !$OMP DO SCHEDULE(dynamic,64) - do k_a=istart+ishift,iend,istep - - krow = psi_bilinear_matrix_rows(k_a) - ASSERT (krow <= N_det_alpha_unique) - - kcol = psi_bilinear_matrix_columns(k_a) - ASSERT (kcol <= N_det_beta_unique) - - tmp_det(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, krow) - tmp_det(1:$N_int,2) = psi_det_beta_unique (1:$N_int, kcol) - - if (kcol /= kcol_prev) then - call get_all_spin_singles_$N_int( & - psi_det_beta_unique, idx0, & - tmp_det(1,2), N_det_beta_unique, & - singles_b, n_singles_b) - endif - kcol_prev = kcol - - ! Loop over singly excited beta columns - ! ------------------------------------- - - do i=1,n_singles_b - lcol = singles_b(i) - - tmp_det2(1:$N_int,2) = psi_det_beta_unique(1:$N_int, lcol) - - l_a = psi_bilinear_matrix_columns_loc(lcol) - ASSERT (l_a <= N_det) - - do j=1,psi_bilinear_matrix_columns_loc(lcol+1) - l_a - lrow = psi_bilinear_matrix_rows(l_a) - ASSERT (lrow <= N_det_alpha_unique) - - buffer(1:$N_int,j) = psi_det_alpha_unique(1:$N_int, lrow) - - ASSERT (l_a <= N_det) - idx(j) = l_a - l_a = l_a+1 - enddo - j = j-1 - - call get_all_spin_singles_$N_int( & - buffer, idx, tmp_det(1,1), j, & - singles_a, n_singles_a ) - - ! Loop over alpha singles - ! ----------------------- - - do k = 1,n_singles_a - l_a = singles_a(k) - ASSERT (l_a <= N_det) - - lrow = psi_bilinear_matrix_rows(l_a) - ASSERT (lrow <= N_det_alpha_unique) - - tmp_det2(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, lrow) - call i_H_j_double_alpha_beta_erf(tmp_det,tmp_det2,$N_int,hij) - call get_s2(tmp_det,tmp_det2,$N_int,sij) - do l=1,N_st - v_t(l,k_a) = v_t(l,k_a) + hij * u_t(l,l_a) - s_t(l,k_a) = s_t(l,k_a) + sij * u_t(l,l_a) - enddo - enddo - - enddo - - enddo - !$OMP END DO - - !$OMP DO SCHEDULE(dynamic,64) - do k_a=istart+ishift,iend,istep - - - ! Single and double alpha excitations - ! =================================== - - - ! Initial determinant is at k_a in alpha-major representation - ! ----------------------------------------------------------------------- - - krow = psi_bilinear_matrix_rows(k_a) - ASSERT (krow <= N_det_alpha_unique) - - kcol = psi_bilinear_matrix_columns(k_a) - ASSERT (kcol <= N_det_beta_unique) - - tmp_det(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, krow) - tmp_det(1:$N_int,2) = psi_det_beta_unique (1:$N_int, kcol) - - ! Initial determinant is at k_b in beta-major representation - ! ---------------------------------------------------------------------- - - k_b = psi_bilinear_matrix_order_transp_reverse(k_a) - - spindet(1:$N_int) = tmp_det(1:$N_int,1) - - ! Loop inside the beta column to gather all the connected alphas - lcol = psi_bilinear_matrix_columns(k_a) - l_a = psi_bilinear_matrix_columns_loc(lcol) - do i=1,N_det_alpha_unique - if (l_a > N_det) exit - lcol = psi_bilinear_matrix_columns(l_a) - if (lcol /= kcol) exit - lrow = psi_bilinear_matrix_rows(l_a) - ASSERT (lrow <= N_det_alpha_unique) - - buffer(1:$N_int,i) = psi_det_alpha_unique(1:$N_int, lrow) - idx(i) = l_a - l_a = l_a+1 - enddo - i = i-1 - - call get_all_spin_singles_and_doubles_$N_int( & - buffer, idx, spindet, i, & - singles_a, doubles, n_singles_a, n_doubles ) - - ! Compute Hij for all alpha singles - ! ---------------------------------- - - tmp_det2(1:$N_int,2) = psi_det_beta_unique (1:$N_int, kcol) - do i=1,n_singles_a - l_a = singles_a(i) - ASSERT (l_a <= N_det) - - lrow = psi_bilinear_matrix_rows(l_a) - ASSERT (lrow <= N_det_alpha_unique) - - tmp_det2(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, lrow) - call i_H_j_mono_spin_erf( tmp_det, tmp_det2, $N_int, 1, hij) - - do l=1,N_st - v_t(l,k_a) = v_t(l,k_a) + hij * u_t(l,l_a) - ! single => sij = 0 - enddo - enddo - - - ! Compute Hij for all alpha doubles - ! ---------------------------------- - - do i=1,n_doubles - l_a = doubles(i) - ASSERT (l_a <= N_det) - - lrow = psi_bilinear_matrix_rows(l_a) - ASSERT (lrow <= N_det_alpha_unique) - - call i_H_j_double_spin_erf( tmp_det(1,1), psi_det_alpha_unique(1, lrow), $N_int, hij) - do l=1,N_st - v_t(l,k_a) = v_t(l,k_a) + hij * u_t(l,l_a) - ! same spin => sij = 0 - enddo - enddo - - - - ! Single and double beta excitations - ! ================================== - - - ! Initial determinant is at k_a in alpha-major representation - ! ----------------------------------------------------------------------- - - krow = psi_bilinear_matrix_rows(k_a) - kcol = psi_bilinear_matrix_columns(k_a) - - tmp_det(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, krow) - tmp_det(1:$N_int,2) = psi_det_beta_unique (1:$N_int, kcol) - - spindet(1:$N_int) = tmp_det(1:$N_int,2) - - ! Initial determinant is at k_b in beta-major representation - ! ----------------------------------------------------------------------- - - k_b = psi_bilinear_matrix_order_transp_reverse(k_a) - - ! Loop inside the alpha row to gather all the connected betas - lrow = psi_bilinear_matrix_transp_rows(k_b) - l_b = psi_bilinear_matrix_transp_rows_loc(lrow) - do i=1,N_det_beta_unique - if (l_b > N_det) exit - lrow = psi_bilinear_matrix_transp_rows(l_b) - if (lrow /= krow) exit - lcol = psi_bilinear_matrix_transp_columns(l_b) - ASSERT (lcol <= N_det_beta_unique) - - buffer(1:$N_int,i) = psi_det_beta_unique(1:$N_int, lcol) - idx(i) = l_b - l_b = l_b+1 - enddo - i = i-1 - - call get_all_spin_singles_and_doubles_$N_int( & - buffer, idx, spindet, i, & - singles_b, doubles, n_singles_b, n_doubles ) - - ! Compute Hij for all beta singles - ! ---------------------------------- - - tmp_det2(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, krow) - do i=1,n_singles_b - l_b = singles_b(i) - ASSERT (l_b <= N_det) - - lcol = psi_bilinear_matrix_transp_columns(l_b) - ASSERT (lcol <= N_det_beta_unique) - - tmp_det2(1:$N_int,2) = psi_det_beta_unique (1:$N_int, lcol) - call i_H_j_mono_spin_erf( tmp_det, tmp_det2, $N_int, 2, hij) - l_a = psi_bilinear_matrix_transp_order(l_b) - ASSERT (l_a <= N_det) - do l=1,N_st - v_t(l,k_a) = v_t(l,k_a) + hij * u_t(l,l_a) - ! single => sij = 0 - enddo - enddo - - ! Compute Hij for all beta doubles - ! ---------------------------------- - - do i=1,n_doubles - l_b = doubles(i) - ASSERT (l_b <= N_det) - - lcol = psi_bilinear_matrix_transp_columns(l_b) - ASSERT (lcol <= N_det_beta_unique) - - call i_H_j_double_spin_erf( tmp_det(1,2), psi_det_beta_unique(1, lcol), $N_int, hij) - l_a = psi_bilinear_matrix_transp_order(l_b) - ASSERT (l_a <= N_det) - - do l=1,N_st - v_t(l,k_a) = v_t(l,k_a) + hij * u_t(l,l_a) - ! same spin => sij = 0 - enddo - enddo - - - ! Diagonal contribution - ! ===================== - - - ! Initial determinant is at k_a in alpha-major representation - ! ----------------------------------------------------------------------- - - krow = psi_bilinear_matrix_rows(k_a) - ASSERT (krow <= N_det_alpha_unique) - - kcol = psi_bilinear_matrix_columns(k_a) - ASSERT (kcol <= N_det_beta_unique) - - tmp_det(1:$N_int,1) = psi_det_alpha_unique(1:$N_int, krow) - tmp_det(1:$N_int,2) = psi_det_beta_unique (1:$N_int, kcol) - - double precision, external :: diag_H_mat_elem_erf, diag_S_mat_elem - - hij = diag_H_mat_elem_erf(tmp_det,$N_int) - sij = diag_S_mat_elem(tmp_det,$N_int) - do l=1,N_st - v_t(l,k_a) = v_t(l,k_a) + hij * u_t(l,k_a) - s_t(l,k_a) = s_t(l,k_a) + sij * u_t(l,k_a) - enddo - - end do - !$OMP END DO - deallocate(buffer, singles_a, singles_b, doubles, idx) - !$OMP END PARALLEL - -end - -SUBST [ N_int ] - -1;; -2;; -3;; -4;; -N_int;; - -END_TEMPLATE - - diff --git a/src/dft_utils_two_body/write_effective_rsdft_hamiltonian.irp.f b/src/dft_utils_two_body/write_effective_rsdft_hamiltonian.irp.f deleted file mode 100644 index ba58d5b4..00000000 --- a/src/dft_utils_two_body/write_effective_rsdft_hamiltonian.irp.f +++ /dev/null @@ -1,34 +0,0 @@ -program write_effective_RSDFT_hamiltonian - implicit none - BEGIN_DOC - ! This programs writes the effective RS-DFT Hamiltonian into the EZFIO folder. - ! The next programs that will run unto the EZFIO folder will, by default, have the one- and two-body integrals loaded from the EZFIO data. - END_DOC - read_wf = .true. - touch read_wf - disk_access_mo_one_integrals = "None" - touch disk_access_mo_one_integrals - disk_access_mo_integrals = "None" - touch disk_access_mo_integrals - disk_access_ao_integrals = "None" - touch disk_access_ao_integrals - call routines_write_int - call routines_compute_energy -end - -subroutine routines_write_int - implicit none - call write_all_integrals_for_mrdft - density_for_dft = "WFT" - touch density_for_dft -end - -subroutine routines_compute_energy - implicit none - call print_variational_energy_dft - call ezfio_set_aux_quantities_data_one_body_alpha_dm_mo(one_body_dm_mo_alpha) - call ezfio_set_aux_quantities_data_one_body_beta_dm_mo(one_body_dm_mo_beta) - -end - - diff --git a/src/dummy/NEED b/src/dummy/NEED index 1d895df2..dbb07f92 100644 --- a/src/dummy/NEED +++ b/src/dummy/NEED @@ -15,7 +15,6 @@ determinants dft_keywords dft_utils_in_r dft_utils_one_e -dft_utils_two_body dressing electrons ezfio_files @@ -32,7 +31,6 @@ mo_one_e_integrals mo_two_e_erf_integrals mo_two_e_integrals mpi -mrpt_utils nuclei perturbation pseudo diff --git a/src/generators_cas/README.rst b/src/generators_cas/README.rst index a59a38c7..a030059c 100644 --- a/src/generators_cas/README.rst +++ b/src/generators_cas/README.rst @@ -7,6 +7,6 @@ The |MOs| belonging to the |CAS| are those which were set as active with the :ref:`qp_set_mo_class` command. This module is intended to be included in the :file:`NEED` file to define -generators on a |CAS|. +the generators as the |CAS| determinants, which can be useful to define post-CAS approaches (see cassd module for instance). diff --git a/src/mo_one_e_integrals/README.rst b/src/mo_one_e_integrals/README.rst index ca4e7e64..15faedf7 100644 --- a/src/mo_one_e_integrals/README.rst +++ b/src/mo_one_e_integrals/README.rst @@ -1,6 +1,13 @@ ================== -MO_one_e_integrals +mo_one_e_integrals ================== All the one-electron integrals in |MO| basis are defined here. +The most important providers for usual quantum-chemistry calculation are: + +# `mo_kinetic_integral` which are the kinetic operator integrals on the |AO| basis (see :file:`kin_mo_ints.irp.f`) +# `mo_nucl_elec_integral` which are the nuclear-elctron operator integrals on the |AO| basis (see :file:`pot_mo_ints.irp.f`) +# `mo_mono_elec_integral` which are the the h_core operator integrals on the |AO| basis (see :file:`mo_mono_ints.irp.f`) + +Note that you can find other interesting integrals related to the position operator in :file:`spread_dipole_mo.irp.f`. diff --git a/src/mo_two_e_erf_integrals/routines_save_integrals_erf.irp.f b/src/mo_two_e_erf_integrals/routines_save_integrals_erf.irp.f index 84b7ec13..00845ba8 100644 --- a/src/mo_two_e_erf_integrals/routines_save_integrals_erf.irp.f +++ b/src/mo_two_e_erf_integrals/routines_save_integrals_erf.irp.f @@ -7,6 +7,7 @@ subroutine save_erf_bi_elec_integrals_mo call ezfio_set_mo_two_e_erf_integrals_disk_access_mo_integrals_erf('Read') end + subroutine save_erf_bielec_ints_mo_into_ints_mo implicit none integer :: i,j,k,l diff --git a/src/mrpt_utils/.gitignore b/src/mrpt_utils/.gitignore deleted file mode 120000 index a10a1637..00000000 --- a/src/mrpt_utils/.gitignore +++ /dev/null @@ -1 +0,0 @@ -../../data/module_gitignore \ No newline at end of file diff --git a/src/mrpt_utils/EZFIO.cfg b/src/mrpt_utils/EZFIO.cfg deleted file mode 100644 index 4eded0b7..00000000 --- a/src/mrpt_utils/EZFIO.cfg +++ /dev/null @@ -1,7 +0,0 @@ -[do_third_order_1h1p] -type: logical -doc: If `True`, compute the third order contribution for the 1h1p -interface: ezfio,provider,ocaml -default: True - - diff --git a/src/mrpt_utils/NEED b/src/mrpt_utils/NEED deleted file mode 100644 index 4620373c..00000000 --- a/src/mrpt_utils/NEED +++ /dev/null @@ -1,3 +0,0 @@ -determinants -davidson -psiref_cas diff --git a/src/mrpt_utils/README.rst b/src/mrpt_utils/README.rst deleted file mode 100644 index e72dbce9..00000000 --- a/src/mrpt_utils/README.rst +++ /dev/null @@ -1,5 +0,0 @@ -========== -MRPT_Utils -========== - -Subroutines and providers required for |MRPT|. diff --git a/src/mrpt_utils/density_matrix_based.irp.f b/src/mrpt_utils/density_matrix_based.irp.f deleted file mode 100644 index b2f3b8cf..00000000 --- a/src/mrpt_utils/density_matrix_based.irp.f +++ /dev/null @@ -1,193 +0,0 @@ -subroutine contrib_1h2p_dm_based(accu) - implicit none - integer :: i_i,i_r,i_v,i_a,i_b - integer :: i,r,v,a,b - integer :: ispin,jspin - integer :: istate - double precision, intent(out) :: accu(N_states) - double precision :: active_int(n_act_orb,2) - double precision :: delta_e(n_act_orb,2,N_states) - double precision :: get_mo_bielec_integral - accu = 0.d0 -!do i_i = 1, 1 - do i_i = 1, n_inact_orb - i = list_inact(i_i) -! do i_r = 1, 1 - do i_r = 1, n_virt_orb - r = list_virt(i_r) -! do i_v = 1, 1 - do i_v = 1, n_virt_orb - v = list_virt(i_v) - do i_a = 1, n_act_orb - a = list_act(i_a) - active_int(i_a,1) = get_mo_bielec_integral(i,a,r,v,mo_integrals_map) ! direct - active_int(i_a,2) = get_mo_bielec_integral(i,a,v,r,mo_integrals_map) ! exchange - do istate = 1, N_states - do jspin=1, 2 - delta_e(i_a,jspin,istate) = one_anhil(i_a,jspin,istate) & - - fock_virt_total_spin_trace(r,istate) & - - fock_virt_total_spin_trace(v,istate) & - + fock_core_inactive_total_spin_trace(i,istate) - delta_e(i_a,jspin,istate) = 1.d0/delta_e(i_a,jspin,istate) - enddo - enddo - enddo - do i_a = 1, n_act_orb - a = list_act(i_a) - do i_b = 1, n_act_orb -! do i_b = i_a, i_a - b = list_act(i_b) - do ispin = 1, 2 ! spin of (i --> r) - do jspin = 1, 2 ! spin of (a --> v) - if(ispin == jspin .and. r.le.v)cycle ! condition not to double count - do istate = 1, N_states - if(ispin == jspin)then - accu(istate) += (active_int(i_a,1) - active_int(i_a,2)) * one_body_dm_mo_spin_index(a,b,istate,ispin) & - * (active_int(i_b,1) - active_int(i_b,2)) & - * delta_e(i_a,jspin,istate) - else - accu(istate) += active_int(i_a,1) * one_body_dm_mo_spin_index(a,b,istate,ispin) * delta_e(i_a,ispin,istate) & - * active_int(i_b,1) - endif - enddo - enddo - enddo - enddo - enddo - enddo - enddo - enddo - - -end - -subroutine contrib_2h1p_dm_based(accu) - implicit none - integer :: i_i,i_j,i_v,i_a,i_b - integer :: i,j,v,a,b - integer :: ispin,jspin - integer :: istate - double precision, intent(out) :: accu(N_states) - double precision :: active_int(n_act_orb,2) - double precision :: delta_e(n_act_orb,2,N_states) - double precision :: get_mo_bielec_integral - accu = 0.d0 - do i_i = 1, n_inact_orb - i = list_inact(i_i) - do i_j = 1, n_inact_orb - j = list_inact(i_j) - do i_v = 1, n_virt_orb - v = list_virt(i_v) - do i_a = 1, n_act_orb - a = list_act(i_a) - active_int(i_a,1) = get_mo_bielec_integral(i,j,v,a,mo_integrals_map) ! direct - active_int(i_a,2) = get_mo_bielec_integral(i,j,a,v,mo_integrals_map) ! exchange - do istate = 1, N_states - do jspin=1, 2 -! delta_e(i_a,jspin,istate) = -! - delta_e(i_a,jspin,istate) = one_creat(i_a,jspin,istate) - fock_virt_total_spin_trace(v,istate) & - + fock_core_inactive_total_spin_trace(i,istate) & - + fock_core_inactive_total_spin_trace(j,istate) - delta_e(i_a,jspin,istate) = 1.d0/delta_e(i_a,jspin,istate) - enddo - enddo - enddo - do i_a = 1, n_act_orb - a = list_act(i_a) - do i_b = 1, n_act_orb -! do i_b = i_a, i_a - b = list_act(i_b) - do ispin = 1, 2 ! spin of (i --> v) - do jspin = 1, 2 ! spin of (j --> a) - if(ispin == jspin .and. i.le.j)cycle ! condition not to double count - do istate = 1, N_states - if(ispin == jspin)then - accu(istate) += (active_int(i_a,1) - active_int(i_a,2)) * one_body_dm_dagger_mo_spin_index(a,b,istate,ispin) & - * (active_int(i_b,1) - active_int(i_b,2)) & - * delta_e(i_a,jspin,istate) - else - accu(istate) += active_int(i_a,1) * one_body_dm_dagger_mo_spin_index(a,b,istate,ispin) * delta_e(i_a,ispin,istate) & - * active_int(i_b,1) - endif - enddo - enddo - enddo - enddo - enddo - enddo - enddo - enddo - - -end - - -!subroutine contrib_2p_dm_based(accu) -!implicit none -!integer :: i_r,i_v,i_a,i_b,i_c,i_d -!integer :: r,v,a,b,c,d -!integer :: ispin,jspin -!integer :: istate -!double precision, intent(out) :: accu(N_states) -!double precision :: active_int(n_act_orb,n_act_orb,2) -!double precision :: delta_e(n_act_orb,n_act_orb,2,2,N_states) -!double precision :: get_mo_bielec_integral -!accu = 0.d0 -!do i_r = 1, n_virt_orb -! r = list_virt(i_r) -! do i_v = 1, n_virt_orb -! v = list_virt(i_v) -! do i_a = 1, n_act_orb -! a = list_act(i_a) -! do i_b = 1, n_act_orb -! b = list_act(i_b) -! active_int(i_a,i_b,1) = get_mo_bielec_integral(a,b,r,v,mo_integrals_map) ! direct -! active_int(i_a,i_b,2) = get_mo_bielec_integral(a,b,v,r,mo_integrals_map) ! direct -! do istate = 1, N_states -! do jspin=1, 2 ! spin of i_a -! do ispin = 1, 2 ! spin of i_b -! delta_e(i_a,i_b,jspin,ispin,istate) = two_anhil(i_a,i_b,jspin,ispin,istate) & -! - fock_virt_total_spin_trace(r,istate) & -! - fock_virt_total_spin_trace(v,istate) -! delta_e(i_a,i_b,jspin,ispin,istate) = 1.d0/delta_e(i_a,i_b,jspin,ispin,istate) -! enddo -! enddo -! enddo -! enddo -! enddo -! ! diagonal terms -! do i_a = 1, n_act_orb -! a = list_act(i_a) -! do i_b = 1, n_act_orb -! b = list_act(i_b) -! do ispin = 1, 2 ! spin of (a --> r) -! do jspin = 1, 2 ! spin of (b --> v) -! if(ispin == jspin .and. r.le.v)cycle ! condition not to double count -! if(ispin == jspin .and. a.le.b)cycle ! condition not to double count -! do istate = 1, N_states -! if(ispin == jspin)then -! double precision :: contrib_spin -! if(ispin == 1)then -! contrib_spin = two_body_dm_aa_diag_act(i_a,i_b) -! else -! contrib_spin = two_body_dm_bb_diag_act(i_a,i_b) -! endif -! accu(istate) += (active_int(i_a,i_b,1) - active_int(i_a,i_b,2)) * contrib_spin & -! * (active_int(i_a,i_b,1) - active_int(i_a,i_b,2)) & -! * delta_e(i_a,i_b,ispin,jspin,istate) -! else -! accu(istate) += 0.5d0 * active_int(i_a,i_b,1) * two_body_dm_ab_diag_act(i_a,i_b) * delta_e(i_a,i_b,ispin,jspin,istate) & -! * active_int(i_a,i_b,1) -! endif -! enddo -! enddo -! enddo -! enddo -! enddo -! enddo -! enddo - - -!end - diff --git a/src/mrpt_utils/energies_cas.irp.f b/src/mrpt_utils/energies_cas.irp.f deleted file mode 100644 index 89a183c9..00000000 --- a/src/mrpt_utils/energies_cas.irp.f +++ /dev/null @@ -1,1109 +0,0 @@ -BEGIN_PROVIDER [ double precision, energy_cas_dyall, (N_states)] - implicit none - integer :: i - double precision :: energies(N_states) - do i = 1, N_states - call u0_H_dyall_u0(energies,psi_active,psi_coef,n_det_ref,psi_det_size,psi_det_size,N_states,i) - energy_cas_dyall(i) = energies(i) - print*, 'energy_cas_dyall(i)', energy_cas_dyall(i) - enddo -END_PROVIDER - - -BEGIN_PROVIDER [ double precision, energy_cas_dyall_no_exchange, (N_states)] - implicit none - integer :: i - double precision :: energies(N_states) - do i = 1, N_states - call u0_H_dyall_u0_no_exchange(energies,psi_active,psi_coef,n_det_ref,psi_det_size,psi_det_size,N_states,i) - energy_cas_dyall_no_exchange(i) = energies(i) - print*, 'energy_cas_dyall(i)_no_exchange', energy_cas_dyall_no_exchange(i) - enddo -END_PROVIDER - - - -BEGIN_PROVIDER [ double precision, one_creat, (n_act_orb,2,N_states)] - implicit none - integer :: i,j - integer :: ispin - integer :: orb, hole_particle,spin_exc - double precision :: norm_out(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states)) - use bitmasks - - integer :: iorb - integer :: state_target - double precision :: energies(n_states) - do iorb = 1,n_act_orb - do ispin = 1,2 - orb = list_act(iorb) - hole_particle = 1 - spin_exc = ispin - do i = 1, n_det_ref - do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = psi_active(j,1,i) - psi_in_out(j,2,i) = psi_active(j,2,i) - enddo - enddo - do state_target = 1,N_states - call apply_exc_to_psi(orb,hole_particle,spin_exc, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) - one_creat(iorb,ispin,state_target) = energy_cas_dyall(state_target) - energies(state_target) - enddo - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef) - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, one_anhil, (n_act_orb,2,N_states)] - implicit none - integer :: i,j - integer :: ispin - integer :: orb, hole_particle,spin_exc - double precision :: norm_out(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - use bitmasks - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states)) - - integer :: iorb - integer :: state_target - double precision :: energies(n_states) - do iorb = 1,n_act_orb - do ispin = 1,2 - orb = list_act(iorb) - hole_particle = -1 - spin_exc = ispin - do i = 1, n_det_ref - do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = psi_active(j,1,i) - psi_in_out(j,2,i) = psi_active(j,2,i) - enddo - enddo - do state_target = 1, N_states - call apply_exc_to_psi(orb,hole_particle,spin_exc, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) - one_anhil(iorb,ispin,state_target) = energy_cas_dyall(state_target) - energies(state_target) - enddo - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef) - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, two_creat, (n_act_orb,n_act_orb,2,2,N_states)] - implicit none - integer :: i,j - integer :: ispin,jspin - integer :: orb_i, hole_particle_i,spin_exc_i - integer :: orb_j, hole_particle_j,spin_exc_j - double precision :: norm_out(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - use bitmasks - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states)) - - integer :: iorb,jorb - integer :: state_target - double precision :: energies(n_states) - do iorb = 1,n_act_orb - do ispin = 1,2 - orb_i = list_act(iorb) - hole_particle_i = 1 - spin_exc_i = ispin - do jorb = 1, n_act_orb - do jspin = 1,2 - orb_j = list_act(jorb) - hole_particle_j = 1 - spin_exc_j = jspin - do i = 1, n_det_ref - do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = psi_active(j,1,i) - psi_in_out(j,2,i) = psi_active(j,2,i) - enddo - enddo - do state_target = 1 , N_states - call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) - two_creat(iorb,jorb,ispin,jspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) - enddo - enddo - enddo - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef) - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, two_anhil, (n_act_orb,n_act_orb,2,2,N_states)] - implicit none - integer :: i,j - integer :: ispin,jspin - integer :: orb_i, hole_particle_i,spin_exc_i - integer :: orb_j, hole_particle_j,spin_exc_j - double precision :: norm_out(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - use bitmasks - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states)) - - integer :: iorb,jorb - integer :: state_target - state_target = 1 - double precision :: energies(n_states) - do iorb = 1,n_act_orb - do ispin = 1,2 - orb_i = list_act(iorb) - hole_particle_i = -1 - spin_exc_i = ispin - do jorb = 1, n_act_orb - do jspin = 1,2 - orb_j = list_act(jorb) - hole_particle_j = -1 - spin_exc_j = jspin - do i = 1, n_det_ref - do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = psi_active(j,1,i) - psi_in_out(j,2,i) = psi_active(j,2,i) - enddo - enddo - call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) - two_anhil(iorb,jorb,ispin,jspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) - enddo - enddo - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef) - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, one_anhil_one_creat, (n_act_orb,n_act_orb,2,2,N_States)] - implicit none - integer :: i,j - integer :: ispin,jspin - integer :: orb_i, hole_particle_i,spin_exc_i - integer :: orb_j, hole_particle_j,spin_exc_j - double precision :: norm_out(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - use bitmasks - - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states)) - integer :: iorb,jorb - integer :: state_target - double precision :: energies(n_states) - do iorb = 1,n_act_orb - do ispin = 1,2 - orb_i = list_act(iorb) - hole_particle_i = 1 - spin_exc_i = ispin - do jorb = 1, n_act_orb - do jspin = 1,2 - orb_j = list_act(jorb) - hole_particle_j = -1 - spin_exc_j = jspin - do i = 1, n_det_ref - do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = psi_active(j,1,i) - psi_in_out(j,2,i) = psi_active(j,2,i) - enddo - enddo - do state_target = 1, N_states - call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - if(orb_i == orb_j .and. ispin .ne. jspin)then - call u0_H_dyall_u0_no_exchange(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) - one_anhil_one_creat(iorb,jorb,ispin,jspin,state_target) = energy_cas_dyall_no_exchange(state_target) - energies(state_target) - else - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) - one_anhil_one_creat(iorb,jorb,ispin,jspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) - endif - enddo - enddo - enddo - enddo - enddo - -END_PROVIDER - - -BEGIN_PROVIDER [ double precision, two_anhil_one_creat, (n_act_orb,n_act_orb,n_act_orb,2,2,2,N_states)] - implicit none - integer :: i,j - integer :: ispin,jspin,kspin - integer :: orb_i, hole_particle_i,spin_exc_i - integer :: orb_j, hole_particle_j,spin_exc_j - integer :: orb_k, hole_particle_k,spin_exc_k - double precision :: norm_out(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - use bitmasks - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states)) - - integer :: iorb,jorb - integer :: korb - integer :: state_target - double precision :: energies(n_states) - do iorb = 1,n_act_orb - do ispin = 1,2 - orb_i = list_act(iorb) - hole_particle_i = 1 - spin_exc_i = ispin - do jorb = 1, n_act_orb - do jspin = 1,2 - orb_j = list_act(jorb) - hole_particle_j = -1 - spin_exc_j = jspin - do korb = 1, n_act_orb - do kspin = 1,2 - orb_k = list_act(korb) - hole_particle_k = -1 - spin_exc_k = kspin - do i = 1, n_det_ref - do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = psi_active(j,1,i) - psi_in_out(j,2,i) = psi_active(j,2,i) - enddo - enddo - - do state_target = 1, N_states - call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call apply_exc_to_psi(orb_k,hole_particle_k,spin_exc_k, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) - two_anhil_one_creat(iorb,jorb,korb,ispin,jspin,kspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) - enddo - enddo - enddo - enddo - enddo - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef) - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, two_creat_one_anhil, (n_act_orb,n_act_orb,n_act_orb,2,2,2,N_states)] - implicit none - integer :: i,j - integer :: ispin,jspin,kspin - integer :: orb_i, hole_particle_i,spin_exc_i - integer :: orb_j, hole_particle_j,spin_exc_j - integer :: orb_k, hole_particle_k,spin_exc_k - double precision :: norm_out(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - use bitmasks - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states)) - - integer :: iorb,jorb - integer :: korb - integer :: state_target - double precision :: energies(n_states) - do iorb = 1,n_act_orb - do ispin = 1,2 - orb_i = list_act(iorb) - hole_particle_i = 1 - spin_exc_i = ispin - do jorb = 1, n_act_orb - do jspin = 1,2 - orb_j = list_act(jorb) - hole_particle_j = 1 - spin_exc_j = jspin - do korb = 1, n_act_orb - do kspin = 1,2 - orb_k = list_act(korb) - hole_particle_k = -1 - spin_exc_k = kspin - do i = 1, n_det_ref - do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = psi_active(j,1,i) - psi_in_out(j,2,i) = psi_active(j,2,i) - enddo - enddo - do state_target = 1, N_states - call apply_exc_to_psi(orb_k,hole_particle_k,spin_exc_k, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) - two_creat_one_anhil(iorb,jorb,korb,ispin,jspin,kspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) - enddo - enddo - enddo - enddo - enddo - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef) - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, three_creat, (n_act_orb,n_act_orb,n_act_orb,2,2,2,N_states)] - implicit none - integer :: i,j - integer :: ispin,jspin,kspin - integer :: orb_i, hole_particle_i,spin_exc_i - integer :: orb_j, hole_particle_j,spin_exc_j - integer :: orb_k, hole_particle_k,spin_exc_k - double precision :: norm_out(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - use bitmasks - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states)) - - integer :: iorb,jorb - integer :: korb - integer :: state_target - double precision :: energies(n_states) - do iorb = 1,n_act_orb - do ispin = 1,2 - orb_i = list_act(iorb) - hole_particle_i = 1 - spin_exc_i = ispin - do jorb = 1, n_act_orb - do jspin = 1,2 - orb_j = list_act(jorb) - hole_particle_j = 1 - spin_exc_j = jspin - do korb = 1, n_act_orb - do kspin = 1,2 - orb_k = list_act(korb) - hole_particle_k = 1 - spin_exc_k = kspin - do i = 1, n_det_ref - do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = psi_active(j,1,i) - psi_in_out(j,2,i) = psi_active(j,2,i) - enddo - enddo - do state_target = 1, N_states - call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call apply_exc_to_psi(orb_k,hole_particle_k,spin_exc_k, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) - three_creat(iorb,jorb,korb,ispin,jspin,kspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) - enddo - enddo - enddo - enddo - enddo - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef) - -END_PROVIDER - -BEGIN_PROVIDER [ double precision, three_anhil, (n_act_orb,n_act_orb,n_act_orb,2,2,2,N_states)] - implicit none - integer :: i,j - integer :: ispin,jspin,kspin - integer :: orb_i, hole_particle_i,spin_exc_i - integer :: orb_j, hole_particle_j,spin_exc_j - integer :: orb_k, hole_particle_k,spin_exc_k - double precision :: norm_out(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - use bitmasks - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states)) - - integer :: iorb,jorb - integer :: korb - integer :: state_target - double precision :: energies(n_states) - do iorb = 1,n_act_orb - do ispin = 1,2 - orb_i = list_act(iorb) - hole_particle_i = -1 - spin_exc_i = ispin - do jorb = 1, n_act_orb - do jspin = 1,2 - orb_j = list_act(jorb) - hole_particle_j = -1 - spin_exc_j = jspin - do korb = 1, n_act_orb - do kspin = 1,2 - orb_k = list_act(korb) - hole_particle_k = -1 - spin_exc_k = kspin - do i = 1, n_det_ref - do j = 1, n_states - psi_in_out_coef(i,j) = psi_coef(i,j) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = psi_active(j,1,i) - psi_in_out(j,2,i) = psi_active(j,2,i) - enddo - enddo - do state_target = 1, N_states - call apply_exc_to_psi(orb_i,hole_particle_i,spin_exc_i, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call apply_exc_to_psi(orb_j,hole_particle_j,spin_exc_j, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call apply_exc_to_psi(orb_k,hole_particle_k,spin_exc_k, & - norm_out,psi_in_out,psi_in_out_coef, n_det_ref,n_det_ref,n_det_ref,N_states) - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) - three_anhil(iorb,jorb,korb,ispin,jspin,kspin,state_target) = energy_cas_dyall(state_target) - energies(state_target) - enddo - enddo - enddo - enddo - enddo - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef) - -END_PROVIDER - - - - BEGIN_PROVIDER [ double precision, one_anhil_one_creat_inact_virt, (n_inact_orb,n_virt_orb,N_States)] -&BEGIN_PROVIDER [ double precision, one_anhil_one_creat_inact_virt_norm, (n_inact_orb,n_virt_orb,N_States,2)] - implicit none - integer :: i,vorb,j - integer :: ispin,jspin - integer :: orb_i, hole_particle_i - integer :: orb_v - double precision :: norm_out(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - use bitmasks - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states)) - - integer :: iorb,jorb,i_ok - integer :: state_target - double precision :: energies(n_states) - double precision :: hij - double precision :: norm(N_states,2),norm_no_inv(N_states,2),norm_bis(N_states,2) - double precision :: energies_alpha_beta(N_states,2) - - - double precision :: thresh_norm - - thresh_norm = 1.d-10 - - - - do vorb = 1,n_virt_orb - orb_v = list_virt(vorb) - do iorb = 1, n_inact_orb - orb_i = list_inact(iorb) - norm = 0.d0 - norm_bis = 0.d0 - do ispin = 1,2 - do state_target =1 , N_states - one_anhil_one_creat_inact_virt_norm(iorb,vorb,state_target,ispin) = 0.d0 - enddo - do i = 1, n_det_ref - do j = 1, N_int - psi_in_out(j,1,i) = psi_ref(j,1,i) - psi_in_out(j,2,i) = psi_ref(j,2,i) - enddo - call do_mono_excitation(psi_in_out(1,1,i),orb_i,orb_v,ispin,i_ok) - if(i_ok.ne.1)then - print*, orb_i,orb_v - call debug_det(psi_in_out,N_int) - print*, 'pb, i_ok ne 0 !!!' - endif - call i_H_j(psi_in_out(1,1,i),psi_ref(1,1,i),N_int,hij) - do j = 1, n_states - double precision :: coef,contrib - coef = psi_coef(i,j) !* psi_coef(i,j) - psi_in_out_coef(i,j) = sign(coef,psi_coef(i,j)) * hij - norm(j,ispin) += psi_in_out_coef(i,j) * psi_in_out_coef(i,j) - enddo - enddo - do j = 1, N_states - if (dabs(norm(j,ispin)) .le. thresh_norm)then - norm(j,ispin) = 0.d0 - norm_no_inv(j,ispin) = norm(j,ispin) - one_anhil_one_creat_inact_virt_norm(iorb,vorb,j,ispin) = 0.d0 - else - norm_no_inv(j,ispin) = norm(j,ispin) - one_anhil_one_creat_inact_virt_norm(iorb,vorb,j,ispin) = 1.d0 / norm(j,ispin) - norm(j,ispin) = 1.d0/dsqrt(norm(j,ispin)) - endif - enddo - do i = 1, N_det - do j = 1, N_states - psi_in_out_coef(i,j) = psi_in_out_coef(i,j) * norm(j,ispin) - norm_bis(j,ispin) += psi_in_out_coef(i,j) * psi_in_out_coef(i,j) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = psi_active(j,1,i) - psi_in_out(j,2,i) = psi_active(j,2,i) - enddo - enddo - do state_target = 1, N_states - energies_alpha_beta(state_target, ispin) = - mo_bielec_integral_jj_exchange(orb_i,orb_v) -! energies_alpha_beta(state_target, ispin) = 0.d0 - if(norm(state_target,ispin) .ne. 0.d0 .and. dabs(norm_no_inv(state_target,ispin)) .gt. thresh_norm)then - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) - energies_alpha_beta(state_target, ispin) += energies(state_target) - endif - enddo - enddo ! ispin - do state_target = 1, N_states - if((norm_no_inv(state_target,1) + norm_no_inv(state_target,2)) .ne. 0.d0)then -! one_anhil_one_creat_inact_virt(iorb,vorb,state_target) = 0.5d0 * & -! ( energy_cas_dyall(state_target) - energies_alpha_beta(state_target,1) + & -! energy_cas_dyall(state_target) - energies_alpha_beta(state_target,2) ) -! print*, energies_alpha_beta(state_target,1) , energies_alpha_beta(state_target,2) -! print*, norm_bis(state_target,1) , norm_bis(state_target,2) - one_anhil_one_creat_inact_virt(iorb,vorb,state_target) = energy_cas_dyall(state_target) - & - ( energies_alpha_beta(state_target,1) + energies_alpha_beta(state_target,2) ) & - /( norm_bis(state_target,1) + norm_bis(state_target,2) ) - else - one_anhil_one_creat_inact_virt(iorb,vorb,state_target) = 0.d0 - endif - enddo - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef) - -END_PROVIDER - - -BEGIN_PROVIDER [ double precision, one_anhil_inact, (n_inact_orb,n_act_orb,N_States)] - implicit none - integer :: i,iorb,j - integer :: ispin,jspin - integer :: orb_i, hole_particle_i - double precision :: norm_out(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - use bitmasks - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states)) - - integer :: jorb,i_ok,aorb,orb_a - integer :: state_target - double precision :: energies(n_states) - double precision :: hij - double precision :: norm(N_states,2),norm_no_inv(N_states,2) - double precision :: energies_alpha_beta(N_states,2) - double precision :: norm_alpha_beta(N_states,2) - - double precision :: thresh_norm - - thresh_norm = 1.d-10 - - do aorb = 1,n_act_orb - orb_a = list_act(aorb) - do iorb = 1, n_inact_orb - orb_i = list_inact(iorb) - do state_target = 1, N_states - one_anhil_inact(iorb,aorb,state_target) = 0.d0 - enddo - norm_alpha_beta = 0.d0 - norm = 0.d0 - norm_bis = 0.d0 - do ispin = 1,2 - do i = 1, n_det_ref - do j = 1, N_int - psi_in_out(j,1,i) = psi_ref(j,1,i) - psi_in_out(j,2,i) = psi_ref(j,2,i) - enddo - call do_mono_excitation(psi_in_out(1,1,i),orb_i,orb_a,ispin,i_ok) - if(i_ok.ne.1)then - do j = 1, n_states - psi_in_out_coef(i,j) = 0.d0 - enddo - else - call i_H_j(psi_in_out(1,1,i),psi_ref(1,1,i),N_int,hij) - do j = 1, n_states - double precision :: coef,contrib - coef = psi_coef(i,j) !* psi_coef(i,j) - psi_in_out_coef(i,j) = sign(coef,psi_coef(i,j)) * hij - norm(j,ispin) += psi_in_out_coef(i,j) * psi_in_out_coef(i,j) - enddo - endif - enddo - do j = 1, N_states - if (dabs(norm(j,ispin)) .le. thresh_norm)then - norm(j,ispin) = 0.d0 - norm_no_inv(j,ispin) = norm(j,ispin) - else - norm_no_inv(j,ispin) = norm(j,ispin) - norm(j,ispin) = 1.d0/dsqrt(norm(j,ispin)) - endif - enddo - double precision :: norm_bis(N_states,2) - do i = 1, N_det - do j = 1, N_states - psi_in_out_coef(i,j) = psi_in_out_coef(i,j) * norm(j,ispin) - norm_bis(j,ispin) += psi_in_out_coef(i,j)* psi_in_out_coef(i,j) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = iand(psi_in_out(j,1,i),cas_bitmask(j,1,1)) - psi_in_out(j,2,i) = iand(psi_in_out(j,2,i),cas_bitmask(j,1,1)) - enddo - enddo - do state_target = 1, N_states - energies_alpha_beta(state_target, ispin) = 0.d0 - if(norm(state_target,ispin) .ne. 0.d0 .and. dabs(norm_no_inv(state_target,ispin)) .gt. thresh_norm)then - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) - energies_alpha_beta(state_target, ispin) += energies(state_target) - endif - enddo - enddo ! ispin - do state_target = 1, N_states - if((norm_no_inv(state_target,1) + norm_no_inv(state_target,2)) .ne. 0.d0)then - one_anhil_inact(iorb,aorb,state_target) = energy_cas_dyall(state_target) - & - ( energies_alpha_beta(state_target,1) + energies_alpha_beta(state_target,2) ) & - /( norm_bis(state_target,1) + norm_bis(state_target,2) ) - else - one_anhil_inact(iorb,aorb,state_target) = 0.d0 - endif - enddo - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef) -END_PROVIDER - - -BEGIN_PROVIDER [ double precision, one_creat_virt, (n_act_orb,n_virt_orb,N_States)] - implicit none - integer :: i,vorb,j - integer :: ispin,jspin - integer :: orb_i, hole_particle_i - integer :: orb_v - double precision :: norm_out(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - use bitmasks - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states)) - - integer :: iorb,jorb,i_ok,aorb,orb_a - integer :: state_target - double precision :: energies(n_states) - double precision :: hij - double precision :: norm(N_states,2),norm_no_inv(N_states,2) - double precision :: energies_alpha_beta(N_states,2) - double precision :: norm_alpha_beta(N_states,2) - - double precision :: thresh_norm - - thresh_norm = 1.d-10 - - do aorb = 1,n_act_orb - orb_a = list_act(aorb) - do vorb = 1, n_virt_orb - orb_v = list_virt(vorb) - do state_target = 1, N_states - one_creat_virt(aorb,vorb,state_target) = 0.d0 - enddo - norm_alpha_beta = 0.d0 - norm = 0.d0 - norm_bis = 0.d0 - do ispin = 1,2 - do i = 1, n_det_ref - do j = 1, N_int - psi_in_out(j,1,i) = psi_ref(j,1,i) - psi_in_out(j,2,i) = psi_ref(j,2,i) - enddo - call do_mono_excitation(psi_in_out(1,1,i),orb_a,orb_v,ispin,i_ok) - if(i_ok.ne.1)then - do j = 1, n_states - psi_in_out_coef(i,j) = 0.d0 - enddo - else - call i_H_j(psi_in_out(1,1,i),psi_ref(1,1,i),N_int,hij) - do j = 1, n_states - double precision :: coef,contrib - coef = psi_coef(i,j) !* psi_coef(i,j) - psi_in_out_coef(i,j) = sign(coef,psi_coef(i,j)) * hij - norm(j,ispin) += psi_in_out_coef(i,j) * psi_in_out_coef(i,j) - enddo - endif - enddo - do j = 1, N_states - if (dabs(norm(j,ispin)) .le. thresh_norm)then - norm(j,ispin) = 0.d0 - norm_no_inv(j,ispin) = norm(j,ispin) - else - norm_no_inv(j,ispin) = norm(j,ispin) - norm(j,ispin) = 1.d0/dsqrt(norm(j,ispin)) - endif - enddo - double precision :: norm_bis(N_states,2) - do i = 1, N_det - do j = 1, N_states - psi_in_out_coef(i,j) = psi_in_out_coef(i,j) * norm(j,ispin) - norm_bis(j,ispin) += psi_in_out_coef(i,j)* psi_in_out_coef(i,j) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = iand(psi_in_out(j,1,i),cas_bitmask(j,1,1)) - psi_in_out(j,2,i) = iand(psi_in_out(j,2,i),cas_bitmask(j,1,1)) - enddo - enddo - do state_target = 1, N_states - energies_alpha_beta(state_target, ispin) = 0.d0 - if(norm(state_target,ispin) .ne. 0.d0 .and. dabs(norm_no_inv(state_target,ispin)) .gt. thresh_norm)then - call u0_H_dyall_u0(energies,psi_in_out,psi_in_out_coef,n_det_ref,n_det_ref,n_det_ref,N_states,state_target) -! print*, energies(state_target) - energies_alpha_beta(state_target, ispin) += energies(state_target) - endif - enddo - enddo ! ispin - do state_target = 1, N_states - if((norm_no_inv(state_target,1) + norm_no_inv(state_target,2)) .ne. 0.d0)then - one_creat_virt(aorb,vorb,state_target) = energy_cas_dyall(state_target) - & - ( energies_alpha_beta(state_target,1) + energies_alpha_beta(state_target,2) ) & - /( norm_bis(state_target,1) + norm_bis(state_target,2) ) - else - one_creat_virt(aorb,vorb,state_target) = 0.d0 - endif -! print*, '********' -! print*, energies_alpha_beta(state_target,1) , energies_alpha_beta(state_target,2) -! print*, norm_bis(state_target,1) , norm_bis(state_target,2) -! print*, one_creat_virt(aorb,vorb,state_target) -! print*, one_anhil(aorb,1,state_target) - enddo - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef) - -END_PROVIDER - - - BEGIN_PROVIDER [ double precision, one_anhil_one_creat_inact_virt_bis, (n_inact_orb,n_virt_orb,N_det,N_States)] -&BEGIN_PROVIDER [ double precision, corr_e_from_1h1p, (N_States)] - implicit none - integer :: i,vorb,j - integer :: ispin,jspin - integer :: orb_i, hole_particle_i - integer :: orb_v - double precision :: norm_out(N_states),diag_elem(N_det),interact_psi0(N_det) - double precision :: delta_e_inact_virt(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - double precision, allocatable :: H_matrix(:,:),eigenvectors(:,:),eigenvalues(:) - use bitmasks - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states),H_matrix(N_det+1,N_det+1)) - allocate (eigenvectors(size(H_matrix,1),N_det+1)) - allocate (eigenvalues(N_det+1)) - - integer :: iorb,jorb,i_ok - integer :: state_target - double precision :: energies(n_states) - double precision :: hij - double precision :: energies_alpha_beta(N_states,2) - - - double precision :: accu(N_states),norm - double precision :: amplitudes_alpha_beta(N_det,2) - double precision :: delta_e_alpha_beta(N_det,2) - - corr_e_from_1h1p = 0.d0 - do vorb = 1,n_virt_orb - orb_v = list_virt(vorb) - do iorb = 1, n_inact_orb - orb_i = list_inact(iorb) -! print*, '---------------------------------------------------------------------------' - do j = 1, N_states - delta_e_inact_virt(j) = fock_core_inactive_total_spin_trace(orb_i,j) & - - fock_virt_total_spin_trace(orb_v,j) - enddo - do ispin = 1,2 - do i = 1, n_det_ref - do j = 1, N_int - psi_in_out(j,1,i) = psi_ref(j,1,i) - psi_in_out(j,2,i) = psi_ref(j,2,i) - enddo - call do_mono_excitation(psi_in_out(1,1,i),orb_i,orb_v,ispin,i_ok) - if(i_ok.ne.1)then - print*, orb_i,orb_v - call debug_det(psi_in_out,N_int) - print*, 'pb, i_ok ne 0 !!!' - endif - interact_psi0(i) = 0.d0 - do j = 1 , N_det - call i_H_j(psi_in_out(1,1,i),psi_ref(1,1,j),N_int,hij) - interact_psi0(i) += hij * psi_coef(j,1) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = psi_active(j,1,i) - psi_in_out(j,2,i) = psi_active(j,2,i) - enddo - call i_H_j_dyall(psi_active(1,1,i),psi_active(1,1,i),N_int,hij) - diag_elem(i) = hij - enddo - do state_target = 1, N_states - ! Building the Hamiltonian matrix - H_matrix(1,1) = energy_cas_dyall(state_target) - do i = 1, N_det - ! interaction with psi0 - H_matrix(1,i+1) = interact_psi0(i)!* psi_coef(i,state_target) - H_matrix(i+1,1) = interact_psi0(i)!* psi_coef(i,state_target) - ! diagonal elements - H_matrix(i+1,i+1) = diag_elem(i) - delta_e_inact_virt(state_target) -! print*, 'H_matrix(i+1,i+1)',H_matrix(i+1,i+1) - do j = i+1, N_det - call i_H_j_dyall(psi_in_out(1,1,i),psi_in_out(1,1,j),N_int,hij) - H_matrix(i+1,j+1) = hij !0.d0 ! - H_matrix(j+1,i+1) = hij !0.d0 ! - enddo - enddo - print*, '***' - do i = 1, N_det+1 - write(*,'(100(F16.10,1X))')H_matrix(i,:) - enddo - call lapack_diag(eigenvalues,eigenvectors,H_matrix,size(H_matrix,1),N_det+1) - corr_e_from_1h1p(state_target) += eigenvalues(1) - energy_cas_dyall(state_target) - norm = 0.d0 - do i = 1, N_det - psi_in_out_coef(i,state_target) = eigenvectors(i+1,1)/eigenvectors(1,1) -!! if(dabs(psi_coef(i,state_target)*) .gt. 1.d-8)then - if(dabs(psi_in_out_coef(i,state_target)) .gt. 1.d-8)then -! if(dabs(interact_psi0(i)) .gt. 1.d-8)then - delta_e_alpha_beta(i,ispin) = H_matrix(1,i+1) / psi_in_out_coef(i,state_target) -! delta_e_alpha_beta(i,ispin) = interact_psi0(i) / psi_in_out_coef(i,state_target) - amplitudes_alpha_beta(i,ispin) = psi_in_out_coef(i,state_target) / psi_coef(i,state_target) - else - amplitudes_alpha_beta(i,ispin) = 0.d0 - delta_e_alpha_beta(i,ispin) = delta_e_inact_virt(state_target) - endif -!! one_anhil_one_creat_inact_virt_bis(iorb,vorb,i,ispin,state_target) = amplitudes_alpha_beta(i,ispin) - norm += psi_in_out_coef(i,state_target) * psi_in_out_coef(i,state_target) - enddo - print*, 'Coef ' - write(*,'(100(1X,F16.10))')psi_coef(1:N_det,state_target) - write(*,'(100(1X,F16.10))')psi_in_out_coef(:,state_target) - double precision :: coef_tmp(N_det) - do i = 1, N_det - coef_tmp(i) = psi_coef(i,1) * interact_psi0(i) / delta_e_alpha_beta(i,ispin) - enddo - write(*,'(100(1X,F16.10))')coef_tmp(:) - print*, 'naked interactions' - write(*,'(100(1X,F16.10))')interact_psi0(:) - print*, '' - - print*, 'norm ',norm - norm = 1.d0/(norm) - accu(state_target) = 0.d0 - do i = 1, N_det - accu(state_target) += psi_in_out_coef(i,state_target) * psi_in_out_coef(i,state_target) * H_matrix(i+1,i+1) - do j = i+1, N_det - accu(state_target) += 2.d0 * psi_in_out_coef(i,state_target) * psi_in_out_coef(j,state_target) * H_matrix(i+1,j+1) - enddo - enddo - accu(state_target) = accu(state_target) * norm - print*, delta_e_inact_virt(state_target) - print*, eigenvalues(1),accu(state_target),eigenvectors(1,1) - print*, energy_cas_dyall(state_target) - accu(state_target), one_anhil_one_creat_inact_virt(iorb,vorb,state_target) + delta_e_inact_virt(state_target) - - enddo - enddo ! ispin - do state_target = 1, N_states - do i = 1, N_det - one_anhil_one_creat_inact_virt_bis(iorb,vorb,i,state_target) = 0.5d0 * & - ( delta_e_alpha_beta(i,1) + delta_e_alpha_beta(i,1)) - enddo - enddo - print*, '***' - write(*,'(100(1X,F16.10))') - write(*,'(100(1X,F16.10))')delta_e_alpha_beta(:,2) - ! write(*,'(100(1X,F16.10))')one_anhil_one_creat_inact_virt_bis(iorb,vorb,:,1,:) - ! write(*,'(100(1X,F16.10))')one_anhil_one_creat_inact_virt_bis(iorb,vorb,:,2,:) - print*, '---------------------------------------------------------------------------' - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef,H_matrix,eigenvectors,eigenvalues) - print*, 'corr_e_from_1h1p,',corr_e_from_1h1p(:) - -END_PROVIDER - -subroutine give_singles_and_partial_doubles_1h1p_contrib(matrix_1h1p,e_corr_from_1h1p_singles) - implicit none - double precision , intent(inout) :: matrix_1h1p(N_det,N_det,N_states) - double precision , intent(out) :: e_corr_from_1h1p_singles(N_states) - integer :: i,vorb,j - integer :: ispin,jspin - integer :: orb_i, hole_particle_i - integer :: orb_v - double precision :: norm_out(N_states),diag_elem(N_det),interact_psi0(N_det) - double precision :: delta_e_inact_virt(N_states) - integer(bit_kind), allocatable :: psi_in_out(:,:,:) - double precision, allocatable :: psi_in_out_coef(:,:) - double precision, allocatable :: H_matrix(:,:),eigenvectors(:,:),eigenvalues(:),interact_cas(:,:) - double precision, allocatable :: delta_e_det(:,:) - use bitmasks - allocate (psi_in_out(N_int,2,n_det_ref),psi_in_out_coef(n_det_ref,N_states),H_matrix(N_det+1,N_det+1)) - allocate (eigenvectors(size(H_matrix,1),N_det+1)) - allocate (eigenvalues(N_det+1),interact_cas(N_det,N_det)) - allocate (delta_e_det(N_det,N_det)) - - integer :: iorb,jorb,i_ok - integer :: state_target - double precision :: energies(n_states) - double precision :: hij - double precision :: energies_alpha_beta(N_states,2) - double precision :: lamda_pt2(N_det) - - - double precision :: accu(N_states),norm - double precision :: amplitudes_alpha_beta(N_det,2) - double precision :: delta_e_alpha_beta(N_det,2) - double precision :: coef_array(N_states) - double precision :: coef_perturb(N_det) - double precision :: coef_perturb_bis(N_det) - - do vorb = 1,n_virt_orb - orb_v = list_virt(vorb) - do iorb = 1, n_inact_orb - orb_i = list_inact(iorb) - do j = 1, N_states - delta_e_inact_virt(j) = fock_core_inactive_total_spin_trace(orb_i,j) & - - fock_virt_total_spin_trace(orb_v,j) - enddo - do ispin = 1,2 - do i = 1, n_det_ref - do j = 1, N_int - psi_in_out(j,1,i) = psi_ref(j,1,i) - psi_in_out(j,2,i) = psi_ref(j,2,i) - enddo - call do_mono_excitation(psi_in_out(1,1,i),orb_i,orb_v,ispin,i_ok) - if(i_ok.ne.1)then - print*, orb_i,orb_v - call debug_det(psi_in_out,N_int) - print*, 'pb, i_ok ne 0 !!!' - endif - interact_psi0(i) = 0.d0 - do j = 1 , N_det - call i_H_j(psi_in_out(1,1,i),psi_ref(1,1,j),N_int,hij) - call get_delta_e_dyall(psi_ref(1,1,j),psi_in_out(1,1,i),delta_e_det(i,j)) - interact_cas(i,j) = hij - interact_psi0(i) += hij * psi_coef(j,1) - enddo - do j = 1, N_int - psi_in_out(j,1,i) = psi_active(j,1,i) - psi_in_out(j,2,i) = psi_active(j,2,i) - enddo - call i_H_j_dyall(psi_active(1,1,i),psi_active(1,1,i),N_int,hij) - diag_elem(i) = hij - enddo - do state_target = 1, N_states - ! Building the Hamiltonian matrix - H_matrix(1,1) = energy_cas_dyall(state_target) - do i = 1, N_det - ! interaction with psi0 - H_matrix(1,i+1) = interact_psi0(i)!* psi_coef(i,state_target) - H_matrix(i+1,1) = interact_psi0(i)!* psi_coef(i,state_target) - ! diagonal elements - H_matrix(i+1,i+1) = diag_elem(i) - delta_e_inact_virt(state_target) -! print*, 'H_matrix(i+1,i+1)',H_matrix(i+1,i+1) - do j = i+1, N_det - call i_H_j_dyall(psi_in_out(1,1,i),psi_in_out(1,1,j),N_int,hij) - H_matrix(i+1,j+1) = hij !0.d0 ! - H_matrix(j+1,i+1) = hij !0.d0 ! - enddo - enddo - call lapack_diag(eigenvalues,eigenvectors,H_matrix,size(H_matrix,1),N_det+1) - e_corr_from_1h1p_singles(state_target) += eigenvalues(1) - energy_cas_dyall(state_target) - - do i = 1, N_det - psi_in_out_coef(i,state_target) = eigenvectors(i+1,1)/eigenvectors(1,1) - coef_perturb(i) = 0.d0 - do j = 1, N_det - coef_perturb(i) += psi_coef(j,state_target) * interact_cas(i,j) *1.d0/delta_e_det(i,j) - enddo - coef_perturb_bis(i) = interact_psi0(i) / (eigenvalues(1) - H_matrix(i+1,i+1)) - if(dabs(interact_psi0(i)) .gt. 1.d-12)then - lamda_pt2(i) = psi_in_out_coef(i,state_target) / interact_psi0(i) - else - lamda_pt2(i) =energy_cas_dyall(state_target) - H_matrix(i+1,i+1) - endif - enddo - if(dabs(eigenvalues(1) - energy_cas_dyall(state_target)).gt.1.d-10)then - print*, '' - do i = 1, N_det+1 - write(*,'(100(F16.10))') H_matrix(i,:) - enddo - accu = 0.d0 - do i = 1, N_det - accu(state_target) += psi_in_out_coef(i,state_target) * interact_psi0(i) - enddo - print*, '' - print*, 'e corr diagonal ',accu(state_target) - accu = 0.d0 - do i = 1, N_det - accu(state_target) += coef_perturb(i) * interact_psi0(i) - enddo - print*, 'e corr perturb ',accu(state_target) - accu = 0.d0 - do i = 1, N_det - accu(state_target) += coef_perturb_bis(i) * interact_psi0(i) - enddo - print*, 'e corr perturb EN',accu(state_target) - print*, '' - print*, 'coef diagonalized' - write(*,'(100(F16.10,1X))')psi_in_out_coef(:,state_target) - print*, 'coef_perturb' - write(*,'(100(F16.10,1X))')coef_perturb(:) - print*, 'coef_perturb EN' - write(*,'(100(F16.10,1X))')coef_perturb_bis(:) - endif - integer :: k - do k = 1, N_det - do i = 1, N_det - matrix_1h1p(i,i,state_target) += interact_cas(k,i) * interact_cas(k,i) * lamda_pt2(k) - do j = i+1, N_det - matrix_1h1p(i,j,state_target) += interact_cas(k,i) * interact_cas(k,j) * lamda_pt2(k) - matrix_1h1p(j,i,state_target) += interact_cas(k,i) * interact_cas(k,j) * lamda_pt2(k) - enddo - enddo - enddo - enddo - enddo ! ispin - enddo - enddo - deallocate(psi_in_out,psi_in_out_coef,H_matrix,eigenvectors,eigenvalues,interact_cas) - deallocate(delta_e_det) -end diff --git a/src/mrpt_utils/excitations_cas.irp.f b/src/mrpt_utils/excitations_cas.irp.f deleted file mode 100644 index 491cda58..00000000 --- a/src/mrpt_utils/excitations_cas.irp.f +++ /dev/null @@ -1,708 +0,0 @@ -subroutine apply_exc_to_psi(orb,hole_particle,spin_exc, & - norm_out,psi_in_out,psi_in_out_coef, ndet,dim_psi_in,dim_psi_coef,N_states_in) - use bitmasks - implicit none - integer, intent(in) :: orb, hole_particle,spin_exc,N_states_in,ndet,dim_psi_in,dim_psi_coef - double precision, intent(out) :: norm_out(N_states_in) - integer(bit_kind), intent(inout) :: psi_in_out(N_int,2,dim_psi_in) - double precision, intent(inout) :: psi_in_out_coef(dim_psi_coef,N_states_in) - BEGIN_DOC - ! apply a contracted excitation to psi_in_out whose coefficients - ! are psi_in_out_coef - ! hole_particle = 1 ===> creation of an electron in psi_in_out - ! = -1 ===> annhilation of an electron in psi_in_out - ! orb ===> is the index of orbital where you want wether to create or - ! annhilate an electron - ! spin_exc ===> is the spin of the electron (1 == alpha) (2 == beta) - ! the wave function gets out normalized to unity - ! - ! norm_out is the sum of the squared of the coefficients - ! on which the excitation has been possible - END_DOC - - integer :: elec_num_tab_local(2) - integer :: i,j,accu_elec,k - integer(bit_kind) :: det_tmp(N_int), det_tmp_bis(N_int) - double precision :: phase - double precision :: norm_factor - - elec_num_tab_local = 0 - do i = 1, ndet - if( psi_in_out_coef (i,1) .ne. 0.d0)then - do j = 1, N_int - elec_num_tab_local(1) += popcnt(psi_in_out(j,1,i)) - elec_num_tab_local(2) += popcnt(psi_in_out(j,2,i)) - enddo - exit - endif - enddo - if(hole_particle == 1)then - do i = 1, ndet - call set_bit_to_integer(orb,psi_in_out(1,spin_exc,i),N_int) - accu_elec = 0 - do j = 1, N_int - accu_elec += popcnt(psi_in_out(j,spin_exc,i)) - enddo - if(accu_elec .ne. elec_num_tab_local(spin_exc)+1)then - do j = 1, N_int - psi_in_out(j,1,i) = 0_bit_kind - psi_in_out(j,2,i) = 0_bit_kind - enddo - do j = 1, N_states_in - psi_in_out_coef(i,j) = 0.d0 - enddo - endif - phase = 1.d0 - do k = 1, orb - do j = 1, N_int - det_tmp(j) = 0_bit_kind - enddo - call set_bit_to_integer(k,det_tmp,N_int) - accu_elec = 0 - do j = 1, N_int - det_tmp_bis(j) = iand(det_tmp(j),(psi_in_out(j,spin_exc,i))) - accu_elec += popcnt(det_tmp_bis(j)) - enddo - if(accu_elec == 1)then - phase = -phase - endif - enddo - do j = 1, N_states_in - psi_in_out_coef(i,j) = psi_in_out_coef(i,j) * phase - enddo - enddo - - else if (hole_particle == -1)then - - do i = 1, ndet - call clear_bit_to_integer(orb,psi_in_out(1,spin_exc,i),N_int) - accu_elec = 0 - do j = 1, N_int - accu_elec += popcnt(psi_in_out(j,spin_exc,i)) - enddo - if(accu_elec .ne. elec_num_tab_local(spin_exc)-1)then - do j = 1, N_int - psi_in_out(j,1,i) = 0_bit_kind - psi_in_out(j,2,i) = 0_bit_kind - enddo - do j = 1, N_states_in - psi_in_out_coef(i,j) = 0.d0 - enddo - endif - - phase = 1.d0 - do k = 1, orb-1 - do j = 1, N_int - det_tmp(j) = 0_bit_kind - enddo - call set_bit_to_integer(k,det_tmp,N_int) - accu_elec = 0 - do j = 1, N_int - det_tmp_bis(j) = iand(det_tmp(j),(psi_in_out(j,spin_exc,i))) - accu_elec += popcnt(det_tmp_bis(j)) - enddo - if(accu_elec == 1)then - phase = -phase - endif - enddo - do j = 1, N_states_in - psi_in_out_coef(i,j) = psi_in_out_coef(i,j) * phase - enddo - enddo - endif - - - norm_out = 0.d0 - do j = 1, N_states_in - do i = 1, ndet - norm_out(j) += psi_in_out_coef(i,j) * psi_in_out_coef(i,j) - enddo - if(norm_out(j).le.1.d-10)then - norm_factor = 0.d0 - else - norm_factor = 1.d0/(dsqrt(norm_out(j))) - endif - do i = 1, ndet - psi_in_out_coef(i,j) = psi_in_out_coef(i,j) * norm_factor - enddo - enddo -end - - -double precision function diag_H_mat_elem_no_elec_check(det_in,Nint) - implicit none - BEGIN_DOC - ! Computes - END_DOC - integer,intent(in) :: Nint - integer(bit_kind),intent(in) :: det_in(Nint,2) - - integer :: i, j, iorb, jorb - integer :: occ(Nint*bit_kind_size,2) - integer :: elec_num_tab_local(2) - - double precision :: core_act - double precision :: alpha_alpha - double precision :: alpha_beta - double precision :: beta_beta - double precision :: mono_elec - core_act = 0.d0 - alpha_alpha = 0.d0 - alpha_beta = 0.d0 - beta_beta = 0.d0 - mono_elec = 0.d0 - - diag_H_mat_elem_no_elec_check = 0.d0 - call bitstring_to_list(det_in(1,1), occ(1,1), elec_num_tab_local(1), N_int) - call bitstring_to_list(det_in(1,2), occ(1,2), elec_num_tab_local(2), N_int) - ! alpha - alpha -! print*, 'elec_num_tab_local(1)',elec_num_tab_local(1) -! print*, 'elec_num_tab_local(2)',elec_num_tab_local(2) - do i = 1, elec_num_tab_local(1) - iorb = occ(i,1) - diag_H_mat_elem_no_elec_check += mo_mono_elec_integral(iorb,iorb) - mono_elec += mo_mono_elec_integral(iorb,iorb) - do j = i+1, elec_num_tab_local(1) - jorb = occ(j,1) - diag_H_mat_elem_no_elec_check += mo_bielec_integral_jj_anti(jorb,iorb) - alpha_alpha += mo_bielec_integral_jj_anti(jorb,iorb) - enddo - enddo - - ! beta - beta - do i = 1, elec_num_tab_local(2) - iorb = occ(i,2) - diag_H_mat_elem_no_elec_check += mo_mono_elec_integral(iorb,iorb) - mono_elec += mo_mono_elec_integral(iorb,iorb) - do j = i+1, elec_num_tab_local(2) - jorb = occ(j,2) - diag_H_mat_elem_no_elec_check += mo_bielec_integral_jj_anti(jorb,iorb) - beta_beta += mo_bielec_integral_jj_anti(jorb,iorb) - enddo - enddo - - - ! alpha - beta - do i = 1, elec_num_tab_local(2) - iorb = occ(i,2) - do j = 1, elec_num_tab_local(1) - jorb = occ(j,1) - diag_H_mat_elem_no_elec_check += mo_bielec_integral_jj(jorb,iorb) - alpha_beta += mo_bielec_integral_jj(jorb,iorb) - enddo - enddo - - - ! alpha - core-act - do i = 1, elec_num_tab_local(1) - iorb = occ(i,1) - do j = 1, n_core_inact_orb - jorb = list_core_inact(j) - diag_H_mat_elem_no_elec_check += 2.d0 * mo_bielec_integral_jj(jorb,iorb) - mo_bielec_integral_jj_exchange(jorb,iorb) - core_act += 2.d0 * mo_bielec_integral_jj(jorb,iorb) - mo_bielec_integral_jj_exchange(jorb,iorb) - enddo - enddo - - ! beta - core-act - do i = 1, elec_num_tab_local(2) - iorb = occ(i,2) - do j = 1, n_core_inact_orb - jorb = list_core_inact(j) - diag_H_mat_elem_no_elec_check += 2.d0 * mo_bielec_integral_jj(jorb,iorb) - mo_bielec_integral_jj_exchange(jorb,iorb) - core_act += 2.d0 * mo_bielec_integral_jj(jorb,iorb) - mo_bielec_integral_jj_exchange(jorb,iorb) - enddo - enddo -! print*,'core_act = ',core_act -! print*,'alpha_alpha = ',alpha_alpha -! print*,'alpha_beta = ',alpha_beta -! print*,'beta_beta = ',beta_beta -! print*,'mono_elec = ',mono_elec - -! do i = 1, n_core_inact_orb -! iorb = list_core_inact(i) -! diag_H_mat_elem_no_elec_check += 2.d0 * fock_core_inactive_total_spin_trace(iorb,1) -! enddo - - -!!!!!!!!!!!! -return -!!!!!!!!!!!! - - - ! alpha - alpha - do i = 1, n_core_inact_orb - iorb = list_core_inact(i) - diag_H_mat_elem_no_elec_check += 1.d0 * mo_mono_elec_integral(iorb,iorb) - do j = i+1, n_core_inact_orb - jorb = list_core_inact(j) - diag_H_mat_elem_no_elec_check += 1.d0 * mo_bielec_integral_jj(jorb,iorb) - 1.d0 * mo_bielec_integral_jj_exchange(jorb,iorb) - enddo - enddo - - do i = 1, n_core_inact_orb - iorb = list_core_inact(i) - diag_H_mat_elem_no_elec_check += 1.d0 * mo_mono_elec_integral(iorb,iorb) - do j = i+1, n_core_inact_orb - jorb = list_core_inact(j) - diag_H_mat_elem_no_elec_check += 1.d0 * mo_bielec_integral_jj(jorb,iorb) - 1.d0 * mo_bielec_integral_jj_exchange(jorb,iorb) - enddo - enddo - - do i = 1, n_core_inact_orb - iorb = list_core_inact(i) - do j = 1, n_core_inact_orb - jorb = list_core_inact(j) - diag_H_mat_elem_no_elec_check += 1.d0 * mo_bielec_integral_jj(jorb,iorb) - enddo - enddo - -end - -subroutine i_H_j_dyall(key_i,key_j,Nint,hij) - use bitmasks - implicit none - BEGIN_DOC - ! Returns where i and j are determinants - END_DOC - integer, intent(in) :: Nint - integer(bit_kind), intent(in) :: key_i(Nint,2), key_j(Nint,2) - double precision, intent(out) :: hij - - integer :: exc(0:2,2,2) - integer :: degree - double precision :: get_mo_bielec_integral - integer :: m,n,p,q - integer :: i,j,k - integer :: occ(Nint*bit_kind_size,2) - double precision :: diag_H_mat_elem_no_elec_check, phase,phase_2 - integer :: n_occ_ab(2) - logical :: has_mipi(Nint*bit_kind_size) - double precision :: mipi(Nint*bit_kind_size), miip(Nint*bit_kind_size) - PROVIDE mo_bielec_integrals_in_map mo_integrals_map - - ASSERT (Nint > 0) - ASSERT (Nint == N_int) - - hij = 0.d0 - !DIR$ FORCEINLINE - call get_excitation_degree(key_i,key_j,degree,Nint) - select case (degree) - case (2) - call get_double_excitation(key_i,key_j,exc,phase,Nint) - if (exc(0,1,1) == 1) then - ! Mono alpha, mono beta - hij = phase*get_mo_bielec_integral( & - exc(1,1,1), & - exc(1,1,2), & - exc(1,2,1), & - exc(1,2,2) ,mo_integrals_map) - else if (exc(0,1,1) == 2) then - ! Double alpha - hij = phase*(get_mo_bielec_integral( & - exc(1,1,1), & - exc(2,1,1), & - exc(1,2,1), & - exc(2,2,1) ,mo_integrals_map) - & - get_mo_bielec_integral( & - exc(1,1,1), & - exc(2,1,1), & - exc(2,2,1), & - exc(1,2,1) ,mo_integrals_map) ) - else if (exc(0,1,2) == 2) then - ! Double beta - hij = phase*(get_mo_bielec_integral( & - exc(1,1,2), & - exc(2,1,2), & - exc(1,2,2), & - exc(2,2,2) ,mo_integrals_map) - & - get_mo_bielec_integral( & - exc(1,1,2), & - exc(2,1,2), & - exc(2,2,2), & - exc(1,2,2) ,mo_integrals_map) ) - endif - case (1) - call get_mono_excitation(key_i,key_j,exc,phase,Nint) - !DIR$ FORCEINLINE - call bitstring_to_list_ab(key_i, occ, n_occ_ab, Nint) - has_mipi = .False. - if (exc(0,1,1) == 1) then - ! Mono alpha - m = exc(1,1,1) - p = exc(1,2,1) - do k = 1, n_occ_ab(1) - i = occ(k,1) - if (.not.has_mipi(i)) then - mipi(i) = get_mo_bielec_integral(m,i,p,i,mo_integrals_map) - miip(i) = get_mo_bielec_integral(m,i,i,p,mo_integrals_map) - has_mipi(i) = .True. - endif - enddo - do k = 1, n_occ_ab(2) - i = occ(k,2) - if (.not.has_mipi(i)) then - mipi(i) = get_mo_bielec_integral(m,i,p,i,mo_integrals_map) - has_mipi(i) = .True. - endif - enddo - - do k = 1, n_occ_ab(1) - hij = hij + mipi(occ(k,1)) - miip(occ(k,1)) - enddo - do k = 1, n_occ_ab(2) - hij = hij + mipi(occ(k,2)) - enddo - - else - ! Mono beta - m = exc(1,1,2) - p = exc(1,2,2) - do k = 1, n_occ_ab(2) - i = occ(k,2) - if (.not.has_mipi(i)) then - mipi(i) = get_mo_bielec_integral(m,i,p,i,mo_integrals_map) - miip(i) = get_mo_bielec_integral(m,i,i,p,mo_integrals_map) - has_mipi(i) = .True. - endif - enddo - do k = 1, n_occ_ab(1) - i = occ(k,1) - if (.not.has_mipi(i)) then - mipi(i) = get_mo_bielec_integral(m,i,p,i,mo_integrals_map) - has_mipi(i) = .True. - endif - enddo - - do k = 1, n_occ_ab(1) - hij = hij + mipi(occ(k,1)) - enddo - do k = 1, n_occ_ab(2) - hij = hij + mipi(occ(k,2)) - miip(occ(k,2)) - enddo - - endif - hij = phase*(hij + mo_mono_elec_integral(m,p) + fock_operator_active_from_core_inact(m,p) ) - - case (0) - hij = diag_H_mat_elem_no_elec_check(key_i,Nint) - end select -end - - -subroutine u0_H_dyall_u0(energies,psi_in,psi_in_coef,ndet,dim_psi_in,dim_psi_coef,N_states_in,state_target) - use bitmasks - implicit none - integer, intent(in) :: N_states_in,ndet,dim_psi_in,dim_psi_coef,state_target - integer(bit_kind), intent(in) :: psi_in(N_int,2,dim_psi_in) - double precision, intent(in) :: psi_in_coef(dim_psi_coef,N_states_in) - double precision, intent(out) :: energies(N_states_in) - - integer :: i,j - double precision :: hij,accu - energies = 0.d0 - accu = 0.d0 - double precision, allocatable :: psi_coef_tmp(:) - allocate(psi_coef_tmp(ndet)) - - do i = 1, ndet - psi_coef_tmp(i) = psi_in_coef(i,state_target) - enddo - - double precision :: hij_bis - do i = 1, ndet - if(psi_coef_tmp(i)==0.d0)cycle - do j = 1, ndet - if(psi_coef_tmp(j)==0.d0)cycle - call i_H_j_dyall(psi_in(1,1,i),psi_in(1,1,j),N_int,hij) - accu += psi_coef_tmp(i) * psi_coef_tmp(j) * hij - enddo - enddo - energies(state_target) = accu - deallocate(psi_coef_tmp) -end - - -double precision function coulomb_value_no_check(det_in,Nint) - implicit none - BEGIN_DOC - ! Computes - END_DOC - integer,intent(in) :: Nint - integer(bit_kind),intent(in) :: det_in(Nint,2) - - integer :: i, j, iorb, jorb - integer :: occ(Nint*bit_kind_size,2) - integer :: elec_num_tab_local(2) - - double precision :: core_act - double precision :: alpha_alpha - double precision :: alpha_beta - double precision :: beta_beta - double precision :: mono_elec - core_act = 0.d0 - alpha_alpha = 0.d0 - alpha_beta = 0.d0 - beta_beta = 0.d0 - mono_elec = 0.d0 - - coulomb_value_no_check = 0.d0 - call bitstring_to_list(det_in(1,1), occ(1,1), elec_num_tab_local(1), N_int) - call bitstring_to_list(det_in(1,2), occ(1,2), elec_num_tab_local(2), N_int) - ! alpha - alpha - do i = 1, elec_num_tab_local(1) - iorb = occ(i,1) - do j = i+1, elec_num_tab_local(1) - jorb = occ(j,1) - coulomb_value_no_check += mo_bielec_integral_jj_anti(jorb,iorb) - alpha_alpha += mo_bielec_integral_jj_anti(jorb,iorb) - enddo - enddo - - ! beta - beta - do i = 1, elec_num_tab_local(2) - iorb = occ(i,2) - do j = i+1, elec_num_tab_local(2) - jorb = occ(j,2) - coulomb_value_no_check += mo_bielec_integral_jj_anti(jorb,iorb) - beta_beta += mo_bielec_integral_jj_anti(jorb,iorb) - enddo - enddo - - - ! alpha - beta - do i = 1, elec_num_tab_local(2) - iorb = occ(i,2) - do j = 1, elec_num_tab_local(1) - jorb = occ(j,1) - coulomb_value_no_check += mo_bielec_integral_jj(jorb,iorb) - alpha_beta += mo_bielec_integral_jj(jorb,iorb) - enddo - enddo - - -end - -subroutine i_H_j_dyall_no_exchange(key_i,key_j,Nint,hij) - use bitmasks - implicit none - BEGIN_DOC - ! Returns where i and j are determinants - END_DOC - integer, intent(in) :: Nint - integer(bit_kind), intent(in) :: key_i(Nint,2), key_j(Nint,2) - double precision, intent(out) :: hij - - integer :: exc(0:2,2,2) - integer :: degree - double precision :: get_mo_bielec_integral - integer :: m,n,p,q - integer :: i,j,k - integer :: occ(Nint*bit_kind_size,2) - double precision :: diag_H_mat_elem_no_elec_check_no_exchange, phase,phase_2 - integer :: n_occ_ab(2) - logical :: has_mipi(Nint*bit_kind_size) - double precision :: mipi(Nint*bit_kind_size) - PROVIDE mo_bielec_integrals_in_map mo_integrals_map - - ASSERT (Nint > 0) - ASSERT (Nint == N_int) - - hij = 0.d0 - !DIR$ FORCEINLINE - call get_excitation_degree(key_i,key_j,degree,Nint) - select case (degree) - case (2) - call get_double_excitation(key_i,key_j,exc,phase,Nint) - if (exc(0,1,1) == 1) then - ! Mono alpha, mono beta - if(exc(1,1,1) == exc(1,2,2) .and. exc(1,2,1) == exc(1,1,2))then - hij = 0.d0 - else - hij = phase*get_mo_bielec_integral( & - exc(1,1,1), & - exc(1,1,2), & - exc(1,2,1), & - exc(1,2,2) ,mo_integrals_map) - endif - else if (exc(0,1,1) == 2) then - ! Double alpha - hij = phase*get_mo_bielec_integral( & - exc(1,1,1), & - exc(2,1,1), & - exc(1,2,1), & - exc(2,2,1) ,mo_integrals_map) - else if (exc(0,1,2) == 2) then - ! Double beta - hij = phase*get_mo_bielec_integral( & - exc(1,1,2), & - exc(2,1,2), & - exc(1,2,2), & - exc(2,2,2) ,mo_integrals_map) - endif - case (1) - call get_mono_excitation(key_i,key_j,exc,phase,Nint) - !DIR$ FORCEINLINE - call bitstring_to_list_ab(key_i, occ, n_occ_ab, Nint) - has_mipi = .False. - if (exc(0,1,1) == 1) then - ! Mono alpha - m = exc(1,1,1) - p = exc(1,2,1) - do k = 1, n_occ_ab(1) - i = occ(k,1) - if (.not.has_mipi(i)) then - mipi(i) = get_mo_bielec_integral(m,i,p,i,mo_integrals_map) - has_mipi(i) = .True. - endif - enddo - do k = 1, n_occ_ab(2) - i = occ(k,2) - if (.not.has_mipi(i)) then - mipi(i) = get_mo_bielec_integral(m,i,p,i,mo_integrals_map) - has_mipi(i) = .True. - endif - enddo - - do k = 1, n_occ_ab(1) - hij = hij + mipi(occ(k,1)) - enddo - do k = 1, n_occ_ab(2) - hij = hij + mipi(occ(k,2)) - enddo - - else - ! Mono beta - m = exc(1,1,2) - p = exc(1,2,2) - do k = 1, n_occ_ab(2) - i = occ(k,2) - if (.not.has_mipi(i)) then - mipi(i) = get_mo_bielec_integral(m,i,p,i,mo_integrals_map) - has_mipi(i) = .True. - endif - enddo - do k = 1, n_occ_ab(1) - i = occ(k,1) - if (.not.has_mipi(i)) then - mipi(i) = get_mo_bielec_integral(m,i,p,i,mo_integrals_map) - has_mipi(i) = .True. - endif - enddo - - do k = 1, n_occ_ab(1) - hij = hij + mipi(occ(k,1)) - enddo - do k = 1, n_occ_ab(2) - hij = hij + mipi(occ(k,2)) - enddo - - endif - hij = phase*(hij + mo_mono_elec_integral(m,p) + fock_operator_active_from_core_inact(m,p) ) - - case (0) - hij = diag_H_mat_elem_no_elec_check_no_exchange(key_i,Nint) - end select -end - - -double precision function diag_H_mat_elem_no_elec_check_no_exchange(det_in,Nint) - implicit none - BEGIN_DOC - ! Computes - END_DOC - integer,intent(in) :: Nint - integer(bit_kind),intent(in) :: det_in(Nint,2) - - integer :: i, j, iorb, jorb - integer :: occ(Nint*bit_kind_size,2) - integer :: elec_num_tab_local(2) - - double precision :: core_act_exchange(2) - core_act_exchange = 0.d0 - diag_H_mat_elem_no_elec_check_no_exchange = 0.d0 - call bitstring_to_list(det_in(1,1), occ(1,1), elec_num_tab_local(1), N_int) - call bitstring_to_list(det_in(1,2), occ(1,2), elec_num_tab_local(2), N_int) - ! alpha - alpha - do i = 1, elec_num_tab_local(1) - iorb = occ(i,1) - diag_H_mat_elem_no_elec_check_no_exchange += mo_mono_elec_integral(iorb,iorb) - do j = i+1, elec_num_tab_local(1) - jorb = occ(j,1) - diag_H_mat_elem_no_elec_check_no_exchange += mo_bielec_integral_jj(jorb,iorb) - enddo - enddo - - ! beta - beta - do i = 1, elec_num_tab_local(2) - iorb = occ(i,2) - diag_H_mat_elem_no_elec_check_no_exchange += mo_mono_elec_integral(iorb,iorb) - do j = i+1, elec_num_tab_local(2) - jorb = occ(j,2) - diag_H_mat_elem_no_elec_check_no_exchange += mo_bielec_integral_jj(jorb,iorb) - enddo - enddo - - - ! alpha - beta - do i = 1, elec_num_tab_local(2) - iorb = occ(i,2) - do j = 1, elec_num_tab_local(1) - jorb = occ(j,1) - diag_H_mat_elem_no_elec_check_no_exchange += mo_bielec_integral_jj(jorb,iorb) - enddo - enddo - - - ! alpha - core-act - do i = 1, elec_num_tab_local(1) - iorb = occ(i,1) - do j = 1, n_core_inact_orb - jorb = list_core_inact(j) - diag_H_mat_elem_no_elec_check_no_exchange += 2.d0 * mo_bielec_integral_jj(jorb,iorb) - core_act_exchange(1) += - mo_bielec_integral_jj_exchange(jorb,iorb) - enddo - enddo - - ! beta - core-act - do i = 1, elec_num_tab_local(2) - iorb = occ(i,2) - do j = 1, n_core_inact_orb - jorb = list_core_inact(j) - diag_H_mat_elem_no_elec_check_no_exchange += 2.d0 * mo_bielec_integral_jj(jorb,iorb) - core_act_exchange(2) += - mo_bielec_integral_jj_exchange(jorb,iorb) - enddo - enddo - -end - -subroutine u0_H_dyall_u0_no_exchange(energies,psi_in,psi_in_coef,ndet,dim_psi_in,dim_psi_coef,N_states_in,state_target) - use bitmasks - implicit none - integer, intent(in) :: N_states_in,ndet,dim_psi_in,dim_psi_coef,state_target - integer(bit_kind), intent(in) :: psi_in(N_int,2,dim_psi_in) - double precision, intent(in) :: psi_in_coef(dim_psi_coef,N_states_in) - double precision, intent(out) :: energies(N_states_in) - - integer :: i,j - double precision :: hij,accu - energies = 0.d0 - accu = 0.d0 - double precision, allocatable :: psi_coef_tmp(:) - allocate(psi_coef_tmp(ndet)) - - do i = 1, ndet - psi_coef_tmp(i) = psi_in_coef(i,state_target) - enddo - - double precision :: hij_bis - do i = 1, ndet - if(psi_coef_tmp(i)==0.d0)cycle - do j = 1, ndet - if(psi_coef_tmp(j)==0.d0)cycle - call i_H_j_dyall_no_exchange(psi_in(1,1,i),psi_in(1,1,j),N_int,hij) - accu += psi_coef_tmp(i) * psi_coef_tmp(j) * hij - enddo - enddo - energies(state_target) = accu - deallocate(psi_coef_tmp) -end diff --git a/src/mrpt_utils/fock_like_operators.irp.f b/src/mrpt_utils/fock_like_operators.irp.f deleted file mode 100644 index d4ce0661..00000000 --- a/src/mrpt_utils/fock_like_operators.irp.f +++ /dev/null @@ -1,210 +0,0 @@ - BEGIN_PROVIDER [double precision, fock_core_inactive, (mo_tot_num)] - BEGIN_DOC -! inactive part of the fock operator with contributions only from the inactive - END_DOC - implicit none - integer :: i,j - double precision :: accu - - integer :: j_inact_core_orb,i_inact_core_orb - do i = 1, n_core_inact_orb - accu = 0.d0 - i_inact_core_orb = list_core_inact(i) - do j = 1, n_core_inact_orb - j_inact_core_orb = list_core_inact(j) - accu += 2.d0 * mo_bielec_integral_jj(i_inact_core_orb,j_inact_core_orb) & - - mo_bielec_integral_jj_exchange(i_inact_core_orb,j_inact_core_orb) - enddo - fock_core_inactive(i_inact_core_orb) = accu + mo_mono_elec_integral(i_inact_core_orb,i_inact_core_orb) - enddo - END_PROVIDER - - BEGIN_PROVIDER [double precision, fock_virt_from_core_inact, (mo_tot_num)] - BEGIN_DOC -! fock operator for the virtuals that comes from the doubly occupied orbitals - END_DOC - implicit none - integer :: i,j - double precision :: accu - - integer :: j_inact_core_orb,i_virt_orb - do i = 1, n_virt_orb - accu = 0.d0 - i_virt_orb = list_virt(i) - do j = 1, n_core_inact_orb -! do j = 1, elec_alpha_num -! j_inact_core_orb = j - j_inact_core_orb = list_core_inact(j) - accu += 2.d0 * mo_bielec_integral_jj(i_virt_orb,j_inact_core_orb) & - - mo_bielec_integral_jj_exchange(i_virt_orb,j_inact_core_orb) - enddo - fock_virt_from_core_inact(i_virt_orb) = accu - enddo - END_PROVIDER - - BEGIN_PROVIDER [double precision, fock_core_inactive_from_act, (mo_tot_num,2,N_states)] - BEGIN_DOC -! inactive part of the fock operator with contributions only from the active - END_DOC - implicit none - integer :: i,j,k - double precision :: accu_coulomb,accu_exchange(2) - double precision :: na,nb,ntot - double precision :: coulomb, exchange - double precision :: get_mo_bielec_integral - integer :: j_act_orb,k_act_orb,i_inact_core_orb - integer :: i_state - - do i_state = 1,N_states - do i = 1, n_core_inact_orb - accu_coulomb = 0.d0 - accu_exchange = 0.d0 - i_inact_core_orb = list_core_inact(i) - do j = 1, n_act_orb - j_act_orb = list_act(j) - na = one_body_dm_mo_alpha(j_act_orb,j_act_orb,i_state) - nb = one_body_dm_mo_beta(j_act_orb,j_act_orb,i_state) - ntot = na + nb - coulomb = mo_bielec_integral_jj(i_inact_core_orb,j_act_orb) - exchange = mo_bielec_integral_jj_exchange(i_inact_core_orb,j_act_orb) - accu_coulomb += ntot * coulomb - accu_exchange(1) += na * exchange - accu_exchange(2) += nb * exchange - do k = j+1, n_act_orb - k_act_orb = list_act(k) - na = one_body_dm_mo_alpha(j_act_orb,k_act_orb,i_state) - nb = one_body_dm_mo_beta(j_act_orb,k_act_orb,i_state) - ntot = na + nb - coulomb = get_mo_bielec_integral(j_act_orb,i_inact_core_orb,k_act_orb,i_inact_core_orb,mo_integrals_map) - exchange = get_mo_bielec_integral(j_act_orb,k_act_orb,i_inact_core_orb,i_inact_core_orb,mo_integrals_map) - accu_coulomb += 2.d0 * ntot * coulomb - accu_exchange(1) += 2.d0 * na * exchange - accu_exchange(2) += 2.d0 * nb * exchange - enddo - enddo - fock_core_inactive_from_act(i_inact_core_orb,1,i_state) = accu_coulomb - accu_exchange(1) - fock_core_inactive_from_act(i_inact_core_orb,2,i_state) = accu_coulomb - accu_exchange(2) - enddo - enddo - END_PROVIDER - - BEGIN_PROVIDER [double precision, fock_virt_from_act, (mo_tot_num,2,N_states)] - BEGIN_DOC -! virtual part of the fock operator with contributions only from the active - END_DOC - implicit none - integer :: i,j,k - double precision :: accu_coulomb,accu_exchange(2) - double precision :: na,nb,ntot - double precision :: coulomb, exchange - double precision :: get_mo_bielec_integral - integer :: j_act_orb,i_virt_orb,k_act_orb - integer :: i_state - ! TODO : inverse loop of i_state - - do i_state = 1, N_states - do i = 1, n_virt_orb - accu_coulomb = 0.d0 - accu_exchange = 0.d0 - i_virt_orb = list_virt(i) - do j = 1, n_act_orb - j_act_orb = list_act(j) - na = one_body_dm_mo_alpha(j_act_orb,j_act_orb,i_state) - nb = one_body_dm_mo_beta(j_act_orb,j_act_orb,i_state) - ntot = na + nb - coulomb = mo_bielec_integral_jj(i_virt_orb,j_act_orb) - exchange = mo_bielec_integral_jj_exchange(i_virt_orb,j_act_orb) - accu_coulomb += ntot * coulomb - accu_exchange(1) += na * exchange - accu_exchange(2) += nb * exchange - do k = j+1, n_act_orb - k_act_orb = list_act(k) - na = one_body_dm_mo_alpha(j_act_orb,k_act_orb,i_state) - nb = one_body_dm_mo_beta(j_act_orb,k_act_orb,i_state) - ntot = na + nb - coulomb = get_mo_bielec_integral(j_act_orb,i_virt_orb,k_act_orb,i_virt_orb,mo_integrals_map) - exchange = get_mo_bielec_integral(j_act_orb,k_act_orb,i_virt_orb,i_virt_orb,mo_integrals_map) - accu_coulomb += 2.d0 * ntot * coulomb - accu_exchange(1) += 2.d0 * na * exchange - accu_exchange(2) += 2.d0 * nb * exchange - enddo - enddo - fock_virt_from_act(i_virt_orb,1,i_state) = accu_coulomb - accu_exchange(1) - fock_virt_from_act(i_virt_orb,2,i_state) = accu_coulomb - accu_exchange(2) - enddo - enddo - END_PROVIDER - - BEGIN_PROVIDER [double precision, fock_core_inactive_total, (mo_tot_num,2,N_states)] -&BEGIN_PROVIDER [double precision, fock_core_inactive_total_spin_trace, (mo_tot_num,N_states)] - BEGIN_DOC -! inactive part of the fock operator - END_DOC - implicit none - integer :: i - integer :: i_inact_core_orb - integer :: i_state - do i_state = 1, N_states - do i = 1, n_core_inact_orb - i_inact_core_orb = list_core_inact(i) - fock_core_inactive_total(i_inact_core_orb,1,i_state) = fock_core_inactive(i_inact_core_orb) + fock_core_inactive_from_act(i_inact_core_orb,1,i_state) - fock_core_inactive_total(i_inact_core_orb,2,i_state) = fock_core_inactive(i_inact_core_orb) + fock_core_inactive_from_act(i_inact_core_orb,2,i_state) - fock_core_inactive_total_spin_trace(i_inact_core_orb,i_state) = 0.5d0 * (fock_core_inactive_total(i_inact_core_orb,1,i_state) + fock_core_inactive_total(i_inact_core_orb,2,i_state)) - enddo - enddo - END_PROVIDER - - BEGIN_PROVIDER [double precision, fock_virt_total, (mo_tot_num,2,N_states)] -&BEGIN_PROVIDER [double precision, fock_virt_total_spin_trace, (mo_tot_num,N_states)] - BEGIN_DOC -! inactive part of the fock operator - END_DOC - implicit none - integer :: i - integer :: i_virt_orb - integer :: i_state - do i_state = 1, N_states - do i = 1, n_virt_orb - i_virt_orb= list_virt(i) - fock_virt_total(i_virt_orb,1,i_state) = fock_virt_from_core_inact(i_virt_orb) + fock_virt_from_act(i_virt_orb,1,i_state)+ mo_mono_elec_integral(i_virt_orb,i_virt_orb) - fock_virt_total(i_virt_orb,2,i_state) = fock_virt_from_core_inact(i_virt_orb) + fock_virt_from_act(i_virt_orb,2,i_state)+ mo_mono_elec_integral(i_virt_orb,i_virt_orb) - fock_virt_total_spin_trace(i_virt_orb,i_state) = 0.5d0 * ( fock_virt_total(i_virt_orb,1,i_state) + fock_virt_total(i_virt_orb,2,i_state) ) - enddo - enddo - END_PROVIDER - - - - - - BEGIN_PROVIDER [double precision, fock_operator_active_from_core_inact, (mo_tot_num,mo_tot_num)] - BEGIN_DOC -! active part of the fock operator with contributions only from the inactive - END_DOC - implicit none - integer :: i,j,k,k_inact_core_orb - integer :: iorb,jorb - double precision :: accu - double precision :: get_mo_bielec_integral,coulomb, exchange - PROVIDE mo_bielec_integrals_in_map - fock_operator_active_from_core_inact = 0.d0 - do i = 1, n_act_orb - iorb = list_act(i) - do j = 1, n_act_orb - jorb = list_act(j) - accu = 0.d0 - do k = 1, n_core_inact_orb - k_inact_core_orb = list_core_inact(k) - coulomb = get_mo_bielec_integral(k_inact_core_orb,iorb,k_inact_core_orb,jorb,mo_integrals_map) - exchange = get_mo_bielec_integral(k_inact_core_orb,jorb,iorb,k_inact_core_orb,mo_integrals_map) - accu += 2.d0 * coulomb - exchange - enddo - fock_operator_active_from_core_inact(iorb,jorb) = accu - enddo - enddo - - END_PROVIDER - - - - diff --git a/src/mrpt_utils/give_2h2p.irp.f b/src/mrpt_utils/give_2h2p.irp.f deleted file mode 100644 index df71e594..00000000 --- a/src/mrpt_utils/give_2h2p.irp.f +++ /dev/null @@ -1,35 +0,0 @@ -subroutine give_2h2p(contrib_2h2p) - implicit none - double precision, intent(out) :: contrib_2h2p(N_states) - integer :: i,j,k,l,m - integer :: iorb,jorb,korb,lorb - - double precision :: get_mo_bielec_integral - double precision :: direct_int,exchange_int - double precision :: numerator,denominator(N_states) - - contrib_2h2p = 0.d0 - do i = 1, n_inact_orb - iorb = list_inact(i) - do j = 1, n_inact_orb - jorb = list_inact(j) - do k = 1, n_virt_orb - korb = list_virt(k) - do l = 1, n_virt_orb - lorb = list_virt(l) - direct_int = get_mo_bielec_integral(iorb,jorb,korb,lorb ,mo_integrals_map) - exchange_int = get_mo_bielec_integral(iorb,jorb,lorb,korb ,mo_integrals_map) - numerator = 3.d0 * direct_int*direct_int + exchange_int*exchange_int -2.d0 * exchange_int * direct_int - do m = 1, N_states - denominator(m) = fock_core_inactive_total_spin_trace(iorb,m) + fock_core_inactive_total_spin_trace(jorb,m) & - -fock_virt_total_spin_trace(korb,m) - fock_virt_total_spin_trace(lorb,m) - contrib_2h2p(m) += numerator / denominator(m) - enddo - enddo - enddo - enddo - enddo - contrib_2h2p = contrib_2h2p*0.5d0 - -end - diff --git a/src/mrpt_utils/h_apply.irp.f b/src/mrpt_utils/h_apply.irp.f deleted file mode 100644 index ee922fc4..00000000 --- a/src/mrpt_utils/h_apply.irp.f +++ /dev/null @@ -1,187 +0,0 @@ -use bitmasks -BEGIN_SHELL [ /usr/bin/env python2 ] -from generate_h_apply import * - -s = H_apply("mrpt") -s.data["parameters"] = ", delta_ij_, Ndet" -s.data["declarations"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["keys_work"] = "call mrpt_dress(delta_ij_,Ndet,i_generator,key_idx,keys_out,N_int,iproc,key_mask)" -s.data["params_post"] += ", delta_ij_, Ndet" -s.data["params_main"] += "delta_ij_, Ndet" -s.data["decls_main"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["finalization"] = "" -s.data["copy_buffer"] = "" -s.data["generate_psi_guess"] = "" -s.data["size_max"] = "3072" -print s - -s = H_apply("mrpt_1h") -s.filter_only_1h() -s.data["parameters"] = ", delta_ij_, Ndet" -s.data["declarations"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["keys_work"] = "call mrpt_dress(delta_ij_,Ndet,i_generator,key_idx,keys_out,N_int,iproc,key_mask)" -s.data["params_post"] += ", delta_ij_, Ndet" -s.data["params_main"] += "delta_ij_, Ndet" -s.data["decls_main"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["finalization"] = "" -s.data["copy_buffer"] = "" -s.data["generate_psi_guess"] = "" -s.data["size_max"] = "3072" -print s - -s = H_apply("mrpt_1p") -s.filter_only_1p() -s.data["parameters"] = ", delta_ij_, Ndet" -s.data["declarations"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["keys_work"] = "call mrpt_dress(delta_ij_,Ndet,i_generator,key_idx,keys_out,N_int,iproc,key_mask)" -s.data["params_post"] += ", delta_ij_, Ndet" -s.data["params_main"] += "delta_ij_, Ndet" -s.data["decls_main"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["finalization"] = "" -s.data["copy_buffer"] = "" -s.data["generate_psi_guess"] = "" -s.data["size_max"] = "3072" -print s - -s = H_apply("mrpt_1h1p") -s.filter_only_1h1p() -s.data["parameters"] = ", delta_ij_, Ndet" -s.data["declarations"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["keys_work"] = "call mrpt_dress(delta_ij_,Ndet,i_generator,key_idx,keys_out,N_int,iproc,key_mask)" -s.data["params_post"] += ", delta_ij_, Ndet" -s.data["params_main"] += "delta_ij_, Ndet" -s.data["decls_main"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["finalization"] = "" -s.data["copy_buffer"] = "" -s.data["generate_psi_guess"] = "" -s.data["size_max"] = "3072" -print s - -s = H_apply("mrpt_2p") -s.filter_only_2p() -s.data["parameters"] = ", delta_ij_, Ndet" -s.data["declarations"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["keys_work"] = "call mrpt_dress(delta_ij_,Ndet,i_generator,key_idx,keys_out,N_int,iproc,key_mask)" -s.data["params_post"] += ", delta_ij_, Ndet" -s.data["params_main"] += "delta_ij_, Ndet" -s.data["decls_main"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["finalization"] = "" -s.data["copy_buffer"] = "" -s.data["generate_psi_guess"] = "" -s.data["size_max"] = "3072" -print s - -s = H_apply("mrpt_2h") -s.filter_only_2h() -s.data["parameters"] = ", delta_ij_, Ndet" -s.data["declarations"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["keys_work"] = "call mrpt_dress(delta_ij_,Ndet,i_generator,key_idx,keys_out,N_int,iproc,key_mask)" -s.data["params_post"] += ", delta_ij_, Ndet" -s.data["params_main"] += "delta_ij_, Ndet" -s.data["decls_main"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["finalization"] = "" -s.data["copy_buffer"] = "" -s.data["generate_psi_guess"] = "" -s.data["size_max"] = "3072" -print s - - -s = H_apply("mrpt_1h2p") -s.filter_only_1h2p() -s.data["parameters"] = ", delta_ij_, Ndet" -s.data["declarations"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["keys_work"] = "call mrpt_dress(delta_ij_,Ndet,i_generator,key_idx,keys_out,N_int,iproc,key_mask)" -s.data["params_post"] += ", delta_ij_, Ndet" -s.data["params_main"] += "delta_ij_, Ndet" -s.data["decls_main"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["finalization"] = "" -s.data["copy_buffer"] = "" -s.data["generate_psi_guess"] = "" -s.data["size_max"] = "3072" -print s - -s = H_apply("mrpt_2h1p") -s.filter_only_2h1p() -s.data["parameters"] = ", delta_ij_, Ndet" -s.data["declarations"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["keys_work"] = "call mrpt_dress(delta_ij_,Ndet,i_generator,key_idx,keys_out,N_int,iproc,key_mask)" -s.data["params_post"] += ", delta_ij_, Ndet" -s.data["params_main"] += "delta_ij_, Ndet" -s.data["decls_main"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["finalization"] = "" -s.data["copy_buffer"] = "" -s.data["generate_psi_guess"] = "" -s.data["size_max"] = "3072" -print s - -s = H_apply("mrpt_2h2p") -s.filter_only_2h2p() -s.data["parameters"] = ", delta_ij_, Ndet" -s.data["declarations"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["keys_work"] = "call mrpt_dress(delta_ij_,Ndet,i_generator,key_idx,keys_out,N_int,iproc,key_mask)" -s.data["params_post"] += ", delta_ij_, Ndet" -s.data["params_main"] += "delta_ij_, Ndet" -s.data["decls_main"] += """ - integer, intent(in) :: Ndet - double precision, intent(in) :: delta_ij_(Ndet,Ndet,*) -""" -s.data["finalization"] = "" -s.data["copy_buffer"] = "" -s.data["generate_psi_guess"] = "" -s.data["size_max"] = "3072" -print s - - -END_SHELL - diff --git a/src/mrpt_utils/mrpt_dress.irp.f b/src/mrpt_utils/mrpt_dress.irp.f deleted file mode 100644 index c7371ab3..00000000 --- a/src/mrpt_utils/mrpt_dress.irp.f +++ /dev/null @@ -1,187 +0,0 @@ -use omp_lib -use bitmasks - -BEGIN_PROVIDER [ integer(omp_lock_kind), psi_ref_bis_lock, (psi_det_size) ] - implicit none - BEGIN_DOC - ! Locks on ref determinants to fill delta_ij - END_DOC - integer :: i - do i=1,psi_det_size - call omp_init_lock( psi_ref_bis_lock(i) ) - enddo - -END_PROVIDER - - -subroutine mrpt_dress(delta_ij_, Ndet,i_generator,n_selected,det_buffer,Nint,iproc,key_mask) - use bitmasks - implicit none - - integer, intent(in) :: i_generator,n_selected, Nint, iproc - integer, intent(in) :: Ndet - integer(bit_kind),intent(in) :: key_mask(Nint, 2) - integer(bit_kind), intent(in) :: det_buffer(Nint,2,n_selected) - double precision, intent(inout) :: delta_ij_(Ndet,Ndet,*) - - - integer :: i,j,k,l - integer :: idx_alpha(0:psi_det_size) - integer :: degree_alpha(psi_det_size) - logical :: fullMatch - - double precision :: delta_e_inv_array(psi_det_size,N_states) - double precision :: hij_array(psi_det_size) - - integer(bit_kind) :: tq(Nint,2,n_selected) - integer :: N_tq - - double precision :: hialpha,hij - integer :: i_state, i_alpha - - integer(bit_kind),allocatable :: miniList(:,:,:) - integer,allocatable :: idx_miniList(:) - integer :: N_miniList, leng - double precision :: delta_e(N_states),hij_tmp - integer :: index_i,index_j - double precision :: phase_array(N_det),phase - integer :: exc(0:2,2,2),degree - - - leng = max(N_det_generators, N_det) - allocate(miniList(Nint, 2, leng), idx_miniList(leng)) - - !create_minilist_find_previous(key_mask, fullList, miniList, N_fullList, N_miniList, fullMatch, Nint) - call create_minilist_find_previous(key_mask, psi_det_generators, miniList, i_generator-1, N_miniList, fullMatch, Nint) - - if(fullMatch) then - return - end if - - - call find_connections_previous(i_generator,n_selected,det_buffer,Nint,tq,N_tq,miniList,N_minilist) - - if(N_tq > 0) then - call create_minilist(key_mask, psi_ref, miniList, idx_miniList, N_det, N_minilist, Nint) - end if - - - do i_alpha=1,N_tq - call get_excitation_degree_vector(miniList,tq(1,1,i_alpha),degree_alpha,Nint,N_minilist,idx_alpha) - - do j=1,idx_alpha(0) - idx_alpha(j) = idx_miniList(idx_alpha(j)) - enddo - -! double precision :: ihpsi0,coef_pert -! ihpsi0 = 0.d0 -! coef_pert = 0.d0 - phase_array =0.d0 - do i = 1,idx_alpha(0) - index_i = idx_alpha(i) - call i_h_j(tq(1,1,i_alpha),psi_ref(1,1,index_i),Nint,hialpha) - double precision :: coef_array(N_states) - do i_state = 1, N_states - coef_array(i_state) = psi_coef(index_i,i_state) - enddo - call get_delta_e_dyall(psi_ref(1,1,index_i),tq(1,1,i_alpha),delta_e) -! call get_delta_e_dyall_general_mp(psi_ref(1,1,index_i),tq(1,1,i_alpha),delta_e) - hij_array(index_i) = hialpha - call get_excitation(psi_ref(1,1,index_i),tq(1,1,i_alpha),exc,degree,phase,N_int) -! phase_array(index_i) = phase - do i_state = 1,N_states - delta_e_inv_array(index_i,i_state) = 1.d0/delta_e(i_state) - enddo - enddo - - do i=1,idx_alpha(0) - index_i = idx_alpha(i) - hij_tmp = hij_array(index_i) - call omp_set_lock( psi_ref_bis_lock(index_i) ) - do j = 1, idx_alpha(0) - index_j = idx_alpha(j) -! call get_excitation(psi_ref(1,1,index_i),psi_ref(1,1,index_i),exc,degree,phase,N_int) -! if(index_j.ne.index_i)then -! if(phase_array(index_j) * phase_array(index_i) .ne. phase)then -! print*, phase_array(index_j) , phase_array(index_i) ,phase -! call debug_det(psi_ref(1,1,index_i),N_int) -! call debug_det(psi_ref(1,1,index_j),N_int) -! call debug_det(tq(1,1,i_alpha),N_int) -! stop -! endif -! endif - do i_state=1,N_states -! standard dressing first order - delta_ij_(index_i,index_j,i_state) += hij_array(index_j) * hij_tmp * delta_e_inv_array(index_j,i_state) - enddo - enddo - call omp_unset_lock( psi_ref_bis_lock(index_i)) - enddo - enddo - deallocate(miniList, idx_miniList) -end - - - - BEGIN_PROVIDER [ integer(bit_kind), gen_det_ref_sorted, (N_int,2,N_det_generators,2) ] -&BEGIN_PROVIDER [ integer, gen_det_ref_shortcut, (0:N_det_generators,2) ] -&BEGIN_PROVIDER [ integer, gen_det_ref_version, (N_int, N_det_generators,2) ] -&BEGIN_PROVIDER [ integer, gen_det_ref_idx, (N_det_generators,2) ] - gen_det_ref_sorted(:,:,:,1) = psi_det_generators(:,:,:N_det_generators) - gen_det_ref_sorted(:,:,:,2) = psi_det_generators(:,:,:N_det_generators) - call sort_dets_ab_v(gen_det_ref_sorted(:,:,:,1), gen_det_ref_idx(:,1), gen_det_ref_shortcut(0:,1), gen_det_ref_version(:,:,1), N_det_generators, N_int) - call sort_dets_ba_v(gen_det_ref_sorted(:,:,:,2), gen_det_ref_idx(:,2), gen_det_ref_shortcut(0:,2), gen_det_ref_version(:,:,2), N_det_generators, N_int) -END_PROVIDER - - -subroutine find_connections_previous(i_generator,n_selected,det_buffer,Nint,tq,N_tq,miniList,N_miniList) - - use bitmasks - implicit none - - integer, intent(in) :: i_generator,n_selected, Nint - - integer(bit_kind), intent(in) :: det_buffer(Nint,2,n_selected) - integer :: i,j,k,m - logical :: is_in_wavefunction - integer :: degree(psi_det_size) - integer :: idx(0:psi_det_size) - logical :: good - - integer(bit_kind), intent(out) :: tq(Nint,2,n_selected) - integer, intent(out) :: N_tq - - - integer :: nt,ni - logical, external :: is_connected_to - - - integer(bit_kind),intent(in) :: miniList(Nint,2,N_det_generators) - integer,intent(in) :: N_miniList - - - - N_tq = 0 - - - i_loop : do i=1,N_selected - if(is_connected_to(det_buffer(1,1,i), miniList, Nint, N_miniList)) then - cycle - end if - - if (.not. is_in_wavefunction(det_buffer(1,1,i),Nint,N_det)) then - N_tq += 1 - do k=1,N_int - tq(k,1,N_tq) = det_buffer(k,1,i) - tq(k,2,N_tq) = det_buffer(k,2,i) - enddo - endif - enddo i_loop -end - - - - - - - diff --git a/src/mrpt_utils/mrpt_utils.irp.f b/src/mrpt_utils/mrpt_utils.irp.f deleted file mode 100644 index dfb8f2c8..00000000 --- a/src/mrpt_utils/mrpt_utils.irp.f +++ /dev/null @@ -1,365 +0,0 @@ - - BEGIN_PROVIDER [ double precision, delta_ij_mrpt, (N_det,N_det,N_states) ] -&BEGIN_PROVIDER [ double precision, second_order_pt_new, (N_states) ] -&BEGIN_PROVIDER [ double precision, second_order_pt_new_1h, (N_states) ] -&BEGIN_PROVIDER [ double precision, second_order_pt_new_1p, (N_states) ] -&BEGIN_PROVIDER [ double precision, second_order_pt_new_1h1p, (N_states) ] -&BEGIN_PROVIDER [ double precision, second_order_pt_new_2h, (N_states) ] -&BEGIN_PROVIDER [ double precision, second_order_pt_new_2p, (N_states) ] -&BEGIN_PROVIDER [ double precision, second_order_pt_new_1h2p, (N_states) ] -&BEGIN_PROVIDER [ double precision, second_order_pt_new_2h1p, (N_states) ] -&BEGIN_PROVIDER [ double precision, second_order_pt_new_2h2p, (N_states) ] - implicit none - BEGIN_DOC - ! Dressing matrix in N_det basis - END_DOC - integer :: i,j,m - integer :: i_state - double precision :: accu(N_states) - double precision, allocatable :: delta_ij_local(:,:,:) - - - delta_ij_mrpt = 0.d0 - - allocate (delta_ij_local(N_det,N_det,N_states)) - - - ! 1h - delta_ij_local = 0.d0 - call H_apply_mrpt_1h(delta_ij_local,N_det) - accu = 0.d0 - do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_local(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) - delta_ij_mrpt(j,i,i_state) += delta_ij_local(j,i,i_state) - enddo - enddo - second_order_pt_new_1h(i_state) = accu(i_state) - enddo - print*, '1h = ',accu - - ! 1p - delta_ij_local = 0.d0 - call H_apply_mrpt_1p(delta_ij_local,N_det) - accu = 0.d0 - do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_local(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) - delta_ij_mrpt(j,i,i_state) += delta_ij_local(j,i,i_state) - enddo - enddo - second_order_pt_new_1p(i_state) = accu(i_state) - enddo - print*, '1p = ',accu - - ! 1h1p - delta_ij_local = 0.d0 - call H_apply_mrpt_1h1p(delta_ij_local,N_det) - double precision :: e_corr_from_1h1p_singles(N_states) - accu = 0.d0 - do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_local(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) - delta_ij_mrpt(j,i,i_state) += delta_ij_local(j,i,i_state) - enddo - enddo - second_order_pt_new_1h1p(i_state) = accu(i_state) - enddo - print*, '1h1p = ',accu - - ! 1h1p third order - if(do_third_order_1h1p)then - delta_ij_local = 0.d0 - call give_1h1p_sec_order_singles_contrib(delta_ij_local) - accu = 0.d0 - do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_local(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) - delta_ij_mrpt(j,i,i_state) += delta_ij_local(j,i,i_state) - enddo - enddo - second_order_pt_new_1h1p(i_state) = accu(i_state) - enddo - print*, '1h1p(3)',accu - endif - - ! 2h - delta_ij_local = 0.d0 - call H_apply_mrpt_2h(delta_ij_local,N_det) - accu = 0.d0 - do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_local(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) - delta_ij_mrpt(j,i,i_state) += delta_ij_local(j,i,i_state) - enddo - enddo - second_order_pt_new_2h(i_state) = accu(i_state) - enddo - print*, '2h = ',accu - - ! 2p - delta_ij_local = 0.d0 - call H_apply_mrpt_2p(delta_ij_local,N_det) - accu = 0.d0 - do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_local(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) - delta_ij_mrpt(j,i,i_state) += delta_ij_local(j,i,i_state) - enddo - enddo - second_order_pt_new_2p(i_state) = accu(i_state) - enddo - print*, '2p = ',accu - - ! 1h2p - delta_ij_local = 0.d0 - call give_1h2p_contrib(delta_ij_local) - call H_apply_mrpt_1h2p(delta_ij_local,N_det) - accu = 0.d0 - do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_local(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) - delta_ij_mrpt(j,i,i_state) += delta_ij_local(j,i,i_state) - enddo - enddo - second_order_pt_new_1h2p(i_state) = accu(i_state) - enddo - print*, '1h2p = ',accu - - ! 2h1p - delta_ij_local = 0.d0 - call give_2h1p_contrib(delta_ij_local) - call H_apply_mrpt_2h1p(delta_ij_local,N_det) - accu = 0.d0 - do i_state = 1, N_states - do i = 1, N_det - do j = 1, N_det - accu(i_state) += delta_ij_local(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) - delta_ij_mrpt(j,i,i_state) += delta_ij_local(j,i,i_state) - enddo - enddo - second_order_pt_new_2h1p(i_state) = accu(i_state) - enddo - print*, '2h1p = ',accu - - ! 2h2p -!delta_ij_local = 0.d0 -!call H_apply_mrpt_2h2p(delta_ij_local,N_det) -!accu = 0.d0 -!do i_state = 1, N_states -!do i = 1, N_det -! do j = 1, N_det -! accu(i_state) += delta_ij_local(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) -! delta_ij_mrpt(j,i,i_state) += delta_ij_local(j,i,i_state) -! enddo -!enddo -!second_order_pt_new_2h2p(i_state) = accu(i_state) -!enddo -!print*, '2h2p = ',accu - - double precision :: contrib_2h2p(N_states) - call give_2h2p(contrib_2h2p) - do i_state = 1, N_states - do i = 1, N_det - delta_ij_mrpt(i,i,i_state) += contrib_2h2p(i_state) - enddo - second_order_pt_new_2h2p(i_state) = contrib_2h2p(i_state) - enddo - print*, '2h2p = ',contrib_2h2p(1) - - - ! total - accu = 0.d0 - do i_state = 1, N_states - do i = 1, N_det -! write(*,'(1000(F16.10,x))')delta_ij_mrpt(i,:,:) - do j = i_state, N_det - accu(i_state) += delta_ij_mrpt(j,i,i_state) * psi_coef(i,i_state) * psi_coef(j,i_state) - enddo - enddo - second_order_pt_new(i_state) = accu(i_state) - print*, 'total= ',accu(i_state) - enddo - - - - -END_PROVIDER - - BEGIN_PROVIDER [double precision, Hmatrix_dressed_pt2_new, (N_det,N_det,N_states)] - implicit none - integer :: i,j,i_state - do i_state = 1, N_states - do i = 1,N_det - do j = 1,N_det - Hmatrix_dressed_pt2_new(j,i,i_state) = H_matrix_all_dets(j,i) + delta_ij_mrpt(j,i,i_state) - enddo - enddo - enddo - END_PROVIDER - - - - BEGIN_PROVIDER [double precision, Hmatrix_dressed_pt2_new_symmetrized, (N_det,N_det,N_states)] - implicit none - integer :: i,j,i_state - do i_state = 1, N_states - do i = 1,N_det - do j = i,N_det - Hmatrix_dressed_pt2_new_symmetrized(j,i,i_state) = H_matrix_all_dets(j,i) & - + 0.5d0 * ( delta_ij_mrpt(j,i,i_state) + delta_ij_mrpt(i,j,i_state) ) - Hmatrix_dressed_pt2_new_symmetrized(i,j,i_state) = Hmatrix_dressed_pt2_new_symmetrized(j,i,i_state) - enddo - enddo - enddo - END_PROVIDER - - BEGIN_PROVIDER [ double precision, CI_electronic_dressed_pt2_new_energy, (N_states) ] - &BEGIN_PROVIDER [ double precision, CI_dressed_pt2_new_eigenvectors, (N_det,N_states) ] - &BEGIN_PROVIDER [ double precision, CI_dressed_pt2_new_eigenvectors_s2, (N_states) ] - BEGIN_DOC - ! Eigenvectors/values of the CI matrix - END_DOC - implicit none - double precision :: ovrlp,u_dot_v - integer :: i_good_state - integer, allocatable :: index_good_state_array(:) - logical, allocatable :: good_state_array(:) - double precision, allocatable :: s2_values_tmp(:) - integer :: i_other_state - double precision, allocatable :: eigenvectors(:,:), eigenvalues(:) - integer :: i_state - double precision :: s2,e_0 - integer :: i,j,k - double precision, allocatable :: s2_eigvalues(:) - double precision, allocatable :: e_array(:) - integer, allocatable :: iorder(:) - - ! Guess values for the "N_states" states of the CI_dressed_pt2_new_eigenvectors - do j=1,min(N_states,N_det) - do i=1,N_det - CI_dressed_pt2_new_eigenvectors(i,j) = psi_coef(i,j) - enddo - enddo - - do j=N_det+1,N_states - do i=1,N_det - CI_dressed_pt2_new_eigenvectors(i,j) = 0.d0 - enddo - enddo - - if (diag_algorithm == "Davidson") then - - print*, 'Davidson not yet implemented for the dressing ... ' - stop - - else if (diag_algorithm == "Lapack") then - - allocate (eigenvectors(size(H_matrix_all_dets,1),N_det)) - allocate (eigenvalues(N_det)) - call lapack_diag(eigenvalues,eigenvectors, & - Hmatrix_dressed_pt2_new_symmetrized(1,1,1),size(H_matrix_all_dets,1),N_det) - CI_electronic_dressed_pt2_new_energy(:) = 0.d0 - if (s2_eig) then - i_state = 0 - allocate (s2_eigvalues(N_det)) - allocate(index_good_state_array(N_det),good_state_array(N_det)) - good_state_array = .False. - call u_0_S2_u_0(s2_eigvalues,eigenvectors,N_det,psi_ref,N_int,& - N_det,size(eigenvectors,1)) - do j=1,N_det - ! Select at least n_states states with S^2 values closed to "expected_s2" - if(dabs(s2_eigvalues(j)-expected_s2).le.0.5d0)then - i_state +=1 - index_good_state_array(i_state) = j - good_state_array(j) = .True. - endif - if(i_state.eq.N_states) then - exit - endif - enddo - if(i_state .ne.0)then - ! Fill the first "i_state" states that have a correct S^2 value - do j = 1, i_state - do i=1,N_det - CI_dressed_pt2_new_eigenvectors(i,j) = eigenvectors(i,index_good_state_array(j)) - enddo - CI_electronic_dressed_pt2_new_energy(j) = eigenvalues(index_good_state_array(j)) - CI_dressed_pt2_new_eigenvectors_s2(j) = s2_eigvalues(index_good_state_array(j)) - enddo - i_other_state = 0 - do j = 1, N_det - if(good_state_array(j))cycle - i_other_state +=1 - if(i_state+i_other_state.gt.n_states)then - exit - endif - do i=1,N_det - CI_dressed_pt2_new_eigenvectors(i,i_state+i_other_state) = eigenvectors(i,j) - enddo - CI_electronic_dressed_pt2_new_energy(i_state+i_other_state) = eigenvalues(j) - CI_dressed_pt2_new_eigenvectors_s2(i_state+i_other_state) = s2_eigvalues(i_state+i_other_state) - enddo - - else - print*,'' - print*,'!!!!!!!! WARNING !!!!!!!!!' - print*,' Within the ',N_det,'determinants selected' - print*,' and the ',N_states,'states requested' - print*,' We did not find any state with S^2 values close to ',expected_s2 - print*,' We will then set the first N_states eigenvectors of the H matrix' - print*,' as the CI_dressed_pt2_new_eigenvectors' - print*,' You should consider more states and maybe ask for s2_eig to be .True. or just enlarge the CI space' - print*,'' - do j=1,min(N_states,N_det) - do i=1,N_det - CI_dressed_pt2_new_eigenvectors(i,j) = eigenvectors(i,j) - enddo - CI_electronic_dressed_pt2_new_energy(j) = eigenvalues(j) - CI_dressed_pt2_new_eigenvectors_s2(j) = s2_eigvalues(j) - enddo - endif - deallocate(index_good_state_array,good_state_array) - deallocate(s2_eigvalues) - else - call u_0_S2_u_0(CI_dressed_pt2_new_eigenvectors_s2,eigenvectors,N_det,psi_ref,N_int,& - min(N_det,N_states),size(eigenvectors,1)) - ! Select the "N_states" states of lowest energy - do j=1,min(N_det,N_states) - do i=1,N_det - CI_dressed_pt2_new_eigenvectors(i,j) = eigenvectors(i,j) - enddo - CI_electronic_dressed_pt2_new_energy(j) = eigenvalues(j) - enddo - endif - deallocate(eigenvectors,eigenvalues) - endif - - -END_PROVIDER - - -BEGIN_PROVIDER [ double precision, CI_dressed_pt2_new_energy, (N_states) ] - implicit none - BEGIN_DOC - ! N_states lowest eigenvalues of the CI matrix - END_DOC - - integer :: j - character*(8) :: st - call write_time(6) - do j=1,N_states - CI_dressed_pt2_new_energy(j) = CI_electronic_dressed_pt2_new_energy(j) + nuclear_repulsion - write(st,'(I4)') j - call write_double(6,CI_dressed_pt2_new_energy(j),'Energy of state '//trim(st)) - call write_double(6,CI_dressed_pt2_new_eigenvectors_s2(j),'S^2 of state '//trim(st)) - enddo - -END_PROVIDER diff --git a/src/mrpt_utils/new_way.irp.f b/src/mrpt_utils/new_way.irp.f deleted file mode 100644 index 1775ec41..00000000 --- a/src/mrpt_utils/new_way.irp.f +++ /dev/null @@ -1,958 +0,0 @@ -subroutine give_2h1p_contrib(matrix_2h1p) - use bitmasks - implicit none - double precision , intent(inout) :: matrix_2h1p(N_det,N_det,*) - integer :: i,j,r,a,b - integer :: iorb, jorb, rorb, aorb, borb - integer :: ispin,jspin - integer :: idet,jdet - integer(bit_kind) :: perturb_dets(N_int,2,n_act_orb,2,2) - double precision :: perturb_dets_phase(n_act_orb,2,2) - double precision :: perturb_dets_hij(n_act_orb,2,2) - double precision :: coef_perturb_from_idet(n_act_orb,2,2,N_states) - integer :: inint - integer :: elec_num_tab_local(2),acu_elec - integer(bit_kind) :: det_tmp(N_int,2) - integer :: exc(0:2,2,2) - integer :: accu_elec - double precision :: get_mo_bielec_integral - double precision :: active_int(n_act_orb,2) - double precision :: hij,phase -!matrix_2h1p = 0.d0 - - elec_num_tab_local = 0 - do inint = 1, N_int - elec_num_tab_local(1) += popcnt(psi_ref(inint,1,1)) - elec_num_tab_local(2) += popcnt(psi_ref(inint,2,1)) - enddo - do i = 1, n_inact_orb ! First inactive - iorb = list_inact(i) - do j = 1, n_inact_orb ! Second inactive - jorb = list_inact(j) - do r = 1, n_virt_orb ! First virtual - rorb = list_virt(r) - ! take all the integral you will need for i,j,r fixed - do a = 1, n_act_orb - aorb = list_act(a) - active_int(a,1) = get_mo_bielec_integral(iorb,jorb,rorb,aorb,mo_integrals_map) ! direct - active_int(a,2) = get_mo_bielec_integral(iorb,jorb,aorb,rorb,mo_integrals_map) ! exchange - enddo - - integer :: degree(N_det) - integer :: idx(0:N_det) - double precision :: delta_e(n_act_orb,2,N_states) - integer :: istate - integer :: index_orb_act_mono(N_det,3) - - do idet = 1, N_det - call get_excitation_degree_vector_mono(psi_ref,psi_ref(1,1,idet),degree,N_int,N_det,idx) - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Precomputation of matrix elements - do ispin = 1, 2 ! spin of the couple a-a^dagger (i,r) - do jspin = 1, 2 ! spin of the couple z-a^dagger (j,a) - if(ispin == jspin .and. iorb.le.jorb)cycle ! condition not to double count - do a = 1, n_act_orb ! First active - aorb = list_act(a) - do inint = 1, N_int - det_tmp(inint,1) = psi_ref(inint,1,idet) - det_tmp(inint,2) = psi_ref(inint,2,idet) - enddo - ! Do the excitation inactive -- > virtual - call clear_bit_to_integer(iorb,det_tmp(1,ispin),N_int) ! hole in "iorb" of spin Ispin - call set_bit_to_integer(rorb,det_tmp(1,ispin),N_int) ! particle in "rorb" of spin Ispin - - ! Do the excitation inactive -- > active - call clear_bit_to_integer(jorb,det_tmp(1,jspin),N_int) ! hole in "jorb" of spin Jspin - call set_bit_to_integer(aorb,det_tmp(1,jspin),N_int) ! particle in "aorb" of spin Jspin - - ! Check if the excitation is possible or not on psi_ref(idet) - accu_elec= 0 - do inint = 1, N_int - accu_elec+= popcnt(det_tmp(inint,jspin)) - enddo - if(accu_elec .ne. elec_num_tab_local(jspin))then - perturb_dets_phase(a,jspin,ispin) = 0.0 - perturb_dets_hij(a,jspin,ispin) = 0.d0 - do istate = 1, N_states - coef_perturb_from_idet(a,jspin,ispin,istate) = 0.d0 - enddo - cycle - endif - do inint = 1, N_int - perturb_dets(inint,1,a,jspin,ispin) = det_tmp(inint,1) - perturb_dets(inint,2,a,jspin,ispin) = det_tmp(inint,2) - enddo - call get_double_excitation(psi_ref(1,1,idet),det_tmp,exc,phase,N_int) - perturb_dets_phase(a,jspin,ispin) = phase - do istate = 1, N_states - delta_e(a,jspin,istate) = one_creat(a,jspin,istate) & - - fock_virt_total_spin_trace(rorb,istate) & - + fock_core_inactive_total_spin_trace(iorb,istate) & - + fock_core_inactive_total_spin_trace(jorb,istate) - enddo - if(ispin == jspin)then - perturb_dets_hij(a,jspin,ispin) = phase * (active_int(a,2) - active_int(a,1) ) - else - perturb_dets_hij(a,jspin,ispin) = phase * active_int(a,1) - endif -!!!!!!!!!!!!!!!!!!!!!1 Computation of the coefficient at first order coming from idet -!!!!!!!!!!!!!!!!!!!!! for the excitation (i,j)(ispin,jspin) ---> (r,a)(ispin,jspin) - do istate = 1, N_states - coef_perturb_from_idet(a,jspin,ispin,istate) = perturb_dets_hij(a,jspin,ispin) / delta_e(a,jspin,istate) - enddo - - enddo - enddo - enddo - -!!!!!!!!!!!!!!!!!!!!!!!!!!! determination of the connections between I and the other J determinants mono excited in the CAS -!!!!!!!!!!!!!!!!!!!!!!!!!!!! the determinants I and J must be connected by the following operator -!!!!!!!!!!!!!!!!!!!!!!!!!!!! - do jdet = 1, idx(0) - if(idx(jdet).ne.idet)then - call get_mono_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if (exc(0,1,1) == 1) then - ! Mono alpha - index_orb_act_mono(idx(jdet),1) = list_act_reverse(exc(1,2,1)) !!! a^{\dagger}_a - index_orb_act_mono(idx(jdet),2) = list_act_reverse(exc(1,1,1)) !!! a_{b} - index_orb_act_mono(idx(jdet),3) = 1 - else - ! Mono beta - index_orb_act_mono(idx(jdet),1) = list_act_reverse(exc(1,2,2)) !!! a^{\dagger}_a - index_orb_act_mono(idx(jdet),2) = list_act_reverse(exc(1,1,2)) !!! a_{b} - index_orb_act_mono(idx(jdet),3) = 2 - endif - else - index_orb_act_mono(idx(jdet),1) = -1 - endif - enddo - - integer :: kspin - do jdet = 1, idx(0) - if(idx(jdet).ne.idet)then - ! two determinants | Idet > and | Jdet > which are connected throw a mono excitation operator - ! are connected by the presence of the perturbers determinants |det_tmp> - aorb = index_orb_act_mono(idx(jdet),1) ! a^{\dagger}_{aorb} - borb = index_orb_act_mono(idx(jdet),2) ! a_{borb} - kspin = index_orb_act_mono(idx(jdet),3) ! spin of the excitation - ! the determinants Idet and Jdet interact throw the following operator - ! | Jdet > = a_{borb,kspin} a^{\dagger}_{aorb, kspin} | Idet > - - do ispin = 1, 2 ! you loop on all possible spin for the excitation - ! a^{\dagger}_r a_{i} (ispin) - if(ispin == kspin .and. iorb.le.jorb)cycle ! condition not to double count - - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{aorb,kspin} a_{jorb,kspin} a_{iorb,ispin} | Idet > - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,aorb,kspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,aorb,kspin,ispin) - enddo - double precision :: hja - ! you determine the interaction between the excited determinant and the other parent | Jdet > - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{borb,kspin} a_{jorb,kspin} a_{iorb,ispin} | Jdet > - ! hja = < det_tmp | H | Jdet > - call get_double_excitation(psi_ref(1,1,idx(jdet)),det_tmp,exc,phase,N_int) - if(kspin == ispin)then - hja = phase * (active_int(borb,2) - active_int(borb,1) ) - else - hja = phase * active_int(borb,1) - endif - - do istate = 1, N_states - matrix_2h1p(idx(jdet),idet,istate) += hja * coef_perturb_from_idet(aorb,kspin,ispin,istate) - enddo - enddo ! ispin - - else - ! diagonal part of the dressing : interaction of | Idet > with all the perturbers generated by the excitations - ! - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{aorb,kspin} a_{jorb,kspin} a_{iorb,ispin} | Idet > - do ispin = 1, 2 - do kspin = 1, 2 - if(ispin == kspin .and. iorb.le.jorb)cycle ! condition not to double count - do a = 1, n_act_orb ! First active - do istate = 1, N_states - matrix_2h1p(idet,idet,istate) += coef_perturb_from_idet(a,kspin,ispin,istate) * perturb_dets_hij(a,kspin,ispin) - enddo - enddo - enddo - enddo - - endif - - enddo - enddo - enddo - enddo - enddo - - - - - -end - - -subroutine give_1h2p_contrib(matrix_1h2p) - use bitmasks - implicit none - double precision , intent(inout) :: matrix_1h2p(N_det,N_det,*) - integer :: i,v,r,a,b - integer :: iorb, vorb, rorb, aorb, borb - integer :: ispin,jspin - integer :: idet,jdet - integer(bit_kind) :: perturb_dets(N_int,2,n_act_orb,2,2) - double precision :: perturb_dets_phase(n_act_orb,2,2) - double precision :: perturb_dets_hij(n_act_orb,2,2) - double precision :: coef_perturb_from_idet(n_act_orb,2,2,N_states) - integer :: inint - integer :: elec_num_tab_local(2),acu_elec - integer(bit_kind) :: det_tmp(N_int,2) - integer :: exc(0:2,2,2) - integer :: accu_elec - double precision :: get_mo_bielec_integral - double precision :: active_int(n_act_orb,2) - double precision :: hij,phase -!matrix_1h2p = 0.d0 - - elec_num_tab_local = 0 - do inint = 1, N_int - elec_num_tab_local(1) += popcnt(psi_ref(inint,1,1)) - elec_num_tab_local(2) += popcnt(psi_ref(inint,2,1)) - enddo - do i = 1, n_inact_orb ! First inactive - iorb = list_inact(i) - do v = 1, n_virt_orb ! First virtual - vorb = list_virt(v) - do r = 1, n_virt_orb ! Second virtual - rorb = list_virt(r) - ! take all the integral you will need for i,j,r fixed - do a = 1, n_act_orb - aorb = list_act(a) - active_int(a,1) = get_mo_bielec_integral(iorb,aorb,rorb,vorb,mo_integrals_map) ! direct - active_int(a,2) = get_mo_bielec_integral(iorb,aorb,vorb,rorb,mo_integrals_map) ! exchange - enddo - - integer :: degree(N_det) - integer :: idx(0:N_det) - double precision :: delta_e(n_act_orb,2,N_states) - integer :: istate - integer :: index_orb_act_mono(N_det,3) - - do idet = 1, N_det - call get_excitation_degree_vector_mono(psi_ref,psi_ref(1,1,idet),degree,N_int,N_det,idx) - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Precomputation of matrix elements - do ispin = 1, 2 ! spin of the couple a-a^dagger (iorb,rorb) - do jspin = 1, 2 ! spin of the couple a-a^dagger (aorb,vorb) - do a = 1, n_act_orb ! First active - aorb = list_act(a) - if(ispin == jspin .and. vorb.le.rorb)cycle ! condition not to double count - do inint = 1, N_int - det_tmp(inint,1) = psi_ref(inint,1,idet) - det_tmp(inint,2) = psi_ref(inint,2,idet) - enddo - ! Do the excitation inactive -- > virtual - call clear_bit_to_integer(iorb,det_tmp(1,ispin),N_int) ! hole in "iorb" of spin Ispin - call set_bit_to_integer(rorb,det_tmp(1,ispin),N_int) ! particle in "rorb" of spin Ispin - - ! Do the excitation active -- > virtual - call clear_bit_to_integer(aorb,det_tmp(1,jspin),N_int) ! hole in "aorb" of spin Jspin - call set_bit_to_integer(vorb,det_tmp(1,jspin),N_int) ! particle in "vorb" of spin Jspin - - ! Check if the excitation is possible or not on psi_ref(idet) - accu_elec= 0 - do inint = 1, N_int - accu_elec+= popcnt(det_tmp(inint,jspin)) - enddo - if(accu_elec .ne. elec_num_tab_local(jspin))then - perturb_dets_phase(a,jspin,ispin) = 0.0 - perturb_dets_hij(a,jspin,ispin) = 0.d0 - do istate = 1, N_states - coef_perturb_from_idet(a,jspin,ispin,istate) = 0.d0 - enddo - cycle - endif - do inint = 1, N_int - perturb_dets(inint,1,a,jspin,ispin) = det_tmp(inint,1) - perturb_dets(inint,2,a,jspin,ispin) = det_tmp(inint,2) - enddo - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,a,jspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,a,jspin,ispin) - enddo - - call get_double_excitation(psi_ref(1,1,idet),det_tmp,exc,phase,N_int) - perturb_dets_phase(a,jspin,ispin) = phase - do istate = 1, N_states - delta_e(a,jspin,istate) = one_anhil(a,jspin,istate) & - - fock_virt_total_spin_trace(rorb,istate) & - - fock_virt_total_spin_trace(vorb,istate) & - + fock_core_inactive_total_spin_trace(iorb,istate) - enddo - if(ispin == jspin)then - perturb_dets_hij(a,jspin,ispin) = phase * (active_int(a,1) - active_int(a,2) ) - else - perturb_dets_hij(a,jspin,ispin) = phase * active_int(a,1) - endif -!!!!!!!!!!!!!!!!!!!!!1 Computation of the coefficient at first order coming from idet -!!!!!!!!!!!!!!!!!!!!! for the excitation (i,j)(ispin,jspin) ---> (r,a)(ispin,jspin) - do istate = 1, N_states - coef_perturb_from_idet(a,jspin,ispin,istate) = perturb_dets_hij(a,jspin,ispin) / delta_e(a,jspin,istate) - enddo - - enddo - enddo - enddo - -!!!!!!!!!!!!!!!!!!!!!!!!!!! determination of the connections between I and the other J determinants mono excited in the CAS -!!!!!!!!!!!!!!!!!!!!!!!!!!!! the determinants I and J must be connected by the following operator -!!!!!!!!!!!!!!!!!!!!!!!!!!!! - do jdet = 1, idx(0) - if(idx(jdet).ne.idet)then - call get_mono_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if (exc(0,1,1) == 1) then - ! Mono alpha - index_orb_act_mono(idx(jdet),1) = list_act_reverse(exc(1,1,1)) !!! a_a - index_orb_act_mono(idx(jdet),2) = list_act_reverse(exc(1,2,1)) !!! a^{\dagger}_{b} - index_orb_act_mono(idx(jdet),3) = 1 - else - ! Mono beta - index_orb_act_mono(idx(jdet),1) = list_act_reverse(exc(1,1,2)) !!! a_a - index_orb_act_mono(idx(jdet),2) = list_act_reverse(exc(1,2,2)) !!! a^{\dagger}_{b} - index_orb_act_mono(idx(jdet),3) = 2 - endif - else - index_orb_act_mono(idx(jdet),1) = -1 - endif - enddo - - integer :: kspin - do jdet = 1, idx(0) - if(idx(jdet).ne.idet)then - ! two determinants | Idet > and | Jdet > which are connected throw a mono excitation operator - ! are connected by the presence of the perturbers determinants |det_tmp> - aorb = index_orb_act_mono(idx(jdet),1) ! a_{aorb} - borb = index_orb_act_mono(idx(jdet),2) ! a^{\dagger}_{borb} - kspin = index_orb_act_mono(idx(jdet),3) ! spin of the excitation - ! the determinants Idet and Jdet interact throw the following operator - ! | Jdet > = a^{\dagger}_{borb,kspin} a_{aorb, kspin} | Idet > - - do ispin = 1, 2 ! you loop on all possible spin for the excitation - ! a^{\dagger}_r a_{i} (ispin) - if(ispin == kspin .and. vorb.le.rorb)cycle ! condition not to double count - - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{vorb,kspin} a_{aorb,kspin} a_{iorb,ispin} | Idet > - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,aorb,kspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,aorb,kspin,ispin) - enddo - double precision :: hja - ! you determine the interaction between the excited determinant and the other parent | Jdet > - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{vorb,kspin} a_{borb,kspin} a_{iorb,ispin} | Jdet > - ! hja = < det_tmp | H | Jdet > - - call get_double_excitation(psi_ref(1,1,idx(jdet)),det_tmp,exc,phase,N_int) - if(kspin == ispin)then - hja = phase * (active_int(borb,1) - active_int(borb,2) ) - else - hja = phase * active_int(borb,1) - endif - - do istate = 1, N_states - matrix_1h2p(idx(jdet),idet,istate) += hja * coef_perturb_from_idet(aorb,kspin,ispin,istate) - enddo - enddo ! ispin - - else - ! diagonal part of the dressing : interaction of | Idet > with all the perturbers generated by the excitations - ! - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{vorb,kspin} a_{aorb,kspin} a_{iorb,ispin} | Idet > - do ispin = 1, 2 - do kspin = 1, 2 - do a = 1, n_act_orb ! First active - aorb = list_act(a) - if(ispin == kspin .and. vorb.le.rorb)cycle ! condition not to double count - do istate = 1, N_states - matrix_1h2p(idet,idet,istate) += coef_perturb_from_idet(a,kspin,ispin,istate) * perturb_dets_hij(a,kspin,ispin) - enddo - enddo - enddo - enddo - - endif - - enddo - enddo - enddo - enddo - enddo - - - - - -end - - -subroutine give_1h1p_contrib(matrix_1h1p) - use bitmasks - implicit none - double precision , intent(inout) :: matrix_1h1p(N_det,N_det,*) - integer :: i,j,r,a,b - integer :: iorb, jorb, rorb, aorb, borb - integer :: ispin,jspin - integer :: idet,jdet - integer :: inint - integer :: elec_num_tab_local(2),acu_elec - integer(bit_kind) :: det_tmp(N_int,2) - integer :: exc(0:2,2,2) - integer :: accu_elec - double precision :: get_mo_bielec_integral - double precision :: active_int(n_act_orb,2) - double precision :: hij,phase - integer :: degree(N_det) - integer :: idx(0:N_det) - integer :: istate - double precision :: hja,delta_e_inact_virt(N_states) - integer :: kspin,degree_scalar -!matrix_1h1p = 0.d0 - - elec_num_tab_local = 0 - do inint = 1, N_int - elec_num_tab_local(1) += popcnt(psi_ref(inint,1,1)) - elec_num_tab_local(2) += popcnt(psi_ref(inint,2,1)) - enddo - do i = 1, n_inact_orb ! First inactive - iorb = list_inact(i) - do r = 1, n_virt_orb ! First virtual - rorb = list_virt(r) - do j = 1, N_states - delta_e_inact_virt(j) = fock_core_inactive_total_spin_trace(iorb,j) & - - fock_virt_total_spin_trace(rorb,j) - enddo - do idet = 1, N_det - call get_excitation_degree_vector_mono(psi_ref,psi_ref(1,1,idet),degree,N_int,N_det,idx) - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Precomputation of matrix elements - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Case of the mono excitations - do jdet = 1, idx(0) - do ispin = 1, 2 ! spin of the couple a-a^dagger (i,r) - do inint = 1, N_int - det_tmp(inint,1) = psi_ref(inint,1,idet) - det_tmp(inint,2) = psi_ref(inint,2,idet) - enddo - ! Do the excitation inactive -- > virtual - double precision :: himono,delta_e(N_states),coef_mono(N_states) - call clear_bit_to_integer(iorb,det_tmp(1,ispin),N_int) ! hole in "iorb" of spin Ispin - call set_bit_to_integer(rorb,det_tmp(1,ispin),N_int) ! particle in "rorb" of spin Ispin - call i_H_j(psi_ref(1,1,idet),det_tmp,N_int,himono) - - do state_target = 1, N_states -! delta_e(state_target) = one_anhil_one_creat_inact_virt(i,r,state_target) + delta_e_inact_virt(state_target) - delta_e(state_target) = one_anhil_one_creat_inact_virt_bis(i,r,idet,state_target) - coef_mono(state_target) = himono / delta_e(state_target) - enddo - if(idx(jdet).ne.idet)then - call get_mono_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if (exc(0,1,1) == 1) then - ! Mono alpha - aorb = (exc(1,2,1)) !!! a^{\dagger}_a - borb = (exc(1,1,1)) !!! a_{b} - jspin = 1 - else - ! Mono beta - aorb = (exc(1,2,2)) !!! a^{\dagger}_a - borb = (exc(1,1,2)) !!! a_{b} - jspin = 2 - endif - - call get_excitation_degree(psi_ref(1,1,idx(jdet)),det_tmp,degree_scalar,N_int) - if(degree_scalar .ne. 2)then - print*, 'pb !!!' - print*, degree_scalar - call debug_det(psi_ref(1,1,idx(jdet)),N_int) - call debug_det(det_tmp,N_int) - stop - endif - call get_double_excitation(psi_ref(1,1,idx(jdet)),det_tmp,exc,phase,N_int) - if(ispin == jspin )then - hij = -get_mo_bielec_integral(iorb,aorb,rorb,borb,mo_integrals_map) & - + get_mo_bielec_integral(iorb,aorb,borb,rorb,mo_integrals_map) - else - hij = get_mo_bielec_integral(iorb,borb,rorb,aorb,mo_integrals_map) - endif - hij = hij * phase - double precision :: hij_test - integer :: state_target - call i_H_j(psi_ref(1,1,idx(jdet)),det_tmp,N_int,hij_test) - if(dabs(hij - hij_test).gt.1.d-10)then - print*, 'ahah pb !!' - print*, 'hij .ne. hij_test' - print*, hij,hij_test - call debug_det(psi_ref(1,1,idx(jdet)),N_int) - call debug_det(det_tmp,N_int) - print*, ispin, jspin - print*,iorb,borb,rorb,aorb - print*, phase - call i_H_j_verbose(psi_ref(1,1,idx(jdet)),det_tmp,N_int,hij_test) - stop - endif - do state_target = 1, N_states - matrix_1h1p(idx(jdet),idet,state_target) += hij* coef_mono(state_target) - enddo - else - do state_target = 1, N_states - matrix_1h1p(idet,idet,state_target) += himono * coef_mono(state_target) - enddo - endif - enddo - enddo - - - - enddo - enddo - enddo -end - -subroutine give_1h1p_sec_order_singles_contrib(matrix_1h1p) - use bitmasks - implicit none - double precision , intent(inout) :: matrix_1h1p(N_det,N_det,*) - integer :: i,j,r,a,b - integer :: iorb, jorb, rorb, aorb, borb,s,sorb - integer :: ispin,jspin - integer :: idet,jdet - integer :: inint - integer :: elec_num_tab_local(2),acu_elec - integer(bit_kind) :: det_tmp(N_int,2),det_tmp_bis(N_int,2) - integer(bit_kind) :: det_pert(N_int,2,n_inact_orb,n_virt_orb,2) - double precision :: coef_det_pert(n_inact_orb,n_virt_orb,2,N_states,2) - double precision :: delta_e_det_pert(n_inact_orb,n_virt_orb,2,N_states) - double precision :: hij_det_pert(n_inact_orb,n_virt_orb,2,N_states) - integer :: exc(0:2,2,2) - integer :: accu_elec - double precision :: get_mo_bielec_integral - double precision :: active_int(n_act_orb,2) - double precision :: hij,phase - integer :: degree(N_det) - integer :: idx(0:N_det) - integer :: istate - double precision :: hja,delta_e_inact_virt(N_states) - integer :: kspin,degree_scalar -!matrix_1h1p = 0.d0 - - elec_num_tab_local = 0 - do inint = 1, N_int - elec_num_tab_local(1) += popcnt(psi_ref(inint,1,1)) - elec_num_tab_local(2) += popcnt(psi_ref(inint,2,1)) - enddo - double precision :: himono,delta_e(N_states),coef_mono(N_states) - integer :: state_target - do idet = 1, N_det - call get_excitation_degree_vector_mono(psi_ref,psi_ref(1,1,idet),degree,N_int,N_det,idx) - do i = 1, n_inact_orb ! First inactive - iorb = list_inact(i) - do r = 1, n_virt_orb ! First virtual - rorb = list_virt(r) - do ispin = 1, 2 ! spin of the couple a-a^dagger (i,r) - do state_target = 1, N_states - coef_det_pert(i,r,ispin,state_target,1) = 0.d0 - coef_det_pert(i,r,ispin,state_target,2) = 0.d0 - enddo - do j = 1, N_states - delta_e_inact_virt(j) = fock_core_inactive_total_spin_trace(iorb,j) & - - fock_virt_total_spin_trace(rorb,j) - enddo - do inint = 1, N_int - det_tmp(inint,1) = psi_ref(inint,1,idet) - det_tmp(inint,2) = psi_ref(inint,2,idet) - enddo - ! Do the excitation inactive -- > virtual - call clear_bit_to_integer(iorb,det_tmp(1,ispin),N_int) ! hole in "iorb" of spin Ispin - call set_bit_to_integer(rorb,det_tmp(1,ispin),N_int) ! particle in "rorb" of spin Ispin - call i_H_j(psi_ref(1,1,idet),det_tmp,N_int,himono) - do inint = 1, N_int - det_pert(inint,1,i,r,ispin) = det_tmp(inint,1) - det_pert(inint,2,i,r,ispin) = det_tmp(inint,2) - enddo - do state_target = 1, N_states - delta_e_det_pert(i,r,ispin,state_target) = one_anhil_one_creat_inact_virt(i,r,state_target) + delta_e_inact_virt(state_target) - coef_det_pert(i,r,ispin,state_target,1) = himono / delta_e_det_pert(i,r,ispin,state_target) - enddo - !!!!!!!!!!!!!!!!!!!!!!!!!!!!! Precomputation of matrix elements - !!!!!!!!!!!!!!!!!!!!!!!!!!!!! Case of the mono excitations - enddo ! ispin - enddo ! rorb - enddo ! iorb - - do i = 1, n_inact_orb ! First inactive - iorb = list_inact(i) - do r = 1, n_virt_orb ! First virtual - rorb = list_virt(r) - do ispin = 1, 2 ! spin of the couple a-a^dagger (i,r) - do inint = 1, N_int - det_tmp(inint,1) = det_pert(inint,1,i,r,ispin) - det_tmp(inint,2) = det_pert(inint,2,i,r,ispin) - enddo - do j = 1, n_inact_orb ! First inactive - jorb = list_inact(j) - do s = 1, n_virt_orb ! First virtual - sorb = list_virt(s) - do jspin = 1, 2 ! spin of the couple a-a^dagger (i,r) - if(i==j.and.r==s.and.ispin==jspin)cycle - do inint = 1, N_int - det_tmp_bis(inint,1) = det_pert(inint,1,j,s,jspin) - det_tmp_bis(inint,2) = det_pert(inint,2,j,s,jspin) - enddo - call i_H_j(det_tmp_bis,det_tmp,N_int,himono) - do state_target = 1, N_states - coef_det_pert(i,r,ispin,state_target,2) += & - coef_det_pert(j,s,jspin,state_target,1) * himono / delta_e_det_pert(i,r,ispin,state_target) - enddo - enddo - enddo - enddo - enddo ! ispin - enddo ! rorb - enddo ! iorb - do i = 1, n_inact_orb ! First inactive - iorb = list_inact(i) - do r = 1, n_virt_orb ! First virtual - rorb = list_virt(r) - do ispin = 1, 2 ! spin of the couple a-a^dagger (i,r) - do state_target = 1, N_states - coef_det_pert(i,r,ispin,state_target,1) += coef_det_pert(i,r,ispin,state_target,2) - enddo - - do inint = 1, N_int - det_tmp(inint,1) = det_pert(inint,1,i,r,ispin) - det_tmp(inint,2) = det_pert(inint,2,i,r,ispin) - enddo - do jdet = 1, idx(0) -! - if(idx(jdet).ne.idet)then - call get_mono_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if (exc(0,1,1) == 1) then - ! Mono alpha - aorb = (exc(1,2,1)) !!! a^{\dagger}_a - borb = (exc(1,1,1)) !!! a_{b} - jspin = 1 - else - aorb = (exc(1,2,2)) !!! a^{\dagger}_a - borb = (exc(1,1,2)) !!! a_{b} - jspin = 2 - endif - - call get_excitation_degree(psi_ref(1,1,idx(jdet)),det_tmp,degree_scalar,N_int) - if(degree_scalar .ne. 2)then - print*, 'pb !!!' - print*, degree_scalar - call debug_det(psi_ref(1,1,idx(jdet)),N_int) - call debug_det(det_tmp,N_int) - stop - endif - call get_double_excitation(psi_ref(1,1,idx(jdet)),det_tmp,exc,phase,N_int) - double precision :: hij_test - hij_test = 0.d0 - call i_H_j(psi_ref(1,1,idx(jdet)),det_tmp,N_int,hij_test) - do state_target = 1, N_states - matrix_1h1p(idx(jdet),idet,state_target) += hij_test* coef_det_pert(i,r,ispin,state_target,2) - enddo - else - hij_test = 0.d0 - call i_H_j(psi_ref(1,1,idet),det_tmp,N_int,hij_test) - do state_target = 1, N_states - matrix_1h1p(idet,idet,state_target) += hij_test* coef_det_pert(i,r,ispin,state_target,2) - enddo - endif - enddo - enddo - enddo - enddo - - enddo ! idet -end - - -subroutine give_1p_sec_order_singles_contrib(matrix_1p) - use bitmasks - implicit none - double precision , intent(inout) :: matrix_1p(N_det,N_det,*) - integer :: i,j,r,a,b - integer :: iorb, jorb, rorb, aorb, borb,s,sorb - integer :: ispin,jspin - integer :: idet,jdet - integer :: inint - integer :: elec_num_tab_local(2),acu_elec - integer(bit_kind) :: det_tmp(N_int,2),det_tmp_bis(N_int,2) - integer(bit_kind) :: det_pert(N_int,2,n_act_orb,n_virt_orb,2) - double precision :: coef_det_pert(n_act_orb,n_virt_orb,2,N_states,2) - double precision :: delta_e_det_pert(n_act_orb,n_virt_orb,2,N_states) - double precision :: hij_det_pert(n_act_orb,n_virt_orb,2) - integer :: exc(0:2,2,2) - integer :: accu_elec - double precision :: get_mo_bielec_integral - double precision :: hij,phase - integer :: degree(N_det) - integer :: idx(0:N_det) - integer :: istate - double precision :: hja,delta_e_act_virt(N_states) - integer :: kspin,degree_scalar -!matrix_1p = 0.d0 - - elec_num_tab_local = 0 - do inint = 1, N_int - elec_num_tab_local(1) += popcnt(psi_ref(inint,1,1)) - elec_num_tab_local(2) += popcnt(psi_ref(inint,2,1)) - enddo - double precision :: himono,delta_e(N_states),coef_mono(N_states) - integer :: state_target - do idet = 1, N_det - call get_excitation_degree_vector_mono(psi_ref,psi_ref(1,1,idet),degree,N_int,N_det,idx) - do i = 1, n_act_orb ! First active - iorb = list_act(i) - do r = 1, n_virt_orb ! First virtual - rorb = list_virt(r) - do ispin = 1, 2 ! spin of the couple a-a^dagger (i,r) - do state_target = 1, N_states - coef_det_pert(i,r,ispin,state_target,1) = 0.d0 - coef_det_pert(i,r,ispin,state_target,2) = 0.d0 - enddo - do j = 1, N_states - delta_e_act_virt(j) = - fock_virt_total_spin_trace(rorb,j) - enddo - do inint = 1, N_int - det_tmp(inint,1) = psi_ref(inint,1,idet) - det_tmp(inint,2) = psi_ref(inint,2,idet) - enddo - ! Do the excitation active -- > virtual - call do_mono_excitation(det_tmp,iorb,rorb,ispin,i_ok) - integer :: i_ok - if(i_ok .ne.1)then - do state_target = 1, N_states - coef_det_pert(i,r,ispin,state_target,1) = -1.d+10 - coef_det_pert(i,r,ispin,state_target,2) = -1.d+10 - hij_det_pert(i,r,ispin) = 0.d0 - enddo - do inint = 1, N_int - det_pert(inint,1,i,r,ispin) = 0_bit_kind - det_pert(inint,2,i,r,ispin) = 0_bit_kind - enddo - cycle - endif - call i_H_j(psi_ref(1,1,idet),det_tmp,N_int,himono) - do inint = 1, N_int - det_pert(inint,1,i,r,ispin) = det_tmp(inint,1) - det_pert(inint,2,i,r,ispin) = det_tmp(inint,2) - enddo - do state_target = 1, N_states - delta_e_det_pert(i,r,ispin,state_target) = one_creat_virt(i,r,state_target) + delta_e_act_virt(state_target) - coef_det_pert(i,r,ispin,state_target,1) = himono / delta_e_det_pert(i,r,ispin,state_target) - hij_det_pert(i,r,ispin) = himono - enddo - !!!!!!!!!!!!!!!!!!!!!!!!!!!!! Precomputation of matrix elements - !!!!!!!!!!!!!!!!!!!!!!!!!!!!! Case of the mono excitations - enddo ! ispin - enddo ! rorb - enddo ! iorb - -! do i = 1, n_act_orb ! First active -! do ispin = 1, 2 ! spin of the couple a-a^dagger (i,r) -! if(coef_det_pert(i,1,ispin,1,1) == -1.d+10)cycle -! iorb = list_act(i) -! do r = 1, n_virt_orb ! First virtual -! rorb = list_virt(r) -! do inint = 1, N_int -! det_tmp(inint,1) = det_pert(inint,1,i,r,ispin) -! det_tmp(inint,2) = det_pert(inint,2,i,r,ispin) -! enddo -! do j = 1, n_act_orb ! First active -! do jspin = 1, 2 ! spin of the couple a-a^dagger (i,r) -! if(coef_det_pert(j,1,jspin,1,1) == -1.d+10)cycle -! jorb = list_act(j) -! do s = 1, n_virt_orb ! First virtual -! sorb = list_virt(s) -! if(i==j.and.r==s.and.ispin==jspin)cycle -! do inint = 1, N_int -! det_tmp_bis(inint,1) = det_pert(inint,1,j,s,jspin) -! det_tmp_bis(inint,2) = det_pert(inint,2,j,s,jspin) -! enddo -! call i_H_j(det_tmp_bis,det_tmp,N_int,himono) -! do state_target = 1, N_states -! coef_det_pert(i,r,ispin,state_target,2) += & -! coef_det_pert(j,s,jspin,state_target,1) * himono / delta_e_det_pert(i,r,ispin,state_target) -! enddo -! enddo -! enddo -! enddo -! enddo ! ispin -! enddo ! rorb -! enddo ! iorb - - do i = 1, n_act_orb ! First active - do ispin = 1, 2 ! spin of the couple a-a^dagger (i,r) - if(coef_det_pert(i,1,ispin,1,1) == -1.d+10)cycle - iorb = list_act(i) - do r = 1, n_virt_orb ! First virtual - rorb = list_virt(r) -! do state_target = 1, N_states -! coef_det_pert(i,r,ispin,state_target,1) += coef_det_pert(i,r,ispin,state_target,2) -! enddo - do inint = 1, N_int - det_tmp(inint,1) = det_pert(inint,1,i,r,ispin) - det_tmp(inint,2) = det_pert(inint,2,i,r,ispin) - enddo - do jdet = 1,N_det - double precision :: coef_array(N_states),hij_test - call i_H_j(det_tmp,psi_ref(1,1,jdet),N_int,himono) - call get_delta_e_dyall(psi_ref(1,1,jdet),det_tmp,delta_e) - do state_target = 1, N_states -! matrix_1p(idet,jdet,state_target) += himono * coef_det_pert(i,r,ispin,state_target,1) - matrix_1p(idet,jdet,state_target) += himono * hij_det_pert(i,r,ispin) / delta_e(state_target) - enddo - enddo - enddo - enddo - enddo - - enddo ! idet -end - - - -subroutine give_1h1p_only_doubles_spin_cross(matrix_1h1p) - use bitmasks - implicit none - double precision , intent(inout) :: matrix_1h1p(N_det,N_det,*) - integer :: i,j,r,a,b - integer :: iorb, jorb, rorb, aorb, borb - integer :: ispin,jspin - integer :: idet,jdet - integer :: inint - integer :: elec_num_tab_local(2),acu_elec - integer(bit_kind) :: det_tmp(N_int,2) - integer :: exc(0:2,2,2) - integer :: accu_elec - double precision :: get_mo_bielec_integral - double precision :: active_int(n_act_orb,2) - double precision :: hij,phase - integer :: degree(N_det) - integer :: idx(0:N_det) - integer :: istate - double precision :: hja,delta_e_inact_virt(N_states) - integer(bit_kind) :: pert_det(N_int,2,n_act_orb,n_act_orb,2) - double precision :: pert_det_coef(n_act_orb,n_act_orb,2,N_states) - integer :: kspin,degree_scalar - integer :: other_spin(2) - other_spin(1) = 2 - other_spin(2) = 1 - double precision :: hidouble,delta_e(N_states) -!matrix_1h1p = 0.d0 - - elec_num_tab_local = 0 - do inint = 1, N_int - elec_num_tab_local(1) += popcnt(psi_ref(inint,1,1)) - elec_num_tab_local(2) += popcnt(psi_ref(inint,2,1)) - enddo - do i = 1, n_inact_orb ! First inactive - iorb = list_inact(i) - do r = 1, n_virt_orb ! First virtual - rorb = list_virt(r) - do j = 1, N_states - delta_e_inact_virt(j) = fock_core_inactive_total_spin_trace(iorb,j) & - - fock_virt_total_spin_trace(rorb,j) - enddo - do idet = 1, N_det - call get_excitation_degree_vector_double_alpha_beta(psi_ref,psi_ref(1,1,idet),degree,N_int,N_det,idx) - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Precomputation of matrix elements - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Case of the mono excitations - do ispin = 1, 2 - jspin = other_spin(ispin) - do a = 1, n_act_orb - aorb = list_act(a) - do b = 1, n_act_orb - borb = list_act(b) - do inint = 1, N_int - det_tmp(inint,1) = psi_ref(inint,1,idet) - det_tmp(inint,2) = psi_ref(inint,2,idet) - enddo - ! Do the excitation (i-->a)(ispin) + (b-->r)(other_spin(ispin)) - integer :: i_ok,corb,dorb - call do_mono_excitation(det_tmp,iorb,aorb,ispin,i_ok) - if(i_ok .ne. 1)then - do state_target = 1, N_states - pert_det_coef(a,b,ispin,state_target) = -100000.d0 - enddo - do inint = 1, N_int - pert_det(inint,1,a,b,ispin) = 0_bit_kind - pert_det(inint,2,a,b,ispin) = 0_bit_kind - enddo - cycle - endif - call do_mono_excitation(det_tmp,borb,rorb,jspin,i_ok) - if(i_ok .ne. 1)then - do state_target = 1, N_states - pert_det_coef(a,b,ispin,state_target) = -100000.d0 - enddo - do inint = 1, N_int - pert_det(inint,1,a,b,ispin) = 0_bit_kind - pert_det(inint,2,a,b,ispin) = 0_bit_kind - enddo - cycle - endif - do inint = 1, N_int - pert_det(inint,1,a,b,ispin) = det_tmp(inint,1) - pert_det(inint,2,a,b,ispin) = det_tmp(inint,2) - enddo - - call i_H_j(psi_ref(1,1,idet),det_tmp,N_int,hidouble) - do state_target = 1, N_states - delta_e(state_target) = one_anhil_one_creat(a,b,ispin,jspin,state_target) + delta_e_inact_virt(state_target) - pert_det_coef(a,b,ispin,state_target) = hidouble / delta_e(state_target) - matrix_1h1p(idet,idet,state_target) += hidouble * pert_det_coef(a,b,ispin,state_target) - enddo - enddo - enddo - enddo - do jdet = 1, idx(0) - if(idx(jdet).ne.idet)then - call get_double_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - integer :: c,d,state_target - integer(bit_kind) :: det_tmp_bis(N_int,2) - ! excitation from I --> J - ! (a->c) (alpha) + (b->d) (beta) - aorb = exc(1,1,1) - corb = exc(1,2,1) - c = list_act_reverse(corb) - borb = exc(1,1,2) - dorb = exc(1,2,2) - d = list_act_reverse(dorb) - ispin = 1 - jspin = 2 - do inint = 1, N_int - det_tmp(inint,1) = pert_det(inint,1,c,d,1) - det_tmp(inint,2) = pert_det(inint,2,c,d,1) - det_tmp_bis(inint,1) = pert_det(inint,1,c,d,2) - det_tmp_bis(inint,2) = pert_det(inint,2,c,d,2) - enddo - double precision :: hjdouble_1,hjdouble_2 - call i_H_j(psi_ref(1,1,idx(jdet)),det_tmp,N_int,hjdouble_1) - call i_H_j(psi_ref(1,1,idx(jdet)),det_tmp_bis,N_int,hjdouble_2) - do state_target = 1, N_states - matrix_1h1p(idx(jdet),idet,state_target) += (pert_det_coef(c,d,1,state_target) * hjdouble_1 + pert_det_coef(c,d,2,state_target) * hjdouble_2 ) - enddo - endif - enddo - - - - enddo - enddo - enddo - - - - - -end - - diff --git a/src/mrpt_utils/new_way_second_order_coef.irp.f b/src/mrpt_utils/new_way_second_order_coef.irp.f deleted file mode 100644 index 170d3f5e..00000000 --- a/src/mrpt_utils/new_way_second_order_coef.irp.f +++ /dev/null @@ -1,796 +0,0 @@ -subroutine give_2h1p_contrib_sec_order(matrix_2h1p) - use bitmasks - implicit none - double precision , intent(inout) :: matrix_2h1p(N_det,N_det,*) - integer :: i,j,r,a,b - integer :: iorb, jorb, rorb, aorb, borb - integer :: ispin,jspin - integer :: idet,jdet - integer(bit_kind) :: perturb_dets(N_int,2,n_act_orb,2,2) - double precision :: perturb_dets_phase(n_act_orb,2,2) - double precision :: perturb_dets_hij(n_act_orb,2,2) - double precision :: coef_perturb_from_idet(n_act_orb,2,2,N_states,3) - integer :: inint - integer :: elec_num_tab_local(2),acu_elec - integer(bit_kind) :: det_tmp(N_int,2) - integer(bit_kind) :: det_tmp_j(N_int,2) - integer :: exc(0:2,2,2) - integer :: accu_elec - double precision :: get_mo_bielec_integral - double precision :: active_int(n_act_orb,2) - double precision :: hij,phase - integer :: index_orb_act_mono(N_det,6) -!matrix_2h1p = 0.d0 - - elec_num_tab_local = 0 - do inint = 1, N_int - elec_num_tab_local(1) += popcnt(psi_ref(inint,1,1)) - elec_num_tab_local(2) += popcnt(psi_ref(inint,2,1)) - enddo - do i = 1, n_inact_orb ! First inactive - iorb = list_inact(i) - do j = 1, n_inact_orb ! Second inactive - jorb = list_inact(j) - do r = 1, n_virt_orb ! First virtual - rorb = list_virt(r) - ! take all the integral you will need for i,j,r fixed - do a = 1, n_act_orb - aorb = list_act(a) - active_int(a,1) = get_mo_bielec_integral(iorb,jorb,rorb,aorb,mo_integrals_map) ! direct - active_int(a,2) = get_mo_bielec_integral(iorb,jorb,aorb,rorb,mo_integrals_map) ! exchange - perturb_dets_phase(a,1,1) = -1000.d0 - perturb_dets_phase(a,1,2) = -1000.d0 - perturb_dets_phase(a,2,2) = -1000.d0 - perturb_dets_phase(a,2,1) = -1000.d0 - enddo - - integer :: degree(N_det) - integer :: idx(0:N_det) - double precision :: delta_e(n_act_orb,2,N_states) - integer :: istate - - do idet = 1, N_det - call get_excitation_degree_vector_mono_or_exchange(psi_ref,psi_ref(1,1,idet),degree,N_int,N_det,idx) -! if(idet == 81)then -! call get_excitation_degree_vector_mono_or_exchange_verbose(psi_ref(1,1,1),psi_ref(1,1,idet),degree,N_int,N_det,idx) -! endif - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Precomputation of matrix elements - do ispin = 1, 2 ! spin of the couple a-a^dagger (i,r) - do jspin = 1, 2 ! spin of the couple z-a^dagger (j,a) - if(ispin == jspin .and. iorb.le.jorb)cycle ! condition not to double count - do a = 1, n_act_orb ! First active - aorb = list_act(a) - do inint = 1, N_int - det_tmp(inint,1) = psi_ref(inint,1,idet) - det_tmp(inint,2) = psi_ref(inint,2,idet) - enddo - ! Do the excitation inactive -- > virtual - call clear_bit_to_integer(iorb,det_tmp(1,ispin),N_int) ! hole in "iorb" of spin Ispin - call set_bit_to_integer(rorb,det_tmp(1,ispin),N_int) ! particle in "rorb" of spin Ispin - - ! Do the excitation inactive -- > active - call clear_bit_to_integer(jorb,det_tmp(1,jspin),N_int) ! hole in "jorb" of spin Jspin - call set_bit_to_integer(aorb,det_tmp(1,jspin),N_int) ! particle in "aorb" of spin Jspin - - ! Check if the excitation is possible or not on psi_ref(idet) - accu_elec= 0 - do inint = 1, N_int - accu_elec+= popcnt(det_tmp(inint,jspin)) - enddo - if(accu_elec .ne. elec_num_tab_local(jspin))then - perturb_dets_phase(a,jspin,ispin) = -1000.d0 - perturb_dets_hij(a,jspin,ispin) = 0.d0 - do istate = 1, N_states - coef_perturb_from_idet(a,jspin,ispin,istate,1) = 0.d0 - coef_perturb_from_idet(a,jspin,ispin,istate,2) = 0.d0 - enddo - cycle - endif - do inint = 1, N_int - perturb_dets(inint,1,a,jspin,ispin) = det_tmp(inint,1) - perturb_dets(inint,2,a,jspin,ispin) = det_tmp(inint,2) - enddo - call get_double_excitation(psi_ref(1,1,idet),det_tmp,exc,phase,N_int) - perturb_dets_phase(a,jspin,ispin) = phase - do istate = 1, N_states - delta_e(a,jspin,istate) = one_creat(a,jspin,istate) & - - fock_virt_total_spin_trace(rorb,istate) & - + fock_core_inactive_total_spin_trace(iorb,istate) & - + fock_core_inactive_total_spin_trace(jorb,istate) - enddo - if(ispin == jspin)then - perturb_dets_hij(a,jspin,ispin) = phase * (active_int(a,2) - active_int(a,1) ) - else - perturb_dets_hij(a,jspin,ispin) = phase * active_int(a,1) - endif -!!!!!!!!!!!!!!!!!!!!!1 Computation of the coefficient at first order coming from idet -!!!!!!!!!!!!!!!!!!!!! for the excitation (i,j)(ispin,jspin) ---> (r,a)(ispin,jspin) - do istate = 1, N_states - coef_perturb_from_idet(a,jspin,ispin,istate,1) = perturb_dets_hij(a,jspin,ispin) / delta_e(a,jspin,istate) - enddo - - enddo - enddo - enddo - - -!!!!!!!!!!!!!!!!!!!!!!!!!!! determination of the connections between I and the other J determinants mono excited in the CAS -!!!!!!!!!!!!!!!!!!!!!!!!!!!! the determinants I and J must be connected by the following operator -!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!!!!!!!!!!!!!!!!!!!!!!!!!!!! - integer :: i_hole,i_part - double precision :: hij_test - double precision :: fock_operator_local(n_act_orb,n_act_orb,2) - do jdet = 1, idx(0) - if(idx(jdet).ne.idet)then - if(degree(jdet)==1)then - call get_mono_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if (exc(0,1,1) == 1) then - ! Mono alpha - i_hole = list_act_reverse(exc(1,1,1)) !!! a_a - i_part = list_act_reverse(exc(1,2,1)) !!! a^{\dagger}_{b} - kspin = 1 !!! kspin - index_orb_act_mono(idx(jdet),1) = i_hole - index_orb_act_mono(idx(jdet),2) = i_part - index_orb_act_mono(idx(jdet),3) = kspin - call i_H_j_dyall(psi_active(1,1,idet),psi_active(1,1,idx(jdet)),N_int,hij) - fock_operator_local(i_hole,i_part,kspin) = hij * phase ! phase less fock operator - fock_operator_local(i_part,i_hole,kspin) = hij * phase ! phase less fock operator - else - ! Mono beta - i_hole = list_act_reverse(exc(1,1,2)) !!! a_a - i_part = list_act_reverse(exc(1,2,2)) !!! a^{\dagger}_{b} - kspin = 2 !!! kspin - index_orb_act_mono(idx(jdet),1) = i_hole - index_orb_act_mono(idx(jdet),2) = i_part - index_orb_act_mono(idx(jdet),3) = kspin - call i_H_j_dyall(psi_active(1,1,idet),psi_active(1,1,idx(jdet)),N_int,hij) - fock_operator_local(i_hole,i_part,kspin) = hij * phase ! phase less fock operator - fock_operator_local(i_part,i_hole,kspin) = hij * phase ! phase less fock operator - endif - else if(degree(jdet)==2)then - call get_double_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - ! Mono alpha - index_orb_act_mono(idx(jdet),1) = list_act_reverse(exc(1,1,1)) !!! a_a - index_orb_act_mono(idx(jdet),2) = list_act_reverse(exc(1,2,1)) !!! a^{\dagger}_{b} - index_orb_act_mono(idx(jdet),3) = 1 - ! Mono beta - index_orb_act_mono(idx(jdet),4) = list_act_reverse(exc(1,1,2)) !!! a_a - index_orb_act_mono(idx(jdet),5) = list_act_reverse(exc(1,2,2)) !!! a^{\dagger}_{b} - index_orb_act_mono(idx(jdet),6) = 2 - endif - else - index_orb_act_mono(idx(jdet),1) = -1 - endif - enddo - - integer :: kspin - integer :: corb,i_ok - integer(bit_kind) :: det_tmp_bis(N_int,2) - double precision :: hib , hab , hja - double precision :: delta_e_ab(N_states) - double precision :: hib_test,hja_test,hab_test - do jdet = 1, idx(0) - if(idx(jdet).ne.idet)then -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! CASE OF THE MONO EXCITATIONS - if(degree(jdet) == 1)then - ! ! two determinants | Idet > and | Jdet > which are connected throw a mono excitation operator - ! ! are connected by the presence of the perturbers determinants |det_tmp> - aorb = index_orb_act_mono(idx(jdet),1) ! a^{\dagger}_{aorb} - borb = index_orb_act_mono(idx(jdet),2) ! a_{borb} - kspin = index_orb_act_mono(idx(jdet),3) ! spin of the excitation - do ispin = 1, 2 ! you loop on all possible spin for the excitation - ! a^{\dagger}_r a_{i} (ispin) - ! ! the determinants Idet and Jdet interact throw the following operator - ! ! | Jdet > = a_{borb,kspin} a^{\dagger}_{aorb, kspin} | Idet > - do jspin = 1, 2 - if (jspin .ne. kspin)then - - do corb = 1, n_act_orb - if(perturb_dets_phase(corb,jspin,ispin).le.-100d0)cycle - ! ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{corb,kspin} a_{jorb,kspin} a_{iorb,ispin} | Idet > - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,corb,jspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,corb,jspin,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,corb,jspin,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,corb,jspin,ispin) - enddo - ! ! < idet | H | det_tmp > = phase * (ir|cv) - call get_double_excitation(psi_ref(1,1,idet),det_tmp,exc,phase,N_int) - if(ispin == jspin)then - hib= phase * (active_int(corb,1) - active_int(corb,2)) - else - hib= phase * active_int(corb,1) - endif - - ! | det_tmp_bis > = a^{\dagger}_{borb,kspin} a_{aorb,kspin} | det_tmp > - call do_mono_excitation(det_tmp_bis,list_act(aorb),list_act(borb),kspin,i_ok) - if(i_ok .ne. 1)cycle - call get_mono_excitation(det_tmp,det_tmp_bis,exc,phase,N_int) - - ! < det_tmp | H | det_tmp_bis > = F_{aorb,borb} - hab = (fock_operator_local(aorb,borb,kspin) ) * phase - if(hab /= hab)then ! check NaN - print*, '1' - stop - endif - ! < jdet | H | det_tmp_bis > = phase * (ir|cv) - call get_double_excitation(det_tmp_bis,psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if(ispin == jspin)then - hja= phase * (active_int(corb,1) - active_int(corb,2)) - else - hja= phase * (active_int(corb,1)) - endif - do istate = 1, N_states - delta_e_ab(istate) = delta_e(corb,jspin,istate) + one_anhil_one_creat(borb,aorb,kspin,kspin,istate) - matrix_2h1p(idx(jdet),idet,istate) = matrix_2h1p(idx(jdet),idet,istate) + & - hib / delta_e(corb,jspin,istate) * hab / delta_e_ab(istate) * hja - ! ! < det_tmp | H | Idet > / delta_E (Idet --> det_tmp ) - ! ! < det_tmp | H | det_tmp_bis > / delta_E (Idet --> det_tmp --> det_tmp_bis) - ! ! < det_tmp_bis | H | Jdet > - enddo - enddo ! corb - else - if(ispin == kspin .and. iorb.le.jorb)cycle ! condition not to double count - do corb = 1, n_act_orb - if(corb == aorb .or. corb == borb) cycle - if(perturb_dets_phase(corb,jspin,ispin).le.-100d0)cycle - ! ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{vorb,kspin} a_{corb,jspin} a_{iorb,ispin} | Idet > - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,corb,jspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,corb,jspin,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,corb,jspin,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,corb,jspin,ispin) - enddo - ! < idet | H | det_tmp > = phase * ( (ir|cv) - (iv|cr) ) - call get_double_excitation(psi_ref(1,1,idet),det_tmp,exc,phase,N_int) - if(ispin == jspin)then - hib= phase * (active_int(corb,1) - active_int(corb,2)) - else - hib= phase * active_int(corb,1) - endif - ! | det_tmp_bis > = a^{\dagger}_{borb,kspin} a_{aorb,kspin} | det_tmp > - call do_mono_excitation(det_tmp_bis,list_act(aorb),list_act(borb),kspin,i_ok) - if(i_ok .ne. 1)cycle - call get_mono_excitation(det_tmp,det_tmp_bis,exc,phase,N_int) -! ! < det_tmp | H | det_tmp_bis > = F_{aorb,borb} - hab = fock_operator_local(aorb,borb,kspin) * phase - if(hab /= hab)then ! check NaN - print*, '2' - stop - endif - ! < jdet | H | det_tmp_bis > = phase * ( (ir|cv) - (iv|cr) ) - call get_double_excitation(det_tmp_bis,psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if(ispin == jspin)then - hja= phase * (active_int(corb,1) - active_int(corb,2)) - else - hja= phase * (active_int(corb,1)) - endif - do istate = 1, N_states - delta_e_ab(istate) = delta_e(corb,jspin,istate) + one_anhil_one_creat(borb,aorb,kspin,kspin,istate) - matrix_2h1p(idx(jdet),idet,istate) = matrix_2h1p(idx(jdet),idet,istate) + & - hib / delta_e(corb,jspin,istate) * hab / delta_e_ab(istate) * hja - ! ! < det_tmp | H | Idet > / delta_E (Idet --> det_tmp ) - ! ! < det_tmp | H | det_tmp_bis > / delta_E (Idet --> det_tmp --> det_tmp_bis) - ! ! < det_tmp_bis | H | Jdet > - enddo - enddo ! corb - endif - enddo - enddo - ! - else !! Double excitation operators - ! - if (index_orb_act_mono(idx(jdet),1) == index_orb_act_mono(idx(jdet),5))then !! spin exchange - do ispin = 1, 2 ! you loop on all possible spin for the excitation - ! a^{\dagger}_r a_{i} (ispin) - !!! ! first combination of spin :: | det_tmp > = a^{\dagger}_{aorb,beta} | Idet > - jspin = 2 - aorb = index_orb_act_mono(idx(jdet),1) ! hole of the alpha electron - borb = index_orb_act_mono(idx(jdet),2) ! particle of the alpha electron - if(perturb_dets_phase(aorb,jspin,ispin).le.-100d0)cycle - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,aorb,jspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,aorb,jspin,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,aorb,jspin,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,aorb,jspin,ispin) - enddo - ! | det_tmp > = a^{\dagger}_{aorb,beta} | Idet > - call get_double_excitation(det_tmp,psi_ref(1,1,idet),exc,phase,N_int) - if(ispin == jspin)then - hib= phase * (active_int(aorb,1) - active_int(aorb,2)) - else - hib= phase * (active_int(aorb,1)) - endif - if(hib .ne. perturb_dets_hij(aorb,jspin,ispin))then - print*, 'pb !!' - print*, 'hib .ne. perturb_dets_hij(aorb,jspin,ispin)' - stop - endif - enddo !! ispin - - else if(index_orb_act_mono(idx(jdet),1) == index_orb_act_mono(idx(jdet),4))then !! closed shell double excitation - - else - call get_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,degree_scalar,phase,N_int) - integer :: h1,h2,p1,p2,s1,s2 , degree_scalar - call decode_exc(exc,degree,h1,p1,h2,p2,s1,s2) - print*, h1,p1,h2,p2,s1,s2 - call debug_det(psi_ref(1,1,idet),N_int) - call debug_det(psi_ref(1,1,idx(jdet)),N_int) - print*, idet,idx(jdet) - print*, 'pb !!!!!!!!!!!!!' - call get_excitation_degree_vector_mono_or_exchange_verbose(psi_ref(1,1,1),psi_ref(1,1,idet),degree,N_int,N_det,idx) - stop - endif - endif - - else - !! diagonal part of the dressing : interaction of | Idet > with all the perturbers generated by the excitations - !! - !! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{aorb,kspin} a_{jorb,kspin} a_{iorb,ispin} | Idet > - !!do ispin = 1, 2 - !! do kspin = 1, 2 - !! if(ispin == kspin .and. iorb.le.jorb)cycle ! condition not to double count - !! do a = 1, n_act_orb ! First active - !! do istate = 1, N_states - !! matrix_2h1p(idet,idet,istate) += coef_perturb_from_idet(a,kspin,ispin,istate,2) * perturb_dets_hij(a,kspin,ispin) - !! enddo - !! enddo - !! enddo - !!enddo - ! - endif - - enddo - enddo - enddo - enddo - enddo - - - - - -end - - -subroutine give_1h2p_contrib_sec_order(matrix_1h2p) - use bitmasks - implicit none - double precision , intent(inout) :: matrix_1h2p(N_det,N_det,*) - integer :: i,v,r,a,b,c - integer :: iorb, vorb, rorb, aorb, borb,corb - integer :: ispin,jspin - integer :: idet,jdet - integer(bit_kind) :: perturb_dets(N_int,2,n_act_orb,2,2) - double precision :: perturb_dets_phase(n_act_orb,2,2) - double precision :: perturb_dets_hij(n_act_orb,2,2) - double precision :: perturb_dets_hpsi0(n_act_orb,2,2,N_states) - double precision :: coef_perturb_from_idet(n_act_orb,2,2,N_states,2) - logical :: already_generated(n_act_orb,2,2) - integer :: inint - integer :: elec_num_tab_local(2),acu_elec - integer(bit_kind) :: det_tmp(N_int,2) - integer(bit_kind) :: det_tmp_j(N_int,2) - integer :: exc(0:2,2,2) - integer :: accu_elec - double precision :: get_mo_bielec_integral - double precision :: active_int(n_act_orb,2) - double precision :: hij,phase - double precision :: accu_contrib - integer :: degree(N_det) - integer :: idx(0:N_det) - double precision :: delta_e(n_act_orb,2,N_states) - integer :: istate - integer :: index_orb_act_mono(N_det,6) - double precision :: delta_e_inactive_virt(N_states) - integer :: kspin - double precision :: delta_e_ja(N_states) - double precision :: hja - double precision :: contrib_hij - double precision :: fock_operator_local(n_act_orb,n_act_orb,2) - double precision :: fock_operator_from_core(n_act_orb,n_act_orb) - double precision :: fock_operator_from_virt(n_act_orb,n_act_orb) - double precision :: fock_operator_from_act(n_act_orb,n_act_orb,n_act_orb,2) - accu_contrib = 0.d0 -!matrix_1h2p = 0.d0 - - elec_num_tab_local = 0 - do inint = 1, N_int - elec_num_tab_local(1) += popcnt(psi_ref(inint,1,1)) - elec_num_tab_local(2) += popcnt(psi_ref(inint,2,1)) - enddo - do i = 1, n_inact_orb ! First inactive - iorb = list_inact(i) - do v = 1, n_virt_orb ! First virtual - vorb = list_virt(v) - do r = 1, n_virt_orb ! Second virtual - rorb = list_virt(r) - ! take all the integral you will need for i,j,r fixed - do a = 1, n_act_orb - aorb = list_act(a) - active_int(a,1) = get_mo_bielec_integral(iorb,aorb,rorb,vorb,mo_integrals_map) ! direct - active_int(a,2) = get_mo_bielec_integral(iorb,aorb,vorb,rorb,mo_integrals_map) ! exchange - perturb_dets_phase(a,1,1) = -1000.d0 - perturb_dets_phase(a,1,2) = -1000.d0 - perturb_dets_phase(a,2,2) = -1000.d0 - perturb_dets_phase(a,2,1) = -1000.d0 - already_generated(a,1,1) = .False. - already_generated(a,1,2) = .False. - already_generated(a,2,2) = .False. - already_generated(a,2,1) = .False. - enddo - - - do istate = 1, N_states - delta_e_inactive_virt(istate) = & - - fock_virt_total_spin_trace(rorb,istate) & - - fock_virt_total_spin_trace(vorb,istate) & - + fock_core_inactive_total_spin_trace(iorb,istate) - enddo - do idet = 1, N_det - call get_excitation_degree_vector_mono_or_exchange(psi_ref,psi_ref(1,1,idet),degree,N_int,N_det,idx) - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Precomputation of matrix elements - do ispin = 1, 2 ! spin of the couple a-a^dagger (iorb,rorb) - do jspin = 1, 2 ! spin of the couple a-a^dagger (aorb,vorb) - do a = 1, n_act_orb ! First active - aorb = list_act(a) - do istate = 1, N_states - perturb_dets_hpsi0(a,jspin,ispin,istate) = 0.d0 - coef_perturb_from_idet(a,jspin,ispin,istate,1) = 0.d0 - coef_perturb_from_idet(a,jspin,ispin,istate,2) = 0.d0 - enddo - if(ispin == jspin .and. vorb.le.rorb)cycle ! condition not to double count - do inint = 1, N_int - det_tmp(inint,1) = psi_ref(inint,1,idet) - det_tmp(inint,2) = psi_ref(inint,2,idet) - enddo - ! Do the excitation inactive -- > virtual - call clear_bit_to_integer(iorb,det_tmp(1,ispin),N_int) ! hole in "iorb" of spin Ispin - call set_bit_to_integer(rorb,det_tmp(1,ispin),N_int) ! particle in "rorb" of spin Ispin - - ! Do the excitation active -- > virtual - call clear_bit_to_integer(aorb,det_tmp(1,jspin),N_int) ! hole in "aorb" of spin Jspin - call set_bit_to_integer(vorb,det_tmp(1,jspin),N_int) ! particle in "vorb" of spin Jspin - - ! Check if the excitation is possible or not on psi_ref(idet) - accu_elec= 0 - do inint = 1, N_int - accu_elec+= popcnt(det_tmp(inint,jspin)) - enddo - if(accu_elec .ne. elec_num_tab_local(jspin))then - perturb_dets_phase(a,jspin,ispin) = -1000.0d0 - perturb_dets_hij(a,jspin,ispin) = 0.d0 - do istate = 1, N_states - coef_perturb_from_idet(a,jspin,ispin,istate,1) = 0.d0 - coef_perturb_from_idet(a,jspin,ispin,istate,2) = 0.d0 - enddo - cycle - endif - do inint = 1, N_int - perturb_dets(inint,1,a,jspin,ispin) = det_tmp(inint,1) - perturb_dets(inint,2,a,jspin,ispin) = det_tmp(inint,2) - enddo - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,a,jspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,a,jspin,ispin) - enddo - - call get_double_excitation(psi_ref(1,1,idet),det_tmp,exc,phase,N_int) - perturb_dets_phase(a,jspin,ispin) = phase - - do istate = 1, N_states - delta_e(a,jspin,istate) = one_anhil(a,jspin,istate) + delta_e_inactive_virt(istate) - enddo - if(ispin == jspin)then - perturb_dets_hij(a,jspin,ispin) = phase * (active_int(a,1) - active_int(a,2) ) - else - perturb_dets_hij(a,jspin,ispin) = phase * active_int(a,1) - endif - enddo - enddo - enddo - -!!!!!!!!!!!!!!!!!!!!!!!!!!! determination of the connections between I and the other J determinants mono excited in the CAS -!!!!!!!!!!!!!!!!!!!!!!!!!!!! the determinants I and J must be connected by the following operator -!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!!!!!!!!!!!!!!!!!!!!!!!!!!!! - integer :: i_hole,i_part - double precision :: hij_test - do jdet = 1, idx(0) - if(idx(jdet).ne.idet)then - if(degree(jdet)==1)then - call get_mono_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if (exc(0,1,1) == 1) then - ! Mono alpha - i_hole = list_act_reverse(exc(1,1,1)) !!! a_a - i_part = list_act_reverse(exc(1,2,1)) !!! a^{\dagger}_{b} - kspin = 1 !!! kspin - index_orb_act_mono(idx(jdet),1) = i_hole - index_orb_act_mono(idx(jdet),2) = i_part - index_orb_act_mono(idx(jdet),3) = kspin - call i_H_j_dyall(psi_active(1,1,idet),psi_active(1,1,idx(jdet)),N_int,hij) - fock_operator_local(i_hole,i_part,kspin) = hij * phase ! phase less fock operator - fock_operator_local(i_part,i_hole,kspin) = hij * phase ! phase less fock operator - else - ! Mono beta - i_hole = list_act_reverse(exc(1,1,2)) !!! a_a - i_part = list_act_reverse(exc(1,2,2)) !!! a^{\dagger}_{b} - kspin = 2 !!! kspin - index_orb_act_mono(idx(jdet),1) = i_hole - index_orb_act_mono(idx(jdet),2) = i_part - index_orb_act_mono(idx(jdet),3) = kspin - call i_H_j_dyall(psi_active(1,1,idet),psi_active(1,1,idx(jdet)),N_int,hij) - fock_operator_local(i_hole,i_part,kspin) = hij * phase ! phase less fock operator - fock_operator_local(i_part,i_hole,kspin) = hij * phase ! phase less fock operator - endif - else if(degree(jdet)==2)then - call get_double_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - ! Mono alpha - index_orb_act_mono(idx(jdet),1) = list_act_reverse(exc(1,1,1)) !!! a_a - index_orb_act_mono(idx(jdet),2) = list_act_reverse(exc(1,2,1)) !!! a^{\dagger}_{b} - index_orb_act_mono(idx(jdet),3) = 1 - ! Mono beta - index_orb_act_mono(idx(jdet),4) = list_act_reverse(exc(1,1,2)) !!! a_a - index_orb_act_mono(idx(jdet),5) = list_act_reverse(exc(1,2,2)) !!! a^{\dagger}_{b} - index_orb_act_mono(idx(jdet),6) = 2 - endif - else - index_orb_act_mono(idx(jdet),1) = -1 - endif - enddo - - integer ::dorb,i_ok - integer(bit_kind) :: det_tmp_bis(N_int,2) - double precision :: hib , hab - double precision :: delta_e_ab(N_states) - double precision :: hib_test,hja_test,hab_test - - - do jdet = 1, idx(0) - if(idx(jdet).ne.idet)then -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! CASE OF THE MONO EXCITATIONS - if(degree(jdet) == 1)then - ! two determinants | Idet > and | Jdet > which are connected throw a mono excitation operator - ! are connected by the presence of the perturbers determinants |det_tmp> - aorb = index_orb_act_mono(idx(jdet),1) ! a_{aorb} - borb = index_orb_act_mono(idx(jdet),2) ! a^{\dagger}_{borb} - kspin = index_orb_act_mono(idx(jdet),3) ! spin of the excitation - ! the determinants Idet and Jdet interact throw the following operator - ! | Jdet > = a^{\dagger}_{borb,kspin} a_{aorb, kspin} | Idet > - - do ispin = 1, 2 ! you loop on all possible spin for the excitation - ! a^{\dagger}_r a_{i} (ispin) - if(ispin == kspin .and. vorb.le.rorb)cycle ! condition not to double count - do jspin = 1, 2 - if (jspin .ne. kspin)then - do corb = 1, n_act_orb - if(perturb_dets_phase(corb,jspin,ispin).le.-100d0)cycle - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{vorb,kspin} a_{corb,kspin} a_{iorb,ispin} | Idet > - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,corb,jspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,corb,jspin,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,corb,jspin,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,corb,jspin,ispin) - enddo - ! < idet | H | det_tmp > = phase * (ir|cv) - call get_double_excitation(psi_ref(1,1,idet),det_tmp,exc,phase,N_int) - if(ispin == jspin)then - hib= phase * (active_int(corb,1) - active_int(corb,2)) - else - hib= phase * active_int(corb,1) - endif - - ! | det_tmp_bis > = a^{\dagger}_{borb,kspin} a_{aorb,kspin} | det_tmp > - call do_mono_excitation(det_tmp_bis,list_act(aorb),list_act(borb),kspin,i_ok) - if(i_ok .ne. 1)cycle - call get_mono_excitation(det_tmp,det_tmp_bis,exc,phase,N_int) - - ! < det_tmp | H | det_tmp_bis > = F_{aorb,borb} - hab = (fock_operator_local(aorb,borb,kspin) ) * phase - ! < jdet | H | det_tmp_bis > = phase * (ir|cv) - call get_double_excitation(det_tmp_bis,psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if(ispin == jspin)then - hja= phase * (active_int(corb,1) - active_int(corb,2)) - else - hja= phase * (active_int(corb,1)) - endif - do istate = 1, N_states - delta_e_ab(istate) = delta_e(corb,jspin,istate) + one_anhil_one_creat(borb,aorb,kspin,kspin,istate) - matrix_1h2p(idx(jdet),idet,istate) = matrix_1h2p(idx(jdet),idet,istate) + & - hib / delta_e(corb,jspin,istate) * hab / delta_e_ab(istate) * hja - ! < det_tmp | H | Idet > / delta_E (Idet --> det_tmp ) - ! < det_tmp | H | det_tmp_bis > / delta_E (Idet --> det_tmp --> det_tmp_bis) - ! < det_tmp_bis | H | Jdet > - enddo - enddo ! corb - else - do corb = 1, n_act_orb - if(corb == aorb .or. corb == borb) cycle - if(perturb_dets_phase(corb,jspin,ispin).le.-100d0)cycle - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{vorb,kspin} a_{corb,jspin} a_{iorb,ispin} | Idet > - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,corb,jspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,corb,jspin,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,corb,jspin,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,corb,jspin,ispin) - enddo - ! < idet | H | det_tmp > = phase * ( (ir|cv) - (iv|cr) ) - call get_double_excitation(psi_ref(1,1,idet),det_tmp,exc,phase,N_int) - if(ispin == jspin)then - hib= phase * (active_int(corb,1) - active_int(corb,2)) - else - hib= phase * active_int(corb,1) - endif - ! | det_tmp_bis > = a^{\dagger}_{borb,kspin} a_{aorb,kspin} | det_tmp > - call do_mono_excitation(det_tmp_bis,list_act(aorb),list_act(borb),kspin,i_ok) - if(i_ok .ne. 1)cycle - call get_mono_excitation(det_tmp,det_tmp_bis,exc,phase,N_int) -! ! < det_tmp | H | det_tmp_bis > = F_{aorb,borb} - hab = fock_operator_local(aorb,borb,kspin) * phase - ! < jdet | H | det_tmp_bis > = phase * ( (ir|cv) - (iv|cr) ) - call get_double_excitation(det_tmp_bis,psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if(ispin == jspin)then - hja= phase * (active_int(corb,1) - active_int(corb,2)) - else - hja= phase * (active_int(corb,1)) - endif - do istate = 1, N_states - delta_e_ab(istate) = delta_e(corb,jspin,istate) + one_anhil_one_creat(borb,aorb,kspin,kspin,istate) - matrix_1h2p(idx(jdet),idet,istate) = matrix_1h2p(idx(jdet),idet,istate) + & - hib / delta_e(corb,jspin,istate) * hab / delta_e_ab(istate) * hja - ! < det_tmp | H | Idet > / delta_E (Idet --> det_tmp ) - ! < det_tmp | H | det_tmp_bis > / delta_E (Idet --> det_tmp --> det_tmp_bis) - ! < det_tmp_bis | H | Jdet > - enddo - enddo ! corb - - endif - enddo ! jspin - enddo ! ispin - else -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Case of double excitations !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - ! a^{\dagger}_r a_{i} (ispin) - aorb = index_orb_act_mono(idx(jdet),4) ! hole of a beta electron - borb = index_orb_act_mono(idx(jdet),5) ! propagation of the hole :: mono excitation of alpha spin - do ispin = 1, 2 ! you loop on all possible spin for the excitation - ! a^{\dagger}_r a_{i} (ispin) - ! ! first combination of spin :: | det_tmp > = a_{aorb,beta} | Idet > - jspin = 2 - if(perturb_dets_phase(aorb,jspin,ispin).le.-100d0)cycle - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,aorb,jspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,aorb,jspin,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,aorb,jspin,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,aorb,jspin,ispin) - enddo - call get_double_excitation(det_tmp,psi_ref(1,1,idet),exc,phase,N_int) - if(ispin == jspin)then - hib= phase * (active_int(borb,1) - active_int(borb,2)) - else - hib= phase * (active_int(borb,1)) - endif - if( index_orb_act_mono(idx(jdet),1) == index_orb_act_mono(idx(jdet),5))then - call do_mono_excitation(det_tmp_bis,list_act(borb),list_act(aorb),1,i_ok) - if(i_ok .ne. 1)then - call debug_det(psi_ref(1,1,idet),N_int) - call debug_det(psi_ref(1,1,idx(jdet)),N_int) - print*, aorb, borb - call debug_det(det_tmp,N_int) - stop - endif - else - call do_mono_excitation(det_tmp_bis,list_act(aorb),list_act(borb),1,i_ok) - endif - - if(i_ok .ne. 1)cycle - call get_mono_excitation(det_tmp,det_tmp_bis,exc,phase,N_int) - ! < det_tmp | H | det_tmp_bis > = F_{aorb,borb} - if (aorb == borb)then - print*, 'iahaha' - stop - endif - hab = fock_operator_local(aorb,borb,1) * phase - call get_double_excitation(det_tmp_bis,psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if(ispin == jspin)then - hja= phase * (active_int(borb,1) - active_int(borb,2)) - else - hja= phase * (active_int(borb,1)) - endif - do istate = 1, N_states - delta_e_ab(istate) = delta_e(aorb,jspin,istate) + one_anhil_one_creat(borb,aorb,1,1,istate) - matrix_1h2p(idx(jdet),idet,istate) = matrix_1h2p(idx(jdet),idet,istate) + & - hib / delta_e(aorb,jspin,istate) * hab / delta_e_ab(istate) * hja - ! < det_tmp | H | Idet > / delta_E (Idet --> det_tmp ) - ! < det_tmp | H | det_tmp_bis > / delta_E (Idet --> det_tmp --> det_tmp_bis) - ! < det_tmp_bis | H | Jdet > - enddo !! istate - - ! ! second combination of spin :: | det_tmp > = a_{aorb,alpha} | Idet > - jspin = 1 - if(perturb_dets_phase(aorb,jspin,ispin).le.-100d0)cycle - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,aorb,jspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,aorb,jspin,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,aorb,jspin,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,aorb,jspin,ispin) - enddo - call get_double_excitation(det_tmp,psi_ref(1,1,idet),exc,phase,N_int) - if(ispin == jspin)then - hib= phase * (active_int(borb,1) - active_int(borb,2)) - else - hib= phase * (active_int(borb,1)) - endif - if( index_orb_act_mono(idx(jdet),1) == index_orb_act_mono(idx(jdet),5))then - call do_mono_excitation(det_tmp_bis,list_act(borb),list_act(aorb),2,i_ok) - if(i_ok .ne. 1)then - call debug_det(psi_ref(1,1,idet),N_int) - call debug_det(psi_ref(1,1,idx(jdet)),N_int) - print*, aorb, borb - call debug_det(det_tmp,N_int) - stop - endif - else - call do_mono_excitation(det_tmp_bis,list_act(aorb),list_act(borb),2,i_ok) - endif - - if(i_ok .ne. 1)cycle - call get_mono_excitation(det_tmp,det_tmp_bis,exc,phase,N_int) - ! < det_tmp | H | det_tmp_bis > = F_{aorb,borb} - hab = fock_operator_local(aorb,borb,2) * phase - call get_double_excitation(det_tmp_bis,psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if(ispin == jspin)then - hja= phase * (active_int(borb,1) - active_int(borb,2)) - else - hja= phase * (active_int(borb,1)) - endif - do istate = 1, N_states - delta_e_ab(istate) = delta_e(aorb,jspin,istate) + one_anhil_one_creat(borb,aorb,1,1,istate) - matrix_1h2p(idx(jdet),idet,istate) = matrix_1h2p(idx(jdet),idet,istate) + & - hib / delta_e(aorb,jspin,istate) * hab / delta_e_ab(istate) * hja - ! < det_tmp | H | Idet > / delta_E (Idet --> det_tmp ) - ! < det_tmp | H | det_tmp_bis > / delta_E (Idet --> det_tmp --> det_tmp_bis) - ! < det_tmp_bis | H | Jdet > - enddo !! istate - enddo !! ispin - - - endif !! en of test if jdet is a single or a double excitation of type K_ab - - else !! jdet is idet - ! diagonal part of the dressing : interaction of | Idet > with all the perturbers generated by the excitations - ! - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{vorb,kspin} a_{aorb,kspin} a_{iorb,ispin} | Idet > - do ispin = 1, 2 - do kspin = 1, 2 - do a = 1, n_act_orb ! First active - if( perturb_dets_phase(a,kspin,ispin) .le. -10.d0)cycle - if(ispin == kspin .and. vorb.le.rorb)cycle ! condition not to double count - contrib_hij = perturb_dets_hij(a,kspin,ispin) * perturb_dets_hij(a,kspin,ispin) - do istate = 1, N_states -! matrix_1h2p(idet,idet,istate) += contrib_hij * delta_e(a,kspin,istate) -! perturb_dets_hpsi0(a,kspin,ispin,istate) += psi_coef(idet,istate) * perturb_dets_hij(a,kspin,ispin) -! coef_perturb_from_idet(a,kspin,ispin,istate,1) += psi_coef(idet,istate) & -! * perturb_dets_hij(a,kspin,ispin) * delta_e(a,kspin,istate) - enddo - enddo - enddo - enddo - - endif - - enddo !! jdet - - - enddo - enddo - enddo - enddo - - - - - -end - diff --git a/src/mrpt_utils/psi_active_prov.irp.f b/src/mrpt_utils/psi_active_prov.irp.f deleted file mode 100644 index bfc2d9b0..00000000 --- a/src/mrpt_utils/psi_active_prov.irp.f +++ /dev/null @@ -1,579 +0,0 @@ - - use bitmasks -BEGIN_PROVIDER [integer(bit_kind), psi_active, (N_int,2,psi_det_size)] - BEGIN_DOC -! active part of psi - END_DOC - implicit none - use bitmasks - integer :: i,j,k,l - provide cas_bitmask -!print*, 'psi_active ' - do i = 1, N_det - do j = 1, N_int - psi_active(j,1,i) = iand(psi_ref(j,1,i),cas_bitmask(j,1,1)) - psi_active(j,2,i) = iand(psi_ref(j,2,i),cas_bitmask(j,1,1)) - enddo - enddo -END_PROVIDER - - -subroutine give_holes_and_particles_in_active_space(det_1,det_2,n_holes_spin,n_particles_spin,n_holes,n_particles,& - holes_active_list,particles_active_list) - implicit none - use bitmasks - integer(bit_kind),intent(in) :: det_1(N_int,2) - integer(bit_kind),intent(in ) :: det_2(N_int,2) - integer, intent(out) :: n_holes_spin(2),n_particles_spin(2) - integer, intent(out) :: n_holes,n_particles - integer, intent(out) :: holes_active_list(2 * n_act_orb,2) - integer, intent(out) :: particles_active_list(2 * n_act_orb,2) - integer :: i - integer(bit_kind) :: holes(N_int,2) - integer(bit_kind) :: particles(N_int,2) - integer(bit_kind) :: det_tmp_2(N_int,2),det_tmp_1(N_int,2) - BEGIN_DOC -! returns the holes and particles operators WITHIN THE ACTIVE SPACE -! that connect det_1 and det_2. By definition, the holes/particles -! are such that one starts from det_1 and goes to det_2 -! -! n_holes is the total number of holes -! n_particles is the total number of particles -! n_holes_spin is the number of number of holes per spin (1=alpha, 2=beta) -! n_particles_spin is the number of number of particles per spin (1=alpha, 2=beta) -! holes_active_list is the index of the holes per spin, that ranges from 1 to n_act_orb -! particles_active_list is the index of the particles per spin, that ranges from 1 to n_act_orb - END_DOC - - call give_active_part_determinant(det_1,det_tmp_1) - call give_active_part_determinant(det_2,det_tmp_2) - do i = 1, N_int - holes(i,1) = iand(det_tmp_1(i,1),xor(det_tmp_1(i,1),det_tmp_2(i,1))) - holes(i,2) = iand(det_tmp_1(i,2),xor(det_tmp_1(i,2),det_tmp_2(i,2))) - particles(i,1) = iand(det_tmp_2(i,1),xor(det_tmp_1(i,1),det_tmp_2(i,1))) - particles(i,2) = iand(det_tmp_2(i,2),xor(det_tmp_1(i,2),det_tmp_2(i,2))) - enddo - - integer :: holes_list(N_int*bit_kind_size,2) - holes_list = 0 - call bitstring_to_list(holes(1,1), holes_list(1,1), n_holes_spin(1), N_int) - call bitstring_to_list(holes(1,2), holes_list(1,2), n_holes_spin(2), N_int) - - n_holes = 0 - do i = 1, n_holes_spin(1) - n_holes +=1 - holes_active_list(i,1) = list_act_reverse(holes_list(i,1)) - enddo - do i = 1, n_holes_spin(2) - n_holes +=1 - holes_active_list(i,2) = list_act_reverse(holes_list(i,2)) - enddo - - - integer :: particles_list(N_int*bit_kind_size,2) - particles_list = 0 - call bitstring_to_list(particles(1,1), particles_list(1,1), n_particles_spin(1), N_int) - call bitstring_to_list(particles(1,2), particles_list(1,2), n_particles_spin(2), N_int) - n_particles = 0 - do i = 1, n_particles_spin(1) - n_particles += 1 - particles_active_list(i,1) = list_act_reverse(particles_list(i,1)) - enddo - do i = 1, n_particles_spin(2) - n_particles += 1 - particles_active_list(i,2) = list_act_reverse(particles_list(i,2)) - enddo - -end - -subroutine give_holes_in_inactive_space(det_1,n_holes_spin,n_holes,holes_list) - BEGIN_DOC -! returns the holes operators WITHIN THE INACTIVE SPACE -! that has lead to det_1. -! -! n_holes is the total number of holes -! n_holes_spin is the number of number of holes per spin (1=alpha, 2=beta) -! holes_inactive_list is the index of the holes per spin, that ranges from 1 to mo_tot_num - END_DOC - implicit none - use bitmasks - integer(bit_kind),intent(in) :: det_1(N_int,2) - integer, intent(out) :: n_holes_spin(2) - integer, intent(out) :: n_holes - integer, intent(out) :: holes_list(N_int*bit_kind_size,2) - integer :: i - integer(bit_kind) :: holes(N_int,2) - integer(bit_kind) :: det_tmp_1(N_int,2) - - call give_core_inactive_part_determinant(det_1,det_tmp_1) - - do i = 1, N_int - holes(i,1) = iand(reunion_of_core_inact_bitmask(i,1),xor(det_tmp_1(i,1),reunion_of_core_inact_bitmask(i,1))) - holes(i,2) = iand(reunion_of_core_inact_bitmask(i,2),xor(det_tmp_1(i,2),reunion_of_core_inact_bitmask(i,2))) - enddo - holes_list = 0 - call bitstring_to_list(holes(1,1), holes_list(1,1), n_holes_spin(1), N_int) - call bitstring_to_list(holes(1,2), holes_list(1,2), n_holes_spin(2), N_int) - n_holes = n_holes_spin(1) + n_holes_spin(2) - -end - -subroutine give_particles_in_virt_space(det_1,n_particles_spin,n_particles,particles_list) - BEGIN_DOC -! returns the holes operators WITHIN THE VIRTUAL SPACE -! that has lead to det_1. -! -! n_particles is the total number of particles -! n_particles_spin is the number of number of particles per spin (1=alpha, 2=beta) -! particles_inactive_list is the index of the particles per spin, that ranges from 1 to mo_tot_num - END_DOC - implicit none - use bitmasks - integer(bit_kind),intent(in) :: det_1(N_int,2) - integer, intent(out) :: n_particles_spin(2) - integer, intent(out) :: n_particles - integer, intent(out) :: particles_list(N_int*bit_kind_size,2) - integer :: i - integer(bit_kind) :: det_tmp_1(N_int,2) - integer(bit_kind) :: particles(N_int,2) - - call give_virt_part_determinant(det_1,det_tmp_1) - - do i = 1, N_int - particles(i,1) = iand(virt_bitmask(i,1),det_tmp_1(i,1)) - particles(i,2) = iand(virt_bitmask(i,2),det_tmp_1(i,2)) - enddo - - particles_list = 0 - call bitstring_to_list(particles(1,1), particles_list(1,1), n_particles_spin(1), N_int) - call bitstring_to_list(particles(1,2), particles_list(1,2), n_particles_spin(2), N_int) - n_particles = n_particles_spin(1) + n_particles_spin(2) - - -end - -subroutine get_delta_e_dyall(det_1,det_2,delta_e_final) - BEGIN_DOC - ! routine that returns the delta_e with the Moller Plesset and Dyall operators - ! - ! with det_1 being a determinant from the cas, and det_2 being a perturber - ! - ! Delta_e(det_1,det_2) = sum (hole) epsilon(hole) + sum(part) espilon(part) + delta_e(act) - ! - ! where hole is necessary in the inactive, part necessary in the virtuals - ! - ! and delta_e(act) is obtained from the contracted application of the excitation - ! - ! operator in the active space that lead from det_1 to det_2 - END_DOC - implicit none - use bitmasks - double precision, intent(out) :: delta_e_final(N_states) - integer(bit_kind), intent(in) :: det_1(N_int,2),det_2(N_int,2) - integer :: i,j,k,l - integer :: i_state - - integer :: n_holes_spin(2) - integer :: n_holes - integer :: holes_list(N_int*bit_kind_size,2) - - - double precision :: delta_e_inactive(N_states) - integer :: i_hole_inact - - call get_excitation_degree(det_1,det_2,degree,N_int) - if(degree>2)then - delta_e_final = -1.d+10 - return - endif - - call give_holes_in_inactive_space(det_2,n_holes_spin,n_holes,holes_list) - delta_e_inactive = 0.d0 - do i = 1, n_holes_spin(1) - i_hole_inact = holes_list(i,1) - do i_state = 1, N_states - delta_e_inactive += fock_core_inactive_total_spin_trace(i_hole_inact,i_state) - enddo - enddo - - do i = 1, n_holes_spin(2) - i_hole_inact = holes_list(i,2) - do i_state = 1, N_states - delta_e_inactive(i_state) += fock_core_inactive_total_spin_trace(i_hole_inact,i_state) - enddo - enddo - - double precision :: delta_e_virt(N_states) - integer :: i_part_virt - integer :: n_particles_spin(2) - integer :: n_particles - integer :: particles_list(N_int*bit_kind_size,2) - - call give_particles_in_virt_space(det_2,n_particles_spin,n_particles,particles_list) - delta_e_virt = 0.d0 - do i = 1, n_particles_spin(1) - i_part_virt = particles_list(i,1) - do i_state = 1, N_states - delta_e_virt += fock_virt_total_spin_trace(i_part_virt,i_state) - enddo - enddo - - do i = 1, n_particles_spin(2) - i_part_virt = particles_list(i,2) - do i_state = 1, N_states - delta_e_virt += fock_virt_total_spin_trace(i_part_virt,i_state) - enddo - enddo - - - integer :: n_holes_spin_act(2),n_particles_spin_act(2) - integer :: n_holes_act,n_particles_act - integer :: holes_active_list(2*n_act_orb,2) - integer :: holes_active_list_spin_traced(4*n_act_orb) - integer :: particles_active_list(2*n_act_orb,2) - integer :: particles_active_list_spin_traced(4*n_act_orb) - double precision :: delta_e_act(N_states) - delta_e_act = 0.d0 - call give_holes_and_particles_in_active_space(det_1,det_2,n_holes_spin_act,n_particles_spin_act, & - n_holes_act,n_particles_act,holes_active_list,particles_active_list) - integer :: icount,icountbis - integer :: hole_list_practical(2,elec_num_tab(1)+elec_num_tab(2)), particle_list_practical(2,elec_num_tab(1)+elec_num_tab(2)) - icount = 0 - icountbis = 0 - do i = 1, n_holes_spin_act(1) - icount += 1 - icountbis += 1 - hole_list_practical(1,icountbis) = 1 - hole_list_practical(2,icountbis) = holes_active_list(i,1) - holes_active_list_spin_traced(icount) = holes_active_list(i,1) - enddo - do i = 1, n_holes_spin_act(2) - icount += 1 - icountbis += 1 - hole_list_practical(1,icountbis) = 2 - hole_list_practical(2,icountbis) = holes_active_list(i,2) - holes_active_list_spin_traced(icount) = holes_active_list(i,2) - enddo - if(icount .ne. n_holes_act) then - print*,'' - print*, icount, n_holes_act - print * , 'pb in holes_active_list_spin_traced !!' - stop - endif - - icount = 0 - icountbis = 0 - do i = 1, n_particles_spin_act(1) - icount += 1 - icountbis += 1 - particle_list_practical(1,icountbis) = 1 - particle_list_practical(2,icountbis) = particles_active_list(i,1) - particles_active_list_spin_traced(icount) = particles_active_list(i,1) - enddo - do i = 1, n_particles_spin_act(2) - icount += 1 - icountbis += 1 - particle_list_practical(1,icountbis) = 2 - particle_list_practical(2,icountbis) = particles_active_list(i,2) - particles_active_list_spin_traced(icount) = particles_active_list(i,2) - enddo - if(icount .ne. n_particles_act) then - print*, icount, n_particles_act - print * , 'pb in particles_active_list_spin_traced !!' - stop - endif - - - integer :: i_hole_act, j_hole_act, k_hole_act - integer :: i_particle_act, j_particle_act, k_particle_act - - - integer :: ispin,jspin,kspin - if (n_holes_act == 0 .and. n_particles_act == 1) then - ispin = particle_list_practical(1,1) - i_particle_act = particle_list_practical(2,1) - do i_state = 1, N_states - delta_e_act(i_state) += one_creat(i_particle_act,ispin,i_state) - enddo - - else if (n_holes_act == 1 .and. n_particles_act == 0) then - ispin = hole_list_practical(1,1) - i_hole_act = hole_list_practical(2,1) - do i_state = 1, N_states - delta_e_act(i_state) += one_anhil(i_hole_act , ispin,i_state) - enddo - - else if (n_holes_act == 1 .and. n_particles_act == 1) then - ! first hole - ispin = hole_list_practical(1,1) - i_hole_act = hole_list_practical(2,1) - ! first particle - jspin = particle_list_practical(1,1) - i_particle_act = particle_list_practical(2,1) - do i_state = 1, N_states - delta_e_act(i_state) += one_anhil_one_creat(i_particle_act,i_hole_act,jspin,ispin,i_state) - enddo - - else if (n_holes_act == 2 .and. n_particles_act == 0) then - ispin = hole_list_practical(1,1) - i_hole_act = hole_list_practical(2,1) - jspin = hole_list_practical(1,2) - j_hole_act = hole_list_practical(2,2) - do i_state = 1, N_states - delta_e_act(i_state) += two_anhil(i_hole_act,j_hole_act,ispin,jspin,i_state) - enddo - - else if (n_holes_act == 0 .and. n_particles_act == 2) then - ispin = particle_list_practical(1,1) - i_particle_act = particle_list_practical(2,1) - jspin = particle_list_practical(1,2) - j_particle_act = particle_list_practical(2,2) - do i_state = 1, N_states - delta_e_act(i_state) += two_creat(i_particle_act,j_particle_act,ispin,jspin,i_state) - enddo - - else if (n_holes_act == 2 .and. n_particles_act == 1) then - ! first hole - ispin = hole_list_practical(1,1) - i_hole_act = hole_list_practical(2,1) - ! second hole - jspin = hole_list_practical(1,2) - j_hole_act = hole_list_practical(2,2) - ! first particle - kspin = particle_list_practical(1,1) - i_particle_act = particle_list_practical(2,1) - do i_state = 1, N_states - delta_e_act(i_state) += two_anhil_one_creat(i_particle_act,i_hole_act,j_hole_act,kspin,ispin,jspin,i_state) - enddo - - else if (n_holes_act == 1 .and. n_particles_act == 2) then - ! first hole - ispin = hole_list_practical(1,1) - i_hole_act = hole_list_practical(2,1) - ! first particle - jspin = particle_list_practical(1,1) - i_particle_act = particle_list_practical(2,1) - ! second particle - kspin = particle_list_practical(1,2) - j_particle_act = particle_list_practical(2,2) - - do i_state = 1, N_states - delta_e_act(i_state) += two_creat_one_anhil(i_particle_act,j_particle_act,i_hole_act,jspin,kspin,ispin,i_state) - enddo - - else if (n_holes_act == 3 .and. n_particles_act == 0) then - ! first hole - ispin = hole_list_practical(1,1) - i_hole_act = hole_list_practical(2,1) - ! second hole - jspin = hole_list_practical(1,2) - j_hole_act = hole_list_practical(2,2) - ! third hole - kspin = hole_list_practical(1,3) - k_hole_act = hole_list_practical(2,3) - do i_state = 1, N_states - delta_e_act(i_state) += three_anhil(i_hole_act,j_hole_act,k_hole_act,ispin,jspin,kspin,i_state) - enddo - - else if (n_holes_act == 0 .and. n_particles_act == 3) then - ! first particle - ispin = particle_list_practical(1,1) - i_particle_act = particle_list_practical(2,1) - ! second particle - jspin = particle_list_practical(1,2) - j_particle_act = particle_list_practical(2,2) - ! second particle - kspin = particle_list_practical(1,3) - k_particle_act = particle_list_practical(2,3) - do i_state = 1, N_states - delta_e_act(i_state) += three_creat(i_particle_act,j_particle_act,k_particle_act,ispin,jspin,kspin,i_state) - enddo - - else if (n_holes_act .eq. 0 .and. n_particles_act .eq.0)then - integer :: degree - integer(bit_kind) :: det_1_active(N_int,2) - integer :: h1,h2,p1,p2,s1,s2 - integer :: exc(0:2,2,2) - integer :: i_hole, i_part - double precision :: phase - call get_excitation_degree(det_1,det_2,degree,N_int) - if(degree == 1)then - call get_excitation(det_1,det_2,exc,degree,phase,N_int) - call decode_exc(exc,degree,h1,p1,h2,p2,s1,s2) - i_hole = list_inact_reverse(h1) - i_part = list_virt_reverse(p1) - do i_state = 1, N_states - delta_e_act(i_state) += one_anhil_one_creat_inact_virt(i_hole,i_part,i_state) - enddo - endif - else if (n_holes_act .ge. 2 .and. n_particles_act .ge.2) then - delta_e_act = -10000000.d0 - endif - -!print*, 'one_anhil_spin_trace' -!print*, one_anhil_spin_trace(1), one_anhil_spin_trace(2) - - - do i_state = 1, n_states - delta_e_final(i_state) = delta_e_act(i_state) + delta_e_inactive(i_state) - delta_e_virt(i_state) - enddo -!write(*,'(100(f16.10,X))'), delta_e_final(1) , delta_e_act(1) , delta_e_inactive(1) , delta_e_virt(1) - -end - - - -subroutine get_delta_e_dyall_general_mp(det_1,det_2,delta_e_final) - BEGIN_DOC - ! routine that returns the delta_e with the Moller Plesset and Dyall operators - ! - ! with det_1 being a determinant from the cas, and det_2 being a perturber - ! - ! Delta_e(det_1,det_2) = sum (hole) epsilon(hole) + sum(part) espilon(part) + delta_e(act) - ! - ! where hole is necessary in the inactive, part necessary in the virtuals - ! - ! and delta_e(act) is obtained as the sum of energies of excitations a la MP - ! - END_DOC - implicit none - use bitmasks - double precision, intent(out) :: delta_e_final(N_states) - integer(bit_kind), intent(in) :: det_1(N_int,2),det_2(N_int,2) - integer :: i,j,k,l - integer :: i_state - - integer :: n_holes_spin(2) - integer :: n_holes - integer :: holes_list(N_int*bit_kind_size,2) - - - double precision :: delta_e_inactive(N_states) - integer :: i_hole_inact - - - call give_holes_in_inactive_space(det_2,n_holes_spin,n_holes,holes_list) - delta_e_inactive = 0.d0 - do i = 1, n_holes_spin(1) - i_hole_inact = holes_list(i,1) - do i_state = 1, N_states - delta_e_inactive += fock_core_inactive_total_spin_trace(i_hole_inact,i_state) - enddo - enddo - - do i = 1, n_holes_spin(2) - i_hole_inact = holes_list(i,2) - do i_state = 1, N_states - delta_e_inactive(i_state) += fock_core_inactive_total_spin_trace(i_hole_inact,i_state) - enddo - enddo - - double precision :: delta_e_virt(N_states) - integer :: i_part_virt - integer :: n_particles_spin(2) - integer :: n_particles - integer :: particles_list(N_int*bit_kind_size,2) - - call give_particles_in_virt_space(det_2,n_particles_spin,n_particles,particles_list) - delta_e_virt = 0.d0 - do i = 1, n_particles_spin(1) - i_part_virt = particles_list(i,1) - do i_state = 1, N_states - delta_e_virt += fock_virt_total_spin_trace(i_part_virt,i_state) - enddo - enddo - - do i = 1, n_particles_spin(2) - i_part_virt = particles_list(i,2) - do i_state = 1, N_states - delta_e_virt += fock_virt_total_spin_trace(i_part_virt,i_state) - enddo - enddo - - - integer :: n_holes_spin_act(2),n_particles_spin_act(2) - integer :: n_holes_act,n_particles_act - integer :: holes_active_list(2*n_act_orb,2) - integer :: holes_active_list_spin_traced(4*n_act_orb) - integer :: particles_active_list(2*n_act_orb,2) - integer :: particles_active_list_spin_traced(4*n_act_orb) - double precision :: delta_e_act(N_states) - delta_e_act = 0.d0 - call give_holes_and_particles_in_active_space(det_1,det_2,n_holes_spin_act,n_particles_spin_act, & - n_holes_act,n_particles_act,holes_active_list,particles_active_list) - integer :: icount,icountbis - integer :: hole_list_practical(2,elec_num_tab(1)+elec_num_tab(2)), particle_list_practical(2,elec_num_tab(1)+elec_num_tab(2)) - icount = 0 - icountbis = 0 - do i = 1, n_holes_spin_act(1) - icount += 1 - icountbis += 1 - hole_list_practical(1,icountbis) = 1 ! spin - hole_list_practical(2,icountbis) = holes_active_list(i,1) ! index of active orb - holes_active_list_spin_traced(icount) = holes_active_list(i,1) - enddo - do i = 1, n_holes_spin_act(2) - icount += 1 - icountbis += 1 - hole_list_practical(1,icountbis) = 2 - hole_list_practical(2,icountbis) = holes_active_list(i,2) - holes_active_list_spin_traced(icount) = holes_active_list(i,2) - enddo - if(icount .ne. n_holes_act) then - print*,'' - print*, icount, n_holes_act - print * , 'pb in holes_active_list_spin_traced !!' - stop - endif - - icount = 0 - icountbis = 0 - do i = 1, n_particles_spin_act(1) - icount += 1 - icountbis += 1 - particle_list_practical(1,icountbis) = 1 - particle_list_practical(2,icountbis) = particles_active_list(i,1) - particles_active_list_spin_traced(icount) = particles_active_list(i,1) - enddo - do i = 1, n_particles_spin_act(2) - icount += 1 - icountbis += 1 - particle_list_practical(1,icountbis) = 2 - particle_list_practical(2,icountbis) = particles_active_list(i,2) - particles_active_list_spin_traced(icount) = particles_active_list(i,2) - enddo - if(icount .ne. n_particles_act) then - print*, icount, n_particles_act - print * , 'pb in particles_active_list_spin_traced !!' - stop - endif - - - integer :: i_hole_act, j_hole_act, k_hole_act - integer :: i_particle_act, j_particle_act, k_particle_act - - - integer :: ispin,jspin,kspin - - do i = 1, n_holes_act - ispin = hole_list_practical(1,i) - i_hole_act = hole_list_practical(2,i) - do i_state = 1, N_states - delta_e_act(i_state) += one_anhil(i_hole_act , ispin,i_state) - enddo - enddo - - do i = 1, n_particles_act - ispin = particle_list_practical(1,i) - i_particle_act = particle_list_practical(2,i) - do i_state = 1, N_states - delta_e_act(i_state) += one_creat(i_particle_act, ispin,i_state) - enddo - enddo - - do i_state = 1, n_states - delta_e_final(i_state) = delta_e_act(i_state) + delta_e_inactive(i_state) - delta_e_virt(i_state) - enddo - -end - diff --git a/src/mrpt_utils/second_order_new.irp.f b/src/mrpt_utils/second_order_new.irp.f deleted file mode 100644 index 43c5f3d4..00000000 --- a/src/mrpt_utils/second_order_new.irp.f +++ /dev/null @@ -1,757 +0,0 @@ - -subroutine give_1h2p_new(matrix_1h2p) - use bitmasks - implicit none - double precision , intent(inout) :: matrix_1h2p(N_det,N_det,*) - integer :: i,v,r,a,b,c - integer :: iorb, vorb, rorb, aorb, borb,corb - integer :: ispin,jspin - integer :: idet,jdet - integer(bit_kind) :: perturb_dets(N_int,2,n_act_orb,2,2) - double precision :: perturb_dets_phase(n_act_orb,2,2) - double precision :: perturb_dets_hij(n_act_orb,2,2) - double precision :: perturb_dets_hpsi0(n_act_orb,2,2,N_states) - logical :: already_generated(n_act_orb,2,2) - integer :: inint - integer :: elec_num_tab_local(2),acu_elec - integer(bit_kind) :: det_tmp(N_int,2) - integer(bit_kind) :: det_tmp_j(N_int,2) - integer :: exc(0:2,2,2) - integer :: accu_elec - double precision :: get_mo_bielec_integral - double precision :: active_int(n_act_orb,2) - double precision :: hij,phase - double precision :: accu_contrib(N_states) - integer :: degree(N_det) - integer :: idx(0:N_det) - double precision :: delta_e(n_act_orb,2,N_states) - double precision :: delta_e_inv(n_act_orb,2,N_states) - double precision :: delta_e_inactive_virt(N_states) - integer :: istate - integer :: index_orb_act_mono(N_det,6) - integer :: kspin - double precision :: delta_e_ja(N_states) - double precision :: hja - double precision :: contrib_hij - double precision :: fock_operator_local(n_act_orb,n_act_orb,2) - double precision :: hij_test - integer ::i_ok - integer(bit_kind) :: det_tmp_bis(N_int,2) - double precision :: hib , hab - double precision :: delta_e_ab(N_states) - double precision :: hib_test,hja_test,hab_test - integer :: i_hole,i_part - double precision :: hia,hjb - integer :: other_spin(2) - other_spin(1) = 2 - other_spin(2) = 1 - - accu_contrib = 0.d0 -!matrix_1h2p = 0.d0 - - elec_num_tab_local = 0 - do inint = 1, N_int - elec_num_tab_local(1) += popcnt(psi_ref(inint,1,1)) - elec_num_tab_local(2) += popcnt(psi_ref(inint,2,1)) - enddo - do i = 1, n_inact_orb ! First inactive - iorb = list_inact(i) - do v = 1, n_virt_orb ! First virtual - vorb = list_virt(v) - do r = 1, n_virt_orb ! Second virtual - rorb = list_virt(r) - ! take all the integral you will need for i,j,r fixed - do a = 1, n_act_orb - aorb = list_act(a) - active_int(a,1) = get_mo_bielec_integral(iorb,aorb,rorb,vorb,mo_integrals_map) ! direct - active_int(a,2) = get_mo_bielec_integral(iorb,aorb,vorb,rorb,mo_integrals_map) ! exchange - perturb_dets_phase(a,1,1) = -1000.d0 - perturb_dets_phase(a,1,2) = -1000.d0 - perturb_dets_phase(a,2,2) = -1000.d0 - perturb_dets_phase(a,2,1) = -1000.d0 - enddo - - - do istate = 1, N_states - delta_e_inactive_virt(istate) = & - - fock_virt_total_spin_trace(rorb,istate) & - - fock_virt_total_spin_trace(vorb,istate) & - + fock_core_inactive_total_spin_trace(iorb,istate) - enddo - do idet = 1, N_det - call get_excitation_degree_vector_mono_or_exchange(psi_ref,psi_ref(1,1,idet),degree,N_int,N_det,idx) - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Precomputation of matrix elements - do ispin = 1, 2 ! spin of the couple a-a^dagger (iorb,rorb) - do jspin = 1, 2 ! spin of the couple a-a^dagger (aorb,vorb) - do a = 1, n_act_orb ! First active - aorb = list_act(a) - do istate = 1, N_states - perturb_dets_hpsi0(a,jspin,ispin,istate) = 0.d0 - enddo - if(ispin == jspin .and. vorb.le.rorb)cycle ! condition not to double count - do inint = 1, N_int - det_tmp(inint,1) = psi_ref(inint,1,idet) - det_tmp(inint,2) = psi_ref(inint,2,idet) - enddo - ! Do the excitation inactive -- > virtual - call clear_bit_to_integer(iorb,det_tmp(1,ispin),N_int) ! hole in "iorb" of spin Ispin - call set_bit_to_integer(rorb,det_tmp(1,ispin),N_int) ! particle in "rorb" of spin Ispin - - ! Do the excitation active -- > virtual - call clear_bit_to_integer(aorb,det_tmp(1,jspin),N_int) ! hole in "aorb" of spin Jspin - call set_bit_to_integer(vorb,det_tmp(1,jspin),N_int) ! particle in "vorb" of spin Jspin - - ! Check if the excitation is possible or not on psi_ref(idet) - accu_elec= 0 - do inint = 1, N_int - accu_elec+= popcnt(det_tmp(inint,jspin)) - enddo - if(accu_elec .ne. elec_num_tab_local(jspin))then - perturb_dets_phase(a,jspin,ispin) = -1000.0d0 - perturb_dets_hij(a,jspin,ispin) = 0.d0 - cycle - endif - do inint = 1, N_int - perturb_dets(inint,1,a,jspin,ispin) = det_tmp(inint,1) - perturb_dets(inint,2,a,jspin,ispin) = det_tmp(inint,2) - enddo - - call get_double_excitation(psi_ref(1,1,idet),det_tmp,exc,phase,N_int) - perturb_dets_phase(a,jspin,ispin) = phase - - do istate = 1, N_states - delta_e(a,jspin,istate) = one_anhil(a,jspin,istate) + delta_e_inactive_virt(istate) - delta_e_inv(a,jspin,istate) = 1.d0 / delta_e(a,jspin,istate) - enddo - if(ispin == jspin)then - perturb_dets_hij(a,jspin,ispin) = phase * (active_int(a,1) - active_int(a,2) ) - else - perturb_dets_hij(a,jspin,ispin) = phase * active_int(a,1) - endif - enddo - enddo - enddo - -!!!!!!!!!!!!!!!!!!!!!!!!!!! determination of the connections between I and the other J determinants mono excited in the CAS -!!!!!!!!!!!!!!!!!!!!!!!!!!!! the determinants I and J must be connected by the following operator -!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!!!!!!!!!!!!!!!!!!!!!!!!!!!! - do jdet = 1, idx(0) - if(degree(jdet)==1)then - call get_mono_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if (exc(0,1,1) == 1) then - ! Mono alpha - i_hole = list_act_reverse(exc(1,1,1)) !!! a_a - i_part = list_act_reverse(exc(1,2,1)) !!! a^{\dagger}_{b} - kspin = 1 !!! kspin - index_orb_act_mono(idx(jdet),1) = i_hole - index_orb_act_mono(idx(jdet),2) = i_part - index_orb_act_mono(idx(jdet),3) = kspin - call i_H_j_dyall(psi_active(1,1,idet),psi_active(1,1,idx(jdet)),N_int,hij) - fock_operator_local(i_hole,i_part,kspin) = hij * phase ! phase less fock operator - fock_operator_local(i_part,i_hole,kspin) = hij * phase ! phase less fock operator - else - ! Mono beta - i_hole = list_act_reverse(exc(1,1,2)) !!! a_a - i_part = list_act_reverse(exc(1,2,2)) !!! a^{\dagger}_{b} - kspin = 2 !!! kspin - index_orb_act_mono(idx(jdet),1) = i_hole - index_orb_act_mono(idx(jdet),2) = i_part - index_orb_act_mono(idx(jdet),3) = kspin - call i_H_j_dyall(psi_active(1,1,idet),psi_active(1,1,idx(jdet)),N_int,hij) - fock_operator_local(i_hole,i_part,kspin) = hij * phase ! phase less fock operator - fock_operator_local(i_part,i_hole,kspin) = hij * phase ! phase less fock operator - endif - else if(degree(jdet)==2)then - call get_double_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - ! Mono alpha - index_orb_act_mono(idx(jdet),1) = list_act_reverse(exc(1,1,1)) !!! a_a ALPHA - index_orb_act_mono(idx(jdet),2) = list_act_reverse(exc(1,2,1)) !!! a^{\dagger}_{b} ALPHA - index_orb_act_mono(idx(jdet),3) = 1 - ! Mono beta - index_orb_act_mono(idx(jdet),4) = list_act_reverse(exc(1,1,2)) !!! a_a BETA - index_orb_act_mono(idx(jdet),5) = list_act_reverse(exc(1,2,2)) !!! a^{\dagger}_{b} BETA - index_orb_act_mono(idx(jdet),6) = 2 - endif - enddo - - - - do jdet = 1, idx(0) -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! CASE OF THE MONO EXCITATIONS - if(degree(jdet) == 1)then - ! two determinants | Idet > and | Jdet > which are connected throw a mono excitation operator - ! are connected by the presence of the perturbers determinants |det_tmp> - aorb = index_orb_act_mono(idx(jdet),1) ! a_{aorb} - borb = index_orb_act_mono(idx(jdet),2) ! a^{\dagger}_{borb} - kspin = index_orb_act_mono(idx(jdet),3) ! spin of the excitation - ! the determinants Idet and Jdet interact throw the following operator - ! | Jdet > = a^{\dagger}_{borb,kspin} a_{aorb, kspin} | Idet > - - accu_contrib = 0.d0 - do ispin = 1, 2 ! you loop on all possible spin for the excitation - ! a^{\dagger}_r a_{i} (ispin) - -! if(ispin == kspin .and. vorb.le.rorb)cycle ! condition not to double count - logical :: cycle_same_spin_first_order - cycle_same_spin_first_order = .False. - if(ispin == kspin .and. vorb.le.rorb)then - cycle_same_spin_first_order = .True. - endif -! if(ispin .ne. kspin .and. cycle_same_spin_first_order .eqv. .False. )then ! condition not to double count - if(cycle_same_spin_first_order .eqv. .False. )then ! condition not to double count - - ! FIRST ORDER CONTRIBUTION - - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{vorb,kspin} a_{aorb,kspin} a_{iorb,ispin} | Idet > - if(perturb_dets_phase(aorb,kspin,ispin) .le. -10.d0)cycle - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,aorb,kspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,aorb,kspin,ispin) - enddo - call get_double_excitation(psi_ref(1,1,idet),det_tmp,exc,phase,N_int) - if(kspin == ispin)then - hia = phase * (active_int(aorb,1) - active_int(aorb,2) ) - else - hia = phase * active_int(aorb,1) - endif - call get_double_excitation(psi_ref(1,1,idx(jdet)),det_tmp,exc,phase,N_int) - if(kspin == ispin)then - hja = phase * (active_int(borb,1) - active_int(borb,2) ) - else - hja = phase * active_int(borb,1) - endif - - contrib_hij = hja * hia - do istate = 1, N_states - accu_contrib(istate) += contrib_hij * delta_e_inv(aorb,kspin,istate) - enddo - endif - !!!! SECOND ORDER CONTRIBTIONS - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{vorb,jspin} a_{corb,jspin} a_{iorb,ispin} | Idet > - do jspin = 1, 2 - logical :: cycle_same_spin_second_order - cycle_same_spin_second_order = .False. - if(ispin == jspin .and. vorb.le.rorb)then - cycle_same_spin_second_order = .True. - endif - if(cycle_same_spin_second_order .eqv. .False.)then - do corb = 1, n_act_orb - if(perturb_dets_phase(corb,jspin,ispin) .le. -10.d0)cycle - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,corb,jspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,corb,jspin,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,corb,jspin,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,corb,jspin,ispin) - enddo - ! | det_tmp_bis > = a^{\dagger}_{borb,kspin} a_{aorb,kspin} a_{iorb,ispin} | Idet > - call do_mono_excitation(det_tmp_bis,list_act(aorb),list_act(borb),kspin,i_ok) - if(i_ok .ne. 1)cycle - call get_mono_excitation(det_tmp,det_tmp_bis,exc,phase,N_int) - hia = perturb_dets_hij(corb,jspin,ispin) - hab = fock_operator_local(aorb,borb,kspin) * phase - - if(dabs(hia).le.1.d-12)cycle - if(dabs(hab).le.1.d-12)cycle - - call get_double_excitation(psi_ref(1,1,idx(jdet)),det_tmp_bis,exc,phase,N_int) - if(jspin == ispin)then - hjb = phase * (active_int(corb,1) - active_int(corb,2) ) - else - hjb = phase * active_int(corb,1) - endif - if(dabs(hjb).le.1.d-12)cycle - do istate = 1, N_states - accu_contrib(istate)+=hia * delta_e_inv(corb,jspin,istate) & ! | Idet > --> | det_tmp > - ! | det_tmp > --> | det_tmp_bis > - *hab / (delta_e(corb,jspin,istate) + one_anhil_one_creat(aorb,borb,kspin,kspin,istate)) & - *hjb - enddo - enddo - endif - enddo - - - - enddo ! ispin - do istate = 1, N_states - matrix_1h2p(idet,idx(jdet),istate) += accu_contrib(istate) - enddo - - else if (degree(jdet) == 2)then - ! CASE OF THE DOUBLE EXCITATIONS, ONLY THIRD ORDER EFFECTS - accu_contrib = 0.d0 - do ispin = 1, 2 ! you loop on all possible spin for the excitation - ! a^{\dagger}_r a_{i} (ispin) - ! if it is standard exchange case, the hole ALPHA == the part. BETA - if (index_orb_act_mono(idx(jdet),1) == index_orb_act_mono(idx(jdet),5))then - aorb = index_orb_act_mono(idx(jdet),1) !! the HOLE of the ALPHA electron - borb = index_orb_act_mono(idx(jdet),4) !! the HOLE of the BETA electron - ! first case :: | det_tmp > == a_{borb,\beta} | Idet > - cycle_same_spin_second_order = .False. - if(ispin == 2 .and. vorb.le.rorb)then - cycle_same_spin_second_order = .True. - endif - if(cycle_same_spin_second_order .eqv. .False.)then ! condition not to double count - if(perturb_dets_phase(borb,2,ispin) .le. -10.d0)cycle - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,borb,2,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,borb,2,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,borb,2,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,borb,2,ispin) - enddo - hia = perturb_dets_hij(borb,2,ispin) - if(dabs(hia).le.1.d-12)cycle - call do_mono_excitation(det_tmp_bis,list_act(aorb),list_act(borb),1,i_ok) - call get_mono_excitation(det_tmp,det_tmp_bis,exc,phase,N_int) - hab = fock_operator_local(aorb,borb,1) * phase - - if(dabs(hab).le.1.d-12)cycle - call get_double_excitation(psi_ref(1,1,idx(jdet)),det_tmp_bis,exc,phase,N_int) - if(ispin == 2)then - hjb = phase * (active_int(aorb,1) - active_int(aorb,2) ) - else if (ispin == 1)then - hjb = phase * active_int(aorb,1) - endif - if(dabs(hjb).le.1.d-12)cycle - do istate = 1, N_states - accu_contrib(istate) += hia * delta_e_inv(borb,2,istate) & ! | Idet > --> | det_tmp > - ! | det_tmp > --> | det_tmp_bis > - * hab / (delta_e(borb,2,istate) + one_anhil_one_creat(aorb,borb,1,1,istate)) & - * hjb - enddo - endif - ! second case :: | det_tmp > == a_{aorb,\alpha} | Idet > - cycle_same_spin_second_order = .False. - if(ispin == 1 .and. vorb.le.rorb)then - cycle_same_spin_second_order = .True. - endif - if(cycle_same_spin_second_order .eqv. .False.)then ! condition not to double count - if(perturb_dets_phase(aorb,1,ispin) .le. -10.d0)cycle - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,aorb,1,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,aorb,1,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,aorb,1,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,aorb,1,ispin) - enddo - hia = perturb_dets_hij(aorb,1,ispin) - if(dabs(hia).le.1.d-12)cycle - call do_mono_excitation(det_tmp_bis,list_act(borb),list_act(aorb),2,i_ok) - call get_mono_excitation(det_tmp,det_tmp_bis,exc,phase,N_int) - hab = fock_operator_local(aorb,borb,2) * phase - - if(dabs(hab).le.1.d-12)cycle - call get_double_excitation(psi_ref(1,1,idx(jdet)),det_tmp_bis,exc,phase,N_int) - if(ispin == 1)then - hjb = phase * (active_int(borb,1) - active_int(borb,2) ) - else if (ispin == 2)then - hjb = phase * active_int(borb,1) - endif - if(dabs(hjb).le.1.d-12)cycle - do istate = 1, N_states - accu_contrib(istate) += hia * delta_e_inv(aorb,1,istate) & ! | Idet > --> | det_tmp > - ! | det_tmp > --> | det_tmp_bis > - * hab / (delta_e(aorb,1,istate) + one_anhil_one_creat(borb,aorb,2,2,istate)) & - * hjb - enddo - endif - - ! if it is a closed shell double excitation, the hole ALPHA == the hole BETA - else if (index_orb_act_mono(idx(jdet),1) == index_orb_act_mono(idx(jdet),4))then - aorb = index_orb_act_mono(idx(jdet),1) !! the HOLE of the ALPHA electron - borb = index_orb_act_mono(idx(jdet),2) !! the PART of the ALPHA electron - ! first case :: | det_tmp > == a_{aorb,\beta} | Idet > - cycle_same_spin_second_order = .False. - if(ispin == 2 .and. vorb.le.rorb)then - cycle_same_spin_second_order = .True. - endif - if(cycle_same_spin_second_order .eqv. .False.)then ! condition not to double count - if(perturb_dets_phase(aorb,2,ispin) .le. -10.d0)cycle - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,aorb,2,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,aorb,2,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,aorb,2,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,aorb,2,ispin) - enddo - hia = perturb_dets_hij(aorb,2,ispin) - if(dabs(hia).le.1.d-12)cycle - call do_mono_excitation(det_tmp_bis,list_act(aorb),list_act(borb),1,i_ok) - call get_mono_excitation(det_tmp,det_tmp_bis,exc,phase,N_int) - hab = fock_operator_local(aorb,borb,1) * phase - - if(dabs(hab).le.1.d-12)cycle - call get_double_excitation(psi_ref(1,1,idx(jdet)),det_tmp_bis,exc,phase,N_int) - if(ispin == 2)then - hjb = phase * (active_int(borb,1) - active_int(borb,2) ) - else if (ispin == 1)then - hjb = phase * active_int(borb,1) - endif - if(dabs(hjb).le.1.d-12)cycle - do istate = 1, N_states - accu_contrib(istate) += hia * delta_e_inv(aorb,2,istate) & ! | Idet > --> | det_tmp > - ! | det_tmp > --> | det_tmp_bis > - * hab / (delta_e(aorb,2,istate) + one_anhil_one_creat(aorb,borb,1,1,istate)) & - * hjb - enddo - endif - - ! second case :: | det_tmp > == a_{aorb,\alpha} | Idet > - cycle_same_spin_second_order = .False. - if(ispin == 1 .and. vorb.le.rorb)then - cycle_same_spin_second_order = .True. - endif - if(cycle_same_spin_second_order .eqv. .False.)then ! condition not to double count - if(perturb_dets_phase(aorb,1,ispin) .le. -10.d0)cycle - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,aorb,1,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,aorb,1,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,aorb,1,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,aorb,1,ispin) - enddo - hia = perturb_dets_hij(aorb,1,ispin) - if(dabs(hia).le.1.d-12)cycle - call do_mono_excitation(det_tmp_bis,list_act(aorb),list_act(borb),2,i_ok) - call get_mono_excitation(det_tmp,det_tmp_bis,exc,phase,N_int) - hab = fock_operator_local(aorb,borb,2) * phase - - if(dabs(hab).le.1.d-12)cycle - call get_double_excitation(psi_ref(1,1,idx(jdet)),det_tmp_bis,exc,phase,N_int) - if(ispin == 1)then - hjb = phase * (active_int(borb,1) - active_int(borb,2) ) - else if (ispin == 2)then - hjb = phase * active_int(borb,1) - endif - if(dabs(hjb).le.1.d-12)cycle - do istate = 1, N_states - accu_contrib(istate) += hia * delta_e_inv(aorb,1,istate) & ! | Idet > --> | det_tmp > - ! | det_tmp > --> | det_tmp_bis > - * hab / (delta_e(aorb,1,istate) + one_anhil_one_creat(aorb,borb,2,2,istate)) & - * hjb - enddo - endif - - - else - ! one should not fall in this case ... - call debug_det(psi_ref(1,1,i),N_int) - call debug_det(psi_ref(1,1,idx(jdet)),N_int) - call get_double_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - call decode_exc(exc,2,h1,p1,h2,p2,s1,s2) - integer :: h1, p1, h2, p2, s1, s2 - print*, h1, p1, h2, p2, s1, s2 - - print*, 'pb !!! it is a double but not an exchange case ....' - stop - endif - enddo ! ispin - do istate = 1, N_states - matrix_1h2p(idet,idx(jdet),istate) += accu_contrib(istate) - enddo - - else if (degree(jdet) == 0)then - ! diagonal part of the dressing : interaction of | Idet > with all the perturbers generated by the excitations - ! - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{vorb,kspin} a_{aorb,kspin} a_{iorb,ispin} | Idet > - accu_contrib = 0.d0 - do ispin = 1, 2 - do kspin = 1, 2 - do a = 1, n_act_orb ! First active - if( perturb_dets_phase(a,kspin,ispin) .le. -10.d0)cycle - if(ispin == kspin .and. vorb.le.rorb)cycle ! condition not to double count - contrib_hij = perturb_dets_hij(a,kspin,ispin) * perturb_dets_hij(a,kspin,ispin) - do istate = 1, N_states - accu_contrib(istate) += contrib_hij * delta_e_inv(a,kspin,istate) - enddo - enddo - enddo - enddo - do istate = 1, N_states - matrix_1h2p(idet,idet,istate) += accu_contrib(istate) - enddo - - endif - enddo !! jdet - - - enddo - enddo - enddo - enddo -end - -subroutine give_2h1p_new(matrix_2h1p) - use bitmasks - implicit none - double precision , intent(inout) :: matrix_2h1p(N_det,N_det,*) - integer :: i,j,r,a,b - integer :: iorb, jorb, rorb, aorb, borb - integer :: ispin,jspin - integer :: idet,jdet - integer(bit_kind) :: perturb_dets(N_int,2,n_act_orb,2,2) - double precision :: perturb_dets_phase(n_act_orb,2,2) - double precision :: perturb_dets_hij(n_act_orb,2,2) - integer :: inint - integer :: elec_num_tab_local(2),acu_elec - integer(bit_kind) :: det_tmp(N_int,2) - integer :: exc(0:2,2,2) - integer :: accu_elec - double precision :: get_mo_bielec_integral - double precision :: active_int(n_act_orb,2) - double precision :: hij,phase - integer :: i_hole,i_part - double precision :: delta_e_inv(n_act_orb,2,N_states) - double precision :: fock_operator_local(n_act_orb,n_act_orb,2) - double precision :: delta_e_inactive_virt(N_states) - integer :: degree(N_det) - integer :: idx(0:N_det) - double precision :: delta_e(n_act_orb,2,N_states) - integer :: istate - integer :: index_orb_act_mono(N_det,3) - integer :: kspin - double precision :: hij_test - double precision :: accu_contrib(N_states) - double precision :: contrib_hij - double precision :: hja - integer :: corb,i_ok - integer(bit_kind) :: det_tmp_bis(N_int,2) - double precision :: hia,hjb,hab -!matrix_2h1p = 0.d0 - - elec_num_tab_local = 0 - do inint = 1, N_int - elec_num_tab_local(1) += popcnt(psi_ref(inint,1,1)) - elec_num_tab_local(2) += popcnt(psi_ref(inint,2,1)) - enddo - do i = 1, n_inact_orb ! First inactive - iorb = list_inact(i) - do j = 1, n_inact_orb ! Second inactive - jorb = list_inact(j) - do r = 1, n_virt_orb ! First virtual - rorb = list_virt(r) - ! take all the integral you will need for i,j,r fixed - do a = 1, n_act_orb - aorb = list_act(a) - active_int(a,1) = get_mo_bielec_integral(iorb,jorb,rorb,aorb,mo_integrals_map) ! direct - active_int(a,2) = get_mo_bielec_integral(iorb,jorb,aorb,rorb,mo_integrals_map) ! exchange - perturb_dets_phase(a,1,1) = -1000.d0 - perturb_dets_phase(a,1,2) = -1000.d0 - perturb_dets_phase(a,2,2) = -1000.d0 - perturb_dets_phase(a,2,1) = -1000.d0 - enddo - - do istate = 1, N_states - delta_e_inactive_virt(istate) = & - - fock_virt_total_spin_trace(rorb,istate) & - + fock_core_inactive_total_spin_trace(iorb,istate) & - + fock_core_inactive_total_spin_trace(jorb,istate) - enddo - - do idet = 1, N_det - call get_excitation_degree_vector_mono(psi_ref,psi_ref(1,1,idet),degree,N_int,N_det,idx) - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Precomputation of matrix elements - do ispin = 1, 2 ! spin of the couple a-a^dagger (i,r) - do jspin = 1, 2 ! spin of the couple z-a^dagger (j,a) - if(ispin == jspin .and. iorb.le.jorb)cycle ! condition not to double count - do a = 1, n_act_orb ! First active - aorb = list_act(a) - do inint = 1, N_int - det_tmp(inint,1) = psi_ref(inint,1,idet) - det_tmp(inint,2) = psi_ref(inint,2,idet) - enddo - ! Do the excitation inactive -- > virtual - call clear_bit_to_integer(iorb,det_tmp(1,ispin),N_int) ! hole in "iorb" of spin Ispin - call set_bit_to_integer(rorb,det_tmp(1,ispin),N_int) ! particle in "rorb" of spin Ispin - - ! Do the excitation inactive -- > active - call clear_bit_to_integer(jorb,det_tmp(1,jspin),N_int) ! hole in "jorb" of spin Jspin - call set_bit_to_integer(aorb,det_tmp(1,jspin),N_int) ! particle in "aorb" of spin Jspin - - ! Check if the excitation is possible or not on psi_ref(idet) - accu_elec= 0 - do inint = 1, N_int - accu_elec+= popcnt(det_tmp(inint,jspin)) - enddo - if(accu_elec .ne. elec_num_tab_local(jspin))then - perturb_dets_phase(a,jspin,ispin) = -1000.0d0 - perturb_dets_hij(a,jspin,ispin) = 0.d0 - cycle - endif - do inint = 1, N_int - perturb_dets(inint,1,a,jspin,ispin) = det_tmp(inint,1) - perturb_dets(inint,2,a,jspin,ispin) = det_tmp(inint,2) - enddo - call get_double_excitation(psi_ref(1,1,idet),det_tmp,exc,phase,N_int) - perturb_dets_phase(a,jspin,ispin) = phase - do istate = 1, N_states - delta_e(a,jspin,istate) = one_creat(a,jspin,istate) + delta_e_inactive_virt(istate) - delta_e_inv(a,jspin,istate) = 1.d0 / delta_e(a,jspin,istate) - enddo - if(ispin == jspin)then - perturb_dets_hij(a,jspin,ispin) = phase * (active_int(a,1) - active_int(a,2) ) - else - perturb_dets_hij(a,jspin,ispin) = phase * active_int(a,1) - endif -!!!!!!!!!!!!!!!!!!!!!1 Computation of the coefficient at first order coming from idet -!!!!!!!!!!!!!!!!!!!!! for the excitation (i,j)(ispin,jspin) ---> (r,a)(ispin,jspin) - enddo - enddo - enddo - -!!!!!!!!!!!!!!!!!!!!!!!!!!! determination of the connections between I and the other J determinants mono excited in the CAS -!!!!!!!!!!!!!!!!!!!!!!!!!!!! the determinants I and J must be connected by the following operator -!!!!!!!!!!!!!!!!!!!!!!!!!!!! - do jdet = 1, idx(0) - if(degree(jdet)==1)then - call get_mono_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if (exc(0,1,1) == 1) then - ! Mono alpha - i_part = list_act_reverse(exc(1,2,1)) ! a^{\dagger}_{aorb} - i_hole = list_act_reverse(exc(1,1,1)) ! a_{borb} - kspin = 1 - index_orb_act_mono(idx(jdet),1) = i_part !!! a^{\dagger}_a - index_orb_act_mono(idx(jdet),2) = i_hole !!! a_{b} - index_orb_act_mono(idx(jdet),3) = 1 - call i_H_j_dyall(psi_active(1,1,idet),psi_active(1,1,idx(jdet)),N_int,hij) - fock_operator_local(i_hole,i_part,kspin) = hij * phase ! phase less fock operator - fock_operator_local(i_part,i_hole,kspin) = hij * phase ! phase less fock operator - else - ! Mono beta - i_part = list_act_reverse(exc(1,2,2)) - i_hole = list_act_reverse(exc(1,1,2)) - kspin = 2 - index_orb_act_mono(idx(jdet),1) = i_part !!! a^{\dagger}_a - index_orb_act_mono(idx(jdet),2) = i_hole !!! a_{b} - index_orb_act_mono(idx(jdet),3) = 2 - call i_H_j_dyall(psi_active(1,1,idet),psi_active(1,1,idx(jdet)),N_int,hij) - fock_operator_local(i_hole,i_part,kspin) = hij * phase ! phase less fock operator - fock_operator_local(i_part,i_hole,kspin) = hij * phase ! phase less fock operator - endif - endif - enddo - - do jdet = 1, idx(0) - ! two determinants | Idet > and | Jdet > which are connected throw a mono excitation operator - ! are connected by the presence of the perturbers determinants |det_tmp> - if(degree(jdet) == 1)then - aorb = index_orb_act_mono(idx(jdet),1) ! a^{\dagger}_{aorb} - borb = index_orb_act_mono(idx(jdet),2) ! a_{borb} - kspin = index_orb_act_mono(idx(jdet),3) ! spin of the excitation - ! the determinants Idet and Jdet interact throw the following operator - ! | Jdet > = a_{borb,kspin} a^{\dagger}_{aorb, kspin} | Idet > - - accu_contrib = 0.d0 - do ispin = 1, 2 ! you loop on all possible spin for the excitation - ! a^{\dagger}_r a_{i} (ispin) -! if(ispin == kspin .and. iorb.le.jorb)cycle ! condition not to double count - logical :: cycle_same_spin_first_order - cycle_same_spin_first_order = .False. - if(ispin == kspin .and. iorb.le.jorb)then - cycle_same_spin_first_order = .True. - endif - if(ispin .ne. kspin .or. cycle_same_spin_first_order .eqv. .False. )then! condition not to double count - - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{aorb,kspin} a_{jorb,kspin} a_{iorb,ispin} | Idet > - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,aorb,kspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,aorb,kspin,ispin) - enddo - ! you determine the interaction between the excited determinant and the other parent | Jdet > - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{borb,kspin} a_{jorb,kspin} a_{iorb,ispin} | Jdet > - ! hja = < det_tmp | H | Jdet > - call get_double_excitation(psi_ref(1,1,idx(jdet)),det_tmp,exc,phase,N_int) - if(kspin == ispin)then - hja = phase * (active_int(borb,1) - active_int(borb,2) ) - else - hja = phase * active_int(borb,1) - endif -!! if(dabs(hja).le.1.d-10)cycle - - - do istate = 1, N_states - accu_contrib(istate) += hja * perturb_dets_hij(aorb,kspin,ispin) * delta_e_inv(aorb,kspin,istate) - enddo - endif - logical :: cycle_same_spin_second_order - !!!! SECOND ORDER CONTRIBUTIONS - !!!! SECOND ORDER CONTRIBTIONS - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{corb,jspin} a_{jorb,jspin} a_{iorb,ispin} | Idet > - do jspin = 1, 2 - cycle_same_spin_second_order = .False. - if(ispin == jspin .and. iorb.le.jorb)then - cycle_same_spin_second_order = .True. - endif - if(ispin .ne. jspin .or. cycle_same_spin_second_order .eqv. .False. )then! condition not to double count - do corb = 1, n_act_orb - if(perturb_dets_phase(corb,jspin,ispin) .le. -10.d0)cycle - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,corb,jspin,ispin) - det_tmp(inint,2) = perturb_dets(inint,2,corb,jspin,ispin) - det_tmp_bis(inint,1) = perturb_dets(inint,1,corb,jspin,ispin) - det_tmp_bis(inint,2) = perturb_dets(inint,2,corb,jspin,ispin) - enddo - ! | det_tmp_bis > = a^{\dagger}_{aorb,kspin} a_{borb,kspin} a_{iorb,kspin} | Idet > - call do_mono_excitation(det_tmp_bis,list_act(borb),list_act(aorb),kspin,i_ok) - if(i_ok .ne. 1)cycle - hia = perturb_dets_hij(corb,jspin,ispin) - if(dabs(hia).le.1.d-10)cycle - call get_mono_excitation(det_tmp,det_tmp_bis,exc,phase,N_int) - hab = fock_operator_local(borb,aorb,kspin) * phase - if(dabs(hab).le.1.d-10)cycle - - call get_double_excitation(psi_ref(1,1,idx(jdet)),det_tmp_bis,exc,phase,N_int) - if(jspin == ispin)then - hjb = phase * (active_int(corb,1) - active_int(corb,2) ) - else - hjb = phase * active_int(corb,1) - endif - if(dabs(hjb).le.1.d-10)cycle - do istate = 1, N_states - accu_contrib(istate)+=hia * delta_e_inv(corb,jspin,istate) & ! | Idet > --> | det_tmp > - ! | det_tmp > --> | det_tmp_bis > - *hab / (delta_e(corb,jspin,istate) + one_anhil_one_creat(borb,aorb,kspin,kspin,istate)) & - *hjb - enddo - enddo ! jspin - endif - enddo - enddo ! ispin - do istate = 1, N_states - matrix_2h1p(idx(jdet),idet,istate) += accu_contrib(istate) - enddo - - else if (degree(jdet) == 0 )then - ! diagonal part of the dressing : interaction of | Idet > with all the perturbers generated by the excitations - ! - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{aorb,kspin} a_{jorb,kspin} a_{iorb,ispin} | Idet > - accu_contrib = 0.d0 - do ispin = 1, 2 - do kspin = 1, 2 - if(ispin == kspin .and. iorb.le.jorb)cycle ! condition not to double count - do a = 1, n_act_orb ! First active - contrib_hij = perturb_dets_hij(a,kspin,ispin) * perturb_dets_hij(a,kspin,ispin) - if(dabs(contrib_hij).le.1.d-10)cycle - do istate = 1, N_states - accu_contrib(istate) += contrib_hij * delta_e_inv(a,kspin,istate) - enddo - enddo - enddo - enddo - do istate =1, N_states - matrix_2h1p(idet,idet,istate) += accu_contrib(istate) - enddo - - endif - - enddo - enddo - enddo - enddo - enddo - - - - - -end - - diff --git a/src/mrpt_utils/second_order_new_2p.irp.f b/src/mrpt_utils/second_order_new_2p.irp.f deleted file mode 100644 index 302e699b..00000000 --- a/src/mrpt_utils/second_order_new_2p.irp.f +++ /dev/null @@ -1,283 +0,0 @@ - -subroutine give_2p_new(matrix_2p) - use bitmasks - implicit none - double precision , intent(inout) :: matrix_2p(N_det,N_det,*) - integer :: i,v,r,a,b,c - integer :: iorb, vorb, rorb, aorb, borb,corb - integer :: ispin,jspin - integer :: idet,jdet - integer(bit_kind) :: perturb_dets(N_int,2,n_act_orb,n_act_orb,2,2) - double precision :: perturb_dets_phase(n_act_orb,n_act_orb,2,2) - double precision :: perturb_dets_hij(n_act_orb,n_act_orb,2,2) - double precision :: perturb_dets_hpsi0(n_act_orb,n_act_orb,2,2,N_states) - integer :: inint - integer :: elec_num_tab_local(2),acu_elec - integer(bit_kind) :: det_tmp(N_int,2) - integer(bit_kind) :: det_tmp_j(N_int,2) - integer :: exc(0:2,2,2) - integer :: accu_elec - double precision :: get_mo_bielec_integral - double precision :: active_int(n_act_orb,n_act_orb,2) - double precision :: hij,phase - double precision :: accu_contrib(N_states) - integer :: degree(N_det) - integer :: idx(0:N_det) - double precision :: delta_e(n_act_orb,n_act_orb,2,2,N_states) - double precision :: delta_e_inv(n_act_orb,n_act_orb,2,2,N_states) - double precision :: delta_e_inactive_virt(N_states) - integer :: istate - integer :: index_orb_act_mono(N_det,6) - integer :: kspin - double precision :: delta_e_ja(N_states) - double precision :: hja - double precision :: contrib_hij - double precision :: fock_operator_local(n_act_orb,n_act_orb,2) - double precision :: hij_test - integer ::i_ok - integer(bit_kind) :: det_tmp_bis(N_int,2) - double precision :: hib , hab - double precision :: delta_e_ab(N_states) - double precision :: hib_test,hja_test,hab_test - integer :: i_hole,i_part - double precision :: hia,hjb - integer :: other_spin(2) - other_spin(1) = 2 - other_spin(2) = 1 - - accu_contrib = 0.d0 -!matrix_2p = 0.d0 - - elec_num_tab_local = 0 - do inint = 1, N_int - elec_num_tab_local(1) += popcnt(psi_ref(inint,1,1)) - elec_num_tab_local(2) += popcnt(psi_ref(inint,2,1)) - enddo - do v = 1, n_virt_orb ! First virtual - vorb = list_virt(v) - do r = 1, n_virt_orb ! Second virtual - rorb = list_virt(r) - ! take all the integral you will need for r,v fixed - do a = 1, n_act_orb - aorb = list_act(a) - do b = 1, n_act_orb - borb = list_act(b) - active_int(a,b,1) = get_mo_bielec_integral(aorb,borb,rorb,vorb,mo_integrals_map) ! direct ( a--> r | b--> v ) - active_int(a,b,2) = get_mo_bielec_integral(aorb,borb,vorb,rorb,mo_integrals_map) ! exchange ( b--> r | a--> v ) - perturb_dets_phase(a,b,1,1) = -1000.d0 - perturb_dets_phase(a,b,1,2) = -1000.d0 - perturb_dets_phase(a,b,2,2) = -1000.d0 - perturb_dets_phase(a,b,2,1) = -1000.d0 - perturb_dets_phase(b,a,1,1) = -1000.d0 - perturb_dets_phase(b,a,1,2) = -1000.d0 - perturb_dets_phase(b,a,2,2) = -1000.d0 - perturb_dets_phase(b,a,2,1) = -1000.d0 - enddo - enddo - - - do istate = 1, N_states - delta_e_inactive_virt(istate) = & - - fock_virt_total_spin_trace(rorb,istate) & - - fock_virt_total_spin_trace(vorb,istate) - enddo - do idet = 1, N_det -! call get_excitation_degree_vector_mono(psi_ref,psi_ref(1,1,idet),degree,N_int,N_det,idx) - call get_excitation_degree_vector(psi_ref,psi_ref(1,1,idet),degree,N_int,N_det,idx) - !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Precomputation of matrix elements - do ispin = 1, 2 ! spin of the couple a-a^dagger (aorb,rorb) - do jspin = 1, 2 ! spin of the couple a-a^dagger (borb,vorb) - do b = 1, n_act_orb ! First active - borb = list_act(b) - do a = 1, n_act_orb ! First active - aorb = list_act(a) -! if(ispin == 2.and. jspin ==1)then -! perturb_dets_phase(a,b,ispin,jspin) = -1000.0d0 -! perturb_dets_hij(a,b,ispin,jspin) = 0.d0 -! cycle ! condition not to double count -! endif - - if(ispin == jspin .and. vorb.le.rorb)then - perturb_dets_phase(a,b,ispin,jspin) = -1000.0d0 - perturb_dets_hij(a,b,ispin,jspin) = 0.d0 - cycle ! condition not to double count - endif - if(ispin == jspin .and. aorb.le.borb) then - perturb_dets_phase(a,b,ispin,jspin) = -1000.0d0 - perturb_dets_hij(a,b,ispin,jspin) = 0.d0 - cycle ! condition not to double count - endif - do inint = 1, N_int - det_tmp(inint,1) = psi_ref(inint,1,idet) - det_tmp(inint,2) = psi_ref(inint,2,idet) - enddo - ! Do the excitation (aorb,ispin) --> (rorb,ispin) - call clear_bit_to_integer(aorb,det_tmp(1,ispin),N_int) ! hole in "aorb" of spin Ispin - call set_bit_to_integer(rorb,det_tmp(1,ispin),N_int) ! particle in "rorb" of spin Ispin - - ! Do the excitation (borb,jspin) --> (vorb,jspin) - call clear_bit_to_integer(borb,det_tmp(1,jspin),N_int) ! hole in "borb" of spin Jspin - call set_bit_to_integer(vorb,det_tmp(1,jspin),N_int) ! particle in "vorb" of spin Jspin - - ! Check if the excitation is possible or not on psi_ref(idet) - accu_elec= 0 - do inint = 1, N_int - accu_elec+= popcnt(det_tmp(inint,1)) + popcnt(det_tmp(inint,2)) - enddo - if(accu_elec .ne. elec_num_tab_local(2)+elec_num_tab_local(1))then - perturb_dets_phase(a,b,ispin,jspin) = -1000.0d0 - perturb_dets_hij(a,b,ispin,jspin) = 0.d0 - cycle - endif - do inint = 1, N_int - perturb_dets(inint,1,a,b,ispin,jspin) = det_tmp(inint,1) - perturb_dets(inint,2,a,b,ispin,jspin) = det_tmp(inint,2) - enddo - - call get_double_excitation(psi_ref(1,1,idet),det_tmp,exc,phase,N_int) - perturb_dets_phase(a,b,ispin,jspin) = phase - - do istate = 1, N_states - delta_e(a,b,ispin,jspin,istate) = two_anhil(a,b,ispin,jspin,istate) + delta_e_inactive_virt(istate) - delta_e_inv(a,b,ispin,jspin,istate) = 1.d0 / delta_e(a,b,ispin,jspin,istate) - enddo - if(ispin == jspin)then - perturb_dets_hij(a,b,ispin,jspin) = phase * (active_int(a,b,2) - active_int(a,b,1) ) - else - perturb_dets_hij(a,b,ispin,jspin) = phase * active_int(a,b,1) - endif - call i_H_j(psi_ref(1,1,idet),det_tmp,N_int,hij) - if(hij.ne.perturb_dets_hij(a,b,ispin,jspin))then - print*, active_int(a,b,1) , active_int(b,a,1) - double precision :: hmono,hdouble - call i_H_j_verbose(psi_ref(1,1,idet),det_tmp,N_int,hij,hmono,hdouble) - print*, 'pb !! hij.ne.perturb_dets_hij(a,b,ispin,jspin)' - print*, ispin,jspin - print*, aorb,rorb,borb,vorb - print*, hij,perturb_dets_hij(a,b,ispin,jspin) - call debug_det(psi_ref(1,1,idet),N_int) - call debug_det(det_tmp,N_int) - stop - endif - enddo ! b - enddo ! a - enddo ! jspin - enddo ! ispin - -!!!!!!!!!!!!!!!!!!!!!!!!!!! determination of the connections between I and the other J determinants mono excited in the CAS -!!!!!!!!!!!!!!!!!!!!!!!!!!!! the determinants I and J must be connected by the following operator -!!!!!!!!!!!!!!!!!!!!!!!!!!!! -!!!!!!!!!!!!!!!!!!!!!!!!!!!! - do jdet = 1, idx(0) - if(degree(jdet)==1)then - call get_mono_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if (exc(0,1,1) == 1) then - ! Mono alpha - i_hole = list_act_reverse(exc(1,1,1)) !!! a_a - i_part = list_act_reverse(exc(1,2,1)) !!! a^{\dagger}_{b} - kspin = 1 !!! kspin - index_orb_act_mono(idx(jdet),1) = i_hole - index_orb_act_mono(idx(jdet),2) = i_part - index_orb_act_mono(idx(jdet),3) = kspin - call i_H_j_dyall(psi_active(1,1,idet),psi_active(1,1,idx(jdet)),N_int,hij) - fock_operator_local(i_hole,i_part,kspin) = hij * phase ! phase less fock operator - fock_operator_local(i_part,i_hole,kspin) = hij * phase ! phase less fock operator - else - ! Mono beta - i_hole = list_act_reverse(exc(1,1,2)) !!! a_a - i_part = list_act_reverse(exc(1,2,2)) !!! a^{\dagger}_{b} - kspin = 2 !!! kspin - index_orb_act_mono(idx(jdet),1) = i_hole - index_orb_act_mono(idx(jdet),2) = i_part - index_orb_act_mono(idx(jdet),3) = kspin - call i_H_j_dyall(psi_active(1,1,idet),psi_active(1,1,idx(jdet)),N_int,hij) - fock_operator_local(i_hole,i_part,kspin) = hij * phase ! phase less fock operator - fock_operator_local(i_part,i_hole,kspin) = hij * phase ! phase less fock operator - endif - else if(degree(jdet)==2)then - call get_double_excitation(psi_ref(1,1,idet),psi_ref(1,1,idx(jdet)),exc,phase,N_int) - if (exc(0,1,1) == 1) then - ! Mono alpha - index_orb_act_mono(idx(jdet),1) = list_act_reverse(exc(1,1,1)) !!! a_a ALPHA - index_orb_act_mono(idx(jdet),2) = list_act_reverse(exc(1,2,1)) !!! a^{\dagger}_{b} ALPHA - index_orb_act_mono(idx(jdet),3) = 1 - ! Mono beta - index_orb_act_mono(idx(jdet),4) = list_act_reverse(exc(1,1,2)) !!! a_a BETA - index_orb_act_mono(idx(jdet),5) = list_act_reverse(exc(1,2,2)) !!! a^{\dagger}_{b} BETA - index_orb_act_mono(idx(jdet),6) = 2 - else if (exc(0,1,1) == 2) then - index_orb_act_mono(idx(jdet),1) = list_act_reverse(exc(1,1,1)) !!! a_a ALPHA - index_orb_act_mono(idx(jdet),2) = list_act_reverse(exc(1,2,1)) !!! a^{\dagger}_{b} ALPHA - index_orb_act_mono(idx(jdet),3) = 1 - index_orb_act_mono(idx(jdet),4) = list_act_reverse(exc(2,1,1)) !!! a_c ALPHA - index_orb_act_mono(idx(jdet),5) = list_act_reverse(exc(2,2,1)) !!! a^{\dagger}_{d} ALPHA - index_orb_act_mono(idx(jdet),6) = 1 - else if (exc(0,1,2) == 2) then - index_orb_act_mono(idx(jdet),1) = list_act_reverse(exc(1,1,2)) !!! a_a BETA - index_orb_act_mono(idx(jdet),2) = list_act_reverse(exc(2,1,2)) !!! a^{\dagger}_{b} BETA - index_orb_act_mono(idx(jdet),3) = 2 - index_orb_act_mono(idx(jdet),4) = list_act_reverse(exc(1,2,2)) !!! a_c BETA - index_orb_act_mono(idx(jdet),5) = list_act_reverse(exc(2,2,2)) !!! a^{\dagger}_{d} BETA - index_orb_act_mono(idx(jdet),6) = 2 - endif - endif - enddo - - - -! do jdet = 1, idx(0) -!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! CASE OF THE MONO EXCITATIONS -! if(degree(jdet) == 1)then -! ! two determinants | Idet > and | Jdet > which are connected throw a mono excitation operator -! ! are connected by the presence of the perturbers determinants |det_tmp> -! aorb = index_orb_act_mono(idx(jdet),1) ! a_{aorb} -! borb = index_orb_act_mono(idx(jdet),2) ! a^{\dagger}_{borb} -! kspin = index_orb_act_mono(idx(jdet),3) ! spin of the excitation -! ! the determinants Idet and Jdet interact throw the following operator -! ! | Jdet > = a^{\dagger}_{borb,kspin} a_{aorb, kspin} | Idet > - -! accu_contrib = 0.d0 - do ispin = 1, 2 ! you loop on all possible spin for the excitation - ! a^{\dagger}_r a_{a} (ispin) - !!!! SECOND ORDER CONTRIBTIONS - ! | det_tmp > = a^{\dagger}_{rorb,ispin} a^{\dagger}_{vorb,jspin} a_{corb,jspin} a_{iorb,ispin} | Idet > - do jspin = 1, 2 - if(ispin == 2 .and. jspin ==1)cycle - do b = 1, n_act_orb - do a = 1, n_act_orb - logical :: cycle_same_spin_second_order(2) - cycle_same_spin_second_order(1) = .False. - cycle_same_spin_second_order(2) = .False. - if(perturb_dets_phase(a,b,ispin,jspin).le.-10d0)cycle - if(ispin == jspin .and. vorb.le.rorb)then - cycle_same_spin_second_order(1) = .True. - endif - if(ispin == jspin .and. aorb.le.borb)then - cycle_same_spin_second_order(2) = .True. - endif - do inint = 1, N_int - det_tmp(inint,1) = perturb_dets(inint,1,a,b,ispin,jspin) - det_tmp(inint,2) = perturb_dets(inint,2,a,b,ispin,jspin) - enddo - do jdet = 1, idx(0) -! if(idx(jdet).gt.idet)cycle - do istate = 1, N_states - call i_H_j(psi_ref(1,1,idx(jdet)),det_tmp,N_int,hij) - matrix_2p(idx(jdet),idet,istate) += hij * perturb_dets_hij(a,b,ispin,jspin) * delta_e_inv(a,b,ispin,jspin,istate) - enddo - enddo ! jdet - enddo ! b - enddo ! a - enddo ! jspin - enddo ! ispin - -! else if (degree(jdet) == 0)then -! -! endif -! enddo !! jdet - - - enddo - enddo - enddo -end diff --git a/src/mrpt_utils/set_as_holes_and_particles.irp.f b/src/mrpt_utils/set_as_holes_and_particles.irp.f deleted file mode 100644 index d356e4b9..00000000 --- a/src/mrpt_utils/set_as_holes_and_particles.irp.f +++ /dev/null @@ -1,27 +0,0 @@ - -subroutine set_generators_bitmasks_as_holes_and_particles - implicit none - integer :: i,k - do k = 1, N_generators_bitmask - do i = 1, N_int - ! Pure single part - generators_bitmask(i,1,1,k) = holes_operators(i,1) ! holes for pure single exc alpha - generators_bitmask(i,1,2,k) = particles_operators(i,1) ! particles for pure single exc alpha - generators_bitmask(i,2,1,k) = holes_operators(i,2) ! holes for pure single exc beta - generators_bitmask(i,2,2,k) = particles_operators(i,2) ! particles for pure single exc beta - - ! Double excitation - generators_bitmask(i,1,3,k) = holes_operators(i,1) ! holes for first single exc alpha - generators_bitmask(i,1,4,k) = particles_operators(i,1) ! particles for first single exc alpha - generators_bitmask(i,2,3,k) = holes_operators(i,2) ! holes for first single exc beta - generators_bitmask(i,2,4,k) = particles_operators(i,2) ! particles for first single exc beta - - generators_bitmask(i,1,5,k) = holes_operators(i,1) ! holes for second single exc alpha - generators_bitmask(i,1,6,k) = particles_operators(i,1) ! particles for second single exc alpha - generators_bitmask(i,2,5,k) = holes_operators(i,2) ! holes for second single exc beta - generators_bitmask(i,2,6,k) = particles_operators(i,2) ! particles for second single exc beta - - enddo - enddo - touch generators_bitmask -end diff --git a/src/mrpt_utils/utils_bitmask.irp.f b/src/mrpt_utils/utils_bitmask.irp.f deleted file mode 100644 index 1b262eb6..00000000 --- a/src/mrpt_utils/utils_bitmask.irp.f +++ /dev/null @@ -1,36 +0,0 @@ - -subroutine give_active_part_determinant(det_in,det_out) - implicit none - use bitmasks - integer(bit_kind),intent(in) :: det_in(N_int,2) - integer(bit_kind),intent(out) :: det_out(N_int,2) - integer :: i - do i = 1,N_int - det_out(i,1) = iand(det_in(i,1),cas_bitmask(i,1,1)) - det_out(i,2) = iand(det_in(i,2),cas_bitmask(i,1,1)) - enddo -end - -subroutine give_core_inactive_part_determinant(det_in,det_out) - implicit none - use bitmasks - integer(bit_kind),intent(in) :: det_in(N_int,2) - integer(bit_kind),intent(out) :: det_out(N_int,2) - integer :: i - do i = 1,N_int - det_out(i,1) = iand(det_in(i,1),reunion_of_core_inact_bitmask(i,1)) - det_out(i,2) = iand(det_in(i,2),reunion_of_core_inact_bitmask(i,1)) - enddo -end - -subroutine give_virt_part_determinant(det_in,det_out) - implicit none - use bitmasks - integer(bit_kind),intent(in) :: det_in(N_int,2) - integer(bit_kind),intent(out) :: det_out(N_int,2) - integer :: i - do i = 1,N_int - det_out(i,1) = iand(det_in(i,1),virt_bitmask(i,1)) - det_out(i,2) = iand(det_in(i,2),virt_bitmask(i,1)) - enddo -end diff --git a/src/perturbation/NEED b/src/perturbation/NEED index 916d076c..76c1cf2d 100644 --- a/src/perturbation/NEED +++ b/src/perturbation/NEED @@ -1,4 +1,3 @@ determinants hartree_fock davidson -mrpt_utils diff --git a/src/perturbation/pt2_new.irp.f b/src/perturbation/pt2_new.irp.f deleted file mode 100644 index 2f9cfbfb..00000000 --- a/src/perturbation/pt2_new.irp.f +++ /dev/null @@ -1,71 +0,0 @@ -subroutine i_H_psi_pert_new_minilist(key,keys,idx_key,N_minilist,coef,Nint,Ndet,Ndet_max,Nstate,i_H_psi_array,coef_pert) - use bitmasks - implicit none - integer, intent(in) :: Nint, Ndet,Ndet_max,Nstate,idx_key(Ndet), N_minilist - integer(bit_kind), intent(in) :: keys(Nint,2,Ndet) - integer(bit_kind), intent(in) :: key(Nint,2) - double precision, intent(in) :: coef(Ndet_max,Nstate) - double precision, intent(out) :: i_H_psi_array(Nstate) - double precision, intent(out) :: coef_pert - - integer :: idx(0:Ndet) - - integer :: i, ii,j, i_in_key, i_in_coef - double precision :: phase - integer :: exc(0:2,2,2) - double precision :: hij - double precision :: delta_e_final - double precision :: hjj - BEGIN_DOC -! Computes = \sum_J c_J . -! -! Uses filter_connected_i_H_psi0 to get all the |J> to which |i> -! is connected. The |J> are searched in short pre-computed lists. - END_DOC - - ASSERT (Nint > 0) - ASSERT (N_int == Nint) - ASSERT (Nstate > 0) - ASSERT (Ndet > 0) - ASSERT (Ndet_max >= Ndet) - i_H_psi_array = 0.d0 - coef_pert = 0.d0 - - call filter_connected_i_H_psi0(keys,key,Nint,N_minilist,idx) - double precision :: coef_array(Nstate) - if (Nstate == 1) then - - do ii=1,idx(0) - i_in_key = idx(ii) - i_in_coef = idx_key(idx(ii)) - !DIR$ FORCEINLINE - call i_H_j(keys(1,1,i_in_key),key,Nint,hij) - i_H_psi_array(1) = i_H_psi_array(1) + coef(i_in_coef,1)*hij - do i = 1, Nstate - coef_array(i) = coef(i_in_coef,i) - enddo - call get_delta_e_dyall(keys(1,1,i_in_key),key,coef_array,hij,delta_e_final) - - coef_pert += coef(i_in_coef,1)*hij / delta_e_final - enddo - if (coef_pert * i_H_psi_array(1) > 0.d0)then - print*, coef_pert * i_H_psi_array(1) - endif - - else - - do ii=1,idx(0) - i_in_key = idx(ii) - i_in_coef = idx_key(idx(ii)) - !DIR$ FORCEINLINE - call i_H_j(keys(1,1,i_in_key),key,Nint,hij) - i_H_psi_array(1) = i_H_psi_array(1) + coef(i_in_coef,1)*hij - do j = 1, Nstate - i_H_psi_array(j) = i_H_psi_array(j) + coef(i_in_coef,j)*hij - enddo - enddo - - endif - -end - diff --git a/src/scf_utils/README.rst b/src/scf_utils/README.rst index db4f3c2c..a62e26b4 100644 --- a/src/scf_utils/README.rst +++ b/src/scf_utils/README.rst @@ -4,11 +4,11 @@ scf_utils -The scf_utils module performs *Restricted* SCF calculations (the +The scf_utils module is an abstract module which contains the basics to perform *Restricted* SCF calculations (the spatial part of the |MOs| is common for alpha and beta spinorbitals) based on a single-determinant wave function. This module does not produce any executable *and must not do*, but instead it contains everything one needs to perform an orbital optimization based on an Fock matrix. -The ``scf_utils`` module is included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example). +The ``scf_utils`` module is meant to be included in the :file:`NEED` of the various single determinant SCF procedures, such as ``hartree_fock`` or ``kohn_sham``, where a specific definition of the Fock matrix is given (see :file:`hartree_fock fock_matrix_hf.irp.f` for an example). All SCF programs perform the following actions: From 6e0a411d6b666dbc8f74d972bb6f484ea2678170 Mon Sep 17 00:00:00 2001 From: Emmanuel Giner Date: Fri, 28 Dec 2018 14:26:53 +0100 Subject: [PATCH 4/5] added ROHF_b2.gms.out --- scripts/module/module_handler.py | 1 - tests/input/ROHF_b2.gms.out | 2755 ++++++++++++++++++++++++++++++ 2 files changed, 2755 insertions(+), 1 deletion(-) create mode 100644 tests/input/ROHF_b2.gms.out diff --git a/scripts/module/module_handler.py b/scripts/module/module_handler.py index a31a1d0c..22677d33 100755 --- a/scripts/module/module_handler.py +++ b/scripts/module/module_handler.py @@ -84,7 +84,6 @@ def get_dict_child(l_root_abs=None): except IOError: pass else: -# print module_rel if module_rel not in d_ref: d_ref[module_rel] = l_children else: diff --git a/tests/input/ROHF_b2.gms.out b/tests/input/ROHF_b2.gms.out new file mode 100644 index 00000000..3f2b579a --- /dev/null +++ b/tests/input/ROHF_b2.gms.out @@ -0,0 +1,2755 @@ +----- GAMESS execution script 'rungms' ----- +This job is running on host quad7 +under operating system Linux at Wed Nov 15 13:27:29 CET 2017 +Available scratch disk space (Kbyte units) at beginning of the job is +Filesystem 1K-blocks Used Available Use% Mounted on +/dev/sda1 1922860892 1593693036 231492132 88% /scr +GAMESS temporary binary files will be written to /scr/giner +GAMESS supplementary output files will be written to /scr/giner +Copying input file ROHF_Ag.inp to your run's scratch directory... + + Distributed Data Interface kickoff program. + Initiating 1 compute processes on 1 nodes to run the following command: + /opt/gamess/gamess.00.x ROHF_Ag + + ****************************************************** + * GAMESS VERSION = 5 DEC 2014 (R1) * + * FROM IOWA STATE UNIVERSITY * + * M.W.SCHMIDT, K.K.BALDRIDGE, J.A.BOATZ, S.T.ELBERT, * + * M.S.GORDON, J.H.JENSEN, S.KOSEKI, N.MATSUNAGA, * + * K.A.NGUYEN, S.J.SU, T.L.WINDUS, * + * TOGETHER WITH M.DUPUIS, J.A.MONTGOMERY * + * J.COMPUT.CHEM. 14, 1347-1363(1993) * + **************** 64 BIT LINUX VERSION **************** + + SINCE 1993, STUDENTS AND POSTDOCS WORKING AT IOWA STATE UNIVERSITY + AND ALSO IN THEIR VARIOUS JOBS AFTER LEAVING ISU HAVE MADE IMPORTANT + CONTRIBUTIONS TO THE CODE: + IVANA ADAMOVIC, CHRISTINE AIKENS, YURI ALEXEEV, POOJA ARORA, + ANDREY ASADCHEV, ROB BELL, PRADIPTA BANDYOPADHYAY, JONATHAN BENTZ, + BRETT BODE, KURT BRORSEN, CALEB CARLIN, GALINA CHABAN, WEI CHEN, + CHEOL HO CHOI, PAUL DAY, ALBERT DEFUSCO, NUWAN DESILVA, TIM DUDLEY, + DMITRI FEDOROV, GRAHAM FLETCHER, MARK FREITAG, KURT GLAESEMANN, + DAN KEMP, GRANT MERRILL, NORIYUKI MINEZAWA, JONATHAN MULLIN, + TAKESHI NAGATA, SEAN NEDD, HEATHER NETZLOFF, BOSILJKA NJEGIC, RYAN OLSON, + MIKE PAK, SPENCER PRUITT, LUKE ROSKOP, JIM SHOEMAKER, LYUDMILA SLIPCHENKO, + TONY SMITH, SAROM SOK, JIE SONG, TETSUYA TAKETSUGU, SIMON WEBB, + PENG XU, SOOHAENG YOO, FEDERICO ZAHARIEV + + ADDITIONAL CODE HAS BEEN PROVIDED BY COLLABORATORS IN OTHER GROUPS: + IOWA STATE UNIVERSITY: + JOE IVANIC, AARON WEST, LAIMUTIS BYTAUTAS, KLAUS RUEDENBERG + UNIVERSITY OF TOKYO: KIMIHIKO HIRAO, TAKAHITO NAKAJIMA, + TAKAO TSUNEDA, MUNEAKI KAMIYA, SUSUMU YANAGISAWA, + KIYOSHI YAGI, MAHITO CHIBA, SEIKEN TOKURA, NAOAKI KAWAKAMI + UNIVERSITY OF AARHUS: FRANK JENSEN + UNIVERSITY OF IOWA: VISVALDAS KAIRYS, HUI LI + NATIONAL INST. OF STANDARDS AND TECHNOLOGY: WALT STEVENS, DAVID GARMER + UNIVERSITY OF PISA: BENEDETTA MENNUCCI, JACOPO TOMASI + UNIVERSITY OF MEMPHIS: HENRY KURTZ, PRAKASHAN KORAMBATH + UNIVERSITY OF ALBERTA: TOBY ZENG, MARIUSZ KLOBUKOWSKI + UNIVERSITY OF NEW ENGLAND: MARK SPACKMAN + MIE UNIVERSITY: HIROAKI UMEDA + NAT. INST. OF ADVANCED INDUSTRIAL SCIENCE AND TECHNOLOGY: KAZUO KITAURA + MICHIGAN STATE UNIVERSITY: + KAROL KOWALSKI, MARTA WLOCH, JEFFREY GOUR, JESSE LUTZ, + WEI LI, PIOTR PIECUCH + UNIVERSITY OF SILESIA: MONIKA MUSIAL, STANISLAW KUCHARSKI + FACULTES UNIVERSITAIRES NOTRE-DAME DE LA PAIX: + OLIVIER QUINET, BENOIT CHAMPAGNE + UNIVERSITY OF CALIFORNIA - SANTA BARBARA: BERNARD KIRTMAN + INSTITUTE FOR MOLECULAR SCIENCE: + KAZUYA ISHIMURA, MICHIO KATOUDA, AND SHIGERU NAGASE + UNIVERSITY OF NOTRE DAME: ANNA POMOGAEVA, DAN CHIPMAN + KYUSHU UNIVERSITY: + HARUYUKI NAKANO, + FENG LONG GU, JACEK KORCHOWIEC, MARCIN MAKOWSKI, AND YURIKO AOKI, + HIROTOSHI MORI AND EISAKU MIYOSHI + PENNSYLVANIA STATE UNIVERSITY: + TZVETELIN IORDANOV, CHET SWALINA, JONATHAN SKONE, + SHARON HAMMES-SCHIFFER + WASEDA UNIVERSITY: + MASATO KOBAYASHI, TOMOKO AKAMA, TSUGUKI TOUMA, + TAKESHI YOSHIKAWA, YASUHIRO IKABATA, HIROMI NAKAI + NANJING UNIVERSITY: SHUHUA LI + UNIVERSITY OF NEBRASKA: + PEIFENG SU, DEJUN SI, NANDUN THELLAMUREGE, YALI WANG, HUI LI + UNIVERSITY OF ZURICH: ROBERTO PEVERATI, KIM BALDRIDGE + N. COPERNICUS UNIVERSITY AND JACKSON STATE UNIVERSITY: + MARIA BARYSZ + UNIVERSITY OF COPENHAGEN: CASPER STEINMANN + TOKYO INSTITUTE OF TECHNOLOGY: HIROYA NAKATA + NAGOYA UNIVERSITY: YOSHIO NISHIMOTO, STEPHAN IRLE + + EXECUTION OF GAMESS BEGUN Wed Nov 15 13:27:29 2017 + + ECHO OF THE FIRST FEW INPUT CARDS - + INPUT CARD> $CONTRL + INPUT CARD> EXETYP= RUN + INPUT CARD> COORD= UNIQUE UNITS= BOHR + INPUT CARD> RUNTYP= ENERGY + INPUT CARD> SCFTYP= ROHF + INPUT CARD> CITYP= NONE + INPUT CARD> MULT= 2 + INPUT CARD> ICHARG= +2 + INPUT CARD> MAXIT=200 + INPUT CARD> ISPHER=1 + INPUT CARD> $END + INPUT CARD> + INPUT CARD> $SYSTEM + INPUT CARD> MEMORY=350000000 + INPUT CARD> MEMDDI=200 + INPUT CARD> $END + INPUT CARD> + INPUT CARD> $GUESS + INPUT CARD> GUESS=MOREAD + INPUT CARD> NORB=87 + INPUT CARD> $END + INPUT CARD> NORDER=1 + INPUT CARD> IORDER(34)=31 + INPUT CARD> IORDER(31)=34 + INPUT CARD> + INPUT CARD> $SCF + INPUT CARD> DAMP=.F. SOSCF=.F. DEM=.F. SHIFT=.T. + INPUT CARD> DIRSCF=.F. EXTRAP=.F. DIIS=.T. NOCONV=.F. + INPUT CARD> COUPLE=.F. RSTRCT=.T. + INPUT CARD> $END + INPUT CARD> + INPUT CARD> $TRANS + INPUT CARD> DIRTRF=.FALSE. + INPUT CARD> AOINTS=DIST + INPUT CARD> $END + INPUT CARD> + INPUT CARD> $MCSCF + INPUT CARD> FOCAS=.F. SOSCF=.F. FULLNR=.T. + INPUT CARD> CISTEP=GUGA EKT=.F. QUAD=.F. JACOBI=.f. + INPUT CARD> MAXIT=1000 + INPUT CARD> $END + INPUT CARD> + INPUT CARD> $DRT + INPUT CARD> NMCC=21 NDOC=10 NALP=1 NVAL=4 NEXT=0 ISTSYM=1 + INPUT CARD> GROUP=C1 + INPUT CARD> IEXCIT=2 + INPUT CARD> MXNINT=6000000 + INPUT CARD> NPRT=2 + INPUT CARD> $END + INPUT CARD> + 350000000 WORDS OF MEMORY AVAILABLE + + BASIS OPTIONS + ------------- + GBASIS=N31 IGAUSS= 6 POLAR=NONE + NDFUNC= 0 NFFUNC= 0 DIFFSP= F + NPFUNC= 0 DIFFS= F BASNAM= + + + RUN TITLE + --------- + BLALA + + THE POINT GROUP OF THE MOLECULE IS DN + THE ORDER OF THE PRINCIPAL AXIS IS 2 + + ATOM ATOMIC COORDINATES (BOHR) + CHARGE X Y Z + CU 29.0 0.0000000000 0.0000000000 0.0000000000 + N 7.0 -2.6951374965 0.0000000000 2.6951374965 + N 7.0 2.6951374965 0.0000000000 -2.6951374965 + N 7.0 -2.6951374965 0.0000000000 -2.6951374965 + N 7.0 2.6951374965 0.0000000000 2.6951374965 + H 1.0 -3.2517012440 -1.7594000000 3.2517012440 + H 1.0 3.2517012440 -1.7594000000 -3.2517012440 + H 1.0 -3.2517012440 1.7594000000 -3.2517012440 + H 1.0 3.2517012440 1.7594000000 3.2517012440 + H 1.0 -4.3293319785 0.8793000000 2.1740705094 + H 1.0 4.3293319785 0.8793000000 -2.1740705094 + H 1.0 -4.3293319785 -0.8793000000 -2.1740705094 + H 1.0 4.3293319785 -0.8793000000 2.1740705094 + H 1.0 -2.1740705094 0.8793000000 4.3293319785 + H 1.0 2.1740705094 0.8793000000 -4.3293319785 + H 1.0 -2.1740705094 -0.8793000000 -4.3293319785 + H 1.0 2.1740705094 -0.8793000000 4.3293319785 + + INTERNUCLEAR DISTANCES (ANGS.) + ------------------------------ + + 1 CU 2 N 3 N 4 N 5 N + + 1 CU 0.0000000 2.0169591 * 2.0169591 * 2.0169591 * 2.0169591 * + 2 N 2.0169591 * 0.0000000 4.0339182 2.8524109 * 2.8524109 * + 3 N 2.0169591 * 4.0339182 0.0000000 2.8524109 * 2.8524109 * + 4 N 2.0169591 * 2.8524109 * 2.8524109 * 0.0000000 4.0339182 + 5 N 2.0169591 * 2.8524109 * 2.8524109 * 4.0339182 0.0000000 + 6 H 2.6054987 * 1.0199560 * 4.5467773 3.2949579 3.2949579 + 7 H 2.6054987 * 4.5467773 1.0199560 * 3.2949579 3.2949579 + 8 H 2.6054987 * 3.2949579 3.2949579 1.0199560 * 4.5467773 + 9 H 2.6054987 * 3.2949579 3.2949579 4.5467773 1.0199560 * + 10 H 2.6055124 * 1.0199912 * 4.5467852 2.7574627 * 3.7563330 + 11 H 2.6055124 * 4.5467852 1.0199912 * 3.7563330 2.7574627 * + 12 H 2.6055124 * 2.7574627 * 3.7563330 1.0199912 * 4.5467852 + 13 H 2.6055124 * 3.7563330 2.7574627 * 4.5467852 1.0199912 * + 14 H 2.6055124 * 1.0199912 * 4.5467852 3.7563330 2.7574627 * + 15 H 2.6055124 * 4.5467852 1.0199912 * 2.7574627 * 3.7563330 + 16 H 2.6055124 * 3.7563330 2.7574627 * 1.0199912 * 4.5467852 + 17 H 2.6055124 * 2.7574627 * 3.7563330 4.5467852 1.0199912 * + + 6 H 7 H 8 H 9 H 10 H + + 1 CU 2.6054987 * 2.6054987 * 2.6054987 * 2.6054987 * 2.6055124 * + 2 N 1.0199560 * 4.5467773 3.2949579 3.2949579 1.0199912 * + 3 N 4.5467773 1.0199560 * 3.2949579 3.2949579 4.5467852 + 4 N 3.2949579 3.2949579 1.0199560 * 4.5467773 2.7574627 * + 5 N 3.2949579 3.2949579 4.5467773 1.0199560 * 3.7563330 + 6 H 0.0000000 4.8669490 3.9129141 3.9129141 1.6124990 * + 7 H 4.8669490 0.0000000 3.9129141 3.9129141 5.1271186 + 8 H 3.9129141 3.9129141 0.0000000 4.8669490 2.9640948 * + 9 H 3.9129141 3.9129141 4.8669490 0.0000000 4.0787151 + 10 H 1.6124990 * 5.1271186 2.9640948 * 4.0787151 0.0000000 + 11 H 5.1271186 1.6124990 * 4.0787151 2.9640948 * 5.1272549 + 12 H 2.9640948 * 4.0787151 1.6124990 * 5.1271186 2.4820051 * + 13 H 4.0787151 2.9640948 * 5.1271186 1.6124990 * 4.6755179 + 14 H 1.6124990 * 5.1271186 4.0787151 2.9640948 * 1.6129323 * + 15 H 5.1271186 1.6124990 * 2.9640948 * 4.0787151 4.8669490 + 16 H 4.0787151 2.9640948 * 1.6124990 * 5.1271186 3.7430480 + 17 H 2.9640948 * 4.0787151 5.1271186 1.6124990 * 3.7430480 + + 11 H 12 H 13 H 14 H 15 H + + 1 CU 2.6055124 * 2.6055124 * 2.6055124 * 2.6055124 * 2.6055124 * + 2 N 4.5467852 2.7574627 * 3.7563330 1.0199912 * 4.5467852 + 3 N 1.0199912 * 3.7563330 2.7574627 * 4.5467852 1.0199912 * + 4 N 3.7563330 1.0199912 * 4.5467852 3.7563330 2.7574627 * + 5 N 2.7574627 * 4.5467852 1.0199912 * 2.7574627 * 3.7563330 + 6 H 5.1271186 2.9640948 * 4.0787151 1.6124990 * 5.1271186 + 7 H 1.6124990 * 4.0787151 2.9640948 * 5.1271186 1.6124990 * + 8 H 4.0787151 1.6124990 * 5.1271186 4.0787151 2.9640948 * + 9 H 2.9640948 * 5.1271186 1.6124990 * 2.9640948 * 4.0787151 + 10 H 5.1272549 2.4820051 * 4.6755179 1.6129323 * 4.8669490 + 11 H 0.0000000 4.6755179 2.4820051 * 4.8669490 1.6129323 * + 12 H 4.6755179 0.0000000 5.1272549 3.7430480 3.7430480 + 13 H 2.4820051 * 5.1272549 0.0000000 3.7430480 3.7430480 + 14 H 4.8669490 3.7430480 3.7430480 0.0000000 5.1272549 + 15 H 1.6129323 * 3.7430480 3.7430480 5.1272549 0.0000000 + 16 H 3.7430480 1.6129323 * 4.8669490 4.6755179 2.4820051 * + 17 H 3.7430480 4.8669490 1.6129323 * 2.4820051 * 4.6755179 + + 16 H 17 H + + 1 CU 2.6055124 * 2.6055124 * + 2 N 3.7563330 2.7574627 * + 3 N 2.7574627 * 3.7563330 + 4 N 1.0199912 * 4.5467852 + 5 N 4.5467852 1.0199912 * + 6 H 4.0787151 2.9640948 * + 7 H 2.9640948 * 4.0787151 + 8 H 1.6124990 * 5.1271186 + 9 H 5.1271186 1.6124990 * + 10 H 3.7430480 3.7430480 + 11 H 3.7430480 3.7430480 + 12 H 1.6129323 * 4.8669490 + 13 H 4.8669490 1.6129323 * + 14 H 4.6755179 2.4820051 * + 15 H 2.4820051 * 4.6755179 + 16 H 0.0000000 5.1272549 + 17 H 5.1272549 0.0000000 + + * ... LESS THAN 3.000 + + + ATOMIC BASIS SET + ---------------- + THE CONTRACTED PRIMITIVE FUNCTIONS HAVE BEEN UNNORMALIZED + THE CONTRACTED BASIS FUNCTIONS ARE NOW NORMALIZED TO UNITY + + SHELL TYPE PRIMITIVE EXPONENT CONTRACTION COEFFICIENT(S) + + CU + + 1 S 1 76794.3800000 0.001748161083 + 1 S 2 11530.7000000 0.013396020638 + 1 S 3 2626.5750000 0.066108853150 + 1 S 4 740.4903000 0.229826510951 + 1 S 5 237.3528000 0.478767522812 + 1 S 6 81.1581800 0.353073916823 + + 2 L 7 1610.8140000 0.002364054998 0.003963306847 + 2 L 8 383.6367000 0.031536349971 0.031102228803 + 2 L 9 124.1733000 0.126945199883 0.136134994761 + 2 L 10 46.7467800 -0.022628399979 0.349291386558 + 2 L 11 19.0656900 -0.619207999430 0.462477982202 + 2 L 12 7.8715670 -0.458539299578 0.202010192226 + + 3 L 13 64.4573200 -0.004331075387 -0.007523724515 + 3 L 14 21.8521200 0.074123076623 -0.029756868084 + 3 L 15 9.4053430 0.254210822713 0.068496535589 + 3 L 16 3.9991680 -0.287484325686 0.402714074065 + 3 L 17 1.6702970 -0.729143665148 0.490848968389 + 3 L 18 0.6596270 -0.211395118888 0.175926788670 + + 4 L 19 2.6000880 0.050275770029 -0.170291095031 + 4 L 20 0.9630940 0.265004000152 0.093101327283 + 4 L 21 0.1361610 -1.120155000642 0.981433571362 + + 5 L 22 0.0473320 1.000000000000 1.000000000000 + + 6 D 23 30.8534100 0.091999053845 + 6 D 24 8.2649850 0.398502116657 + 6 D 25 2.4953320 0.691789728916 + + 7 D 26 0.6676580 1.000000000000 + + N + + 17 S 27 4173.5114600 0.001834772160 + 17 S 28 627.4579110 0.013994627002 + 17 S 29 142.9020930 0.068586551812 + 17 S 30 40.2343293 0.232240873040 + 17 S 31 12.8202129 0.469069948082 + 17 S 32 4.3904370 0.360455199063 + + 18 L 33 11.6263619 -0.114961181702 0.067579743878 + 18 L 34 2.7162798 -0.169117478561 0.323907295893 + 18 L 35 0.7722184 1.145851947027 0.740895139755 + + 19 L 36 0.2120315 1.000000000000 1.000000000000 + + H + + 26 S 37 18.7311370 0.033494604338 + 26 S 38 2.8253944 0.234726953484 + 26 S 39 0.6401217 0.813757326146 + + 27 S 40 0.1612778 1.000000000000 + + H + + 34 S 41 18.7311370 0.033494604338 + 34 S 42 2.8253944 0.234726953484 + 34 S 43 0.6401217 0.813757326146 + + 35 S 44 0.1612778 1.000000000000 + + H + + 42 S 45 18.7311370 0.033494604338 + 42 S 46 2.8253944 0.234726953484 + 42 S 47 0.6401217 0.813757326146 + + 43 S 48 0.1612778 1.000000000000 + + TOTAL NUMBER OF BASIS SET SHELLS = 43 + NUMBER OF CARTESIAN GAUSSIAN BASIS FUNCTIONS = 89 + NOTE: THIS RUN WILL RESTRICT THE MO VARIATION SPACE TO SPHERICAL HARMONICS. + THE NUMBER OF ORBITALS KEPT IN THE VARIATIONAL SPACE WILL BE PRINTED LATER. + NUMBER OF ELECTRONS = 67 + CHARGE OF MOLECULE = 2 + SPIN MULTIPLICITY = 2 + NUMBER OF OCCUPIED ORBITALS (ALPHA) = 34 + NUMBER OF OCCUPIED ORBITALS (BETA ) = 33 + TOTAL NUMBER OF ATOMS = 17 + THE NUCLEAR REPULSION ENERGY IS 425.1940993151 + + $CONTRL OPTIONS + --------------- + SCFTYP=ROHF RUNTYP=ENERGY EXETYP=RUN + MPLEVL= 0 CITYP =NONE CCTYP =NONE VBTYP =NONE + DFTTYP=NONE TDDFT =NONE + MULT = 2 ICHARG= 2 NZVAR = 0 COORD =UNIQUE + PP =NONE RELWFN=NONE LOCAL =NONE NUMGRD= F + ISPHER= 1 NOSYM = 0 MAXIT = 200 UNITS =BOHR + PLTORB= F MOLPLT= F AIMPAC= F FRIEND= + NPRINT= 7 IREST = 0 GEOM =INPUT + NORMF = 0 NORMP = 0 ITOL = 20 ICUT = 9 + INTTYP=BEST GRDTYP=BEST QMTTOL= 1.0E-06 + + $SYSTEM OPTIONS + --------------- + REPLICATED MEMORY= 350000000 WORDS (ON EVERY NODE). + DISTRIBUTED MEMDDI= 200 MILLION WORDS IN AGGREGATE, + MEMDDI DISTRIBUTED OVER 1 PROCESSORS IS 200000000 WORDS/PROCESSOR. + TOTAL MEMORY REQUESTED ON EACH PROCESSOR= 550000000 WORDS. + TIMLIM= 525600.00 MINUTES, OR 365.0 DAYS. + PARALL= F BALTYP= DLB KDIAG= 0 COREFL= F + MXSEQ2= 300 MXSEQ3= 150 mem10= 0 + + ---------------- + PROPERTIES INPUT + ---------------- + + MOMENTS FIELD POTENTIAL DENSITY + IEMOM = 1 IEFLD = 0 IEPOT = 0 IEDEN = 0 + WHERE =COMASS WHERE =NUCLEI WHERE =NUCLEI WHERE =NUCLEI + OUTPUT=BOTH OUTPUT=BOTH OUTPUT=BOTH OUTPUT=BOTH + IEMINT= 0 IEFINT= 0 IEDINT= 0 + MORB = 0 + LEVEL SHIFTING IN EFFECT + RESTRICTION OF ORBITAL MIXING IN EFFECT + DIIS IN EFFECT + ORBITAL PRINTING OPTION: NPREO= 1 89 2 1 + + ------------------------------- + INTEGRAL TRANSFORMATION OPTIONS + ------------------------------- + NWORD = 0 + CUTOFF = 1.0E-09 MPTRAN = 0 + DIRTRF = F AOINTS =DIST + + ---------------------- + INTEGRAL INPUT OPTIONS + ---------------------- + NOPK = 1 NORDER= 0 SCHWRZ= T + + ------------------------------------------ + THE POINT GROUP IS DN , NAXIS= 2, ORDER= 4 + ------------------------------------------ + + -- VARIATIONAL SPACE WILL BE RESTRICTED TO PURE SPHERICAL HARMONICS ONLY -- + AFTER EXCLUDING CONTAMINANT COMBINATIONS FROM THE CARTESIAN GAUSSIAN BASIS + SET, THE NUMBER OF SPHERICAL HARMONICS KEPT IN THE VARIATION SPACE IS 87 + + DIMENSIONS OF THE SYMMETRY SUBSPACES ARE + A = 24 B1 = 21 B3 = 21 B2 = 21 + + ..... DONE SETTING UP THE RUN ..... + STEP CPU TIME = 0.12 TOTAL CPU TIME = 0.1 ( 0.0 MIN) + TOTAL WALL CLOCK TIME= 0.1 SECONDS, CPU UTILIZATION IS 92.31% + + ******************** + 1 ELECTRON INTEGRALS + ******************** + ...... END OF ONE-ELECTRON INTEGRALS ...... + STEP CPU TIME = 0.01 TOTAL CPU TIME = 0.1 ( 0.0 MIN) + TOTAL WALL CLOCK TIME= 0.1 SECONDS, CPU UTILIZATION IS 92.86% + + ------------- + GUESS OPTIONS + ------------- + GUESS =MOREAD NORB = 87 NORDER= 0 + MIX = F PRTMO = F PUNMO = F + TOLZ = 1.0E-08 TOLE = 1.0E-05 + SYMDEN= F PURIFY= F + + INITIAL GUESS ORBITALS GENERATED BY MOREAD ROUTINE. + + STATISTICS FOR GENERATION OF SYMMETRY ORBITAL -Q- MATRIX + NUMBER OF CARTESIAN ATOMIC ORBITALS= 89 + NUMBER OF SPHERICAL CONTAMINANTS DROPPED= 2 + NUMBER OF LINEARLY DEPENDENT MOS DROPPED= 0 + TOTAL NUMBER OF MOS IN VARIATION SPACE= 87 + + SYMMETRIES FOR INITIAL GUESS ORBITALS FOLLOW. ALPHA SET(S). + 34 ORBITALS ARE OCCUPIED ( 13 CORE ORBITALS). + 14=A 15=B1 16=B3 17=B2 18=A 19=B2 20=B3 + 21=B1 22=B3 23=B1 24=A 25=B2 26=A 27=B2 + 28=B3 29=B1 30=B3 31=B1 32=A 33=A 34=B2 + 35=A 36=A 37=B3 38=B1 39=B3 40=A 41=A + 42=A 43=A 44=A + + SYMMETRIES FOR INITIAL GUESS ORBITALS FOLLOW. BETA SET(S). + 33 ORBITALS ARE OCCUPIED ( 13 CORE ORBITALS). + 14=A 15=B1 16=B3 17=B2 18=A 19=B2 20=B3 + 21=B1 22=B3 23=B1 24=A 25=B2 26=A 27=B2 + 28=B3 29=B1 30=B3 31=B1 32=A 33=A 34=B2 + 35=A 36=A 37=B3 38=B1 39=B3 40=A 41=A + 42=A 43=A + ...... END OF INITIAL ORBITAL SELECTION ...... + STEP CPU TIME = 0.01 TOTAL CPU TIME = 0.1 ( 0.0 MIN) + TOTAL WALL CLOCK TIME= 0.2 SECONDS, CPU UTILIZATION IS 87.50% + + ---------------------- + AO INTEGRAL TECHNOLOGY + ---------------------- + S,P,L SHELL ROTATED AXIS INTEGRALS, REPROGRAMMED BY + KAZUYA ISHIMURA (IMS) AND JOSE SIERRA (SYNSTAR). + S,P,D,L SHELL ROTATED AXIS INTEGRALS PROGRAMMED BY + KAZUYA ISHIMURA (INSTITUTE FOR MOLECULAR SCIENCE). + S,P,D,F,G SHELL TO TOTAL QUARTET ANGULAR MOMENTUM SUM 5, + ERIC PROGRAM BY GRAHAM FLETCHER (ELORET AND NASA ADVANCED + SUPERCOMPUTING DIVISION, AMES RESEARCH CENTER). + S,P,D,F,G,L SHELL GENERAL RYS QUADRATURE PROGRAMMED BY + MICHEL DUPUIS (PACIFIC NORTHWEST NATIONAL LABORATORY). + + -------------------- + 2 ELECTRON INTEGRALS + -------------------- + + THE -PK- OPTION IS OFF, THE INTEGRALS ARE NOT IN SUPERMATRIX FORM. + STORING 15000 INTEGRALS/RECORD ON DISK, USING 12 BYTES/INTEGRAL. + TWO ELECTRON INTEGRAL EVALUATION REQUIRES 91342 WORDS OF MEMORY. + SCHWARZ INEQUALITY OVERHEAD: 3951 INTEGRALS, T= 0.01 + II,JST,KST,LST = 1 1 1 1 NREC = 1 INTLOC = 1 + II,JST,KST,LST = 2 1 1 1 NREC = 1 INTLOC = 2 + II,JST,KST,LST = 3 1 1 1 NREC = 1 INTLOC = 34 + II,JST,KST,LST = 4 1 1 1 NREC = 1 INTLOC = 214 + II,JST,KST,LST = 5 1 1 1 NREC = 1 INTLOC = 776 + II,JST,KST,LST = 6 1 1 1 NREC = 1 INTLOC = 2074 + II,JST,KST,LST = 7 1 1 1 NREC = 1 INTLOC = 5929 + II,JST,KST,LST = 8 1 1 1 NREC = 1 INTLOC =14065 + II,JST,KST,LST = 9 1 1 1 NREC = 1 INTLOC =14065 + II,JST,KST,LST = 10 1 1 1 NREC = 1 INTLOC =14065 + II,JST,KST,LST = 11 1 1 1 NREC = 1 INTLOC =14065 + II,JST,KST,LST = 12 1 1 1 NREC = 1 INTLOC =14065 + II,JST,KST,LST = 13 1 1 1 NREC = 1 INTLOC =14065 + II,JST,KST,LST = 14 1 1 1 NREC = 1 INTLOC =14065 + II,JST,KST,LST = 15 1 1 1 NREC = 1 INTLOC =14065 + II,JST,KST,LST = 16 1 1 1 NREC = 1 INTLOC =14065 + II,JST,KST,LST = 17 1 1 1 NREC = 1 INTLOC =14065 + II,JST,KST,LST = 18 1 1 1 NREC = 2 INTLOC = 4018 + II,JST,KST,LST = 19 1 1 1 NREC = 6 INTLOC = 7222 + II,JST,KST,LST = 20 1 1 1 NREC = 19 INTLOC = 2051 + II,JST,KST,LST = 21 1 1 1 NREC = 19 INTLOC = 2051 + II,JST,KST,LST = 22 1 1 1 NREC = 19 INTLOC = 2051 + II,JST,KST,LST = 23 1 1 1 NREC = 19 INTLOC = 2051 + II,JST,KST,LST = 24 1 1 1 NREC = 19 INTLOC = 2051 + II,JST,KST,LST = 25 1 1 1 NREC = 19 INTLOC = 2051 + II,JST,KST,LST = 26 1 1 1 NREC = 19 INTLOC = 2051 + II,JST,KST,LST = 27 1 1 1 NREC = 26 INTLOC = 4759 + II,JST,KST,LST = 28 1 1 1 NREC = 37 INTLOC = 4005 + II,JST,KST,LST = 29 1 1 1 NREC = 37 INTLOC = 4005 + II,JST,KST,LST = 30 1 1 1 NREC = 37 INTLOC = 4005 + II,JST,KST,LST = 31 1 1 1 NREC = 37 INTLOC = 4005 + II,JST,KST,LST = 32 1 1 1 NREC = 37 INTLOC = 4005 + II,JST,KST,LST = 33 1 1 1 NREC = 37 INTLOC = 4005 + II,JST,KST,LST = 34 1 1 1 NREC = 37 INTLOC = 4005 + II,JST,KST,LST = 35 1 1 1 NREC = 47 INTLOC = 983 + II,JST,KST,LST = 36 1 1 1 NREC = 61 INTLOC =14537 + II,JST,KST,LST = 37 1 1 1 NREC = 61 INTLOC =14537 + II,JST,KST,LST = 38 1 1 1 NREC = 61 INTLOC =14537 + II,JST,KST,LST = 39 1 1 1 NREC = 61 INTLOC =14537 + II,JST,KST,LST = 40 1 1 1 NREC = 61 INTLOC =14537 + II,JST,KST,LST = 41 1 1 1 NREC = 61 INTLOC =14537 + II,JST,KST,LST = 42 1 1 1 NREC = 61 INTLOC =14537 + II,JST,KST,LST = 43 1 1 1 NREC = 75 INTLOC = 904 + SCHWARZ INEQUALITY TEST SKIPPED 27670 INTEGRAL BLOCKS. + TOTAL NUMBER OF NONZERO TWO-ELECTRON INTEGRALS = 1406679 + 94 INTEGRAL RECORDS WERE STORED ON DISK FILE 8. + ...... END OF TWO-ELECTRON INTEGRALS ..... + STEP CPU TIME = 0.33 TOTAL CPU TIME = 0.5 ( 0.0 MIN) + TOTAL WALL CLOCK TIME= 0.5 SECONDS, CPU UTILIZATION IS 97.92% + + --------------------------- + ROHF SCF CALCULATION + --------------------------- + + NUCLEAR ENERGY = 425.1940993151 + MAXIT =200 NPUNCH= 2 MULT= 2 + EXTRAP=F DAMP=F SHIFT=T RSTRCT=T DIIS=T SOSCF=F + DENSITY MATRIX CONV= 1.00E-05 + ROHF CANONICALIZATION PARAMETERS + C-C O-O V-V + ALPHA -0.5000 0.5000 1.5000 + BETA 1.5000 0.5000 -0.5000 + MEMORY REQUIRED FOR UHF/ROHF ITERS= 123264 WORDS. + + ITER EX TOTAL ENERGY E CHANGE DENSITY CHANGE DIIS ERROR VIR. SHIFT DAMPING + * * * INITIATING DIIS PROCEDURE * * * + 1 0 -1862.9759035833 -1862.9759035833 0.000001601 0.000000367 0.000000000 1.000000000 + 2 1 -1862.9759035833 0.0000000000 0.000000914 0.000000288 0.000000000 1.000000000 + + ----------------- + DENSITY CONVERGED + ----------------- + TIME TO FORM FOCK OPERATORS= 0.1 SECONDS ( 0.0 SEC/ITER) + TIME TO SOLVE SCF EQUATIONS= 0.0 SECONDS ( 0.0 SEC/ITER) + + FINAL ROHF ENERGY IS -1862.9759035833 AFTER 2 ITERATIONS + + -------------------- + SPIN SZ = 0.500 + S-SQUARED = 0.750 + -------------------- + + ------------ + EIGENVECTORS + ------------ + + 1 2 3 4 5 + -329.3214 -41.3530 -36.1428 -36.1428 -36.1728 + A A B1 B3 B2 + 1 CU 1 S 0.996074 0.307741 0.000000 0.000000 0.000000 + 2 CU 1 S -0.013701 1.037574 0.000000 0.000000 0.000000 + 3 CU 1 X 0.000000 -0.000000 0.000000 0.997298 0.000000 + 4 CU 1 Y 0.000000 -0.000000 0.000000 0.000000 0.996734 + 5 CU 1 Z 0.000000 -0.000000 0.997298 0.000000 0.000000 + 6 CU 1 S 0.002496 0.012962 0.000000 0.000000 0.000000 + 7 CU 1 X 0.000000 -0.000000 0.000000 0.007370 0.000000 + 8 CU 1 Y 0.000000 -0.000000 0.000000 0.000000 0.009145 + 9 CU 1 Z 0.000000 -0.000000 0.007370 0.000000 0.000000 + 10 CU 1 S -0.001377 -0.003553 0.000000 0.000000 0.000000 + 11 CU 1 X 0.000000 -0.000000 0.000000 -0.002933 0.000000 + 12 CU 1 Y 0.000000 -0.000000 0.000000 0.000000 -0.001358 + 13 CU 1 Z 0.000000 -0.000000 -0.002933 0.000000 0.000000 + 14 CU 1 S -0.000491 -0.001638 0.000000 0.000000 0.000000 + 15 CU 1 X 0.000000 -0.000000 0.000000 0.000992 0.000000 + 16 CU 1 Y 0.000000 -0.000000 0.000000 0.000000 0.000649 + 17 CU 1 Z 0.000000 -0.000000 0.000992 0.000000 0.000000 + 18 CU 1 XX -0.000015 0.000060 0.000000 0.000000 0.000000 + 19 CU 1 YY 0.000030 -0.000119 0.000000 0.000000 0.000000 + 20 CU 1 ZZ -0.000015 0.000060 0.000000 0.000000 0.000000 + 21 CU 1 XY 0.000000 -0.000000 -0.000001 0.000000 0.000000 + 22 CU 1 XZ 0.000000 -0.000000 0.000000 0.000000 0.000002 + 23 CU 1 YZ 0.000000 -0.000000 0.000000 -0.000001 0.000000 + 24 CU 1 XX 0.000051 0.000295 0.000000 0.000000 0.000000 + 25 CU 1 YY -0.000101 -0.000591 0.000000 0.000000 0.000000 + 26 CU 1 ZZ 0.000051 0.000295 0.000000 0.000000 0.000000 + 27 CU 1 XY 0.000000 -0.000000 0.000005 0.000000 0.000000 + 28 CU 1 XZ 0.000000 -0.000000 0.000000 0.000000 -0.000009 + 29 CU 1 YZ 0.000000 -0.000000 0.000000 0.000005 0.000000 + 30 N 2 S 0.000012 0.000030 -0.000028 0.000028 -0.000000 + 31 N 2 S 0.000116 0.000261 -0.000212 0.000212 -0.000003 + 32 N 2 X -0.000012 -0.000030 -0.000009 -0.000045 0.000006 + 33 N 2 Y 0.000003 0.000002 -0.000002 0.000002 -0.000038 + 34 N 2 Z 0.000012 0.000030 -0.000045 -0.000009 -0.000006 + 35 N 2 S -0.000414 -0.000994 0.001050 -0.001050 0.000039 + 36 N 2 X -0.000073 -0.000171 0.000556 -0.000046 -0.000023 + 37 N 2 Y -0.000012 -0.000012 0.000015 -0.000015 0.000292 + 38 N 2 Z 0.000073 0.000171 -0.000046 0.000556 0.000023 + 39 N 3 S 0.000012 0.000030 0.000028 -0.000028 -0.000000 + 40 N 3 S 0.000116 0.000261 0.000212 -0.000212 -0.000003 + 41 N 3 X 0.000012 0.000030 -0.000009 -0.000045 -0.000006 + 42 N 3 Y 0.000003 0.000002 0.000002 -0.000002 -0.000038 + 43 N 3 Z -0.000012 -0.000030 -0.000045 -0.000009 0.000006 + 44 N 3 S -0.000414 -0.000994 -0.001050 0.001050 0.000039 + 45 N 3 X 0.000073 0.000171 0.000556 -0.000046 0.000023 + 46 N 3 Y -0.000012 -0.000012 -0.000015 0.000015 0.000292 + 47 N 3 Z -0.000073 -0.000171 -0.000046 0.000556 -0.000023 + 48 N 4 S 0.000012 0.000030 0.000028 0.000028 0.000000 + 49 N 4 S 0.000116 0.000261 0.000212 0.000212 0.000003 + 50 N 4 X -0.000012 -0.000030 0.000009 -0.000045 -0.000006 + 51 N 4 Y -0.000003 -0.000002 -0.000002 -0.000002 -0.000038 + 52 N 4 Z -0.000012 -0.000030 -0.000045 0.000009 -0.000006 + 53 N 4 S -0.000414 -0.000994 -0.001050 -0.001050 -0.000039 + 54 N 4 X -0.000073 -0.000171 -0.000556 -0.000046 0.000023 + 55 N 4 Y 0.000012 0.000012 0.000015 0.000015 0.000292 + 56 N 4 Z -0.000073 -0.000171 -0.000046 -0.000556 0.000023 + 57 N 5 S 0.000012 0.000030 -0.000028 -0.000028 0.000000 + 58 N 5 S 0.000116 0.000261 -0.000212 -0.000212 0.000003 + 59 N 5 X 0.000012 0.000030 0.000009 -0.000045 0.000006 + 60 N 5 Y -0.000003 -0.000002 0.000002 0.000002 -0.000038 + 61 N 5 Z 0.000012 0.000030 -0.000045 0.000009 0.000006 + 62 N 5 S -0.000414 -0.000994 0.001050 0.001050 -0.000039 + 63 N 5 X 0.000073 0.000171 -0.000556 -0.000046 -0.000023 + 64 N 5 Y 0.000012 0.000012 -0.000015 -0.000015 0.000292 + 65 N 5 Z 0.000073 0.000171 -0.000046 -0.000556 -0.000023 + 66 H 6 S 0.000038 0.000075 -0.000060 0.000060 0.000036 + 67 H 6 S 0.000047 0.000189 -0.000096 0.000096 0.000195 + 68 H 7 S 0.000038 0.000075 0.000060 -0.000060 0.000036 + 69 H 7 S 0.000047 0.000189 0.000096 -0.000096 0.000195 + 70 H 8 S 0.000038 0.000075 0.000060 0.000060 -0.000036 + 71 H 8 S 0.000047 0.000189 0.000096 0.000096 -0.000195 + 72 H 9 S 0.000038 0.000075 -0.000060 -0.000060 -0.000036 + 73 H 9 S 0.000047 0.000189 -0.000096 -0.000096 -0.000195 + 74 H 10 S 0.000032 0.000063 -0.000006 0.000082 -0.000015 + 75 H 10 S 0.000080 0.000238 0.000041 0.000365 -0.000137 + 76 H 11 S 0.000032 0.000063 0.000006 -0.000082 -0.000015 + 77 H 11 S 0.000080 0.000238 -0.000041 -0.000365 -0.000137 + 78 H 12 S 0.000032 0.000063 0.000006 0.000082 0.000015 + 79 H 12 S 0.000080 0.000238 -0.000041 0.000365 0.000137 + 80 H 13 S 0.000032 0.000063 -0.000006 -0.000082 0.000015 + 81 H 13 S 0.000080 0.000238 0.000041 -0.000365 0.000137 + 82 H 14 S 0.000032 0.000063 -0.000082 0.000006 -0.000015 + 83 H 14 S 0.000080 0.000238 -0.000365 -0.000041 -0.000137 + 84 H 15 S 0.000032 0.000063 0.000082 -0.000006 -0.000015 + 85 H 15 S 0.000080 0.000238 0.000365 0.000041 -0.000137 + 86 H 16 S 0.000032 0.000063 0.000082 0.000006 0.000015 + 87 H 16 S 0.000080 0.000238 0.000365 -0.000041 0.000137 + 88 H 17 S 0.000032 0.000063 -0.000082 -0.000006 0.000015 + 89 H 17 S 0.000080 0.000238 -0.000365 0.000041 0.000137 + + 6 7 8 9 10 + -15.9181 -15.9182 -15.9182 -15.9182 -5.4633 + A B1 B3 B2 A + 1 CU 1 S -0.000002 -0.000000 -0.000000 -0.000000 -0.115186 + 2 CU 1 S -0.000110 -0.000000 -0.000000 -0.000000 -0.451924 + 3 CU 1 X 0.000000 -0.000000 -0.000071 -0.000000 -0.000000 + 4 CU 1 Y 0.000000 -0.000000 -0.000000 0.000001 -0.000000 + 5 CU 1 Z 0.000000 0.000071 -0.000000 -0.000000 -0.000000 + 6 CU 1 S -0.000195 -0.000000 -0.000000 -0.000000 1.084837 + 7 CU 1 X 0.000000 -0.000000 -0.000203 -0.000000 -0.000000 + 8 CU 1 Y 0.000000 -0.000000 -0.000000 -0.000002 -0.000000 + 9 CU 1 Z 0.000000 0.000203 -0.000000 -0.000000 -0.000000 + 10 CU 1 S -0.002333 -0.000000 -0.000000 -0.000000 -0.002435 + 11 CU 1 X 0.000000 -0.000000 -0.003222 -0.000000 -0.000000 + 12 CU 1 Y 0.000000 -0.000000 -0.000000 0.000018 -0.000000 + 13 CU 1 Z 0.000000 0.003222 -0.000000 -0.000000 -0.000000 + 14 CU 1 S -0.001391 -0.000000 -0.000000 -0.000000 -0.003889 + 15 CU 1 X 0.000000 -0.000000 0.002158 -0.000000 -0.000000 + 16 CU 1 Y 0.000000 -0.000000 -0.000000 0.000072 -0.000000 + 17 CU 1 Z 0.000000 -0.002158 -0.000000 -0.000000 -0.000000 + 18 CU 1 XX -0.000024 -0.000000 -0.000000 -0.000000 0.001402 + 19 CU 1 YY 0.000049 -0.000000 -0.000000 -0.000000 -0.002805 + 20 CU 1 ZZ -0.000024 -0.000000 -0.000000 -0.000000 0.001402 + 21 CU 1 XY 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 22 CU 1 XZ 0.000000 -0.000000 -0.000000 0.000044 -0.000000 + 23 CU 1 YZ 0.000000 -0.000000 0.000000 -0.000000 -0.000000 + 24 CU 1 XX 0.000146 -0.000000 -0.000000 -0.000000 0.002814 + 25 CU 1 YY -0.000292 -0.000000 -0.000000 -0.000000 -0.005628 + 26 CU 1 ZZ 0.000146 -0.000000 -0.000000 -0.000000 0.002814 + 27 CU 1 XY 0.000000 0.000002 -0.000000 -0.000000 -0.000000 + 28 CU 1 XZ 0.000000 -0.000000 -0.000000 -0.000491 -0.000000 + 29 CU 1 YZ 0.000000 -0.000000 -0.000002 -0.000000 -0.000000 + 30 N 2 S 0.498010 0.498026 0.498026 0.498000 0.000169 + 31 N 2 S 0.011833 0.012129 0.012129 0.011878 -0.000299 + 32 N 2 X -0.000484 -0.000440 -0.000409 -0.000414 -0.000389 + 33 N 2 Y -0.000022 -0.000017 -0.000017 -0.000000 -0.000015 + 34 N 2 Z 0.000484 0.000409 0.000440 0.000414 0.000389 + 35 N 2 S -0.006017 -0.007056 -0.007056 -0.005821 -0.000707 + 36 N 2 X 0.000495 0.000147 0.000357 0.000482 0.000070 + 37 N 2 Y 0.000062 0.000037 0.000037 -0.000039 0.000001 + 38 N 2 Z -0.000495 -0.000357 -0.000147 -0.000482 -0.000070 + 39 N 3 S 0.498010 -0.498026 -0.498026 0.498000 0.000169 + 40 N 3 S 0.011833 -0.012129 -0.012129 0.011878 -0.000299 + 41 N 3 X 0.000484 -0.000440 -0.000409 0.000414 0.000389 + 42 N 3 Y -0.000022 0.000017 0.000017 -0.000000 -0.000015 + 43 N 3 Z -0.000484 0.000409 0.000440 -0.000414 -0.000389 + 44 N 3 S -0.006017 0.007056 0.007056 -0.005821 -0.000707 + 45 N 3 X -0.000495 0.000147 0.000357 -0.000482 -0.000070 + 46 N 3 Y 0.000062 -0.000037 -0.000037 -0.000039 0.000001 + 47 N 3 Z 0.000495 -0.000357 -0.000147 0.000482 0.000070 + 48 N 4 S 0.498010 -0.498026 0.498026 -0.498000 0.000169 + 49 N 4 S 0.011833 -0.012129 0.012129 -0.011878 -0.000299 + 50 N 4 X -0.000484 0.000440 -0.000409 0.000414 -0.000389 + 51 N 4 Y 0.000022 -0.000017 0.000017 -0.000000 0.000015 + 52 N 4 Z -0.000484 0.000409 -0.000440 0.000414 -0.000389 + 53 N 4 S -0.006017 0.007056 -0.007056 0.005821 -0.000707 + 54 N 4 X 0.000495 -0.000147 0.000357 -0.000482 0.000070 + 55 N 4 Y -0.000062 0.000037 -0.000037 -0.000039 -0.000001 + 56 N 4 Z 0.000495 -0.000357 0.000147 -0.000482 0.000070 + 57 N 5 S 0.498010 0.498026 -0.498026 -0.498000 0.000169 + 58 N 5 S 0.011833 0.012129 -0.012129 -0.011878 -0.000299 + 59 N 5 X 0.000484 0.000440 -0.000409 -0.000414 0.000389 + 60 N 5 Y 0.000022 0.000017 -0.000017 -0.000000 0.000015 + 61 N 5 Z 0.000484 0.000409 -0.000440 -0.000414 0.000389 + 62 N 5 S -0.006017 -0.007056 0.007056 0.005821 -0.000707 + 63 N 5 X -0.000495 -0.000147 0.000357 0.000482 -0.000070 + 64 N 5 Y -0.000062 -0.000037 0.000037 -0.000039 -0.000001 + 65 N 5 Z -0.000495 -0.000357 0.000147 0.000482 -0.000070 + 66 H 6 S 0.000067 0.000062 0.000062 -0.000002 0.000026 + 67 H 6 S 0.001269 0.001576 0.001576 0.001234 0.000474 + 68 H 7 S 0.000067 -0.000062 -0.000062 -0.000002 0.000026 + 69 H 7 S 0.001269 -0.001576 -0.001576 0.001234 0.000474 + 70 H 8 S 0.000067 -0.000062 0.000062 0.000002 0.000026 + 71 H 8 S 0.001269 -0.001576 0.001576 -0.001234 0.000474 + 72 H 9 S 0.000067 0.000062 -0.000062 0.000002 0.000026 + 73 H 9 S 0.001269 0.001576 -0.001576 -0.001234 0.000474 + 74 H 10 S 0.000022 0.000080 0.000028 0.000054 0.000023 + 75 H 10 S 0.001284 0.001327 0.001771 0.001159 0.000491 + 76 H 11 S 0.000022 -0.000080 -0.000028 0.000054 0.000023 + 77 H 11 S 0.001284 -0.001327 -0.001771 0.001159 0.000491 + 78 H 12 S 0.000022 -0.000080 0.000028 -0.000054 0.000023 + 79 H 12 S 0.001284 -0.001327 0.001771 -0.001159 0.000491 + 80 H 13 S 0.000022 0.000080 -0.000028 -0.000054 0.000023 + 81 H 13 S 0.001284 0.001327 -0.001771 -0.001159 0.000491 + 82 H 14 S 0.000022 0.000028 0.000080 0.000054 0.000023 + 83 H 14 S 0.001284 0.001771 0.001327 0.001159 0.000491 + 84 H 15 S 0.000022 -0.000028 -0.000080 0.000054 0.000023 + 85 H 15 S 0.001284 -0.001771 -0.001327 0.001159 0.000491 + 86 H 16 S 0.000022 -0.000028 0.000080 -0.000054 0.000023 + 87 H 16 S 0.001284 -0.001771 0.001327 -0.001159 0.000491 + 88 H 17 S 0.000022 0.000028 -0.000080 -0.000054 0.000023 + 89 H 17 S 0.001284 0.001771 -0.001327 -0.001159 0.000491 + + 11 12 13 14 15 + -3.7020 -3.7020 -3.8316 -1.5366 -1.5237 + B3 B1 B2 A B1 + 1 CU 1 S 0.000000 -0.000000 0.000000 -0.003857 0.000000 + 2 CU 1 S 0.000000 -0.000000 0.000000 -0.013392 0.000000 + 3 CU 1 X -0.377688 -0.000000 0.000000 0.000000 0.000000 + 4 CU 1 Y 0.000000 -0.000000 -0.378903 0.000000 0.000000 + 5 CU 1 Z 0.000000 -0.377688 0.000000 0.000000 0.012234 + 6 CU 1 S 0.000000 -0.000000 0.000000 0.046180 0.000000 + 7 CU 1 X 1.065794 -0.000000 0.000000 0.000000 0.000000 + 8 CU 1 Y 0.000000 -0.000000 1.065798 0.000000 0.000000 + 9 CU 1 Z 0.000000 1.065794 0.000000 0.000000 -0.037526 + 10 CU 1 S 0.000000 -0.000000 0.000000 -0.020182 0.000000 + 11 CU 1 X -0.005228 -0.000000 0.000000 0.000000 0.000000 + 12 CU 1 Y 0.000000 -0.000000 0.005019 0.000000 0.000000 + 13 CU 1 Z 0.000000 -0.005228 0.000000 0.000000 0.006686 + 14 CU 1 S 0.000000 -0.000000 0.000000 0.012242 0.000000 + 15 CU 1 X 0.002528 -0.000000 0.000000 0.000000 0.000000 + 16 CU 1 Y 0.000000 -0.000000 -0.001058 0.000000 0.000000 + 17 CU 1 Z 0.000000 0.002528 0.000000 0.000000 0.028497 + 18 CU 1 XX 0.000000 -0.000000 0.000000 0.011647 0.000000 + 19 CU 1 YY 0.000000 -0.000000 0.000000 -0.023294 0.000000 + 20 CU 1 ZZ 0.000000 -0.000000 0.000000 0.011647 0.000000 + 21 CU 1 XY 0.000000 -0.000033 0.000000 0.000000 0.000126 + 22 CU 1 XZ 0.000000 -0.000000 -0.000006 0.000000 0.000000 + 23 CU 1 YZ -0.000033 -0.000000 0.000000 0.000000 0.000000 + 24 CU 1 XX 0.000000 -0.000000 0.000000 0.008745 0.000000 + 25 CU 1 YY 0.000000 -0.000000 0.000000 -0.017489 0.000000 + 26 CU 1 ZZ 0.000000 -0.000000 0.000000 0.008745 0.000000 + 27 CU 1 XY 0.000000 0.000022 0.000000 0.000000 -0.000005 + 28 CU 1 XZ 0.000000 -0.000000 0.000028 0.000000 0.000000 + 29 CU 1 YZ 0.000022 -0.000000 0.000000 0.000000 0.000000 + 30 N 2 S 0.000898 -0.000898 0.000001 -0.100838 -0.101871 + 31 N 2 S -0.001281 0.001281 -0.000001 0.206639 0.207041 + 32 N 2 X -0.001791 0.001818 -0.000002 -0.023536 -0.025183 + 33 N 2 Y 0.000002 -0.000002 0.000210 0.000033 -0.000353 + 34 N 2 Z 0.001818 -0.001791 0.000002 0.023536 0.031581 + 35 N 2 S -0.004150 0.004150 -0.000011 0.242752 0.253669 + 36 N 2 X -0.000433 0.002455 0.000004 -0.009783 -0.013038 + 37 N 2 Y -0.000019 0.000019 0.000105 -0.002502 -0.001409 + 38 N 2 Z 0.002455 -0.000433 -0.000004 0.009783 0.014448 + 39 N 3 S -0.000898 0.000898 0.000001 -0.100838 0.101871 + 40 N 3 S 0.001281 -0.001281 -0.000001 0.206639 -0.207041 + 41 N 3 X -0.001791 0.001818 0.000002 0.023536 -0.025183 + 42 N 3 Y -0.000002 0.000002 0.000210 0.000033 0.000353 + 43 N 3 Z 0.001818 -0.001791 -0.000002 -0.023536 0.031581 + 44 N 3 S 0.004150 -0.004150 -0.000011 0.242752 -0.253669 + 45 N 3 X -0.000433 0.002455 -0.000004 0.009783 -0.013038 + 46 N 3 Y 0.000019 -0.000019 0.000105 -0.002502 0.001409 + 47 N 3 Z 0.002455 -0.000433 0.000004 -0.009783 0.014448 + 48 N 4 S 0.000898 0.000898 -0.000001 -0.100838 0.101871 + 49 N 4 S -0.001281 -0.001281 0.000001 0.206639 -0.207041 + 50 N 4 X -0.001791 -0.001818 0.000002 -0.023536 0.025183 + 51 N 4 Y -0.000002 -0.000002 0.000210 -0.000033 -0.000353 + 52 N 4 Z -0.001818 -0.001791 0.000002 -0.023536 0.031581 + 53 N 4 S -0.004150 -0.004150 0.000011 0.242752 -0.253669 + 54 N 4 X -0.000433 -0.002455 -0.000004 -0.009783 0.013038 + 55 N 4 Y 0.000019 0.000019 0.000105 0.002502 -0.001409 + 56 N 4 Z -0.002455 -0.000433 -0.000004 -0.009783 0.014448 + 57 N 5 S -0.000898 -0.000898 -0.000001 -0.100838 -0.101871 + 58 N 5 S 0.001281 0.001281 0.000001 0.206639 0.207041 + 59 N 5 X -0.001791 -0.001818 -0.000002 0.023536 0.025183 + 60 N 5 Y 0.000002 0.000002 0.000210 -0.000033 0.000353 + 61 N 5 Z -0.001818 -0.001791 -0.000002 0.023536 0.031581 + 62 N 5 S 0.004150 0.004150 0.000011 0.242752 0.253669 + 63 N 5 X -0.000433 -0.002455 0.000004 0.009783 0.013038 + 64 N 5 Y -0.000019 -0.000019 0.000105 0.002502 0.001409 + 65 N 5 Z -0.002455 -0.000433 0.000004 0.009783 0.014448 + 66 H 6 S 0.000227 -0.000227 0.000084 0.063256 0.065812 + 67 H 6 S 0.000400 -0.000400 0.000013 -0.006849 -0.012184 + 68 H 7 S -0.000227 0.000227 0.000084 0.063256 -0.065812 + 69 H 7 S -0.000400 0.000400 0.000013 -0.006849 0.012184 + 70 H 8 S 0.000227 0.000227 -0.000084 0.063256 -0.065812 + 71 H 8 S 0.000400 0.000400 -0.000013 -0.006849 0.012184 + 72 H 9 S -0.000227 -0.000227 -0.000084 0.063256 0.065812 + 73 H 9 S -0.000400 -0.000400 -0.000013 -0.006849 -0.012184 + 74 H 10 S 0.000367 -0.000003 -0.000044 0.064287 0.063574 + 75 H 10 S 0.001332 0.000215 0.000002 -0.004221 -0.009441 + 76 H 11 S -0.000367 0.000003 -0.000044 0.064287 -0.063574 + 77 H 11 S -0.001332 -0.000215 0.000002 -0.004221 0.009441 + 78 H 12 S 0.000367 0.000003 0.000044 0.064287 -0.063574 + 79 H 12 S 0.001332 -0.000215 -0.000002 -0.004221 0.009441 + 80 H 13 S -0.000367 -0.000003 0.000044 0.064287 0.063574 + 81 H 13 S -0.001332 0.000215 -0.000002 -0.004221 -0.009441 + 82 H 14 S 0.000003 -0.000367 -0.000044 0.064287 0.068031 + 83 H 14 S -0.000215 -0.001332 0.000002 -0.004221 -0.011885 + 84 H 15 S -0.000003 0.000367 -0.000044 0.064287 -0.068031 + 85 H 15 S 0.000215 0.001332 0.000002 -0.004221 0.011885 + 86 H 16 S 0.000003 0.000367 0.000044 0.064287 -0.068031 + 87 H 16 S -0.000215 0.001332 -0.000002 -0.004221 0.011885 + 88 H 17 S -0.000003 -0.000367 0.000044 0.064287 0.068031 + 89 H 17 S 0.000215 -0.001332 -0.000002 -0.004221 -0.011885 + + 16 17 18 19 20 + -1.5237 -1.5147 -1.0587 -1.0011 -0.9972 + B3 B2 A B2 B3 + 1 CU 1 S 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 2 CU 1 S 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 3 CU 1 X -0.012234 -0.000000 -0.000000 -0.000000 0.009696 + 4 CU 1 Y 0.000000 -0.000064 -0.000000 0.008211 -0.000000 + 5 CU 1 Z 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 6 CU 1 S 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 7 CU 1 X 0.037526 -0.000000 -0.000000 -0.000000 -0.029744 + 8 CU 1 Y 0.000000 0.000094 -0.000000 -0.024851 -0.000000 + 9 CU 1 Z 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 10 CU 1 S 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 11 CU 1 X -0.006686 -0.000000 -0.000000 -0.000000 0.010544 + 12 CU 1 Y 0.000000 -0.000828 -0.000000 0.009652 -0.000000 + 13 CU 1 Z 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 14 CU 1 S 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 15 CU 1 X -0.028497 -0.000000 -0.000000 -0.000000 0.000997 + 16 CU 1 Y 0.000000 -0.000116 -0.000000 0.013953 -0.000000 + 17 CU 1 Z 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 18 CU 1 XX 0.000000 -0.000000 -0.454304 -0.000000 -0.000000 + 19 CU 1 YY 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 20 CU 1 ZZ 0.000000 -0.000000 0.454304 -0.000000 -0.000000 + 21 CU 1 XY 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 22 CU 1 XZ 0.000000 -0.019443 -0.000000 0.000909 -0.000000 + 23 CU 1 YZ -0.000126 -0.000000 -0.000000 -0.000000 0.040984 + 24 CU 1 XX 0.000000 -0.000000 -0.260518 -0.000000 -0.000000 + 25 CU 1 YY 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 26 CU 1 ZZ 0.000000 -0.000000 0.260518 -0.000000 -0.000000 + 27 CU 1 XY 0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 28 CU 1 XZ 0.000000 -0.017516 -0.000000 0.000066 -0.000000 + 29 CU 1 YZ 0.000005 -0.000000 -0.000000 -0.000000 0.024163 + 30 N 2 S -0.101871 -0.102514 -0.000000 -0.000351 -0.002098 + 31 N 2 S 0.207041 0.209393 -0.000000 0.001348 0.004809 + 32 N 2 X -0.031581 -0.031103 0.112576 -0.001215 0.139892 + 33 N 2 Y -0.000353 -0.000916 -0.000000 0.241654 0.005976 + 34 N 2 Z 0.025183 0.031103 0.112576 0.001215 0.199511 + 35 N 2 S 0.253669 0.253953 -0.000000 0.002029 0.007083 + 36 N 2 X -0.014448 -0.013469 0.091970 -0.003084 0.085193 + 37 N 2 Y -0.001409 0.000848 -0.000000 0.158861 0.008214 + 38 N 2 Z 0.013038 0.013469 0.091970 0.003084 0.133986 + 39 N 3 S 0.101871 -0.102514 -0.000000 -0.000351 0.002098 + 40 N 3 S -0.207041 0.209393 -0.000000 0.001348 -0.004809 + 41 N 3 X -0.031581 0.031103 -0.112576 0.001215 0.139892 + 42 N 3 Y 0.000353 -0.000916 -0.000000 0.241654 -0.005976 + 43 N 3 Z 0.025183 -0.031103 -0.112576 -0.001215 0.199511 + 44 N 3 S -0.253669 0.253953 -0.000000 0.002029 -0.007083 + 45 N 3 X -0.014448 0.013469 -0.091970 0.003084 0.085193 + 46 N 3 Y 0.001409 0.000848 -0.000000 0.158861 -0.008214 + 47 N 3 Z 0.013038 -0.013469 -0.091970 -0.003084 0.133986 + 48 N 4 S -0.101871 0.102514 -0.000000 0.000351 -0.002098 + 49 N 4 S 0.207041 -0.209393 -0.000000 -0.001348 0.004809 + 50 N 4 X -0.031581 0.031103 0.112576 0.001215 0.139892 + 51 N 4 Y 0.000353 -0.000916 -0.000000 0.241654 -0.005976 + 52 N 4 Z -0.025183 0.031103 -0.112576 0.001215 -0.199511 + 53 N 4 S 0.253669 -0.253953 -0.000000 -0.002029 0.007083 + 54 N 4 X -0.014448 0.013469 0.091970 0.003084 0.085193 + 55 N 4 Y 0.001409 0.000848 -0.000000 0.158861 -0.008214 + 56 N 4 Z -0.013038 0.013469 -0.091970 0.003084 -0.133986 + 57 N 5 S 0.101871 0.102514 -0.000000 0.000351 0.002098 + 58 N 5 S -0.207041 -0.209393 -0.000000 -0.001348 -0.004809 + 59 N 5 X -0.031581 -0.031103 -0.112576 -0.001215 0.139892 + 60 N 5 Y -0.000353 -0.000916 -0.000000 0.241654 0.005976 + 61 N 5 Z -0.025183 -0.031103 0.112576 -0.001215 -0.199511 + 62 N 5 S -0.253669 -0.253953 -0.000000 -0.002029 -0.007083 + 63 N 5 X -0.014448 -0.013469 -0.091970 -0.003084 0.085193 + 64 N 5 Y -0.001409 0.000848 -0.000000 0.158861 0.008214 + 65 N 5 Z -0.013038 -0.013469 0.091970 -0.003084 -0.133986 + 66 H 6 S 0.065812 0.067235 -0.000000 -0.135845 0.007419 + 67 H 6 S -0.012184 -0.004933 -0.000000 -0.049457 -0.000289 + 68 H 7 S -0.065812 0.067235 -0.000000 -0.135845 -0.007419 + 69 H 7 S 0.012184 -0.004933 -0.000000 -0.049457 0.000289 + 70 H 8 S 0.065812 -0.067235 -0.000000 0.135845 0.007419 + 71 H 8 S -0.012184 0.004933 -0.000000 0.049457 -0.000289 + 72 H 9 S -0.065812 -0.067235 -0.000000 0.135845 -0.007419 + 73 H 9 S 0.012184 0.004933 -0.000000 0.049457 0.000289 + 74 H 10 S 0.068031 0.066025 -0.071515 0.069577 -0.109138 + 75 H 10 S -0.011885 -0.006101 -0.015385 0.022302 -0.046884 + 76 H 11 S -0.068031 0.066025 -0.071515 0.069577 0.109138 + 77 H 11 S 0.011885 -0.006101 -0.015385 0.022302 0.046884 + 78 H 12 S 0.068031 -0.066025 -0.071515 -0.069577 -0.109138 + 79 H 12 S -0.011885 0.006101 -0.015385 -0.022302 -0.046884 + 80 H 13 S -0.068031 -0.066025 -0.071515 -0.069577 0.109138 + 81 H 13 S 0.011885 0.006101 -0.015385 -0.022302 0.046884 + 82 H 14 S 0.063574 0.066025 0.071515 0.069577 0.126579 + 83 H 14 S -0.009441 -0.006101 0.015385 0.022302 0.045195 + 84 H 15 S -0.063574 0.066025 0.071515 0.069577 -0.126579 + 85 H 15 S 0.009441 -0.006101 0.015385 0.022302 -0.045195 + 86 H 16 S 0.063574 -0.066025 0.071515 -0.069577 0.126579 + 87 H 16 S -0.009441 0.006101 0.015385 -0.022302 0.045195 + 88 H 17 S -0.063574 -0.066025 0.071515 -0.069577 -0.126579 + 89 H 17 S 0.009441 0.006101 0.015385 -0.022302 -0.045195 + + 21 22 23 24 25 + -0.9972 -1.0117 -1.0117 -0.9852 -0.9662 + B1 B3 B1 A B2 + 1 CU 1 S -0.000000 -0.000000 -0.000000 -0.001478 -0.000000 + 2 CU 1 S -0.000000 -0.000000 -0.000000 -0.004878 -0.000000 + 3 CU 1 X -0.000000 -0.000286 -0.000000 0.000000 -0.000000 + 4 CU 1 Y -0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 5 CU 1 Z 0.009696 -0.000000 -0.000286 0.000000 -0.000000 + 6 CU 1 S -0.000000 -0.000000 -0.000000 0.018389 -0.000000 + 7 CU 1 X -0.000000 0.001452 -0.000000 0.000000 -0.000000 + 8 CU 1 Y -0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 9 CU 1 Z -0.029744 -0.000000 0.001452 0.000000 -0.000000 + 10 CU 1 S -0.000000 -0.000000 -0.000000 -0.006837 -0.000000 + 11 CU 1 X -0.000000 0.004107 -0.000000 0.000000 -0.000000 + 12 CU 1 Y -0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 13 CU 1 Z 0.010544 -0.000000 0.004107 0.000000 -0.000000 + 14 CU 1 S -0.000000 -0.000000 -0.000000 -0.034401 -0.000000 + 15 CU 1 X -0.000000 0.001785 -0.000000 0.000000 -0.000000 + 16 CU 1 Y -0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 17 CU 1 Z 0.000997 -0.000000 0.001785 0.000000 -0.000000 + 18 CU 1 XX -0.000000 -0.000000 -0.000000 0.069775 -0.000000 + 19 CU 1 YY -0.000000 -0.000000 -0.000000 -0.139549 -0.000000 + 20 CU 1 ZZ -0.000000 -0.000000 -0.000000 0.069775 -0.000000 + 21 CU 1 XY 0.040984 -0.000000 0.409320 0.000000 -0.000000 + 22 CU 1 XZ -0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 23 CU 1 YZ -0.000000 0.409320 -0.000000 0.000000 -0.000000 + 24 CU 1 XX -0.000000 -0.000000 -0.000000 0.041653 -0.000000 + 25 CU 1 YY -0.000000 -0.000000 -0.000000 -0.083306 -0.000000 + 26 CU 1 ZZ -0.000000 -0.000000 -0.000000 0.041653 -0.000000 + 27 CU 1 XY 0.024163 -0.000000 0.240827 0.000000 -0.000000 + 28 CU 1 XZ -0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 29 CU 1 YZ -0.000000 0.240827 -0.000000 0.000000 -0.000000 + 30 N 2 S 0.002098 -0.000036 0.000036 -0.001557 -0.000000 + 31 N 2 S -0.004809 0.000065 -0.000065 0.001548 -0.000000 + 32 N 2 X 0.199511 -0.007049 -0.009714 0.029677 0.178671 + 33 N 2 Y -0.005976 0.197159 -0.197159 0.239119 -0.000000 + 34 N 2 Z 0.139892 -0.009714 -0.007049 -0.029677 0.178671 + 35 N 2 S -0.007083 0.000387 -0.000387 0.009284 -0.000000 + 36 N 2 X 0.133986 -0.008036 -0.011633 0.029880 0.117533 + 37 N 2 Y -0.008214 0.147107 -0.147107 0.153707 -0.000000 + 38 N 2 Z 0.085193 -0.011633 -0.008036 -0.029880 0.117533 + 39 N 3 S -0.002098 0.000036 -0.000036 -0.001557 -0.000000 + 40 N 3 S 0.004809 -0.000065 0.000065 0.001548 -0.000000 + 41 N 3 X 0.199511 -0.007049 -0.009714 -0.029677 -0.178671 + 42 N 3 Y 0.005976 -0.197159 0.197159 0.239119 -0.000000 + 43 N 3 Z 0.139892 -0.009714 -0.007049 0.029677 -0.178671 + 44 N 3 S 0.007083 -0.000387 0.000387 0.009284 -0.000000 + 45 N 3 X 0.133986 -0.008036 -0.011633 -0.029880 -0.117533 + 46 N 3 Y 0.008214 -0.147107 0.147107 0.153707 -0.000000 + 47 N 3 Z 0.085193 -0.011633 -0.008036 0.029880 -0.117533 + 48 N 4 S -0.002098 -0.000036 -0.000036 -0.001557 -0.000000 + 49 N 4 S 0.004809 0.000065 0.000065 0.001548 -0.000000 + 50 N 4 X -0.199511 -0.007049 0.009714 0.029677 -0.178671 + 51 N 4 Y -0.005976 -0.197159 -0.197159 -0.239119 -0.000000 + 52 N 4 Z 0.139892 0.009714 -0.007049 0.029677 0.178671 + 53 N 4 S 0.007083 0.000387 0.000387 0.009284 -0.000000 + 54 N 4 X -0.133986 -0.008036 0.011633 0.029880 -0.117533 + 55 N 4 Y -0.008214 -0.147107 -0.147107 -0.153707 -0.000000 + 56 N 4 Z 0.085193 0.011633 -0.008036 0.029880 0.117533 + 57 N 5 S 0.002098 0.000036 0.000036 -0.001557 -0.000000 + 58 N 5 S -0.004809 -0.000065 -0.000065 0.001548 -0.000000 + 59 N 5 X -0.199511 -0.007049 0.009714 -0.029677 0.178671 + 60 N 5 Y 0.005976 0.197159 0.197159 -0.239119 -0.000000 + 61 N 5 Z 0.139892 0.009714 -0.007049 -0.029677 -0.178671 + 62 N 5 S -0.007083 -0.000387 -0.000387 0.009284 -0.000000 + 63 N 5 X -0.133986 -0.008036 0.011633 -0.029880 0.117533 + 64 N 5 Y 0.008214 0.147107 0.147107 -0.153707 -0.000000 + 65 N 5 Z 0.085193 0.011633 -0.008036 -0.029880 -0.117533 + 66 H 6 S -0.007419 -0.107435 0.107435 -0.144956 -0.000000 + 67 H 6 S 0.000289 -0.033447 0.033447 -0.049285 -0.000000 + 68 H 7 S 0.007419 0.107435 -0.107435 -0.144956 -0.000000 + 69 H 7 S -0.000289 0.033447 -0.033447 -0.049285 -0.000000 + 70 H 8 S 0.007419 -0.107435 -0.107435 -0.144956 -0.000000 + 71 H 8 S -0.000289 -0.033447 -0.033447 -0.049285 -0.000000 + 72 H 9 S -0.007419 0.107435 0.107435 -0.144956 -0.000000 + 73 H 9 S 0.000289 0.033447 0.033447 -0.049285 -0.000000 + 74 H 10 S -0.126579 0.058125 -0.048665 0.060286 -0.124927 + 75 H 10 S -0.045195 0.016649 -0.018630 0.030951 -0.050706 + 76 H 11 S 0.126579 -0.058125 0.048665 0.060286 -0.124927 + 77 H 11 S 0.045195 -0.016649 0.018630 0.030951 -0.050706 + 78 H 12 S 0.126579 0.058125 0.048665 0.060286 0.124927 + 79 H 12 S 0.045195 0.016649 0.018630 0.030951 0.050706 + 80 H 13 S -0.126579 -0.058125 -0.048665 0.060286 0.124927 + 81 H 13 S -0.045195 -0.016649 -0.018630 0.030951 0.050706 + 82 H 14 S 0.109138 0.048665 -0.058125 0.060286 0.124927 + 83 H 14 S 0.046884 0.018630 -0.016649 0.030951 0.050706 + 84 H 15 S -0.109138 -0.048665 0.058125 0.060286 0.124927 + 85 H 15 S -0.046884 -0.018630 0.016649 0.030951 0.050706 + 86 H 16 S -0.109138 0.048665 0.058125 0.060286 -0.124927 + 87 H 16 S -0.046884 0.018630 0.016649 0.030951 -0.050706 + 88 H 17 S 0.109138 -0.048665 -0.058125 0.060286 -0.124927 + 89 H 17 S 0.046884 -0.018630 -0.016649 0.030951 -0.050706 + + 26 27 28 29 30 + -0.9792 -0.8158 -0.8471 -0.8471 -0.9497 + A B2 B3 B1 B3 + 1 CU 1 S 0.005970 0.000000 -0.000000 -0.000000 0.000000 + 2 CU 1 S 0.019541 0.000000 -0.000000 -0.000000 0.000000 + 3 CU 1 X 0.000000 0.000000 -0.039743 -0.000000 -0.000391 + 4 CU 1 Y 0.000000 -0.000070 -0.000000 -0.000000 0.000000 + 5 CU 1 Z 0.000000 0.000000 -0.000000 -0.039743 0.000000 + 6 CU 1 S -0.074855 0.000000 -0.000000 -0.000000 0.000000 + 7 CU 1 X 0.000000 0.000000 0.114338 -0.000000 0.001384 + 8 CU 1 Y 0.000000 0.000326 -0.000000 -0.000000 0.000000 + 9 CU 1 Z 0.000000 0.000000 -0.000000 0.114338 0.000000 + 10 CU 1 S 0.028399 0.000000 -0.000000 -0.000000 0.000000 + 11 CU 1 X 0.000000 0.000000 -0.109464 -0.000000 0.000918 + 12 CU 1 Y 0.000000 0.000775 -0.000000 -0.000000 0.000000 + 13 CU 1 Z 0.000000 0.000000 -0.000000 -0.109464 0.000000 + 14 CU 1 S 0.076514 0.000000 -0.000000 -0.000000 0.000000 + 15 CU 1 X 0.000000 0.000000 0.028847 -0.000000 -0.006775 + 16 CU 1 Y 0.000000 -0.000528 -0.000000 -0.000000 0.000000 + 17 CU 1 Z 0.000000 0.000000 -0.000000 0.028847 0.000000 + 18 CU 1 XX -0.268379 0.000000 -0.000000 -0.000000 0.000000 + 19 CU 1 YY 0.536758 0.000000 -0.000000 -0.000000 0.000000 + 20 CU 1 ZZ -0.268379 0.000000 -0.000000 -0.000000 0.000000 + 21 CU 1 XY 0.000000 0.000000 -0.000000 -0.001441 0.000000 + 22 CU 1 XZ 0.000000 0.139178 -0.000000 -0.000000 0.000000 + 23 CU 1 YZ 0.000000 0.000000 -0.001441 -0.000000 0.621001 + 24 CU 1 XX -0.160822 0.000000 -0.000000 -0.000000 0.000000 + 25 CU 1 YY 0.321644 0.000000 -0.000000 -0.000000 0.000000 + 26 CU 1 ZZ -0.160822 0.000000 -0.000000 -0.000000 0.000000 + 27 CU 1 XY 0.000000 0.000000 -0.000000 -0.000848 0.000000 + 28 CU 1 XZ 0.000000 0.109411 -0.000000 -0.000000 0.000000 + 29 CU 1 YZ 0.000000 0.000000 -0.000848 -0.000000 0.361652 + 30 N 2 S 0.006700 0.030682 -0.025655 0.025655 0.000074 + 31 N 2 S -0.008167 -0.061021 0.052211 -0.052211 -0.000483 + 32 N 2 X -0.113880 -0.195673 0.223084 -0.156712 -0.004538 + 33 N 2 Y 0.063492 -0.003219 0.000945 -0.000945 -0.145821 + 34 N 2 Z 0.113880 0.195673 -0.156712 0.223084 -0.007460 + 35 N 2 S -0.045800 -0.139498 0.094566 -0.094566 0.001118 + 36 N 2 X -0.103032 -0.176245 0.190150 -0.137326 -0.003972 + 37 N 2 Y 0.040781 -0.003569 0.001832 -0.001832 -0.064000 + 38 N 2 Z 0.103032 0.176245 -0.137326 0.190150 -0.005619 + 39 N 3 S 0.006700 0.030682 0.025655 -0.025655 -0.000074 + 40 N 3 S -0.008167 -0.061021 -0.052211 0.052211 0.000483 + 41 N 3 X 0.113880 0.195673 0.223084 -0.156712 -0.004538 + 42 N 3 Y 0.063492 -0.003219 -0.000945 0.000945 0.145821 + 43 N 3 Z -0.113880 -0.195673 -0.156712 0.223084 -0.007460 + 44 N 3 S -0.045800 -0.139498 -0.094566 0.094566 -0.001118 + 45 N 3 X 0.103032 0.176245 0.190150 -0.137326 -0.003972 + 46 N 3 Y 0.040781 -0.003569 -0.001832 0.001832 0.064000 + 47 N 3 Z -0.103032 -0.176245 -0.137326 0.190150 -0.005619 + 48 N 4 S 0.006700 -0.030682 -0.025655 -0.025655 0.000074 + 49 N 4 S -0.008167 0.061021 0.052211 0.052211 -0.000483 + 50 N 4 X -0.113880 0.195673 0.223084 0.156712 -0.004538 + 51 N 4 Y -0.063492 -0.003219 -0.000945 -0.000945 0.145821 + 52 N 4 Z -0.113880 0.195673 0.156712 0.223084 0.007460 + 53 N 4 S -0.045800 0.139498 0.094566 0.094566 0.001118 + 54 N 4 X -0.103032 0.176245 0.190150 0.137326 -0.003972 + 55 N 4 Y -0.040781 -0.003569 -0.001832 -0.001832 0.064000 + 56 N 4 Z -0.103032 0.176245 0.137326 0.190150 0.005619 + 57 N 5 S 0.006700 -0.030682 0.025655 0.025655 -0.000074 + 58 N 5 S -0.008167 0.061021 -0.052211 -0.052211 0.000483 + 59 N 5 X 0.113880 -0.195673 0.223084 0.156712 -0.004538 + 60 N 5 Y -0.063492 -0.003219 0.000945 0.000945 -0.145821 + 61 N 5 Z 0.113880 -0.195673 0.156712 0.223084 0.007460 + 62 N 5 S -0.045800 0.139498 -0.094566 -0.094566 -0.001118 + 63 N 5 X 0.103032 -0.176245 0.190150 0.137326 -0.003972 + 64 N 5 Y -0.040781 -0.003569 0.001832 0.001832 -0.064000 + 65 N 5 Z 0.103032 -0.176245 0.137326 0.190150 0.005619 + 66 H 6 S -0.005937 0.038099 -0.037964 0.037964 0.090164 + 67 H 6 S -0.017920 0.015902 -0.008408 0.008408 0.046711 + 68 H 7 S -0.005937 0.038099 0.037964 -0.037964 -0.090164 + 69 H 7 S -0.017920 0.015902 0.008408 -0.008408 -0.046711 + 70 H 8 S -0.005937 -0.038099 -0.037964 -0.037964 0.090164 + 71 H 8 S -0.017920 -0.015902 -0.008408 -0.008408 0.046711 + 72 H 9 S -0.005937 -0.038099 0.037964 0.037964 -0.090164 + 73 H 9 S -0.017920 -0.015902 0.008408 0.008408 -0.046711 + 74 H 10 S 0.047371 0.037946 -0.064355 0.012457 -0.041059 + 75 H 10 S 0.003766 0.016262 -0.020178 -0.000504 -0.026792 + 76 H 11 S 0.047371 0.037946 0.064355 -0.012457 0.041059 + 77 H 11 S 0.003766 0.016262 0.020178 0.000504 0.026792 + 78 H 12 S 0.047371 -0.037946 -0.064355 -0.012457 -0.041059 + 79 H 12 S 0.003766 -0.016262 -0.020178 0.000504 -0.026792 + 80 H 13 S 0.047371 -0.037946 0.064355 0.012457 0.041059 + 81 H 13 S 0.003766 -0.016262 0.020178 -0.000504 0.026792 + 82 H 14 S 0.047371 0.037946 -0.012457 0.064355 -0.050487 + 83 H 14 S 0.003766 0.016262 0.000504 0.020178 -0.023973 + 84 H 15 S 0.047371 0.037946 0.012457 -0.064355 0.050487 + 85 H 15 S 0.003766 0.016262 -0.000504 -0.020178 0.023973 + 86 H 16 S 0.047371 -0.037946 -0.012457 -0.064355 -0.050487 + 87 H 16 S 0.003766 -0.016262 0.000504 -0.020178 -0.023973 + 88 H 17 S 0.047371 -0.037946 0.012457 0.064355 0.050487 + 89 H 17 S 0.003766 -0.016262 -0.000504 0.020178 0.023973 + + 31 32 33 34 35 + -0.9497 -0.9824 -0.8881 -0.5048 0.0236 + B1 A A B2 A + 1 CU 1 S -0.000000 0.000000 -0.013789 -0.000000 0.012466 + 2 CU 1 S -0.000000 0.000000 -0.053353 -0.000000 0.056009 + 3 CU 1 X -0.000000 0.000000 0.000000 -0.000000 0.000000 + 4 CU 1 Y -0.000000 0.000000 0.000000 0.000014 0.000000 + 5 CU 1 Z -0.000391 0.000000 0.000000 -0.000000 0.000000 + 6 CU 1 S -0.000000 0.000000 0.157836 -0.000000 -0.130198 + 7 CU 1 X -0.000000 0.000000 0.000000 -0.000000 0.000000 + 8 CU 1 Y -0.000000 0.000000 0.000000 -0.000102 0.000000 + 9 CU 1 Z 0.001384 0.000000 0.000000 -0.000000 0.000000 + 10 CU 1 S -0.000000 0.000000 -0.239107 -0.000000 0.460532 + 11 CU 1 X -0.000000 0.000000 0.000000 -0.000000 0.000000 + 12 CU 1 Y -0.000000 0.000000 0.000000 -0.000439 0.000000 + 13 CU 1 Z 0.000918 0.000000 0.000000 -0.000000 0.000000 + 14 CU 1 S -0.000000 0.000000 0.080643 -0.000000 -0.849126 + 15 CU 1 X -0.000000 0.000000 0.000000 -0.000000 0.000000 + 16 CU 1 Y -0.000000 0.000000 0.000000 0.000467 0.000000 + 17 CU 1 Z -0.006775 0.000000 0.000000 -0.000000 0.000000 + 18 CU 1 XX -0.000000 0.463097 -0.240269 -0.000000 -0.037844 + 19 CU 1 YY -0.000000 0.000000 0.480538 -0.000000 0.075689 + 20 CU 1 ZZ -0.000000 -0.463097 -0.240269 -0.000000 -0.037844 + 21 CU 1 XY 0.621001 0.000000 0.000000 -0.000000 0.000000 + 22 CU 1 XZ -0.000000 0.000000 0.000000 0.761930 0.000000 + 23 CU 1 YZ -0.000000 0.000000 0.000000 -0.000000 0.000000 + 24 CU 1 XX -0.000000 0.262614 -0.136141 -0.000000 -0.021771 + 25 CU 1 YY -0.000000 0.000000 0.272281 -0.000000 0.043541 + 26 CU 1 ZZ -0.000000 -0.262614 -0.136141 -0.000000 -0.021771 + 27 CU 1 XY 0.361652 0.000000 0.000000 -0.000000 0.000000 + 28 CU 1 XZ -0.000000 0.000000 0.000000 0.401047 0.000000 + 29 CU 1 YZ -0.000000 0.000000 0.000000 -0.000000 0.000000 + 30 N 2 S -0.000074 0.000000 -0.011539 -0.018299 0.004519 + 31 N 2 S 0.000483 0.000000 0.029146 0.040805 0.021120 + 32 N 2 X -0.007460 0.125536 0.133407 0.061884 0.087169 + 33 N 2 Y 0.145821 0.000000 0.000048 0.000403 0.142423 + 34 N 2 Z -0.004538 0.125536 -0.133407 -0.061884 -0.087169 + 35 N 2 S -0.001118 0.000000 0.024530 0.067974 -0.299245 + 36 N 2 X -0.005619 0.058075 0.091836 0.062999 0.226853 + 37 N 2 Y 0.064000 0.000000 0.001837 0.001417 0.425918 + 38 N 2 Z -0.003972 0.058075 -0.091836 -0.062999 -0.226853 + 39 N 3 S 0.000074 0.000000 -0.011539 -0.018299 0.004519 + 40 N 3 S -0.000483 0.000000 0.029146 0.040805 0.021120 + 41 N 3 X -0.007460 -0.125536 -0.133407 -0.061884 -0.087169 + 42 N 3 Y -0.145821 0.000000 0.000048 0.000403 0.142423 + 43 N 3 Z -0.004538 -0.125536 0.133407 0.061884 0.087169 + 44 N 3 S 0.001118 0.000000 0.024530 0.067974 -0.299245 + 45 N 3 X -0.005619 -0.058075 -0.091836 -0.062999 -0.226853 + 46 N 3 Y -0.064000 0.000000 0.001837 0.001417 0.425918 + 47 N 3 Z -0.003972 -0.058075 0.091836 0.062999 0.226853 + 48 N 4 S 0.000074 0.000000 -0.011539 0.018299 0.004519 + 49 N 4 S -0.000483 0.000000 0.029146 -0.040805 0.021120 + 50 N 4 X 0.007460 0.125536 0.133407 -0.061884 0.087169 + 51 N 4 Y 0.145821 0.000000 -0.000048 0.000403 -0.142423 + 52 N 4 Z -0.004538 -0.125536 0.133407 -0.061884 0.087169 + 53 N 4 S 0.001118 0.000000 0.024530 -0.067974 -0.299245 + 54 N 4 X 0.005619 0.058075 0.091836 -0.062999 0.226853 + 55 N 4 Y 0.064000 0.000000 -0.001837 0.001417 -0.425918 + 56 N 4 Z -0.003972 -0.058075 0.091836 -0.062999 0.226853 + 57 N 5 S -0.000074 0.000000 -0.011539 0.018299 0.004519 + 58 N 5 S 0.000483 0.000000 0.029146 -0.040805 0.021120 + 59 N 5 X 0.007460 -0.125536 -0.133407 0.061884 -0.087169 + 60 N 5 Y -0.145821 0.000000 -0.000048 0.000403 -0.142423 + 61 N 5 Z -0.004538 0.125536 -0.133407 0.061884 -0.087169 + 62 N 5 S -0.001118 0.000000 0.024530 -0.067974 -0.299245 + 63 N 5 X 0.005619 -0.058075 -0.091836 0.062999 -0.226853 + 64 N 5 Y -0.064000 0.000000 -0.001837 0.001417 -0.425918 + 65 N 5 Z -0.003972 0.058075 -0.091836 0.062999 -0.226853 + 66 H 6 S -0.090164 0.000000 -0.027515 -0.004375 0.060617 + 67 H 6 S -0.046711 0.000000 -0.014922 -0.008462 1.001826 + 68 H 7 S 0.090164 0.000000 -0.027515 -0.004375 0.060617 + 69 H 7 S 0.046711 0.000000 -0.014922 -0.008462 1.001826 + 70 H 8 S 0.090164 0.000000 -0.027515 0.004375 0.060617 + 71 H 8 S 0.046711 0.000000 -0.014922 0.008462 1.001826 + 72 H 9 S -0.090164 0.000000 -0.027515 0.004375 0.060617 + 73 H 9 S -0.046711 0.000000 -0.014922 0.008462 1.001826 + 74 H 10 S 0.050487 -0.093876 -0.027528 -0.005115 -0.010641 + 75 H 10 S 0.023973 -0.050857 -0.019749 -0.009852 -0.031787 + 76 H 11 S -0.050487 -0.093876 -0.027528 -0.005115 -0.010641 + 77 H 11 S -0.023973 -0.050857 -0.019749 -0.009852 -0.031787 + 78 H 12 S -0.050487 -0.093876 -0.027528 0.005115 -0.010641 + 79 H 12 S -0.023973 -0.050857 -0.019749 0.009852 -0.031787 + 80 H 13 S 0.050487 -0.093876 -0.027528 0.005115 -0.010641 + 81 H 13 S 0.023973 -0.050857 -0.019749 0.009852 -0.031787 + 82 H 14 S 0.041059 0.093876 -0.027528 -0.005115 -0.010641 + 83 H 14 S 0.026792 0.050857 -0.019749 -0.009852 -0.031787 + 84 H 15 S -0.041059 0.093876 -0.027528 -0.005115 -0.010641 + 85 H 15 S -0.026792 0.050857 -0.019749 -0.009852 -0.031787 + 86 H 16 S -0.041059 0.093876 -0.027528 0.005115 -0.010641 + 87 H 16 S -0.026792 0.050857 -0.019749 0.009852 -0.031787 + 88 H 17 S 0.041059 0.093876 -0.027528 0.005115 -0.010641 + 89 H 17 S 0.026792 0.050857 -0.019749 0.009852 -0.031787 + + 36 37 38 39 40 + -0.0248 -0.0112 -0.0112 -0.0091 0.0626 + A B3 B1 B3 A + 1 CU 1 S -0.000000 -0.000000 0.000000 -0.000000 0.015987 + 2 CU 1 S -0.000000 -0.000000 0.000000 -0.000000 0.169650 + 3 CU 1 X -0.000000 0.013708 0.000000 -0.011368 0.000000 + 4 CU 1 Y -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 5 CU 1 Z -0.000000 -0.000000 -0.013708 -0.000000 0.000000 + 6 CU 1 S -0.000000 -0.000000 0.000000 -0.000000 0.047225 + 7 CU 1 X -0.000000 -0.024820 0.000000 0.022477 0.000000 + 8 CU 1 Y -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 9 CU 1 Z -0.000000 -0.000000 0.024820 -0.000000 0.000000 + 10 CU 1 S -0.000000 -0.000000 0.000000 -0.000000 2.457765 + 11 CU 1 X -0.000000 0.149958 0.000000 -0.110104 0.000000 + 12 CU 1 Y -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 13 CU 1 Z -0.000000 -0.000000 -0.149958 -0.000000 0.000000 + 14 CU 1 S -0.000000 -0.000000 0.000000 -0.000000 2.347565 + 15 CU 1 X -0.000000 0.118506 0.000000 0.150516 0.000000 + 16 CU 1 Y -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 17 CU 1 Z -0.000000 -0.000000 -0.118506 -0.000000 0.000000 + 18 CU 1 XX -0.053635 -0.000000 0.000000 -0.000000 -0.030885 + 19 CU 1 YY -0.000000 -0.000000 0.000000 -0.000000 0.061771 + 20 CU 1 ZZ 0.053635 -0.000000 0.000000 -0.000000 -0.030885 + 21 CU 1 XY -0.000000 -0.000000 -0.042499 -0.000000 0.000000 + 22 CU 1 XZ -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 23 CU 1 YZ -0.000000 0.042499 0.000000 0.020409 0.000000 + 24 CU 1 XX -0.022999 -0.000000 0.000000 -0.000000 -0.020959 + 25 CU 1 YY -0.000000 -0.000000 0.000000 -0.000000 0.041919 + 26 CU 1 ZZ 0.022999 -0.000000 0.000000 -0.000000 -0.020959 + 27 CU 1 XY -0.000000 -0.000000 -0.016580 -0.000000 0.000000 + 28 CU 1 XZ -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 29 CU 1 YZ -0.000000 0.016580 0.000000 0.011717 0.000000 + 30 N 2 S -0.000000 -0.010321 -0.010321 0.016624 -0.038822 + 31 N 2 S -0.000000 0.022458 0.022458 -0.029657 0.090689 + 32 N 2 X -0.122082 0.100503 -0.079770 -0.053389 0.058043 + 33 N 2 Y -0.000000 -0.098001 -0.098001 -0.137309 -0.043440 + 34 N 2 Z -0.122082 0.079770 -0.100503 -0.061259 -0.058043 + 35 N 2 S -0.000000 0.121034 0.121034 -0.248515 0.439898 + 36 N 2 X -0.373552 0.285443 -0.251823 -0.211262 0.076261 + 37 N 2 Y -0.000000 -0.370994 -0.370994 -0.382829 -0.112946 + 38 N 2 Z -0.373552 0.251823 -0.285443 -0.285464 -0.076261 + 39 N 3 S -0.000000 0.010321 0.010321 -0.016624 -0.038822 + 40 N 3 S -0.000000 -0.022458 -0.022458 0.029657 0.090689 + 41 N 3 X 0.122082 0.100503 -0.079770 -0.053389 -0.058043 + 42 N 3 Y -0.000000 0.098001 0.098001 0.137309 -0.043440 + 43 N 3 Z 0.122082 0.079770 -0.100503 -0.061259 0.058043 + 44 N 3 S -0.000000 -0.121034 -0.121034 0.248515 0.439898 + 45 N 3 X 0.373552 0.285443 -0.251823 -0.211262 -0.076261 + 46 N 3 Y -0.000000 0.370994 0.370994 0.382829 -0.112946 + 47 N 3 Z 0.373552 0.251823 -0.285443 -0.285464 0.076261 + 48 N 4 S -0.000000 -0.010321 0.010321 0.016624 -0.038822 + 49 N 4 S -0.000000 0.022458 -0.022458 -0.029657 0.090689 + 50 N 4 X -0.122082 0.100503 0.079770 -0.053389 0.058043 + 51 N 4 Y -0.000000 0.098001 -0.098001 0.137309 0.043440 + 52 N 4 Z 0.122082 -0.079770 -0.100503 0.061259 0.058043 + 53 N 4 S -0.000000 0.121034 -0.121034 -0.248515 0.439898 + 54 N 4 X -0.373552 0.285443 0.251823 -0.211262 0.076261 + 55 N 4 Y -0.000000 0.370994 -0.370994 0.382829 0.112946 + 56 N 4 Z 0.373552 -0.251823 -0.285443 0.285464 0.076261 + 57 N 5 S -0.000000 0.010321 -0.010321 -0.016624 -0.038822 + 58 N 5 S -0.000000 -0.022458 0.022458 0.029657 0.090689 + 59 N 5 X 0.122082 0.100503 0.079770 -0.053389 -0.058043 + 60 N 5 Y -0.000000 -0.098001 0.098001 -0.137309 0.043440 + 61 N 5 Z -0.122082 -0.079770 -0.100503 0.061259 -0.058043 + 62 N 5 S -0.000000 -0.121034 0.121034 0.248515 0.439898 + 63 N 5 X 0.373552 0.285443 0.251823 -0.211262 -0.076261 + 64 N 5 Y -0.000000 -0.370994 0.370994 -0.382829 0.112946 + 65 N 5 Z -0.373552 -0.251823 -0.285443 0.285464 -0.076261 + 66 H 6 S -0.000000 -0.059491 -0.059491 -0.016709 -0.000546 + 67 H 6 S -0.000000 -0.586985 -0.586985 -0.484956 -0.523337 + 68 H 7 S -0.000000 0.059491 0.059491 0.016709 -0.000546 + 69 H 7 S -0.000000 0.586985 0.586985 0.484956 -0.523337 + 70 H 8 S -0.000000 -0.059491 0.059491 -0.016709 -0.000546 + 71 H 8 S -0.000000 -0.586985 0.586985 -0.484956 -0.523337 + 72 H 9 S -0.000000 0.059491 -0.059491 0.016709 -0.000546 + 73 H 9 S -0.000000 0.586985 -0.586985 0.484956 -0.523337 + 74 H 10 S -0.038003 0.058009 -0.008569 -0.034492 0.013049 + 75 H 10 S -0.711165 0.784621 -0.290428 -0.004061 -0.232366 + 76 H 11 S -0.038003 -0.058009 0.008569 0.034492 0.013049 + 77 H 11 S -0.711165 -0.784621 0.290428 0.004061 -0.232366 + 78 H 12 S -0.038003 0.058009 0.008569 -0.034492 0.013049 + 79 H 12 S -0.711165 0.784621 0.290428 -0.004061 -0.232366 + 80 H 13 S -0.038003 -0.058009 -0.008569 0.034492 0.013049 + 81 H 13 S -0.711165 -0.784621 -0.290428 0.004061 -0.232366 + 82 H 14 S 0.038003 -0.008569 0.058009 0.071237 0.013049 + 83 H 14 S 0.711165 -0.290428 0.784621 0.930542 -0.232366 + 84 H 15 S 0.038003 0.008569 -0.058009 -0.071237 0.013049 + 85 H 15 S 0.711165 0.290428 -0.784621 -0.930542 -0.232366 + 86 H 16 S 0.038003 -0.008569 -0.058009 0.071237 0.013049 + 87 H 16 S 0.711165 -0.290428 -0.784621 0.930542 -0.232366 + 88 H 17 S 0.038003 0.008569 0.058009 -0.071237 0.013049 + 89 H 17 S 0.711165 0.290428 0.784621 -0.930542 -0.232366 + + 41 42 43 44 45 + 1.2698 0.7215 0.8612 0.8893 2.1811 + A A A A A + 1 CU 1 S 0.005172 -0.002609 -0.000000 -0.000333 0.003447 + 2 CU 1 S 0.057125 0.027630 -0.000000 0.003862 0.036125 + 3 CU 1 X 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 4 CU 1 Y 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 5 CU 1 Z 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 6 CU 1 S 0.015472 0.108200 -0.000000 0.014266 0.005844 + 7 CU 1 X 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 8 CU 1 Y 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 9 CU 1 Z 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 10 CU 1 S 0.926517 0.778577 -0.000000 0.111938 0.597025 + 11 CU 1 X 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 12 CU 1 Y 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 13 CU 1 Z 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 14 CU 1 S 0.549174 -0.362912 -0.000000 -0.110212 -0.198647 + 15 CU 1 X 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 16 CU 1 Y 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 17 CU 1 Z 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 18 CU 1 XX -0.089421 -0.029078 -0.046328 -0.001001 0.382008 + 19 CU 1 YY 0.178843 0.058157 -0.000000 0.002001 -0.764016 + 20 CU 1 ZZ -0.089421 -0.029078 0.046328 -0.001001 0.382008 + 21 CU 1 XY 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 22 CU 1 XZ 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 23 CU 1 YZ 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 24 CU 1 XX 0.053946 -0.031480 -0.000765 -0.007224 -0.534101 + 25 CU 1 YY -0.107891 0.062960 -0.000000 0.014448 1.068202 + 26 CU 1 ZZ 0.053946 -0.031480 0.000765 -0.007224 -0.534101 + 27 CU 1 XY 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 28 CU 1 XZ 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 29 CU 1 YZ 0.000000 -0.000000 -0.000000 0.000000 0.000000 + 30 N 2 S -0.015113 0.018507 -0.000000 0.020829 -0.014267 + 31 N 2 S -0.893902 -0.175807 -0.000000 -0.172083 -0.253148 + 32 N 2 X 0.015092 -0.236678 0.336314 0.028342 -0.016454 + 33 N 2 Y 0.000928 -0.106278 -0.000000 -0.425549 -0.008638 + 34 N 2 Z -0.015092 0.236678 0.336314 -0.028342 0.016454 + 35 N 2 S 1.953172 0.066598 -0.000000 0.129612 0.590042 + 36 N 2 X -0.220758 0.467392 -0.380277 0.074431 0.122024 + 37 N 2 Y -0.021258 0.436218 -0.000000 0.507307 0.031097 + 38 N 2 Z 0.220758 -0.467392 -0.380277 -0.074431 -0.122024 + 39 N 3 S -0.015113 0.018507 -0.000000 0.020829 -0.014267 + 40 N 3 S -0.893902 -0.175807 -0.000000 -0.172083 -0.253148 + 41 N 3 X -0.015092 0.236678 -0.336314 -0.028342 0.016454 + 42 N 3 Y 0.000928 -0.106278 -0.000000 -0.425549 -0.008638 + 43 N 3 Z 0.015092 -0.236678 -0.336314 0.028342 -0.016454 + 44 N 3 S 1.953172 0.066598 -0.000000 0.129612 0.590042 + 45 N 3 X 0.220758 -0.467392 0.380277 -0.074431 -0.122024 + 46 N 3 Y -0.021258 0.436218 -0.000000 0.507307 0.031097 + 47 N 3 Z -0.220758 0.467392 0.380277 0.074431 0.122024 + 48 N 4 S -0.015113 0.018507 -0.000000 0.020829 -0.014267 + 49 N 4 S -0.893902 -0.175807 -0.000000 -0.172083 -0.253148 + 50 N 4 X 0.015092 -0.236678 0.336314 0.028342 -0.016454 + 51 N 4 Y -0.000928 0.106278 -0.000000 0.425549 0.008638 + 52 N 4 Z 0.015092 -0.236678 -0.336314 0.028342 -0.016454 + 53 N 4 S 1.953172 0.066598 -0.000000 0.129612 0.590042 + 54 N 4 X -0.220758 0.467392 -0.380277 0.074431 0.122024 + 55 N 4 Y 0.021258 -0.436218 -0.000000 -0.507307 -0.031097 + 56 N 4 Z -0.220758 0.467392 0.380277 0.074431 0.122024 + 57 N 5 S -0.015113 0.018507 -0.000000 0.020829 -0.014267 + 58 N 5 S -0.893902 -0.175807 -0.000000 -0.172083 -0.253148 + 59 N 5 X -0.015092 0.236678 -0.336314 -0.028342 0.016454 + 60 N 5 Y -0.000928 0.106278 -0.000000 0.425549 0.008638 + 61 N 5 Z -0.015092 0.236678 0.336314 -0.028342 0.016454 + 62 N 5 S 1.953172 0.066598 -0.000000 0.129612 0.590042 + 63 N 5 X 0.220758 -0.467392 0.380277 -0.074431 -0.122024 + 64 N 5 Y 0.021258 -0.436218 -0.000000 -0.507307 -0.031097 + 65 N 5 Z 0.220758 -0.467392 -0.380277 -0.074431 -0.122024 + 66 H 6 S -0.300761 0.418136 -0.000000 -0.173107 -0.072969 + 67 H 6 S -0.333167 0.064227 -0.000000 0.577446 0.014087 + 68 H 7 S -0.300761 0.418136 -0.000000 -0.173107 -0.072969 + 69 H 7 S -0.333167 0.064227 -0.000000 0.577446 0.014087 + 70 H 8 S -0.300761 0.418136 -0.000000 -0.173107 -0.072969 + 71 H 8 S -0.333167 0.064227 -0.000000 0.577446 0.014087 + 72 H 9 S -0.300761 0.418136 -0.000000 -0.173107 -0.072969 + 73 H 9 S -0.333167 0.064227 -0.000000 0.577446 0.014087 + 74 H 10 S -0.241990 -0.062496 0.326070 0.334359 -0.069388 + 75 H 10 S -0.396855 0.121029 -0.575000 -0.377480 -0.043312 + 76 H 11 S -0.241990 -0.062496 0.326070 0.334359 -0.069388 + 77 H 11 S -0.396855 0.121029 -0.575000 -0.377480 -0.043312 + 78 H 12 S -0.241990 -0.062496 0.326070 0.334359 -0.069388 + 79 H 12 S -0.396855 0.121029 -0.575000 -0.377480 -0.043312 + 80 H 13 S -0.241990 -0.062496 0.326070 0.334359 -0.069388 + 81 H 13 S -0.396855 0.121029 -0.575000 -0.377480 -0.043312 + 82 H 14 S -0.241990 -0.062496 -0.326070 0.334359 -0.069388 + 83 H 14 S -0.396855 0.121029 0.575000 -0.377480 -0.043312 + 84 H 15 S -0.241990 -0.062496 -0.326070 0.334359 -0.069388 + 85 H 15 S -0.396855 0.121029 0.575000 -0.377480 -0.043312 + 86 H 16 S -0.241990 -0.062496 -0.326070 0.334359 -0.069388 + 87 H 16 S -0.396855 0.121029 0.575000 -0.377480 -0.043312 + 88 H 17 S -0.241990 -0.062496 -0.326070 0.334359 -0.069388 + 89 H 17 S -0.396855 0.121029 0.575000 -0.377480 -0.043312 + + 46 47 48 49 50 + 2.0877 0.6431 0.9311 -0.0649 0.4082 + A A A A A + 1 CU 1 S 0.000000 -0.002964 -0.001337 -0.008900 0.000000 + 2 CU 1 S 0.000000 0.023866 0.003932 -0.019798 0.000000 + 3 CU 1 X 0.000000 0.000000 0.000000 -0.000000 0.000000 + 4 CU 1 Y 0.000000 0.000000 0.000000 -0.000000 0.000000 + 5 CU 1 Z 0.000000 0.000000 0.000000 -0.000000 0.000000 + 6 CU 1 S 0.000000 0.108241 0.036272 0.137165 0.000000 + 7 CU 1 X 0.000000 0.000000 0.000000 -0.000000 0.000000 + 8 CU 1 Y 0.000000 0.000000 0.000000 -0.000000 0.000000 + 9 CU 1 Z 0.000000 0.000000 0.000000 -0.000000 0.000000 + 10 CU 1 S 0.000000 0.699999 0.126036 0.055374 0.000000 + 11 CU 1 X 0.000000 0.000000 0.000000 -0.000000 0.000000 + 12 CU 1 Y 0.000000 0.000000 0.000000 -0.000000 0.000000 + 13 CU 1 Z 0.000000 0.000000 0.000000 -0.000000 0.000000 + 14 CU 1 S 0.000000 -0.097902 0.744491 1.382328 0.000000 + 15 CU 1 X 0.000000 0.000000 0.000000 -0.000000 0.000000 + 16 CU 1 Y 0.000000 0.000000 0.000000 -0.000000 0.000000 + 17 CU 1 Z 0.000000 0.000000 0.000000 -0.000000 0.000000 + 18 CU 1 XX 0.664646 -0.015317 0.013184 0.041683 0.131644 + 19 CU 1 YY 0.000000 0.030633 -0.026368 -0.083365 0.000000 + 20 CU 1 ZZ -0.664646 -0.015317 0.013184 0.041683 -0.131644 + 21 CU 1 XY 0.000000 0.000000 0.000000 -0.000000 0.000000 + 22 CU 1 XZ 0.000000 0.000000 0.000000 -0.000000 0.000000 + 23 CU 1 YZ 0.000000 0.000000 0.000000 -0.000000 0.000000 + 24 CU 1 XX -0.899866 -0.029666 -0.002436 0.024231 -0.000318 + 25 CU 1 YY 0.000000 0.059331 0.004872 -0.048462 0.000000 + 26 CU 1 ZZ 0.899866 -0.029666 -0.002436 0.024231 0.000318 + 27 CU 1 XY 0.000000 0.000000 0.000000 -0.000000 0.000000 + 28 CU 1 XZ 0.000000 0.000000 0.000000 -0.000000 0.000000 + 29 CU 1 YZ 0.000000 0.000000 0.000000 -0.000000 0.000000 + 30 N 2 S 0.000000 0.006843 0.035875 -0.025333 0.000000 + 31 N 2 S 0.000000 -0.052409 -0.368171 0.022544 0.000000 + 32 N 2 X 0.052922 -0.227829 0.171689 -0.072024 -0.165161 + 33 N 2 Y 0.000000 0.225007 0.231103 0.083313 0.000000 + 34 N 2 Z 0.052922 0.227829 -0.171689 0.072024 -0.165161 + 35 N 2 S 0.000000 -0.004988 0.525343 0.521268 0.000000 + 36 N 2 X -0.191607 0.384350 -0.172952 -0.242233 0.409214 + 37 N 2 Y 0.000000 -0.526132 -0.372939 0.310667 0.000000 + 38 N 2 Z -0.191607 -0.384350 0.172952 0.242233 0.409214 + 39 N 3 S 0.000000 0.006843 0.035875 -0.025333 0.000000 + 40 N 3 S 0.000000 -0.052409 -0.368171 0.022544 0.000000 + 41 N 3 X -0.052922 0.227829 -0.171689 0.072024 0.165161 + 42 N 3 Y 0.000000 0.225007 0.231103 0.083313 0.000000 + 43 N 3 Z -0.052922 -0.227829 0.171689 -0.072024 0.165161 + 44 N 3 S 0.000000 -0.004988 0.525343 0.521268 0.000000 + 45 N 3 X 0.191607 -0.384350 0.172952 0.242233 -0.409214 + 46 N 3 Y 0.000000 -0.526132 -0.372939 0.310667 0.000000 + 47 N 3 Z 0.191607 0.384350 -0.172952 -0.242233 -0.409214 + 48 N 4 S 0.000000 0.006843 0.035875 -0.025333 0.000000 + 49 N 4 S 0.000000 -0.052409 -0.368171 0.022544 0.000000 + 50 N 4 X 0.052922 -0.227829 0.171689 -0.072024 -0.165161 + 51 N 4 Y 0.000000 -0.225007 -0.231103 -0.083313 0.000000 + 52 N 4 Z -0.052922 -0.227829 0.171689 -0.072024 0.165161 + 53 N 4 S 0.000000 -0.004988 0.525343 0.521268 0.000000 + 54 N 4 X -0.191607 0.384350 -0.172952 -0.242233 0.409214 + 55 N 4 Y 0.000000 0.526132 0.372939 -0.310667 0.000000 + 56 N 4 Z 0.191607 0.384350 -0.172952 -0.242233 -0.409214 + 57 N 5 S 0.000000 0.006843 0.035875 -0.025333 0.000000 + 58 N 5 S 0.000000 -0.052409 -0.368171 0.022544 0.000000 + 59 N 5 X -0.052922 0.227829 -0.171689 0.072024 0.165161 + 60 N 5 Y 0.000000 -0.225007 -0.231103 -0.083313 0.000000 + 61 N 5 Z 0.052922 0.227829 -0.171689 0.072024 -0.165161 + 62 N 5 S 0.000000 -0.004988 0.525343 0.521268 0.000000 + 63 N 5 X 0.191607 -0.384350 0.172952 0.242233 -0.409214 + 64 N 5 Y 0.000000 0.526132 0.372939 -0.310667 0.000000 + 65 N 5 Z -0.191607 -0.384350 0.172952 0.242233 0.409214 + 66 H 6 S 0.000000 -0.239250 0.409439 0.033270 0.000000 + 67 H 6 S 0.000000 0.106355 -0.742444 0.004135 0.000000 + 68 H 7 S 0.000000 -0.239250 0.409439 0.033270 0.000000 + 69 H 7 S 0.000000 0.106355 -0.742444 0.004135 0.000000 + 70 H 8 S 0.000000 -0.239250 0.409439 0.033270 0.000000 + 71 H 8 S 0.000000 0.106355 -0.742444 0.004135 0.000000 + 72 H 9 S 0.000000 -0.239250 0.409439 0.033270 0.000000 + 73 H 9 S 0.000000 0.106355 -0.742444 0.004135 0.000000 + 74 H 10 S -0.043291 0.198653 0.247376 -0.036115 0.321456 + 75 H 10 S -0.136394 0.046653 -0.198050 -0.668606 0.038867 + 76 H 11 S -0.043291 0.198653 0.247376 -0.036115 0.321456 + 77 H 11 S -0.136394 0.046653 -0.198050 -0.668606 0.038867 + 78 H 12 S -0.043291 0.198653 0.247376 -0.036115 0.321456 + 79 H 12 S -0.136394 0.046653 -0.198050 -0.668606 0.038867 + 80 H 13 S -0.043291 0.198653 0.247376 -0.036115 0.321456 + 81 H 13 S -0.136394 0.046653 -0.198050 -0.668606 0.038867 + 82 H 14 S 0.043291 0.198653 0.247376 -0.036115 -0.321456 + 83 H 14 S 0.136394 0.046653 -0.198050 -0.668606 -0.038867 + 84 H 15 S 0.043291 0.198653 0.247376 -0.036115 -0.321456 + 85 H 15 S 0.136394 0.046653 -0.198050 -0.668606 -0.038867 + 86 H 16 S 0.043291 0.198653 0.247376 -0.036115 -0.321456 + 87 H 16 S 0.136394 0.046653 -0.198050 -0.668606 -0.038867 + 88 H 17 S 0.043291 0.198653 0.247376 -0.036115 -0.321456 + 89 H 17 S 0.136394 0.046653 -0.198050 -0.668606 -0.038867 + + 51 52 53 54 55 + -0.2027 0.0991 1.5885 -0.1586 0.9038 + A B1 B1 B1 B1 + 1 CU 1 S -0.009781 -0.000000 0.000000 -0.000000 0.000000 + 2 CU 1 S -0.004698 -0.000000 0.000000 -0.000000 0.000000 + 3 CU 1 X -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 4 CU 1 Y -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 5 CU 1 Z -0.000000 -0.003585 -0.062073 0.000928 -0.015903 + 6 CU 1 S 0.187124 -0.000000 0.000000 -0.000000 0.000000 + 7 CU 1 X -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 8 CU 1 Y -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 9 CU 1 Z -0.000000 -0.022962 -0.073609 -0.034419 0.045519 + 10 CU 1 S 0.407574 -0.000000 0.000000 -0.000000 0.000000 + 11 CU 1 X -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 12 CU 1 Y -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 13 CU 1 Z -0.000000 -0.243826 -2.039214 -0.217934 -0.068843 + 14 CU 1 S 1.613140 -0.000000 0.000000 -0.000000 0.000000 + 15 CU 1 X -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 16 CU 1 Y -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 17 CU 1 Z -0.000000 2.771535 0.452507 1.580821 -0.150019 + 18 CU 1 XX 0.049462 -0.000000 0.000000 -0.000000 0.000000 + 19 CU 1 YY -0.098925 -0.000000 0.000000 -0.000000 0.000000 + 20 CU 1 ZZ 0.049462 -0.000000 0.000000 -0.000000 0.000000 + 21 CU 1 XY -0.000000 0.005568 -0.000073 0.002506 0.039488 + 22 CU 1 XZ -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 23 CU 1 YZ -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 24 CU 1 XX 0.026057 -0.000000 0.000000 -0.000000 0.000000 + 25 CU 1 YY -0.052114 -0.000000 0.000000 -0.000000 0.000000 + 26 CU 1 ZZ 0.026057 -0.000000 0.000000 -0.000000 0.000000 + 27 CU 1 XY -0.000000 0.000452 -0.000071 0.001118 -0.005846 + 28 CU 1 XZ -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 29 CU 1 YZ -0.000000 -0.000000 0.000000 -0.000000 0.000000 + 30 N 2 S 0.050023 -0.038268 -0.023675 0.040983 -0.018621 + 31 N 2 S -0.086962 0.045556 -0.971667 -0.072344 0.067213 + 32 N 2 X -0.014566 -0.071476 -0.090974 -0.006709 -0.131569 + 33 N 2 Y 0.006555 -0.040333 0.000779 0.004507 -0.349082 + 34 N 2 Z 0.014566 0.109375 0.129298 -0.066855 -0.281775 + 35 N 2 S -0.498212 0.850962 2.228741 -0.431767 0.108074 + 36 N 2 X -0.035125 -0.252337 0.301579 -0.044337 0.218713 + 37 N 2 Y 0.022276 -0.042991 -0.005389 0.014404 0.446222 + 38 N 2 Z 0.035125 0.343466 -0.174618 -0.090274 0.572432 + 39 N 3 S 0.050023 0.038268 0.023675 -0.040983 0.018621 + 40 N 3 S -0.086962 -0.045556 0.971667 0.072344 -0.067213 + 41 N 3 X 0.014566 -0.071476 -0.090974 -0.006709 -0.131569 + 42 N 3 Y 0.006555 0.040333 -0.000779 -0.004507 0.349082 + 43 N 3 Z -0.014566 0.109375 0.129298 -0.066855 -0.281775 + 44 N 3 S -0.498212 -0.850962 -2.228741 0.431767 -0.108074 + 45 N 3 X 0.035125 -0.252337 0.301579 -0.044337 0.218713 + 46 N 3 Y 0.022276 0.042991 0.005389 -0.014404 -0.446222 + 47 N 3 Z -0.035125 0.343466 -0.174618 -0.090274 0.572432 + 48 N 4 S 0.050023 0.038268 0.023675 -0.040983 0.018621 + 49 N 4 S -0.086962 -0.045556 0.971667 0.072344 -0.067213 + 50 N 4 X -0.014566 0.071476 0.090974 0.006709 0.131569 + 51 N 4 Y -0.006555 -0.040333 0.000779 0.004507 -0.349082 + 52 N 4 Z -0.014566 0.109375 0.129298 -0.066855 -0.281775 + 53 N 4 S -0.498212 -0.850962 -2.228741 0.431767 -0.108074 + 54 N 4 X -0.035125 0.252337 -0.301579 0.044337 -0.218713 + 55 N 4 Y -0.022276 -0.042991 -0.005389 0.014404 0.446222 + 56 N 4 Z -0.035125 0.343466 -0.174618 -0.090274 0.572432 + 57 N 5 S 0.050023 -0.038268 -0.023675 0.040983 -0.018621 + 58 N 5 S -0.086962 0.045556 -0.971667 -0.072344 0.067213 + 59 N 5 X 0.014566 0.071476 0.090974 0.006709 0.131569 + 60 N 5 Y -0.006555 0.040333 -0.000779 -0.004507 0.349082 + 61 N 5 Z 0.014566 0.109375 0.129298 -0.066855 -0.281775 + 62 N 5 S -0.498212 0.850962 2.228741 -0.431767 0.108074 + 63 N 5 X 0.035125 0.252337 -0.301579 0.044337 -0.218713 + 64 N 5 Y -0.022276 0.042991 0.005389 -0.014404 -0.446222 + 65 N 5 Z 0.035125 0.343466 -0.174618 -0.090274 0.572432 + 66 H 6 S 0.020968 -0.010485 -0.260054 0.024060 -0.425749 + 67 H 6 S 0.100495 -0.974925 -0.245217 0.031301 0.614735 + 68 H 7 S 0.020968 0.010485 0.260054 -0.024060 0.425749 + 69 H 7 S 0.100495 0.974925 0.245217 -0.031301 -0.614735 + 70 H 8 S 0.020968 0.010485 0.260054 -0.024060 0.425749 + 71 H 8 S 0.100495 0.974925 0.245217 -0.031301 -0.614735 + 72 H 9 S 0.020968 -0.010485 -0.260054 0.024060 -0.425749 + 73 H 9 S 0.100495 -0.974925 -0.245217 0.031301 0.614735 + 74 H 10 S 0.018436 -0.015223 -0.263460 0.030018 0.012574 + 75 H 10 S 0.055489 -0.479475 -0.167996 0.041566 -0.033303 + 76 H 11 S 0.018436 0.015223 0.263460 -0.030018 -0.012574 + 77 H 11 S 0.055489 0.479475 0.167996 -0.041566 0.033303 + 78 H 12 S 0.018436 0.015223 0.263460 -0.030018 -0.012574 + 79 H 12 S 0.055489 0.479475 0.167996 -0.041566 0.033303 + 80 H 13 S 0.018436 -0.015223 -0.263460 0.030018 0.012574 + 81 H 13 S 0.055489 -0.479475 -0.167996 0.041566 -0.033303 + 82 H 14 S 0.018436 -0.044493 -0.233238 0.006850 -0.003557 + 83 H 14 S 0.055489 -1.111069 -0.348296 -0.030808 -0.516360 + 84 H 15 S 0.018436 0.044493 0.233238 -0.006850 0.003557 + 85 H 15 S 0.055489 1.111069 0.348296 0.030808 0.516360 + 86 H 16 S 0.018436 0.044493 0.233238 -0.006850 0.003557 + 87 H 16 S 0.055489 1.111069 0.348296 0.030808 0.516360 + 88 H 17 S 0.018436 -0.044493 -0.233238 0.006850 -0.003557 + 89 H 17 S 0.055489 -1.111069 -0.348296 -0.030808 -0.516360 + + 56 57 58 59 60 + 0.9054 2.0589 0.8443 0.7003 0.5499 + B1 B1 B1 B1 B1 + 1 CU 1 S -0.000000 -0.000000 0.000000 0.000000 0.000000 + 2 CU 1 S -0.000000 -0.000000 0.000000 0.000000 0.000000 + 3 CU 1 X -0.000000 -0.000000 0.000000 0.000000 0.000000 + 4 CU 1 Y -0.000000 -0.000000 0.000000 0.000000 0.000000 + 5 CU 1 Z -0.001964 -0.001080 0.004892 0.047713 0.017810 + 6 CU 1 S -0.000000 -0.000000 0.000000 0.000000 0.000000 + 7 CU 1 X -0.000000 -0.000000 0.000000 0.000000 0.000000 + 8 CU 1 Y -0.000000 -0.000000 0.000000 0.000000 0.000000 + 9 CU 1 Z -0.014235 0.000949 0.101158 0.029433 -0.006361 + 10 CU 1 S -0.000000 -0.000000 0.000000 0.000000 0.000000 + 11 CU 1 X -0.000000 -0.000000 0.000000 0.000000 0.000000 + 12 CU 1 Y -0.000000 -0.000000 0.000000 0.000000 0.000000 + 13 CU 1 Z -0.147000 -0.019794 0.822679 1.359612 0.382400 + 14 CU 1 S -0.000000 -0.000000 0.000000 0.000000 0.000000 + 15 CU 1 X -0.000000 -0.000000 0.000000 0.000000 0.000000 + 16 CU 1 Y -0.000000 -0.000000 0.000000 0.000000 0.000000 + 17 CU 1 Z 0.429380 -0.074970 -0.073253 0.462408 -0.253831 + 18 CU 1 XX -0.000000 -0.000000 0.000000 0.000000 0.000000 + 19 CU 1 YY -0.000000 -0.000000 0.000000 0.000000 0.000000 + 20 CU 1 ZZ -0.000000 -0.000000 0.000000 0.000000 0.000000 + 21 CU 1 XY -0.047403 -0.772351 -0.005461 -0.026247 0.136260 + 22 CU 1 XZ -0.000000 -0.000000 0.000000 0.000000 0.000000 + 23 CU 1 YZ -0.000000 -0.000000 0.000000 0.000000 0.000000 + 24 CU 1 XX -0.000000 -0.000000 0.000000 0.000000 0.000000 + 25 CU 1 YY -0.000000 -0.000000 0.000000 0.000000 0.000000 + 26 CU 1 ZZ -0.000000 -0.000000 0.000000 0.000000 0.000000 + 27 CU 1 XY 0.013222 1.019400 -0.005804 0.013088 -0.019409 + 28 CU 1 XZ -0.000000 -0.000000 0.000000 0.000000 0.000000 + 29 CU 1 YZ -0.000000 -0.000000 0.000000 0.000000 0.000000 + 30 N 2 S -0.008302 -0.000225 -0.025973 0.000298 0.005795 + 31 N 2 S 0.082827 0.000687 0.049294 -0.006429 -0.032414 + 32 N 2 X -0.278631 -0.004988 0.219878 0.285190 -0.037077 + 33 N 2 Y 0.256752 -0.074048 0.193753 -0.089732 -0.232333 + 34 N 2 Z -0.216631 -0.003764 -0.183540 0.073739 -0.043869 + 35 N 2 S -0.088524 -0.001847 0.225176 -0.069978 -0.056332 + 36 N 2 X 0.274551 0.022805 -0.526439 -0.950474 -0.141107 + 37 N 2 Y -0.418379 0.259756 -0.177802 -0.046916 0.628452 + 38 N 2 Z 0.241830 0.006631 0.611241 -0.098165 -0.043497 + 39 N 3 S 0.008302 0.000225 0.025973 -0.000298 -0.005795 + 40 N 3 S -0.082827 -0.000687 -0.049294 0.006429 0.032414 + 41 N 3 X -0.278631 -0.004988 0.219878 0.285190 -0.037077 + 42 N 3 Y -0.256752 0.074048 -0.193753 0.089732 0.232333 + 43 N 3 Z -0.216631 -0.003764 -0.183540 0.073739 -0.043869 + 44 N 3 S 0.088524 0.001847 -0.225176 0.069978 0.056332 + 45 N 3 X 0.274551 0.022805 -0.526439 -0.950474 -0.141107 + 46 N 3 Y 0.418379 -0.259756 0.177802 0.046916 -0.628452 + 47 N 3 Z 0.241830 0.006631 0.611241 -0.098165 -0.043497 + 48 N 4 S 0.008302 0.000225 0.025973 -0.000298 -0.005795 + 49 N 4 S -0.082827 -0.000687 -0.049294 0.006429 0.032414 + 50 N 4 X 0.278631 0.004988 -0.219878 -0.285190 0.037077 + 51 N 4 Y 0.256752 -0.074048 0.193753 -0.089732 -0.232333 + 52 N 4 Z -0.216631 -0.003764 -0.183540 0.073739 -0.043869 + 53 N 4 S 0.088524 0.001847 -0.225176 0.069978 0.056332 + 54 N 4 X -0.274551 -0.022805 0.526439 0.950474 0.141107 + 55 N 4 Y -0.418379 0.259756 -0.177802 -0.046916 0.628452 + 56 N 4 Z 0.241830 0.006631 0.611241 -0.098165 -0.043497 + 57 N 5 S -0.008302 -0.000225 -0.025973 0.000298 0.005795 + 58 N 5 S 0.082827 0.000687 0.049294 -0.006429 -0.032414 + 59 N 5 X 0.278631 0.004988 -0.219878 -0.285190 0.037077 + 60 N 5 Y -0.256752 0.074048 -0.193753 0.089732 0.232333 + 61 N 5 Z -0.216631 -0.003764 -0.183540 0.073739 -0.043869 + 62 N 5 S -0.088524 -0.001847 0.225176 -0.069978 -0.056332 + 63 N 5 X -0.274551 -0.022805 0.526439 0.950474 0.141107 + 64 N 5 Y 0.418379 -0.259756 0.177802 0.046916 -0.628452 + 65 N 5 Z 0.241830 0.006631 0.611241 -0.098165 -0.043497 + 66 H 6 S 0.023800 0.057490 -0.048829 -0.233847 0.383744 + 67 H 6 S -0.335695 0.138019 -0.384751 -0.139328 0.015713 + 68 H 7 S -0.023800 -0.057490 0.048829 0.233847 -0.383744 + 69 H 7 S 0.335695 -0.138019 0.384751 0.139328 -0.015713 + 70 H 8 S -0.023800 -0.057490 0.048829 0.233847 -0.383744 + 71 H 8 S 0.335695 -0.138019 0.384751 0.139328 -0.015713 + 72 H 9 S 0.023800 0.057490 -0.048829 -0.233847 0.383744 + 73 H 9 S -0.335695 0.138019 -0.384751 -0.139328 0.015713 + 74 H 10 S -0.453128 -0.018319 -0.156171 -0.289515 -0.301579 + 75 H 10 S 0.802065 -0.066038 -0.134414 -0.201563 -0.027714 + 76 H 11 S 0.453128 0.018319 0.156171 0.289515 0.301579 + 77 H 11 S -0.802065 0.066038 0.134414 0.201563 0.027714 + 78 H 12 S 0.453128 0.018319 0.156171 0.289515 0.301579 + 79 H 12 S -0.802065 0.066038 0.134414 0.201563 0.027714 + 80 H 13 S -0.453128 -0.018319 -0.156171 -0.289515 -0.301579 + 81 H 13 S 0.802065 -0.066038 -0.134414 -0.201563 -0.027714 + 82 H 14 S 0.243858 -0.045330 -0.508138 0.273649 -0.088306 + 83 H 14 S -0.434802 -0.025265 0.174756 -0.152506 0.103169 + 84 H 15 S -0.243858 0.045330 0.508138 -0.273649 0.088306 + 85 H 15 S 0.434802 0.025265 -0.174756 0.152506 -0.103169 + 86 H 16 S -0.243858 0.045330 0.508138 -0.273649 0.088306 + 87 H 16 S 0.434802 0.025265 -0.174756 0.152506 -0.103169 + 88 H 17 S 0.243858 -0.045330 -0.508138 0.273649 -0.088306 + 89 H 17 S -0.434802 -0.025265 0.174756 -0.152506 0.103169 + + 61 62 63 64 65 + 1.0327 -0.0091 0.3049 0.0991 1.5885 + B1 B1 B1 B3 B3 + 1 CU 1 S -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 2 CU 1 S -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 3 CU 1 X -0.000000 0.000000 -0.000000 -0.003585 0.062073 + 4 CU 1 Y -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 5 CU 1 Z -0.003977 0.011368 0.115983 0.000000 -0.000000 + 6 CU 1 S -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 7 CU 1 X -0.000000 0.000000 -0.000000 -0.022962 0.073609 + 8 CU 1 Y -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 9 CU 1 Z 0.043267 -0.022477 -0.099744 0.000000 -0.000000 + 10 CU 1 S -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 11 CU 1 X -0.000000 0.000000 -0.000000 -0.243826 2.039214 + 12 CU 1 Y -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 13 CU 1 Z 0.203013 0.110104 2.068527 0.000000 -0.000000 + 14 CU 1 S -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 15 CU 1 X -0.000000 0.000000 -0.000000 2.771535 -0.452507 + 16 CU 1 Y -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 17 CU 1 Z 1.284295 -0.150516 -1.048507 0.000000 -0.000000 + 18 CU 1 XX -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 19 CU 1 YY -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 20 CU 1 ZZ -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 21 CU 1 XY -0.009093 -0.020409 -0.014712 0.000000 -0.000000 + 22 CU 1 XZ -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 23 CU 1 YZ -0.000000 0.000000 -0.000000 0.005568 0.000073 + 24 CU 1 XX -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 25 CU 1 YY -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 26 CU 1 ZZ -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 27 CU 1 XY 0.004247 -0.011717 -0.000666 0.000000 -0.000000 + 28 CU 1 XZ -0.000000 0.000000 -0.000000 0.000000 -0.000000 + 29 CU 1 YZ -0.000000 0.000000 -0.000000 0.000452 0.000071 + 30 N 2 S 0.025832 0.016624 0.033285 0.038268 -0.023675 + 31 N 2 S -0.469773 -0.029657 -0.147229 -0.045556 -0.971667 + 32 N 2 X 0.174615 0.061259 -0.202801 0.109375 -0.129298 + 33 N 2 Y 0.027225 -0.137309 0.025113 0.040333 0.000779 + 34 N 2 Z -0.351270 0.053389 0.052856 -0.071476 0.090974 + 35 N 2 S 1.020567 -0.248515 -0.263629 -0.850962 2.228741 + 36 N 2 X -0.336136 0.285464 -0.303639 0.343466 0.174618 + 37 N 2 Y -0.062713 -0.382829 -0.044212 0.042991 -0.005389 + 38 N 2 Z 0.644103 0.211262 0.168242 -0.252337 -0.301579 + 39 N 3 S -0.025832 -0.016624 -0.033285 -0.038268 0.023675 + 40 N 3 S 0.469773 0.029657 0.147229 0.045556 0.971667 + 41 N 3 X 0.174615 0.061259 -0.202801 0.109375 -0.129298 + 42 N 3 Y -0.027225 0.137309 -0.025113 -0.040333 -0.000779 + 43 N 3 Z -0.351270 0.053389 0.052856 -0.071476 0.090974 + 44 N 3 S -1.020567 0.248515 0.263629 0.850962 -2.228741 + 45 N 3 X -0.336136 0.285464 -0.303639 0.343466 0.174618 + 46 N 3 Y 0.062713 0.382829 0.044212 -0.042991 0.005389 + 47 N 3 Z 0.644103 0.211262 0.168242 -0.252337 -0.301579 + 48 N 4 S -0.025832 -0.016624 -0.033285 0.038268 -0.023675 + 49 N 4 S 0.469773 0.029657 0.147229 -0.045556 -0.971667 + 50 N 4 X -0.174615 -0.061259 0.202801 0.109375 -0.129298 + 51 N 4 Y 0.027225 -0.137309 0.025113 -0.040333 -0.000779 + 52 N 4 Z -0.351270 0.053389 0.052856 0.071476 -0.090974 + 53 N 4 S -1.020567 0.248515 0.263629 -0.850962 2.228741 + 54 N 4 X 0.336136 -0.285464 0.303639 0.343466 0.174618 + 55 N 4 Y -0.062713 -0.382829 -0.044212 -0.042991 0.005389 + 56 N 4 Z 0.644103 0.211262 0.168242 0.252337 0.301579 + 57 N 5 S 0.025832 0.016624 0.033285 -0.038268 0.023675 + 58 N 5 S -0.469773 -0.029657 -0.147229 0.045556 0.971667 + 59 N 5 X -0.174615 -0.061259 0.202801 0.109375 -0.129298 + 60 N 5 Y -0.027225 0.137309 -0.025113 0.040333 0.000779 + 61 N 5 Z -0.351270 0.053389 0.052856 0.071476 -0.090974 + 62 N 5 S 1.020567 -0.248515 -0.263629 0.850962 -2.228741 + 63 N 5 X 0.336136 -0.285464 0.303639 0.343466 0.174618 + 64 N 5 Y 0.062713 0.382829 0.044212 0.042991 -0.005389 + 65 N 5 Z 0.644103 0.211262 0.168242 0.252337 0.301579 + 66 H 6 S 0.232415 -0.016709 -0.054610 0.010485 -0.260054 + 67 H 6 S -0.738094 -0.484956 0.067989 0.974925 -0.245217 + 68 H 7 S -0.232415 0.016709 0.054610 -0.010485 0.260054 + 69 H 7 S 0.738094 0.484956 -0.067989 -0.974925 0.245217 + 70 H 8 S -0.232415 0.016709 0.054610 0.010485 -0.260054 + 71 H 8 S 0.738094 0.484956 -0.067989 0.974925 -0.245217 + 72 H 9 S 0.232415 -0.016709 -0.054610 -0.010485 0.260054 + 73 H 9 S -0.738094 -0.484956 0.067989 -0.974925 0.245217 + 74 H 10 S 0.224295 0.071237 0.056518 0.044493 -0.233238 + 75 H 10 S -0.480123 0.930542 -0.211556 1.111069 -0.348296 + 76 H 11 S -0.224295 -0.071237 -0.056518 -0.044493 0.233238 + 77 H 11 S 0.480123 -0.930542 0.211556 -1.111069 0.348296 + 78 H 12 S -0.224295 -0.071237 -0.056518 0.044493 -0.233238 + 79 H 12 S 0.480123 -0.930542 0.211556 1.111069 -0.348296 + 80 H 13 S 0.224295 0.071237 0.056518 -0.044493 0.233238 + 81 H 13 S -0.480123 0.930542 -0.211556 -1.111069 0.348296 + 82 H 14 S 0.279928 -0.034492 -0.057318 0.015223 -0.263460 + 83 H 14 S -0.929091 -0.004061 0.293796 0.479475 -0.167996 + 84 H 15 S -0.279928 0.034492 0.057318 -0.015223 0.263460 + 85 H 15 S 0.929091 0.004061 -0.293796 -0.479475 0.167996 + 86 H 16 S -0.279928 0.034492 0.057318 0.015223 -0.263460 + 87 H 16 S 0.929091 0.004061 -0.293796 0.479475 -0.167996 + 88 H 17 S 0.279928 -0.034492 -0.057318 -0.015223 0.263460 + 89 H 17 S -0.929091 -0.004061 0.293796 -0.479475 0.167996 + + 66 67 68 69 70 + -0.1586 0.9038 0.9054 2.0589 0.8443 + B3 B3 B3 B3 B3 + 1 CU 1 S -0.000000 0.000000 0.000000 0.000000 -0.000000 + 2 CU 1 S -0.000000 0.000000 0.000000 0.000000 -0.000000 + 3 CU 1 X 0.000928 0.015903 0.001964 -0.001080 0.004892 + 4 CU 1 Y -0.000000 0.000000 0.000000 0.000000 -0.000000 + 5 CU 1 Z -0.000000 0.000000 0.000000 0.000000 -0.000000 + 6 CU 1 S -0.000000 0.000000 0.000000 0.000000 -0.000000 + 7 CU 1 X -0.034419 -0.045519 0.014235 0.000949 0.101158 + 8 CU 1 Y -0.000000 0.000000 0.000000 0.000000 -0.000000 + 9 CU 1 Z -0.000000 0.000000 0.000000 0.000000 -0.000000 + 10 CU 1 S -0.000000 0.000000 0.000000 0.000000 -0.000000 + 11 CU 1 X -0.217934 0.068843 0.147000 -0.019794 0.822679 + 12 CU 1 Y -0.000000 0.000000 0.000000 0.000000 -0.000000 + 13 CU 1 Z -0.000000 0.000000 0.000000 0.000000 -0.000000 + 14 CU 1 S -0.000000 0.000000 0.000000 0.000000 -0.000000 + 15 CU 1 X 1.580821 0.150019 -0.429380 -0.074970 -0.073253 + 16 CU 1 Y -0.000000 0.000000 0.000000 0.000000 -0.000000 + 17 CU 1 Z -0.000000 0.000000 0.000000 0.000000 -0.000000 + 18 CU 1 XX -0.000000 0.000000 0.000000 0.000000 -0.000000 + 19 CU 1 YY -0.000000 0.000000 0.000000 0.000000 -0.000000 + 20 CU 1 ZZ -0.000000 0.000000 0.000000 0.000000 -0.000000 + 21 CU 1 XY -0.000000 0.000000 0.000000 0.000000 -0.000000 + 22 CU 1 XZ -0.000000 0.000000 0.000000 0.000000 -0.000000 + 23 CU 1 YZ 0.002506 -0.039488 0.047403 -0.772351 -0.005461 + 24 CU 1 XX -0.000000 0.000000 0.000000 0.000000 -0.000000 + 25 CU 1 YY -0.000000 0.000000 0.000000 0.000000 -0.000000 + 26 CU 1 ZZ -0.000000 0.000000 0.000000 0.000000 -0.000000 + 27 CU 1 XY -0.000000 0.000000 0.000000 0.000000 -0.000000 + 28 CU 1 XZ -0.000000 0.000000 0.000000 0.000000 -0.000000 + 29 CU 1 YZ 0.001118 0.005846 -0.013222 1.019400 -0.005804 + 30 N 2 S -0.040983 -0.018621 -0.008302 0.000225 0.025973 + 31 N 2 S 0.072344 0.067213 0.082827 -0.000687 -0.049294 + 32 N 2 X -0.066855 0.281775 0.216631 -0.003764 -0.183540 + 33 N 2 Y -0.004507 -0.349082 0.256752 0.074048 -0.193753 + 34 N 2 Z -0.006709 0.131569 0.278631 -0.004988 0.219878 + 35 N 2 S 0.431767 0.108074 -0.088524 0.001847 -0.225176 + 36 N 2 X -0.090274 -0.572432 -0.241830 0.006631 0.611241 + 37 N 2 Y -0.014404 0.446222 -0.418379 -0.259756 0.177802 + 38 N 2 Z -0.044337 -0.218713 -0.274551 0.022805 -0.526439 + 39 N 3 S 0.040983 0.018621 0.008302 -0.000225 -0.025973 + 40 N 3 S -0.072344 -0.067213 -0.082827 0.000687 0.049294 + 41 N 3 X -0.066855 0.281775 0.216631 -0.003764 -0.183540 + 42 N 3 Y 0.004507 0.349082 -0.256752 -0.074048 0.193753 + 43 N 3 Z -0.006709 0.131569 0.278631 -0.004988 0.219878 + 44 N 3 S -0.431767 -0.108074 0.088524 -0.001847 0.225176 + 45 N 3 X -0.090274 -0.572432 -0.241830 0.006631 0.611241 + 46 N 3 Y 0.014404 -0.446222 0.418379 0.259756 -0.177802 + 47 N 3 Z -0.044337 -0.218713 -0.274551 0.022805 -0.526439 + 48 N 4 S -0.040983 -0.018621 -0.008302 0.000225 0.025973 + 49 N 4 S 0.072344 0.067213 0.082827 -0.000687 -0.049294 + 50 N 4 X -0.066855 0.281775 0.216631 -0.003764 -0.183540 + 51 N 4 Y 0.004507 0.349082 -0.256752 -0.074048 0.193753 + 52 N 4 Z 0.006709 -0.131569 -0.278631 0.004988 -0.219878 + 53 N 4 S 0.431767 0.108074 -0.088524 0.001847 -0.225176 + 54 N 4 X -0.090274 -0.572432 -0.241830 0.006631 0.611241 + 55 N 4 Y 0.014404 -0.446222 0.418379 0.259756 -0.177802 + 56 N 4 Z 0.044337 0.218713 0.274551 -0.022805 0.526439 + 57 N 5 S 0.040983 0.018621 0.008302 -0.000225 -0.025973 + 58 N 5 S -0.072344 -0.067213 -0.082827 0.000687 0.049294 + 59 N 5 X -0.066855 0.281775 0.216631 -0.003764 -0.183540 + 60 N 5 Y -0.004507 -0.349082 0.256752 0.074048 -0.193753 + 61 N 5 Z 0.006709 -0.131569 -0.278631 0.004988 -0.219878 + 62 N 5 S -0.431767 -0.108074 0.088524 -0.001847 0.225176 + 63 N 5 X -0.090274 -0.572432 -0.241830 0.006631 0.611241 + 64 N 5 Y -0.014404 0.446222 -0.418379 -0.259756 0.177802 + 65 N 5 Z 0.044337 0.218713 0.274551 -0.022805 0.526439 + 66 H 6 S -0.024060 -0.425749 0.023800 -0.057490 0.048829 + 67 H 6 S -0.031301 0.614735 -0.335695 -0.138019 0.384751 + 68 H 7 S 0.024060 0.425749 -0.023800 0.057490 -0.048829 + 69 H 7 S 0.031301 -0.614735 0.335695 0.138019 -0.384751 + 70 H 8 S -0.024060 -0.425749 0.023800 -0.057490 0.048829 + 71 H 8 S -0.031301 0.614735 -0.335695 -0.138019 0.384751 + 72 H 9 S 0.024060 0.425749 -0.023800 0.057490 -0.048829 + 73 H 9 S 0.031301 -0.614735 0.335695 0.138019 -0.384751 + 74 H 10 S -0.006850 -0.003557 0.243858 0.045330 0.508138 + 75 H 10 S 0.030808 -0.516360 -0.434802 0.025265 -0.174756 + 76 H 11 S 0.006850 0.003557 -0.243858 -0.045330 -0.508138 + 77 H 11 S -0.030808 0.516360 0.434802 -0.025265 0.174756 + 78 H 12 S -0.006850 -0.003557 0.243858 0.045330 0.508138 + 79 H 12 S 0.030808 -0.516360 -0.434802 0.025265 -0.174756 + 80 H 13 S 0.006850 0.003557 -0.243858 -0.045330 -0.508138 + 81 H 13 S -0.030808 0.516360 0.434802 -0.025265 0.174756 + 82 H 14 S -0.030018 0.012574 -0.453128 0.018319 0.156171 + 83 H 14 S -0.041566 -0.033303 0.802065 0.066038 0.134414 + 84 H 15 S 0.030018 -0.012574 0.453128 -0.018319 -0.156171 + 85 H 15 S 0.041566 0.033303 -0.802065 -0.066038 -0.134414 + 86 H 16 S -0.030018 0.012574 -0.453128 0.018319 0.156171 + 87 H 16 S -0.041566 -0.033303 0.802065 0.066038 0.134414 + 88 H 17 S 0.030018 -0.012574 0.453128 -0.018319 -0.156171 + 89 H 17 S 0.041566 0.033303 -0.802065 -0.066038 -0.134414 + + 71 72 73 74 75 + 0.7003 0.5499 1.0327 0.3049 1.2653 + B3 B3 B3 B3 B2 + 1 CU 1 S -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 2 CU 1 S -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 3 CU 1 X 0.047713 -0.017810 -0.003977 0.115983 0.000000 + 4 CU 1 Y -0.000000 -0.000000 -0.000000 -0.000000 0.000787 + 5 CU 1 Z -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 6 CU 1 S -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 7 CU 1 X 0.029433 0.006361 0.043267 -0.099744 0.000000 + 8 CU 1 Y -0.000000 -0.000000 -0.000000 -0.000000 0.001247 + 9 CU 1 Z -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 10 CU 1 S -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 11 CU 1 X 1.359612 -0.382400 0.203013 2.068527 0.000000 + 12 CU 1 Y -0.000000 -0.000000 -0.000000 -0.000000 0.027481 + 13 CU 1 Z -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 14 CU 1 S -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 15 CU 1 X 0.462408 0.253831 1.284295 -1.048507 0.000000 + 16 CU 1 Y -0.000000 -0.000000 -0.000000 -0.000000 -0.077740 + 17 CU 1 Z -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 18 CU 1 XX -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 19 CU 1 YY -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 20 CU 1 ZZ -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 21 CU 1 XY -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 22 CU 1 XZ -0.000000 -0.000000 -0.000000 -0.000000 0.262316 + 23 CU 1 YZ -0.026247 -0.136260 -0.009093 -0.014712 0.000000 + 24 CU 1 XX -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 25 CU 1 YY -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 26 CU 1 ZZ -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 27 CU 1 XY -0.000000 -0.000000 -0.000000 -0.000000 0.000000 + 28 CU 1 XZ -0.000000 -0.000000 -0.000000 -0.000000 -0.173012 + 29 CU 1 YZ 0.013088 0.019409 0.004247 -0.000666 0.000000 + 30 N 2 S -0.000298 0.005795 -0.025832 -0.033285 -0.001324 + 31 N 2 S 0.006429 -0.032414 0.469773 0.147229 -0.837679 + 32 N 2 X 0.073739 0.043869 -0.351270 0.052856 -0.096698 + 33 N 2 Y 0.089732 -0.232333 -0.027225 -0.025113 0.018106 + 34 N 2 Z 0.285190 0.037077 0.174615 -0.202801 0.096698 + 35 N 2 S 0.069978 -0.056332 -1.020567 0.263629 1.579039 + 36 N 2 X -0.098165 0.043497 0.644103 0.168242 -0.101509 + 37 N 2 Y 0.046916 0.628452 0.062713 0.044212 -0.032832 + 38 N 2 Z -0.950474 0.141107 -0.336136 -0.303639 0.101509 + 39 N 3 S 0.000298 -0.005795 0.025832 0.033285 -0.001324 + 40 N 3 S -0.006429 0.032414 -0.469773 -0.147229 -0.837679 + 41 N 3 X 0.073739 0.043869 -0.351270 0.052856 0.096698 + 42 N 3 Y -0.089732 0.232333 0.027225 0.025113 0.018106 + 43 N 3 Z 0.285190 0.037077 0.174615 -0.202801 -0.096698 + 44 N 3 S -0.069978 0.056332 1.020567 -0.263629 1.579039 + 45 N 3 X -0.098165 0.043497 0.644103 0.168242 0.101509 + 46 N 3 Y -0.046916 -0.628452 -0.062713 -0.044212 -0.032832 + 47 N 3 Z -0.950474 0.141107 -0.336136 -0.303639 -0.101509 + 48 N 4 S -0.000298 0.005795 -0.025832 -0.033285 0.001324 + 49 N 4 S 0.006429 -0.032414 0.469773 0.147229 0.837679 + 50 N 4 X 0.073739 0.043869 -0.351270 0.052856 0.096698 + 51 N 4 Y -0.089732 0.232333 0.027225 0.025113 0.018106 + 52 N 4 Z -0.285190 -0.037077 -0.174615 0.202801 0.096698 + 53 N 4 S 0.069978 -0.056332 -1.020567 0.263629 -1.579039 + 54 N 4 X -0.098165 0.043497 0.644103 0.168242 0.101509 + 55 N 4 Y -0.046916 -0.628452 -0.062713 -0.044212 -0.032832 + 56 N 4 Z 0.950474 -0.141107 0.336136 0.303639 0.101509 + 57 N 5 S 0.000298 -0.005795 0.025832 0.033285 0.001324 + 58 N 5 S -0.006429 0.032414 -0.469773 -0.147229 0.837679 + 59 N 5 X 0.073739 0.043869 -0.351270 0.052856 -0.096698 + 60 N 5 Y 0.089732 -0.232333 -0.027225 -0.025113 0.018106 + 61 N 5 Z -0.285190 -0.037077 -0.174615 0.202801 -0.096698 + 62 N 5 S -0.069978 0.056332 1.020567 -0.263629 -1.579039 + 63 N 5 X -0.098165 0.043497 0.644103 0.168242 -0.101509 + 64 N 5 Y 0.046916 0.628452 0.062713 0.044212 -0.032832 + 65 N 5 Z 0.950474 -0.141107 0.336136 0.303639 -0.101509 + 66 H 6 S 0.233847 0.383744 -0.232415 0.054610 -0.193864 + 67 H 6 S 0.139328 0.015713 0.738094 -0.067989 -0.343441 + 68 H 7 S -0.233847 -0.383744 0.232415 -0.054610 -0.193864 + 69 H 7 S -0.139328 -0.015713 -0.738094 0.067989 -0.343441 + 70 H 8 S 0.233847 0.383744 -0.232415 0.054610 0.193864 + 71 H 8 S 0.139328 0.015713 0.738094 -0.067989 0.343441 + 72 H 9 S -0.233847 -0.383744 0.232415 -0.054610 0.193864 + 73 H 9 S -0.139328 -0.015713 -0.738094 0.067989 0.343441 + 74 H 10 S -0.273649 -0.088306 -0.279928 0.057318 -0.251955 + 75 H 10 S 0.152506 0.103169 0.929091 -0.293796 -0.193200 + 76 H 11 S 0.273649 0.088306 0.279928 -0.057318 -0.251955 + 77 H 11 S -0.152506 -0.103169 -0.929091 0.293796 -0.193200 + 78 H 12 S -0.273649 -0.088306 -0.279928 0.057318 0.251955 + 79 H 12 S 0.152506 0.103169 0.929091 -0.293796 0.193200 + 80 H 13 S 0.273649 0.088306 0.279928 -0.057318 0.251955 + 81 H 13 S -0.152506 -0.103169 -0.929091 0.293796 0.193200 + 82 H 14 S 0.289515 -0.301579 -0.224295 -0.056518 -0.251955 + 83 H 14 S 0.201563 -0.027714 0.480123 0.211556 -0.193200 + 84 H 15 S -0.289515 0.301579 0.224295 0.056518 -0.251955 + 85 H 15 S -0.201563 0.027714 -0.480123 -0.211556 -0.193200 + 86 H 16 S 0.289515 -0.301579 -0.224295 -0.056518 0.251955 + 87 H 16 S 0.201563 -0.027714 0.480123 0.211556 0.193200 + 88 H 17 S -0.289515 0.301579 0.224295 0.056518 0.251955 + 89 H 17 S -0.201563 0.027714 -0.480123 -0.211556 0.193200 + + 76 77 78 79 80 + 0.1251 0.8759 2.2122 -0.0531 0.6970 + B2 B2 B2 B2 B2 + 1 CU 1 S 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 2 CU 1 S 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 3 CU 1 X 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 4 CU 1 Y 0.079292 -0.000000 0.001604 0.049851 -0.029266 + 5 CU 1 Z 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 6 CU 1 S 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 7 CU 1 X 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 8 CU 1 Y -0.089507 -0.000000 0.000003 -0.083230 0.023887 + 9 CU 1 Z 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 10 CU 1 S 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 11 CU 1 X 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 12 CU 1 Y 1.251780 -0.000000 0.038661 0.588631 -0.541821 + 13 CU 1 Z 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 14 CU 1 S 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 15 CU 1 X 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 16 CU 1 Y -1.237309 -0.000000 -0.045602 -0.371209 -0.243828 + 17 CU 1 Z 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 18 CU 1 XX 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 19 CU 1 YY 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 20 CU 1 ZZ 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 21 CU 1 XY 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 22 CU 1 XZ 0.003956 -0.000000 -0.723824 0.012673 0.002823 + 23 CU 1 YZ 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 24 CU 1 XX 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 25 CU 1 YY 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 26 CU 1 ZZ 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 27 CU 1 XY 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 28 CU 1 XZ -0.001342 -0.000000 1.132468 0.005448 0.041717 + 29 CU 1 YZ 0.000000 -0.000000 -0.000000 0.000000 -0.000000 + 30 N 2 S 0.005546 -0.000000 -0.015764 0.028578 0.000452 + 31 N 2 S 0.000397 -0.000000 -0.359964 -0.036729 0.071400 + 32 N 2 X 0.022544 -0.349302 -0.046387 0.040697 -0.110325 + 33 N 2 Y -0.165364 -0.000000 0.012868 0.090492 -0.193828 + 34 N 2 Z -0.022544 -0.349302 0.046387 -0.040697 0.110325 + 35 N 2 S -0.147869 -0.000000 0.700542 -0.465708 -0.193191 + 36 N 2 X 0.034017 0.448630 0.140871 0.100069 0.181627 + 37 N 2 Y -0.411875 -0.000000 -0.048787 0.336887 0.718762 + 38 N 2 Z -0.034017 0.448630 -0.140871 -0.100069 -0.181627 + 39 N 3 S 0.005546 -0.000000 -0.015764 0.028578 0.000452 + 40 N 3 S 0.000397 -0.000000 -0.359964 -0.036729 0.071400 + 41 N 3 X -0.022544 0.349302 0.046387 -0.040697 0.110325 + 42 N 3 Y -0.165364 -0.000000 0.012868 0.090492 -0.193828 + 43 N 3 Z 0.022544 0.349302 -0.046387 0.040697 -0.110325 + 44 N 3 S -0.147869 -0.000000 0.700542 -0.465708 -0.193191 + 45 N 3 X -0.034017 -0.448630 -0.140871 -0.100069 -0.181627 + 46 N 3 Y -0.411875 -0.000000 -0.048787 0.336887 0.718762 + 47 N 3 Z 0.034017 -0.448630 0.140871 0.100069 0.181627 + 48 N 4 S -0.005546 -0.000000 0.015764 -0.028578 -0.000452 + 49 N 4 S -0.000397 -0.000000 0.359964 0.036729 -0.071400 + 50 N 4 X -0.022544 0.349302 0.046387 -0.040697 0.110325 + 51 N 4 Y -0.165364 -0.000000 0.012868 0.090492 -0.193828 + 52 N 4 Z -0.022544 -0.349302 0.046387 -0.040697 0.110325 + 53 N 4 S 0.147869 -0.000000 -0.700542 0.465708 0.193191 + 54 N 4 X -0.034017 -0.448630 -0.140871 -0.100069 -0.181627 + 55 N 4 Y -0.411875 -0.000000 -0.048787 0.336887 0.718762 + 56 N 4 Z -0.034017 0.448630 -0.140871 -0.100069 -0.181627 + 57 N 5 S -0.005546 -0.000000 0.015764 -0.028578 -0.000452 + 58 N 5 S -0.000397 -0.000000 0.359964 0.036729 -0.071400 + 59 N 5 X 0.022544 -0.349302 -0.046387 0.040697 -0.110325 + 60 N 5 Y -0.165364 -0.000000 0.012868 0.090492 -0.193828 + 61 N 5 Z 0.022544 0.349302 -0.046387 0.040697 -0.110325 + 62 N 5 S 0.147869 -0.000000 -0.700542 0.465708 0.193191 + 63 N 5 X 0.034017 0.448630 0.140871 0.100069 0.181627 + 64 N 5 Y -0.411875 -0.000000 -0.048787 0.336887 0.718762 + 65 N 5 Z 0.034017 -0.448630 0.140871 0.100069 0.181627 + 66 H 6 S 0.000440 -0.000000 -0.090154 0.076919 0.463674 + 67 H 6 S -0.712982 -0.000000 -0.119186 0.759641 -0.004261 + 68 H 7 S 0.000440 -0.000000 -0.090154 0.076919 0.463674 + 69 H 7 S -0.712982 -0.000000 -0.119186 0.759641 -0.004261 + 70 H 8 S -0.000440 -0.000000 0.090154 -0.076919 -0.463674 + 71 H 8 S 0.712982 -0.000000 0.119186 -0.759641 0.004261 + 72 H 9 S -0.000440 -0.000000 0.090154 -0.076919 -0.463674 + 73 H 9 S 0.712982 -0.000000 0.119186 -0.759641 0.004261 + 74 H 10 S 0.008637 -0.300829 -0.100134 -0.018676 -0.189386 + 75 H 10 S 0.489172 0.636402 -0.016911 0.000940 0.094983 + 76 H 11 S 0.008637 -0.300829 -0.100134 -0.018676 -0.189386 + 77 H 11 S 0.489172 0.636402 -0.016911 0.000940 0.094983 + 78 H 12 S -0.008637 0.300829 0.100134 0.018676 0.189386 + 79 H 12 S -0.489172 -0.636402 0.016911 -0.000940 -0.094983 + 80 H 13 S -0.008637 0.300829 0.100134 0.018676 0.189386 + 81 H 13 S -0.489172 -0.636402 0.016911 -0.000940 -0.094983 + 82 H 14 S 0.008637 0.300829 -0.100134 -0.018676 -0.189386 + 83 H 14 S 0.489172 -0.636402 -0.016911 0.000940 0.094983 + 84 H 15 S 0.008637 0.300829 -0.100134 -0.018676 -0.189386 + 85 H 15 S 0.489172 -0.636402 -0.016911 0.000940 0.094983 + 86 H 16 S -0.008637 -0.300829 0.100134 0.018676 0.189386 + 87 H 16 S -0.489172 0.636402 0.016911 -0.000940 -0.094983 + 88 H 17 S -0.008637 -0.300829 0.100134 0.018676 0.189386 + 89 H 17 S -0.489172 0.636402 0.016911 -0.000940 -0.094983 + + 81 82 83 84 85 + -0.1956 0.8476 0.9215 0.9039 0.9733 + B2 B2 B2 B2 B2 + 1 CU 1 S -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 2 CU 1 S -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 3 CU 1 X -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 4 CU 1 Y 0.036182 -0.003896 -0.000000 -0.010732 -0.016306 + 5 CU 1 Z -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 6 CU 1 S -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 7 CU 1 X -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 8 CU 1 Y -0.097776 0.009354 -0.000000 -0.006238 0.002440 + 9 CU 1 Z -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 10 CU 1 S -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 11 CU 1 X -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 12 CU 1 Y 0.156412 -0.028055 -0.000000 -0.304811 -0.378088 + 13 CU 1 Z -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 14 CU 1 S -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 15 CU 1 X -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 16 CU 1 Y 1.037395 -0.141767 -0.000000 0.257500 0.178433 + 17 CU 1 Z -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 18 CU 1 XX -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 19 CU 1 YY -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 20 CU 1 ZZ -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 21 CU 1 XY -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 22 CU 1 XZ -0.000176 -0.038268 -0.000000 0.003316 -0.034556 + 23 CU 1 YZ -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 24 CU 1 XX -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 25 CU 1 YY -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 26 CU 1 ZZ -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 27 CU 1 XY -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 28 CU 1 XZ -0.000250 -0.110217 -0.000000 -0.024697 -0.039288 + 29 CU 1 YZ -0.000000 -0.000000 -0.000000 -0.000000 -0.000000 + 30 N 2 S 0.000578 -0.033546 -0.000000 -0.028143 0.018621 + 31 N 2 S -0.001922 0.110648 -0.000000 0.224666 -0.392352 + 32 N 2 X -0.000312 0.234881 -0.185117 -0.052130 0.263127 + 33 N 2 Y -0.068458 0.135540 -0.000000 -0.394686 -0.283660 + 34 N 2 Z 0.000312 -0.234881 -0.185117 0.052130 -0.263127 + 35 N 2 S -0.001109 0.279461 -0.000000 -0.200578 0.887899 + 36 N 2 X -0.001677 -0.506571 0.574526 -0.040570 -0.412534 + 37 N 2 Y -0.054053 -0.046427 -0.000000 0.567200 0.587114 + 38 N 2 Z 0.001677 0.506571 0.574526 0.040570 0.412534 + 39 N 3 S 0.000578 -0.033546 -0.000000 -0.028143 0.018621 + 40 N 3 S -0.001922 0.110648 -0.000000 0.224666 -0.392352 + 41 N 3 X 0.000312 -0.234881 0.185117 0.052130 -0.263127 + 42 N 3 Y -0.068458 0.135540 -0.000000 -0.394686 -0.283660 + 43 N 3 Z -0.000312 0.234881 0.185117 -0.052130 0.263127 + 44 N 3 S -0.001109 0.279461 -0.000000 -0.200578 0.887899 + 45 N 3 X 0.001677 0.506571 -0.574526 0.040570 0.412534 + 46 N 3 Y -0.054053 -0.046427 -0.000000 0.567200 0.587114 + 47 N 3 Z -0.001677 -0.506571 -0.574526 -0.040570 -0.412534 + 48 N 4 S -0.000578 0.033546 -0.000000 0.028143 -0.018621 + 49 N 4 S 0.001922 -0.110648 -0.000000 -0.224666 0.392352 + 50 N 4 X 0.000312 -0.234881 0.185117 0.052130 -0.263127 + 51 N 4 Y -0.068458 0.135540 -0.000000 -0.394686 -0.283660 + 52 N 4 Z 0.000312 -0.234881 -0.185117 0.052130 -0.263127 + 53 N 4 S 0.001109 -0.279461 -0.000000 0.200578 -0.887899 + 54 N 4 X 0.001677 0.506571 -0.574526 0.040570 0.412534 + 55 N 4 Y -0.054053 -0.046427 -0.000000 0.567200 0.587114 + 56 N 4 Z 0.001677 0.506571 0.574526 0.040570 0.412534 + 57 N 5 S -0.000578 0.033546 -0.000000 0.028143 -0.018621 + 58 N 5 S 0.001922 -0.110648 -0.000000 -0.224666 0.392352 + 59 N 5 X -0.000312 0.234881 -0.185117 -0.052130 0.263127 + 60 N 5 Y -0.068458 0.135540 -0.000000 -0.394686 -0.283660 + 61 N 5 Z -0.000312 0.234881 0.185117 -0.052130 0.263127 + 62 N 5 S 0.001109 -0.279461 -0.000000 0.200578 -0.887899 + 63 N 5 X -0.001677 -0.506571 0.574526 -0.040570 -0.412534 + 64 N 5 Y -0.054053 -0.046427 -0.000000 0.567200 0.587114 + 65 N 5 Z -0.001677 -0.506571 -0.574526 -0.040570 -0.412534 + 66 H 6 S 0.046668 -0.007825 -0.000000 -0.496006 0.106639 + 67 H 6 S 0.118988 -0.343508 -0.000000 0.801193 0.065327 + 68 H 7 S 0.046668 -0.007825 -0.000000 -0.496006 0.106639 + 69 H 7 S 0.118988 -0.343508 -0.000000 0.801193 0.065327 + 70 H 8 S -0.046668 0.007825 -0.000000 0.496006 -0.106639 + 71 H 8 S -0.118988 0.343508 -0.000000 -0.801193 -0.065327 + 72 H 9 S -0.046668 0.007825 -0.000000 0.496006 -0.106639 + 73 H 9 S -0.118988 0.343508 -0.000000 -0.801193 -0.065327 + 74 H 10 S -0.023828 -0.358311 0.420408 -0.095564 0.199697 + 75 H 10 S -0.059941 0.058459 -0.114185 -0.188732 -0.682024 + 76 H 11 S -0.023828 -0.358311 0.420408 -0.095564 0.199697 + 77 H 11 S -0.059941 0.058459 -0.114185 -0.188732 -0.682024 + 78 H 12 S 0.023828 0.358311 -0.420408 0.095564 -0.199697 + 79 H 12 S 0.059941 -0.058459 0.114185 0.188732 0.682024 + 80 H 13 S 0.023828 0.358311 -0.420408 0.095564 -0.199697 + 81 H 13 S 0.059941 -0.058459 0.114185 0.188732 0.682024 + 82 H 14 S -0.023828 -0.358311 -0.420408 -0.095564 0.199697 + 83 H 14 S -0.059941 0.058459 0.114185 -0.188732 -0.682024 + 84 H 15 S -0.023828 -0.358311 -0.420408 -0.095564 0.199697 + 85 H 15 S -0.059941 0.058459 0.114185 -0.188732 -0.682024 + 86 H 16 S 0.023828 0.358311 0.420408 0.095564 -0.199697 + 87 H 16 S 0.059941 -0.058459 -0.114185 0.188732 0.682024 + 88 H 17 S 0.023828 0.358311 0.420408 0.095564 -0.199697 + 89 H 17 S 0.059941 -0.058459 -0.114185 0.188732 0.682024 + + 86 87 + -0.0235 -0.0007 + B2 B2 + 1 CU 1 S 0.000000 -0.000000 + 2 CU 1 S 0.000000 -0.000000 + 3 CU 1 X 0.000000 -0.000000 + 4 CU 1 Y 0.043158 -0.000000 + 5 CU 1 Z 0.000000 -0.000000 + 6 CU 1 S 0.000000 -0.000000 + 7 CU 1 X 0.000000 -0.000000 + 8 CU 1 Y -0.066890 -0.000000 + 9 CU 1 Z 0.000000 -0.000000 + 10 CU 1 S 0.000000 -0.000000 + 11 CU 1 X 0.000000 -0.000000 + 12 CU 1 Y 0.548086 -0.000000 + 13 CU 1 Z 0.000000 -0.000000 + 14 CU 1 S 0.000000 -0.000000 + 15 CU 1 X 0.000000 -0.000000 + 16 CU 1 Y -0.364901 -0.000000 + 17 CU 1 Z 0.000000 -0.000000 + 18 CU 1 XX 0.000000 -0.000000 + 19 CU 1 YY 0.000000 -0.000000 + 20 CU 1 ZZ 0.000000 -0.000000 + 21 CU 1 XY 0.000000 -0.000000 + 22 CU 1 XZ -0.022460 -0.000000 + 23 CU 1 YZ 0.000000 -0.000000 + 24 CU 1 XX 0.000000 -0.000000 + 25 CU 1 YY 0.000000 -0.000000 + 26 CU 1 ZZ 0.000000 -0.000000 + 27 CU 1 XY 0.000000 -0.000000 + 28 CU 1 XZ -0.008159 -0.000000 + 29 CU 1 YZ 0.000000 -0.000000 + 30 N 2 S -0.044186 -0.000000 + 31 N 2 S 0.049542 -0.000000 + 32 N 2 X -0.076388 0.112023 + 33 N 2 Y 0.046283 -0.000000 + 34 N 2 Z 0.076388 0.112023 + 35 N 2 S 0.790602 -0.000000 + 36 N 2 X -0.178887 0.398381 + 37 N 2 Y 0.155592 -0.000000 + 38 N 2 Z 0.178887 0.398381 + 39 N 3 S -0.044186 -0.000000 + 40 N 3 S 0.049542 -0.000000 + 41 N 3 X 0.076388 -0.112023 + 42 N 3 Y 0.046283 -0.000000 + 43 N 3 Z -0.076388 -0.112023 + 44 N 3 S 0.790602 -0.000000 + 45 N 3 X 0.178887 -0.398381 + 46 N 3 Y 0.155592 -0.000000 + 47 N 3 Z -0.178887 -0.398381 + 48 N 4 S 0.044186 -0.000000 + 49 N 4 S -0.049542 -0.000000 + 50 N 4 X 0.076388 -0.112023 + 51 N 4 Y 0.046283 -0.000000 + 52 N 4 Z 0.076388 0.112023 + 53 N 4 S -0.790602 -0.000000 + 54 N 4 X 0.178887 -0.398381 + 55 N 4 Y 0.155592 -0.000000 + 56 N 4 Z 0.178887 0.398381 + 57 N 5 S 0.044186 -0.000000 + 58 N 5 S -0.049542 -0.000000 + 59 N 5 X -0.076388 0.112023 + 60 N 5 Y 0.046283 -0.000000 + 61 N 5 Z -0.076388 -0.112023 + 62 N 5 S -0.790602 -0.000000 + 63 N 5 X -0.178887 0.398381 + 64 N 5 Y 0.155592 -0.000000 + 65 N 5 Z -0.178887 -0.398381 + 66 H 6 S 0.004753 -0.000000 + 67 H 6 S -0.189887 -0.000000 + 68 H 7 S 0.004753 -0.000000 + 69 H 7 S -0.189887 -0.000000 + 70 H 8 S -0.004753 -0.000000 + 71 H 8 S 0.189887 -0.000000 + 72 H 9 S -0.004753 -0.000000 + 73 H 9 S 0.189887 -0.000000 + 74 H 10 S -0.036120 0.061695 + 75 H 10 S -0.569669 0.771177 + 76 H 11 S -0.036120 0.061695 + 77 H 11 S -0.569669 0.771177 + 78 H 12 S 0.036120 -0.061695 + 79 H 12 S 0.569669 -0.771177 + 80 H 13 S 0.036120 -0.061695 + 81 H 13 S 0.569669 -0.771177 + 82 H 14 S -0.036120 -0.061695 + 83 H 14 S -0.569669 -0.771177 + 84 H 15 S -0.036120 -0.061695 + 85 H 15 S -0.569669 -0.771177 + 86 H 16 S 0.036120 0.061695 + 87 H 16 S 0.569669 0.771177 + 88 H 17 S 0.036120 0.061695 + 89 H 17 S 0.569669 0.771177 + ...... END OF ROHF CALCULATION ...... + STEP CPU TIME = 0.12 TOTAL CPU TIME = 0.6 ( 0.0 MIN) + TOTAL WALL CLOCK TIME= 0.6 SECONDS, CPU UTILIZATION IS 98.33% + + ---------------------------------------------------------------- + PROPERTY VALUES FOR THE ROHF SELF-CONSISTENT FIELD WAVEFUNCTION + ---------------------------------------------------------------- + + ----------------- + ENERGY COMPONENTS + ----------------- + + WAVEFUNCTION NORMALIZATION = 1.0000000000 + + ONE ELECTRON ENERGY = -3411.8569756487 + TWO ELECTRON ENERGY = 1123.6869727503 + NUCLEAR REPULSION ENERGY = 425.1940993151 + ------------------ + TOTAL ENERGY = -1862.9759035833 + + ELECTRON-ELECTRON POTENTIAL ENERGY = 1123.6869727503 + NUCLEUS-ELECTRON POTENTIAL ENERGY = -5274.7488533722 + NUCLEUS-NUCLEUS POTENTIAL ENERGY = 425.1940993151 + ------------------ + TOTAL POTENTIAL ENERGY = -3725.8677813068 + TOTAL KINETIC ENERGY = 1862.8918777235 + VIRIAL RATIO (V/T) = 2.0000451051 + + --------------------------------------- + MULLIKEN AND LOWDIN POPULATION ANALYSES + --------------------------------------- + + ATOMIC MULLIKEN POPULATION IN EACH MOLECULAR ORBITAL + + 1 2 3 4 5 + + 2.000000 2.000000 2.000000 2.000000 2.000000 + + 1 2.000005 1.999909 1.999972 1.999972 1.999998 + 2 -0.000002 0.000026 0.000008 0.000008 0.000001 + 3 -0.000002 0.000026 0.000008 0.000008 0.000001 + 4 -0.000002 0.000026 0.000008 0.000008 0.000001 + 5 -0.000002 0.000026 0.000008 0.000008 0.000001 + 6 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 + 7 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 + 8 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 + 9 0.000000 -0.000001 -0.000000 -0.000000 -0.000000 + 10 0.000000 -0.000001 0.000000 -0.000000 -0.000000 + 11 0.000000 -0.000001 0.000000 -0.000000 -0.000000 + 12 0.000000 -0.000001 0.000000 -0.000000 -0.000000 + 13 0.000000 -0.000001 0.000000 -0.000000 -0.000000 + 14 0.000000 -0.000001 -0.000000 0.000000 -0.000000 + 15 0.000000 -0.000001 -0.000000 0.000000 -0.000000 + 16 0.000000 -0.000001 -0.000000 0.000000 -0.000000 + 17 0.000000 -0.000001 -0.000000 0.000000 -0.000000 + + 6 7 8 9 10 + + 2.000000 2.000000 2.000000 2.000000 2.000000 + + 1 0.000030 0.000163 0.000163 0.000003 2.000022 + 2 0.499655 0.499555 0.499555 0.499700 0.000043 + 3 0.499655 0.499555 0.499555 0.499700 0.000043 + 4 0.499655 0.499555 0.499555 0.499700 0.000043 + 5 0.499655 0.499555 0.499555 0.499700 0.000043 + 6 0.000111 0.000136 0.000136 0.000104 -0.000016 + 7 0.000111 0.000136 0.000136 0.000104 -0.000016 + 8 0.000111 0.000136 0.000136 0.000104 -0.000016 + 9 0.000111 0.000136 0.000136 0.000104 -0.000016 + 10 0.000113 0.000113 0.000155 0.000098 -0.000016 + 11 0.000113 0.000113 0.000155 0.000098 -0.000016 + 12 0.000113 0.000113 0.000155 0.000098 -0.000016 + 13 0.000113 0.000113 0.000155 0.000098 -0.000016 + 14 0.000113 0.000155 0.000113 0.000098 -0.000016 + 15 0.000113 0.000155 0.000113 0.000098 -0.000016 + 16 0.000113 0.000155 0.000113 0.000098 -0.000016 + 17 0.000113 0.000155 0.000113 0.000098 -0.000016 + + 11 12 13 14 15 + + 2.000000 2.000000 2.000000 2.000000 2.000000 + + 1 1.997283 1.997283 1.999976 0.035049 0.042659 + 2 0.000733 0.000733 0.000006 0.416382 0.421971 + 3 0.000733 0.000733 0.000006 0.416382 0.421971 + 4 0.000733 0.000733 0.000006 0.416382 0.421971 + 5 0.000733 0.000733 0.000006 0.416382 0.421971 + 6 -0.000011 -0.000011 -0.000000 0.023398 0.021870 + 7 -0.000011 -0.000011 -0.000000 0.023398 0.021870 + 8 -0.000011 -0.000011 -0.000000 0.023398 0.021870 + 9 -0.000011 -0.000011 -0.000000 0.023398 0.021870 + 10 -0.000047 0.000004 0.000000 0.025729 0.022266 + 11 -0.000047 0.000004 0.000000 0.025729 0.022266 + 12 -0.000047 0.000004 0.000000 0.025729 0.022266 + 13 -0.000047 0.000004 0.000000 0.025729 0.022266 + 14 0.000004 -0.000047 0.000000 0.025729 0.023228 + 15 0.000004 -0.000047 0.000000 0.025729 0.023228 + 16 0.000004 -0.000047 0.000000 0.025729 0.023228 + 17 0.000004 -0.000047 0.000000 0.025729 0.023228 + + 16 17 18 19 20 + + 2.000000 2.000000 2.000000 2.000000 2.000000 + + 1 0.042659 0.005468 1.016272 0.017154 0.012355 + 2 0.421971 0.418478 0.185494 0.336945 0.337034 + 3 0.421971 0.418478 0.185494 0.336945 0.337034 + 4 0.421971 0.418478 0.185494 0.336945 0.337034 + 5 0.421971 0.418478 0.185494 0.336945 0.337034 + 6 0.021870 0.027724 0.000000 0.105308 0.000238 + 7 0.021870 0.027724 0.000000 0.105308 0.000238 + 8 0.021870 0.027724 0.000000 0.105308 0.000238 + 9 0.021870 0.027724 0.000000 0.105308 0.000238 + 10 0.023228 0.026215 0.030219 0.026729 0.072016 + 11 0.023228 0.026215 0.030219 0.026729 0.072016 + 12 0.023228 0.026215 0.030219 0.026729 0.072016 + 13 0.023228 0.026215 0.030219 0.026729 0.072016 + 14 0.022266 0.026215 0.030219 0.026729 0.087624 + 15 0.022266 0.026215 0.030219 0.026729 0.087624 + 16 0.022266 0.026215 0.030219 0.026729 0.087624 + 17 0.022266 0.026215 0.030219 0.026729 0.087624 + + 21 22 23 24 25 + + 2.000000 2.000000 2.000000 2.000000 2.000000 + + 1 0.012355 0.630662 0.630662 0.073354 0.000000 + 2 0.337034 0.242636 0.242636 0.323922 0.331116 + 3 0.337034 0.242636 0.242636 0.323922 0.331116 + 4 0.337034 0.242636 0.242636 0.323922 0.331116 + 5 0.337034 0.242636 0.242636 0.323922 0.331116 + 6 0.000238 0.066243 0.066243 0.113824 0.000000 + 7 0.000238 0.066243 0.066243 0.113824 0.000000 + 8 0.000238 0.066243 0.066243 0.113824 0.000000 + 9 0.000238 0.066243 0.066243 0.113824 0.000000 + 10 0.087624 0.019259 0.014197 0.021958 0.084442 + 11 0.087624 0.019259 0.014197 0.021958 0.084442 + 12 0.087624 0.019259 0.014197 0.021958 0.084442 + 13 0.087624 0.019259 0.014197 0.021958 0.084442 + 14 0.072016 0.014197 0.019259 0.021958 0.084442 + 15 0.072016 0.014197 0.019259 0.021958 0.084442 + 16 0.072016 0.014197 0.019259 0.021958 0.084442 + 17 0.072016 0.014197 0.019259 0.021958 0.084442 + + 26 27 28 29 30 + + 2.000000 2.000000 2.000000 2.000000 2.000000 + + 1 1.095774 0.145917 0.108415 0.108415 1.353467 + 2 0.204318 0.439455 0.444760 0.444760 0.094452 + 3 0.204318 0.439455 0.444760 0.444760 0.094452 + 4 0.204318 0.439455 0.444760 0.444760 0.094452 + 5 0.204318 0.439455 0.444760 0.444760 0.094452 + 6 0.000856 0.008029 0.007107 0.007107 0.044039 + 7 0.000856 0.008029 0.007107 0.007107 0.044039 + 8 0.000856 0.008029 0.007107 0.007107 0.044039 + 9 0.000856 0.008029 0.007107 0.007107 0.044039 + 10 0.010441 0.008019 0.020262 0.000767 0.009721 + 11 0.010441 0.008019 0.020262 0.000767 0.009721 + 12 0.010441 0.008019 0.020262 0.000767 0.009721 + 13 0.010441 0.008019 0.020262 0.000767 0.009721 + 14 0.010441 0.008019 0.000767 0.020262 0.013420 + 15 0.010441 0.008019 0.000767 0.020262 0.013420 + 16 0.010441 0.008019 0.000767 0.020262 0.013420 + 17 0.010441 0.008019 0.000767 0.020262 0.013420 + + 31 32 33 34 + + 2.000000 2.000000 2.000000 1.000000 + + 1 1.353467 0.968895 1.091817 0.931917 + 2 0.094452 0.152560 0.215338 0.016512 + 3 0.094452 0.152560 0.215338 0.016512 + 4 0.094452 0.152560 0.215338 0.016512 + 5 0.094452 0.152560 0.215338 0.016512 + 6 0.044039 0.000000 0.003792 0.000143 + 7 0.044039 0.000000 0.003792 0.000143 + 8 0.044039 0.000000 0.003792 0.000143 + 9 0.044039 0.000000 0.003792 0.000143 + 10 0.013420 0.052608 0.003958 0.000183 + 11 0.013420 0.052608 0.003958 0.000183 + 12 0.013420 0.052608 0.003958 0.000183 + 13 0.013420 0.052608 0.003958 0.000183 + 14 0.009721 0.052608 0.003958 0.000183 + 15 0.009721 0.052608 0.003958 0.000183 + 16 0.009721 0.052608 0.003958 0.000183 + 17 0.009721 0.052608 0.003958 0.000183 + + MULLIKEN SPHERICAL HARMONIC POPULATIONS + ATOM S P D F G H I TOTAL + 1 CU 3.17 6.16 4.97 0.00 0.00 0.00 0.00 14.30 + 2 N 1.87 2.20 0.00 0.00 0.00 0.00 0.00 4.07 + 3 N 1.87 2.20 0.00 0.00 0.00 0.00 0.00 4.07 + 4 N 1.87 2.20 0.00 0.00 0.00 0.00 0.00 4.07 + 5 N 1.87 2.20 0.00 0.00 0.00 0.00 0.00 4.07 + 6 H 0.28 0.00 0.00 0.00 0.00 0.00 0.00 0.28 + 7 H 0.28 0.00 0.00 0.00 0.00 0.00 0.00 0.28 + 8 H 0.28 0.00 0.00 0.00 0.00 0.00 0.00 0.28 + 9 H 0.28 0.00 0.00 0.00 0.00 0.00 0.00 0.28 + 10 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 11 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 12 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 13 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 14 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 15 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 16 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 17 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + + MULLIKEN SPHERICAL HARMONIC POPULATIONS + ATOM S P D F G H I TOTAL + 1 CU 3.17 6.16 4.03 0.00 0.00 0.00 0.00 13.37 + 2 N 1.87 2.19 0.00 0.00 0.00 0.00 0.00 4.05 + 3 N 1.87 2.19 0.00 0.00 0.00 0.00 0.00 4.05 + 4 N 1.87 2.19 0.00 0.00 0.00 0.00 0.00 4.05 + 5 N 1.87 2.19 0.00 0.00 0.00 0.00 0.00 4.05 + 6 H 0.28 0.00 0.00 0.00 0.00 0.00 0.00 0.28 + 7 H 0.28 0.00 0.00 0.00 0.00 0.00 0.00 0.28 + 8 H 0.28 0.00 0.00 0.00 0.00 0.00 0.00 0.28 + 9 H 0.28 0.00 0.00 0.00 0.00 0.00 0.00 0.28 + 10 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 11 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 12 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 13 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 14 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 15 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 16 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + 17 H 0.29 0.00 0.00 0.00 0.00 0.00 0.00 0.29 + + ATOMIC SPIN POPULATION (ALPHA MINUS BETA) + ATOM MULL.POP. LOW.POP. + 1 CU 0.931917 0.922796 + 2 N 0.016512 0.018990 + 3 N 0.016512 0.018990 + 4 N 0.016512 0.018990 + 5 N 0.016512 0.018990 + 6 H 0.000143 0.000081 + 7 H 0.000143 0.000081 + 8 H 0.000143 0.000081 + 9 H 0.000143 0.000081 + 10 H 0.000183 0.000115 + 11 H 0.000183 0.000115 + 12 H 0.000183 0.000115 + 13 H 0.000183 0.000115 + 14 H 0.000183 0.000115 + 15 H 0.000183 0.000115 + 16 H 0.000183 0.000115 + 17 H 0.000183 0.000115 + + ----- POPULATIONS IN EACH AO ----- + MULLIKEN LOWDIN + 1 CU 1 S 1.99997 1.99915 + 2 CU 1 S 1.99957 1.96483 + 3 CU 1 X 1.99972 1.99741 + 4 CU 1 Y 1.99979 1.99682 + 5 CU 1 Z 1.99972 1.99741 + 6 CU 1 S 2.00007 0.79175 + 7 CU 1 X 2.00062 1.98894 + 8 CU 1 Y 1.99878 1.98746 + 9 CU 1 Z 2.00062 1.98894 + 10 CU 1 S 0.29692 0.27688 + 11 CU 1 X 0.12340 0.30860 + 12 CU 1 Y 0.00784 0.04053 + 13 CU 1 Z 0.12340 0.30860 + 14 CU 1 S 0.04814 0.14261 + 15 CU 1 X 0.03080 0.08718 + 16 CU 1 Y 0.01071 0.04102 + 17 CU 1 Z 0.03080 0.08718 + 18 CU 1 XX 1.35700 1.26748 + 19 CU 1 YY 1.33395 1.20052 + 20 CU 1 ZZ 1.35880 1.26748 + 21 CU 1 XY 0.74905 1.32986 + 22 CU 1 XZ 1.35880 0.73319 + 23 CU 1 YZ 0.00000 1.32986 + 24 CU 1 XX 0.61969 0.48203 + 25 CU 1 YY 0.62581 0.55676 + 26 CU 1 ZZ 0.63164 0.48203 + 27 CU 1 XY 0.33426 0.66307 + 28 CU 1 XZ 0.63164 0.37896 + 29 CU 1 YZ 0.00000 0.66307 + 30 N 2 S 1.99775 1.99232 + 31 N 2 S 0.75393 0.71061 + 32 N 2 X 0.85896 0.81878 + 33 N 2 Y 0.78998 0.73439 + 34 N 2 Z 0.85896 0.81878 + 35 N 2 S 0.98515 0.57961 + 36 N 2 X 0.66326 0.64477 + 37 N 2 Y 0.55098 0.57085 + 38 N 2 Z 0.66326 0.64477 + 39 N 3 S 1.99775 1.99232 + 40 N 3 S 0.75393 0.71061 + 41 N 3 X 0.85896 0.81878 + 42 N 3 Y 0.78998 0.73439 + 43 N 3 Z 0.85896 0.81878 + 44 N 3 S 0.98515 0.57961 + 45 N 3 X 0.66326 0.64477 + 46 N 3 Y 0.55098 0.57085 + 47 N 3 Z 0.66326 0.64477 + 48 N 4 S 1.99775 1.99232 + 49 N 4 S 0.75393 0.71061 + 50 N 4 X 0.85896 0.81878 + 51 N 4 Y 0.78998 0.73439 + 52 N 4 Z 0.85896 0.81878 + 53 N 4 S 0.98515 0.57961 + 54 N 4 X 0.66326 0.64477 + 55 N 4 Y 0.55098 0.57085 + 56 N 4 Z 0.66326 0.64477 + 57 N 5 S 1.99775 1.99232 + 58 N 5 S 0.75393 0.71061 + 59 N 5 X 0.85896 0.81878 + 60 N 5 Y 0.78998 0.73439 + 61 N 5 Z 0.85896 0.81878 + 62 N 5 S 0.98515 0.57961 + 63 N 5 X 0.66326 0.64477 + 64 N 5 Y 0.55098 0.57085 + 65 N 5 Z 0.66326 0.64477 + 66 H 6 S 0.49305 0.46787 + 67 H 6 S 0.06947 0.24266 + 68 H 7 S 0.49305 0.46787 + 69 H 7 S 0.06947 0.24266 + 70 H 8 S 0.49305 0.46787 + 71 H 8 S 0.06947 0.24266 + 72 H 9 S 0.49305 0.46787 + 73 H 9 S 0.06947 0.24266 + 74 H 10 S 0.49573 0.47192 + 75 H 10 S 0.07795 0.24542 + 76 H 11 S 0.49573 0.47192 + 77 H 11 S 0.07795 0.24542 + 78 H 12 S 0.49573 0.47192 + 79 H 12 S 0.07795 0.24542 + 80 H 13 S 0.49573 0.47192 + 81 H 13 S 0.07795 0.24542 + 82 H 14 S 0.49573 0.47192 + 83 H 14 S 0.07795 0.24542 + 84 H 15 S 0.49573 0.47192 + 85 H 15 S 0.07795 0.24542 + 86 H 16 S 0.49573 0.47192 + 87 H 16 S 0.07795 0.24542 + 88 H 17 S 0.49573 0.47192 + 89 H 17 S 0.07795 0.24542 + + ----- MULLIKEN ATOMIC OVERLAP POPULATIONS ----- + (OFF-DIAGONAL ELEMENTS NEED TO BE MULTIPLIED BY 2) + + 1 2 3 4 5 + + 1 27.2314970 + 2 0.1205047 7.1650605 + 3 0.1205047 -0.0000036 7.1650605 + 4 0.1205047 -0.0299430 -0.0299430 7.1650605 + 5 0.1205047 -0.0299430 -0.0299430 -0.0000036 7.1650605 + 6 -0.0006555 0.2952134 -0.0000089 0.0004059 0.0004059 + 7 -0.0006555 -0.0000089 0.2952134 0.0004059 0.0004059 + 8 -0.0006555 0.0004059 0.0004059 0.2952134 -0.0000089 + 9 -0.0006555 0.0004059 0.0004059 -0.0000089 0.2952134 + 10 -0.0049228 0.3004365 -0.0000122 -0.0005808 0.0004344 + 11 -0.0049228 -0.0000122 0.3004365 0.0004344 -0.0005808 + 12 -0.0049228 -0.0005808 0.0004344 0.3004365 -0.0000122 + 13 -0.0049228 0.0004344 -0.0005808 -0.0000122 0.3004365 + 14 -0.0049228 0.3004365 -0.0000122 0.0004344 -0.0005808 + 15 -0.0049228 -0.0000122 0.3004365 -0.0005808 0.0004344 + 16 -0.0049228 0.0004344 -0.0005808 0.3004365 -0.0000122 + 17 -0.0049228 -0.0005808 0.0004344 -0.0000122 0.3004365 + + 6 7 8 9 10 + + 6 0.3041807 + 7 -0.0000028 0.3041807 + 8 0.0000068 0.0000068 0.3041807 + 9 0.0000068 0.0000068 -0.0000028 0.3041807 + 10 -0.0184166 0.0000011 -0.0000888 -0.0000125 0.3147451 + 11 0.0000011 -0.0184166 -0.0000125 -0.0000888 0.0000009 + 12 -0.0000888 -0.0000125 -0.0184166 0.0000011 0.0005749 + 13 -0.0000125 -0.0000888 0.0000011 -0.0184166 0.0000003 + 14 -0.0184166 0.0000011 -0.0000125 -0.0000888 -0.0185070 + 15 0.0000011 -0.0184166 -0.0000888 -0.0000125 -0.0000023 + 16 -0.0000125 -0.0000888 -0.0184166 0.0000011 0.0000137 + 17 -0.0000888 -0.0000125 0.0000011 -0.0184166 0.0000137 + + 11 12 13 14 15 + + 11 0.3147451 + 12 0.0000003 0.3147451 + 13 0.0005749 0.0000009 0.3147451 + 14 -0.0000023 0.0000137 0.0000137 0.3147451 + 15 -0.0185070 0.0000137 0.0000137 0.0000009 0.3147451 + 16 0.0000137 -0.0185070 -0.0000023 0.0000003 0.0005749 + 17 0.0000137 -0.0000023 -0.0185070 0.0005749 0.0000003 + + 16 17 + + 16 0.3147451 + 17 0.0000009 0.3147451 + + TOTAL MULLIKEN AND LOWDIN ATOMIC POPULATIONS + ATOM MULL.POP. CHARGE LOW.POP. CHARGE + 1 CU 27.671512 1.328488 28.359611 0.640389 + 2 N 8.122248 -1.122248 7.514887 -0.514887 + 3 N 8.122248 -1.122248 7.514887 -0.514887 + 4 N 8.122248 -1.122248 7.514887 -0.514887 + 5 N 8.122248 -1.122248 7.514887 -0.514887 + 6 H 0.562519 0.437481 0.710536 0.289464 + 7 H 0.562519 0.437481 0.710536 0.289464 + 8 H 0.562519 0.437481 0.710536 0.289464 + 9 H 0.562519 0.437481 0.710536 0.289464 + 10 H 0.573678 0.426322 0.717337 0.282663 + 11 H 0.573678 0.426322 0.717337 0.282663 + 12 H 0.573678 0.426322 0.717337 0.282663 + 13 H 0.573678 0.426322 0.717337 0.282663 + 14 H 0.573678 0.426322 0.717337 0.282663 + 15 H 0.573678 0.426322 0.717337 0.282663 + 16 H 0.573678 0.426322 0.717337 0.282663 + 17 H 0.573678 0.426322 0.717337 0.282663 + + MULLIKEN SPHERICAL HARMONIC POPULATIONS + ATOM S P D F G H I TOTAL + 1 CU 6.34 12.33 9.00 0.00 0.00 0.00 0.00 27.67 + 2 N 3.74 4.39 0.00 0.00 0.00 0.00 0.00 8.12 + 3 N 3.74 4.39 0.00 0.00 0.00 0.00 0.00 8.12 + 4 N 3.74 4.39 0.00 0.00 0.00 0.00 0.00 8.12 + 5 N 3.74 4.39 0.00 0.00 0.00 0.00 0.00 8.12 + 6 H 0.56 0.00 0.00 0.00 0.00 0.00 0.00 0.56 + 7 H 0.56 0.00 0.00 0.00 0.00 0.00 0.00 0.56 + 8 H 0.56 0.00 0.00 0.00 0.00 0.00 0.00 0.56 + 9 H 0.56 0.00 0.00 0.00 0.00 0.00 0.00 0.56 + 10 H 0.57 0.00 0.00 0.00 0.00 0.00 0.00 0.57 + 11 H 0.57 0.00 0.00 0.00 0.00 0.00 0.00 0.57 + 12 H 0.57 0.00 0.00 0.00 0.00 0.00 0.00 0.57 + 13 H 0.57 0.00 0.00 0.00 0.00 0.00 0.00 0.57 + 14 H 0.57 0.00 0.00 0.00 0.00 0.00 0.00 0.57 + 15 H 0.57 0.00 0.00 0.00 0.00 0.00 0.00 0.57 + 16 H 0.57 0.00 0.00 0.00 0.00 0.00 0.00 0.57 + 17 H 0.57 0.00 0.00 0.00 0.00 0.00 0.00 0.57 + + ------------------------------- + BOND ORDER AND VALENCE ANALYSIS BOND ORDER THRESHOLD=0.050 + ------------------------------- + + BOND BOND BOND + ATOM PAIR DIST ORDER ATOM PAIR DIST ORDER ATOM PAIR DIST ORDER + 1 2 2.017 0.325 1 3 2.017 0.325 1 4 2.017 0.325 + 1 5 2.017 0.325 2 6 1.020 0.778 2 10 1.020 0.789 + 2 14 1.020 0.789 3 7 1.020 0.778 3 11 1.020 0.789 + 3 15 1.020 0.789 4 8 1.020 0.778 4 12 1.020 0.789 + 4 16 1.020 0.789 5 9 1.020 0.778 5 13 1.020 0.789 + 5 17 1.020 0.789 + + TOTAL BONDED FREE + ATOM VALENCE VALENCE VALENCE + 1 CU 2.206 1.338 0.868 + 2 N 2.665 2.665 0.000 + 3 N 2.665 2.665 0.000 + 4 N 2.665 2.665 0.000 + 5 N 2.665 2.665 0.000 + 6 H 0.775 0.775 0.000 + 7 H 0.775 0.775 0.000 + 8 H 0.775 0.775 0.000 + 9 H 0.775 0.775 0.000 + 10 H 0.783 0.783 0.000 + 11 H 0.783 0.783 0.000 + 12 H 0.783 0.783 0.000 + 13 H 0.783 0.783 0.000 + 14 H 0.783 0.783 0.000 + 15 H 0.783 0.783 0.000 + 16 H 0.783 0.783 0.000 + 17 H 0.783 0.783 0.000 + + ----------------------------------------- + ATOMIC SPIN DENSITY AT THE NUCLEUS (A.U.) + ----------------------------------------- + SPIN DENS ALPHA DENS BETA DENS + 1 CU 29.0 -0.0000000 7822.36262 7822.36262 + 2 N 7.0 0.0286169 95.83891 95.81030 + 3 N 7.0 0.0286169 95.83891 95.81030 + 4 N 7.0 0.0286169 95.83891 95.81030 + 5 N 7.0 0.0286169 95.83891 95.81030 + 6 H 1.0 0.0000653 0.19816 0.19809 + 7 H 1.0 0.0000653 0.19816 0.19809 + 8 H 1.0 0.0000653 0.19816 0.19809 + 9 H 1.0 0.0000653 0.19816 0.19809 + 10 H 1.0 0.0000758 0.19935 0.19928 + 11 H 1.0 0.0000758 0.19935 0.19928 + 12 H 1.0 0.0000758 0.19935 0.19928 + 13 H 1.0 0.0000758 0.19935 0.19928 + 14 H 1.0 0.0000758 0.19935 0.19928 + 15 H 1.0 0.0000758 0.19935 0.19928 + 16 H 1.0 0.0000758 0.19935 0.19928 + 17 H 1.0 0.0000758 0.19935 0.19928 + + --------------------- + ELECTROSTATIC MOMENTS + --------------------- + + POINT 1 X Y Z (BOHR) CHARGE + 0.000000 0.000000 0.000000 2.00 (A.U.) + DX DY DZ /D/ (DEBYE) + 0.000000 0.000000 -0.000000 0.000000 + ...... END OF PROPERTY EVALUATION ...... + STEP CPU TIME = 0.04 TOTAL CPU TIME = 0.6 ( 0.0 MIN) + TOTAL WALL CLOCK TIME= 0.6 SECONDS, CPU UTILIZATION IS 98.44% + 580000 WORDS OF DYNAMIC MEMORY USED + EXECUTION OF GAMESS TERMINATED NORMALLY Wed Nov 15 13:27:30 2017 + DDI: 263640 bytes (0.3 MB / 0 MWords) used by master data server. + + ---------------------------------------- + CPU timing information for all processes + ======================================== + 0: 0.604 + 0.36 = 0.640 + ---------------------------------------- + ddikick.x: exited gracefully. +----- accounting info ----- +Files used on the master node quad7 were: +-rw-r--r-- 1 giner giner 127337 Nov 15 13:27 /scr/giner/ROHF_Ag.dat +-rw-r--r-- 1 giner giner 127916 Nov 15 13:27 /scr/giner/ROHF_Ag.F05 +-rw-r--r-- 1 giner giner 16921504 Nov 15 13:27 /scr/giner/ROHF_Ag.F08 +-rw-r--r-- 1 giner giner 1995920 Nov 15 13:27 /scr/giner/ROHF_Ag.F10 +Wed Nov 15 13:27:33 CET 2017 +0.0u 0.0s 0:03.82 3.4% 0+0k 0+256io 0pf+0w From 55eb3a8301782bfefab61f27146a0b820469727d Mon Sep 17 00:00:00 2001 From: Emmanuel Giner Date: Fri, 28 Dec 2018 14:59:38 +0100 Subject: [PATCH 5/5] modified some scripts --- scripts/compilation/qp_create_ninja | 2 +- scripts/module/module_handler.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/scripts/compilation/qp_create_ninja b/scripts/compilation/qp_create_ninja index c63f5a97..f364f67e 100755 --- a/scripts/compilation/qp_create_ninja +++ b/scripts/compilation/qp_create_ninja @@ -538,7 +538,7 @@ def get_binaries(path_module): import subprocess try: - cmd = 'grep -l "program" {0}/*.irp.f'.format(path_module.abs) + cmd = 'grep -l -e "^program " {0}/*.irp.f'.format(path_module.abs) process = subprocess.Popen([cmd], shell=True, stdout=subprocess.PIPE, diff --git a/scripts/module/module_handler.py b/scripts/module/module_handler.py index 22677d33..ae2d563f 100755 --- a/scripts/module/module_handler.py +++ b/scripts/module/module_handler.py @@ -86,10 +86,10 @@ def get_dict_child(l_root_abs=None): else: if module_rel not in d_ref: d_ref[module_rel] = l_children - else: - print "Module {0} alredy defined" - print "Abort" - sys.exit(1) + #else: + # print "Module {0} alredy defined" + # print "Abort" + # sys.exit(1) return d_ref