Go to file
François Coppens 8d63dd1701 The algorithm now works for the following 4x4 example with 2 updates:
S = [1,0,1,-1; 0,1,1,0; -1,0,-1,0; 1,1,1,1]
S_inv = [1,-1,1,1; 1,0,2,1; -1,1,-2,-1; -1,0,-1,0]
u1 = [0,-2,0,0]
u2 = [0,-1,0,0]
upd_idx = [2,4]

To go from Maponi's examples where the number of updates is always equal
to the the dimension of the matrix, and the decomposition is always
diagonal, to cases with a non-diagonal decomposition and a number of
updates unequal to its size, the following changed needed to be made:

* in the calculation of the {y0k} an extra inner for-loop needs to be
  added to make it a full matrix-vector multiplication due to the fact
  that A0 is not a diagonal matrix

* in some places the use of the update-order vector p needs
  the be replaced with that of upd_idx to make sure the correct
  component of the ylk is selected and the proper rank-1 matrices are
  constructed

* when a matrix is passed from Fortran to C++ with 2D adressing, it is
  passed in colum-major order. The passed matrix needs to be transposed
  before passing to C++. Doing this inside the algorithm will break
  compatibility with called from C/C++.
2021-02-22 15:41:30 +01:00
mwe The Fortran interface to C++ fuction MaponiA3() works but the mechanism of passing the 2D arrays from Fortran to C++ must be improved. Now the passed 'linear' 2D arrays are copied and reshaped into usable 2D arrays. This needs to be replaced with some suitable casting mechanism. 2021-02-06 18:59:07 +01:00
Octave-tests Debugging in progress... 2021-02-22 15:38:39 +01:00
tests Add test infrastructure for datasets 2021-02-16 10:49:15 +01:00
.gitignore The algorithm now works for the following 4x4 example with 2 updates: 2021-02-22 15:41:30 +01:00
cMaponiA3_test_3x3_3.cpp The algorithm now works for the following 4x4 example with 2 updates: 2021-02-22 15:41:30 +01:00
det.irp.f Added some test output in the Fortran prgram to load into Octave for quick checking. 2021-02-12 17:48:49 +01:00
fMaponiA3_test_3x3_3.f90 The algorithm now works for the following 4x4 example with 2 updates: 2021-02-22 15:41:30 +01:00
fMaponiA3_test_4x4_2 The algorithm now works for the following 4x4 example with 2 updates: 2021-02-22 15:41:30 +01:00
fMaponiA3_test_4x4_2.f90 The algorithm now works for the following 4x4 example with 2 updates: 2021-02-22 15:41:30 +01:00
Helpers.hpp The algorithm now works for the following 4x4 example with 2 updates: 2021-02-22 15:41:30 +01:00
Makefile The algorithm now works for the following 4x4 example with 2 updates: 2021-02-22 15:41:30 +01:00
QMCChem_dataset_test.f90 The algorithm now works for the following 4x4 example with 2 updates: 2021-02-22 15:41:30 +01:00
QMCChem_dataset_test.m The algorithm now works for the following 4x4 example with 2 updates: 2021-02-22 15:41:30 +01:00
SM_MaponiA3_mod.f90 * Modified Maponi algo 3 so that it can be used with a number of updates 2021-02-22 15:34:34 +01:00
SM_MaponiA3.cpp The algorithm now works for the following 4x4 example with 2 updates: 2021-02-22 15:41:30 +01:00
SM_MaponiA3.hpp * Modified Maponi algo 3 so that it can be used with a number of updates 2021-02-22 15:34:34 +01:00
test.dataset.dat Added some test output in the Fortran prgram to load into Octave for quick checking. 2021-02-12 17:48:49 +01:00
Utils_mod.f90 Put importing the dataset into a module. 2021-02-12 19:31:31 +01:00