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:
parent
6162685051
commit
8a566b1e63
2
ocaml/.gitignore
vendored
2
ocaml/.gitignore
vendored
@ -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
|
||||
|
@ -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 )
|
||||
|
||||
;;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
19
ocaml/test_pseudo.ml
Normal 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
15
ocaml/test_symmetry.ml
Normal 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
196
plugins/Molden/aos.irp.f
Normal 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
|
@ -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
|
||||
|
@ -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
|
||||
|
707
src/AO_Basis/spherical_to_cartesian.irp.f
Normal file
707
src/AO_Basis/spherical_to_cartesian.irp.f
Normal 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
|
||||
|
@ -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
|
@ -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
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user