Sherman-Morrison/Makefile
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

68 lines
1.8 KiB
Makefile

# ARCH = -xCORE-AVX2
## Used compilers
H5CXX = h5c++
CXX = clang++
FC = flang
## Compiler flags & common obs & libs
CXXFLAGS = -O0 -debug full -traceback
FFLAGS = -O0 -debug full -traceback
FLIBS = -lstdc++
OBJS = SM_MaponiA3.o
## Deps & objs for C++ cMaponiA3_test_3x3_3
cMaponiA3_test_3x3_3OBJ = cMaponiA3_test_3x3_3.o
## Deps & objs for Fortran fMaponiA3_test_3x3_3
fMaponiA3_test_3x3_3OBJ = SM_MaponiA3_mod.o fMaponiA3_test_3x3_3.o
## Deps & objs for Fortran fMaponiA3_test_4x4_2
fMaponiA3_test_4x4_2OBJ = SM_MaponiA3_mod.o fMaponiA3_test_4x4_2.o
## Deps & objs for Fortran QMCChem_dataset_test
QMCChem_dataset_testOBJ = Utils_mod.o SM_MaponiA3_mod.o QMCChem_dataset_test.o
## Default build target: build everything
all: cMaponiA3_test_3x3_3 fMaponiA3_test_3x3_3 fMaponiA3_test_4x4_2 QMCChem_dataset_test
## Compile recipes for C++
%.o: %.cpp
$(CXX) $(ARCH) $(CXXFLAGS) -c -o $@ $<
## Compile recepies for Fortran
%.o: %.f90
$(FC) $(ARCH) $(FFLAGS) -c -o $@ $<
## Explicit recipe to trigger rebuild and relinking when headerfile is changed
SM_MaponiA3.o: SM_MaponiA3.cpp Helpers.hpp
$(CXX) $(ARCH) $(CXXFLAGS) -c -o $@ $<
## Build tagets
.PHONY: all clean distclean
clean:
@rm -vf *.o *.mod
distclean: clean
@rm -vf cMaponiA3_test_3x3_3 \
fMaponiA3_test_3x3_3 fMaponiA3_test_4x4_2 \
QMCChem_dataset_test \
Slater* Updates.dat
## Linking the C++ example program
cMaponiA3_test_3x3_3: $(cMaponiA3_test_3x3_3OBJ) $(OBJS)
$(CXX) $(ARCH) $(CXXFLAGS) -o $@ $^
## Linking Fortran example program calling the C++ function
fMaponiA3_test_3x3_3: $(fMaponiA3_test_3x3_3OBJ) $(OBJS)
$(FC) $(ARCH) $(FFLAGS) $(FLIBS) -o $@ $^
fMaponiA3_test_4x4_2: $(fMaponiA3_test_4x4_2OBJ) $(OBJS)
$(FC) $(ARCH) $(FFLAGS) $(FLIBS) -o $@ $^
QMCChem_dataset_test: $(QMCChem_dataset_testOBJ) $(OBJS)
$(FC) $(ARCH) $(FFLAGS) $(FLIBS) -o $@ $^