F12 Diagrams to fix + dressing integrals

This commit is contained in:
Anthony Scemama 2019-12-18 19:04:32 +01:00
parent 3edbf9ca78
commit fade04dda5
1 changed files with 582 additions and 22 deletions

View File

@ -143,6 +143,17 @@
" basis\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"let n_elec_alfa, n_elec_beta, n_elec = \n",
" let e = Simulation.electrons simulation in\n",
" Electrons.(n_alfa e, n_beta e, n_elec e)"
]
},
{
"cell_type": "markdown",
"metadata": {},
@ -589,9 +600,12 @@
]
},
{
"cell_type": "raw",
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(*\n",
"let m_H_aux, m_F_aux = \n",
" \n",
" let rec col_vecs_list accu_H accu_F = function\n",
@ -622,7 +636,7 @@
" in\n",
" Mat.of_col_vecs_list h,\n",
" Mat.of_col_vecs_list f\n",
" "
"*) "
]
},
{
@ -789,29 +803,33 @@
"outputs": [],
"source": [
"let check n integral_value exc cabs lexc rexc =\n",
" let det_list =\n",
" match n with\n",
" | 0 -> det_I\n",
" | n -> Array.sub det_I 0 n\n",
" in\n",
" let result =\n",
" let det_list =\n",
" match n with\n",
" | 0 -> det_I\n",
" | n -> Array.sub det_I 0 n\n",
" in\n",
" let result =\n",
" Printf.printf \"Checking ... \\n%!\";\n",
" let percent = ref 0 in\n",
" Array.mapi (fun i ki -> \n",
" let p = (10 * (i+1))/(Array.length det_list) in\n",
" (let p = (10 * (i+1))/(Array.length det_list) in\n",
" if p <> !percent then\n",
" ( percent := p ; Printf.printf \" - %3d %%\\n%!\" (p*10) );\n",
" ( percent := p ; Printf.printf \" - %3d %%\\n%!\" (p*10) ));\n",
" Array.mapi (fun j kj -> \n",
" if i > j then (0,0,0.,0.) else\n",
" if Determinant.degree ki kj <> exc then (0,0,0.,0.) else\n",
" let alphas = generate_alphas ki kj exc cabs lexc rexc in\n",
" let det_value =\n",
" compute_HaaF ki alphas kj\n",
" in\n",
" let int_value = \n",
" integral_value ki kj\n",
" in\n",
" (i,j,det_value,int_value)\n",
" if i > j || Determinant.degree ki kj <> exc then\n",
" (0,0,0.,0.)\n",
" else\n",
" begin\n",
" let alphas = generate_alphas ki kj exc cabs lexc rexc in\n",
" let det_value =\n",
" compute_HaaF ki alphas kj\n",
" in\n",
" let int_value = \n",
" integral_value ki kj\n",
" in\n",
"(* Printf.printf \"%d %d %e %e\\n%!\" i j det_value int_value; *)\n",
" (i,j,det_value,int_value)\n",
" end\n",
" ) det_list\n",
" ) det_list\n",
" |> Array.to_list\n",
@ -829,11 +847,14 @@
" else\n",
" aux (k-1) imax jmax emax dmax vmax\n",
" in\n",
" aux (n-1) 0 0 0. 0. 0.\n",
" aux (Array.length result - 1) 0 0 0. 0. 0.\n",
" in\n",
" let error = abs_float (d -. v) in\n",
" if error < epsilon_float then\n",
" (*\n",
" Printf.printf \"OK: %e\\n%!\" error\n",
" *)\n",
" Printf.printf \"OK: (%d, %d) | %e %e | %e\\n%!\" i j d v error\n",
" else\n",
" Printf.printf \"Failed: (%d, %d) | %e %e | %e\\n%!\" i j d v error\n",
"\n",
@ -841,6 +862,43 @@
"let sum l f = List.fold_left (fun accu i -> accu +. f i) 0. l"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"let array_3_init d1 d2 d3 f =\n",
" let result = \n",
" Bigarray.(Array3.create Float64 fortran_layout) d1 d2 d3\n",
" in\n",
" for k=1 to d3 do\n",
" for j=1 to d2 do\n",
" for i=1 to d1 do\n",
" result.{i,j,k} <- f i j k\n",
" done\n",
" done\n",
" done;\n",
" result\n",
"\n",
"let array_4_init d1 d2 d3 d4 f =\n",
" let result = \n",
" Bigarray.(Genarray.create Float64 fortran_layout) [| d1;d2;d3;d4 |]\n",
" in\n",
" for l=1 to d4 do\n",
" for k=1 to d3 do\n",
" for j=1 to d2 do\n",
" for i=1 to d1 do\n",
" result.{i,j,k,l} <- f i j k l\n",
" done\n",
" done\n",
" done\n",
" done;\n",
" result\n",
"\n",
"(* ----- *)"
]
},
{
"cell_type": "markdown",
"metadata": {},
@ -926,6 +984,108 @@
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"let m_0111_1H_1F = \n",
" Vec.init mo_num (fun i -> \n",
" sum mos_cabs (fun a ->\n",
" h_one i a Spin.Alfa *. f_one a i Spin.Alfa ))\n",
"\n",
" \n",
"let m_0111_1H_2Fa = \n",
" Mat.init_cols mo_num mo_num (fun i j -> sum mos_cabs (fun a ->\n",
" h_one i a Spin.Alfa *. f_two a j i j Spin.Alfa Spin.Alfa ))\n",
"\n",
" \n",
"let m_0111_1H_2Fb = \n",
" Mat.init_cols mo_num mo_num (fun i j -> sum mos_cabs (fun a ->\n",
" h_one i a Spin.Alfa *. f_two a j i j Spin.Alfa Spin.Beta ))\n",
"\n",
"\n",
"let m_0111_2Ha_1F = \n",
" Mat.init_cols mo_num mo_num (fun i j -> sum mos_cabs (fun a ->\n",
" h_two i j a j Spin.Alfa Spin.Alfa *. f_one a j Spin.Alfa ))\n",
"\n",
" \n",
"let m_0111_2Hb_1F = \n",
" Mat.init_cols mo_num mo_num (fun i j -> sum mos_cabs (fun a ->\n",
" h_two i j a j Spin.Alfa Spin.Beta *. f_one a j Spin.Alfa ))\n",
"\n",
"\n",
"let m_0111_2Ha_2Fa =\n",
" array_3_init mo_num mo_num mo_num (fun i j k ->\n",
" sum mos_cabs (fun a ->\n",
" h_two i j a j Spin.Alfa Spin.Alfa *.\n",
" f_two a k i k Spin.Alfa Spin.Alfa \n",
" )\n",
" )\n",
"\n",
"\n",
"let m_0111_2Hb_2Fa =\n",
" array_3_init mo_num mo_num mo_num (fun i j k ->\n",
" sum mos_cabs (fun a ->\n",
" h_two i j a j Spin.Alfa Spin.Beta *.\n",
" f_two a k i k Spin.Alfa Spin.Alfa \n",
" )\n",
" )\n",
"\n",
"\n",
"let m_0111_2Ha_2Fb =\n",
" array_3_init mo_num mo_num mo_num (fun i j k ->\n",
" sum mos_cabs (fun a ->\n",
" h_two i j a j Spin.Alfa Spin.Alfa *.\n",
" f_two a k i k Spin.Alfa Spin.Beta \n",
" )\n",
" )\n",
"\n",
"\n",
"let m_0111_2Hb_2Fb =\n",
" array_3_init mo_num mo_num mo_num (fun i j k ->\n",
" sum mos_cabs (fun a ->\n",
" h_two i j a j Spin.Alfa Spin.Beta *.\n",
" f_two a k i k Spin.Alfa Spin.Beta \n",
" )\n",
" )\n",
"\n",
"\n",
"\n",
"let integral_value ki kj = \n",
"\n",
" let mos_a, mos_b = mos_a ki, mos_b ki in\n",
" \n",
" sum mos_a (fun i ->\n",
" m_0111_1H_1F.{i} +. \n",
" sum mos_a (fun j ->\n",
" m_0111_1H_2Fa.{i,j} +. m_0111_2Ha_1F.{i,j} +.\n",
" sum mos_a (fun k -> m_0111_2Ha_2Fa.{i,j,k}) +.\n",
" sum mos_b (fun k -> m_0111_2Ha_2Fb.{i,j,k})) +.\n",
" sum mos_b (fun j ->\n",
" m_0111_1H_2Fb.{i,j} +. m_0111_2Hb_1F.{i,j} +.\n",
" sum mos_a (fun k -> m_0111_2Hb_2Fa.{i,j,k}) +.\n",
" sum mos_b (fun k -> m_0111_2Hb_2Fb.{i,j,k}))\n",
" )\n",
" +.\n",
" sum mos_b (fun i ->\n",
" m_0111_1H_1F.{i} +. \n",
" sum mos_b (fun j ->\n",
" m_0111_1H_2Fa.{i,j} +. m_0111_2Ha_1F.{i,j} +.\n",
" sum mos_b (fun k -> m_0111_2Ha_2Fa.{i,j,k}) +.\n",
" sum mos_a (fun k -> m_0111_2Ha_2Fb.{i,j,k})) +.\n",
" sum mos_a (fun j ->\n",
" m_0111_1H_2Fb.{i,j} +. m_0111_2Hb_1F.{i,j} +.\n",
" sum mos_b (fun k -> m_0111_2Hb_2Fa.{i,j,k}) +.\n",
" sum mos_a (fun k -> m_0111_2Hb_2Fb.{i,j,k}))\n",
" )\n",
" \n",
"let _ =\n",
" check 0 integral_value 0 1 1 1\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
@ -1022,6 +1182,65 @@
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"let m_0122_Haa = \n",
" array_3_init mo_num mo_num mo_num (fun i j k ->\n",
" sum mos_cabs (fun a ->\n",
" h_two i j a k Spin.Alfa Spin.Alfa *. f_two a k i j Spin.Alfa Spin.Alfa\n",
" ) )\n",
" \n",
"let m_0122_Hab = \n",
" array_3_init mo_num mo_num mo_num (fun i j k ->\n",
" sum mos_cabs (fun a ->\n",
" h_two i j a k Spin.Alfa Spin.Beta *. f_two a k i j Spin.Alfa Spin.Beta\n",
" ) )\n",
"\n",
"\n",
"let integral_value ki kj = \n",
" (* mos unoccupied in both I and J *)\n",
" let mos_virt_a, mos_virt_b = \n",
" Array.init mo_num (fun i -> Some (i+1)) , \n",
" Array.init mo_num (fun i -> Some (i+1)) \n",
" in\n",
" List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a ki);\n",
" List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a kj);\n",
" List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b ki);\n",
" List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b kj);\n",
" \n",
" let mos_virt_a, mos_virt_b = \n",
" Array.to_list mos_virt_a |> Util.list_some,\n",
" Array.to_list mos_virt_b |> Util.list_some\n",
" in\n",
" \n",
" let result = \n",
" sum (mos_a ki) (fun i -> \n",
" sum (mos_b ki) (fun j -> \n",
" sum mos_virt_b (fun k -> m_0122_Hab.{i,j,k} )))\n",
" +.\n",
" sum (mos_b ki) (fun i -> \n",
" sum (mos_a ki) (fun j -> \n",
" sum mos_virt_a (fun k -> m_0122_Hab.{i,j,k} )))\n",
" +.\n",
" (* Alpha-Alpha / Beta-Beta *)\n",
" List.fold_left (fun accu (mos_virt,mos) -> \n",
" accu +.\n",
" sum mos (fun j -> \n",
" sum mos (fun i -> if i <= j then 0. else\n",
" sum mos_virt (fun k -> m_0122_Haa.{i,j,k} )))\n",
" ) 0. [ (mos_virt_a,mos_a ki) ; (mos_virt_b,mos_b ki)]\n",
" in \n",
" result\n",
" \n",
"let _ =\n",
" check 0 integral_value 0 1 2 2\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
@ -1096,6 +1315,49 @@
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"let m_0222_Haa = \n",
" Mat.init_cols mo_num mo_num (fun i j ->\n",
" sum mos_cabs (fun a ->\n",
" sum mos_cabs (fun b -> if b >= a then 0. else\n",
" h_two i j a b Spin.Alfa Spin.Alfa *. f_two a b i j Spin.Alfa Spin.Alfa\n",
" ) )\n",
" )\n",
" \n",
"let m_0222_Hab = \n",
" Mat.init_cols mo_num mo_num (fun i j ->\n",
" sum mos_cabs (fun a ->\n",
" sum mos_cabs (fun b ->\n",
" h_two i j a b Spin.Alfa Spin.Beta *. f_two a b i j Spin.Alfa Spin.Beta\n",
" ) )\n",
" )\n",
" \n",
"let integral_value ki kj = \n",
" (* Alpha-Beta *)\n",
" sum (mos_a ki) (fun i -> \n",
" sum (mos_b ki) (fun j -> \n",
" m_0222_Hab.{i,j} \n",
" ))\n",
" +.\n",
" (* Alpha-Alpha / Beta-Beta *)\n",
" List.fold_left (fun accu (mos) -> \n",
" accu +.\n",
" sum mos (fun j -> \n",
" sum mos (fun i -> if i < j then 0. else\n",
" m_0222_Haa.{i,j} \n",
" ))\n",
" ) 0. [ (mos_a ki) ; (mos_b ki)]\n",
" \n",
"let _ =\n",
" check 0 integral_value 0 2 2 2\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
@ -1176,6 +1438,115 @@
"let _ = check 0 integral_value 1 1 1 1"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"let m_1111_1H_1F = \n",
" Mat.init_cols mo_num mo_num (fun i k -> \n",
" sum mos_cabs (fun a ->\n",
" h_one i a Spin.Alfa *. f_one a k Spin.Alfa ))\n",
"\n",
"\n",
"let m_1111_1H_2Fa = \n",
" array_3_init mo_num mo_num mo_num (fun i j k ->\n",
" sum mos_cabs (fun a ->\n",
" h_one i a Spin.Alfa *. f_two a j k j Spin.Alfa Spin.Alfa ))\n",
"\n",
" \n",
"let m_1111_1H_2Fb = \n",
" array_3_init mo_num mo_num mo_num (fun i j k ->\n",
" sum mos_cabs (fun a ->\n",
" h_one i a Spin.Alfa *. f_two a j k j Spin.Alfa Spin.Beta ))\n",
"\n",
"\n",
"let m_1111_2Ha_1F = \n",
" array_3_init mo_num mo_num mo_num (fun i j k ->\n",
" sum mos_cabs (fun a ->\n",
" h_two i j a j Spin.Alfa Spin.Alfa *. f_one a k Spin.Alfa ))\n",
"\n",
" \n",
"let m_1111_2Hb_1F = \n",
" array_3_init mo_num mo_num mo_num (fun i j k ->\n",
" sum mos_cabs (fun a ->\n",
" h_two i j a j Spin.Alfa Spin.Beta *. f_one a k Spin.Alfa ))\n",
"\n",
"\n",
"let m_1111_2Ha_2Fa =\n",
" array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n",
" sum mos_cabs (fun a ->\n",
" h_two i j a j Spin.Alfa Spin.Alfa *.\n",
" f_two a l k l Spin.Alfa Spin.Alfa \n",
" )\n",
" )\n",
"\n",
"\n",
"let m_1111_2Hb_2Fa =\n",
" array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n",
" sum mos_cabs (fun a ->\n",
" h_two i j a j Spin.Alfa Spin.Beta *.\n",
" f_two a l k l Spin.Alfa Spin.Alfa \n",
" )\n",
" )\n",
"\n",
"\n",
"let m_1111_2Ha_2Fb =\n",
" array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n",
" sum mos_cabs (fun a ->\n",
" h_two i j a j Spin.Alfa Spin.Alfa *.\n",
" f_two a l k l Spin.Alfa Spin.Beta \n",
" )\n",
" )\n",
"\n",
"\n",
"let m_1111_2Hb_2Fb =\n",
" array_4_init mo_num mo_num mo_num mo_num (fun i j k l ->\n",
" sum mos_cabs (fun a ->\n",
" h_two i j a j Spin.Alfa Spin.Beta *.\n",
" f_two a l k l Spin.Alfa Spin.Beta \n",
" )\n",
" )\n",
"\n",
"\n",
"let integral_value ki kj = \n",
" let i, k, s, phase =\n",
" match Excitation.of_det ki kj with\n",
" | Excitation.(Single (phase, { hole ; particle ; spin })) ->\n",
" hole, particle, spin, phase\n",
" | _ -> assert false\n",
" in\n",
" \n",
" let mos_a, mos_b =\n",
" match s with\n",
" | Spin.Alfa -> mos_a ki, mos_b ki\n",
" | Spin.Beta -> mos_b ki, mos_a ki\n",
" in \n",
" \n",
" let result = \n",
" m_1111_1H_1F.{i,k} +. \n",
" sum mos_a (fun j -> if j = i then 0. else\n",
" m_1111_1H_2Fa.{i,j,k} +. m_1111_2Ha_1F.{i,j,k} +.\n",
" sum mos_a (fun l -> if l = i then 0. else m_1111_2Ha_2Fa.{i,j,k,l}) +.\n",
" sum mos_b (fun l -> m_1111_2Ha_2Fb.{i,j,k,l})) +.\n",
" sum mos_b (fun j ->\n",
" m_1111_1H_2Fb.{i,j,k} +. m_1111_2Hb_1F.{i,j,k} +.\n",
" sum mos_a (fun l -> if l = i then 0. else m_1111_2Hb_2Fa.{i,j,k,l}) +.\n",
" sum mos_b (fun l -> m_1111_2Hb_2Fb.{i,j,k,l}))\n",
" in\n",
" \n",
" match phase with\n",
" | Phase.Pos -> result\n",
" | Phase.Neg -> -. result\n",
" \n",
"let _ =\n",
" check 0 integral_value 1 1 1 1\n",
" "
]
},
{
"cell_type": "markdown",
"metadata": {},
@ -1606,7 +1977,7 @@
"cell_type": "markdown",
"metadata": {},
"source": [
"# 9. 2 1 12"
"# 9. *2 1 12*"
]
},
{
@ -2119,6 +2490,195 @@
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Packed diagrams"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Diagonal elements"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Two electrons in CABS"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(* 0 2 22 *)\n",
"\n",
"\n",
"let integral_value ki kj = \n",
" (* Alpha-Beta *)\n",
" let s, s' = Spin.(Alfa, Beta) in\n",
" sum mos_cabs (fun a -> \n",
" sum mos_cabs (fun b -> \n",
" sum (mos_a ki) (fun i -> \n",
" sum (mos_b ki) (fun j -> \n",
" h_two i j a b s s' *. f_two a b i j s s'\n",
" ))))\n",
" +.\n",
" (* Alpha-Alpha / Beta-Beta *)\n",
" List.fold_left (fun accu (mos,s) -> \n",
" let s' = s in accu +.\n",
" sum mos_cabs (fun b -> \n",
" sum mos_cabs (fun a -> if b > a then 0. else\n",
" sum mos (fun j -> \n",
" sum mos (fun i -> if i < j then 0. else\n",
" h_two i j a b s s' *. f_two a b i j s s'\n",
" ))))\n",
" ) 0. [ (mos_a ki,Spin.Alfa) ; (mos_b ki,Spin.Beta)]\n",
" \n",
"let _ =\n",
" check 0 integral_value 0 2 2 2\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### One electron in CABS"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"(* 0 1 11 *)\n",
"\n",
"\n",
"let integral_value ki kj = \n",
" (* Alpha-Beta *)\n",
" let s, s' = Spin.(Alfa, Beta) in \n",
" let mos_a, mos_b = mos_a ki, mos_b ki in\n",
" \n",
" sum mos_cabs (fun a ->\n",
" sum mos_a (fun i -> \n",
" (h_one i a s +.\n",
" sum mos_a (fun j -> h_two i j a j s s ) +.\n",
" sum mos_b (fun j -> h_two i j a j s s') ) *. \n",
" (f_one a i s +.\n",
" sum mos_a (fun j -> f_two a j i j s s ) +.\n",
" sum mos_b (fun j -> f_two a j i j s s') )\n",
" )\n",
" +.\n",
" sum mos_b (fun i -> \n",
" (h_one i a s +.\n",
" sum mos_b (fun j -> h_two i j a j s' s') +.\n",
" sum mos_a (fun j -> h_two i j a j s' s ) ) *. \n",
" (f_one a i s +.\n",
" sum mos_a (fun j -> f_two a j i j s' s ) +.\n",
" sum mos_b (fun j -> f_two a j i j s' s') )\n",
" ) \n",
" ) \n",
" \n",
"\n",
"(* 0 1 22 *)\n",
"\n",
"let integral_value ki kj = \n",
" (* mos unoccupied in both I and J *)\n",
" let mos_virt_a, mos_virt_b = \n",
" Array.init mo_num (fun i -> Some (i+1)) , \n",
" Array.init mo_num (fun i -> Some (i+1)) \n",
" in\n",
" List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a ki);\n",
" List.iter (fun i -> mos_virt_a.(i-1) <- None) (mos_a kj);\n",
" List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b ki);\n",
" List.iter (fun i -> mos_virt_b.(i-1) <- None) (mos_b kj);\n",
" \n",
" let mos_virt_a, mos_virt_b = \n",
" Array.to_list mos_virt_a |> Util.list_some,\n",
" Array.to_list mos_virt_b |> Util.list_some\n",
" in\n",
" \n",
" (* Alpha-Beta *)\n",
" let s, s' = Spin.(Alfa, Beta) in\n",
" sum mos_cabs (fun a ->\n",
" sum (mos_b ki) (fun j -> \n",
" sum (mos_a ki) (fun i -> \n",
" sum mos_virt_b (fun k -> \n",
" h_two i j a k s s' *. f_two a k i j s s'\n",
" )))\n",
" +.\n",
" sum (mos_a ki) (fun j -> \n",
" sum (mos_b ki) (fun i -> \n",
" sum mos_virt_a (fun k -> \n",
" h_two i j a k s s' *. f_two a k i j s s'\n",
" )))) \n",
" +.\n",
" (* Alpha-Alpha / Beta-Beta *)\n",
" List.fold_left (fun accu (mos_virt,mos,s) -> \n",
" let s' = s in accu +.\n",
" sum mos (fun j -> \n",
" sum mos (fun i -> if i < j then 0. else\n",
" sum mos_virt (fun k -> \n",
" sum mos_cabs (fun a -> \n",
" h_two i j a k s s' *. f_two a k i j s s'\n",
" )))) \n",
" ) 0. [ (mos_virt_a,mos_a ki,Spin.Alfa) ; (mos_virt_b,mos_b ki,Spin.Beta)]\n",
" \n",
"let _ =\n",
" check 0 integral_value 0 1 2 2\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Single excitations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Two electrons in CABS"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### One electron in CABS"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Double excitations"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Two electrons in CABS"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### One electron in CABS"
]
},
{
"cell_type": "code",
"execution_count": null,