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
i f e q ( $( 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
e n d i f
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
i f e q ( $( 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)
e n d i f
####### 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
i f e q ( $( 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
e l s e
OBJECTS += hcVec.o \
hcMatrix.o \
magMapping.o \
magline.o \
grids.o \
ellipticalGrid.o
e n d i f
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 )
i f e q ( $( 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)
e l s e
$( LINK) $( LFLAGS) -o $( DST_DIR) $( TARGET) $( OBJECTS_IN_DIR) $( LIBS)
e n d i f
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
i f e q ( $( 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
e l s e
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
e n d i f
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
i f e q ( $( 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
e l s e
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
e n d i f
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
i f e q ( $( 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
e l s e
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
e n d i f
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
i f e q ( $( 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
e l s e
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
e n d i f
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
i f e q ( $( 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
e l s e
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
e n d i f
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
i f e q ( $( 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
e l s e
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
e n d i f
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