@@ -9,43 +9,31 @@ SRC_DIR := ./src
99BUILD_DIR := ./obj
1010BIN_DIR := ./bin
1111
12- # Compiler
12+ # Compiler (gfortran with OpenMP for threading)
1313FC := gfortran
1414
1515# Core count
1616NCORES := $(shell nproc)
1717
18- # MKL
19- MKLROOT ?= /opt/intel/oneapi/mkl/latest
20- MKL_LIB_DIR := $(MKLROOT ) /lib/intel64
21- MKL_INCLUDE := $(MKLROOT ) /include
22- MKL_FLAGS := -L$(MKL_LIB_DIR ) -lmkl_gf_lp64 -lmkl_gnu_thread -lmkl_core -lgomp -lpthread -lm -ldl
23-
24- # PETSc (manual fallback if petsc-config missing)
25- PETSC_PREFIX := /usr/lib/petscdir/petsc3.15/x86_64-linux-gnu-real
26- PETSC_FINCLUDE := /usr/share/petsc/3.15/include
27- PETSC_AINCLUDE := $(PETSC_PREFIX ) /include
28- PETSC_LIBDIR := $(PETSC_PREFIX ) /lib
29-
30- PETSC_CONFIG := $(shell command -v petsc-config 2>/dev/null)
31- ifeq ($(PETSC_CONFIG ) ,)
32- PETSC_INC := -I$(PETSC_FINCLUDE ) -I$(PETSC_AINCLUDE )
33- PETSC_LIB := -L$(PETSC_LIBDIR ) -lpetsc
34- PETSC_NOTE := (PETSc manual paths)
35- else
36- PETSC_INC := $(shell petsc-config --cflags)
37- PETSC_LIB := $(shell petsc-config --libs)
38- PETSC_NOTE := (petsc-config)
39- endif
18+ # Detect conda environment for BLAS/LAPACK (fallback if no system libs)
19+ CONDA_PREFIX ?= $(shell conda info --base 2>/dev/null || echo /home/hm556/miniforge3)
20+
21+ # PETSc (system installation)
22+ PETSC_INC := -I/usr/share/petsc/3.15/include -I/usr/lib/petscdir/petsc3.15/x86_64-linux-gnu-real/include
23+ PETSC_LIB := -L/usr/lib/petscdir/petsc3.15/x86_64-linux-gnu-real/lib -lpetsc -Wl,-rpath,/usr/lib/petscdir/petsc3.15/x86_64-linux-gnu-real/lib
24+ PETSC_NOTE := (system PETSc 3.15)
25+
26+ # Use OpenBLAS for multi-threaded BLAS/LAPACK (better than reference BLAS/ATLAS)
27+ BLAS_FLAGS := -lopenblas -lgomp -lpthread -lm
4028
4129# Flags
4230OPTFLAGS := -O3
4331OMPFLAGS := -fopenmp
4432WARNFLAGS := -Wall
4533MODDIR_FLAG := -J$(BUILD_DIR )
4634
47- FFLAGS := -cpp $(OPTFLAGS ) $(OMPFLAGS ) $(WARNFLAGS ) -I $( MKL_INCLUDE ) $(PETSC_INC ) $(MODDIR_FLAG )
48- DEBUGFLAGS := -cpp -O0 -g -fcheck=all -fbacktrace -ffpe-trap=invalid,zero,overflow,underflow -fbounds-check -I $( MKL_INCLUDE ) $(PETSC_INC ) $(MODDIR_FLAG )
35+ FFLAGS := -cpp $(OPTFLAGS ) $(OMPFLAGS ) $(WARNFLAGS ) $(PETSC_INC ) $(MODDIR_FLAG )
36+ DEBUGFLAGS := -cpp -O0 -g -fcheck=all -fbacktrace -ffpe-trap=invalid,zero,overflow,underflow -fbounds-check $(PETSC_INC ) $(MODDIR_FLAG )
4937
5038# Program
5139NAME := ThermalFlow.x
@@ -62,8 +50,6 @@ SRCS := \
6250 heatflow/mod_material.f90 \
6351 heatflow/mod_hmatrix.f90 \
6452 heatflow/mod_init_evolve.f90 \
65- heatflow/mkl_pardiso.f90 \
66- heatflow/mod_sparse_solver.f90 \
6753 heatflow/mod_petsc_solver.f90 \
6854 heatflow/mod_boundary.f90 \
6955 heatflow/mod_heating.f90 \
@@ -96,15 +82,14 @@ $(BUILD_DIR)/heatflow.o: $(SRC_DIR)/heatflow.f90 | $(BUILD_DIR)
9682
9783# Link (single definition)
9884$(TARGET ) : $(BIN_DIR ) $(OBJS )
99- $(FC ) $(OPTFLAGS ) $(OMPFLAGS ) $(OBJS ) -o $@ $(MKL_FLAGS ) $(PETSC_LIB ) -Wl,-rpath, $( PETSC_LIBDIR )
85+ $(FC ) $(OPTFLAGS ) $(OMPFLAGS ) $(OBJS ) -o $@ $(BLAS_FLAGS ) $(PETSC_LIB )
10086
10187debug : FFLAGS = $(DEBUGFLAGS )
10288debug : clean show $(TARGET )
10389
10490run : $(TARGET )
10591 OMP_NUM_THREADS=$(NCORES ) \
106- MKL_NUM_THREADS=$(NCORES ) \
107- MKL_DYNAMIC=FALSE \
92+ OPENBLAS_NUM_THREADS=$(NCORES ) \
10893 OMP_PROC_BIND=spread \
10994 OMP_PLACES=cores \
11095 $< $(RUN_ARGS )
0 commit comments