10
0
mirror of https://github.com/LCPQ/quantum_package synced 2024-12-22 20:35:19 +01:00

Implemented Spherical AOs

This commit is contained in:
Anthony Scemama 2016-01-27 00:19:08 +01:00
parent 6162685051
commit 8a566b1e63
14 changed files with 1054 additions and 242 deletions

2
ocaml/.gitignore vendored
View File

@ -54,5 +54,7 @@ test_pseudo
test_pseudo.byte
test_queuing_system
test_queuing_system.byte
test_symmetry
test_symmetry.byte
test_task_server
test_task_server.byte

View File

@ -12,6 +12,7 @@ module Ao_basis : sig
ao_power : Symmetry.Xyz.t array;
ao_coef : AO_coef.t array;
ao_expo : AO_expo.t array;
ao_cartesian : bool;
} with sexp
;;
val read : unit -> t option
@ -29,6 +30,7 @@ end = struct
ao_power : Symmetry.Xyz.t array;
ao_coef : AO_coef.t array;
ao_expo : AO_expo.t array;
ao_cartesian : bool;
} with sexp
;;
@ -93,6 +95,15 @@ end = struct
|> Array.map ~f:AO_expo.of_float
;;
let read_ao_cartesian () =
if not (Ezfio.has_ao_basis_ao_cartesian ()) then
get_default "ao_cartesian"
|> Bool.of_string
|> Ezfio.set_ao_basis_ao_cartesian
;
Ezfio.get_ao_basis_ao_cartesian ()
;;
let to_long_basis b =
let ao_num = AO_number.to_int b.ao_num in
let gto_array = Array.init (AO_number.to_int b.ao_num)
@ -154,6 +165,7 @@ end = struct
ao_power ;
ao_coef ;
ao_expo ;
ao_cartesian ;
} = b
in
write_md5 b ;
@ -173,6 +185,7 @@ end = struct
ao_power = read_ao_power ();
ao_coef = read_ao_coef () ;
ao_expo = read_ao_expo () ;
ao_cartesian = read_ao_cartesian () ;
}
in
to_md5 result
@ -204,7 +217,11 @@ Name of the AO basis ::
ao_basis = %s
Basis set ::
Cartesian coordinates (6d,10f,...) ::
ao_cartesian = %s
Basis set (read-only) ::
%s
@ -215,12 +232,14 @@ Basis set ::
%s
======= ========= ===========
" (AO_basis_name.to_string b.ao_basis)
" (AO_basis_name.to_string b.ao_basis)
(Bool.to_string b.ao_cartesian)
(Basis.to_string short_basis
|> String.split ~on:'\n'
|> List.map ~f:(fun x-> " "^x)
|> String.concat ~sep:"\n"
|> String.split ~on:'\n'
|> List.map ~f:(fun x-> " "^x)
|> String.concat ~sep:"\n"
) print_sym
|> Rst_string.of_string
;;
@ -232,7 +251,7 @@ Basis set ::
| [] -> failwith "Error in basis set"
| line :: tail ->
let line = String.strip line in
if line = "Basis set ::" then
if line = "Basis set (read-only) ::" then
String.concat tail ~sep:"\n"
else
extract_basis tail
@ -250,6 +269,7 @@ ao_nucl = %s
ao_power = %s
ao_coef = %s
ao_expo = %s
ao_cartesian = %s
md5 = %s
"
(AO_basis_name.to_string b.ao_basis)
@ -265,6 +285,7 @@ md5 = %s
|> String.concat ~sep:", ")
(b.ao_expo |> Array.to_list |> List.map ~f:AO_expo.to_string
|> String.concat ~sep:", ")
(b.ao_cartesian |> Bool.to_string)
(to_md5 b |> MD5.to_string )
;;

View File

@ -10,7 +10,7 @@ let of_basis b =
begin
let new_accu =
Symmetry.Xyz.of_symmetry g.Gto.sym
|> List.map ~f:(fun x-> (x,g,n))
|> List.rev_map ~f:(fun x-> (x,g,n))
in
do_work (new_accu@accu) tail
end

View File

@ -1,5 +1,5 @@
open Qptypes;;
open Core.Std;;
open Qptypes
open Core.Std
type t = S|P|D|F|G|H|I|J|K|L with sexp
@ -53,7 +53,7 @@ let to_l = function
| J -> Positive_int.of_int 7
| K -> Positive_int.of_int 8
| L -> Positive_int.of_int 9
;;
let of_l i =
let i = Positive_int.to_int i in
@ -69,10 +69,10 @@ let of_l i =
| 8 -> K
| 9 -> L
| x -> raise (Failure ("Symmetry should be S|P|D|F|G|H|I|J|K|L"))
;;
type st = t
;;
module Xyz = struct
type t = { x: Positive_int.t ;
@ -119,7 +119,7 @@ module Xyz = struct
{ x=Positive_int.of_int 0 ;
y=Positive_int.of_int 0 ;
z=Positive_int.of_int 0 } ""
;;
(** Transforms an XYZ triplet to a string *)
let to_string t =
@ -139,7 +139,7 @@ module Xyz = struct
let result = (x^y^z) in
if (result = "") then "s"
else result
;;
(** Returns the l quantum number from a XYZ powers triplet *)
let get_l t =
@ -147,7 +147,7 @@ module Xyz = struct
and y = Positive_int.to_int t.y
and z = Positive_int.to_int t.z
in Positive_int.of_int (x+y+z)
;;
(** Returns a list of XYZ powers for a given symmetry *)
let of_symmetry sym =
@ -178,10 +178,11 @@ module Xyz = struct
in
create_x [] { x=(to_l sym) ; y=Positive_int.of_int 0 ;
z=Positive_int.of_int 0 }
;;
|> List.rev
(** Returns the symmetry corresponding to the XYZ triplet *)
let to_symmetry sym = of_l (get_l sym)
;;
end

View File

@ -17,6 +17,8 @@ let spec =
~doc:"int Spin multiplicity (2S+1) of the molecule. Default is 1."
+> flag "p" (optional string)
~doc:"string Name of the pseudopotential"
+> flag "cart" no_arg
~doc:" Compute AOs in the Cartesian basis set (6d, 10f, ...)"
+> anon ("xyz_file" %: file )
@ -87,7 +89,7 @@ let list_basis () =
(** Run the program *)
let run ?o b c d m p xyz_file =
let run ?o b c d m p cart xyz_file =
(* Read molecule *)
let molecule =
@ -592,6 +594,7 @@ let run ?o b c d m p xyz_file =
~rank:2 ~dim:[| ao_num ; ao_prim_num_max |] ~data:ao_coef) ;
Ezfio.set_ao_basis_ao_expo(Ezfio.ezfio_array_of_list
~rank:2 ~dim:[| ao_num ; ao_prim_num_max |] ~data:ao_expo) ;
Ezfio.set_ao_basis_ao_cartesian(cart);
in
match Input.Ao_basis.read () with
| None -> failwith "Error in basis"
@ -621,8 +624,8 @@ Otherwise, the basis set is obtained from the database.
" )
spec
(fun o b c d m p xyz_file () ->
run ?o b c d m p xyz_file )
(fun o b c d m p cart xyz_file () ->
run ?o b c d m p cart xyz_file )
let () =

19
ocaml/test_pseudo.ml Normal file
View File

@ -0,0 +1,19 @@
open Core.Std
open Qputils
open Qptypes
let test_module () =
let pseudo_channel =
let b = "BFD" in
In_channel.create (Qpackage.root^"/data/pseudo/"^(String.lowercase b))
in
let pseudo =
Pseudo.read_element pseudo_channel (Element.of_string "Cu")
in
print_endline (Pseudo.to_string pseudo);
;;
test_module ();

15
ocaml/test_symmetry.ml Normal file
View File

@ -0,0 +1,15 @@
open Core.Std
open Qputils
open Qptypes
open Symmetry
let () =
"SPDFGHIJKL"
|> String.to_list_rev
|> List.rev
|> List.map ~f:of_char
|> List.map ~f:Xyz.of_symmetry
|> List.iter ~f:(fun x -> List.iter x ~f:(fun y -> Xyz.to_string y |> print_endline) ;
print_newline ();)

196
plugins/Molden/aos.irp.f Normal file
View File

