热电效应是指在给定温度梯度下产生电势差的一种物理现象。通常用品质因子(ZT)ZT=S^2\sigma{T}/\kappa,(其中S是Seebeck系数,\sigma代表电导率,T是温度,\kappa则表示热导率)来表征材料的热电性能。具有高品质因子的热电材料能够有效地将废热转换为电能,具有广泛的应用前景,因此寻找具有高品质因子的热电材料是能源转换领域的一个研究热点。为了提高热电材料的品质因子,有两种途径:增强S^2\sigma(又称功率因子)或者降低材料的热导率。(From材料牛By Alisa)
早在1993年,麻省理工学院的Mildred Dresselhaus教授和她的博士生L. D. Hicks曾预言二维量子限域效应引起的态密度增强现象会极大地提高材料的热电功率因子 (Phys. Rev. B 47, 12727 (1993)),这为获得高性能的热电材料提供了一个非常重要的理论指导。但是截至目前,一直没有实验确切地证实这个理论预测。即使在一些实验中半导体材料量子阱的宽度已经缩小至电荷的波尔直径尺度,仍然没有观察到热电性能的显著增强。最近,南京大学物理学院的梁世军副研究员和缪峰教授开展实验,同时与吉林大学张立军教授理论课题组合作,利用二维材料均匀厚度和载流子浓度可控的特性,首次证实了著名的Hicks-Dresselhaus理论预言。(From材料牛By Alisa)
### Download spglib-1.12.2.tar.gz
mkdir _build
cd _build
cmake -DCMAKE_INSTALL_PREFIX="" ..
make
make DESTDIR=/home/ywmu/backup/Src/comlib/gcc7/spglib.gcc4 install
### Download spglib-1.12.2.tar.gzmkdir _build
## load intel 2015
aclocal
autoheader
libtoolize
touch INSTALL NEWS README AUTHORS
automake -acf
autoconf
./configure --preifx=/home/ywmu/backup/Src/comlib/intel/spglib CC=icc
make
make install
# load intel oneapi
unzip sousaw-shengbte-xxxxx.zip
cd sousaw-shengbte-xxxxx
cp arch.make Src
cd Src
## modify arch.make as follow for oneapi (modify LDFLAGS, MPIFC, and replace lib/em64t with lib/intel64),
export FFLAGS=-traceback -debug -O2 -static-intel -qopenmp
export LDFLAGS=/home/ywmu/backup/Src/spglib/spglib-1.12.2/src/.libs/libsymspg.a
export MPIFC=mpiifort #modify this line
MKL=$(MKLROOT)/lib/intel64/libmkl_lapack95_lp64.a -Wl,--start-group \
$(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \
$(MKLROOT)/lib/intel64/libmkl_sequential.a \
$(MKLROOT)/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm
export LAPACK=$(MKL)
export LIBS=$(LAPACK)
########
## OR arch.make for oneapi+openblas
export FFLAGS=-traceback -debug -O2 -static-intel -qopenmp
export LDFLAGS=/home/ywmu/backup/Src/spglib/spglib-1.12.2/src/.libs/libsymspg.a
export MPIFC=mpiifort #modify this line
export LAPACK=export LAPACK=/home/ywmu/backup/Src/comlib/intel/libopenblas.a
export LIBS=$(LAPACK)
## OR arch.make for openmpi3(gcc7) + Openblas
export FFLAGS= -O2 -fopenmp
export LDFLAGS=/home/ywmu/backup/Src/spglib/spglib-1.9.9.gnu/src/.libs/libsymspg.a
export MPIFC=mpif90
export LAPACK=/home/ywmu/backup/Src/comlib/gcc7/libopenblas.a
export LIBS=$(LAPACK)
### load IMPI oneapi or Openmpi+gcc7(gcc7)
make
## ShengBTE generated in the parent directory
# GPU Version
# load intel 2015 (the intel version compatible with your cuda, maybe not intel oneapi)
unzip ShengBTE-master.zip
cd ShengBTE-master
cp arch.make Src-gpu
cd Src-gpu
## modify arch.make as follow (modify FFLAGS, LDFLAGS, MPIFC, and replace lib/em64t with lib/intel64),
export FFLAGS=-traceback -debug -O2
export LDFLAGS=/home/muyw/backup/comlib/intel/libsymspg.a
export MPIFC=mpiifort
MKL=$(MKLROOT)/lib/intel64/libmkl_lapack95_lp64.a -Wl,--start-group \
$(MKLROOT)/lib/intel64/libmkl_intel_lp64.a \
$(MKLROOT)/lib/intel64/libmkl_sequential.a \
$(MKLROOT)/lib/intel64/libmkl_core.a -Wl,--end-group -lpthread -lm
export LAPACK=$(MKL)
export LIBS=$(LAPACK)
#######
## Modify cuda root in Makefile to the right path
...
LIBS+=-L/usr/local/cuda-9.2/lib64 -lcudart
...
icc -g -O3 -I/usr/local/cuda-9.2/include -c -o $@ $^
####
make
mv ../ShengBTE ../ShengBTE.gpu
# you will get the GPU version ShengBTE
# intel oneapi version
cp arch.make ../Src
## unload intel2015, and load intel oneapi
make
mv ../ShengBTE ../ShengBTE.oneapi
### Everything is ok for ShengBTE.gpu and ShengBTE.oneapi
# load intel 2015
unzip FourPhonon-main.zip
cd FourPhonon-main
cp arch.make Src
cd Src
## modify arch.make as follow (modify LDFLAGS, MPIFC, and MKLROOT),
export FFLAGS=-traceback -debug -O2 -static_intel
export LDFLAGS=/home/ywmu/.soft/libadd/staticlib/spglib/libsymspg.a
export MPIFC=mpiifort
MKLROOT=/opt/intel11/Compiler/mkl
MKL=$(MKLROOT)/lib/em64t/libmkl_lapack95_lp64.a -Wl,--start-group \
$(MKLROOT)/lib/em64t/libmkl_intel_lp64.a \
$(MKLROOT)/lib/em64t/libmkl_sequential.a \
$(MKLROOT)/lib/em64t/libmkl_core.a -Wl,--end-group -lpthread -lm
export LAPACK=$(MKL)
export LIBS=$(LAPACK)
make
## ShengBTE generated in the parent directory
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.20/src/hdf5-1.8.20.tar.bz2
tar -xvf hdf5-1.8.20.tar.bz2
cd hdf5-1.8.20
comlib=/home/xxxx/xxx
hdfhome=$comlib/hdf5 ## for gcc4.8.5: hdfhome=$comlib/hdf5-gcc
./configure --prefix=$hdfhome --enable-cxx
make -j4
make install
### Environment variables
comlib=/home/xxxx/xxx
hdfhome=$comlib/hdf5 ## or hdfhome=$comlib/hdf5-gcc
export PATH=$PATH:$hdfhome/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$hdfhome/lib
export CPATH=$CPATH:$hdfhome/include
wget https://boostorg.jfrog.io/artifactory/main/release/1.68.0/source/boost_1_68_0.tar.gz
tar -xvf boost_1_68_0.tar.gz
cd boost_1_68_0
boosthome=$comlib/boost ## for gcc4.8.5: boosthome=$comlib/boost-gcc
./bootstrap.sh --prefix=$boosthome
###for gcc4.8.5: ./bootstrap.sh --prefix=$boosthome --with-libraries=all --with-toolset=gcc
echo "using mpi : $(which mpicc) ;" >> project-config.jam
./b2 -j4
### for gcc4.8.5: ./b2 toolset=gcc -j4
./b2 install --prefix=$comlib/boost
### Environment variables
comlib=/home/xxxx/xxx
boosthome=$comlib/boost ## or boosthome=$comlib/boost-gcc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$boosthome/lib
export CPATH=$CPATH:$boosthome/include
wget http://www.almabte.eu/wp-content/uploads/2018/10/almabte-v1.3.2.tar.gz
tar -xvf almabte-v1.3.2.tar.gz
cd almabte-v1.3.2
## modify CMakeList.txt
Add
set(BOOST_ROOT "/home/xxxx/xxx/boost") ## for gcc4.8.5: set(BOOST_ROOT "/home/xxxx/xxx/boost-gcc")
before
find_package(Boost COMPONENTS system filesystem mpi serialization log REQUIRED)
Add
set(HDF5_ROOT "/home/xxxx/xxx/hdf5") ## for gcc4.8.5: set(BOOST_ROOT "/home/xxxx/xxx/hdf5-gcc")
before
find_package(HDF5 COMPONENTS C CXX REQUIRED)
#######################
mkdir build && cd build
### for gcc4.8.5: mdkir buildgcc && cd buildgcc
cmake ../ #cmake3 needed
make -j 4 all
### Error: fatal error: boost/uuid/sha1.hpp not found
#Change "boost/uuid/sha1.hpp" to "boost/uuid/detail/sha1.hpp" in superlattice_builder.cpp
### make clean && make -j 4 all
make -j 4 test