aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRene Ladan <rene@FreeBSD.org>2020-01-01 11:46:08 +0000
committerRene Ladan <rene@FreeBSD.org>2020-01-01 11:46:08 +0000
commit12f974ad28b37b69ae565644784623a4a49b1d32 (patch)
treee1de30302164fba037edd51962e8f336730aa5ed
parentf2aea6bcb5e33f3312681450946471970022a977 (diff)
downloadports-12f974ad28b37b69ae565644784623a4a49b1d32.tar.gz
ports-12f974ad28b37b69ae565644784623a4a49b1d32.zip
Resurrect ports depending on devel/openmp.
These ports will transition transparantly to openmp from base once FreeBSD 12.0 reaches end-of-life. Reported by: jbeich [1] [2] [1] https://lists.freebsd.org/pipermail/svn-ports-head/2019-May/210482.html [2] https://lists.freebsd.org/pipermail/svn-ports-head/2019-December/229648.html
Notes
Notes: svn path=/head/; revision=521714
-rw-r--r--MOVED4
-rw-r--r--math/Makefile1
-rw-r--r--math/blazeiterative/Makefile26
-rw-r--r--math/blazeiterative/distinfo3
-rw-r--r--math/blazeiterative/pkg-descr21
-rw-r--r--math/blazeiterative/pkg-plist13
-rw-r--r--science/Makefile3
-rw-r--r--science/openmx/Makefile74
-rw-r--r--science/openmx/distinfo5
-rw-r--r--science/openmx/files/patch-Band__DFT__Col.c15
-rw-r--r--science/openmx/files/patch-Band__DFT__NonCol.c15
-rw-r--r--science/openmx/files/patch-Cluster__DFT.c46
-rw-r--r--science/openmx/files/patch-Cluster__DFT__ON2.c23
-rw-r--r--science/openmx/files/patch-Input__std.c11
-rw-r--r--science/openmx/files/patch-Mixing__H.c218
-rw-r--r--science/openmx/files/patch-Poisson.c84
-rw-r--r--science/openmx/files/patch-Poisson__ESM.c24
-rw-r--r--science/openmx/files/patch-bandgnu13.c11
-rw-r--r--science/openmx/files/patch-makefile43
-rw-r--r--science/openmx/files/patch-tran__variables.h10
-rw-r--r--science/openmx/pkg-descr24
-rw-r--r--science/py-PyFR/Makefile46
-rw-r--r--science/py-PyFR/distinfo3
-rw-r--r--science/py-PyFR/files/patch-pyfr_backends_openmp_compiler.py11
-rw-r--r--science/py-PyFR/pkg-descr20
-rw-r--r--science/py-phono3py/Makefile33
-rw-r--r--science/py-phono3py/distinfo3
-rw-r--r--science/py-phono3py/pkg-descr9
28 files changed, 795 insertions, 4 deletions
diff --git a/MOVED b/MOVED
index 53cddcdeb211..cb616aaacd8d 100644
--- a/MOVED
+++ b/MOVED
@@ -13670,7 +13670,6 @@ graphics/linux-c6-sdl_image|graphics/linux-c7-sdl_image|2019-12-31|Has expired:
graphics/linux-c6-sdl_ttf|graphics/linux-c7-sdl_ttf|2019-12-31|Has expired: Superseded by CentOS 7
graphics/linux-c6-tiff|graphics/linux-c7-tiff|2019-12-31|Has expired: Superseded by CentOS 7
lang/linux-c6-tcl85|lang/linux-c7-tcl85|2019-12-31|Has expired: Superseded by CentOS 7
-math/blazeiterative||2019-12-31|Has expired: Depends on expiring devel/openmp
multimedia/linux-c6-libtheora|multimedia/linux-c7-libtheora|2019-12-31|Has expired: Superseded by CentOS 7
multimedia/linux-c6-libv4l|multimedia/linux-c7-libv4l|2019-12-31|Has expired: Superseded by CentOS 7
net/linux-c6-avahi-libs|net/linux-c7-avahi-libs|2019-12-31|Has expired: Superseded by CentOS 7
@@ -13678,9 +13677,6 @@ net/linux-c6-openldap|net/linux-c7-openldap|2019-12-31|Has expired: Superseded b
net/linux-c6-tcp_wrappers-libs|net/linux-c7-tcp_wrappers-libs|2019-12-31|Has expired: Superseded by CentOS 7
net/py-soappy|net/py-zeep|2019-12-31|Has expired: Please consider using net/py-zeep as upstream development is stalled and recommends using another stalled library stud
print/linux-c6-cups-libs|print/linux-c7-cups-libs|2019-12-31|Has expired: Superseded by CentOS 7
-science/openmx||2019-12-31|Has expired: Depends on expiring devel/openmp
-science/py-PyFR||2019-12-31|Has expired: Depends on expiring devel/openmp
-science/py-phono3py||2019-12-31|Has expired: Depends on expiring devel/openmp
security/linux-c6-audit-libs||2019-12-31|Has expired: Superseded by CentOS 7
security/linux-c6-cyrus-sasl2|security/linux-c7-cyrus-sasl2|2019-12-31|Has expired: Superseded by CentOS 7
security/linux-c6-gnutls|security/linux-c7-gnutls|2019-12-31|Has expired: Superseded by CentOS 7
diff --git a/math/Makefile b/math/Makefile
index 9b5a23c6f14b..aa244eb54807 100644
--- a/math/Makefile
+++ b/math/Makefile
@@ -148,6 +148,7 @@
SUBDIR += blas
SUBDIR += blasfeo
SUBDIR += blaze
+ SUBDIR += blazeiterative
SUBDIR += blis
SUBDIR += blitz++
SUBDIR += blocksolve95
diff --git a/math/blazeiterative/Makefile b/math/blazeiterative/Makefile
new file mode 100644
index 000000000000..ab151448c086
--- /dev/null
+++ b/math/blazeiterative/Makefile
@@ -0,0 +1,26 @@
+# $FreeBSD$
+
+PORTNAME= blazeiterative
+PORTVERSION= g20180409
+PORTREVISION= 9
+CATEGORIES= math
+
+MAINTAINER= yuri@FreeBSD.org
+COMMENT= Set of iterative linear system solvers for use with the Blaze library
+
+#LICENSE= https://github.com/tjolsen/BlazeIterative/issues/9
+
+BUILD_DEPENDS= blaze>0:math/blaze \
+ boost-libs>0:devel/boost-libs \
+ openblas>0:math/openblas \
+ openmp>0:devel/openmp
+RUN_DEPENDS= blaze>0:math/blaze
+
+USES= cmake compiler:c++14-lang fortran localbase:ldflags
+USE_GITHUB= yes
+GH_ACCOUNT= tjolsen
+GH_PROJECT= BlazeIterative
+GH_TAGNAME= e9f24b3
+NO_ARCH= yes
+
+.include <bsd.port.mk>
diff --git a/math/blazeiterative/distinfo b/math/blazeiterative/distinfo
new file mode 100644
index 000000000000..fc4ee87be078
--- /dev/null
+++ b/math/blazeiterative/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1534702306
+SHA256 (tjolsen-BlazeIterative-g20180409-e9f24b3_GH0.tar.gz) = 273907aadbbb1bfa263809048ef2ade71ac15cd0b337ac2d741d4e2b9bf3de61
+SIZE (tjolsen-BlazeIterative-g20180409-e9f24b3_GH0.tar.gz) = 5833
diff --git a/math/blazeiterative/pkg-descr b/math/blazeiterative/pkg-descr
new file mode 100644
index 000000000000..ff72ccede983
--- /dev/null
+++ b/math/blazeiterative/pkg-descr
@@ -0,0 +1,21 @@
+A set of iterative linear system solvers intended for use with the Blaze
+library, a high-performance C++ linear algebra library. The API is currently
+based on a tag-dispatch system to choose a particular algorithm.
+
+Currently implemented algorithms:
+* Conjugate Gradient (CG)
+* BiCGSTAB
+
+Planned algorithms:
+* Preconditioned CG
+* Preconditioned BiCGSTAB
+* (Preconditioned) BiCGSTAB(l)
+* GMRES
+* Arnoldi
+* Lanczos
+
+Potential algorithms (if sufficient interest):
+* LSQR
+* LSMR
+
+WWW: https://github.com/tjolsen/BlazeIterative
diff --git a/math/blazeiterative/pkg-plist b/math/blazeiterative/pkg-plist
new file mode 100644
index 000000000000..3754f722f718
--- /dev/null
+++ b/math/blazeiterative/pkg-plist
@@ -0,0 +1,13 @@
+include/BlazeIterative/BlazeIterative.hpp
+include/BlazeIterative/IterativeCommon.hpp
+include/BlazeIterative/IterativeTag.hpp
+include/BlazeIterative/TerminationStatus.hpp
+include/BlazeIterative/solve.hpp
+include/BlazeIterative/solvers/BiCGSTAB.hpp
+include/BlazeIterative/solvers/BiCGSTABL.hpp
+include/BlazeIterative/solvers/BiCGSTABLTag.hpp
+include/BlazeIterative/solvers/BiCGSTABTag.hpp
+include/BlazeIterative/solvers/ConjugateGradient.hpp
+include/BlazeIterative/solvers/ConjugateGradientTag.hpp
+include/BlazeIterative/solvers/solvers.hpp
+share/BlazeIterative/cmake/BlazeIterativeConfig.cmake
diff --git a/science/Makefile b/science/Makefile
index 1104daea1411..b5866e1914e4 100644
--- a/science/Makefile
+++ b/science/Makefile
@@ -175,6 +175,7 @@
SUBDIR += openbabel
SUBDIR += openkim
SUBDIR += openkim-models
+ SUBDIR += openmx
SUBDIR += opensim-core
SUBDIR += opensph
SUBDIR += opsin
@@ -223,6 +224,7 @@
SUBDIR += py-MDAnalysis
SUBDIR += py-MDAnalysisTests
SUBDIR += py-OpenFermion
+ SUBDIR += py-PyFR
SUBDIR += py-PyQuante
SUBDIR += py-ScientificPython
SUBDIR += py-SimpleSpectral
@@ -255,6 +257,7 @@
SUBDIR += py-openpiv
SUBDIR += py-paida
SUBDIR += py-paramz
+ SUBDIR += py-phono3py
SUBDIR += py-phonopy
SUBDIR += py-pupynere
SUBDIR += py-pyaixi
diff --git a/science/openmx/Makefile b/science/openmx/Makefile
new file mode 100644
index 000000000000..713c7a5232c7
--- /dev/null
+++ b/science/openmx/Makefile
@@ -0,0 +1,74 @@
+# $FreeBSD$
+
+PORTNAME= openmx
+DISTVERSION= 3.8.5 # the 18June12 patch upgrades 3.8 -> 3.8.5
+PORTREVISION= 6
+CATEGORIES= science
+MASTER_SITES= http://www.openmx-square.org/ \
+ http://www.openmx-square.org/bugfixed/18June12/:patch
+DISTFILES= ${PORTNAME}${DISTVERSION:R}${EXTRACT_SUFX} \
+ patch${DISTVERSION}${EXTRACT_SUFX}:patch # this patch isn't a patch, but a set of file updates
+DIST_SUBDIR= ${PORTNAME}
+EXTRACT_ONLY= ${PORTNAME}${DISTVERSION:R}${EXTRACT_SUFX}
+
+MAINTAINER= yuri@FreeBSD.org
+COMMENT= Nanoscale material simulations using density functional theories (DFT)
+
+BROKEN= unfetchable
+
+LICENSE= GPLv2
+
+BROKEN_i386= undefined reference to `__atomic_load', see bug#229605 and https://reviews.llvm.org/D42154
+
+LIB_DEPENDS= libblas.so:math/blas \
+ libfftw3.so:math/fftw3 \
+ liblapack.so:math/lapack \
+ libmpich.so:net/mpich \
+ libiomp5.so:devel/openmp
+
+USES= dos2unix fortran gmake localbase:ldflags
+DOS2UNIX_FILES= openmx_common.h
+USE_CXXSTD= c++11
+MAKEFILE= makefile
+
+WRKSRC= ${WRKDIR}/${PORTNAME}${DISTVERSION:R}
+
+CFLAGS+= -Dkcomp
+LDFLAGS+= ${LOCALBASE}/lib/gcc${GCC_DEFAULT}/libgcc_s.so ${LOCALBASE}/lib/libmpifort.so
+
+WRKSRC_SUBDIR= source
+
+MAKE_ENV= MPICH_CC=${CC}
+MAKE_ARGS+= CFLAGS="${CFLAGS}" FFLAGS="${FFLAGS}" LDFLAGS="${LDFLAGS}" GCC_LIB=${LOCALBASE}/lib/gcc${GCC_DEFAULT}/libgfortran.so
+
+BINARY_ALIAS= gcc=${CXX} gcc7=${CXX}
+
+UTIL_PROGS= DosMain jx analysis_example esp polB bandgnu13 bin2txt cube2xsf intensity_map md2axsf
+
+PLIST_FILES= bin/${PORTNAME} ${UTIL_PROGS:C/^/bin\//}
+
+OPTIONS_DEFINE_amd64= SIMD
+OPTIONS_DEFINE_i386= SIMD
+OPTIONS_DEFAULT_amd64= SIMD
+OPTIONS_DEFAULT_i386= SIMD
+
+SIMD_CFLAGS= -msse -msse2 -mfpmath=sse
+SIMD_CFLAGS_OFF= -Dnosse
+CFLAGS+= ${ARCH:S/amd64//:S/i386//:S/${ARCH}/-Dnosse/}
+
+pre-patch: # overlay files before patching
+ @cd ${WRKSRC} && ${TAR} xzf ${DISTDIR}/${DIST_SUBDIR}/patch${DISTVERSION}${EXTRACT_SUFX}
+
+post-patch:
+ @cd ${WRKSRC} && ${REINPLACE_CMD} 's|DFT_DATA_PATH|"${DATADIR}/DFT_DATA13"|' Input_std.c check_lead.c SetPara_DFT.c OutData.c OutData_Binary.c
+
+post-install:
+.for u in ${UTIL_PROGS}
+ ${INSTALL_PROGRAM} ${WRKSRC}/${u} ${STAGEDIR}${PREFIX}/bin
+.endfor
+ cd ${WRKSRC}/.. && ${COPYTREE_SHARE} DFT_DATA13 ${STAGEDIR}${DATADIR}
+ # autoplist for potentials: about 500 files in DATADIR
+ @cd ${STAGEDIR}${PREFIX} && \
+ ${FIND} ${DATADIR:S/^${PREFIX}\///} -type f >> ${TMPPLIST}
+
+.include <bsd.port.mk>
diff --git a/science/openmx/distinfo b/science/openmx/distinfo
new file mode 100644
index 000000000000..9794f107d104
--- /dev/null
+++ b/science/openmx/distinfo
@@ -0,0 +1,5 @@
+TIMESTAMP = 1536713126
+SHA256 (openmx/openmx3.8.tar.gz) = 36ee10d8b1587b25a2ca1d57f110111be65c4fb4dc820e6d93e1ed2b562634a1
+SIZE (openmx/openmx3.8.tar.gz) = 143086177
+SHA256 (openmx/patch3.8.5.tar.gz) = d0fea2ce956d796a87a4bc9e9d580fb115ff2a22764650fffa78bb79a1b30468
+SIZE (openmx/patch3.8.5.tar.gz) = 316333
diff --git a/science/openmx/files/patch-Band__DFT__Col.c b/science/openmx/files/patch-Band__DFT__Col.c
new file mode 100644
index 000000000000..a22e95c8e542
--- /dev/null
+++ b/science/openmx/files/patch-Band__DFT__Col.c
@@ -0,0 +1,15 @@
+--- Band_DFT_Col.c.orig 2018-08-29 06:24:38 UTC
++++ Band_DFT_Col.c
+@@ -483,9 +483,9 @@ double Band_DFT_Col(int SCF_iter,
+
+ /* allocation */
+
+- stat_send = malloc(sizeof(MPI_Status)*numprocs2);
+- request_send = malloc(sizeof(MPI_Request)*numprocs2);
+- request_recv = malloc(sizeof(MPI_Request)*numprocs2);
++ stat_send = (MPI_Status *)malloc(sizeof(MPI_Status)*numprocs2);
++ request_send = (MPI_Request *)malloc(sizeof(MPI_Request)*numprocs2);
++ request_recv = (MPI_Request *)malloc(sizeof(MPI_Request)*numprocs2);
+
+ is1 = (int*)malloc(sizeof(int)*numprocs2);
+ ie1 = (int*)malloc(sizeof(int)*numprocs2);
diff --git a/science/openmx/files/patch-Band__DFT__NonCol.c b/science/openmx/files/patch-Band__DFT__NonCol.c
new file mode 100644
index 000000000000..dfbcc2493215
--- /dev/null
+++ b/science/openmx/files/patch-Band__DFT__NonCol.c
@@ -0,0 +1,15 @@
+--- Band_DFT_NonCol.c.orig 2018-08-29 06:26:10 UTC
++++ Band_DFT_NonCol.c
+@@ -554,9 +554,9 @@ double Band_DFT_NonCol(int SCF_iter,
+
+ /* allocation */
+
+- stat_send = malloc(sizeof(MPI_Status)*numprocs1);
+- request_send = malloc(sizeof(MPI_Request)*numprocs1);
+- request_recv = malloc(sizeof(MPI_Request)*numprocs1);
++ stat_send = (MPI_Status *)malloc(sizeof(MPI_Status)*numprocs1);
++ request_send = (MPI_Request *)malloc(sizeof(MPI_Request)*numprocs1);
++ request_recv = (MPI_Request *)malloc(sizeof(MPI_Request)*numprocs1);
+
+ is1 = (int*)malloc(sizeof(int)*numprocs1);
+ ie1 = (int*)malloc(sizeof(int)*numprocs1);
diff --git a/science/openmx/files/patch-Cluster__DFT.c b/science/openmx/files/patch-Cluster__DFT.c
new file mode 100644
index 000000000000..cbf76c632080
--- /dev/null
+++ b/science/openmx/files/patch-Cluster__DFT.c
@@ -0,0 +1,46 @@
+--- Cluster_DFT.c.orig 2018-08-29 06:05:22 UTC
++++ Cluster_DFT.c
+@@ -194,9 +194,9 @@ static double Cluster_collinear(
+
+ Num_Comm_World1 = SpinP_switch + 1;
+
+- stat_send = malloc(sizeof(MPI_Status)*numprocs0);
+- request_send = malloc(sizeof(MPI_Request)*numprocs0);
+- request_recv = malloc(sizeof(MPI_Request)*numprocs0);
++ stat_send = (MPI_Status *)malloc(sizeof(MPI_Status)*numprocs0);
++ request_send = (MPI_Request *)malloc(sizeof(MPI_Request)*numprocs0);
++ request_recv = (MPI_Request *)malloc(sizeof(MPI_Request)*numprocs0);
+
+ /***********************************************
+ allocation of arrays for the first world
+@@ -1541,9 +1541,9 @@ static double Cluster_non_collinear(
+
+ /* allocation of arrays */
+
+- stat_send = malloc(sizeof(MPI_Status)*numprocs);
+- request_send = malloc(sizeof(MPI_Request)*numprocs);
+- request_recv = malloc(sizeof(MPI_Request)*numprocs);
++ stat_send = (MPI_Status *)malloc(sizeof(MPI_Status)*numprocs);
++ request_send = (MPI_Request *)malloc(sizeof(MPI_Request)*numprocs);
++ request_recv = (MPI_Request *)malloc(sizeof(MPI_Request)*numprocs);
+
+ /****************************************************
+ calculation of the array size
+@@ -2649,7 +2649,7 @@ void Save_DOS_Col(int n, int MaxN, int *
+ MPI_Comm_size(mpi_comm_level1,&numprocs);
+ MPI_Comm_rank(mpi_comm_level1,&myid);
+
+- request_recv = malloc(sizeof(MPI_Request)*numprocs);
++ request_recv = (MPI_Request *)malloc(sizeof(MPI_Request)*numprocs);
+
+ /* open file pointers */
+
+@@ -2901,7 +2901,7 @@ void Save_DOS_NonCol(int n, int MaxN, in
+ MPI_Comm_size(mpi_comm_level1,&numprocs);
+ MPI_Comm_rank(mpi_comm_level1,&myid);
+
+- request_recv = malloc(sizeof(MPI_Request)*numprocs);
++ request_recv = (MPI_Request *)malloc(sizeof(MPI_Request)*numprocs);
+
+ /* open file pointers */
+
diff --git a/science/openmx/files/patch-Cluster__DFT__ON2.c b/science/openmx/files/patch-Cluster__DFT__ON2.c
new file mode 100644
index 000000000000..8c9a7660b1f4
--- /dev/null
+++ b/science/openmx/files/patch-Cluster__DFT__ON2.c
@@ -0,0 +1,23 @@
+--- Cluster_DFT_ON2.c.orig 2016-03-27 06:53:28 UTC
++++ Cluster_DFT_ON2.c
+@@ -10,6 +10,7 @@
+
+ ***********************************************************************/
+
++#include <complex.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <string.h>
+@@ -1275,9 +1276,9 @@ static void OND_Solver(
+ MPI_Request *request_send;
+ MPI_Request *request_recv;
+
+- stat_send = malloc(sizeof(MPI_Status)*numprocs2);
+- request_send = malloc(sizeof(MPI_Request)*numprocs2);
+- request_recv = malloc(sizeof(MPI_Request)*numprocs2);
++ stat_send = (MPI_Status *)malloc(sizeof(MPI_Status)*numprocs2);
++ request_send = (MPI_Request *)malloc(sizeof(MPI_Request)*numprocs2);
++ request_recv = (MPI_Request *)malloc(sizeof(MPI_Request)*numprocs2);
+
+ al.r = 1.0;
+ al.i = 0.0;
diff --git a/science/openmx/files/patch-Input__std.c b/science/openmx/files/patch-Input__std.c
new file mode 100644
index 000000000000..d8e1325a911b
--- /dev/null
+++ b/science/openmx/files/patch-Input__std.c
@@ -0,0 +1,11 @@
+--- Input_std.c.orig 2018-09-12 02:18:32 UTC
++++ Input_std.c
+@@ -85,7 +85,7 @@ void Input_std(char *file)
+
+ input_string("System.CurrrentDirectory",filepath,"./");
+ input_string("System.Name",filename,"default");
+- input_string("DATA.PATH",DFT_DATA_PATH,"../DFT_DATA13");
++ //input_string("DATA.PATH",DFT_DATA_PATH,"../DFT_DATA13");
+ input_int("level.of.stdout", &level_stdout,1);
+ input_int("level.of.fileout",&level_fileout,1);
+ input_logical("memory.usage.fileout",&memoryusage_fileout,0); /* default=off */
diff --git a/science/openmx/files/patch-Mixing__H.c b/science/openmx/files/patch-Mixing__H.c
new file mode 100644
index 000000000000..ff3e86664dae
--- /dev/null
+++ b/science/openmx/files/patch-Mixing__H.c
@@ -0,0 +1,218 @@
+--- Mixing_H.c.orig 2018-08-29 05:53:55 UTC
++++ Mixing_H.c
+@@ -74,7 +74,7 @@ void Pulay_Mixing_H_MultiSecant(int MD_i
+ double sum,my_sum,tmp1,tmp2,alpha;
+ double r,r10,r11,r12,r13,r20,r21,r22;
+ double h,h10,h11,h12,h13,h20,h21,h22;
+- double my_sy,my_yy,sy,yy,norm,s,y,or,al,be;
++ double my_sy,my_yy,sy,yy,norm,s,y,orx,al,be;
+ double **A,**IA,*coes,*coes2,*ror;
+ char nanchar[300];
+
+@@ -635,44 +635,44 @@ void Pulay_Mixing_H_MultiSecant(int MD_i
+ s = HisH1[m][0][Mc_AN][h_AN][i][j] - HisH1[m+1][0][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[m][0][Mc_AN][h_AN][i][j] - ResidualH1[m+1][0][Mc_AN][h_AN][i][j]; /* y */
+ r = s - al*y; /* r */
+- or = ResidualH1[dim+1][0][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += r*or;
++ orx = ResidualH1[dim+1][0][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += r*orx;
+
+ s = HisH1[m][1][Mc_AN][h_AN][i][j] - HisH1[m+1][1][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[m][1][Mc_AN][h_AN][i][j] - ResidualH1[m+1][1][Mc_AN][h_AN][i][j]; /* y */
+ r = s - al*y; /* r */
+- or = ResidualH1[dim+1][1][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += r*or;
++ orx = ResidualH1[dim+1][1][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += r*orx;
+
+ s = HisH1[m][2][Mc_AN][h_AN][i][j] - HisH1[m+1][2][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[m][2][Mc_AN][h_AN][i][j] - ResidualH1[m+1][2][Mc_AN][h_AN][i][j]; /* y */
+ r = s - al*y; /* r */
+- or = ResidualH1[dim+1][2][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += r*or;
++ orx = ResidualH1[dim+1][2][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += r*orx;
+
+ s = HisH1[m][3][Mc_AN][h_AN][i][j] - HisH1[m+1][3][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[m][3][Mc_AN][h_AN][i][j] - ResidualH1[m+1][3][Mc_AN][h_AN][i][j]; /* y */
+ r = s - al*y; /* r */
+- or = ResidualH1[dim+1][3][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += r*or;
++ orx = ResidualH1[dim+1][3][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += r*orx;
+
+ s = HisH2[m][0][Mc_AN][h_AN][i][j] - HisH2[m+1][0][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH2[m][0][Mc_AN][h_AN][i][j] - ResidualH2[m+1][0][Mc_AN][h_AN][i][j]; /* y */
+ r = s - al*y; /* r */
+- or = ResidualH2[dim+1][0][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += r*or;
++ orx = ResidualH2[dim+1][0][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += r*orx;
+
+ s = HisH2[m][1][Mc_AN][h_AN][i][j] - HisH2[m+1][1][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH2[m][1][Mc_AN][h_AN][i][j] - ResidualH2[m+1][1][Mc_AN][h_AN][i][j]; /* y */
+ r = s - al*y; /* r */
+- or = ResidualH2[dim+1][1][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += r*or;
++ orx = ResidualH2[dim+1][1][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += r*orx;
+
+ s = HisH2[m][2][Mc_AN][h_AN][i][j] - HisH2[m+1][2][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH2[m][2][Mc_AN][h_AN][i][j] - ResidualH2[m+1][2][Mc_AN][h_AN][i][j]; /* y */
+ r = s - al*y; /* r */
+- or = ResidualH2[dim+1][2][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += r*or;
++ orx = ResidualH2[dim+1][2][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += r*orx;
+
+ }
+ }
+@@ -696,8 +696,8 @@ void Pulay_Mixing_H_MultiSecant(int MD_i
+ s = HisH1[m][spin][Mc_AN][h_AN][i][j] - HisH1[m+1][spin][Mc_AN][h_AN][i][j];
+ y = ResidualH1[m][spin][Mc_AN][h_AN][i][j] - ResidualH1[m+1][spin][Mc_AN][h_AN][i][j];
+ r = s - al*y;
+- or = ResidualH1[dim+1][spin][Mc_AN][h_AN][i][j];
+- my_sum += r*or;
++ orx = ResidualH1[dim+1][spin][Mc_AN][h_AN][i][j];
++ my_sum += r*orx;
+ }
+ }
+ }
+@@ -986,7 +986,7 @@ void Pulay_Mixing_H_with_One_Shot_Hessia
+ double my_sum,tmp1,tmp2,alpha;
+ double r,r10,r11,r12,r13,r20,r21,r22;
+ double h,h10,h11,h12,h13,h20,h21,h22;
+- double my_sy,my_yy,sy,yy,norm,s,y,or,al,be;
++ double my_sy,my_yy,sy,yy,norm,s,y,orx,al,be;
+ double **A,**IA,*coes;
+ char nanchar[300];
+
+@@ -1427,38 +1427,38 @@ void Pulay_Mixing_H_with_One_Shot_Hessia
+
+ s = HisH1[0][0][Mc_AN][h_AN][i][j] - HisH1[1][0][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[0][0][Mc_AN][h_AN][i][j] - ResidualH1[1][0][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH1[dim][0][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += (s-al*y)*or;
++ orx = ResidualH1[dim][0][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += (s-al*y)*orx;
+
+ s = HisH1[0][1][Mc_AN][h_AN][i][j] - HisH1[1][1][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[0][1][Mc_AN][h_AN][i][j] - ResidualH1[1][1][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH1[dim][1][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += (s-al*y)*or;
++ orx = ResidualH1[dim][1][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += (s-al*y)*orx;
+
+ s = HisH1[0][2][Mc_AN][h_AN][i][j] - HisH1[1][2][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[0][2][Mc_AN][h_AN][i][j] - ResidualH1[1][2][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH1[dim][2][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += (s-al*y)*or;
++ orx = ResidualH1[dim][2][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += (s-al*y)*orx;
+
+ s = HisH1[0][3][Mc_AN][h_AN][i][j] - HisH1[1][3][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[0][3][Mc_AN][h_AN][i][j] - ResidualH1[1][3][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH1[dim][3][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += (s-al*y)*or;
++ orx = ResidualH1[dim][3][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += (s-al*y)*orx;
+
+ s = HisH2[0][0][Mc_AN][h_AN][i][j] - HisH2[1][0][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH2[0][0][Mc_AN][h_AN][i][j] - ResidualH2[1][0][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH2[dim][0][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += (s-al*y)*or;
++ orx = ResidualH2[dim][0][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += (s-al*y)*orx;
+
+ s = HisH2[0][1][Mc_AN][h_AN][i][j] - HisH2[1][1][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH2[0][1][Mc_AN][h_AN][i][j] - ResidualH2[1][1][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH2[dim][1][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += (s-al*y)*or;
++ orx = ResidualH2[dim][1][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += (s-al*y)*orx;
+
+ s = HisH2[0][2][Mc_AN][h_AN][i][j] - HisH2[1][2][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH2[0][2][Mc_AN][h_AN][i][j] - ResidualH2[1][2][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH2[dim][2][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += (s-al*y)*or;
++ orx = ResidualH2[dim][2][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += (s-al*y)*orx;
+ }
+ }
+ }
+@@ -1479,8 +1479,8 @@ void Pulay_Mixing_H_with_One_Shot_Hessia
+ for (j=0; j<Spe_Total_NO[Hwan]; j++){
+ s = HisH1[0][spin][Mc_AN][h_AN][i][j] - HisH1[1][spin][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[0][spin][Mc_AN][h_AN][i][j] - ResidualH1[1][spin][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH1[dim][spin][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- my_sum += (s-al*y)*or;
++ orx = ResidualH1[dim][spin][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ my_sum += (s-al*y)*orx;
+ }
+ }
+ }
+@@ -1541,38 +1541,38 @@ void Pulay_Mixing_H_with_One_Shot_Hessia
+
+ s = HisH1[0][0][Mc_AN][h_AN][i][j] - HisH1[1][0][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[0][0][Mc_AN][h_AN][i][j] - ResidualH1[1][0][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH1[dim][0][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- H[0][Mc_AN][h_AN][i][j] = h10 - alpha*(al*or + (s-al*y)*be);
++ orx = ResidualH1[dim][0][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ H[0][Mc_AN][h_AN][i][j] = h10 - alpha*(al*orx + (s-al*y)*be);
+
+ s = HisH1[0][1][Mc_AN][h_AN][i][j] - HisH1[1][1][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[0][1][Mc_AN][h_AN][i][j] - ResidualH1[1][1][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH1[dim][1][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- H[1][Mc_AN][h_AN][i][j] = h11 - alpha*(al*or + (s-al*y)*be);
++ orx = ResidualH1[dim][1][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ H[1][Mc_AN][h_AN][i][j] = h11 - alpha*(al*orx + (s-al*y)*be);
+
+ s = HisH1[0][2][Mc_AN][h_AN][i][j] - HisH1[1][2][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[0][2][Mc_AN][h_AN][i][j] - ResidualH1[1][2][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH1[dim][2][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- H[2][Mc_AN][h_AN][i][j] = h12 - alpha*(al*or + (s-al*y)*be);
++ orx = ResidualH1[dim][2][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ H[2][Mc_AN][h_AN][i][j] = h12 - alpha*(al*orx + (s-al*y)*be);
+
+ s = HisH1[0][3][Mc_AN][h_AN][i][j] - HisH1[1][3][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[0][3][Mc_AN][h_AN][i][j] - ResidualH1[1][3][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH1[dim][3][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- H[3][Mc_AN][h_AN][i][j] = h13 - alpha*(al*or + (s-al*y)*be);
++ orx = ResidualH1[dim][3][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ H[3][Mc_AN][h_AN][i][j] = h13 - alpha*(al*orx + (s-al*y)*be);
+
+ s = HisH2[0][0][Mc_AN][h_AN][i][j] - HisH2[1][0][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH2[0][0][Mc_AN][h_AN][i][j] - ResidualH2[1][0][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH2[dim][0][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- iHNL[0][Mc_AN][h_AN][i][j] = h20 - alpha*(al*or + (s-al*y)*be);
++ orx = ResidualH2[dim][0][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ iHNL[0][Mc_AN][h_AN][i][j] = h20 - alpha*(al*orx + (s-al*y)*be);
+
+ s = HisH2[0][1][Mc_AN][h_AN][i][j] - HisH2[1][1][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH2[0][1][Mc_AN][h_AN][i][j] - ResidualH2[1][1][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH2[dim][1][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- iHNL[1][Mc_AN][h_AN][i][j] = h21 - alpha*(al*or + (s-al*y)*be);
++ orx = ResidualH2[dim][1][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ iHNL[1][Mc_AN][h_AN][i][j] = h21 - alpha*(al*orx + (s-al*y)*be);
+
+ s = HisH2[0][2][Mc_AN][h_AN][i][j] - HisH2[1][2][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH2[0][2][Mc_AN][h_AN][i][j] - ResidualH2[1][2][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH2[dim][2][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- iHNL[2][Mc_AN][h_AN][i][j] = h22 - alpha*(al*or + (s-al*y)*be);
++ orx = ResidualH2[dim][2][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ iHNL[2][Mc_AN][h_AN][i][j] = h22 - alpha*(al*orx + (s-al*y)*be);
+ }
+ }
+ }
+@@ -1599,8 +1599,8 @@ void Pulay_Mixing_H_with_One_Shot_Hessia
+
+ s = HisH1[0][spin][Mc_AN][h_AN][i][j] - HisH1[1][spin][Mc_AN][h_AN][i][j]; /* s */
+ y = ResidualH1[0][spin][Mc_AN][h_AN][i][j] - ResidualH1[1][spin][Mc_AN][h_AN][i][j]; /* y */
+- or = ResidualH1[dim][spin][Mc_AN][h_AN][i][j]; /* OptResidualH */
+- H[spin][Mc_AN][h_AN][i][j] = h - alpha*(al*or + (s-al*y)*be);
++ orx = ResidualH1[dim][spin][Mc_AN][h_AN][i][j]; /* OptResidualH */
++ H[spin][Mc_AN][h_AN][i][j] = h - alpha*(al*orx + (s-al*y)*be);
+
+ }
+ }
diff --git a/science/openmx/files/patch-Poisson.c b/science/openmx/files/patch-Poisson.c
new file mode 100644
index 000000000000..6705c1abff28
--- /dev/null
+++ b/science/openmx/files/patch-Poisson.c
@@ -0,0 +1,84 @@
+--- Poisson.c.orig 2018-08-29 05:58:06 UTC
++++ Poisson.c
+@@ -141,8 +141,8 @@ void FFT_Poisson(double *ReRhor, double
+ allocation of arrays:
+ ****************************************************/
+
+- in = fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
+- out = fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
++ in = (fftw_complex *)fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
++ out = (fftw_complex *)fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
+
+ /*------------------ FFT along the C-axis in the AB partition ------------------*/
+
+@@ -182,10 +182,10 @@ void FFT_Poisson(double *ReRhor, double
+ array0 = (double*)malloc(sizeof(double)*2*GP_B_AB2CA_S[NN_B_AB2CA_S]);
+ array1 = (double*)malloc(sizeof(double)*2*GP_B_AB2CA_R[NN_B_AB2CA_R]);
+
+- request_send = malloc(sizeof(MPI_Request)*NN_B_AB2CA_S);
+- request_recv = malloc(sizeof(MPI_Request)*NN_B_AB2CA_R);
+- stat_send = malloc(sizeof(MPI_Status)*NN_B_AB2CA_S);
+- stat_recv = malloc(sizeof(MPI_Status)*NN_B_AB2CA_R);
++ request_send = (MPI_Request *)malloc(sizeof(MPI_Request)*NN_B_AB2CA_S);
++ request_recv = (MPI_Request *)malloc(sizeof(MPI_Request)*NN_B_AB2CA_R);
++ stat_send = (MPI_Status *)malloc(sizeof(MPI_Status)*NN_B_AB2CA_S);
++ stat_recv = (MPI_Status *)malloc(sizeof(MPI_Status)*NN_B_AB2CA_R);
+
+ NN_S = 0;
+ NN_R = 0;
+@@ -307,10 +307,10 @@ void FFT_Poisson(double *ReRhor, double
+ array0 = (double*)malloc(sizeof(double)*2*GP_B_CA2CB_S[NN_B_CA2CB_S]);
+ array1 = (double*)malloc(sizeof(double)*2*GP_B_CA2CB_R[NN_B_CA2CB_R]);
+
+- request_send = malloc(sizeof(MPI_Request)*NN_B_CA2CB_S);
+- request_recv = malloc(sizeof(MPI_Request)*NN_B_CA2CB_R);
+- stat_send = malloc(sizeof(MPI_Status)*NN_B_CA2CB_S);
+- stat_recv = malloc(sizeof(MPI_Status)*NN_B_CA2CB_R);
++ request_send = (MPI_Request *)malloc(sizeof(MPI_Request)*NN_B_CA2CB_S);
++ request_recv = (MPI_Request *)malloc(sizeof(MPI_Request)*NN_B_CA2CB_R);
++ stat_send = (MPI_Status *)malloc(sizeof(MPI_Status)*NN_B_CA2CB_S);
++ stat_recv = (MPI_Status *)malloc(sizeof(MPI_Status)*NN_B_CA2CB_R);
+
+ NN_S = 0;
+ NN_R = 0;
+@@ -503,8 +503,8 @@ void Inverse_FFT_Poisson(double *ReRhor,
+ fftw_complex out[List_YOUSO[17]];
+ ****************************************************/
+
+- in = fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
+- out = fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
++ in = (fftw_complex *)fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
++ out = (fftw_complex *)fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
+
+ /*------------------ Inverse FFT along the A-axis in the CB partition ------------------*/
+
+@@ -544,10 +544,10 @@ void Inverse_FFT_Poisson(double *ReRhor,
+ array0 = (double*)malloc(sizeof(double)*2*GP_B_CA2CB_R[NN_B_CA2CB_R]);
+ array1 = (double*)malloc(sizeof(double)*2*GP_B_CA2CB_S[NN_B_CA2CB_S]);
+
+- request_send = malloc(sizeof(MPI_Request)*NN_B_CA2CB_R);
+- request_recv = malloc(sizeof(MPI_Request)*NN_B_CA2CB_S);
+- stat_send = malloc(sizeof(MPI_Status)*NN_B_CA2CB_R);
+- stat_recv = malloc(sizeof(MPI_Status)*NN_B_CA2CB_S);
++ request_send = (MPI_Request *)malloc(sizeof(MPI_Request)*NN_B_CA2CB_R);
++ request_recv = (MPI_Request *)malloc(sizeof(MPI_Request)*NN_B_CA2CB_S);
++ stat_send = (MPI_Status *)malloc(sizeof(MPI_Status)*NN_B_CA2CB_R);
++ stat_recv = (MPI_Status *)malloc(sizeof(MPI_Status)*NN_B_CA2CB_S);
+
+ NN_S = 0;
+ NN_R = 0;
+@@ -669,10 +669,10 @@ void Inverse_FFT_Poisson(double *ReRhor,
+ array0 = (double*)malloc(sizeof(double)*2*GP_B_AB2CA_R[NN_B_AB2CA_R]);
+ array1 = (double*)malloc(sizeof(double)*2*GP_B_AB2CA_S[NN_B_AB2CA_S]);
+
+- request_send = malloc(sizeof(MPI_Request)*NN_B_AB2CA_R);
+- request_recv = malloc(sizeof(MPI_Request)*NN_B_AB2CA_S);
+- stat_send = malloc(sizeof(MPI_Status)*NN_B_AB2CA_R);
+- stat_recv = malloc(sizeof(MPI_Status)*NN_B_AB2CA_S);
++ request_send = (MPI_Request *)malloc(sizeof(MPI_Request)*NN_B_AB2CA_R);
++ request_recv = (MPI_Request *)malloc(sizeof(MPI_Request)*NN_B_AB2CA_S);
++ stat_send = (MPI_Status *)malloc(sizeof(MPI_Status)*NN_B_AB2CA_R);
++ stat_recv = (MPI_Status *)malloc(sizeof(MPI_Status)*NN_B_AB2CA_S);
+
+ NN_S = 0;
+ NN_R = 0;
diff --git a/science/openmx/files/patch-Poisson__ESM.c b/science/openmx/files/patch-Poisson__ESM.c
new file mode 100644
index 000000000000..19224a759e79
--- /dev/null
+++ b/science/openmx/files/patch-Poisson__ESM.c
@@ -0,0 +1,24 @@
+--- Poisson_ESM.c.orig 2018-08-29 06:03:16 UTC
++++ Poisson_ESM.c
+@@ -71,8 +71,8 @@ double Poisson_ESM(int fft_charge_flag,
+ fftw_complex out[List_YOUSO[17]];
+ ****************************************************/
+
+- in0 = fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
+- out0 = fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
++ in0 = (fftw_complex *)fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
++ out0 = (fftw_complex *)fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
+
+
+ if (myid==Host_ID) {
+@@ -908,8 +908,8 @@ void One_dim_FFT(FILE *fp,
+ fftw_complex out[List_YOUSO[17]];
+ ****************************************************/
+
+- in = fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
+- out = fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
++ in = (fftw_complex *)fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
++ out = (fftw_complex *)fftw_malloc(sizeof(fftw_complex)*List_YOUSO[17]);
+
+ p = fftw_plan_dft_1d(Ngrid1, in, out, sgn2, FFTW_ESTIMATE);
+
diff --git a/science/openmx/files/patch-bandgnu13.c b/science/openmx/files/patch-bandgnu13.c
new file mode 100644
index 000000000000..3c6172bc62e6
--- /dev/null
+++ b/science/openmx/files/patch-bandgnu13.c
@@ -0,0 +1,11 @@
+--- bandgnu13.c.orig 2018-09-11 19:33:10 UTC
++++ bandgnu13.c
+@@ -75,7 +75,7 @@ void vk_rtv(double vk[4], double rtv[4][
+
+ #define MUNIT 2
+
+-main(int argc, char **argv)
++int main(int argc, char **argv)
+ {
+ static double Unit0[MUNIT]={27.2,1.0}; /* Hartree-> eV */
+ static char *Unitname0[MUNIT]={"eV","Hartree"};
diff --git a/science/openmx/files/patch-makefile b/science/openmx/files/patch-makefile
new file mode 100644
index 000000000000..f70af174a079
--- /dev/null
+++ b/science/openmx/files/patch-makefile
@@ -0,0 +1,43 @@
+--- makefile.orig 2016-04-02 12:43:42 UTC
++++ makefile
+@@ -136,15 +136,15 @@
+ #
+
+
+-CC = mpicc -O3 -xHOST -ip -no-prec-div -openmp -I/opt/intel/mkl/include/fftw
+-FC = mpif90 -O3 -xHOST -ip -no-prec-div -openmp
+-LIB= -L/opt/intel/mkl/lib -mkl=parallel -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -lpthread -lifcore -lmpi -lmpi_f90 -lmpi_f77
++CC = mpicc $(CFLAGS) -fopenmp
++FC = mpif90 $(FFLAGS) -fopenmp
++LIB= $(LDFLAGS) -lpthread -llapack -lblas -lgfortran -lfftw3 -liomp5
+
+
+
+
+
+-CFLAGS = -g
++#CFLAGS = -g
+
+ OBJS = openmx.o openmx_common.o Input_std.o Inputtools.o \
+ init.o LU_inverse.o ReLU_inverse.o \
+@@ -661,7 +661,7 @@ Show_DFT_DATA.o: Show_DFT_DATA.c openmx_
+
+ install: $(PROG)
+ strip $(PROG)
+- cp $(PROG) $(DESTDIR)/$(PROG)
++ install $(PROG) $(DESTDIR)$(PREFIX)/bin/$(PROG)
+
+ #
+ #
+@@ -889,9 +889,9 @@ TRAN_CDen_Main.o: TRAN_CDen_Main.c openm
+
+ elpa1.o: elpa1.f90
+ $(FC) -c elpa1.f90
+-solve_evp_real.o: solve_evp_real.f90
++solve_evp_real.o: solve_evp_real.f90 elpa1.o
+ $(FC) -c solve_evp_real.f90
+-solve_evp_complex.o: solve_evp_complex.f90
++solve_evp_complex.o: solve_evp_complex.f90 elpa1.o
+ $(FC) -c solve_evp_complex.f90
+
+
diff --git a/science/openmx/files/patch-tran__variables.h b/science/openmx/files/patch-tran__variables.h
new file mode 100644
index 000000000000..7d7d961603d6
--- /dev/null
+++ b/science/openmx/files/patch-tran__variables.h
@@ -0,0 +1,10 @@
+--- tran_variables.h.orig 2018-08-29 05:50:14 UTC
++++ tran_variables.h
+@@ -46,7 +46,6 @@ double TRAN_Poisson_Gpara_Scaling;
+ double ScaleSize_e[2];
+ int SpinP_switch_e[2], atomnum_e[2], SpeciesNum_e[2], Max_FSNAN_e[2];
+ int TCpyCell_e[2], Matomnum_e[2], MatomnumF_e[2], MatomnumS_e[2];
+-int Latomnum,Ratomnum,Catomnum;
+ int *WhatSpecies_e[2];
+ int *Spe_Total_CNO_e[2];
+ int *Spe_Total_NO_e[2];
diff --git a/science/openmx/pkg-descr b/science/openmx/pkg-descr
new file mode 100644
index 000000000000..edb2f2d3343f
--- /dev/null
+++ b/science/openmx/pkg-descr
@@ -0,0 +1,24 @@
+OpenMX (Open source package for Material eXplorer) is a software package for
+nano-scale material simulations based on density functional theories (DFT),
+norm-conserving pseudopotentials, and pseudo-atomic localized basis functions.
+The methods and algorithms used in OpenMX and their implementation are carefully
+designed for the realization of large-scale ab initio electronic structure
+calculations on parallel computers based on the MPI or MPI/OpenMP hybrid
+parallelism. The efficient implementation of DFT enables us to investigate
+electronic, magnetic, and geometrical structures of a wide variety of materials
+such as biological molecules, carbon-based materials, magnetic materials, and
+nanoscale conductors. Systems consisting of 1000 atoms can be treated using the
+conventional diagonalization method if several hundreds cores on a parallel
+computer are used. Even ab initio electronic structure calculations for systems
+consisting of more than 10000 atoms are possible with the O(N) method
+implemented in OpenMX if several thousands cores on a parallel computer are
+available. Since optimized pseudopotentials and basis functions, which are well
+tested, are provided for many elements, users may be able to quickly start own
+calculations without preparing those data by themselves. Considerable
+functionalities have been implemented for calculations of physical properties
+such as magnetic, dielectric, and electric transport properties. Thus, we expect
+that OpenMX can be a useful and powerful theoretical tool for nano-scale
+material sciences, leading to better and deeper understanding of complicated and
+useful materials based on quantum mechanics.
+
+WWW: http://www.openmx-square.org/
diff --git a/science/py-PyFR/Makefile b/science/py-PyFR/Makefile
new file mode 100644
index 000000000000..f82d0d349db1
--- /dev/null
+++ b/science/py-PyFR/Makefile
@@ -0,0 +1,46 @@
+# $FreeBSD$
+
+PORTNAME= PyFR
+DISTVERSION= 1.8.0
+PORTREVISION= 5
+CATEGORIES= science python
+MASTER_SITES= http://www.pyfr.org/download/
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= yuri@FreeBSD.org
+COMMENT= Framework for solving advection-diffusion type problems
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}appdirs>=1.4.0:devel/py-appdirs@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}gimmik>=2.0:math/py-gimmik@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}h5py>=2.6:science/py-h5py@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}mako>=1.0.0:textproc/py-mako@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}mpi4py>=2.0:net/py-mpi4py@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}pytools>=2016.2.1:devel/py-pytools@${PY_FLAVOR} \
+ ${NUMPY}
+
+USES= python:3.3+ shebangfix zip
+SHEBANG_FILES= setup.py pyfr/__main__.py
+USE_PYTHON= distutils concurrent autoplist
+NO_ARCH= yes
+
+OPTIONS_MULTI= PARALLEL
+OPTIONS_MULTI_PARALLEL= OPENCL OPENMP # CUDA isn't supported on FreeBSD
+OPTIONS_DEFAULT= ${OPTIONS_MULTI_PARALLEL}
+PARALLEL_DESC= Parallelization backends to install
+
+OPENCL_RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}pyopencl>0:devel/py-pyopencl@${PY_FLAVOR} \
+ clblas>0:math/clblas
+OPENMP_RUN_DEPENDS= openmp>0:devel/openmp \
+ libxsmm>0:math/libxsmm
+
+pre-build: # patch in pre-build to make the patch less error-prone (it has %%LOCALBASE%%)
+ @${REINPLACE_CMD} 's|%%LOCALBASE%%|${LOCALBASE}|' ${WRKSRC}/pyfr/backends/openmp/compiler.py
+
+post-install: # workaround: https://groups.google.com/forum/#!topic/pyfrmailinglist/RNi_LcizGBo
+ @${RM} ${STAGEDIR}${PREFIX}/__main__.py
+ @${REINPLACE_CMD} 's|^${PREFIX}/__main__\.py||' ${_PYTHONPKGLIST}
+
+.include <bsd.port.mk>
diff --git a/science/py-PyFR/distinfo b/science/py-PyFR/distinfo
new file mode 100644
index 000000000000..98242d6a65e7
--- /dev/null
+++ b/science/py-PyFR/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1539760102
+SHA256 (PyFR-1.8.0.zip) = 6b2b71886cea1bade16b3c8cd5bc681b2a9a22b7388a6aa4e69c934be69f3c23
+SIZE (PyFR-1.8.0.zip) = 829366
diff --git a/science/py-PyFR/files/patch-pyfr_backends_openmp_compiler.py b/science/py-PyFR/files/patch-pyfr_backends_openmp_compiler.py
new file mode 100644
index 000000000000..f77a4b146f77
--- /dev/null
+++ b/science/py-PyFR/files/patch-pyfr_backends_openmp_compiler.py
@@ -0,0 +1,11 @@
+--- pyfr/backends/openmp/compiler.py.orig 2018-03-19 21:34:24 UTC
++++ pyfr/backends/openmp/compiler.py
+@@ -76,6 +76,8 @@ class SourceModule(object):
+ '-Ofast', # Optimise, incl. -ffast-math
+ '-march=native', # Use CPU-specific instructions
+ '-fopenmp', # Enable OpenMP support
++ '-I%%LOCALBASE%%/include', # Add the include directory
++ '-L%%LOCALBASE%%/lib', # Add the library directory
+ '-fPIC', # Generate position-independent code
+ '-o', libname, srcname, # Library and source file names
+ '-lm' # Link against libm
diff --git a/science/py-PyFR/pkg-descr b/science/py-PyFR/pkg-descr
new file mode 100644
index 000000000000..e851ff3eee74
--- /dev/null
+++ b/science/py-PyFR/pkg-descr
@@ -0,0 +1,20 @@
+PyFR is an open-source Python based framework for solving advection-diffusion
+type problems on streaming architectures using the Flux Reconstruction approach
+of Huynh. The framework is designed to solve a range of governing systems on
+mixed unstructured grids containing various element types. It is also designed
+to target a range of hardware platforms via use of an in-built domain specific
+language derived from the Mako templating engine. The current release has the
+following capabilities:
+* Governing Equations - Euler, Navier Stokes
+* Dimensionality - 2D, 3D
+* Element Types - Triangles, Quadrilaterals, Hexahedra, Prisms, Tetrahedra,
+ Pyramids
+* Platforms - CPU Clusters, Nvidia GPU Clusters, AMD GPU Clusters, Intel Xeon
+ Phi Clusters
+* Spatial Discretisation - High-Order Flux Reconstruction
+* Temporal Discretisation - Explicit and Implicit (via Dual Time-Stepping)
+* Precision - Single, Double
+* Mesh Files Imported - Gmsh (.msh), CGNS (.cgns)
+* Solution Files Exported - Unstructured VTK (.vtu, .pvtu)
+
+WWW: http://www.pyfr.org/
diff --git a/science/py-phono3py/Makefile b/science/py-phono3py/Makefile
new file mode 100644
index 000000000000..9b776a9e42a3
--- /dev/null
+++ b/science/py-phono3py/Makefile
@@ -0,0 +1,33 @@
+# $FreeBSD$
+
+PORTNAME= phono3py
+DISTVERSION= 1.13.3.27
+PORTREVISION= 4
+CATEGORIES= science python
+MASTER_SITES= CHEESESHOP
+PKGNAMEPREFIX= ${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER= yuri@FreeBSD.org
+COMMENT= Software to calculate phonon-phonon interaction and related properties
+
+LICENSE= BSD3CLAUSE
+LICENSE_FILE= ${WRKSRC}/LICENSE
+
+BUILD_DEPENDS= ${PYNUMPY} \
+ ${PYTHON_PKGNAMEPREFIX}h5py>0:science/py-h5py@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}matplotlib>0:math/py-matplotlib@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}phonopy>=1.13.2:science/py-phonopy@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}yaml>0:devel/py-yaml@${PY_FLAVOR} \
+ ${LOCALBASE}/include/lapacke.h:math/lapacke \
+ openmp>0:devel/openmp
+RUN_DEPENDS= ${PYNUMPY} \
+ ${PYTHON_PKGNAMEPREFIX}h5py>0:science/py-h5py@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}matplotlib>0:math/py-matplotlib@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}phonopy>=1.13.2:science/py-phonopy@${PY_FLAVOR} \
+ ${PYTHON_PKGNAMEPREFIX}yaml>0:devel/py-yaml@${PY_FLAVOR} \
+ openmp>0:devel/openmp
+
+USES= blaslapack:openblas localbase python
+USE_PYTHON= distutils cython autoplist
+
+.include <bsd.port.mk>
diff --git a/science/py-phono3py/distinfo b/science/py-phono3py/distinfo
new file mode 100644
index 000000000000..af68f5871daf
--- /dev/null
+++ b/science/py-phono3py/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1536901529
+SHA256 (phono3py-1.13.3.27.tar.gz) = f03cec828b135365bd945cd846dd60b181dc0145792cc07f186b99c9c411a8e4
+SIZE (phono3py-1.13.3.27.tar.gz) = 5477899
diff --git a/science/py-phono3py/pkg-descr b/science/py-phono3py/pkg-descr
new file mode 100644
index 000000000000..2e10c7654608
--- /dev/null
+++ b/science/py-phono3py/pkg-descr
@@ -0,0 +1,9 @@
+This software calculates phonon-phonon interaction and related properties using
+the supercell approach. For example, the following physical properties are
+obtained:
+* Lattice thermal conductivity (RTA and direct solution of LBTE)
+* Phonon lifetime/linewidth
+* Imaginary part of self energy
+* Joint density of states (JDOS) and weighted-JDOS
+
+WWW: https://atztogo.github.io/phono3py/