diff --git a/calculix/.SRCINFO b/calculix/.SRCINFO new file mode 100755 index 0000000..064cd94 --- /dev/null +++ b/calculix/.SRCINFO @@ -0,0 +1,39 @@ +pkgbase = calculix + pkgdesc = CalculiX: 3D finite element solver and post-processor (executables) + pkgver = 2.17 + pkgrel = 3 + url = http://www.calculix.de/ + arch = i686 + arch = x86_64 + license = GPL2 + checkdepends = perl + makedepends = gcc-fortran + makedepends = perl + depends = arpack + depends = spooles + depends = libsnl-svn + depends = blas + depends = mesa + depends = glu + depends = libxmu + depends = libxi + optdepends = calculix-doc: documentation and examples + options = !makeflags + options = !buildflags + source = http://www.dhondt.de/ccx_2.17.src.tar.bz2 + source = http://www.dhondt.de/ccx_2.17.test.tar.bz2 + source = http://www.dhondt.de/ccx_2.17.fluidtest.tar.bz2 + source = http://www.dhondt.de/ccx_2.17.fluidtestfem.tar.bz2 + source = http://www.dhondt.de/ccx_2.17.structest.tar.bz2 + source = http://www.dhondt.de/cgx_2.17.all.tar.bz2 + source = calculix_2.17_archlinux.patch + sha256sums = ca708ad4aa729d9f84a9faba343c1bcc0b7cc84ed372616ebb55c8e6fa8f6e50 + sha256sums = 798f94e536197bb10a74bae096f2a29a5111239020e7d10f93e1ad3d90c370cf + sha256sums = 5126de5f8543cb4f4c3355612d4df41541b278c3e505e7f2191fd90190eac4f7 + sha256sums = dab62ed58b1e5c1035360b59942593bf952af151fb9c9d32701cc028ee1683e3 + sha256sums = e7cd0e71a9764955bf5096c849e8bb818d35040e8c4909b2168ce4d29b41d8be + sha256sums = 01b32864714d7ed7c760567e3a04077f3e41fe171d1804b305c96c344b0e4d2e + sha256sums = d6bbe96457d6a773958a9eb5a783ae630c8c2ea38ebaa0c6a799f3384e85d84f + +pkgname = calculix + diff --git a/calculix/.gitrepo b/calculix/.gitrepo new file mode 100644 index 0000000..625d334 --- /dev/null +++ b/calculix/.gitrepo @@ -0,0 +1,12 @@ +; DO NOT EDIT (unless you know what you are doing) +; +; This subdirectory is a git "subrepo", and this file is maintained by the +; git-subrepo command. See https://github.com/git-commands/git-subrepo#readme +; +[subrepo] + remote = https://aur.archlinux.org/calculix + branch = master + commit = 09c74d4138b8a266e51bbd47d09fa291766e3486 + parent = c72e831df9ba220118b12dd0537397a778cd876a + method = merge + cmdver = 0.4.1 diff --git a/calculix/PKGBUILD b/calculix/PKGBUILD new file mode 100755 index 0000000..f1efd31 --- /dev/null +++ b/calculix/PKGBUILD @@ -0,0 +1,161 @@ +# Maintainer: Maurizio D'Addona +# Contributor: Sven Niese +# Contributor: Daniel Murphy + +# NOTE: the option "!makeflag" is needed because the compilation +# may fail if make uses more than one job. + +pkgname=calculix +pkgver=2.17 +pkgrel=3 +pkgdesc="CalculiX: 3D finite element solver and post-processor (executables)" +arch=('i686' 'x86_64') +options=(!makeflags !buildflags) +url="http://www.calculix.de/" +license=('GPL2') +depends=('arpack' 'spooles' 'libsnl-svn' 'blas' 'mesa' 'glu' 'libxmu' 'libxi') +optdepends=('calculix-doc: documentation and examples') +makedepends=('gcc-fortran' 'perl') +checkdepends=('perl') + +source=("http://www.dhondt.de/ccx_${pkgver}.src.tar.bz2" + "http://www.dhondt.de/ccx_${pkgver}.test.tar.bz2" + "http://www.dhondt.de/ccx_${pkgver}.fluidtest.tar.bz2" + "http://www.dhondt.de/ccx_${pkgver}.fluidtestfem.tar.bz2" + "http://www.dhondt.de/ccx_${pkgver}.structest.tar.bz2" + "http://www.dhondt.de/cgx_${pkgver}.all.tar.bz2" + "calculix_${pkgver}_archlinux.patch") + +sha256sums=('ca708ad4aa729d9f84a9faba343c1bcc0b7cc84ed372616ebb55c8e6fa8f6e50' + '798f94e536197bb10a74bae096f2a29a5111239020e7d10f93e1ad3d90c370cf' + '5126de5f8543cb4f4c3355612d4df41541b278c3e505e7f2191fd90190eac4f7' + 'dab62ed58b1e5c1035360b59942593bf952af151fb9c9d32701cc028ee1683e3' + 'e7cd0e71a9764955bf5096c849e8bb818d35040e8c4909b2168ce4d29b41d8be' + '01b32864714d7ed7c760567e3a04077f3e41fe171d1804b305c96c344b0e4d2e' + 'd6bbe96457d6a773958a9eb5a783ae630c8c2ea38ebaa0c6a799f3384e85d84f') + +prepare() +{ + cd "${srcdir}" + + msg "Patching makefiles..." + rm -rf CalculiX/libSNL + patch -p0 -f -l -s -i calculix_${pkgver}_archlinux.patch + msg2 "Done" +} + +build() +{ + msg "Building..." + + msg2 "Building solver..." + cd "${srcdir}/CalculiX/ccx_${pkgver}/src" + make CFLAGS="${CFLAGS} -Wall -O2 -fopenmp -I /usr/include/spooles -DARCH=\"Linux\" -DSPOOLES -DARPACK -DMATRIXSTORAGE -DNETWORKOUT -DUSE_MT=1" FFLAGS='-Wall -O2 -fopenmp -fpic -fallow-argument-mismatch' LIBS='-lpthread -lm -lc -lspooles -larpack -lblas -llapack -lgomp' + + msg2 "Building gui..." + cd "${srcdir}/CalculiX/cgx_${pkgver}/src" + make CFLAGS='-O2 -Wall -Wno-narrowing -I./ -I/usr/include/libSNL -I../../glut-3.5/src' LFLAGS='-lGL -lGLU -lX11 -lXi -lXmu -lXext -lXt -lSM -lICE -lSNL -lm -lpthread -lrt' + + msg2 "Build complete" +} + +check() +{ + tests=('beamp' 'ball' 'pipe' 'pipe2' 'planestress' + 'gap' 'gap2' 'capacitor' 'carbonseal' 'beamptied1' + 'beamp1rotate' 'beamp2' 'beamp2rotate' 'beamf' 'beamhf' + 'cou' 'furnace' 'gaspipe1' 'gaspipe1-oil' 'gaspipe2' + 'gaspipe3' 'gaspipe4' 'gaspipe5' 'gaspipe6' 'gaspipe7' + 'gaspipe8' 'gaspipe-cfd-pressure' 'gaspipe8-cfd-pressure' + 'gaspipe8-cfd-massflow' 'gaspipe8-cfd-pressure' + 'gaspipe8-cfd-pressure-split' 'green1' 'green2' 'green3' + 'green4' 'hinge' 'hueeber1' 'hueeber2' 'induction' 'induction2' + 'inistrain' 'largerot1' 'linearnet' 'mass1' 'mass2' 'mass3' + 'massflow_percent_ccx' 'membrane1' 'metalforming' 'modelchel' + 'multistage' 'networkmpc' 'oneel' 'pendel' 'resstress1' + 'restrictor' 'segment' 'sensitivity_I' 'shell1' + 'shellbeam' 'shellf' 'simplebeam' 'slant' 'spring1' 'spring2' + 'small_pressure_gradient' 'square' 'substructure' 'swing' + 'thermomech' 'transition' 'truss' 'vortex1' 'wire') + + msg "Testing solver..." + cd ${srcdir}/CalculiX/ccx_${pkgver}/test + + error_status=0 + start_time="$(date -u +%s)" + for test_name in "${tests[@]}" ; do + ref_file=${test_name}.dat.ref + dat_file=${test_name}.dat + frd_file=${test_name}.frd + log_file=${test_name}.log + + msg2 "testing ${test_name}" + rm -f ${dat_file} + rm -f ${frd_file} + + # Testing on maximum 4 cores + OMP_NUM_THREADS=4 ../src/ccx_${pkgver} ${test_name} &> ${log_file} ||\ + warning "check $(pwd)/${log_file}" + + if [ ! -f ${dat_file} ]; then + warning "${dat_file} does not exist" + error_status=1 + fi + + sum1="$(wc -l ${dat_file})" + sum2="$(wc -l ${ref_file})" + if [ ${sum1%* *} != ${sum2%* *} ]; then + warning "The data file generated by ccx is not valid" + error_status=1 + fi + + if grep "NaN" ${dat_file} ; then + warning "${dat_file} contains NaNs!" + error_status=1 + fi + + if ! ./datcheck.pl ${test_name} ; then + warning "Result is inconsistent with reference data!" + error_status=1 + fi + done + + cd ${srcdir}/CalculiX/ccx_${pkgver}/fluidtest + for test_name in ./*.inp ; do + msg2 "testing ${test_name}" + OMP_NUM_THREADS=4 ../src/ccx_${pkgver} ${test_name} &> ${log_file} ||\ + error_status=1 warning "check $(pwd)/${log_file}" + done + + cd ${srcdir}/CalculiX/ccx_${pkgver}/fluidtestfem + for test_name in ./*.inp ; do + msg2 "testing ${test_name}" + OMP_NUM_THREADS=4 ../src/ccx_${pkgver} ${test_name} &> ${log_file} ||\ + error_status=1 warning "check $(pwd)/${log_file}" + done + + cd ${srcdir}/CalculiX/ccx_${pkgver}/structest + for test_name in ./*.inp ; do + msg2 "testing ${test_name}" + OMP_NUM_THREADS=4 ../src/ccx_${pkgver} ${test_name} &> ${log_file} ||\ + error_status=1 warning "check $(pwd)/${log_file}" + done + end_time="$(date -u +%s)" + elapsed="$(($end_time-$start_time))" + + msg "Total of $elapsed seconds elapsed for tesing" + + return $error_status +} + +package() +{ + msg "Copying files" + + install -d ${pkgdir}/usr/bin + + install -Dm755 ${srcdir}/CalculiX/ccx_${pkgver}/src/ccx_${pkgver} ${pkgdir}/usr/bin/ccx + install -Dm755 ${srcdir}/CalculiX/cgx_${pkgver}/src/cgx ${pkgdir}/usr/bin/cgx + + msg2 "Done" +} diff --git a/calculix/calculix_2.17_archlinux.patch b/calculix/calculix_2.17_archlinux.patch new file mode 100755 index 0000000..e1632a3 --- /dev/null +++ b/calculix/calculix_2.17_archlinux.patch @@ -0,0 +1,34 @@ +diff -ur CalculiX_orig/cgx_2.17/src/Makefile CalculiX/cgx_2.16/src/Makefile +--- CalculiX_orig/cgx_2.17/src/Makefile ++++ CalculiX/cgx_2.17/src/Makefile +@@ -59,1 +53,1 @@ +- ../../libSNL/src/*.cpp ++# ../../libSNL/src/*.cpp +diff -ur CalculiX_orig/cgx_2.17/src/cgx.h CalculiX/cgx_2.17/src/cgx.h +--- CalculiX_orig/cgx_2.17/src/cgx.h ++++ CalculiX/cgx_2.17/src/cgx.h +@@ -85,12 +85,12 @@ + #elif defined AFLIB +- #define HELPFILE {"/usr/local/CalculiX/cgx_2.17/doc/cgx/cgx.html",\ +- "/usr/local/CalculiX/ccx_2.17/doc/ccx/ccx.html",\ +- "/usr/local/CalculiX/cgx_2.16/doc/aflib/aflib.pdf"} ++ #define HELPFILE {"/usr/share/doc/cgx/cgx.html",\ ++ "/usr/share/doc/doc/ccx/ccx.html",\ ++ "/usr/share/doc/doc/aflib/aflib.pdf"} + /* default tet mesher, 0:Netgen ng_vol, 1:tetgen */ + #define TETMESHER 1 + #else +- #define HELPFILE {"/usr/local/CalculiX/cgx_2.17/doc/cgx/cgx.html",\ +- "/usr/local/CalculiX/ccx_2.17/doc/ccx/ccx.html"} ++ #define HELPFILE {"/usr/share/doc/cgx/cgx.html",\ ++ "/usr/share/doc/ccx/ccx.html"} + /* default tet mesher, 0:Netgen ng_vol, 1:tetgen */ + #define TETMESHER 1 + #endif +diff -ur CalculiX_orig/cgx_2.17/src/uselibSNL.h CalculiX/cgx_2.17/src/uselibSNL.h +--- CalculiX_orig/cgx_2.17/src/uselibSNL.h ++++ CalculiX/cgx_2.17/src/uselibSNL.h +@@ -8,1 +8,3 @@ + #include ++#undef max ++#undef min