@ -0,0 +1,196 @@
BEGIN_PROVIDER [ character*(128), ao_l_char, (ao_num) ]
implicit none
BEGIN_DOC
! ao_l = l value of the AO: a+b+c in x^a y^b z^c
END_DOC
integer :: i
do i=1,ao_num
ao_l_char(i) = l_to_character(ao_l(i))
enddo
END_PROVIDER
BEGIN_PROVIDER [ character*(128), l_to_character, (0:4)]
BEGIN_DOC
! character corresponding to the "L" value of an AO orbital
END_DOC
implicit none
l_to_character(0)='S'
l_to_character(1)='P'
l_to_character(2)='D'
l_to_character(3)='F'
l_to_character(4)='G'
END_PROVIDER
BEGIN_PROVIDER [ integer, Nucl_N_Aos, (nucl_num)]
&BEGIN_PROVIDER [ integer, N_AOs_max ]
implicit none
integer :: i
BEGIN_DOC
! Number of AOs per atom
END_DOC
Nucl_N_Aos = 0
do i = 1, ao_num
Nucl_N_Aos(ao_nucl(i)) +=1
enddo
N_AOs_max = maxval(Nucl_N_Aos)
END_PROVIDER
BEGIN_PROVIDER [ integer, Nucl_Aos, (nucl_num,N_AOs_max)]
implicit none
BEGIN_DOC
! List of AOs attached on each atom
END_DOC
integer :: i
integer, allocatable :: nucl_tmp(:)
allocate(nucl_tmp(nucl_num))
nucl_tmp = 0
Nucl_Aos = 0
do i = 1, ao_num
nucl_tmp(ao_nucl(i))+=1
Nucl_Aos(ao_nucl(i),nucl_tmp(ao_nucl(i))) = i
enddo
deallocate(nucl_tmp)
END_PROVIDER
BEGIN_PROVIDER [ integer, Nucl_list_shell_Aos, (nucl_num,N_AOs_max)]
&BEGIN_PROVIDER [ integer, Nucl_num_shell_Aos, (nucl_num)]
implicit none
integer :: i,j,k
BEGIN_DOC
! Index of the shell type Aos and of the corresponding Aos
! Per convention, for P,D,F and G AOs, we take the index
! of the AO with the the corresponding power in the "X" axis
END_DOC
do i = 1, nucl_num
Nucl_num_shell_Aos(i) = 0
do j = 1, Nucl_N_Aos(i)
if(ao_l(Nucl_Aos(i,j))==0)then
! S type function
Nucl_num_shell_Aos(i)+=1
Nucl_list_shell_Aos(i,Nucl_num_shell_Aos(i))=Nucl_Aos(i,j)
elseif(ao_l(Nucl_Aos(i,j))==1)then
! P type function
if(ao_power(Nucl_Aos(i,j),1)==1)then
Nucl_num_shell_Aos(i)+=1
Nucl_list_shell_Aos(i,Nucl_num_shell_Aos(i))=Nucl_Aos(i,j)
endif
elseif(ao_l(Nucl_Aos(i,j))==2)then
! D type function
if(ao_power(Nucl_Aos(i,j),1)==2)then
Nucl_num_shell_Aos(i)+=1
Nucl_list_shell_Aos(i,Nucl_num_shell_Aos(i))=Nucl_Aos(i,j)
endif
elseif(ao_l(Nucl_Aos(i,j))==3)then
! F type function
if(ao_power(Nucl_Aos(i,j),1)==3)then
Nucl_num_shell_Aos(i)+=1
Nucl_list_shell_Aos(i,Nucl_num_shell_Aos(i))=Nucl_Aos(i,j)
endif
elseif(ao_l(Nucl_Aos(i,j))==4)then
! G type function
if(ao_power(Nucl_Aos(i,j),1)==4)then
Nucl_num_shell_Aos(i)+=1
Nucl_list_shell_Aos(i,Nucl_num_shell_Aos(i))=Nucl_Aos(i,j)
endif
endif
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ character*(4), ao_l_char_space, (ao_num) ]
implicit none
integer :: i
character*(4) :: give_ao_character_space
do i=1,ao_num
if(ao_l(i)==0)then
! S type AO
give_ao_character_space = 'S '
elseif(ao_l(i) == 1)then
! P type AO
if(ao_power(i,1)==1)then
give_ao_character_space = 'X '
elseif(ao_power(i,2) == 1)then
give_ao_character_space = 'Y '
else
give_ao_character_space = 'Z '
endif
elseif(ao_l(i) == 2)then
! D type AO
if(ao_power(i,1)==2)then
give_ao_character_space = 'XX '
elseif(ao_power(i,2) == 2)then
give_ao_character_space = 'YY '
elseif(ao_power(i,3) == 2)then
give_ao_character_space = 'ZZ '
elseif(ao_power(i,1) == 1 .and. ao_power(i,2) == 1)then
give_ao_character_space = 'XY '
elseif(ao_power(i,1) == 1 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'XZ '
else
give_ao_character_space = 'YZ '
endif
elseif(ao_l(i) == 3)then
! F type AO
if(ao_power(i,1)==3)then
give_ao_character_space = 'XXX '
elseif(ao_power(i,2) == 3)then
give_ao_character_space = 'YYY '
elseif(ao_power(i,3) == 3)then
give_ao_character_space = 'ZZZ '
elseif(ao_power(i,1) == 2 .and. ao_power(i,2) == 1)then
give_ao_character_space = 'XXY '
elseif(ao_power(i,1) == 2 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'XXZ '
elseif(ao_power(i,2) == 2 .and. ao_power(i,1) == 1)then
give_ao_character_space = 'YYX '
elseif(ao_power(i,2) == 2 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'YYZ '
elseif(ao_power(i,3) == 2 .and. ao_power(i,1) == 1)then
give_ao_character_space = 'ZZX '
elseif(ao_power(i,3) == 2 .and. ao_power(i,2) == 1)then
give_ao_character_space = 'ZZY '
elseif(ao_power(i,3) == 1 .and. ao_power(i,2) == 1 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'XYZ '
endif
elseif(ao_l(i) == 4)then
! G type AO
if(ao_power(i,1)==4)then
give_ao_character_space = 'XXXX'
elseif(ao_power(i,2) == 4)then
give_ao_character_space = 'YYYY'
elseif(ao_power(i,3) == 4)then
give_ao_character_space = 'ZZZZ'
elseif(ao_power(i,1) == 3 .and. ao_power(i,2) == 1)then
give_ao_character_space = 'XXXY'
elseif(ao_power(i,1) == 3 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'XXXZ'
elseif(ao_power(i,2) == 3 .and. ao_power(i,1) == 1)then
give_ao_character_space = 'YYYX'
elseif(ao_power(i,2) == 3 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'YYYZ'
elseif(ao_power(i,3) == 3 .and. ao_power(i,1) == 1)then
give_ao_character_space = 'ZZZX'
elseif(ao_power(i,3) == 3 .and. ao_power(i,2) == 1)then
give_ao_character_space = 'ZZZY'
elseif(ao_power(i,1) == 2 .and. ao_power(i,2) == 2)then
give_ao_character_space = 'XXYY'
elseif(ao_power(i,2) == 2 .and. ao_power(i,3) == 2)then
give_ao_character_space = 'YYZZ'
elseif(ao_power(i,1) == 2 .and. ao_power(i,2) == 1 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'XXYZ'
elseif(ao_power(i,2) == 2 .and. ao_power(i,1) == 1 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'YYXZ'
elseif(ao_power(i,3) == 2 .and. ao_power(i,1) == 1 .and. ao_power(i,2) == 1)then
give_ao_character_space = 'ZZXY'
endif
endif
ao_l_char_space(i) = give_ao_character_space
enddo
END_PROVIDER

View File

@ -1,11 +1,11 @@
[ao_basis]
type: character*(256)
doc: name of the ao basis
doc: name of the AO basis set
interface: ezfio
[ao_num]
type: integer
doc: number of ao
doc: number of AOs
interface: ezfio, provider
[ao_prim_num]
@ -22,29 +22,35 @@ interface: ezfio
[ao_nucl]
type: integer
doc: Index of the nuclei on which the ao is centered
doc: Index of the nucleus on which the AO is centered
size: (ao_basis.ao_num)
interface: ezfio, provider
[ao_power]
type: integer
doc: power for each dimension for each ao_basis
doc: Powers of x, y and z for each AO
size: (ao_basis.ao_num,3)
interface: ezfio, provider
[ao_coef]
type: double precision
doc: AO Coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs.
doc: Primitive coefficients, read from input. Those should not be used directly, as the MOs are expressed on the basis of **normalized** AOs.
size: (ao_basis.ao_num,ao_basis.ao_prim_num_max)
interface: ezfio, provider
[ao_expo]
type: double precision
doc: expo for each primitive of each ao_basis
doc: Exponents for each primitive of each AO
size: (ao_basis.ao_num,ao_basis.ao_prim_num_max)
interface: ezfio, provider
[ao_md5]
type: character*(32)
doc: MD5 key characteristic of the AO basis
interface: ezfio, provider
doc: MD5 key, specific of the AO basis
interface: ezfio, provider
[ao_cartesian]
type: logical
doc: If true, use AOs in Cartesian coordinates (6d,10f,...)
interface: ezfio, provider
default: false

View File

@ -111,7 +111,7 @@ BEGIN_PROVIDER [ double precision, ao_expo_ordered_transp, (ao_prim_num_max_alig
END_PROVIDER
BEGIN_PROVIDER [ integer, ao_l, (ao_num) ]
&BEGIN_PROVIDER [ character*(128), ao_l_char, (ao_num) ]
&BEGIN_PROVIDER [ integer, ao_l_max ]
implicit none
BEGIN_DOC
! ao_l = l value of the AO: a+b+c in x^a y^b z^c
@ -119,8 +119,8 @@ END_PROVIDER
integer :: i
do i=1,ao_num
ao_l(i) = ao_power(i,1) + ao_power(i,2) + ao_power(i,3)
ao_l_char(i) = l_to_charater(ao_l(i))
enddo
ao_l_max = maxval(ao_l)
END_PROVIDER
BEGIN_PROVIDER [ integer, ao_prim_num_max_align ]
@ -133,188 +133,16 @@ BEGIN_PROVIDER [ integer, ao_prim_num_max_align ]
ao_prim_num_max_align = align_double(ao_prim_num_max)
END_PROVIDER
integer function ao_power_index(nx,ny,nz)
implicit none
integer, intent(in) :: nx, ny, nz
BEGIN_DOC
! Unique index given to a triplet of powers:
!
! 1/2 (l-n_x)*(l-n_x+1) + n_z + 1
END_DOC
integer :: l
l = nx + ny + nz
ao_power_index = ((l-nx)*(l-nx+1))/2 + nz + 1
end
BEGIN_PROVIDER [ character*(128), l_to_charater, (0:4)]
BEGIN_DOC
! character corresponding to the "L" value of an AO orbital
END_DOC
implicit none
l_to_charater(0)='S'
l_to_charater(1)='P'
l_to_charater(2)='D'
l_to_charater(3)='F'
l_to_charater(4)='G'
END_PROVIDER
BEGIN_PROVIDER [ integer, Nucl_N_Aos, (nucl_num)]
&BEGIN_PROVIDER [ integer, N_AOs_max ]
implicit none
integer :: i
BEGIN_DOC
! Number of AOs per atom
END_DOC
Nucl_N_Aos = 0
do i = 1, ao_num
Nucl_N_Aos(ao_nucl(i)) +=1
enddo
N_AOs_max = maxval(Nucl_N_Aos)
END_PROVIDER
BEGIN_PROVIDER [ integer, Nucl_Aos, (nucl_num,N_AOs_max)]
implicit none
BEGIN_DOC
! List of AOs attached on each atom
END_DOC
integer :: i
integer, allocatable :: nucl_tmp(:)
allocate(nucl_tmp(nucl_num))
nucl_tmp = 0
Nucl_Aos = 0
do i = 1, ao_num
nucl_tmp(ao_nucl(i))+=1
Nucl_Aos(ao_nucl(i),nucl_tmp(ao_nucl(i))) = i
enddo
deallocate(nucl_tmp)
END_PROVIDER
BEGIN_PROVIDER [ integer, Nucl_list_shell_Aos, (nucl_num,N_AOs_max)]
&BEGIN_PROVIDER [ integer, Nucl_num_shell_Aos, (nucl_num)]
implicit none
integer :: i,j,k
BEGIN_DOC
! Index of the shell type Aos and of the corresponding Aos
! Per convention, for P,D,F and G AOs, we take the index
! of the AO with the the corresponding power in the "X" axis
END_DOC
do i = 1, nucl_num
Nucl_num_shell_Aos(i) = 0
do j = 1, Nucl_N_Aos(i)
if(ao_l(Nucl_Aos(i,j))==0)then
! S type function
Nucl_num_shell_Aos(i)+=1
Nucl_list_shell_Aos(i,Nucl_num_shell_Aos(i))=Nucl_Aos(i,j)
elseif(ao_l(Nucl_Aos(i,j))==1)then
! P type function
if(ao_power(Nucl_Aos(i,j),1)==1)then
Nucl_num_shell_Aos(i)+=1
Nucl_list_shell_Aos(i,Nucl_num_shell_Aos(i))=Nucl_Aos(i,j)
endif
elseif(ao_l(Nucl_Aos(i,j))==2)then
! D type function
if(ao_power(Nucl_Aos(i,j),1)==2)then
Nucl_num_shell_Aos(i)+=1
Nucl_list_shell_Aos(i,Nucl_num_shell_Aos(i))=Nucl_Aos(i,j)
endif
elseif(ao_l(Nucl_Aos(i,j))==3)then
! F type function
if(ao_power(Nucl_Aos(i,j),1)==3)then
Nucl_num_shell_Aos(i)+=1
Nucl_list_shell_Aos(i,Nucl_num_shell_Aos(i))=Nucl_Aos(i,j)
endif
elseif(ao_l(Nucl_Aos(i,j))==4)then
! G type function
if(ao_power(Nucl_Aos(i,j),1)==4)then
Nucl_num_shell_Aos(i)+=1
Nucl_list_shell_Aos(i,Nucl_num_shell_Aos(i))=Nucl_Aos(i,j)
endif
endif
enddo
enddo
END_PROVIDER
BEGIN_PROVIDER [ character*(4), ao_l_char_space, (ao_num) ]
implicit none
integer :: i
character*(4) :: give_ao_character_space
do i=1,ao_num
if(ao_l(i)==0)then
! S type AO
give_ao_character_space = 'S '
elseif(ao_l(i) == 1)then
! P type AO
if(ao_power(i,1)==1)then
give_ao_character_space = 'X '
elseif(ao_power(i,2) == 1)then
give_ao_character_space = 'Y '
else
give_ao_character_space = 'Z '
endif
elseif(ao_l(i) == 2)then
! D type AO
if(ao_power(i,1)==2)then
give_ao_character_space = 'XX '
elseif(ao_power(i,2) == 2)then
give_ao_character_space = 'YY '
elseif(ao_power(i,3) == 2)then
give_ao_character_space = 'ZZ '
elseif(ao_power(i,1) == 1 .and. ao_power(i,2) == 1)then
give_ao_character_space = 'XY '
elseif(ao_power(i,1) == 1 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'XZ '
else
give_ao_character_space = 'YZ '
endif
elseif(ao_l(i) == 3)then
! F type AO
if(ao_power(i,1)==3)then
give_ao_character_space = 'XXX '
elseif(ao_power(i,2) == 3)then
give_ao_character_space = 'YYY '
elseif(ao_power(i,3) == 3)then
give_ao_character_space = 'ZZZ '
elseif(ao_power(i,1) == 2 .and. ao_power(i,2) == 1)then
give_ao_character_space = 'XXY '
elseif(ao_power(i,1) == 2 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'XXZ '
elseif(ao_power(i,2) == 2 .and. ao_power(i,1) == 1)then
give_ao_character_space = 'YYX '
elseif(ao_power(i,2) == 2 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'YYZ '
elseif(ao_power(i,3) == 2 .and. ao_power(i,1) == 1)then
give_ao_character_space = 'ZZX '
elseif(ao_power(i,3) == 2 .and. ao_power(i,2) == 1)then
give_ao_character_space = 'ZZY '
elseif(ao_power(i,3) == 1 .and. ao_power(i,2) == 1 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'XYZ '
endif
elseif(ao_l(i) == 4)then
! G type AO
if(ao_power(i,1)==4)then
give_ao_character_space = 'XXXX'
elseif(ao_power(i,2) == 4)then
give_ao_character_space = 'YYYY'
elseif(ao_power(i,3) == 4)then
give_ao_character_space = 'ZZZZ'
elseif(ao_power(i,1) == 3 .and. ao_power(i,2) == 1)then
give_ao_character_space = 'XXXY'
elseif(ao_power(i,1) == 3 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'XXXZ'
elseif(ao_power(i,2) == 3 .and. ao_power(i,1) == 1)then
give_ao_character_space = 'YYYX'
elseif(ao_power(i,2) == 3 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'YYYZ'
elseif(ao_power(i,3) == 3 .and. ao_power(i,1) == 1)then
give_ao_character_space = 'ZZZX'
elseif(ao_power(i,3) == 3 .and. ao_power(i,2) == 1)then
give_ao_character_space = 'ZZZY'
elseif(ao_power(i,1) == 2 .and. ao_power(i,2) == 2)then
give_ao_character_space = 'XXYY'
elseif(ao_power(i,2) == 2 .and. ao_power(i,3) == 2)then
give_ao_character_space = 'YYZZ'
elseif(ao_power(i,1) == 2 .and. ao_power(i,2) == 1 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'XXYZ'
elseif(ao_power(i,2) == 2 .and. ao_power(i,1) == 1 .and. ao_power(i,3) == 1)then
give_ao_character_space = 'YYXZ'
elseif(ao_power(i,3) == 2 .and. ao_power(i,1) == 1 .and. ao_power(i,2) == 1)then
give_ao_character_space = 'ZZXY'
endif
endif
ao_l_char_space(i) = give_ao_character_space
enddo
END_PROVIDER

View File

@ -0,0 +1,707 @@
! Spherical to cartesian transformation matrix obtained with
! Horton (http://theochem.github.com/horton/, 2015)
! First index is the index of the carteisan AO, obtained by ao_power_index
! Second index is the index of the spherical AO
BEGIN_PROVIDER [ double precision, cart_to_sphe_0, (1,1) ]
implicit none
BEGIN_DOC
! Spherical -> Cartesian Transformation matrix for l=0
END_DOC
cart_to_sphe_0 = 0.d0
cart_to_sphe_0 ( 1, 1) = 1.0d0
END_PROVIDER
BEGIN_PROVIDER [ double precision, cart_to_sphe_1, (3,3) ]
implicit none
BEGIN_DOC
! Spherical -> Cartesian Transformation matrix for l=1
END_DOC
cart_to_sphe_1 = 0.d0
cart_to_sphe_1 ( 3, 1) = 1.0d0
cart_to_sphe_1 ( 1, 2) = 1.0d0
cart_to_sphe_1 ( 2, 3) = 1.0d0
END_PROVIDER
BEGIN_PROVIDER [ double precision, cart_to_sphe_2, (6,5) ]
implicit none
BEGIN_DOC
! Spherical -> Cartesian Transformation matrix for l=2
END_DOC
cart_to_sphe_2 = 0.d0
cart_to_sphe_2 ( 1, 1) = -0.5d0
cart_to_sphe_2 ( 4, 1) = -0.5d0
cart_to_sphe_2 ( 6, 1) = 1.0d0
cart_to_sphe_2 ( 3, 2) = 1.0d0
cart_to_sphe_2 ( 5, 3) = 1.0d0
cart_to_sphe_2 ( 1, 4) = 0.86602540378443864676d0
cart_to_sphe_2 ( 4, 4) = -0.86602540378443864676d0
cart_to_sphe_2 ( 2, 5) = 1.0d0
END_PROVIDER
BEGIN_PROVIDER [ double precision, cart_to_sphe_3, (10,7) ]
implicit none
BEGIN_DOC
! Spherical -> Cartesian Transformation matrix for l=3
END_DOC
cart_to_sphe_3 = 0.d0
cart_to_sphe_3 ( 3, 1) = -0.67082039324993690892d0
cart_to_sphe_3 ( 8, 1) = -0.67082039324993690892d0
cart_to_sphe_3 (10, 1) = 1.0d0
cart_to_sphe_3 ( 1, 2) = -0.61237243569579452455d0
cart_to_sphe_3 ( 4, 2) = -0.27386127875258305673d0
cart_to_sphe_3 ( 6, 2) = 1.0954451150103322269d0
cart_to_sphe_3 ( 2, 3) = -0.27386127875258305673d0
cart_to_sphe_3 ( 7, 3) = -0.61237243569579452455d0
cart_to_sphe_3 ( 9, 3) = 1.0954451150103322269d0
cart_to_sphe_3 ( 3, 4) = 0.86602540378443864676d0
cart_to_sphe_3 ( 8, 4) = -0.86602540378443864676d0
cart_to_sphe_3 ( 5, 5) = 1.0d0
cart_to_sphe_3 ( 1, 6) = 0.790569415042094833d0
cart_to_sphe_3 ( 4, 6) = -1.0606601717798212866d0
cart_to_sphe_3 ( 2, 7) = 1.0606601717798212866d0
cart_to_sphe_3 ( 7, 7) = -0.790569415042094833d0
END_PROVIDER
BEGIN_PROVIDER [ double precision, cart_to_sphe_4, (15,9) ]
implicit none
BEGIN_DOC
! Spherical -> Cartesian Transformation matrix for l=4
END_DOC
cart_to_sphe_4 = 0.d0
cart_to_sphe_4 ( 1, 1) = 0.375d0
cart_to_sphe_4 ( 4, 1) = 0.21957751641341996535d0
cart_to_sphe_4 ( 6, 1) = -0.87831006565367986142d0
cart_to_sphe_4 (11, 1) = 0.375d0
cart_to_sphe_4 (13, 1) = -0.87831006565367986142d0
cart_to_sphe_4 (15, 1) = 1.0d0
cart_to_sphe_4 ( 3, 2) = -0.89642145700079522998d0
cart_to_sphe_4 ( 8, 2) = -0.40089186286863657703d0
cart_to_sphe_4 (10, 2) = 1.19522860933439364d0
cart_to_sphe_4 ( 5, 3) = -0.40089186286863657703d0
cart_to_sphe_4 (12, 3) = -0.89642145700079522998d0
cart_to_sphe_4 (14, 3) = 1.19522860933439364d0
cart_to_sphe_4 ( 1, 4) = -0.5590169943749474241d0
cart_to_sphe_4 ( 6, 4) = 0.9819805060619657157d0
cart_to_sphe_4 (11, 4) = 0.5590169943749474241d0
cart_to_sphe_4 (13, 4) = -0.9819805060619657157d0
cart_to_sphe_4 ( 2, 5) = -0.42257712736425828875d0
cart_to_sphe_4 ( 7, 5) = -0.42257712736425828875d0
cart_to_sphe_4 ( 9, 5) = 1.1338934190276816816d0
cart_to_sphe_4 ( 3, 6) = 0.790569415042094833d0
cart_to_sphe_4 ( 8, 6) = -1.0606601717798212866d0
cart_to_sphe_4 ( 5, 7) = 1.0606601717798212866d0
cart_to_sphe_4 (12, 7) = -0.790569415042094833d0
cart_to_sphe_4 ( 1, 8) = 0.73950997288745200532d0
cart_to_sphe_4 ( 4, 8) = -1.2990381056766579701d0
cart_to_sphe_4 (11, 8) = 0.73950997288745200532d0
cart_to_sphe_4 ( 2, 9) = 1.1180339887498948482d0
cart_to_sphe_4 ( 7, 9) = -1.1180339887498948482d0
END_PROVIDER
BEGIN_PROVIDER [ double precision, cart_to_sphe_5, (21,11) ]
implicit none
BEGIN_DOC
! Spherical -> Cartesian Transformation matrix for l=5
END_DOC
cart_to_sphe_5 = 0.d0
cart_to_sphe_5 ( 3, 1) = 0.625d0
cart_to_sphe_5 ( 8, 1) = 0.36596252735569994226d0
cart_to_sphe_5 (10, 1) = -1.0910894511799619063d0
cart_to_sphe_5 (17, 1) = 0.625d0
cart_to_sphe_5 (19, 1) = -1.0910894511799619063d0
cart_to_sphe_5 (21, 1) = 1.0d0
cart_to_sphe_5 ( 1, 2) = 0.48412291827592711065d0
cart_to_sphe_5 ( 4, 2) = 0.21128856368212914438d0
cart_to_sphe_5 ( 6, 2) = -1.2677313820927748663d0
cart_to_sphe_5 (11, 2) = 0.16137430609197570355d0
cart_to_sphe_5 (13, 2) = -0.56694670951384084082d0
cart_to_sphe_5 (15, 2) = 1.2909944487358056284d0
cart_to_sphe_5 ( 2, 3) = 0.16137430609197570355d0
cart_to_sphe_5 ( 7, 3) = 0.21128856368212914438d0
cart_to_sphe_5 ( 9, 3) = -0.56694670951384084082d0
cart_to_sphe_5 (16, 3) = 0.48412291827592711065d0
cart_to_sphe_5 (18, 3) = -1.2677313820927748663d0
cart_to_sphe_5 (20, 3) = 1.2909944487358056284d0
cart_to_sphe_5 ( 3, 4) = -0.85391256382996653194d0
cart_to_sphe_5 (10, 4) = 1.1180339887498948482d0
cart_to_sphe_5 (17, 4) = 0.85391256382996653194d0
cart_to_sphe_5 (19, 4) = -1.1180339887498948482d0
cart_to_sphe_5 ( 5, 5) = -0.6454972243679028142d0
cart_to_sphe_5 (12, 5) = -0.6454972243679028142d0
cart_to_sphe_5 (14, 5) = 1.2909944487358056284d0
cart_to_sphe_5 ( 1, 6) = -0.52291251658379721749d0
cart_to_sphe_5 ( 4, 6) = 0.22821773229381921394d0
cart_to_sphe_5 ( 6, 6) = 0.91287092917527685576d0
cart_to_sphe_5 (11, 6) = 0.52291251658379721749d0
cart_to_sphe_5 (13, 6) = -1.2247448713915890491d0
cart_to_sphe_5 ( 2, 7) = -0.52291251658379721749d0
cart_to_sphe_5 ( 7, 7) = -0.22821773229381921394d0
cart_to_sphe_5 ( 9, 7) = 1.2247448713915890491d0
cart_to_sphe_5 (16, 7) = 0.52291251658379721749d0
cart_to_sphe_5 (18, 7) = -0.91287092917527685576d0
cart_to_sphe_5 ( 3, 8) = 0.73950997288745200532d0
cart_to_sphe_5 ( 8, 8) = -1.2990381056766579701d0
cart_to_sphe_5 (17, 8) = 0.73950997288745200532d0
cart_to_sphe_5 ( 5, 9) = 1.1180339887498948482d0
cart_to_sphe_5 (12, 9) = -1.1180339887498948482d0
cart_to_sphe_5 ( 1,10) = 0.7015607600201140098d0
cart_to_sphe_5 ( 4,10) = -1.5309310892394863114d0
cart_to_sphe_5 (11,10) = 1.169267933366856683d0
cart_to_sphe_5 ( 2,11) = 1.169267933366856683d0
cart_to_sphe_5 ( 7,11) = -1.5309310892394863114d0
cart_to_sphe_5 (16,11) = 0.7015607600201140098d0
END_PROVIDER
BEGIN_PROVIDER [ double precision, cart_to_sphe_6, (28,13) ]
implicit none
BEGIN_DOC
! Spherical -> Cartesian Transformation matrix for l=6
END_DOC
cart_to_sphe_6 = 0.d0
cart_to_sphe_6 ( 1, 1) = -0.3125d0
cart_to_sphe_6 ( 4, 1) = -0.16319780245846672329d0
cart_to_sphe_6 ( 6, 1) = 0.97918681475080033975d0
cart_to_sphe_6 (11, 1) = -0.16319780245846672329d0
cart_to_sphe_6 (13, 1) = 0.57335309036732873772d0
cart_to_sphe_6 (15, 1) = -1.3055824196677337863d0
cart_to_sphe_6 (22, 1) = -0.3125d0
cart_to_sphe_6 (24, 1) = 0.97918681475080033975d0
cart_to_sphe_6 (26, 1) = -1.3055824196677337863d0
cart_to_sphe_6 (28, 1) = 1.0d0
cart_to_sphe_6 ( 3, 2) = 0.86356159963469679725d0
cart_to_sphe_6 ( 8, 2) = 0.37688918072220452831d0
cart_to_sphe_6 (10, 2) = -1.6854996561581052156d0
cart_to_sphe_6 (17, 2) = 0.28785386654489893242d0
cart_to_sphe_6 (19, 2) = -0.75377836144440905662d0
cart_to_sphe_6 (21, 2) = 1.3816985594155148756d0
cart_to_sphe_6 ( 5, 3) = 0.28785386654489893242d0
cart_to_sphe_6 (12, 3) = 0.37688918072220452831d0
cart_to_sphe_6 (14, 3) = -0.75377836144440905662d0
cart_to_sphe_6 (23, 3) = 0.86356159963469679725d0
cart_to_sphe_6 (25, 3) = -1.6854996561581052156d0
cart_to_sphe_6 (27, 3) = 1.3816985594155148756d0
cart_to_sphe_6 ( 1, 4) = 0.45285552331841995543d0
cart_to_sphe_6 ( 4, 4) = 0.078832027985861408788d0
cart_to_sphe_6 ( 6, 4) = -1.2613124477737825406d0
cart_to_sphe_6 (11, 4) = -0.078832027985861408788d0
cart_to_sphe_6 (15, 4) = 1.2613124477737825406d0
cart_to_sphe_6 (22, 4) = -0.45285552331841995543d0
cart_to_sphe_6 (24, 4) = 1.2613124477737825406d0
cart_to_sphe_6 (26, 4) = -1.2613124477737825406d0
cart_to_sphe_6 ( 2, 5) = 0.27308215547040717681d0
cart_to_sphe_6 ( 7, 5) = 0.26650089544451304287d0
cart_to_sphe_6 ( 9, 5) = -0.95346258924559231545d0
cart_to_sphe_6 (16, 5) = 0.27308215547040717681d0
cart_to_sphe_6 (18, 5) = -0.95346258924559231545d0
cart_to_sphe_6 (20, 5) = 1.4564381625088382763d0
cart_to_sphe_6 ( 3, 6) = -0.81924646641122153043d0
cart_to_sphe_6 ( 8, 6) = 0.35754847096709711829d0
cart_to_sphe_6 (10, 6) = 1.0660035817780521715d0
cart_to_sphe_6 (17, 6) = 0.81924646641122153043d0
cart_to_sphe_6 (19, 6) = -1.4301938838683884732d0
cart_to_sphe_6 ( 5, 7) = -0.81924646641122153043d0
cart_to_sphe_6 (12, 7) = -0.35754847096709711829d0
cart_to_sphe_6 (14, 7) = 1.4301938838683884732d0
cart_to_sphe_6 (23, 7) = 0.81924646641122153043d0
cart_to_sphe_6 (25, 7) = -1.0660035817780521715d0
cart_to_sphe_6 ( 1, 8) = -0.49607837082461073572d0
cart_to_sphe_6 ( 4, 8) = 0.43178079981734839863d0
cart_to_sphe_6 ( 6, 8) = 0.86356159963469679725d0
cart_to_sphe_6 (11, 8) = 0.43178079981734839863d0
cart_to_sphe_6 (13, 8) = -1.5169496905422946941d0
cart_to_sphe_6 (22, 8) = -0.49607837082461073572d0
cart_to_sphe_6 (24, 8) = 0.86356159963469679725d0
cart_to_sphe_6 ( 2, 9) = -0.59829302641309923139d0
cart_to_sphe_6 ( 9, 9) = 1.3055824196677337863d0
cart_to_sphe_6 (16, 9) = 0.59829302641309923139d0
cart_to_sphe_6 (18, 9) = -1.3055824196677337863d0
cart_to_sphe_6 ( 3,10) = 0.7015607600201140098d0
cart_to_sphe_6 ( 8,10) = -1.5309310892394863114d0
cart_to_sphe_6 (17,10) = 1.169267933366856683d0
cart_to_sphe_6 ( 5,11) = 1.169267933366856683d0
cart_to_sphe_6 (12,11) = -1.5309310892394863114d0
cart_to_sphe_6 (23,11) = 0.7015607600201140098d0
cart_to_sphe_6 ( 1,12) = 0.67169328938139615748d0
cart_to_sphe_6 ( 4,12) = -1.7539019000502850245d0
cart_to_sphe_6 (11,12) = 1.7539019000502850245d0
cart_to_sphe_6 (22,12) = -0.67169328938139615748d0
cart_to_sphe_6 ( 2,13) = 1.2151388809514737933d0
cart_to_sphe_6 ( 7,13) = -1.9764235376052370825d0
cart_to_sphe_6 (16,13) = 1.2151388809514737933d0
END_PROVIDER
BEGIN_PROVIDER [ double precision, cart_to_sphe_7, (36,15) ]
implicit none
BEGIN_DOC
! Spherical -> Cartesian Transformation matrix for l=7
END_DOC
cart_to_sphe_7 = 0.d0
cart_to_sphe_7 ( 3, 1) = -0.60670333962134435221d0
cart_to_sphe_7 ( 8, 1) = -0.31684048566533184861d0
cart_to_sphe_7 (10, 1) = 1.4169537279434593918d0
cart_to_sphe_7 (17, 1) = -0.31684048566533184861d0
cart_to_sphe_7 (19, 1) = 0.82968314787883083417d0
cart_to_sphe_7 (21, 1) = -1.5208343311935928733d0
cart_to_sphe_7 (30, 1) = -0.60670333962134435221d0
cart_to_sphe_7 (32, 1) = 1.4169537279434593918d0
cart_to_sphe_7 (34, 1) = -1.5208343311935928733d0
cart_to_sphe_7 (36, 1) = 1.0d0
cart_to_sphe_7 ( 1, 2) = -0.41339864235384227977d0
cart_to_sphe_7 ( 4, 2) = -0.17963167078872714852d0
cart_to_sphe_7 ( 6, 2) = 1.4370533663098171882d0
cart_to_sphe_7 (11, 2) = -0.1338895422651523892d0
cart_to_sphe_7 (13, 2) = 0.62718150750531807803d0
cart_to_sphe_7 (15, 2) = -2.1422326762424382273d0
cart_to_sphe_7 (22, 2) = -0.1146561540164598136d0
cart_to_sphe_7 (24, 2) = 0.47901778876993906273d0
cart_to_sphe_7 (26, 2) = -0.95803557753987812546d0
cart_to_sphe_7 (28, 2) = 1.4675987714106856141d0
cart_to_sphe_7 ( 2, 3) = -0.1146561540164598136d0
cart_to_sphe_7 ( 7, 3) = -0.1338895422651523892d0
cart_to_sphe_7 ( 9, 3) = 0.47901778876993906273d0
cart_to_sphe_7 (16, 3) = -0.17963167078872714852d0
cart_to_sphe_7 (18, 3) = 0.62718150750531807803d0
cart_to_sphe_7 (20, 3) = -0.95803557753987812546d0
cart_to_sphe_7 (29, 3) = -0.41339864235384227977d0
cart_to_sphe_7 (31, 3) = 1.4370533663098171882d0
cart_to_sphe_7 (33, 3) = -2.1422326762424382273d0
cart_to_sphe_7 (35, 3) = 1.4675987714106856141d0
cart_to_sphe_7 ( 3, 4) = 0.84254721963085980365d0
cart_to_sphe_7 ( 8, 4) = 0.14666864502533059662d0
cart_to_sphe_7 (10, 4) = -1.7491256557036030854d0
cart_to_sphe_7 (17, 4) = -0.14666864502533059662d0
cart_to_sphe_7 (21, 4) = 1.4080189922431737275d0
cart_to_sphe_7 (30, 4) = -0.84254721963085980365d0
cart_to_sphe_7 (32, 4) = 1.7491256557036030854d0
cart_to_sphe_7 (34, 4) = -1.4080189922431737275d0
cart_to_sphe_7 ( 5, 5) = 0.50807509012231371428d0
cart_to_sphe_7 (12, 5) = 0.49583051751369852316d0
cart_to_sphe_7 (14, 5) = -1.3222147133698627284d0
cart_to_sphe_7 (23, 5) = 0.50807509012231371428d0
cart_to_sphe_7 (25, 5) = -1.3222147133698627284d0
cart_to_sphe_7 (27, 5) = 1.6258402883914038857d0
cart_to_sphe_7 ( 1, 6) = 0.42961647140211000062d0
cart_to_sphe_7 ( 4, 6) = -0.062226236090912312563d0
cart_to_sphe_7 ( 6, 6) = -1.2445247218182462513d0
cart_to_sphe_7 (11, 6) = -0.23190348980538452414d0
cart_to_sphe_7 (13, 6) = 0.54315511828342602619d0
cart_to_sphe_7 (15, 6) = 1.2368186122953841287d0
cart_to_sphe_7 (22, 6) = -0.35746251148251142922d0
cart_to_sphe_7 (24, 6) = 1.2445247218182462513d0
cart_to_sphe_7 (26, 6) = -1.6593662957576616683d0
cart_to_sphe_7 ( 2, 7) = 0.35746251148251142922d0
cart_to_sphe_7 ( 7, 7) = 0.23190348980538452414d0
cart_to_sphe_7 ( 9, 7) = -1.2445247218182462513d0
cart_to_sphe_7 (16, 7) = 0.062226236090912312563d0
cart_to_sphe_7 (18, 7) = -0.54315511828342602619d0
cart_to_sphe_7 (20, 7) = 1.6593662957576616683d0
cart_to_sphe_7 (29, 7) = -0.42961647140211000062d0
cart_to_sphe_7 (31, 7) = 1.2445247218182462513d0
cart_to_sphe_7 (33, 7) = -1.2368186122953841287d0
cart_to_sphe_7 ( 3, 8) = -0.79037935147039945351d0
cart_to_sphe_7 ( 8, 8) = 0.6879369240987588816d0
cart_to_sphe_7 (10, 8) = 1.025515817677958738d0
cart_to_sphe_7 (17, 8) = 0.6879369240987588816d0
cart_to_sphe_7 (19, 8) = -1.8014417303072302517d0
cart_to_sphe_7 (30, 8) = -0.79037935147039945351d0
cart_to_sphe_7 (32, 8) = 1.025515817677958738d0
cart_to_sphe_7 ( 5, 9) = -0.95323336395336381126d0
cart_to_sphe_7 (14, 9) = 1.5504341823651057024d0
cart_to_sphe_7 (23, 9) = 0.95323336395336381126d0
cart_to_sphe_7 (25, 9) = -1.5504341823651057024d0
cart_to_sphe_7 ( 1,10) = -0.47495887979908323849d0
cart_to_sphe_7 ( 4,10) = 0.61914323168888299344d0
cart_to_sphe_7 ( 6,10) = 0.82552430891851065792d0
cart_to_sphe_7 (11,10) = 0.25637895441948968451d0
cart_to_sphe_7 (13,10) = -1.8014417303072302517d0
cart_to_sphe_7 (22,10) = -0.65864945955866621126d0
cart_to_sphe_7 (24,10) = 1.3758738481975177632d0
cart_to_sphe_7 ( 2,11) = -0.65864945955866621126d0
cart_to_sphe_7 ( 7,11) = 0.25637895441948968451d0
cart_to_sphe_7 ( 9,11) = 1.3758738481975177632d0
cart_to_sphe_7 (16,11) = 0.61914323168888299344d0
cart_to_sphe_7 (18,11) = -1.8014417303072302517d0
cart_to_sphe_7 (29,11) = -0.47495887979908323849d0
cart_to_sphe_7 (31,11) = 0.82552430891851065792d0
cart_to_sphe_7 ( 3,12) = 0.67169328938139615748d0
cart_to_sphe_7 ( 8,12) = -1.7539019000502850245d0
cart_to_sphe_7 (17,12) = 1.7539019000502850245d0
cart_to_sphe_7 (30,12) = -0.67169328938139615748d0
cart_to_sphe_7 ( 5,13) = 1.2151388809514737933d0
cart_to_sphe_7 (12,13) = -1.9764235376052370825d0
cart_to_sphe_7 (23,13) = 1.2151388809514737933d0
cart_to_sphe_7 ( 1,14) = 0.64725984928774934788d0
cart_to_sphe_7 ( 4,14) = -1.96875d0
cart_to_sphe_7 (11,14) = 2.4456993503903949804d0
cart_to_sphe_7 (22,14) = -1.2566230789301937693d0
cart_to_sphe_7 ( 2,15) = 1.2566230789301937693d0
cart_to_sphe_7 ( 7,15) = -2.4456993503903949804d0
cart_to_sphe_7 (16,15) = 1.96875d0
cart_to_sphe_7 (29,15) = -0.64725984928774934788d0
END_PROVIDER
BEGIN_PROVIDER [ double precision, cart_to_sphe_8, (45,17) ]
implicit none
BEGIN_DOC
! Spherical -> Cartesian Transformation matrix for l=8
END_DOC
cart_to_sphe_8 = 0.d0
cart_to_sphe_8 ( 1, 1) = 0.2734375d0
cart_to_sphe_8 ( 4, 1) = 0.13566299095694674896d0
cart_to_sphe_8 ( 6, 1) = -1.0853039276555739917d0
cart_to_sphe_8 (11, 1) = 0.12099545906566282998d0
cart_to_sphe_8 (13, 1) = -0.56678149117738375672d0
cart_to_sphe_8 (15, 1) = 1.9359273450506052797d0
cart_to_sphe_8 (22, 1) = 0.13566299095694674896d0
cart_to_sphe_8 (24, 1) = -0.56678149117738375672d0
cart_to_sphe_8 (26, 1) = 1.1335629823547675134d0
cart_to_sphe_8 (28, 1) = -1.7364862842489183867d0
cart_to_sphe_8 (37, 1) = 0.2734375d0
cart_to_sphe_8 (39, 1) = -1.0853039276555739917d0
cart_to_sphe_8 (41, 1) = 1.9359273450506052797d0
cart_to_sphe_8 (43, 1) = -1.7364862842489183867d0
cart_to_sphe_8 (45, 1) = 1.0d0
cart_to_sphe_8 ( 3, 2) = -0.84721510698287244363d0
cart_to_sphe_8 ( 8, 2) = -0.36813537731583001376d0
cart_to_sphe_8 (10, 2) = 2.1951352762686132731d0
cart_to_sphe_8 (17, 2) = -0.27439190953357665914d0
cart_to_sphe_8 (19, 2) = 0.95803557753987812546d0
cart_to_sphe_8 (21, 2) = -2.6341623315223359277d0
cart_to_sphe_8 (30, 2) = -0.23497519304418891392d0
cart_to_sphe_8 (32, 2) = 0.73171175875620442437d0
cart_to_sphe_8 (34, 2) = -1.178033207410656044d0
cart_to_sphe_8 (36, 2) = 1.5491933384829667541d0
cart_to_sphe_8 ( 5, 3) = -0.23497519304418891392d0
cart_to_sphe_8 (12, 3) = -0.27439190953357665914d0
cart_to_sphe_8 (14, 3) = 0.73171175875620442437d0
cart_to_sphe_8 (23, 3) = -0.36813537731583001376d0
cart_to_sphe_8 (25, 3) = 0.95803557753987812546d0
cart_to_sphe_8 (27, 3) = -1.178033207410656044d0
cart_to_sphe_8 (38, 3) = -0.84721510698287244363d0
cart_to_sphe_8 (40, 3) = 2.1951352762686132731d0
cart_to_sphe_8 (42, 3) = -2.6341623315223359277d0
cart_to_sphe_8 (44, 3) = 1.5491933384829667541d0
cart_to_sphe_8 ( 1, 4) = -0.39218438743784791311d0
cart_to_sphe_8 ( 4, 4) = -0.0972889728117695298d0
cart_to_sphe_8 ( 6, 4) = 1.459334592176542947d0
cart_to_sphe_8 (13, 4) = 0.25403754506115685714d0
cart_to_sphe_8 (15, 4) = -2.3138757483972597747d0
cart_to_sphe_8 (22, 4) = 0.0972889728117695298d0
cart_to_sphe_8 (24, 4) = -0.25403754506115685714d0
cart_to_sphe_8 (28, 4) = 1.5566235649883124768d0
cart_to_sphe_8 (37, 4) = 0.39218438743784791311d0
cart_to_sphe_8 (39, 4) = -1.459334592176542947d0
cart_to_sphe_8 (41, 4) = 2.3138757483972597747d0
cart_to_sphe_8 (43, 4) = -1.5566235649883124768d0
cart_to_sphe_8 ( 2, 5) = -0.20252314682524563222d0
cart_to_sphe_8 ( 7, 5) = -0.1967766362666553471d0
cart_to_sphe_8 ( 9, 5) = 0.8800118701519835797d0
cart_to_sphe_8 (16, 5) = -0.1967766362666553471d0
cart_to_sphe_8 (18, 5) = 0.85880364827689588344d0
cart_to_sphe_8 (20, 5) = -1.7491256557036030854d0
cart_to_sphe_8 (29, 5) = -0.20252314682524563222d0
cart_to_sphe_8 (31, 5) = 0.8800118701519835797d0
cart_to_sphe_8 (33, 5) = -1.7491256557036030854d0
cart_to_sphe_8 (35, 5) = 1.7974340685458342478d0
cart_to_sphe_8 ( 3, 6) = 0.82265291131801144316d0
cart_to_sphe_8 ( 8, 6) = -0.11915417049417047641d0
cart_to_sphe_8 (10, 6) = -1.7762455001837659611d0
cart_to_sphe_8 (17, 6) = -0.44406137504594149028d0
cart_to_sphe_8 (19, 6) = 0.77521709118255285119d0
cart_to_sphe_8 (21, 6) = 1.4209964001470127689d0
cart_to_sphe_8 (30, 6) = -0.68448859700003543819d0
cart_to_sphe_8 (32, 6) = 1.7762455001837659611d0
cart_to_sphe_8 (34, 6) = -1.9064667279067276225d0
cart_to_sphe_8 ( 5, 7) = 0.68448859700003543819d0
cart_to_sphe_8 (12, 7) = 0.44406137504594149028d0
cart_to_sphe_8 (14, 7) = -1.7762455001837659611d0
cart_to_sphe_8 (23, 7) = 0.11915417049417047641d0
cart_to_sphe_8 (25, 7) = -0.77521709118255285119d0
cart_to_sphe_8 (27, 7) = 1.9064667279067276225d0
cart_to_sphe_8 (38, 7) = -0.82265291131801144316d0
cart_to_sphe_8 (40, 7) = 1.7762455001837659611d0
cart_to_sphe_8 (42, 7) = -1.4209964001470127689d0
cart_to_sphe_8 ( 1, 8) = 0.41132645565900572158d0
cart_to_sphe_8 ( 4, 8) = -0.20407507102873838124d0
cart_to_sphe_8 ( 6, 8) = -1.2244504261724302874d0
cart_to_sphe_8 (11, 8) = -0.3033516698106721761d0
cart_to_sphe_8 (13, 8) = 1.0657473001102595767d0
cart_to_sphe_8 (15, 8) = 1.2134066792426887044d0
cart_to_sphe_8 (22, 8) = -0.20407507102873838124d0
cart_to_sphe_8 (24, 8) = 1.0657473001102595767d0
cart_to_sphe_8 (26, 8) = -2.1314946002205191534d0
cart_to_sphe_8 (37, 8) = 0.41132645565900572158d0
cart_to_sphe_8 (39, 8) = -1.2244504261724302874d0
cart_to_sphe_8 (41, 8) = 1.2134066792426887044d0
cart_to_sphe_8 ( 2, 9) = 0.42481613669916071115d0
cart_to_sphe_8 ( 7, 9) = 0.13758738481975177632d0
cart_to_sphe_8 ( 9, 9) = -1.4767427774562605828d0
cart_to_sphe_8 (16, 9) = -0.13758738481975177632d0
cart_to_sphe_8 (20, 9) = 1.8344984642633570176d0
cart_to_sphe_8 (29, 9) = -0.42481613669916071115d0
cart_to_sphe_8 (31, 9) = 1.4767427774562605828d0
cart_to_sphe_8 (33, 9) = -1.8344984642633570176d0
cart_to_sphe_8 ( 3,10) = -0.76584818175667166625d0
cart_to_sphe_8 ( 8,10) = 0.99833846339806020718d0
cart_to_sphe_8 (10,10) = 0.99215674164922147144d0
cart_to_sphe_8 (17,10) = 0.41339864235384227977d0
cart_to_sphe_8 (19,10) = -2.1650635094610966169d0
cart_to_sphe_8 (30,10) = -1.0620403417479017779d0
cart_to_sphe_8 (32,10) = 1.6535945694153691191d0
cart_to_sphe_8 ( 5,11) = -1.0620403417479017779d0
cart_to_sphe_8 (12,11) = 0.41339864235384227977d0
cart_to_sphe_8 (14,11) = 1.6535945694153691191d0
cart_to_sphe_8 (23,11) = 0.99833846339806020718d0
cart_to_sphe_8 (25,11) = -2.1650635094610966169d0
cart_to_sphe_8 (38,11) = -0.76584818175667166625d0
cart_to_sphe_8 (40,11) = 0.99215674164922147144d0
cart_to_sphe_8 ( 1,12) = -0.45768182862115030664d0
cart_to_sphe_8 ( 4,12) = 0.79475821795059156217d0
cart_to_sphe_8 ( 6,12) = 0.79475821795059156217d0
cart_to_sphe_8 (13,12) = -2.0752447144854989366d0
cart_to_sphe_8 (22,12) = -0.79475821795059156217d0
cart_to_sphe_8 (24,12) = 2.0752447144854989366d0
cart_to_sphe_8 (37,12) = 0.45768182862115030664d0
cart_to_sphe_8 (39,12) = -0.79475821795059156217d0
cart_to_sphe_8 ( 2,13) = -0.70903764004458888811d0
cart_to_sphe_8 ( 7,13) = 0.53582588123382020898d0
cart_to_sphe_8 ( 9,13) = 1.4377717134510610478d0
cart_to_sphe_8 (16,13) = 0.53582588123382020898d0
cart_to_sphe_8 (18,13) = -2.338535866733713366d0
cart_to_sphe_8 (29,13) = -0.70903764004458888811d0
cart_to_sphe_8 (31,13) = 1.4377717134510610478d0
cart_to_sphe_8 ( 3,14) = 0.64725984928774934788d0
cart_to_sphe_8 ( 8,14) = -1.96875d0
cart_to_sphe_8 (17,14) = 2.4456993503903949804d0
cart_to_sphe_8 (30,14) = -1.2566230789301937693d0
cart_to_sphe_8 ( 5,15) = 1.2566230789301937693d0
cart_to_sphe_8 (12,15) = -2.4456993503903949804d0
cart_to_sphe_8 (23,15) = 1.96875d0
cart_to_sphe_8 (38,15) = -0.64725984928774934788d0
cart_to_sphe_8 ( 1,16) = 0.626706654240043952d0
cart_to_sphe_8 ( 4,16) = -2.176535018670731151d0
cart_to_sphe_8 (11,16) = 3.2353561313826025233d0
cart_to_sphe_8 (22,16) = -2.176535018670731151d0
cart_to_sphe_8 (37,16) = 0.626706654240043952d0
cart_to_sphe_8 ( 2,17) = 1.2945196985754986958d0
cart_to_sphe_8 ( 7,17) = -2.9348392204684739765d0
cart_to_sphe_8 (16,17) = 2.9348392204684739765d0
cart_to_sphe_8 (29,17) = -1.2945196985754986958d0
END_PROVIDER
BEGIN_PROVIDER [ double precision, cart_to_sphe_9, (55,19) ]
implicit none
BEGIN_DOC
! Spherical -> Cartesian Transformation matrix for l=9
END_DOC
cart_to_sphe_9 = 0.d0
cart_to_sphe_9 ( 3, 1) = 0.59686501473785067702d0
cart_to_sphe_9 ( 8, 1) = 0.29612797475437320937d0
cart_to_sphe_9 (10, 1) = -1.7657660842403202261d0
cart_to_sphe_9 (17, 1) = 0.26411138361943717788d0
cart_to_sphe_9 (19, 1) = -0.92214126273187869253d0
cart_to_sphe_9 (21, 1) = 2.5354692827465969076d0
cart_to_sphe_9 (30, 1) = 0.29612797475437320937d0
cart_to_sphe_9 (32, 1) = -0.92214126273187869253d0
cart_to_sphe_9 (34, 1) = 1.4846187947947014119d0
cart_to_sphe_9 (36, 1) = -1.952374120367905548d0
cart_to_sphe_9 (47, 1) = 0.59686501473785067702d0
cart_to_sphe_9 (49, 1) = -1.7657660842403202261d0
cart_to_sphe_9 (51, 1) = 2.5354692827465969076d0
cart_to_sphe_9 (53, 1) = -1.952374120367905548d0
cart_to_sphe_9 (55, 1) = 1.0d0
cart_to_sphe_9 ( 1, 2) = 0.36685490255855924707d0
cart_to_sphe_9 ( 4, 2) = 0.15916400393009351387d0
cart_to_sphe_9 ( 6, 2) = -1.5916400393009351387d0
cart_to_sphe_9 (11, 2) = 0.11811420148091719529d0
cart_to_sphe_9 (13, 2) = -0.6916059470489090194d0
cart_to_sphe_9 (15, 2) = 3.1497120394911252077d0
cart_to_sphe_9 (22, 2) = 0.098709324918124403125d0
cart_to_sphe_9 (24, 2) = -0.51549263708149354579d0
cart_to_sphe_9 (26, 2) = 1.3746470322173161221d0
cart_to_sphe_9 (28, 2) = -3.1586983973799809d0
cart_to_sphe_9 (37, 2) = 0.088975383089683195547d0
cart_to_sphe_9 (39, 2) = -0.44144152106008005653d0
cart_to_sphe_9 (41, 2) = 1.0499040131637084026d0
cart_to_sphe_9 (43, 2) = -1.4126128673922561809d0
cart_to_sphe_9 (45, 2) = 1.62697843363992129d0
cart_to_sphe_9 ( 2, 3) = 0.088975383089683195547d0
cart_to_sphe_9 ( 7, 3) = 0.098709324918124403125d0
cart_to_sphe_9 ( 9, 3) = -0.44144152106008005653d0
cart_to_sphe_9 (16, 3) = 0.11811420148091719529d0
cart_to_sphe_9 (18, 3) = -0.51549263708149354579d0
cart_to_sphe_9 (20, 3) = 1.0499040131637084026d0
cart_to_sphe_9 (29, 3) = 0.15916400393009351387d0
cart_to_sphe_9 (31, 3) = -0.6916059470489090194d0
cart_to_sphe_9 (33, 3) = 1.3746470322173161221d0
cart_to_sphe_9 (35, 3) = -1.4126128673922561809d0
cart_to_sphe_9 (46, 3) = 0.36685490255855924707d0
cart_to_sphe_9 (48, 3) = -1.5916400393009351387d0
cart_to_sphe_9 (50, 3) = 3.1497120394911252077d0
cart_to_sphe_9 (52, 3) = -3.1586983973799809d0
cart_to_sphe_9 (54, 3) = 1.62697843363992129d0
cart_to_sphe_9 ( 3, 4) = -0.83466307816035426155d0
cart_to_sphe_9 ( 8, 4) = -0.2070544267420625878d0
cart_to_sphe_9 (10, 4) = 2.3149388661875113029d0
cart_to_sphe_9 (19, 4) = 0.40297913150666282783d0
cart_to_sphe_9 (21, 4) = -2.9546917977869539993d0
cart_to_sphe_9 (30, 4) = 0.2070544267420625878d0
cart_to_sphe_9 (32, 4) = -0.40297913150666282783d0
cart_to_sphe_9 (36, 4) = 1.7063893769835631924d0
cart_to_sphe_9 (47, 4) = 0.83466307816035426155d0
cart_to_sphe_9 (49, 4) = -2.3149388661875113029d0
cart_to_sphe_9 (51, 4) = 2.9546917977869539993d0
cart_to_sphe_9 (53, 4) = -1.7063893769835631924d0
cart_to_sphe_9 ( 5, 5) = -0.43101816018790287844d0
cart_to_sphe_9 (12, 5) = -0.4187881980957120927d0
cart_to_sphe_9 (14, 5) = 1.395960660319040309d0
cart_to_sphe_9 (23, 5) = -0.4187881980957120927d0
cart_to_sphe_9 (25, 5) = 1.3623181102386339839d0
cart_to_sphe_9 (27, 5) = -2.2335370565104644944d0
cart_to_sphe_9 (38, 5) = -0.43101816018790287844d0
cart_to_sphe_9 (40, 5) = 1.395960660319040309d0
cart_to_sphe_9 (42, 5) = -2.2335370565104644944d0
cart_to_sphe_9 (44, 5) = 1.9703687322875560157d0
cart_to_sphe_9 ( 1, 6) = -0.37548796377180986812d0
cart_to_sphe_9 ( 6, 6) = 1.4661859659554465543d0
cart_to_sphe_9 (11, 6) = 0.12089373945199884835d0
cart_to_sphe_9 (13, 6) = -0.21236437647040795145d0
cart_to_sphe_9 (15, 6) = -2.417874789039976967d0
cart_to_sphe_9 (22, 6) = 0.20206443016189559856d0
cart_to_sphe_9 (24, 6) = -0.79143530297864839268d0
cart_to_sphe_9 (26, 6) = 1.0552470706381978569d0
cart_to_sphe_9 (28, 6) = 1.6165154412951647885d0
cart_to_sphe_9 (37, 6) = 0.27320762396104757397d0
cart_to_sphe_9 (39, 6) = -1.2199404645272449631d0
cart_to_sphe_9 (41, 6) = 2.417874789039976967d0
cart_to_sphe_9 (43, 6) = -2.16878304804843549d0
cart_to_sphe_9 ( 2, 7) = -0.27320762396104757397d0
cart_to_sphe_9 ( 7, 7) = -0.20206443016189559856d0
cart_to_sphe_9 ( 9, 7) = 1.2199404645272449631d0
cart_to_sphe_9 (16, 7) = -0.12089373945199884835d0
cart_to_sphe_9 (18, 7) = 0.79143530297864839268d0
cart_to_sphe_9 (20, 7) = -2.417874789039976967d0
cart_to_sphe_9 (31, 7) = 0.21236437647040795145d0
cart_to_sphe_9 (33, 7) = -1.0552470706381978569d0
cart_to_sphe_9 (35, 7) = 2.16878304804843549d0
cart_to_sphe_9 (46, 7) = 0.37548796377180986812d0
cart_to_sphe_9 (48, 7) = -1.4661859659554465543d0
cart_to_sphe_9 (50, 7) = 2.417874789039976967d0
cart_to_sphe_9 (52, 7) = -1.6165154412951647885d0
cart_to_sphe_9 ( 3, 8) = 0.80430146722719804411d0
cart_to_sphe_9 ( 8, 8) = -0.39904527606894581113d0
cart_to_sphe_9 (10, 8) = -1.7845847267806657796d0
cart_to_sphe_9 (17, 8) = -0.59316922059788797031d0
cart_to_sphe_9 (19, 8) = 1.5532816304615888184d0
cart_to_sphe_9 (21, 8) = 1.4236061294349311288d0
cart_to_sphe_9 (30, 8) = -0.39904527606894581113d0
cart_to_sphe_9 (32, 8) = 1.5532816304615888184d0
cart_to_sphe_9 (34, 8) = -2.5007351860179508607d0
cart_to_sphe_9 (47, 8) = 0.80430146722719804411d0
cart_to_sphe_9 (49, 8) = -1.7845847267806657796d0
cart_to_sphe_9 (51, 8) = 1.4236061294349311288d0
cart_to_sphe_9 ( 5, 9) = 0.83067898344030094085d0
cart_to_sphe_9 (12, 9) = 0.26903627024228973454d0
cart_to_sphe_9 (14, 9) = -2.1522901619383178764d0
cart_to_sphe_9 (23, 9) = -0.26903627024228973454d0
cart_to_sphe_9 (27, 9) = 2.1522901619383178764d0
cart_to_sphe_9 (38, 9) = -0.83067898344030094085d0
cart_to_sphe_9 (40, 9) = 2.1522901619383178764d0
cart_to_sphe_9 (42, 9) = -2.1522901619383178764d0
cart_to_sphe_9 ( 1,10) = 0.39636409043643194293d0
cart_to_sphe_9 ( 4,10) = -0.34393377440500167929d0
cart_to_sphe_9 ( 6,10) = -1.2037682104175058775d0
cart_to_sphe_9 (11,10) = -0.29776858550677551679d0
cart_to_sphe_9 (13,10) = 1.5691988753163563388d0
cart_to_sphe_9 (15,10) = 1.1910743420271020672d0
cart_to_sphe_9 (24,10) = 0.64978432507844251538d0
cart_to_sphe_9 (26,10) = -2.5991373003137700615d0
cart_to_sphe_9 (37,10) = 0.48066206207978815025d0
cart_to_sphe_9 (39,10) = -1.6693261563207085231d0
cart_to_sphe_9 (41,10) = 1.9851239033785034453d0
cart_to_sphe_9 ( 2,11) = 0.48066206207978815025d0
cart_to_sphe_9 ( 9,11) = -1.6693261563207085231d0
cart_to_sphe_9 (16,11) = -0.29776858550677551679d0
cart_to_sphe_9 (18,11) = 0.64978432507844251538d0
cart_to_sphe_9 (20,11) = 1.9851239033785034453d0
cart_to_sphe_9 (29,11) = -0.34393377440500167929d0
cart_to_sphe_9 (31,11) = 1.5691988753163563388d0
cart_to_sphe_9 (33,11) = -2.5991373003137700615d0
cart_to_sphe_9 (46,11) = 0.39636409043643194293d0
cart_to_sphe_9 (48,11) = -1.2037682104175058775d0
cart_to_sphe_9 (50,11) = 1.1910743420271020672d0
cart_to_sphe_9 ( 3,12) = -0.74463846463549402274d0
cart_to_sphe_9 ( 8,12) = 1.2930544805637086353d0
cart_to_sphe_9 (10,12) = 0.96378590571704436469d0
cart_to_sphe_9 (19,12) = -2.5166038696554342464d0
cart_to_sphe_9 (30,12) = -1.2930544805637086353d0
cart_to_sphe_9 (32,12) = 2.5166038696554342464d0
cart_to_sphe_9 (47,12) = 0.74463846463549402274d0
cart_to_sphe_9 (49,12) = -0.96378590571704436469d0
cart_to_sphe_9 ( 5,13) = -1.1535889489914915606d0
cart_to_sphe_9 (12,13) = 0.87177715295353129935d0
cart_to_sphe_9 (14,13) = 1.7435543059070625987d0
cart_to_sphe_9 (23,13) = 0.87177715295353129935d0
cart_to_sphe_9 (25,13) = -2.8358912905407192076d0
cart_to_sphe_9 (38,13) = -1.1535889489914915606d0
cart_to_sphe_9 (40,13) = 1.7435543059070625987d0
cart_to_sphe_9 ( 1,14) = -0.44314852502786805507d0
cart_to_sphe_9 ( 4,14) = 0.96132412415957630049d0
cart_to_sphe_9 ( 6,14) = 0.76905929932766104039d0
cart_to_sphe_9 (11,14) = -0.33291539937855436029d0
cart_to_sphe_9 (13,14) = -2.3392235702823930554d0
cart_to_sphe_9 (22,14) = -0.83466307816035426155d0
cart_to_sphe_9 (24,14) = 2.9059238431784376645d0
cart_to_sphe_9 (37,14) = 0.75235513151094117345d0
cart_to_sphe_9 (39,14) = -1.4930907048606177933d0
cart_to_sphe_9 ( 2,15) = -0.75235513151094117345d0
cart_to_sphe_9 ( 7,15) = 0.83466307816035426155d0
cart_to_sphe_9 ( 9,15) = 1.4930907048606177933d0
cart_to_sphe_9 (16,15) = 0.33291539937855436029d0
cart_to_sphe_9 (18,15) = -2.9059238431784376645d0
cart_to_sphe_9 (29,15) = -0.96132412415957630049d0
cart_to_sphe_9 (31,15) = 2.3392235702823930554d0
cart_to_sphe_9 (46,15) = 0.44314852502786805507d0
cart_to_sphe_9 (48,15) = -0.76905929932766104039d0
cart_to_sphe_9 ( 3,16) = 0.626706654240043952d0
cart_to_sphe_9 ( 8,16) = -2.176535018670731151d0
cart_to_sphe_9 (17,16) = 3.2353561313826025233d0
cart_to_sphe_9 (30,16) = -2.176535018670731151d0
cart_to_sphe_9 (47,16) = 0.626706654240043952d0
cart_to_sphe_9 ( 5,17) = 1.2945196985754986958d0
cart_to_sphe_9 (12,17) = -2.9348392204684739765d0
cart_to_sphe_9 (23,17) = 2.9348392204684739765d0
cart_to_sphe_9 (38,17) = -1.2945196985754986958d0
cart_to_sphe_9 ( 1,18) = 0.60904939217552380708d0
cart_to_sphe_9 ( 4,18) = -2.3781845426185916576d0
cart_to_sphe_9 (11,18) = 4.1179360680974030877d0
cart_to_sphe_9 (22,18) = -3.4414040330583097636d0
cart_to_sphe_9 (37,18) = 1.3294455750836041652d0
cart_to_sphe_9 ( 2,19) = 1.3294455750836041652d0
cart_to_sphe_9 ( 7,19) = -3.4414040330583097636d0
cart_to_sphe_9 (16,19) = 4.1179360680974030877d0
cart_to_sphe_9 (29,19) = -2.3781845426185916576d0
cart_to_sphe_9 (46,19) = 0.60904939217552380708d0
END_PROVIDER

View File

@ -1,13 +0,0 @@
program guess_mimi
BEGIN_DOC
! Produce `H_core` MO orbital
END_DOC
implicit none
character*(64) :: label
label = "Guess"
call mo_as_eigvectors_of_mo_matrix(ao_overlap, &
size(ao_overlap,1), &
size(ao_overlap,2),label,-1)
call save_mos
end

View File

@ -1,10 +0,0 @@
program prog_truncate_mo
BEGIN_DOC
! Truncate MO set
END_DOC
implicit none
integer :: n
write(*,*) 'Number of MOs to keep'
read (*,*) n
call save_mos_truncated(n)
end

View File

@ -8,17 +8,54 @@
END_DOC
integer :: i
ao_ortho_canonical_coef(:,:) = 0.d0
do i=1,ao_num
ao_ortho_canonical_coef(i,i) = 1.d0
enddo
if (ao_cartesian) then
do i=1,ao_num
ao_ortho_canonical_coef(i,i) = 1.d0
enddo
else
integer, external :: ao_power_index
integer :: ibegin,j,k
! Assume order provided by ao_power_index
i = 1
do while (i <= ao_num)
select case ( ao_l(i) )
case (0)
ao_ortho_canonical_coef(i,i) = 1.d0
i += 1
BEGIN_TEMPLATE
case ($SHELL)
if (ao_power(i,1) == $SHELL) then
do k=1,size(cart_to_sphe_$SHELL,2)
do j=1,size(cart_to_sphe_$SHELL,1)
ao_ortho_canonical_coef(i+j-1,i+k-1) = cart_to_sphe_$SHELL(j,k)
enddo
enddo
i += size(cart_to_sphe_$SHELL,1)
endif
SUBST [ SHELL ]
1;;
2;;
3;;
4;;
5;;
6;;
7;;
8;;
9;;
END_TEMPLATE
case default
stop 'Error in sphe_to_cart'
end select
enddo
endif
call ortho_canonical(ao_overlap,ao_num_align,ao_num,ao_ortho_canonical_coef,ao_num_align,ao_ortho_canonical_num)
END_PROVIDER
BEGIN_PROVIDER [double precision, ao_ortho_canonical_overlap, (ao_ortho_canonical_num,ao_ortho_canonical_num)]
implicit none
BEGIN_DOC
! overlap matrix of the ao_ortho_canonical
! supposed to be the Identity
! overlap matrix of the ao_ortho_canonical.
! Expected to be the Identity
END_DOC
integer :: i,j,k,l
double precision :: c