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

View File

@ -6,15 +6,16 @@ CXX = icpc
FC = ifort FC = ifort
## Compiler flags & common obs & libs ## Compiler flags & common obs & libs
CXXFLAGS = -O0 -debug full -traceback H5CXXFLAGS = -O0 -g
FFLAGS = -O0 -debug full -traceback CXXFLAGS = -O0 -g -traceback
FFLAGS = -O0 -g -traceback
FLIBS = -lstdc++ FLIBS = -lstdc++
OBJS = SM_MaponiA3.o OBJS = SM_MaponiA3.o
## Deps & objs for C++ cMaponiA3_test_3x3_3 ## Deps & objs for C++ cMaponiA3_test_3x3_3
cMaponiA3_test_3x3_3OBJ = cMaponiA3_test_3x3_3.o cMaponiA3_test_3x3_3OBJ = cMaponiA3_test_3x3_3.o
fMaponiA3_test_3x3_3OBJ = SM_MaponiA3_mod.o fMaponiA3_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 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 ## Explicit recipe to trigger rebuild and relinking when headerfile is changed
SM_MaponiA3.o: SM_MaponiA3.cpp Helpers.hpp SM_MaponiA3.o: SM_MaponiA3.cpp Helpers.hpp
$(CXX) $(ARCH) $(CXXFLAGS) -c -o $@ $< $(CXX) $(ARCH) $(CXXFLAGS) -fPIC -c -o $@ $<
## Build tagets ## Build tagets
@ -64,4 +65,4 @@ QMCChem_dataset_test: $(QMCChem_dataset_testOBJ) $(OBJS)
$(FC) $(ARCH) $(FFLAGS) $(FLIBS) -o $@ $^ $(FC) $(ARCH) $(FFLAGS) $(FLIBS) -o $@ $^
tests/test: tests/test.cpp SM_MaponiA3.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 :: Updates
real(c_double), dimension(:,:), allocatable :: S, S_inv, S_inv_t 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, & cycle_id, &
dim, & dim, &
n_updates, & n_updates, &
@ -18,7 +18,6 @@ program QMCChem_dataset_test
Updates_index, & Updates_index, &
Updates) Updates)
allocate(S_inv_t(dim,dim)) 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 !! Write current S and S_inv to file for check in Octave
open(unit = 2000, file = "Slater_old.dat") open(unit = 2000, file = "Slater_old.dat")
@ -53,7 +52,12 @@ program QMCChem_dataset_test
end do end do
!! Update S_inv !! 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) 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) call Transpose(S_inv_t, S_inv, dim)
!! Write new S and S_inv to file for check in Octave !! 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. // a new pointer 'copy' that points to whereever 'Slater_inv' points to now.
double *copy = Slater_inv; double *copy = Slater_inv;
// Slater_inv = transpose(Slater_inv, Dim);
// Construct A-inverse from A0-inverse and the ylk // Construct A-inverse from A0-inverse and the ylk
for (l = 0; l < N_updates; l++) { // l = 0, 1 for (l = 0; l < N_updates; l++) { // l = 0, 1
k = l + 1; // k = 1, 2 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 = matMul(Al, Slater_inv, Dim);
} }
// Slater_inv = transpose(Slater_inv, Dim);
// Assign the new values of 'Slater_inv' to the old values in 'copy[][]' // Assign the new values of 'Slater_inv' to the old values in 'copy[][]'
for (i = 0; i < Dim; i++) { for (i = 0; i < Dim; i++) {
for (j = 0; j < Dim; j++) { for (j = 0; j < Dim; j++) {

View File

@ -1,12 +1,9 @@
// main.cpp // main.cpp
#include "SM_MaponiA3.hpp" #include "SM_MaponiA3.hpp"
#include "Helpers.hpp" #include "Helpers.hpp"
#include <cstdlib>
#include <ctime>
int main() { int main() {
srand((unsigned) time(0));
unsigned int M = 3; // Dimension of the Slater-matrix unsigned int M = 3; // Dimension of the Slater-matrix
unsigned int i, j; // Indices for iterators unsigned int i, j; // Indices for iterators
@ -37,18 +34,16 @@ int main() {
// the inverse of A0_inv of diagonal matrix A0_inv // the inverse of A0_inv of diagonal matrix A0_inv
// and the update matrix Ar // and the update matrix Ar
for (i = 0; i < M; i++) { for (i = 0; i < M; i++) {
A0[i*M+i] = A[i*M+i]; A0[i*M + i] = A[i*M + i];
A0_inv[i*M+i] = 1.0/A[i*M+i]; A0_inv[i*M + i] = 1.0/A[i*M + i];
Ar_index[i] = i; Ar_index[i] = i+1; // ! First column needs to start with 1 !
for (j = 0; j < M; j++) { 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 // Define pointers dim and n_updates to use in Sherman-Morrison(...) function call
unsigned int dim = M; MaponiA3(A0_inv, M, M, Ar, Ar_index);
unsigned int n_updates = M;
MaponiA3(A0_inv, dim, n_updates, Ar, Ar_index);
showMatrix(A0_inv, M, "A0_inv"); showMatrix(A0_inv, M, "A0_inv");
// Deallocate all vectors and matrices // 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 program Interface_test
use Sherman_Morrison, only : MaponiA3 use Sherman_Morrison
use, intrinsic :: iso_c_binding, only : c_int, c_double
implicit none implicit none
integer i, j !! Iterators integer i, j !! Iterators
@ -24,6 +23,14 @@ program Interface_test
A(3,2) = 0.0d0 A(3,2) = 0.0d0
A(3,3) = -1.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 !! Prepare the diagonal matrix S and the update matrix Updates
do i=1,Dim do i=1,Dim
Updates_index(i) = i Updates_index(i) = i

View File

@ -1,17 +1,17 @@
program Interface_test program Interface_test
use Sherman_Morrison, only : MaponiA3 use Sherman_Morrison
use, intrinsic :: iso_c_binding, only : c_int, c_double use Helpers
implicit none implicit none
integer i, j, col !! Iterators integer i, j, col !! Iterators
integer(c_int) :: Dim, N_updates integer(c_int) :: Dim, N_updates
integer(c_int), dimension(:), allocatable :: Updates_index integer(c_int), dimension(:), allocatable :: Updates_index
real(c_double), dimension(:,:), allocatable :: S, A, Updates 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 Dim = 4
N_updates = 2 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)) Updates(Dim,N_updates), Updates_index(N_updates))
!! Initialize S, S_inv, A and A_inv !! Initialize S, S_inv, A and A_inv
@ -110,6 +110,16 @@ program Interface_test
close(2000) close(2000)
close(3000) 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 !! Update S
do i=1,N_updates do i=1,N_updates
do j=1,Dim do j=1,Dim
@ -119,7 +129,9 @@ program Interface_test
end do end do
!! Update S_inv !! 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 !! Write new S and S_inv to file for check in Octave
open(unit = 4000, file = "Slater.dat") open(unit = 4000, file = "Slater.dat")

View File

@ -7,7 +7,7 @@ def rl(rf):
with h5py.File('datasets.hdf5', 'w') as f: 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): while(1):
line = rl(rf) line = rl(rf)
if not line or not line.startswith('#START_PACKET'): if not line or not line.startswith('#START_PACKET'):

View File

@ -9,7 +9,7 @@
using namespace H5; using namespace H5;
#define DEBUG 1 #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) { void read_int(H5File file, std::string key, unsigned int * data) {
DataSet ds = file.openDataSet(key); DataSet ds = file.openDataSet(key);
@ -29,7 +29,7 @@ int test_cycle(H5File file, int cycle) {
std::string group = "cycle_" + std::to_string(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 + "/slater_matrix_dim", &dim);
read_int(file, group + "/nupdates", &nupdates); read_int(file, group + "/nupdates", &nupdates);
@ -38,6 +38,7 @@ int test_cycle(H5File file, int cycle) {
double * slater_inverse = new double[dim*dim]; double * slater_inverse = new double[dim*dim];
read_double(file, group + "/slater_inverse", slater_inverse); read_double(file, group + "/slater_inverse", slater_inverse);
slater_inverse = transpose(slater_inverse, dim);
unsigned int * col_update_index = new unsigned int[nupdates]; unsigned int * col_update_index = new unsigned int[nupdates];
read_int(file, group + "/col_update_index", col_update_index); 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"); showMatrix(slater_matrix, dim, "Slater");
#endif #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); MaponiA3(slater_inverse, dim, nupdates, updates, col_update_index);
#ifdef DEBUG
showMatrix(slater_matrix, dim, "Slater");
#endif
#ifdef DEBUG #ifdef DEBUG
showMatrix(slater_inverse, dim, "Inverse"); showMatrix(slater_inverse, dim, "Inverse");
#endif #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); bool ok = is_identity(res, dim, 1.0e-8);
#ifdef DEBUG #ifdef DEBUG
@ -80,7 +96,8 @@ int main(int argc, char **argv) {
if (ok) { if (ok) {
std::cerr << "ok -- cycle " << std::to_string(cycle) << std::endl; std::cerr << "ok -- cycle " << std::to_string(cycle) << std::endl;
} else { }
else {
std::cerr << "failed -- cycle " << std::to_string(cycle) << std::endl; std::cerr << "failed -- cycle " << std::to_string(cycle) << std::endl;
} }
return ok; return ok;