From 355aa9f166fcebcc6d12057b50076685e1d48801 Mon Sep 17 00:00:00 2001 From: Anthony Scemama Date: Thu, 28 Feb 2019 12:50:42 +0100 Subject: [PATCH] Using less memory --- CI/CI.ml | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/CI/CI.ml b/CI/CI.ml index fd8e50e..29680b3 100644 --- a/CI/CI.ml +++ b/CI/CI.ml @@ -53,17 +53,6 @@ let make det_space = let ndet = Ds.size det_space in let det = Ds.determinants det_space in let mo_basis = Ds.mo_basis det_space in - - let m_H = lazy ( - Array.init ndet (fun i -> let ki = det.(i) in - Vec.init ndet (fun j -> let kj = det.(j-1) in - h_ij mo_basis ki kj - ) - |> Vector.sparse_of_vec - ) - |> Matrix.sparse_of_vector_array - ) - in (* @@ -124,13 +113,23 @@ let make det_space = Parallel.broadcast (lazy h) ) in *) - let m_S2 = lazy ( + + + let m_H = lazy ( + let v = Vec.make0 ndet in Array.init ndet (fun i -> let ki = det.(i) in - Vec.init ndet (fun j -> let kj = det.(j-1) in - CIMatrixElement.make_s2 ki kj - ) - |> Vector.sparse_of_vec - ) + Array.iteri (fun j kj -> + v.{j+1} <- h_ij mo_basis ki kj) det; + Vector.sparse_of_vec v) + |> Matrix.sparse_of_vector_array + ) + in + let m_S2 = lazy ( + let v = Vec.make0 ndet in + Array.init ndet (fun i -> let ki = det.(i) in + Array.iteri (fun j kj -> + v.{j+1} <- CIMatrixElement.make_s2 ki kj) det; + Vector.sparse_of_vec v) |> Matrix.sparse_of_vector_array ) in