titeup
2adbd2b819
add clang-7 to CI
2021-03-29 11:14:17 +02:00
titeup
7c312e8871
inital commit of Makefile.verificarlo
2021-03-29 10:49:57 +02:00
François Coppens
3a99393e8f
Merge pull request #20 from fmgjcoppens/tmp
...
- Moved transposing of Slater_inv to HDF5 conversion tool and removed…
2021-03-18 14:16:24 +01:00
Francois Coppens
6cd9fb1072
- Moved transposing of Slater_inv to HDF5 conversion tool and removed it from the test program.
...
- Let Maponi A3 continue, even after the algorithm breaks down.
2021-03-18 14:06:06 +01:00
François Coppens
333be9326c
Merge pull request #19 from PurplePachyderm/dev
...
Adding simple workflow to test compilation
2021-03-16 09:22:53 +01:00
Aurélien Delval
0842a94cec
Adding simple workflow to test compilation
2021-03-15 17:07:02 +01:00
Pablo de Oliveira Castro
21b421327c
Merge pull request #18 from pablooliveira/version
...
Add version name to tests
2021-03-15 16:41:21 +01:00
Pablo Oliveira
c10ded9cdd
Add version name to tests
2021-03-15 16:00:16 +01:00
Pablo de Oliveira Castro
c2015c6e3f
Merge pull request #17 from pablooliveira/fix-makefile
...
Fix Makefile
2021-03-15 15:33:47 +01:00
Pablo Oliveira
a95304225d
Fix Makefile
2021-03-15 15:31:42 +01:00
François Coppens
2230eb0fbe
Merge pull request #16 from pablooliveira/slagel
...
New implementations for Sherman Morisson
2021-03-15 14:27:25 +01:00
Pablo Oliveira
f096db6411
New implementations for Sherman Morisson
...
- SM2: Slagel splitting implementation
(http://hdl.handle.net/10919/52966 )
- SM3: Keep close to zero denominators for later
- Update tests to show the squared residual
2021-03-15 14:01:38 +01:00
François Coppens
a68554366c
Merge pull request #15 from fmgjcoppens/replacement_updates
...
Replacement updates
2021-03-12 16:24:36 +01:00
François Coppens
4e7c4de0e8
tests/test_internal_h5 and test_external_h5 updated to use replacement updates instead of additive updates.
2021-03-12 16:18:03 +01:00
François Coppens
6012b9decf
4x4 with 2 updates example is working again after adding update cycle 8169 dataset but with replacement updates instead of additive updates.
2021-03-12 15:49:02 +01:00
François Coppens
ef97b40196
Changed code to treat the dataset as replacement updates, instead of additive updates. Before the updates are used to compute the inverse they are transformed accordingly.
...
However, this breaks the 4x4 example in update cycle 8169.
2021-03-12 12:38:50 +01:00
François Coppens
4c7a567750
Merge pull request #14 from fmgjcoppens/fix/repl_matMul_calls
...
Replaced old matMul() function calls.
2021-03-11 15:09:07 +01:00
François Coppens
a1c77a22c8
Replaced old matMul() function calls.
2021-03-11 15:04:35 +01:00
François Coppens
d6169cc6ab
Merge pull request #13 from fmgjcoppens/loop-merge
...
Loops merged
2021-03-10 18:21:32 +01:00
François Coppens
081fbfc1d8
Loop merge successful.
...
Next step: reduce the number of indices of ylk by not keeping
all the previous solutions.
2021-03-10 16:56:22 +01:00
François Coppens
e18e80ff5c
Removed matMul() from Helpers.hpp and renamed matMul2() to matMul().
2021-03-10 15:27:53 +01:00
François Coppens
ffbde8f88c
More changes to debug output.
2021-03-10 12:18:08 +01:00
François Coppens
de8e89df75
Change in debug output.
2021-03-10 11:54:43 +01:00
François Coppens
3b3567040b
Added more debug output.
2021-03-10 11:41:34 +01:00
François Coppens
a9604b3838
Cleaned-up main loop.
2021-03-09 10:43:00 +01:00
François Coppens
066e50914c
Regularised main loop.
2021-03-09 10:43:00 +01:00
Francois Coppens
9c82092cff
Removed dependence on a breakdown array.
2021-03-09 10:40:47 +01:00
Francois Coppens
b2c6847ed8
Add debug comments
2021-03-09 10:39:58 +01:00
Francois Coppens
3f60779700
Cleanup
2021-03-09 10:39:58 +01:00
François Coppens
983f87d504
Rewrote matMul function so it doesn't declare memory inside.
2021-03-09 10:39:58 +01:00
François Coppens
f352a09815
Merge pull request #12 from pablooliveira/SMStandard
2021-03-07 17:17:26 +01:00
Pablo Oliveira
4bd61dd76c
Add a standard Sherman-Morisson implementation
...
- It can serve as a baseline reference
- It can serve as a starting point for including the pivot
and splitting techniques from Maponi and Slaggel without the full
complexity of the MaponiA3 algorithm
2021-03-05 17:00:48 +01:00
François Coppens
133558d98f
Merge pull request #11 from fmgjcoppens/tests
...
Added environment variables source script. Added test script that loo…
2021-02-28 09:33:39 +01:00
François Coppens
f5a2e635cf
Added environment variables source script. Added test script that loops over update cycles. Added test program that loops internally over test cycles.
2021-02-28 09:28:42 +01:00
François Coppens
ba0c0c3213
Merge pull request #10 from fmgjcoppens/restructure
...
Restructuring of file tree
2021-02-27 12:29:06 +01:00
François Coppens
8e0aef7717
Restructuring complete. Updated makefile.
2021-02-27 12:25:55 +01:00
François Coppens
5d4a7af01a
File tree restructured. Written build script build.sh. TODO: convert buld script into Makefile.
2021-02-26 17:28:52 +01:00
François Coppens
00fcaf2309
Replaced dataset.
2021-02-25 13:00:17 +01:00
François Coppens
a5e8ab82e9
Merge pull request #9 from fmgjcoppens/fix/cpp_interface
...
Fix/cpp interface
2021-02-25 12:40:38 +01:00
François Coppens
3df8d33bfa
Problems with MaponiA3 when calling from C++ with HDF5 datasets is fixed. Bug was caused by uninitialised values of NEWed variables at several places. There are still a few remaining memory leaks. Explore with:
...
valgrind --track-origins=yes --leak-check=full --show-leak-kinds=all
2021-02-25 12:17:45 +01:00
François Coppens
225c841a88
* Fixed the 3x3 MaponiA3 C++ example. Update_index vector cannot have values that are smaller than 1 because the first colums in Fortran is stored at 1 and not 0.
...
* Started debugging reading from HDF5 formatted datasets. Slater_inv needs to be transposed before sent to Maponi. Algo fails at the last step. Correct Slater and Inverse fail to produce the identity matrix. Suspect that the matMul function is not working correctly eventhough it looks like it does.
2021-02-24 18:41:48 +01:00
François Coppens
28f6de48ee
TO BE AMENDED
2021-02-23 08:28:09 +01:00
François Coppens
7f4483f19e
- Made test.cpp use variable dataset.
...
- Started cleanup and restructuring file tree.
2021-02-23 07:04:55 +01:00
François Coppens
2fc4c259dc
Merge pull request #8 from fmgjcoppens/dataset
...
Merge pull request #8 from fmgjcoppens/dataset
2021-02-22 15:56:23 +01:00
François Coppens
386f29ffa9
Slightly cleaner
2021-02-22 15:53:23 +01:00
François Coppens
c29276cb7a
Added tests/test to distclean in Makefile
2021-02-22 15:45:18 +01:00
François Coppens
b4787e6803
Test infrastructure for hdf5 datasets and python hdf5 datasert conversion tool.
...
Made small corrections to compensate for changes made after branching-off from test_dataset.
Everything compilers
Everything works except for the HDF5 dataset test program that gives an I/O error.
2021-02-22 15:44:41 +01:00
François Coppens
b2b4756b53
Problem solved. Problems was caused by reading the inverse matrix S_inv the same way as the matrix S, but apparently what has been stored is transpose(S_inv) and not S_inv. Therefore it needs to be read transposed compared to S in order to for S*S_inv to give the Identity matrix.
...
TODO: Calls from C/C++ are still broken because inside the MaponiA3 algo there is compensation for the fact that Fortran sends it's arrays in column-major order. This must be resolved by transposeing S_inv before it is passed to MaponiA3 and remove the compensations made there.
2021-02-22 15:43:27 +01:00
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
François Coppens
5b56a8e8a7
Debugging in progress...
2021-02-22 15:38:39 +01:00