1!
2!  Dalton, a molecular electronic structure program
3!  Copyright (C) by the authors of Dalton.
4!
5!  This program is free software; you can redistribute it and/or
6!  modify it under the terms of the GNU Lesser General Public
7!  License version 2.1 as published by the Free Software Foundation.
8!
9!  This program is distributed in the hope that it will be useful,
10!  but WITHOUT ANY WARRANTY; without even the implied warranty of
11!  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12!  Lesser General Public License for more details.
13!
14!  If a copy of the GNU LGPL v2.1 was not distributed with this
15!  code, you can obtain one at https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html.
16!
17!
18module mlcc3_data
19!
20!
21!  mlcc3 types
22!  Authors Henrik Koch and Rolf H. Myhre
23!  December 2014
24!
25!  Purpose: Store variables required througout MLCC3
26!
27   use mlcc_typedef
28!
29   implicit none
30!
31!
32!  Model variable from old Dalton
33   character(10)                    :: model ='CCSD      '
34!
35!  Energy or response vector
36   logical                          :: resp_option = .false.
37   real(dp)                         :: freq
38!
39!  Integer variables
40   integer                          :: n_orbitals, n_basis, n_lambda, n_occ, n_vir
41   integer                          :: n_t1am, n_t2am, n_t2am_pack
42   integer                          :: n_v_2, n_v_3, n_basis_2, n_basis_2_pack, n_bas_orb
43   integer                          :: n_ao_ints
44!
45!  Info read from file
46   real(dp)                         :: nuclear_potential,scf_energy
47!
48   integer                          :: print_mlcc3 = 1
49!
50!  Basic variable
51   logical                          :: mlcc3_active
52   logical                          :: mlcc3_nrg_spa
53   logical                          :: mlcc3_nrg_gen
54   integer                          :: n_active, n_general
55   integer                          :: n_occ_inp,n_vir_inp
56   integer                          :: n_gen_o_inp,n_gen_v_inp
57   logical                          :: set = .false.
58!
59!  Various pointers
60!
61!  Packed Omega vectors from CCSD
62   real(dp), dimension(:), pointer  :: omega1            => null()
63   real(dp), dimension(:), pointer  :: omega2            => null()
64!
65!  T1 and T2 amplitudes, T2 packed
66   real(dp), dimension(:), pointer  :: t1am              => null()
67   real(dp), dimension(:), pointer  :: t2am              => null()
68!
69!  T1 and T2 amplitudes, T2 packed
70   real(dp), dimension(:), pointer  :: c1am              => null()
71   real(dp), dimension(:), pointer  :: c2am              => null()
72!
73!  HF orbital coefficients and fock diagonal elements
74   real(dp), dimension(:), pointer  :: orb_coefficients  => null()
75   real(dp), dimension(:), pointer  :: Fock_diagonal     => null()
76!
77!  The MO Fock matrix, standard and T1- and C1-transformed
78   real(dp), dimension(:), pointer  :: mo_fock_mat       => null()
79   real(dp), dimension(:), pointer  :: mo_fock_mat_t1    => null()
80   real(dp), dimension(:), pointer  :: mo_fock_mat_c1    => null()
81!
82!  Lambda matrices
83   real(dp), dimension(:), pointer  :: lambda_hole       => null()
84   real(dp), dimension(:), pointer  :: lambda_part       => null()
85!
86   real(dp), dimension(:), pointer  :: lambda_hole_resp  => null()
87   real(dp), dimension(:), pointer  :: lambda_part_resp  => null()
88!
89!  AO density matrices, standard and T1- and C1-transformed
90   real(dp), dimension(:), pointer  :: ao_density        => null()
91   real(dp), dimension(:), pointer  :: ao_density_t1     => null()
92   real(dp), dimension(:), pointer  :: ao_density_c1     => null()
93!
94!  File names
95!
96!  MO integrals
97   character(len=12)                :: bDck_file_name = "bDck_mo_ints"
98   character(len=12)                :: Dbkc_file_name = 'Dbkc_mo_ints'
99   character(len=12)                :: Ljck_file_name = 'Ljck_mo_ints'
100   character(len=12)                :: jLkc_file_name = 'jLkc_mo_ints'
101   character(len=12)                :: jbkc_file_name = 'jbkc_mo_ints'
102!
103!  response MO integrals
104   character(len=12)                :: bDck_resp_name = "bDck_mo_resp"
105   character(len=12)                :: Dbkc_resp_name = 'Dbkc_mo_resp'
106   character(len=12)                :: Ljck_resp_name = 'Ljck_mo_resp'
107   character(len=12)                :: jLkc_resp_name = 'jLkc_mo_resp'
108!
109!
110end module mlcc3_data
111