pfss/Makefile

263 lines
9.4 KiB
Makefile
Raw Permalink Normal View History

2021-03-08 16:35:53 +01:00
#-----------------------------------------------------------------------------
# PFSS
#-----------------------------------------------------------------------------
MAKEFILE = Makefile
2021-04-19 16:47:38 +02:00
VERSION_MAJOR = 0 # Major Version Number
2021-06-03 13:18:27 +02:00
VERSION_MINOR = 2 # Minor Version Number
2021-03-08 16:35:53 +01:00
####### Compiler, tools and options
2021-06-22 11:27:57 +02:00
CUDA = 0
2021-03-08 16:35:53 +01:00
DEFINES = -D_DEBUG
DEFINES += -DhcFloat=float # floating point precision to be used
2021-06-03 13:18:27 +02:00
DEFINES += -DNUMTHREADS=12 # number of threads to be used in multi-threaded computations
2021-03-08 16:35:53 +01:00
DEFINES += -DSPRO=1 -DMPRO=2 -DMCUDA=3 -DMAGMAPPING=MPRO # magnetic mapping to be computed by single thread (SPRO), multiple threads (MPRO) or CUDA (do not use that last one, its not efficient)
DEFINES += -DRSCALE # scales radial coordinates by a factor of r_sol for numeric stability
2021-04-19 16:47:38 +02:00
DEFINES += -DREMOVEMONOPOLE # removes artificial magnetic monopole from magnetograms (WSO does not remove monopole from their data before SHC computation, see their coefficient files)
DEFINES += -DVERBOSE # gives more output
DEFINES +=-DPFSS_VER_MAJ=${VERSION_MAJOR}
DEFINES +=-DPFSS_VER_MIN=${VERSION_MINOR}
2021-06-03 13:18:27 +02:00
####### Default parameters
DEFINES += -DDEFAULT_RES_COMP_R=35 # radial resolution of numerical grid
DEFINES += -DDEFAULT_RES_MAP_THETA=200 # meridional resolution of magnetic mapping files
DEFINES += -DDEFAULT_RES_MAP_PHI=400 # zonal resolution of magnetic mapping files
DEFINES += -DDEFAULT_RSS=2.5 # source surface radius in multiples of r_sol
DEFINES += -DDEFAULT_ELL=1.0 # ellipticity of source surface (spherical = 1.0)
DEFINES += -DDEFAULT_SHC_ORDER=9 # maximum principal order of SHC approach
2021-03-08 16:35:53 +01:00
ifeq ($(CUDA), 1)
DEFINES += -DCUDA
CUDAARCH =-arch=sm_30
ifeq ($(CUDAARCH), -arch=sm_35)
DEFINES += -DCUDACC=35
else ifeq ($(CUDAARCH), -arch=sm_30)
DEFINES += -DCUDACC=30
else ifeq ($(CUDAARCH), -arch=sm_21)
DEFINES += -DCUDACC=21
else ifeq ($(CUDAARCH), -arch=sm_20)
DEFINES += -DCUDACC=20
endif
endif
CC = gcc
CXX = g++
CFLAGS = -pipe -g -fPIC $(DEFINES)
CXXFLAGS = -pipe -g -std=c++0x -fPIC -O0 $(DEFINES)
INCPATH = -I. $(CUDAINCPATH)
INCTEST = -Itest
LINK = g++
LFLAGS = -O0
LIBS += -lpthread # Multiprocessing library
LIBS += -lcfitsio # FITS library
LIBS += -lboost_system -lboost_filesystem -lboost_regex # Boost libraries
LIBS += -lfreeimage # Image processing library
2021-06-03 13:18:27 +02:00
LIBS += -lm
2021-03-08 16:35:53 +01:00
DEL_FILE = rm -f
DEL_DIR = rmdir
ifeq ($(CUDA), 1)
NVCC = nvcc
LIBS += -lcuda -lcudart
NVCCFLAGS = -g -G -O0 --ptxas-options=-v --maxrregcount=32 --machine 64 -x cu -rdc=true -Xcompiler -fPIC $(CUDAARCH) $(DEFINES)
endif
####### Output directory
2021-04-19 16:47:38 +02:00
DST_DIR = bin/
2021-03-08 16:35:53 +01:00
####### Files
OBJECTS = main.o \
hcConstants.o \
hcTools.o \
hcImage.o \
carRotInfo.o \
hcTime.o \
hcFunction.o \
pfssSolution.o \
pfssSolutionInfo.o \
pfssSolution_batches.o \
laplaceSolver.o \
hcImageFITS.o \
synPhotMagfield.o \
pfss.o \
filenames.o \
imageStatistics.o \
hcLine.o \
hcPlane.o
ifeq ($(CUDA), 1)
CUDA_OBJECTS = cuda_interface_cuda.o \
cuda_grids_cuda.o \
cuda_laplaceSolver_cuda.o \
hcVec.o \
hcMatrix.o \
magMapping.o \
magline.o \
grids.o \
ellipticalGrid.o
else
OBJECTS += hcVec.o \
hcMatrix.o \
magMapping.o \
magline.o \
grids.o \
ellipticalGrid.o
endif
OBJECTS_IN_DIR = $(addprefix $(DST_DIR), $(OBJECTS))
CUDAOBJ_IN_DIR = $(addprefix $(DST_DIR), $(CUDA_OBJECTS))
TARGET = pfss
first: all
####### Build rules
all: $(TARGET)
2021-06-03 13:18:27 +02:00
documentation:
doxygen doc/Doxyfile
make -C doc/latex/ pdf
cp doc/latex/refman.pdf doc/documentation.pdf
2021-03-08 16:35:53 +01:00
$(TARGET): $(OBJECTS_IN_DIR) $(CUDAOBJ_IN_DIR)
ifeq ($(CUDA), 1)
$(NVCC) $(CUDAARCH) -Xcompiler -fPIC -dlink $(CUDAOBJ_IN_DIR) -o $(DST_DIR)cudalink.o
$(LINK) $(LFLAGS) -o $(DST_DIR)$(TARGET) $(OBJECTS_IN_DIR) $(CUDAOBJ_IN_DIR) $(DST_DIR)cudalink.o $(LIBS)
else
$(LINK) $(LFLAGS) -o $(DST_DIR)$(TARGET) $(OBJECTS_IN_DIR) $(LIBS)
endif
clean:
-$(DEL_FILE) $(OBJECTS_IN_DIR) $(CUDAOBJ_IN_DIR) $(DST_DIR)cudalink.o
-$(DEL_FILE) *~ core *.core
-$(DEL_FILE) $(DST_DIR)$(TARGET)
2021-04-19 16:47:38 +02:00
$(DST_DIR)main.o: main.cpp
$(CXX) $(CXXFLAGS) $(INCPATH) -c -o $(DST_DIR)main.o main.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)hcConstants.o: engine/hcConstants.cpp engine/hcConstants.h
$(CXX) $(CXXFLAGS) $(INCPATH) -c -o $(DST_DIR)hcConstants.o engine/hcConstants.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)coordTransform.o: engine/math/coordTransform.cpp engine/math/coordTransform.h
$(CXX) $(CXXFLAGS) $(INCPATH) -c -o $(DST_DIR)coordTransform.o engine/math/coordTransform.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)cuda_interface_cuda.o: src/cuda_interface.cu
$(NVCC) $(NVCCFLAGS) $(INCPATH) -c -o $(DST_DIR)cuda_interface_cuda.o src/cuda_interface.cu
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)cuda_grids_cuda.o: src/grids.h \
src/cuda_interface.h \
src/cuda_interface.cu \
src/cuda_grids.cu
$(NVCC) $(NVCCFLAGS) $(INCPATH) -c -o $(DST_DIR)cuda_grids_cuda.o src/cuda_grids.cu
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)cuda_laplaceSolver_cuda.o: src/cuda_interface.h \
src/cuda_interface.cu \
src/cuda_grids.cu \
src/cuda_laplaceSolver.cu
$(NVCC) $(NVCCFLAGS) $(INCPATH) -c -o $(DST_DIR)cuda_laplaceSolver_cuda.o src/cuda_laplaceSolver.cu
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)cuda_magMapping_cuda.o: src/cuda_magMapping.cu
$(NVCC) $(NVCCFLAGS) $(INCPATH) -c -o $(DST_DIR)cuda_magMapping_cuda.o src/cuda_magMapping.cu
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)cuda_magline_cuda.o: src/cuda_magline.cu
$(NVCC) $(NVCCFLAGS) $(INCPATH) -c -o $(DST_DIR)cuda_magline_cuda.o src/cuda_magline.cu
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)cuda_testEnv_cuda.o: engine/cuda_testEnv.cu
$(NVCC) $(NVCCFLAGS) $(INCPATH) -c -o $(DST_DIR)cuda_testEnv_cuda.o engine/cuda_testEnv.cu
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)hcVec.o: engine/math/hcVec.cpp engine/math/hcVec.h
2021-03-08 16:35:53 +01:00
ifeq ($(CUDA), 1)
2021-04-19 16:47:38 +02:00
$(NVCC) $(NVCCFLAGS) $(INCPATH) -c -o $(DST_DIR)hcVec.o engine/math/hcVec.cpp
2021-03-08 16:35:53 +01:00
else
2021-04-19 16:47:38 +02:00
$(CXX) $(CXXFLAGS) $(INCPATH) -c -o $(DST_DIR)hcVec.o engine/math/hcVec.cpp
2021-03-08 16:35:53 +01:00
endif
2021-04-19 16:47:38 +02:00
$(DST_DIR)hcMatrix.o: engine/math/hcMatrix.cpp engine/math/hcMatrix.h
2021-03-08 16:35:53 +01:00
ifeq ($(CUDA), 1)
2021-04-19 16:47:38 +02:00
$(NVCC) $(NVCCFLAGS) $(INCPATH) -c -o $(DST_DIR)hcMatrix.o engine/math/hcMatrix.cpp
2021-03-08 16:35:53 +01:00
else
2021-04-19 16:47:38 +02:00
$(CXX) $(CXXFLAGS) $(INCPATH) -c -o $(DST_DIR)hcMatrix.o engine/math/hcMatrix.cpp
2021-03-08 16:35:53 +01:00
endif
2021-04-19 16:47:38 +02:00
$(DST_DIR)grids.o: src/grids.cpp src/grids.h
2021-03-08 16:35:53 +01:00
ifeq ($(CUDA), 1)
2021-04-19 16:47:38 +02:00
$(NVCC) $(NVCCFLAGS) $(INCPATH) -c -o $(DST_DIR)grids.o src/grids.cpp
2021-03-08 16:35:53 +01:00
else
2021-04-19 16:47:38 +02:00
$(CXX) $(CXXFLAGS) $(INCPATH) -c -o $(DST_DIR)grids.o src/grids.cpp
2021-03-08 16:35:53 +01:00
endif
2021-04-19 16:47:38 +02:00
$(DST_DIR)ellipticalGrid.o: src/ellipticalGrid.cpp src/ellipticalGrid.h src/grids.h
2021-03-08 16:35:53 +01:00
ifeq ($(CUDA), 1)
2021-04-19 16:47:38 +02:00
$(NVCC) $(NVCCFLAGS) $(INCPATH) -c -o $(DST_DIR)ellipticalGrid.o src/ellipticalGrid.cpp
2021-03-08 16:35:53 +01:00
else
2021-04-19 16:47:38 +02:00
$(CXX) $(CXXFLAGS) $(INCPATH) -c -o $(DST_DIR)ellipticalGrid.o src/ellipticalGrid.cpp
2021-03-08 16:35:53 +01:00
endif
2021-04-19 16:47:38 +02:00
$(DST_DIR)pfss.o: src/pfss.cpp src/pfss.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)pfss.o src/pfss.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)magMapping.o: src/magMapping.cpp src/magMapping.h \
src/magline.h \
engine/hcImage.h \
src/laplaceSolver.h
2021-03-08 16:35:53 +01:00
ifeq ($(CUDA), 1)
2021-04-19 16:47:38 +02:00
$(NVCC) -c $(NVCCFLAGS) $(INCPATH) -o $(DST_DIR)magMapping.o src/magMapping.cpp
2021-03-08 16:35:53 +01:00
else
2021-04-19 16:47:38 +02:00
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)magMapping.o src/magMapping.cpp
2021-03-08 16:35:53 +01:00
endif
2021-04-19 16:47:38 +02:00
$(DST_DIR)magline.o: src/magline.cpp src/magline.h
2021-03-08 16:35:53 +01:00
ifeq ($(CUDA), 1)
2021-04-19 16:47:38 +02:00
$(NVCC) -c $(NVCCFLAGS) $(INCPATH) -o $(DST_DIR)magline.o src/magline.cpp
2021-03-08 16:35:53 +01:00
else
2021-04-19 16:47:38 +02:00
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)magline.o src/magline.cpp
2021-03-08 16:35:53 +01:00
endif
2021-04-19 16:47:38 +02:00
$(DST_DIR)hcPlane.o: engine/math/hcPlane.cpp engine/math/hcPlane.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)hcPlane.o engine/math/hcPlane.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)hcImage.o: engine/hcImage.cpp engine/hcImage.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)hcImage.o engine/hcImage.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)hcImageFITS.o: engine/hcImageFITS.cpp engine/hcImageFITS.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)hcImageFITS.o engine/hcImageFITS.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)carRotInfo.o: src/carRotInfo.cpp src/carRotInfo.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)carRotInfo.o src/carRotInfo.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)synPhotMagfield.o: src/synPhotMagfield.cpp src/synPhotMagfield.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)synPhotMagfield.o src/synPhotMagfield.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)hcTools.o: engine/hcTools.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)hcTools.o engine/hcTools.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)hcTime.o: engine/hcTime.cpp engine/hcTime.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)hcTime.o engine/hcTime.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)hcFunction.o: engine/math/hcFunction.cpp engine/math/hcFunction.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)hcFunction.o engine/math/hcFunction.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)pfssSolution.o: src/pfssSolution.cpp src/pfssSolution.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)pfssSolution.o src/pfssSolution.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)pfssSolutionInfo.o: src/pfssSolutionInfo.cpp
$(CXX) $(CXXFLAGS) $(INCPATH) -c -o $(DST_DIR)pfssSolutionInfo.o src/pfssSolutionInfo.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)pfssSolution_batches.o: src/pfssSolution_batches.cpp
$(CXX) $(CXXFLAGS) $(INCPATH) -c -o $(DST_DIR)pfssSolution_batches.o src/pfssSolution_batches.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)laplaceSolver.o: src/laplaceSolver.cpp src/laplaceSolver.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)laplaceSolver.o src/laplaceSolver.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)filenames.o: src/filenames.cpp
$(CXX) $(CXXFLAGS) $(INCPATH) -c -o $(DST_DIR)filenames.o src/filenames.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)imageStatistics.o: src/imageStatistics.cpp src/imageStatistics.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o $(DST_DIR)imageStatistics.o src/imageStatistics.cpp
2021-03-08 16:35:53 +01:00
2021-04-19 16:47:38 +02:00
$(DST_DIR)hcLine.o: engine/math/hcLine.cpp engine/math/hcLine.h
$(CXX) $(CXXFLAGS) $(INCPATH) -c -o $(DST_DIR)hcLine.o engine/math/hcLine.cpp
2021-03-08 16:35:53 +01:00