* 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.
This commit is contained in:
François Coppens 2021-02-24 18:41:48 +01:00
parent 28f6de48ee
commit 225c841a88
13 changed files with 662 additions and 51 deletions

3
.gitignore vendored
View File

@ -7,4 +7,5 @@ QMCChem_dataset_test
Slater*
Updates*
tests/test
datasets/datasets.*
datasets/datasets.*

View File

@ -39,11 +39,11 @@ void showMatrix(T *matrix, unsigned int M, string name) {
for (unsigned int i = 0; i < M; i++) {
cout << "[";
for (unsigned int j = 0; j < M; j++) {
if (matrix[i*M+j] >= 0) {
cout << " " << matrix[i*M+j];
if (matrix[i*M + j] >= 0) {
cout << " " << matrix[i*M + j];
}
else {
cout << " " << matrix[i*M+j];
cout << " " << matrix[i*M + j];
}
}
cout << " ]" << endl;
@ -51,19 +51,6 @@ void showMatrix(T *matrix, unsigned int M, string name) {
cout << endl;
}
template<typename T>
void showMatrixT(T **matrix, unsigned int size, string name) {
cout << name << " = " << endl;
for (unsigned int i = 0; i < size; i++) {
cout << "[ ";
for (unsigned int j = 0; j < size; j++) {
cout << matrix[j][i] << " ";
}
cout << " ]" << endl;
}
cout << endl;
}
template<typename T>
T *transpose(T *A, unsigned int M) {
T *B = new T[M*M];
@ -88,6 +75,20 @@ T *matMul(T *A, T *B, unsigned int M) {
return C;
}
template<typename T>
T *matMul2(T *A, T *B, unsigned int M) {
T *C = new T[M*M];
for (unsigned int i = 0; i < M; i++) {
for (unsigned int j = 0; j < M; j++) {
for (unsigned int k = 0; k < M; k++) {
C[i*M+j] += A[i*M+k] * B[k*M+j];
}
}
}
showMatrix(C,M,"C");
return C;
}
template<typename T1, typename T2>
T1 *outProd(T1 *vec1, T2 *vec2, unsigned int M) {
T1 *C = new T1[M*M];
@ -135,7 +136,6 @@ T matDet(T **A, unsigned int M) {
delete [] temp;
}
template<typename T>
bool is_identity(T *A, unsigned int M, double tolerance) {
for (unsigned int i = 0; i < M; i++) {

View File

@ -6,15 +6,16 @@ CXX = icpc
FC = ifort
## Compiler flags & common obs & libs
CXXFLAGS = -O0 -debug full -traceback
FFLAGS = -O0 -debug full -traceback
H5CXXFLAGS = -O0 -g
CXXFLAGS = -O0 -g -traceback
FFLAGS = -O0 -g -traceback
FLIBS = -lstdc++
OBJS = SM_MaponiA3.o
## Deps & objs for C++ cMaponiA3_test_3x3_3
cMaponiA3_test_3x3_3OBJ = cMaponiA3_test_3x3_3.o
fMaponiA3_test_3x3_3OBJ = SM_MaponiA3_mod.o fMaponiA3_test_3x3_3.o
fMaponiA3_test_4x4_2OBJ = SM_MaponiA3_mod.o fMaponiA3_test_4x4_2.o
fMaponiA3_test_4x4_2OBJ = Helpers_mod.o SM_MaponiA3_mod.o fMaponiA3_test_4x4_2.o
QMCChem_dataset_testOBJ = Helpers_mod.o SM_MaponiA3_mod.o QMCChem_dataset_test.o
@ -32,7 +33,7 @@ all: cMaponiA3_test_3x3_3 fMaponiA3_test_3x3_3 fMaponiA3_test_4x4_2 QMCChem_data
## Explicit recipe to trigger rebuild and relinking when headerfile is changed
SM_MaponiA3.o: SM_MaponiA3.cpp Helpers.hpp
$(CXX) $(ARCH) $(CXXFLAGS) -c -o $@ $<
$(CXX) $(ARCH) $(CXXFLAGS) -fPIC -c -o $@ $<
## Build tagets
@ -64,4 +65,4 @@ QMCChem_dataset_test: $(QMCChem_dataset_testOBJ) $(OBJS)
$(FC) $(ARCH) $(FFLAGS) $(FLIBS) -o $@ $^
tests/test: tests/test.cpp SM_MaponiA3.o
$(H5CXX) $(ARCH) $(CXXFLAGS) -o $@ $^
$(H5CXX) $(ARCH) $(H5CXXFLAGS) -o $@ $^

View File

@ -9,7 +9,7 @@ program QMCChem_dataset_test
real(c_double), dimension(:,:), allocatable :: Updates
real(c_double), dimension(:,:), allocatable :: S, S_inv, S_inv_t
call Read_dataset("datasets/update_cycle_13.dat", &
call Read_dataset("datasets/update_cycle_8169.dat", &
cycle_id, &
dim, &
n_updates, &
@ -18,7 +18,6 @@ program QMCChem_dataset_test
Updates_index, &
Updates)
allocate(S_inv_t(dim,dim))
call Transpose(S_inv, S_inv_t, dim)
!! Write current S and S_inv to file for check in Octave
open(unit = 2000, file = "Slater_old.dat")
@ -53,7 +52,12 @@ program QMCChem_dataset_test
end do
!! Update S_inv
!! S_inv needs to be transposed first before it
!! goes to MaponiA3
call Transpose(S_inv, S_inv_t, dim)
call MaponiA3(S_inv_t, dim, n_updates, Updates, Updates_index)
!! S_inv_t needs to be transposed back before we
!! can multiply it with S to test unity
call Transpose(S_inv_t, S_inv, dim)
!! Write new S and S_inv to file for check in Octave

View File

@ -70,8 +70,6 @@ void MaponiA3(double *Slater_inv, unsigned int Dim, unsigned int N_updates,
// a new pointer 'copy' that points to whereever 'Slater_inv' points to now.
double *copy = Slater_inv;
// Slater_inv = transpose(Slater_inv, Dim);
// Construct A-inverse from A0-inverse and the ylk
for (l = 0; l < N_updates; l++) { // l = 0, 1
k = l + 1; // k = 1, 2
@ -85,8 +83,6 @@ void MaponiA3(double *Slater_inv, unsigned int Dim, unsigned int N_updates,
Slater_inv = matMul(Al, Slater_inv, Dim);
}
// Slater_inv = transpose(Slater_inv, Dim);
// Assign the new values of 'Slater_inv' to the old values in 'copy[][]'
for (i = 0; i < Dim; i++) {
for (j = 0; j < Dim; j++) {

View File

@ -1,12 +1,9 @@
// main.cpp
#include "SM_MaponiA3.hpp"
#include "Helpers.hpp"
#include <cstdlib>
#include <ctime>
int main() {
srand((unsigned) time(0));
unsigned int M = 3; // Dimension of the Slater-matrix
unsigned int i, j; // Indices for iterators
@ -37,18 +34,16 @@ int main() {
// the inverse of A0_inv of diagonal matrix A0_inv
// and the update matrix Ar
for (i = 0; i < M; i++) {
A0[i*M+i] = A[i*M+i];
A0_inv[i*M+i] = 1.0/A[i*M+i];
Ar_index[i] = i;
A0[i*M + i] = A[i*M + i];
A0_inv[i*M + i] = 1.0/A[i*M + i];
Ar_index[i] = i+1; // ! First column needs to start with 1 !
for (j = 0; j < M; j++) {
Ar[i*M+j] = A[i*M+j] - A0[i*M+j];
Ar[i*M + j] = A[i*M + j] - A0[i*M + j];
}
}
// Define pointers dim and n_updates to use in Sherman-Morrison(...) function call
unsigned int dim = M;
unsigned int n_updates = M;
MaponiA3(A0_inv, dim, n_updates, Ar, Ar_index);
MaponiA3(A0_inv, M, M, Ar, Ar_index);
showMatrix(A0_inv, M, "A0_inv");
// Deallocate all vectors and matrices

546
datasets/datasets.small.dat Normal file
View File

@ -0,0 +1,546 @@
#START_PACKET
#CYCLE_ID: 13
#SLATER_MATRIX_DIM: 21
#NUPDATES: 3
#SLATER_MATRIX: (i (outer), j (inner)), slater_matrix_alpha(i,j), ddet * slater_matrix_alpha_inv_det(i,j) / ddet
(01,01) -0.123240642249584E+00 0.311919238733319E+02
(01,02) 0.150952935218811E+00 0.391211616261786E+02
(01,03) 0.871514901518822E-01 0.230468185418855E+02
(01,04) -0.150895461440086E+00 0.385544395586345E+02
(01,05) -0.871202647686005E-01 0.233591113858616E+02
(01,06) -0.123183816671371E+00 -0.312005871898339E+02
(01,07) 0.100359566509724E+00 -0.751758654676229E+00
(01,08) -0.135056734085083E+00 -0.440356424219148E+01
(01,09) -0.744080543518066E-01 -0.157135293238612E+01
(01,10) -0.120210982859135E+00 0.311608268850865E+01
(01,11) -0.757721215486526E-01 0.269147143852639E+01
(01,12) 0.525853671133518E-01 -0.295675853033276E+01
(01,13) 0.102125488221645E+00 0.695722472661512E+01
(01,14) -0.307190138846636E-01 -0.656548036745546E+01
(01,15) 0.202103536576033E-01 0.357345834272637E+01
(01,16) -0.211704343557358E+00 -0.127226560851769E+00
(01,17) -0.152789223939180E-01 0.211510373691347E+01
(01,18) -0.396802611649036E-01 0.225402683839516E+01
(01,19) 0.156803593039513E+00 0.138095041843308E+00
(01,20) 0.273103892803192E+00 0.144755926374198E+00
(01,21) -0.666790679097176E-01 -0.129650521353452E+01
(02,01) -0.383377403020859E+00 0.748881862107261E+02
(02,02) 0.469519078731537E+00 0.913799202443389E+02
(02,03) -0.271040737628937E+00 0.511079244308798E+02
(02,04) 0.469401627779007E+00 0.908925159786654E+02
(02,05) -0.271042704582214E+00 0.524296869618370E+02
(02,06) 0.383267551660538E+00 -0.743781724291279E+02
(02,07) 0.116775326430798E+00 -0.308858192791382E+01
(02,08) -0.936452969908714E-01 -0.883914805747968E+01
(02,09) 0.369134694337845E-01 -0.251520306199258E+01
(02,10) -0.204805508255959E-01 0.120501905090525E+02
(02,11) -0.173394829034805E-01 0.968749784123027E+01
(02,12) -0.197960838675499E+00 -0.128360153025071E+02
(02,13) 0.962643101811409E-01 0.124602848636645E+02
(02,14) 0.274471193552017E+00 -0.108315097729706E+02
(02,15) 0.145023554563522E+00 0.538637730088244E+01
(02,16) -0.179225616157055E-01 -0.155954216668878E+01
(02,17) 0.136946782469749E+00 0.733071759611877E+01
(02,18) -0.174913182854652E+00 0.106785970043980E+02
(02,19) -0.128193218261003E-01 -0.526404570077434E+00
(02,20) 0.225567314773798E-01 0.126274276019119E+01
(02,21) -0.171542761381716E-02 -0.176385334707397E+01
(03,01) -0.109934650361538E+00 0.981074335673308E+01
(03,02) 0.393143796827644E-03 0.142283742204400E+02
(03,03) 0.155300989747047E+00 0.106061203769129E+02
(03,04) -0.378105294657871E-03 0.142205894966935E+02
(03,05) 0.154906913638115E+00 0.106658385090178E+02
(03,06) 0.109414055943489E+00 -0.999705856360834E+01
(03,07) 0.162110984325409E+00 -0.235530921594611E+01
(03,08) -0.104241691529751E+00 -0.397822961500586E+01
(03,09) -0.199010908603668E+00 -0.615755307417915E+00
(03,10) -0.178463548421860E+00 0.302954990045915E+01
(03,11) 0.115249522030354E+00 0.260774312202084E+01
(03,12) -0.751317143440247E-01 -0.324474908269315E+01
(03,13) -0.180085301399231E-01 0.506349143477028E+01
(03,14) 0.776397660374641E-01 -0.403331084954255E+01
(03,15) -0.162087708711624E+00 0.216159755322281E+01
(03,16) 0.115154005587101E+00 -0.356236831434911E+00
(03,17) -0.111836232244968E+00 0.229287231445069E+01
(03,18) 0.215133726596832E+00 0.345423911992016E+01
(03,19) -0.165389522910118E+00 -0.522840315767084E-01
(03,20) -0.160914268344641E-01 -0.798660202084652E+00
(03,21) -0.184740740805864E-01 -0.669484792656382E-01
(04,01) -0.505007863044739E+00 -0.509168796576331E+00
(04,02) -0.618503987789154E+00 -0.626061168716399E+00
(04,03) 0.357068866491318E+00 0.106282405724139E+00
(04,04) 0.618444144725800E+00 0.187208027678628E+00
(04,05) -0.357080936431885E+00 -0.361241794759462E+00
(04,06) -0.504969716072083E+00 -0.152171018401898E+00
(04,07) 0.778413712978363E-01 0.786005474778943E-02
(04,08) 0.487910546362400E-01 0.335536466772946E-01
(04,09) -0.115782171487808E-01 0.204150929795949E-01
(04,10) -0.530001707375050E-01 -0.431873457736125E-01
(04,11) 0.214109313674271E-02 -0.266642681570363E-01
(04,12) -0.194653034210205E+00 0.354230568719380E-01
(04,13) -0.116052091121674E+00 -0.662672792520103E-01
(04,14) -0.260605067014694E+00 0.541727654659900E-01
(04,15) -0.137633457779884E+00 -0.215053141567270E-01
(04,16) 0.422291792929173E-01 -0.313441408257335E-02
(04,17) 0.133351176977158E+00 -0.360061392608368E-01
(04,18) -0.170262515544891E+00 -0.364432600501005E-01
(04,19) -0.304439514875412E-01 -0.281329679904227E-02
(04,20) 0.533868409693241E-01 0.147042058872862E-01
(04,21) 0.596583448350430E-02 0.983501095240267E-02
(05,01) -0.947399914264679E+00 -0.515300150381945E+00
(05,02) 0.440122239524499E-04 -0.414148002449120E+00
(05,03) -0.133992493152618E+01 -0.483927352922599E+00
(05,04) 0.392828042095061E-04 -0.414236968594294E+00
(05,05) 0.134024262428284E+01 0.892894843202583E-02
(05,06) -0.947782099246979E+00 0.163447351211741E+00
(05,07) -0.155572161078453E+00 -0.263796606276840E-01
(05,08) -0.790303274989128E-01 -0.422167712445766E-01
(05,09) -0.178044617176056E+00 -0.244456092073667E-01
(05,10) 0.141150355339050E+00 0.343720228179847E-01
(05,11) -0.857104435563087E-01 0.188162844929908E-01
(05,12) 0.108973577618599E+00 -0.227730288498809E-01
(05,13) 0.100100971758366E-01 0.389866683213947E-01
(05,14) 0.567631311714649E-01 -0.313257678215315E-01
(05,15) -0.203381881117821E+00 0.166784616908835E-01
(05,16) 0.391849316656590E-01 -0.748798889931418E-02
(05,17) 0.140034869313240E+00 0.141492354958890E-01
(05,18) -0.172185719013214E+00 0.166134715418269E-01
(05,19) 0.583750754594803E-01 -0.569910669664292E-02
(05,20) -0.916111283004284E-03 -0.139449114927599E-01
(05,21) -0.292119309306145E-01 -0.277054057678700E-02
(06,01) -0.351941259577870E-02 0.320422300739978E+02
(06,02) -0.429157400503755E-02 0.396796238151428E+02
(06,03) 0.200041988864541E-02 0.225744499599300E+02
(06,04) 0.343890837393701E-02 0.385319291283625E+02
(06,05) -0.242624944075942E-02 0.228620731935291E+02
(06,06) -0.279381335712969E-02 -0.315787444812651E+02
(06,07) 0.133628234267235E+00 -0.201688119637744E+01
(06,08) 0.164535552263260E+00 -0.691868674131645E+01
(06,09) -0.303669814020395E-01 -0.337527478391271E+01
(06,10) 0.335082374513149E-01 0.737932786002596E+01
(06,11) -0.115301951766014E+00 0.532046905755991E+01
(06,12) -0.643811970949173E-01 -0.704646020919806E+01
(06,13) 0.168905649334192E-01 0.116798006516197E+02
(06,14) -0.131173312664032E+00 -0.103900446585121E+02
(06,15) -0.228150542825460E-01 0.367492551215626E+01
(06,16) -0.140278100967407E+00 0.541292498306359E+00
(06,17) 0.121666260063648E+00 0.688933313780047E+01
(06,18) -0.169033091515303E-01 0.643920432296654E+01
(06,19) 0.515771955251694E-01 0.640069090766210E+00
(06,20) -0.180635631084442E+00 -0.275193635264416E+01
(06,21) 0.195857465267181E+00 -0.188561818645725E+01
(07,01) -0.520476046949625E-02 0.236539170987535E+02
(07,02) 0.580822164192796E-02 0.295003969224203E+02
(07,03) -0.399843230843544E-02 0.174888381981832E+02
(07,04) 0.576473958790302E-02 0.294531380129501E+02
(07,05) -0.271833199076355E-02 0.175044078873038E+02
(07,06) 0.426918268203735E-02 -0.241830822724836E+02
(07,07) 0.147665038704872E+00 0.314282931518621E+01
(07,08) -0.117447517812252E+00 0.403784215759159E+01
(07,09) 0.147420719265938E+00 0.169155742879292E+01
(07,10) 0.135893806815147E+00 -0.554066860884136E+01
(07,11) 0.422651544213295E-01 -0.525713150347206E+01
(07,12) -0.695310905575752E-01 0.394727380633284E+01
(07,13) -0.168554261326790E-01 -0.641137465954821E+01
(07,14) 0.921243280172348E-01 0.423388578775427E+01
(07,15) 0.117380328476429E+00 0.306527904979264E-01
(07,16) 0.138013571500778E+00 0.202300380704869E+01
(07,17) -0.623580329120159E-01 -0.459569791294739E+01
(07,18) -0.136343047022820E+00 -0.468425326686841E+01
(07,19) 0.131682857871056E+00 0.121902516832242E+01
(07,20) -0.132132634520531E+00 -0.707896318054816E+00
(07,21) 0.119739077985287E+00 0.441694177169657E+00
(08,01) -0.241280291229486E-01 -0.964925469634583E+02
(08,02) 0.295925457030535E-01 -0.118149667679186E+03
(08,03) 0.161907169967890E-01 -0.672201839913842E+02
(08,04) -0.280807800590992E-01 -0.117411734713197E+03
(08,05) -0.170978084206581E-01 -0.686625184338945E+02
(08,06) -0.229465700685978E-01 0.961995663618476E+02
(08,07) 0.170763313770294E+00 0.451976509920424E+01
(08,08) -0.246933296322823E+00 0.100355852033043E+02
(08,09) -0.118787530809641E-01 0.362241589185164E+01
(08,10) -0.233876928687096E-01 -0.130069484167442E+02
(08,11) -0.235260799527168E+00 -0.110760346601338E+02
(08,12) -0.413223467767239E-01 0.139329830045770E+02
(08,13) 0.334977582097054E-01 -0.153873537547839E+02
(08,14) 0.146476894617081E+00 0.146103537661863E+02
(08,15) 0.599658722057939E-02 -0.765612032914714E+01
(08,16) -0.962516665458679E-01 0.886407137879243E+00
(08,17) 0.239439934492111E+00 -0.705337777438639E+01
(08,18) -0.289920177310705E-01 -0.116989846863909E+02
(08,19) 0.406377874314785E-01 0.592924574459365E-01
(08,20) 0.131046742200851E+00 -0.301336277255331E+00
(08,21) 0.136250451207161E+00 0.221249720574218E+01
(09,01) -0.887189060449600E-02 0.408696880275784E+02
(09,02) -0.451377010904253E-03 0.498549177991145E+02
(09,03) -0.123341614380479E-01 0.283099915956156E+02
(09,04) -0.489434518385679E-03 0.498508177346691E+02
(09,05) 0.119013069197536E-01 0.288351506046625E+02
(09,06) -0.825028307735920E-02 -0.408181390328127E+02
(09,07) 0.120959408581257E+00 0.274581588439313E+01
(09,08) 0.899301841855049E-01 0.442598366847707E+01
(09,09) 0.183146566152573E+00 0.258341971052896E+01
(09,10) -0.167249992489815E+00 -0.343796285403762E+01
(09,11) 0.150660663843155E+00 -0.176879400649229E+01
(09,12) 0.621877647936344E-01 0.220820305885640E+01
(09,13) 0.775983557105064E-01 -0.388855121748206E+01
(09,14) -0.421430803835392E-01 0.313381413329812E+01
(09,15) -0.270811710506678E-01 -0.180792375354553E+01
(09,16) 0.361108258366585E-01 0.773423930388479E+00
(09,17) 0.712988025043160E-03 -0.124926313426792E+01
(09,18) 0.177535593509674E+00 -0.149560597825620E+01
(09,19) 0.527953356504440E-01 0.612080363385255E+00
(09,20) 0.141406338661909E-01 0.160255194437205E+01
(09,21) -0.784571282565594E-02 0.260363897304434E+00
(10,01) 0.852987250254955E-05 0.301411990266088E+03
(10,02) 0.136617054522503E-04 0.368201194080180E+03
(10,03) 0.202008941414533E-04 0.207873209289172E+03
(10,04) 0.554962934984360E-05 0.367592383804457E+03
(10,05) -0.211104361369507E-04 0.212546863836424E+03
(10,06) 0.204913503694115E-04 -0.300694117440840E+03
(10,07) 0.147012909874320E-01 0.516692929993857E+01
(10,08) -0.299783907830715E-01 0.478244480753043E+01
(10,09) 0.106510026380420E-01 0.190200983103669E+01
(10,10) 0.321145392954350E-01 0.479668913780619E+01
(10,11) -0.327010415494442E-01 -0.406712268774822E+01
(10,12) 0.469501204788685E-01 -0.129331403067363E+02
(10,13) -0.509594380855560E-01 -0.101318538315566E+02
(10,14) -0.599967837333679E-01 -0.435269015938419E+01
(10,15) -0.323531590402126E-01 0.642934255142023E+01
(10,16) -0.460793916136026E-02 0.455735933529251E+00
(10,17) -0.224983040243387E-01 -0.346483670488126E+01
(10,18) 0.588687174022198E-01 0.108965933547002E+02
(10,19) -0.269168405793607E-02 0.146020551701604E+01
(10,20) 0.760632846504450E-02 0.935891778893215E+01
(10,21) -0.926463399082422E-02 -0.109012901159488E+01
(11,01) -0.162329792510718E-02 -0.439722468868773E+02
(11,02) -0.155836262274534E-02 -0.536247043860828E+02
(11,03) -0.135748169850558E-02 -0.303963712026272E+02
(11,04) -0.150117883458734E-02 -0.528578708468503E+02
(11,05) -0.450650841230527E-03 -0.306542964087078E+02
(11,06) 0.917027471587062E-03 0.432088828086063E+02
(11,07) 0.112307444214821E+00 0.284895856343348E+01
(11,08) 0.859148427844048E-01 0.612570733710553E+01
(11,09) 0.108720205724239E+00 0.319395569891390E+01
(11,10) -0.932282283902168E-01 -0.756710064416565E+01
(11,11) 0.284656975418329E-01 -0.555260155688967E+01
(11,12) -0.560129657387733E-01 0.729138222067640E+01
(11,13) -0.110948169603944E-01 -0.982617231657246E+01
(11,14) -0.682298317551613E-01 0.839812251519917E+01
(11,15) 0.883226171135902E-01 -0.269194027969023E+01
(11,16) -0.131774798035622E+00 -0.226683480127203E+01
(11,17) -0.403642915189266E-01 -0.641562127865956E+01
(11,18) 0.920902267098427E-01 -0.680007273581139E+01
(11,19) -0.128290548920631E+00 -0.197494901501065E+01
(11,20) -0.114749923348427E+00 -0.173653424919703E+00
(11,21) -0.100844800472260E+00 0.163116606552273E+01
(12,01) -0.122732308227569E-03 -0.152518665905767E+03
(12,02) 0.161253090482205E-03 -0.186570947710702E+03
(12,03) -0.120117227197625E-03 -0.106601315763174E+03
(12,04) 0.204894982744008E-03 -0.187054534721548E+03
(12,05) -0.675647606840357E-04 -0.108517073248987E+03
(12,06) 0.143623954500072E-03 0.153127156022849E+03
(12,07) 0.312066711485386E-01 -0.123830418453637E+02
(12,08) -0.353118106722832E-01 -0.304682312306106E+02
(12,09) 0.467785857617855E-01 -0.686119827740334E+01
(12,10) 0.669700726866722E-01 0.285727839324843E+02
(12,11) 0.159731749445200E-01 0.272695375357948E+02
(12,12) 0.522553734481335E-01 -0.145329020460164E+02
(12,13) -0.301160980015993E-01 0.394519469582405E+02
(12,14) -0.422964245080948E-01 -0.262032227418349E+02
(12,15) -0.366332642734051E-01 0.440123540181984E+01
(12,16) 0.137751828879118E-01 -0.480152374806063E+01
(12,17) -0.348058715462685E-01 0.206844374870974E+02
(12,18) 0.687717227265239E-02 0.176681540870106E+02
(12,19) 0.186093822121620E-01 -0.322685179905062E+01
(12,20) -0.138963768258691E-01 -0.693072145710399E+01
(12,21) 0.271552260965109E-01 -0.299148354256703E+01
(13,01) -0.116050858050585E-01 -0.974433821352575E+02
(13,02) 0.380535630029044E-05 -0.118894186687256E+03
(13,03) 0.164038110524416E-01 -0.678145724931819E+02
(13,04) -0.270099262706935E-04 -0.120113847111271E+03
(13,05) 0.164625588804483E-01 -0.697800218501777E+02
(13,06) 0.116816693916917E-01 0.982709046226804E+02
(13,07) 0.839531794190407E-01 0.183794147361240E+01
(13,08) -0.290049593895674E-01 -0.211184933123850E+01
(13,09) -0.165680781006813E+00 -0.341701670805002E+01
(13,10) -0.581433475017548E-01 -0.617525955449609E+00
(13,11) 0.208601281046867E+00 -0.107290136247085E+01
(13,12) 0.179246842861176E+00 0.576311903496641E+01
(13,13) -0.210931494832039E+00 0.348525089218890E+01
(13,14) 0.144276302307844E-01 -0.182340900435565E+01
(13,15) 0.231533348560333E+00 -0.196481152900671E+01
(13,16) -0.211453773081303E-01 0.515398790870046E+01
(13,17) 0.206030920147896E+00 0.612830413789551E+01
(13,18) 0.661853179335594E-01 -0.330426561798086E+01
(13,19) 0.334390364587307E-01 0.266628566506736E+01
(13,20) 0.252219894900918E-02 -0.631641611962441E+01
(13,21) 0.526576638221741E-01 -0.833732776936585E+01
(14,01) -0.437273271381855E-02 -0.359695109817143E+02
(14,02) -0.462692696601152E-02 -0.441431137577791E+02
(14,03) -0.348892970941961E-02 -0.256068810893284E+02
(14,04) -0.462776422500610E-02 -0.442923373719554E+02
(14,05) -0.185345404315740E-02 -0.255716486578541E+02
(14,06) 0.320841209031641E-02 0.361682912515179E+02
(14,07) 0.167358413338661E+00 -0.106016872374744E+01
(14,08) 0.120894066989422E+00 -0.188238211287414E+01
(14,09) 0.146612733602524E+00 -0.994102032235108E+00
(14,10) -0.114104241132736E+00 0.223591971782469E+01
(14,11) 0.352907255291939E-01 0.159655429090737E+01
(14,12) -0.118334278464317E+00 -0.205361173619823E+01
(14,13) -0.409047538414598E-02 0.264356759617923E+01
(14,14) -0.129458680748940E+00 -0.219743789511244E+01
(14,15) 0.150047942996025E+00 0.750051299535086E+00
(14,16) 0.104290992021561E+00 0.595419527031237E+00
(14,17) -0.437837503850460E-01 0.164954543747536E+01
(14,18) 0.142482638359070E+00 0.187932831454260E+01
(14,19) 0.945448875427246E-01 0.525623994704737E+00
(14,20) 0.911889076232910E-01 0.178475542825685E+00
(14,21) 0.619743093848228E-01 -0.364538154174523E+00
(15,01) -0.218217610381544E-02 -0.310917736032053E+01
(15,02) -0.264662108384073E-02 -0.377923704249770E+01
(15,03) 0.152970384806395E-02 -0.184422147463024E+01
(15,04) 0.263672322034836E-02 -0.324061827036610E+01
(15,05) -0.152716226875782E-02 -0.209529573424705E+01
(15,06) -0.216715293936431E-02 0.269519062926751E+01
(15,07) 0.769277736544609E-01 0.508196426964923E+00
(15,08) 0.140253871679306E+00 0.117105367866777E+01
(15,09) -0.757992193102837E-01 -0.908058618311773E-01
(15,10) 0.182921692728996E+00 0.164352591385766E+00
(15,11) -0.116774775087833E+00 -0.788766372658534E+00
(15,12) 0.197751015424728E+00 0.116885552810645E+01
(15,13) 0.239971160888672E+00 -0.215046535598994E+00
(15,14) 0.236179351806641E+00 0.144881662476397E+01
(15,15) 0.138329446315765E+00 0.178339724976908E+00
(15,16) -0.386442616581917E-02 -0.116071749607031E+00
(15,17) -0.119596652686596E+00 -0.909498295398762E+00
(15,18) 0.228947326540947E+00 0.610646926717143E-01
(15,19) 0.306998658925295E-02 -0.153530058087171E+00
(15,20) -0.562079949304461E-02 0.286291057924642E+00
(15,21) -0.900598522275686E-02 0.297948743912008E+00
(16,01) -0.428344011306763E-01 -0.149205064262646E+02
(16,02) -0.119414471555501E-03 -0.182142441709329E+02
(16,03) 0.605285130441189E-01 -0.974811729836851E+01
(16,04) 0.105399143649265E-03 -0.174196586571617E+02
(16,05) 0.603122040629387E-01 -0.983403637118013E+01
(16,06) 0.425829663872719E-01 0.148648771225544E+02
(16,07) 0.147546008229256E+00 -0.335646648007986E+00
(16,08) 0.401769354939461E-01 0.201470033855699E+01
(16,09) -0.189309567213058E+00 0.104369831287472E+01
(16,10) 0.683742910623550E-01 -0.121294114124208E+01
(16,11) 0.125439286231995E+00 -0.829328960956144E+00
(16,12) -0.422803349792957E-01 0.689052934581414E+00
(16,13) -0.458180941641331E-01 -0.383226269716630E+01
(16,14) -0.296942126005888E-01 0.373098537300082E+01
(16,15) -0.109751708805561E+00 -0.170586149813142E+01
(16,16) -0.193516850471497E+00 -0.193030177533155E+01
(16,17) -0.665694326162338E-01 -0.168714597279047E+01
(16,18) -0.817999318242073E-01 -0.547045141065854E+00
(16,19) 0.279022544622421E+00 0.178195066309647E+01
(16,20) -0.160081461071968E-01 0.313524660082812E+00
(16,21) 0.335453636944294E-01 0.541301151089991E+00
(17,01) -0.921052098274231E+00 -0.313781087163451E+02
(17,02) 0.112806463241577E+01 -0.378487347233482E+02
(17,03) -0.651386320590973E+00 -0.214243947749121E+02
(17,04) 0.112832391262054E+01 -0.376461131371173E+02
(17,05) -0.651349246501923E+00 -0.219732301247688E+02
(17,06) 0.921293020248413E+00 0.311686483844811E+02
(17,07) -0.129972562193871E+00 0.126800002733523E+01
(17,08) 0.182197511196136E+00 0.365548308626798E+01
(17,09) -0.253000296652317E-02 0.103660756397868E+01
(17,10) -0.357133313082159E-02 -0.498166767375460E+01
(17,11) 0.184675022959709E+00 -0.400092670381805E+01
(17,12) 0.551109127700329E-01 0.531406946549384E+01
(17,13) 0.231322161853313E-01 -0.514788968725777E+01
(17,14) -0.134687021374702E+00 0.447991231100838E+01
(17,15) -0.352683709934354E-02 -0.223730164941427E+01
(17,16) 0.955944135785103E-01 0.638760991508856E+00
(17,17) -0.204981788992882E+00 -0.302527057763186E+01
(17,18) -0.310501866042614E-01 -0.441444840698545E+01
(17,19) 0.732915475964546E-01 0.213306065587418E+00
(17,20) -0.121698610484600E+00 -0.520607531935427E+00
(17,21) 0.487866103649139E-01 0.730688376616387E+00
(18,01) 0.845294289320009E-05 0.369665247269374E+03
(18,02) 0.200470458366908E-04 0.451735937919445E+03
(18,03) -0.500704288697307E-06 0.258293555787007E+03
(18,04) -0.117598438009736E-04 0.455925831388285E+03
(18,05) 0.122016963359783E-04 0.265784280467111E+03
(18,06) 0.177297315531177E-04 -0.372418765344440E+03
(18,07) 0.166253838688135E-01 -0.225545830162084E+01
(18,08) -0.616515334695578E-02 0.124672280645443E+02
(18,09) -0.348300337791443E-01 0.112465777171278E+02
(18,10) -0.131978942081332E-01 -0.945248700625405E+00
(18,11) 0.483418852090836E-01 0.332314552507453E+01
(18,12) 0.501377508044243E-01 -0.139535378216261E+02
(18,13) -0.548814050853252E-01 -0.195743707104671E+02
(18,14) -0.183727266266942E-02 0.870092400349449E+01
(18,15) 0.718188360333443E-01 0.100152523582761E+02
(18,16) -0.103118065744638E-01 -0.171444008663923E+02
(18,17) 0.654948502779007E-01 -0.218953533683405E+02
(18,18) 0.109703140333295E-01 0.713189479375495E+01
(18,19) 0.177329909056425E-01 -0.119032365190316E+02
(18,20) 0.323858810588717E-02 0.251995942921836E+02
(18,21) 0.499825514853001E-01 0.312135303090508E+02
(19,01) -0.682211592793465E-01 0.765967706327448E+01
(19,02) -0.430850574048236E-03 0.877594356269220E+01
(19,03) 0.962435081601143E-01 0.415620530045576E+01
(19,04) 0.422304205130786E-03 0.850982221207004E+01
(19,05) 0.957677885890007E-01 0.445399360802617E+01
(19,06) 0.675818175077438E-01 -0.745326318445295E+01
(19,07) 0.202333241701126E+00 0.370654267814242E+01
(19,08) 0.746065378189087E-01 0.561632690325829E+01
(19,09) -0.223254755139351E+00 0.100203495234038E+01
(19,10) 0.119545228779316E+00 -0.408091666676030E+01
(19,11) 0.991457328200340E-01 -0.360166368714016E+01
(19,12) -0.162345185875893E+00 0.392121124117465E+01
(19,13) 0.185034181922674E-01 -0.644936945503097E+01
(19,14) -0.627368614077568E-01 0.453191069282601E+01
(19,15) -0.280645161867142E+00 -0.207986659450949E+01
(19,16) 0.505855195224285E-01 0.914629091127449E+00
(19,17) -0.182546600699425E+00 -0.370670813302335E+01
(19,18) -0.147651746869087E+00 -0.476882671010381E+01
(19,19) -0.701333060860634E-01 -0.148427101363476E+01
(19,20) 0.668072421103716E-02 0.220237913196195E+01
(19,21) 0.869733467698097E-02 0.117938679293896E+01
(20,01) -0.449361046776175E-02 0.902376000084666E+00
(20,02) 0.220308941788971E-02 -0.801193767960690E+00
(20,03) 0.513966614380479E-02 -0.307272834790146E+01
(20,04) -0.225867680273950E-02 -0.110857606565975E+01
(20,05) 0.263794837519526E-02 -0.320007272165156E+01
(20,06) 0.947628752328455E-03 -0.121510907580541E+01
(20,07) 0.152274832129478E+00 -0.703746631901387E-01
(20,08) -0.117567442357540E+00 -0.221727238903005E+01
(20,09) -0.206277355551720E+00 -0.190035138613005E+01
(20,10) -0.207551613450050E+00 0.118705706035607E+01
(20,11) 0.124761372804642E+00 0.218395870949059E+01
(20,12) 0.863072555512190E-02 -0.225848673886085E+01
(20,13) -0.714888703078032E-02 0.183569641575782E+01
(20,14) 0.456247404217720E-01 -0.103488813996630E+01
(20,15) -0.708496421575546E-01 -0.190399084333949E+00
(20,16) 0.107937427237630E-01 -0.149848769988273E+00
(20,17) -0.103561900556087E+00 0.263149954374569E+00
(20,18) 0.195673510432243E+00 0.226312056314707E+01
(20,19) -0.138991530984640E-01 -0.215379472713573E+00
(20,20) -0.738288741558790E-02 -0.717177684354636E+00
(20,21) 0.119809703901410E-01 0.395015106415659E+00
(21,01) -0.111714076995850E+01 -0.157006272972466E+01
(21,02) 0.136832118034363E+01 -0.165695410559176E+01
(21,03) 0.789960503578186E+00 -0.102464959222303E+01
(21,04) -0.136850726604462E+01 -0.197490477262258E+01
(21,05) -0.790138483047485E+00 -0.123963009795365E+01
(21,06) -0.111746346950531E+01 0.127940329351346E+01
(21,07) -0.158849164843559E+00 -0.115726516828563E-01
(21,08) 0.157852247357368E+00 0.278837130191972E+00
(21,09) 0.170709997415543E+00 0.100161817596371E+00
(21,10) 0.214689865708351E+00 -0.726523579353106E-01
(21,11) -0.167143829166889E-01 -0.678547976954667E-01
(21,12) -0.241510886698961E-01 0.377502144275716E-01
(21,13) -0.105082295835018E+00 -0.447407742013355E+00
(21,14) 0.101131219416857E-01 0.419175912148910E+00
(21,15) 0.525299832224846E-01 -0.233384037060628E+00
(21,16) -0.143686249852180E+00 -0.418753822037995E-02
(21,17) 0.132168933749199E+00 -0.856999606537821E-01
(21,18) -0.693865939974785E-01 -0.714580334063162E-02
(21,19) 0.104032047092915E+00 -0.161645225161624E-01
(21,20) 0.185707733035088E+00 -0.856160510487734E-02
(21,21) -0.296475943177938E-01 0.957054267749156E-01
#COL_UPDATE_INDEX: 12
#COL_UPDATE_COMP_(01): 0.102125488221645E+00
#COL_UPDATE_COMP_(02): 0.962643101811409E-01
#COL_UPDATE_COMP_(03): -0.180085301399231E-01
#COL_UPDATE_COMP_(04): -0.116052091121674E+00
#COL_UPDATE_COMP_(05): 0.100100971758366E-01
#COL_UPDATE_COMP_(06): 0.168905649334192E-01
#COL_UPDATE_COMP_(07): -0.168554261326790E-01
#COL_UPDATE_COMP_(08): 0.334977582097054E-01
#COL_UPDATE_COMP_(09): 0.775983557105064E-01
#COL_UPDATE_COMP_(10): -0.509594380855560E-01
#COL_UPDATE_COMP_(11): -0.110948169603944E-01
#COL_UPDATE_COMP_(12): -0.301160980015993E-01
#COL_UPDATE_COMP_(13): -0.210931494832039E+00
#COL_UPDATE_COMP_(14): -0.409047538414598E-02
#COL_UPDATE_COMP_(15): 0.239971160888672E+00
#COL_UPDATE_COMP_(16): -0.458180941641331E-01
#COL_UPDATE_COMP_(17): 0.231322161853313E-01
#COL_UPDATE_COMP_(18): -0.548814050853252E-01
#COL_UPDATE_COMP_(19): 0.185034181922674E-01
#COL_UPDATE_COMP_(20): -0.714888703078032E-02
#COL_UPDATE_COMP_(21): -0.105082295835018E+00
#COL_UPDATE_INDEX: 13
#COL_UPDATE_COMP_(01): -0.727039668709040E-02
#COL_UPDATE_COMP_(02): -0.329451821744442E-01
#COL_UPDATE_COMP_(03): 0.230633586645126E+00
#COL_UPDATE_COMP_(04): 0.322856456041336E-01
#COL_UPDATE_COMP_(05): 0.188164815306664E+00
#COL_UPDATE_COMP_(06): 0.976034477353096E-01
#COL_UPDATE_COMP_(07): 0.124376058578491E+00
#COL_UPDATE_COMP_(08): -0.241902604699135E+00
#COL_UPDATE_COMP_(09): -0.214029267430305E+00
#COL_UPDATE_COMP_(10): -0.164923388510942E-01
#COL_UPDATE_COMP_(11): -0.796175077557564E-01
#COL_UPDATE_COMP_(12): 0.552074126899242E-01
#COL_UPDATE_COMP_(13): 0.794003605842590E-01
#COL_UPDATE_COMP_(14): -0.999749153852463E-01
#COL_UPDATE_COMP_(15): 0.135955372825265E-01
#COL_UPDATE_COMP_(16): -0.876737236976624E-01
#COL_UPDATE_COMP_(17): 0.210409909486771E+00
#COL_UPDATE_COMP_(18): 0.177621953189373E-01
#COL_UPDATE_COMP_(19): -0.151124328374863E+00
#COL_UPDATE_COMP_(20): 0.247122272849083E+00
#COL_UPDATE_COMP_(21): -0.161797225475311E+00
#COL_UPDATE_INDEX: 21
#COL_UPDATE_COMP_(01): -0.817385390400887E-01
#COL_UPDATE_COMP_(02): 0.108162150718272E-02
#COL_UPDATE_COMP_(03): 0.693925749510527E-02
#COL_UPDATE_COMP_(04): 0.493063451722264E-02
#COL_UPDATE_COMP_(05): -0.334013439714909E-01
#COL_UPDATE_COMP_(06): 0.323923602700233E-01
#COL_UPDATE_COMP_(07): 0.120032556355000E+00
#COL_UPDATE_COMP_(08): -0.119067849591374E-01
#COL_UPDATE_COMP_(09): -0.334841385483742E-01
#COL_UPDATE_COMP_(10): 0.125436363741755E-01
#COL_UPDATE_COMP_(11): -0.145120620727539E+00
#COL_UPDATE_COMP_(12): -0.101416520774364E-01
#COL_UPDATE_COMP_(13): -0.723919421434402E-01
#COL_UPDATE_COMP_(14): 0.134314149618149E+00
#COL_UPDATE_COMP_(15): -0.125767393037677E-01
#COL_UPDATE_COMP_(16): 0.361425074515864E-03
#COL_UPDATE_COMP_(17): -0.351854860782623E-01
#COL_UPDATE_COMP_(18): -0.506495498120785E-01
#COL_UPDATE_COMP_(19): -0.291761625558138E-01
#COL_UPDATE_COMP_(20): -0.932136957999319E-03
#COL_UPDATE_COMP_(21): -0.500183776021004E-01
#END_PACKET
#START_PACKET
#CYCLE_ID: 8169
#SLATER_MATRIX_DIM: 4
#NUPDATES: 2
#SLATER_MATRIX: (i (outer), j (inner)), slater_matrix_alpha(i,j), ddet * slater_matrix_alpha_inv_det(i,j) / ddet
(01,01) 0.100000000000000E+01 0.100000000000000E+01
(01,02) 0.000000000000000E+00 0.100000000000000E+01
(01,03) 0.100000000000000E+01 -0.100000000000000E+01
(01,04) -0.100000000000000E+01 -0.100000000000000E+01
(02,01) 0.000000000000000E+00 -0.100000000000000E+01
(02,02) 0.100000000000000E+01 0.000000000000000E+00
(02,03) 0.100000000000000E+01 0.100000000000000E+01
(02,04) 0.000000000000000E+00 0.000000000000000E+00
(03,01) -0.100000000000000E+01 0.100000000000000E+01
(03,02) 0.000000000000000E+00 0.200000000000000E+01
(03,03) -0.100000000000000E+01 -0.200000000000000E+01
(03,04) 0.000000000000000E+00 -0.100000000000000E+01
(04,01) 0.100000000000000E+01 0.100000000000000E+01
(04,02) 0.100000000000000E+01 0.100000000000000E+01
(04,03) 0.100000000000000E+01 -0.100000000000000E+01
(04,04) 0.100000000000000E+01 0.000000000000000E+00
#COL_UPDATE_INDEX: 2
#COL_UPDATE_COMP_(01): 0.000000000000000E+00
#COL_UPDATE_COMP_(02): -0.200000000000000E+01
#COL_UPDATE_COMP_(03): 0.000000000000000E+00
#COL_UPDATE_COMP_(04): 0.000000000000000E+00
#COL_UPDATE_INDEX: 4
#COL_UPDATE_COMP_(01): 0.000000000000000E+00
#COL_UPDATE_COMP_(02): -0.100000000000000E+01
#COL_UPDATE_COMP_(03): 0.000000000000000E+00
#COL_UPDATE_COMP_(04): 0.000000000000000E+00
#END_PACKET

Binary file not shown.

View File

@ -0,0 +1,32 @@
#START_PACKET
#CYCLE_ID: 8169
#SLATER_MATRIX_DIM: 4
#NUPDATES: 2
#SLATER_MATRIX: (i (outer), j (inner)), slater_matrix_alpha(i,j), ddet * slater_matrix_alpha_inv_det(i,j) / ddet
(01,01) 0.100000000000000E+01 0.100000000000000E+01
(01,02) 0.000000000000000E+00 0.100000000000000E+01
(01,03) 0.100000000000000E+01 -0.100000000000000E+01
(01,04) -0.100000000000000E+01 -0.100000000000000E+01
(02,01) 0.000000000000000E+00 -0.100000000000000E+01
(02,02) 0.100000000000000E+01 0.000000000000000E+00
(02,03) 0.100000000000000E+01 0.100000000000000E+01
(02,04) 0.000000000000000E+00 0.000000000000000E+00
(03,01) -0.100000000000000E+01 0.100000000000000E+01
(03,02) 0.000000000000000E+00 0.200000000000000E+01
(03,03) -0.100000000000000E+01 -0.200000000000000E+01
(03,04) 0.000000000000000E+00 -0.100000000000000E+01
(04,01) 0.100000000000000E+01 0.100000000000000E+01
(04,02) 0.100000000000000E+01 0.100000000000000E+01
(04,03) 0.100000000000000E+01 -0.100000000000000E+01
(04,04) 0.100000000000000E+01 0.000000000000000E+00
#COL_UPDATE_INDEX: 2
#COL_UPDATE_COMP_(01): 0.000000000000000E+00
#COL_UPDATE_COMP_(02): -0.200000000000000E+01
#COL_UPDATE_COMP_(03): 0.000000000000000E+00
#COL_UPDATE_COMP_(04): 0.000000000000000E+00
#COL_UPDATE_INDEX: 4
#COL_UPDATE_COMP_(01): 0.000000000000000E+00
#COL_UPDATE_COMP_(02): -0.100000000000000E+01
#COL_UPDATE_COMP_(03): 0.000000000000000E+00
#COL_UPDATE_COMP_(04): 0.000000000000000E+00
#END_PACKET

View File

@ -1,6 +1,5 @@
program Interface_test
use Sherman_Morrison, only : MaponiA3
use, intrinsic :: iso_c_binding, only : c_int, c_double
use Sherman_Morrison
implicit none
integer i, j !! Iterators
@ -24,6 +23,14 @@ program Interface_test
A(3,2) = 0.0d0
A(3,3) = -1.0d0
do i=1,Dim
do j=1,Dim
write(*,"(F3.0,3X)", advance="no") A(i,j)
end do
write(*,*)
end do
write(*,*)
!! Prepare the diagonal matrix S and the update matrix Updates
do i=1,Dim
Updates_index(i) = i

View File

@ -1,17 +1,17 @@
program Interface_test
use Sherman_Morrison, only : MaponiA3
use, intrinsic :: iso_c_binding, only : c_int, c_double
use Sherman_Morrison
use Helpers
implicit none
integer i, j, col !! Iterators
integer(c_int) :: Dim, N_updates
integer(c_int), dimension(:), allocatable :: Updates_index
real(c_double), dimension(:,:), allocatable :: S, A, Updates
real(c_double), dimension(:,:), allocatable :: S_inv, A_inv
real(c_double), dimension(:,:), allocatable :: S_inv, S_inv_t, A_inv
Dim = 4
N_updates = 2
allocate( S(Dim,Dim), S_inv(Dim,Dim), A(Dim,Dim), A_inv(Dim,Dim), &
allocate( S(Dim,Dim), S_inv(Dim,Dim), S_inv_t(Dim,Dim), A(Dim,Dim), A_inv(Dim,Dim), &
Updates(Dim,N_updates), Updates_index(N_updates))
!! Initialize S, S_inv, A and A_inv
@ -110,6 +110,16 @@ program Interface_test
close(2000)
close(3000)
!! Write Updates to file to check
open(unit = 2000, file = "Updates.dat")
do i=1,dim
do j=1,n_updates
write(2000,"(E23.15, 1X)", advance="no") Updates(i,j)
end do
write(2000,*)
end do
close(2000)
!! Update S
do i=1,N_updates
do j=1,Dim
@ -119,7 +129,9 @@ program Interface_test
end do
!! Update S_inv
call MaponiA3(S_inv, Dim, N_updates, Updates, Updates_index)
call Transpose(S_inv, S_inv_t, Dim)
call MaponiA3(S_inv_t, Dim, N_updates, Updates, Updates_index)
call Transpose(S_inv_t, S_inv, Dim)
!! Write new S and S_inv to file for check in Octave
open(unit = 4000, file = "Slater.dat")

View File

@ -7,7 +7,7 @@ def rl(rf):
with h5py.File('datasets.hdf5', 'w') as f:
with open('datasets.dat', 'r') as rf:
with open('datasets.short.dat', 'r') as rf:
while(1):
line = rl(rf)
if not line or not line.startswith('#START_PACKET'):

View File

@ -9,7 +9,7 @@
using namespace H5;
#define DEBUG 1
const H5std_string FILE_NAME( "datasets.hdf5" );
const H5std_string FILE_NAME( "datasets.small.hdf5" );
void read_int(H5File file, std::string key, unsigned int * data) {
DataSet ds = file.openDataSet(key);
@ -29,7 +29,7 @@ int test_cycle(H5File file, int cycle) {
std::string group = "cycle_" + std::to_string(cycle);
unsigned int dim, nupdates;
unsigned int dim, nupdates, col, i, j;
read_int(file, group + "/slater_matrix_dim", &dim);
read_int(file, group + "/nupdates", &nupdates);
@ -38,6 +38,7 @@ int test_cycle(H5File file, int cycle) {
double * slater_inverse = new double[dim*dim];
read_double(file, group + "/slater_inverse", slater_inverse);
slater_inverse = transpose(slater_inverse, dim);
unsigned int * col_update_index = new unsigned int[nupdates];
read_int(file, group + "/col_update_index", col_update_index);
@ -50,13 +51,28 @@ int test_cycle(H5File file, int cycle) {
showMatrix(slater_matrix, dim, "Slater");
#endif
#ifdef DEBUG
showMatrix(slater_inverse, dim, "Inverse");
#endif
for (j = 0; j < nupdates; j++) {
for (i = 0; i < dim; i++) {
col = col_update_index[j];
slater_matrix[i*dim + (col - 1)] += updates[i + j*dim];
}
}
MaponiA3(slater_inverse, dim, nupdates, updates, col_update_index);
#ifdef DEBUG
showMatrix(slater_matrix, dim, "Slater");
#endif
#ifdef DEBUG
showMatrix(slater_inverse, dim, "Inverse");
#endif
double * res = matMul(slater_matrix, slater_inverse, dim);
double * res = matMul2(slater_matrix, slater_inverse, dim);
bool ok = is_identity(res, dim, 1.0e-8);
#ifdef DEBUG
@ -80,7 +96,8 @@ int main(int argc, char **argv) {
if (ok) {
std::cerr << "ok -- cycle " << std::to_string(cycle) << std::endl;
} else {
}
else {
std::cerr << "failed -- cycle " << std::to_string(cycle) << std::endl;
}
return ok;