Index: trunk/INSTALL =================================================================== --- trunk/INSTALL (revision 8287) +++ trunk/INSTALL (revision 8288) @@ -1,380 +1,381 @@ #------------------------------------------------------------- # Installing WHIZARD #------------------------------------------------------------- Although it is possible to build the WHIZARD libraries from this directory, we recommend that you create a separate build directory and work from there. #------------------------------------------------------------- # Installing from a source code tar ball #------------------------------------------------------------- WHIZARD is Free Software and the sources can be obtained from the HepForge repository: https://whizard.hepforge.org The command gzip -cd whizard-2.X.X.tgz | tar xf - will unpack the sources in a subdirectory whizard-2.X.X, where X.X is the current version (and sub-version) number. Prerequisites are: - Make - Objective Caml compiler (version 4.02.3 or higher) - Fortran 2003/2008 compiler - C/C++ (for PYTHIA8/FastJet/HepMC/LHAPDF/LCIO interfaces) The Objective Caml (OCaml) compiler is available from http://pauillac.inria.fr/ocaml/ #------------------------------------------------------------- # Specific problems with some FORTRAN compilers #------------------------------------------------------------- Note for NAG users: For several versions of NAG, the standard debugging flag -g is referencing for historical reasons to the upsf90 debugger which is no longer supported. If you want to use debugging information set the -g90 flag referring to the dbx90 or gdb debuggers. #------------------------------------------------------------- # External libraries and programs #------------------------------------------------------------- The following external libraries and programs can be linked to WHIZARD: -- PYTHIA8 for hadronization and showering. It is available from http://home.thep.lu.se/~torbjorn/Pythia.html -- LHAPDF for proton, pion and photon structure functions. You can get it from: https://lhapdf.hepforge.org -- HOPPET for perturbative evolution and matching of PDFs. You can get it from: https://hoppet.hepforge.org -- FastJet for jet clustering. You can get it from: http://fastjet.fr/ -- GoSAM/Ninja/FORM/Qgraf for NLO matrix elements. You can get GoSAM/Ninja from: https://gosam.hepforge.org/ You can get Qgraf from: http://cfif.ist.utl.pt/~paulo/qgraf.html You can get FORM from: http://www.nikhef.nl/~form/ -- OpenLoops for NLO matrix elements. Available from: https://openloops.hepforge.org/ -- Recola for NLO matrix elements. Available from: https://recola.hepforge.org/ -- LoopTools for one-loop functions (for the top threshold) You can get it from: http://www.feynarts.de/looptools/ -- HepMC for the corresponding event file standard. Available from: http://lcgapp.cern.ch/project/simu/HepMC -- LCIO for the corresponding file standard. Available from: http://lcio.desy.de/ -- Other external programs like PYTHIA and HERWIG for parton showering and hadronization can be included in a standard way by passing LHEF or HepMC event files to them. -- ROOT and DELPHES can be interfaced via event file and ASCII histogram file output -- An interface to SARAH exists and is included in the SARAH program: https://sarah.hepforge.org/ -- An interface to FeynRules exists and is included in the FeynRules program: http://feynrules.irmp.ucl.ac.be -- Parallelisation with MPI requires a at least MPI-3 capable MPI library. - You can get OpenMPI from https://www.open-mpi.org/. + You can get OpenMPI from https://www.open-mpi.org/, MPICH from + https://www.open-mpi.org and Intel MPI from https://software.intel.com. #------------------------------------------------------------- # platform specific issues #------------------------------------------------------------- MAC OS X: WHIZARD has been tested and partially developed under MAC OS X Darwin 9.6.X-9.8.X (Leopard) and Darwin 10.0.X-10.6.X (Snow Leopard), Darwin 10.7.X (Lion), Darwin 10.8.X (Mountain Lion), Darwin 10.9.X (Maverick), Darwin 10.10.X (Yosemite), Darwin 10.11.X (El Capitan) as well as Darwin 10.12.X (Sierra) and 10.13.X (High Sierra). The single pass linker here forces to explicitly include static C++ libraries when externally linking PYTHIA8, HepMC, FastJet, LHAPDF or LCIO. The necessary flags are automatically taken care of by the configure script. Darwin >= 10.11: The security measures of the new Darwin systems do not allow e.g. environment variables passed to subprocesses. This does not change anything for the installed WHIZARD, but the testsuite (make check) will not work probably even after make install has been executed. make distcheck will not work on Darwin >= 10.11. There is also the option to disable the System Integrity Protocol (SIP) of El Capitan by booting in Recovery Mode (use Command R while booting), open a terminal and type 'csrutil disable'. However, we do not recommend to do so unless you know exactly what you are doing. #------------------------------------------------------------- # installing from a source code tar ball #------------------------------------------------------------- Unwind the source code tar ball in some relevant directory. Autoconf and automake will already have been run. Determine where the files will be installed. We recommend that you create a separate build directory that is NOT in the source code directory tree. cd /configure --prefix= (Note that files will be installed under /usr/local if you do not specify a prefix.) make (Build temporary copies of libraries and executables.) make check [optional] (Perform sanity checks and standard tests) make install (Copy libraries, headers, executables, etc. to relevant subdirectories under .) #------------------------------------------------------------- # configure options #------------------------------------------------------------- A variety of options can be given to configure. Below is a list of the options that you are likely to find most useful. Defaults for the options are specified in brackets. Configuration: -h, --help display this help and exit --help=short display options specific to this package --help=recursive display the short help of all the included packages -V, --version display version information and exit -q, --quiet, --silent do not print `checking...' messages --cache-file=FILE cache test results in FILE [disabled] -C, --config-cache alias for `--cache-file=config.cache' -n, --no-create do not create output files --srcdir=DIR find the sources in DIR [configure dir or `..'] Installation directories: --prefix=PREFIX install architecture-independent files in PREFIX [/usr/local] --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX [PREFIX] By default, `make install' will install all the files in `/usr/local/bin', `/usr/local/lib' etc. You can specify an installation prefix other than `/usr/local' using `--prefix', for instance `--prefix=$HOME'. For better control, use the options below. Fine tuning of the installation directories: --bindir=DIR user executables [EPREFIX/bin] --sbindir=DIR system admin executables [EPREFIX/sbin] --libexecdir=DIR program executables [EPREFIX/libexec] --sysconfdir=DIR read-only single-machine data [PREFIX/etc] --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] --localstatedir=DIR modifiable single-machine data [PREFIX/var] --libdir=DIR object code libraries [EPREFIX/lib] --includedir=DIR C header files [PREFIX/include] --oldincludedir=DIR C header files for non-gcc [/usr/include] --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] --datadir=DIR read-only architecture-independent data [DATAROOTDIR] --infodir=DIR info documentation [DATAROOTDIR/info] --localedir=DIR locale-dependent data [DATAROOTDIR/locale] --mandir=DIR man documentation [DATAROOTDIR/man] --docdir=DIR documentation root [DATAROOTDIR/doc/whizard] --htmldir=DIR html documentation [DOCDIR] --dvidir=DIR dvi documentation [DOCDIR] --pdfdir=DIR pdf documentation [DOCDIR] --psdir=DIR ps documentation [DOCDIR] Program names: --program-prefix=PREFIX prepend PREFIX to installed program names --program-suffix=SUFFIX append SUFFIX to installed program names --program-transform-name=PROGRAM run sed PROGRAM on installed program names System types: --build=BUILD configure for building on BUILD [guessed] --host=HOST cross-compile to build programs to run on HOST [BUILD] Optional Features: --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] --enable-silent-rules less verbose build output (undo: "make V=1") --disable-silent-rules verbose build output (undo: "make V=0") --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] build static libraries [default=yes] --enable-fast-install[=PKGS] optimize for fast installation [default=yes] --enable-dependency-tracking do not reject slow dependency extractors --disable-dependency-tracking speeds up one-time build --disable-libtool-lock avoid locking (might break parallel builds) --enable-distribution build the distribution incl. all docu (developers only) [[no]] --enable-dl enable libdl for creating/loading process libraries on-the-fly [[yes]] --disable-noweb disable the noweb programs, even if available [[no]] --disable-noweb-force force to disable the noweb programs, even if available, which is for distribution testing purposes only. The default never has any effect. [[no]] --enable-fc-openmp use OpenMP for the Fortran code [[no]] --enable-fc-debug enable debugging features for the Fortran code [[no]] --disable-openmp do not use OpenMP --enable-fc-profiling use profiling for the Fortran code [[no]] --enable-fc-impure compile Omega libraries impure [[no]] - --enable-fc-mpi use OpenMPI/MPICH for the Fortran code [[no]] + --enable-fc-mpi use OpenMPI/MPICH/Intel for the Fortran code [[no]] --disable-ocaml disable the OCaml parts, even if OCaml available [[no]] --enable-default-UFO-dir=directory Read precomputed model tables from this directory, which will be populated by an administrator at install time [default=$datadir/UFO, enabled]. --enable-lhapdf enable LHAPDF for structure functions [[yes]] --enable-hepmc enable HepMC for handling event data [[yes]] --enable-lcio enable LCIO for binary event files [[yes]] --enable-pythia6 enable internal PYTHIA6 for hadronization [[yes]] --enable-pythia8 enable PYTHIA8 for shower and hadronization [[no]] --enable-hoppet enable HOPPET for b quark pdf matching [[no]] --enable-fastjet enable FastJet for handling event data [[no]] --enable-gosam (experimental) enable GoSAM for external NLO matrix elements [[no]] --enable-openloops (experimental) enable OpenLoops for NLO matrix elements [[no]] --enable-recola (experimental) enable Recola for NLO matrix elements [[no]] --enable-looptools enable LoopTools loop integral library [[no]] --enable-optimization-for-parameter-files enable (useless) optimization for parameter file [[no]] Optional Packages: --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) --with-pic try to use only PIC/non-PIC objects [default=use both] --with-aix-soname=aix|svr4|both shared library versioning (aka "SONAME") variant to provide on AIX, [default=aix]. --with-gnu-ld assume the C compiler uses GNU ld [default=no] --with-sysroot=DIR Search for dependent libraries within DIR (or the compiler's sysroot if not specified). --with-precision=single|double|quadruple|extended|real32|real64|real128 request a floating point precision other than double precision. Note that only single and double are guaranteed to be provided by all Fortran compilers. - --with-mpi-lib=mpich|openmpi request an external MPI library. + --with-mpi-lib=mpich|openmpi|intel request an external MPI library. --with-hepmc=dir assume the given directory for HepMC --with-pythia8=dir assume the given directory for PYTHIA8 --with-fastjet=dir assume the given directory for FastJet --with-gosam=dir assume the given directory for GoSam --with-golem=dir assume the given directory for Golem --with-form=dir assume the given directory for Form --with-qgraf=dir assume the given directory for QGRAF --with-ninja=dir assume the given directory for Ninja --with-samurai=dir assume the given directory for Samurai --with-openloops=dir assume the given directory for OpenLoops --with-recola=dir assume the given directory for Recola Some influential environment variables: CC C compiler command CFLAGS C compiler flags LDFLAGS linker flags, e.g. -L if you have libraries in a nonstandard directory LIBS libraries to pass to the linker, e.g. -l CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I if you have headers in a nonstandard directory LT_SYS_LIBRARY_PATH User-defined run-time library search path. CPP C preprocessor FC Fortran compiler command FCFLAGS Fortran compiler flags F77 Fortran 77 compiler command FFLAGS Fortran 77 compiler flags CXX C++ compiler command CXXFLAGS C++ compiler flags CXXCPP C++ preprocessor #------------------------------------------------------------- # building from svn (developer version) #------------------------------------------------------------- You will need current versions of automake and autoconf. On some machines, you will need to build them. See building autotools below. Furthermore, you need to have noweb to be installed for the developer version from the svn repository. To build the documentations, LaTeX, MetaPost and OcamlWeb are also necessary tools. Although the first two are quite standard, you can get them from http://www.tug.org/texlive/. Follow the instructions there. OcamlWeb is available from http://www.lri.fr/~filliatr/ocamlweb/. For building the HTML version of the manual, you also need HeVeA, which is available from http://hevea.inria.fr. On some Unix systems the RPC headers needed for the legacy StdHEP event format support are now provided via the TIRPC library. To test for this library, autoreconf from autotools makes use of pkg-config which needs to be installed for the developer version. The check out can be done in that way: svn co http://whizard.hepforge.org/svn/trunk cd ./build_master.sh autoreconf Now continue with directions as if you unpacked a source code tarball. #------------------------------------------------------------- # building autotools #------------------------------------------------------------- If you do not have at least autoconf 2.65 and automake 1.12,2 you will need to build autoconf and automake. On some platforms, you may also need to build m4 and texinfo. Download the relevant tarballs from gnu.org (http://www.gnu.org/software/autoconf/, http://www.gnu.org/software/automake/). Untar them in a common source code tree. Decide whether you want to install them in /usr/local or your own install directory. If you use your own install directory, use --prefix= with configure. For each autotool package: /configure [--prefix=] make make install Make sure that /bin is before /usr/bin in your path. #------------------------------------------------------------- # getting and installing noweb #------------------------------------------------------------- Noweb can be accessed from here: http://www.cs.tufts.edu/~nr/noweb/ Untar the source code. Go to the src/ subdirectory of the unpacked noweb source code. Follow the instructions from the INSTALL file. You have to specify binary, install and TeX paths explicitly, unfortunately. After a make install you probably have to copy the binaries into a directory which is in your executable path. #------------------------------------------------------------- Index: trunk/m4/stdcpp.m4 =================================================================== --- trunk/m4/stdcpp.m4 (revision 8287) +++ trunk/m4/stdcpp.m4 (revision 8288) @@ -1,184 +1,189 @@ dnl stdcpp.m4 -- take care of the C++ standard library dnl if it is required dnl AC_DEFUN([WO_PROG_STDCPP], [dnl if test "$wo_require_stdcpp" = "yes"; then AC_REQUIRE([AC_PROG_CXX]) ### Checking for static C++ libraries for the static version ### This is only necessary for MAC OS X and BSD-like OS case $host in *-darwin*) case "$XCODE_VERSION" in 1.*|2.*|3.*) wo_ldflags_stdcpp="-lstdc++-static" ;; *) wo_ldflags_stdcpp="-lstdc++" ;; esac ;; *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) wo_ldflags_stdcpp="-lstdc++-static" ;; *) wo_ldflags_stdcpp="-lstdc++" ;; esac AC_MSG_CHECKING([for LDFLAGS_STATIC: host system is $host_os: static flag]) AC_MSG_RESULT([$wo_ldflags_stdcpp]) else AC_MSG_CHECKING([for LDFLAGS_STATIC:]) AC_MSG_RESULT([(not needed)]) unset wo_ldflags_stdcpp fi LDFLAGS_STATIC="$wo_ldflags_stdcpp" AC_SUBST([LDFLAGS_STATIC]) ]) ##### AC_DEFUN([_AC_PROG_CXX_V_OUTPUT], [AC_REQUIRE([AC_PROG_CXX])dnl AC_LANG_PUSH(C++)dnl AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) ac_save_CXXFLAGS=$CXXFLAGS CXXFLAGS="$CXXFLAGS m4_default([$1], [$ac_cv_prog_cxx_v])" (eval echo $as_me:__oline__: \"$ac_link\") >&AS_MESSAGE_LOG_FD ac_cxx_v_output=`eval $ac_link AS_MESSAGE_LOG_FD>&1 2>&1 | grep -v 'Driving:'` echo "$ac_cxx_v_output" >&AS_MESSAGE_LOG_FD CXXFLAGS=$ac_save_CXXFLAGS rm -rf conftest* AC_LANG_POP(C++)dnl # If we are using xlf then replace all the commas with spaces. if echo $ac_cxx_v_output | grep xlfentry >/dev/null 2>&1; then ac_cxx_v_output=`echo $ac_cxx_v_output | sed 's/,/ /g'` fi # On HP/UX there is a line like: "LPATH is: /foo:/bar:/baz" where # /foo, /bar, and /baz are search directories for the Fortran linker. # Here, we change these into -L/foo -L/bar -L/baz (and put it first): ac_cxx_v_output="`echo $ac_cxx_v_output | grep 'LPATH is:' | sed 's,.*LPATH is\(: *[[^ ]]*\).*,\1,;s,: */, -L/,g'` $ac_cxx_v_output" +# The Intel C++ compiler's output is rather verbose, we only need the linker information, located at the end. +if echo $ac_cxx_v_output | grep 'mGLOB_options_string' >/dev/null 2>&1; then + ac_cxx_v_output="`echo $ac_cxx_v_output | sed -n -e 's/.*\( ld \)//p'`" +fi + ])# _AC_PROG_CXX_V_OUTPUT ##### AC_DEFUN([_AC_PROG_CXX_V], [AC_CACHE_CHECK([how to get verbose linking output from $CXX], [ac_cv_prog_cxx_v], [AC_LANG_ASSERT(C++) AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [ac_cv_prog_cxx_v= # Try some options frequently used verbose output for ac_verb in -v -verbose --verbose -V -\#\#\#; do _AC_PROG_CXX_V_OUTPUT($ac_verb) # look for -l* and *.a constructs in the output for ac_arg in $ac_cxx_v_output; do case $ac_arg in [[\\/]]*.a | ?:[[\\/]]*.a | -[[lLRu]]*) ac_cv_prog_cxx_v=$ac_verb break 2 ;; esac done done if test -z "$ac_cv_prog_cxx_v"; then AC_MSG_WARN([cannot determine how to obtain linking information from $CXX]) fi], [AC_MSG_WARN([compilation failed])]) ])])# _AC_PROG_CXX_V ##### AC_DEFUN([AC_CXX_LIBRARY_LDFLAGS], [AC_LANG_PUSH(C++)dnl _AC_PROG_CXX_V AC_CACHE_CHECK([for C++ libraries], ac_cv_cxxlibs, [if test "x$CXXLIBS" != "x"; then ac_cv_cxxlibs="$CXXLIBS" # Let the user override the test. else _AC_PROG_CXX_V_OUTPUT ac_cv_cxxlibs= # Save positional arguments (if any) ac_save_positional="$[@]" set X $ac_cxx_v_output while test $[@%:@] != 1; do shift ac_arg=$[1] case $ac_arg in [[\\/]]*.a | ?:[[\\/]]*.a) _AC_LIST_MEMBER_IF($ac_arg, $ac_cv_cxxlibs, , ac_cv_cxxlibs="$ac_cv_cxxlibs $ac_arg") ;; -bI:*) _AC_LIST_MEMBER_IF($ac_arg, $ac_cv_cxxlibs, , [_AC_LINKER_OPTION([$ac_arg], ac_cv_cxxlibs)]) ;; # Ignore these flags. -lang* | -lcrt0.o | -lc | -lgcc | -libmil | -LANG:=*) ;; -lcrt1.o | -lcrt1.10.[[1-7]].o | -lcrt2.o |-lcrtbegin.o ) ;; -lkernel32) test x"$CYGWIN" != xyes && ac_cv_cxxlibs="$ac_cv_cxxlibs $ac_arg" ;; -[[LRuY]]) # These flags, when seen by themselves, take an argument. # We remove the space between option and argument and re-iterate # unless we find an empty arg or a new option (starting with -) case $[2] in "" | -*);; *) ac_arg="$ac_arg$[2]" shift; shift set X $ac_arg "$[@]" ;; esac ;; -YP,*) for ac_j in `echo $ac_arg | sed -e 's/-YP,/-L/;s/:/ -L/g'`; do _AC_LIST_MEMBER_IF($ac_j, $ac_cv_cxxlibs, , [ac_arg="$ac_arg $ac_j" ac_cv_cxxlibs="$ac_cv_cxxlibs $ac_j"]) done ;; -[[lLR]]*) _AC_LIST_MEMBER_IF($ac_arg, $ac_cv_cxxlibs, , ac_cv_cxxlibs="$ac_cv_cxxlibs $ac_arg") ;; # Ignore everything else. esac done # restore positional arguments set X $ac_save_positional; shift # We only consider "LD_RUN_PATH" on Solaris systems. If this is seen, # then we insist that the "run path" must be an absolute path (i.e. it # must begin with a "/"). case `(uname -sr) 2>/dev/null` in "SunOS 5"*) ac_ld_run_path=`echo $ac_cxx_v_output | sed -n 's,^.*LD_RUN_PATH *= *\(/[[^ ]]*\).*$,-R\1,p'` test "x$ac_ld_run_path" != x && _AC_LINKER_OPTION([$ac_ld_run_path], ac_cv_cxxlibs) ;; esac fi # test "x$CXXLIBS" = "x" ]) CXXLIBS="$ac_cv_cxxlibs" AC_SUBST(CXXLIBS) AC_LANG_POP(C++)dnl ])# AC_CXX_LIBRARY_LDFLAGS Index: trunk/m4/fortran.m4 =================================================================== --- trunk/m4/fortran.m4 (revision 8287) +++ trunk/m4/fortran.m4 (revision 8288) @@ -1,1713 +1,1729 @@ dnl fortran.m4 -- Fortran compiler checks beyond Autoconf built-ins dnl dnl The standard Fortran compiler test is AC_PROG_FC. dnl At the end FC, FCFLAGS and FCFLAGS_f90 are set, if successful. ### Determine vendor and version string. AC_DEFUN([WO_FC_GET_VENDOR_AND_VERSION], [dnl AC_REQUIRE([AC_PROG_FC]) AC_CACHE_CHECK([the compiler ID string], [wo_cv_fc_id_string], [dnl $FC -V >conftest.log 2>&1 $FC -version >>conftest.log 2>&1 $FC --version >>conftest.log 2>&1 wo_fc_grep_GFORTRAN=`$GREP -i 'GNU Fortran' conftest.log | head -1` wo_fc_grep_G95=`$GREP -i 'g95' conftest.log | $GREP -i 'gcc' | head -1` wo_fc_grep_NAG=`$GREP 'NAG' conftest.log | head -1` wo_fc_grep_Intel=`$GREP 'IFORT' conftest.log | head -1` wo_fc_grep_Sun=`$GREP 'Sun' conftest.log | head -1` wo_fc_grep_Lahey=`$GREP 'Lahey' conftest.log | head -1` wo_fc_grep_PGF90=`$GREP 'pgf90' conftest.log | head -1` wo_fc_grep_PGF95=`$GREP 'pgf95' conftest.log | head -1` wo_fc_grep_PGFORTRAN=`$GREP 'pgfortran' conftest.log | head -1` wo_fc_grep_PGHPF=`$GREP 'pghpf' conftest.log | head -1` wo_fc_grep_FLANG=`$GREP 'clang version' conftest.log | head -1` wo_fc_grep_default=`cat conftest.log | head -1` if test -n "$wo_fc_grep_GFORTRAN"; then wo_cv_fc_id_string=$wo_fc_grep_GFORTRAN elif test -n "$wo_fc_grep_G95"; then wo_cv_fc_id_string=$wo_fc_grep_G95 elif test -n "$wo_fc_grep_NAG"; then wo_cv_fc_id_string=$wo_fc_grep_NAG elif test -n "$wo_fc_grep_Intel"; then wo_cv_fc_id_string=$wo_fc_grep_Intel elif test -n "$wo_fc_grep_Sun"; then wo_cv_fc_id_string=$wo_fc_grep_Sun elif test -n "$wo_fc_grep_Lahey"; then wo_cv_fc_id_string=$wo_fc_grep_Lahey elif test -n "$wo_fc_grep_PGF90"; then wo_cv_fc_id_string=$wo_fc_grep_PGF90 elif test -n "$wo_fc_grep_PGF95"; then wo_cv_fc_id_string=$wo_fc_grep_PGF95 elif test -n "$wo_fc_grep_PGFORTRAN"; then wo_cv_fc_id_string=$wo_fc_grep_PGFORTRAN elif test -n "$wo_fc_grep_PGHPF"; then wo_cv_fc_id_string=$wo_fc_grep_PGHPF elif test -n "$wo_fc_grep_FLANG"; then wo_cv_fc_id_string=$wo_fc_grep_FLANG else wo_cv_fc_id_string=$wo_fc_grep_default fi rm -f conftest.log ]) FC_ID_STRING="$wo_cv_fc_id_string" AC_SUBST([FC_ID_STRING]) AC_CACHE_CHECK([the compiler vendor], [wo_cv_fc_vendor], [dnl if test -n "$wo_fc_grep_GFORTRAN"; then wo_cv_fc_vendor="gfortran" elif test -n "$wo_fc_grep_G95"; then wo_cv_fc_vendor="g95" elif test -n "$wo_fc_grep_NAG"; then wo_cv_fc_vendor="NAG" elif test -n "$wo_fc_grep_Intel"; then wo_cv_fc_vendor="Intel" elif test -n "$wo_fc_grep_Sun"; then wo_cv_fc_vendor="Sun" elif test -n "$wo_fc_grep_Lahey"; then wo_cv_fc_vendor="Lahey" elif test -n "$wo_fc_grep_PGF90"; then wo_cv_fc_vendor="PGI" elif test -n "$wo_fc_grep_PGF95"; then wo_cv_fc_vendor="PGI" elif test -n "$wo_fc_grep_PGFORTRAN"; then wo_cv_fc_vendor="PGI" elif test -n "$wo_fc_grep_PGHPF"; then wo_cv_fc_vendor="PGI" elif test -n "$wo_fc_grep_FLANG"; then wo_cv_fc_vendor="flang" else wo_cv_fc_vendor="unknown" fi ]) FC_VENDOR="$wo_cv_fc_vendor" AC_SUBST([FC_VENDOR]) AM_CONDITIONAL([FC_IS_GFORTRAN], [test "$FC_VENDOR" = gfortran]) AM_CONDITIONAL([FC_IS_NAG], [test "$FC_VENDOR" = NAG]) AC_CACHE_CHECK([the compiler version], [wo_cv_fc_version], [dnl case $FC_VENDOR in gfortran) wo_cv_fc_version=[`echo $FC_ID_STRING | $SED -e 's/[^0-9]*\([0-9]\{1,2\}\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/'`] ;; g95) wo_cv_fc_version=[`echo $FC_ID_STRING | $SED -e 's/.*g95 \([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`] ;; NAG) wo_cv_fc_version=[`echo $FC_ID_STRING | $SED -e 's/.* Release \([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`] ;; Intel) wo_cv_fc_version=[`echo $FC_ID_STRING | $SED -e 's/.*\([0-9]\{2\}\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/'`] ;; Sun) wo_cv_fc_version=[`echo $FC_ID_STRING | $SED -e 's/.* Fortran 95 \([0-9][0-9]*\.[0-9][0-9]*\) .*/\1/'`] ;; PGI) wo_cv_fc_version=[`echo $FC_ID_STRING | $SED -e 's/[a-zA-Z\(\)]//g;s/^[0-9]\{2\}//g;s/32.*\|64.*//g'`] ;; flang) wo_cv_fc_version=[`echo $FC_ID_STRING | $SED -e 's/.*clang version \([0-9][0-9]*\.[0-9][0-9]*\).*$/\1/'`] ;; *) wo_cv_fc_version="unknown" ;; esac ]) FC_VERSION="$wo_cv_fc_version" AC_SUBST([FC_VERSION]) ### Veto old versions of gfortran 4.5/4.6/4.7/4.8/4.9 if test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.5.0" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.5.1" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.5.2" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.5.3" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.5.4" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.6.0" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.6.1" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.6.2" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.6.3" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.6.4" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.7.0" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.7.1" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.7.2" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.7.3" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.7.4" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.8.0" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.8.1" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.8.2" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.8.3" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.8.4" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.8.5" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.9.0" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.9.1" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.9.2" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.9.3" || test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "4.9.4"; then FC_IS_GFORTRAN_4="yes" else FC_IS_GFORTRAN_4="no" fi ### Veto buggy version of gfortran 6.5 if test "$wo_cv_fc_vendor" = "gfortran" -a "$wo_cv_fc_version" = "6.5.0"; then FC_IS_GFORTRAN_65="yes" else FC_IS_GFORTRAN_65="no" fi AC_SUBST([FC_IS_GFORTRAN_4]) AC_SUBST([FC_IS_GFORTRAN_65]) AC_SUBST([FC_IS_NAG]) ### Catch old ifort version 15.0.0/1/2/3 and 16.0/1/2/3 if test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "15.0.0" || test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "15.0.1" || test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "15.0.2" || test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "15.0.3" || test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "16.0.0" || test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "16.0.1" || test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "16.0.2" || test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "16.0.3" ; then FC_IS_IFORT1516="yes" else FC_IS_IFORT1516="no" fi AC_SUBST([FC_IS_IFORT1516]) ### Catch buggy ifort version 17.0.0/1/2/3 if test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "17.0.0" || test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "17.0.1" || test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "17.0.2" || test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "17.0.3" ; then FC_IS_IFORT170123="yes" else FC_IS_IFORT170123="no" fi AC_SUBST([FC_IS_IFORT170123]) ### Catch buggy ifort version 19.0.0/1/2 if test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "19.0.0" || test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "19.0.1" || test "$wo_cv_fc_vendor" = "Intel" -a "$wo_cv_fc_version" = "19.0.2"; then FC_IS_IFORT190012="yes" else FC_IS_IFORT190012="no" fi AC_SUBST([FC_IS_IFORT190012]) AC_CACHE_CHECK([the major version], [wo_cv_fc_major_version], [wo_cv_fc_major_version=[`echo $wo_cv_fc_version | $SED -e 's/\([0-9][0-9]*\)\..*/\1/'`] ]) FC_MAJOR_VERSION="$wo_cv_fc_major_version" AC_SUBST([FC_MAJOR_VERSION]) ]) ### end WO_FC_GET_VENDOR_AND_VERSION AC_DEFUN([WO_FC_VETO_GFORTRAN_4], [dnl if test "$FC_IS_GFORTRAN_4" = "yes"; then AC_MSG_NOTICE([error: ****************************************]) AC_MSG_NOTICE([error: gfortran 4.X is too old, please upgrade.]) AC_MSG_ERROR([****************************************]) fi ]) AC_DEFUN([WO_FC_VETO_GFORTRAN_65], [dnl if test "$FC_IS_GFORTRAN_65" = "yes"; then AC_MSG_NOTICE([error: ******************************************************]) AC_MSG_NOTICE([error: gfortran 6.5 is buggy, please use a different version.]) AC_MSG_ERROR([******************************************************]) fi ]) AC_DEFUN([WO_FC_VETO_IFORT_1516], [dnl if test "$FC_IS_IFORT1516" = "yes"; then AC_MSG_NOTICE([error: ***************************************************************]) AC_MSG_NOTICE([error: ifort version < 17 suffers from severe compiler bugs, disabled.]) AC_MSG_ERROR([***************************************************************]) fi ]) AC_DEFUN([WO_FC_VETO_IFORT_170123], [dnl if test "$FC_IS_IFORT170123" = "yes"; then AC_MSG_NOTICE([error: ***************************************************************]) AC_MSG_NOTICE([error: ifort v17.0.01/2/3 suffers from severe compiler bugs, disabled.]) AC_MSG_ERROR([***************************************************************]) fi ]) AC_DEFUN([WO_FC_VETO_IFORT_190012], [dnl if test "$FC_IS_IFORT190012" = "yes"; then AC_MSG_NOTICE([error: *************************************************************]) AC_MSG_NOTICE([error: ifort v19.0.0/1/2 suffer from severe compiler bugs, disabled.]) AC_MSG_ERROR([*************************************************************]) fi ]) ### Determine Fortran flags and file extensions AC_DEFUN([WO_FC_PARAMETERS], [dnl AC_REQUIRE([AC_PROG_FC]) AC_REQUIRE([_LT_COMPILER_PIC]) AC_LANG([Fortran]) AC_MSG_CHECKING([for $FC flags]) AC_MSG_RESULT([$FCFLAGS]) AC_MSG_CHECKING([for $FC flag to produce position-independent code]) AC_MSG_RESULT([$lt_prog_compiler_pic_FC]) FCFLAGS_PIC=$lt_prog_compiler_pic_FC AC_SUBST([FCFLAGS_PIC]) AC_MSG_CHECKING([for $FC source extension]) AC_MSG_RESULT([$ac_fc_srcext]) FC_SRC_EXT=$ac_fc_srcext AC_SUBST([FC_SRC_EXT]) AC_MSG_CHECKING([for object file extension]) AC_MSG_RESULT([$ac_objext]) OBJ_EXT=$ac_objext AC_SUBST([OBJ_EXT]) ]) ### end WO_FC_PARAMETERS ### Determine runtime libraries ### The standard check is insufficient for some compilers AC_DEFUN([WO_FC_LIBRARY_LDFLAGS], [dnl AC_REQUIRE([AC_PROG_FC]) case $host in *-darwin*) system_darwin="yes" ;; *) system_darwin="no" ;; esac case $FC_VENDOR in NAG) WO_NAGFOR_LIBRARY_LDFLAGS() ;; Intel) case $host in *-darwin*) fcflags_tmp=$FCFLAGS FCFLAGS="-shared-intel $FCFLAGS" AC_FC_LIBRARY_LDFLAGS() fc_libs_tmp=`echo $FCLIBS | $SED -e 's/\/Applications.*/ /'` FCFLAGS=$fcflags_tmp FCLIBS=$fc_libs_tmp ;; *) AC_FC_LIBRARY_LDFLAGS() ;; esac ;; *) AC_FC_LIBRARY_LDFLAGS() ;; esac AM_CONDITIONAL([IS_IFORT_DARWIN], [test "$system_darwin" = "yes" -a "$FC_VENDOR" = "Intel"]) ]) ### Check the NAG Fortran compiler ### Use the '-dryrun' feature and extract the libraries from the link command ### Note that the linker is gcc, not ld AC_DEFUN([WO_NAGFOR_LIBRARY_LDFLAGS], [dnl AC_CACHE_CHECK([Fortran libraries of $FC], [wo_cv_fc_libs], [dnl AC_REQUIRE([WO_FC_CHECK_OPENMP]) AC_REQUIRE([WO_FC_SET_OPENMP]) if test -z "$FCLIBS"; then AC_LANG([Fortran]) AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) wo_save_fcflags=$FCFLAGS if test "$wo_cv_fc_use_openmp" = "yes"; then FCFLAGS="-dryrun $wo_cv_fcflags_openmp" else FCFLAGS="-dryrun" fi eval "set x $ac_link" echo "set x $ac_link" shift _AS_ECHO_LOG([$[*]]) wo_nagfor_output=`eval $ac_link AS_MESSAGE_LOG_FD>&1 2>&1` echo "$wo_nagfor_output" >&AS_MESSAGE_LOG_FD FCFLAGS=$wo_save_fcflags wo_cv_fc_libs=`echo $wo_nagfor_output | $SED -e 's/.* -o conftest \(.*\)$/\1/' | $SED -e 's/conftest.$ac_objext //' | $SED -e 's/\/tmp\/conftest.[[0-9]]*\.o/ /' | $SED -e 's/\/tmp\/[[a-zA-Z0-9]]*\/conftest.[[0-9]]*\.o/ /' | $SED -e 's/conftest.o//'` else wo_cv_fc_libs=$FCLIBS fi ]) FCLIBS=$wo_cv_fc_libs AC_SUBST([FCLIBS]) ]) ### Check for basic F95 features AC_DEFUN([WO_FC_CHECK_F95], [dnl AC_CACHE_CHECK([whether $FC supports Fortran 95 features], [wo_cv_fc_supports_f95], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) AC_COMPILE_IFELSE([dnl program conftest integer, dimension(2) :: ii integer :: i type :: foo integer, pointer :: bar => null () end type foo forall (i = 1:2) ii(i) = i contains elemental function f(x) real, intent(in) :: x real :: f f = x end function f pure function g (x) result (gx) real, intent(in) :: x real :: gx gx = x end function g end program conftest ], [wo_cv_fc_supports_f95="yes"], [wo_cv_fc_supports_f95="no"]) ]) FC_SUPPORTS_F95="$wo_cv_fc_supports_f95" AC_SUBST([FC_SUPPORTS_F95]) if test "$FC_SUPPORTS_F95" = "no"; then AC_MSG_NOTICE([error: ******************************************************************]) AC_MSG_NOTICE([error: Fortran compiler is not a genuine F95 compiler, configure aborted.]) AC_MSG_ERROR([******************************************************************]) fi]) ### end WO_FC_CHECK_F95 ### Check for the TR15581 extensions (allocatable subobjects) AC_DEFUN([WO_FC_CHECK_TR15581], [AC_CACHE_CHECK([whether $FC supports allocatable subobjects], [wo_cv_fc_allocatable], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) AC_COMPILE_IFELSE([dnl program conftest type :: foo integer, dimension(:), allocatable :: bar end type foo end program conftest ], [wo_cv_fc_allocatable="yes"], [wo_cv_fc_allocatable="no"]) ]) FC_SUPPORTS_ALLOCATABLE="$wo_cv_fc_allocatable" AC_SUBST([FC_SUPPORTS_ALLOCATABLE]) if test "$FC_SUPPORTS_ALLOCATABLE" = "no"; then AC_MSG_NOTICE([error: ****************************************************************************]) AC_MSG_NOTICE([error: Fortran compiler does not support allocatable structures, configure aborted.]) AC_MSG_ERROR([****************************************************************************]) fi]) ### end WO_FC_CHECK_TR15581 ### Check for allocatable scalars AC_DEFUN([WO_FC_CHECK_ALLOCATABLE_SCALARS], [AC_CACHE_CHECK([whether $FC supports allocatable scalars], [wo_cv_fc_allocatable_scalars], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) AC_COMPILE_IFELSE([dnl program conftest type :: foo integer, allocatable :: bar end type foo end program conftest ], [wo_cv_fc_allocatable_scalars="yes"], [wo_cv_fc_allocatable_scalars="no"]) ]) FC_SUPPORTS_ALLOCATABLE_SCALARS="$wo_cv_fc_allocatable" AC_SUBST([FC_SUPPORTS_ALLOCATABLE_SCALARS]) ]) ### end WO_FC_CHECK_ALLOCATABLE_SCALARS ### Check for the C bindings extensions of Fortran 2003 AC_DEFUN([WO_FC_CHECK_C_BINDING], [AC_CACHE_CHECK([whether $FC supports ISO C binding and standard numeric types], [wo_cv_fc_c_binding], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) AC_COMPILE_IFELSE([dnl program conftest use iso_c_binding type, bind(c) :: t integer(c_int) :: i real(c_float) :: x1 real(c_double) :: x2 complex(c_float_complex) :: z1 complex(c_double_complex) :: z2 end type t end program conftest ], [wo_cv_fc_c_binding="yes"], [wo_cv_fc_c_binding="no"]) ]) FC_SUPPORTS_C_BINDING="$wo_cv_fc_c_binding" AC_SUBST([FC_SUPPORTS_C_BINDING]) if test "$FC_SUPPORTS_C_BINDING" = "no"; then AC_MSG_NOTICE([error: *******************************************************************]) AC_MSG_NOTICE([error: Fortran compiler does not support ISO C binding, configure aborted.]) AC_MSG_ERROR([********************************************************************]) fi ]) ### end WO_FC_CHECK_C_BINDING ### Check for procedure pointers AC_DEFUN([WO_FC_CHECK_PROCEDURE_POINTERS], [AC_CACHE_CHECK([whether $FC supports procedure pointers (F2003)], [wo_cv_prog_f03_procedure_pointers], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) AC_COMPILE_IFELSE([dnl program conftest type :: foo procedure (proc_template), nopass, pointer :: proc => null () end type foo abstract interface subroutine proc_template () end subroutine proc_template end interface end program conftest ], [wo_cv_prog_f03_procedure_pointers="yes"], [wo_cv_prog_f03_procedure_pointers="no"]) ]) FC_SUPPORTS_PROCEDURE_POINTERS="$wo_cv_prog_f03_procedure_pointers" AC_SUBST([FC_SUPPORTS_PROCEDURE_POINTERS]) if test "$FC_SUPPORTS_PROCEDURE_POINTERS" = "no"; then AC_MSG_NOTICE([error: ***************************************************************************]) AC_MSG_NOTICE([error: Fortran compiler does not understand procedure pointers, configure aborted.]) AC_MSG_ERROR([***************************************************************************]) fi]) ### end WO_FC_CHECK_PROCEDURE_POINTERS ### Check for the OO extensions of Fortran 2003 AC_DEFUN([WO_FC_CHECK_OO_FEATURES], [AC_CACHE_CHECK([whether $FC supports OO features (F2003)], [wo_cv_prog_f03_oo_features], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) AC_COMPILE_IFELSE([dnl module conftest type, abstract :: foo contains procedure (proc_template), deferred :: proc end type foo type, extends (foo) :: foobar contains procedure :: proc end type foobar abstract interface subroutine proc_template (f) import foo class(foo), intent(inout) :: f end subroutine proc_template end interface contains subroutine proc (f) class(foobar), intent(inout) :: f end subroutine proc end module conftest program main use conftest end program main ], [wo_cv_prog_f03_oo_features="yes"], [wo_cv_prog_f03_oo_features="no"]) ]) FC_SUPPORTS_OO_FEATURES="$wo_cv_prog_f03_oo_features" AC_SUBST([FC_SUPPORTS_OO_FEATURES]) ]) ### end WO_FC_CHECK_OO_FEATURES ### Check for the command line interface of Fortran 2003 ### We actually have to link in order to check availability AC_DEFUN([WO_FC_CHECK_CMDLINE], [AC_CACHE_CHECK([whether $FC interfaces the command line (F2003)], [wo_cv_fc_cmdline], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) AC_LINK_IFELSE([dnl program conftest call get_command_argument (command_argument_count ()) end program conftest ], [wo_cv_fc_cmdline="yes"], [wo_cv_fc_cmdline="no"]) ]) FC_SUPPORTS_CMDLINE="$wo_cv_fc_cmdline" AC_SUBST([FC_SUPPORTS_CMDLINE]) if test "$FC_SUPPORTS_CMDLINE" = "no"; then AC_MSG_NOTICE([error: ******************************************************************]) AC_MSG_NOTICE([error: Fortran compiler does not support get_command_argument; configure aborted.]) AC_MSG_ERROR([******************************************************************]) fi ]) ### end WO_FC_CHECK_CMDLINE ### Check whether we can access environment variables (2003 standard) ### We actually have to link in order to check availability AC_DEFUN([WO_FC_CHECK_ENVVAR], [AC_CACHE_CHECK([whether $FC provides access to environment variables (F2003)], [wo_cv_fc_envvar], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) AC_LINK_IFELSE([dnl program conftest character(len=256) :: home call get_environment_variable ("HOME", home) end program conftest ], [wo_cv_fc_envvar="yes"], [wo_cv_fc_envvar="no"]) ]) FC_SUPPORTS_ENVVAR="$wo_cv_fc_envvar" AC_SUBST([FC_SUPPORTS_ENVVAR]) if test "$FC_SUPPORTS_ENVVAR" = "no"; then AC_MSG_NOTICE([error: ***************************************************************************]) AC_MSG_NOTICE([error: Fortran compiler does not support get_environment_variable; configure aborted.]) AC_MSG_ERROR([***************************************************************************]) fi]) ### end WO_FC_CHECK_ENVVAR ### Check whether the flush statement is supported AC_DEFUN([WO_FC_CHECK_FLUSH], [AC_CACHE_CHECK([whether $FC supports the flush statement (F2003)], [wo_cv_fc_flush], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) AC_COMPILE_IFELSE([dnl program conftest implicit none integer, parameter :: u=50 open (u, action="readwrite", status="scratch") write (u, *) "test" flush (u) close (u) end program conftest ], [wo_cv_fc_flush="yes"], [wo_cv_fc_flush="no"]) ]) FC_SUPPORTS_FLUSH="$wo_cv_fc_flush" AC_SUBST([FC_SUPPORTS_FLUSH]) if test "$FC_SUPPORTS_FLUSH" = "no"; then AC_MSG_NOTICE([error: ***************************************************************************]) AC_MSG_NOTICE([error: Fortran compiler does not support the flush statement; configure aborted.]) AC_MSG_ERROR([***************************************************************************]) fi]) ### end WO_FC_CHECK_FLUSH ### Check for iso_fortran_env AC_DEFUN([WO_FC_CHECK_ISO_FORTRAN_ENV], [AC_CACHE_CHECK([whether $FC supports iso_fortran_env (F2003)], [wo_cv_fc_iso_fortran_env], AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) [AC_LINK_IFELSE( [dnl program conftest use iso_fortran_env implicit none integer :: i i = input_unit i = output_unit i = error_unit i = iostat_end i = iostat_eor end program conftest ], [wo_cv_fc_iso_fortran_env=yes], [wo_cv_fc_iso_fortran_env=no] )] ) # test "$wo_cv_fc_iso_fortran_env" = no && iso_fortran_env_stub=yes if test "$wo_cv_fc_iso_fortran_env" = "no"; then AC_MSG_NOTICE([error: ***************************************************************************]) AC_MSG_NOTICE([error: Fortran compiler does not support iso_fortran_env; configure aborted.]) AC_MSG_ERROR([***************************************************************************]) fi ] ) ### Check for the TR19767 extensions (submodules) AC_DEFUN([WO_FC_CHECK_TR19767], [AC_CACHE_CHECK([whether $FC supports submodules (F2008)], [wo_cv_fc_submodules], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) AC_COMPILE_IFELSE([dnl module conftest_mod type :: point real :: x, y end type point interface module function point_dist(a, b) result(distance) type(point), intent(in) :: a, b real :: distance end function point_dist end interface end module conftest_mod submodule (conftest_mod) conftest_mod_a contains module function point_dist(a, b) result(distance) type(point), intent(in) :: a, b real :: distance distance = sqrt((a%x - b%x)**2 + (a%y - b%y)**2) end function point_dist end submodule conftest_mod_a program conftest use conftest_mod end program conftest ], [wo_cv_fc_submodules="yes"], [wo_cv_fc_submodules="no"]) ]) rm -f conftest_mod.* FC_SUPPORTS_SUBMODULES="$wo_cv_fc_submodules" AC_SUBST([FC_SUPPORTS_SUBMODULES]) AM_CONDITIONAL([FC_SUBMODULES], [test "$wo_cv_fc_submodules" = "yes"]) if test "$FC_SUPPORTS_SUBMODULES" = "no"; then AC_MSG_NOTICE([NOTE: Fortran compiler does not support submodules (F2008).]) fi]) ### end WO_FC_CHECK_TR19767 ### Check for wrapping of linker flags ### (nagfor 'feature': must be wrapped twice) AC_DEFUN([WO_FC_CHECK_LDFLAGS_WRAPPING], [AC_CACHE_CHECK([for wrapping of linker flags via -Wl], [wo_cv_fc_ldflags_wrapping], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) ldflags_tmp=$LDFLAGS LDFLAGS=-Wl,-rpath,/usr/lib AC_LINK_IFELSE(AC_LANG_PROGRAM(), [wo_cv_fc_ldflags_wrapping="once"], [wo_cv_fc_ldflags_wrapping="unknown"]) if test "$wo_cv_fc_ldflags_wrapping" = "unknown"; then LDFLAGS=-Wl,-Wl,,-rpath,,/usr/lib AC_LINK_IFELSE(AC_LANG_PROGRAM(), [wo_cv_fc_ldflags_wrapping="twice"]) fi LDFLAGS=$ldflags_tmp ]) FC_LDFLAGS_WRAPPING="$wo_cv_fc_ldflags_wrapping" AC_SUBST([FC_LDFLAGS_WRAPPING]) ]) ### end WO_FC_CHECK_LDFLAGS_WRAPPING ### Check for OpenMP support AC_DEFUN([WO_FC_CHECK_OPENMP], [AC_CACHE_CHECK([whether $FC supports OpenMP], [wo_cv_fc_openmp], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) case $FC_VENDOR in gfortran) wo_cv_fc_openmp="yes" wo_cv_fcflags_openmp="-fopenmp" wo_cv_fc_openmp_header="use, intrinsic :: omp_lib" ;; NAG) wo_cv_fc_openmp="yes" wo_cv_fcflags_openmp="-openmp" wo_cv_fc_openmp_header="use, intrinsic :: omp_lib" ;; Intel) wo_cv_fc_openmp="yes" wo_cv_fcflags_openmp="-qopenmp" wo_cv_fc_openmp_header="use :: omp_lib !NODEP!" ;; PGI) wo_cv_fc_openmp="yes" wo_cv_fcflags_openmp="-mp" wo_cv_fc_openmp_header="" ;; *) wo_cv_fc_openmp="no" ;; esac if test "$wo_cv_fc_openmp"="yes"; then fcflags_tmp=$FCFLAGS FCFLAGS="$wo_cv_fcflags_openmp $FCFLAGS" unset OMP_NUM_THREADS AC_RUN_IFELSE([dnl program conftest $wo_cv_fc_openmp_header open (11, file="conftest.out", action="write", status="replace") write (11, "(I0)") omp_get_max_threads () close (11) end program conftest ], [dnl wo_cv_fc_openmp="yes" wo_cv_fc_openmp_thread_limit=`cat conftest.out`], [wo_cv_fc_openmp="no"], [wo_cv_fc_openmp="maybe [cross-compiling]"]) FCFLAGS=$fcflags_tmp fi ]) if test "$wo_cv_fc_openmp" = "yes"; then AC_CACHE_CHECK([the default number of threads used by OpenMP], [wo_cv_fc_openmp_thread_limit]) fi FC_SUPPORTS_OPENMP="$wo_cv_fc_openmp" AC_SUBST([FC_SUPPORTS_OPENMP]) ]) ### end WO_FC_CHECK_OPENMP ### Turn on/off master switch for debugging features AC_DEFUN([WO_FC_SET_DEBUG], [dnl AC_ARG_ENABLE([fc_debug], [AS_HELP_STRING([--enable-fc-debug], [enable debugging features for the Fortran code [[no]]])]) AC_CACHE_CHECK([whether debugging facilities are enabled], [wo_cv_fc_debug_on], [dnl if test "$enable_fc_debug" = "yes"; then wo_cv_fc_debug_on=yes else wo_cv_fc_debug_on=no fi ]) if test "$wo_cv_fc_debug_on" = "yes"; then FC_DEBUG_ON=.true. else FC_DEBUG_ON=.false. fi AC_SUBST([FC_DEBUG_ON]) ]) ### Enable/disable OpenMP support AC_DEFUN([WO_FC_SET_OPENMP], [dnl AC_REQUIRE([WO_FC_CHECK_OPENMP]) AC_ARG_ENABLE([fc_openmp], [AS_HELP_STRING([--enable-fc-openmp], [use OpenMP for the Fortran code [[no]]])]) AC_CACHE_CHECK([whether OpenMP is activated], [wo_cv_fc_use_openmp], [dnl if test "$FC_SUPPORTS_OPENMP" = "yes" -a "$enable_fc_openmp" = "yes"; then wo_cv_fc_use_openmp="yes" else wo_cv_fc_use_openmp="no" fi]) AM_CONDITIONAL([FC_USE_OPENMP], [test "$wo_cv_fc_use_openmp" = "yes"]) AM_COND_IF([FC_USE_OPENMP], [FC_OPENMP_ON="" FC_OPENMP_OFF="!" FCFLAGS_OPENMP="$wo_cv_fcflags_openmp" FC_OPENMP_HEADER="$wo_cv_fc_openmp_header" FC_OPENMP_DEFAULT_MAX_THREADS="$wo_cv_fc_openmp_thread_limit" ], [FC_OPENMP_ON="!" FC_OPENMP_OFF="" FC_OPENMP_DEFAULT_MAX_THREADS="1" ]) AC_SUBST([FC_OPENMP_ON]) AC_SUBST([FC_OPENMP_OFF]) AC_SUBST([FCFLAGS_OPENMP]) AC_SUBST([FC_OPENMP_HEADER]) AC_SUBST([FC_OPENMP_DEFAULT_MAX_THREADS]) ]) ### end WO_FC_SET_OPENMP -### Enable/disable MPI support (either OpenMPI or MPICH) +### Enable/disable MPI support (either OpenMPI, MPICH or Intel MPI) AC_DEFUN([WO_FC_SET_MPI], [dnl AC_REQUIRE([WO_FC_FILENAME_CASE_CONVERSION]) AC_ARG_ENABLE([fc_mpi], [AS_HELP_STRING([--enable-fc-mpi], [use OpenMPI/MPICH for the Fortran code [[no]]])], [], [enable_fc_mpi="no"]) if test "x$enable_fc_mpi" = "xyes"; then - if test "$FC" != "mpifort" || test "$F77" != "mpifort"; then - WO_FC_MSG_ERROR_BOX([For MPI please use mpifort as Fortran and F77 compiler!]) + if !(test "$FC" == "mpifort" || test "$F77" == "mpifort") \ + && !(test "$FC" == "mpiifort" || test "$F77" == "mpiifort"); then + WO_FC_MSG_ERROR_BOX([For MPI please use mpifort or mpiifort (for Intel) as Fortran and F77 compiler!]) fi if test -n "$MPI_DIR"; then wo_mpi_config_path=$MPI_DIR/bin:$PATH else wo_mpi_config_path=$PATH fi AC_MSG_CHECKING([the requested MPI library]) - wo_cv_fc_requested_mpilib=openmpi + wo_cv_fc_requested_mpilib=intel AC_ARG_WITH([mpi-lib], - [ --with-mpi-lib=mpich|openmpi request an external MPI library.], + [ --with-mpi-lib=mpich|openmpi|intel request an external MPI library.], [case "x$withval" in x | xno | xyes ) wo_cv_fc_mpilib=openmpi ;; * ) wo_cv_fc_mpilib="`echo $withval | $LOWERCASE`" ;; esac]) case "$wo_cv_fc_requested_mpilib" in - mpich | openmpi ) + mpich | openmpi | intel) AC_MSG_RESULT([$wo_cv_fc_requested_mpilib]) ;; *) AC_MSG_RESULT() - WO_FC_MSG_ERROR_BOX([argument of --with-mpi-library is $wo_cv_fc_mpilib, but must be one of mpich, openmpi!]) + WO_FC_MSG_ERROR_BOX([argument of --with-mpi-library is $wo_cv_fc_mpilib, but must be one of mpich, openmpi or intel!]) ;; esac case "$wo_cv_fc_requested_mpilib" in + intel ) + AC_PATH_PROG([MPIIFORT],[mpiifort],[no],[$wo_mpi_config_path]) + if test "$MPIIFORT" != "no"; then + AC_CACHE_CHECK([the Intel MPI version], + [wo_cv_mpiifort_version], + [dnl + wo_cv_mpiifort_version=[`$MPIIFORT --version | head -n 1 | $SED -e 's/ifort (IFORT) \(.*\)\s.*/\1/'`] + wo_cv_mpiifort_major_version=[`echo $wo_cv_mpiifort_version | $SED -e 's/\([0-9]\)\..*/\1/'`] + ]) + MPI_VERSION=$wo_cv_mpiifort_version + FCFLAGS_MPI="-lmpifort -lmpi" + else + enable_fc_mpi="no" + fi + ;; mpich ) AC_PATH_PROG([MPICHVERSION],[mpichversion],[no],[$wo_mpi_config_path]) if test "$MPICHVERSION" != "no"; then AC_CACHE_CHECK([the MPICH version], [wo_cv_mpich_version], [dnl wo_cv_mpich_version=[`$MPICHVERSION --version | $SED -e 's/MPICH VERSION://'`] wo_cv_mpich_major_version=[`echo $wo_cv_mpich_version | $SED -e 's/\([0-9][0-9]*\)\..*/\1/'`] ]) MPI_VERSION=$wo_cv_mpich_version FCFLAGS_MPI="-lmpifort" else enable_fc_mpi="no" fi ;; openmpi ) AC_PATH_PROG([OMPI_INFO],[ompi_info],[no],[$wo_mpi_config_path]) if test "$OMPI_INFO" != "no"; then AC_CACHE_CHECK([the OPENMPI version], [wo_cv_openmpi_version], [dnl wo_cv_openmpi_version=[`$OMPI_INFO --version | head -1 | $SED -e 's/Open MPI v//'`] wo_cv_openmpi_major_version=[`echo $wo_cv_openmpi_version | $SED -e 's/\([0-9][0-9]*\)\..*/\1/'`] ]) MPI_VERSION=$wo_cv_openmpi_version FCFLAGS_MPI="-lmpi" else enable_fc_mpi="no" fi ;; esac else AC_MSG_NOTICE([no MPI support demanded]) fi MPI_AVAILABLE=$enable_fc_mpi MPI_LIBRARY=$wo_cv_fc_requested_mpilib AM_CONDITIONAL([FC_USE_MPI], [test "x$enable_fc_mpi" = "xyes"]) ]) AC_SUBST([MPI_AVAILABLE]) AC_SUBST([MPI_LIBRARY]) AC_SUBST([MPI_VERSION]) AC_SUBST([FCFLAGS_MPI]) ### end WO_FC_SET_MPI # AC_CACHE_CHECK([whether MPI is activated], [wo_cv_fc_mpi], # ]) ### Check for profiling support AC_DEFUN([WO_FC_CHECK_PROFILING], [AC_CACHE_CHECK([whether $FC supports profiling via -pg], [wo_cv_fc_profiling], [dnl AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) fcflags_tmp=$FCFLAGS FCFLAGS="-pg $FCFLAGS" rm -f gmon.out AC_RUN_IFELSE([dnl program conftest end program conftest ], [dnl if test -f gmon.out; then wo_cv_fc_profiling="yes" else wo_cv_fc_profiling="no" fi], [wo_cv_fc_profiling="no"], [wo_cv_fc_profiling="maybe [cross-compiling]"]) rm -f gmon.out FCFLAGS=$fcflags_tmp ]) FC_SUPPORTS_PROFILING="$wo_cv_fc_profiling" AC_SUBST([FC_SUPPORTS_PROFILING]) ]) ### end WO_FC_CHECK_PROFILING ### Enable/disable profiling support AC_DEFUN([WO_FC_SET_PROFILING], [dnl AC_REQUIRE([WO_FC_CHECK_PROFILING]) AC_ARG_ENABLE([fc_profiling], [AS_HELP_STRING([--enable-fc-profiling], [use profiling for the Fortran code [[no]]])]) AC_CACHE_CHECK([whether profiling is activated], [wo_cv_fc_prof], [dnl if test "$FC_SUPPORTS_PROFILING" = "yes" -a "$enable_fc_profiling" = "yes"; then wo_cv_fc_prof="yes" FCFLAGS_PROFILING="-pg" else wo_cv_fc_prof="no" FCFLAGS_PROFILING="" fi]) AC_SUBST(FCFLAGS_PROFILING) AM_CONDITIONAL([FC_USE_PROFILING], [test -n "$FCFLAGS_PROFILING"]) ]) ### end WO_FC_SET_PROFILING ### Enable/disable impure Omega compilation AC_DEFUN([WO_FC_SET_OMEGA_IMPURE], [dnl AC_REQUIRE([WO_FC_CHECK_F95]) AC_ARG_ENABLE([impure_omega], [AS_HELP_STRING([--enable-fc-impure], [compile Omega libraries impure [[no]]])]) AC_CACHE_CHECK([the default setting for impure omegalib], [wo_cv_fc_impure], [dnl if test "$impure_omega" = "yes" -o "$FC_SUPPORTS_F95" = "no"; then wo_cv_fc_impure="yes" else wo_cv_fc_impure="no" fi]) AM_CONDITIONAL([FC_IMPURE], [test "$wo_cv_fc_impure" = "yes"]) ]) ### end WO_FC_OMEGA_IMPURE ######################################################################## ### Configure kinds.f90 ######################################################################## dnl# splashy error reporting AC_DEFUN([WO_FC_MSG_ERROR_BOX], [dnl AC_MSG_NOTICE([error: ***************************************************************************]) AC_MSG_NOTICE([error: $1]) AC_MSG_ERROR([***************************************************************************])]) AC_DEFUN([WO_FC_MSG_ERROR_BOX2], [dnl AC_MSG_NOTICE([error: ***************************************************************************]) AC_MSG_NOTICE([error: $1]) AC_MSG_NOTICE([error: $2]) AC_MSG_ERROR([***************************************************************************])]) AC_DEFUN([WO_FC_MSG_WARN_BOX], [dnl AC_MSG_WARN([***************************************************************************]) AC_MSG_WARN([$1]) AC_MSG_WARN([***************************************************************************])]) dnl# Check for iso_fortran_env in the incarnation of 2008 AC_DEFUN([WO_FC_CHECK_ISO_FORTRAN_ENV_2008], [AC_CACHE_CHECK([whether $FC supports iso_fortran_env (F2008)], [wo_cv_fc_iso_fortran_env_2008], AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) [AC_LINK_IFELSE( [dnl program conftest use iso_fortran_env implicit none integer :: i i = real32 i = real64 i = real128 i = int8 i = int16 i = int32 i = int64 end program conftest], [wo_cv_fc_iso_fortran_env_2008=yes], [wo_cv_fc_iso_fortran_env_2008=no])])]) dnl# An extension of ISO_FORTRAN_ENV adding definitions of the dnl# Fortran 2008 variables, flagged as unavailable. AC_DEFUN([WO_FC_ISO_FORTRAN_ENV_2008_DUMMY], [module iso_fortran_env_2008 public integer, parameter :: real32 = -1 integer, parameter :: real64 = -1 integer, parameter :: real128 = -1 integer, parameter :: int8 = -1 integer, parameter :: int16 = -1 integer, parameter :: int32 = -1 integer, parameter :: int64 = -1 end module iso_fortran_env_2008]) dnl# An empty extension of ISO_FORTRAN_ENV to be used if the dnl# Fortran 2008 variables are available AC_DEFUN([WO_FC_ISO_FORTRAN_ENV_2008_EMPTY], [module iso_fortran_env_2008 end module iso_fortran_env_2008]) dnl# An extension of ISO_C_BINDING adding definitions of dnl# gfortran extensions, flagged as unavailable. AC_DEFUN([WO_FC_ISO_C_BINDING_GFORTRAN_DUMMY], [module iso_c_binding_gfortran public integer, parameter :: c_float128 = -1 end module iso_c_binding_gfortran]) dnl# An empty extension of ISO_C_BINDING to be used if the dnl# gfortran extensions are available. AC_DEFUN([WO_FC_ISO_C_BINDING_GFORTRAN_EMPTY], [module iso_c_binding_gfortran end module iso_c_binding_gfortran]) dnl# Check for gfortran extensions in iso_c_binding AC_DEFUN([WO_FC_CHECK_ISO_C_BINDING_GFORTRAN], [AC_CACHE_CHECK([whether $FC supports c_float128 (a gfortran extension)], [wo_cv_fc_iso_c_binding_gfortran], AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) [AC_LINK_IFELSE( [dnl program conftest use iso_c_binding implicit none integer :: i i = c_float128 end program conftest], [wo_cv_fc_iso_c_binding_gfortran=yes], [wo_cv_fc_iso_c_binding_gfortran=no])])]) dnl# A, by autoconf standards, large program that performs dnl# RUNTIME checks of the available kinds. dnl# Note that it can NOT be used for cross compiling! AC_DEFUN([WO_FC_MODULE_QUERY_KINDS], [dnl module query_kinds use, intrinsic :: iso_fortran_env use, intrinsic :: iso_c_binding use :: iso_fortran_env_2008 use :: iso_c_binding_gfortran implicit none private type, public :: real_kind integer :: kind = -1 integer :: min_prec = -1 integer :: max_prec = -1 character(len=9) :: name = "-1" character(len=7) :: iso_name = "-1" character(len=13) :: c_name = "-1" character(len=21) :: c_name_complex = "-1" end type real_kind type, public :: int_kind integer :: kind = -1 integer :: min_range = -1 integer :: max_range = -1 character(len=9) :: name = "-1" character(len=5) :: iso_name = "-1" end type int_kind public :: query_real public :: query_int public :: real_by_name integer, parameter :: NUM_KINDS = 20 integer, parameter :: MAX_PREC = 99 integer, parameter :: MAX_RANGE = 99 contains subroutine real_iso_name (kind) type(real_kind), intent(inout) :: kind !!! The following MUST NOT be a SELECT CASE statement, !!! because two or more of the real kinds might be !!! negative and identical if (real32 >= 0 .and. kind%kind == real32) then kind%iso_name = "real32" else if (real64 >= 0 .and. kind%kind == real64) then kind%iso_name = "real64" else if (real128 >= 0 .and. kind%kind == real128) then kind%iso_name = "real128" end if end subroutine real_iso_name subroutine real_c_name (kind) type(real_kind), intent(inout) :: kind !!! The following MUST NOT be a SELECT CASE statement. if (c_float >= 0 .and. kind%kind == c_float) then kind%c_name = "c_float" kind%c_name_complex = "c_float_complex" else if (c_double >= 0 .and. kind%kind == c_double) then kind%c_name = "c_double" kind%c_name_complex = "c_double_complex" else if (c_long_double >= 0 .and. kind%kind == c_long_double) then kind%c_name = "c_long_double" kind%c_name_complex = "c_long_double_complex" !!! The following is gfortran specific: else if (c_float128 >= 0 .and. kind%kind == c_float128) then kind%c_name = "c_float128" kind%c_name_complex = "c_float128_complex" end if end subroutine real_c_name subroutine int_iso_name (kind) type(int_kind), intent(inout) :: kind !!! The following MUST NOT be a SELECT CASE statement. if (int8 >= 0 .and. kind%kind == int8) then kind%iso_name = "int8" else if (int16 >= 0 .and. kind%kind == int16) then kind%iso_name = "int16" else if (int32 >= 0 .and. kind%kind == int32) then kind%iso_name = "int32" else if (int64 >= 0 .and. kind%kind == int64) then kind%iso_name = "int64" end if end subroutine int_iso_name subroutine query_real (single, double, other) type(real_kind), intent(out) :: single type(real_kind), intent(out) :: double type(real_kind), dimension(:), allocatable, intent(out) :: other type(real_kind), dimension(NUM_KINDS) :: kinds integer :: kind_single = kind (1.0) integer :: kind_double = kind (1.0D0) integer :: precision_double = precision (1.0D0) integer :: p, k, last_k, offset, i, j single = real_kind () double = real_kind () last_k = -1 offset = 0 prec_loop: do p = 1, MAX_PREC k = selected_real_kind (p = p) if (k < 0) then exit prec_loop end if if (k == last_k) then kinds(offset)%max_prec = p else last_k = k offset = offset + 1 kinds(offset)%kind = k kinds(offset)%min_prec = p kinds(offset)%max_prec = p end if end do prec_loop allocate (other(offset-2)) i = 1 do j = 1, offset if (kinds(j)%kind == kind_single) then single = kinds(j) single%name = "single" call real_iso_name (single) call real_c_name (single) else if (kinds(j)%kind == kind_double) then double = kinds(j) double%name = "double" call real_iso_name (double) call real_c_name (double) else if (i > offset - 2) then print *, "query_real: expected REAL and DOUBLE" return end if other(i) = kinds(j) if (other(i)%max_prec >= 4 * precision_double) then other(i)%name = "octuple" else if (other(i)%max_prec >= 2 * precision_double) then other(i)%name = "quadruple" else if (other(i)%max_prec > precision_double) then other(i)%name = "extended" else write (other(i)%name, "('prec',I2.2)") other(i)%max_prec endif call real_iso_name (other(i)) call real_c_name (other(i)) i = i + 1 end if end do end subroutine query_real function name_matches (name, k) result (yorn) character(len=*), intent(in) :: name type(real_kind), intent(in) :: k logical :: yorn yorn = trim (name) == k%name & .or. trim (name) == k%iso_name & .or. trim (name) == k%c_name end function name_matches function real_by_name (name, single, double, other) result (match) character(len=*), intent(in) :: name type(real_kind), intent(in) :: single type(real_kind), intent(in) :: double type(real_kind), dimension(:), intent(in) :: other type(real_kind) :: match integer :: i match = real_kind () if (name_matches (name, single)) then match = single else if (name_matches (name, double)) then match = double else do i = 1, size (other) if (name_matches (name, other(i))) then match = other(i) match%name = name end if end do end if end function real_by_name subroutine query_int (default, other) type(int_kind), intent(out) :: default type(int_kind), dimension(:), allocatable, intent(inout) :: other type(int_kind), dimension(NUM_KINDS) :: kinds integer :: kind_default = kind (1) integer :: r, k, last_k, offset, i, j default = int_kind () last_k = -1 offset = 0 range_loop: do r = 1, MAX_PREC k = selected_int_kind (r) if (k < 0) then exit range_loop end if if (k == last_k) then kinds(offset)%max_range = r else last_k = k offset = offset + 1 kinds(offset)%kind = k kinds(offset)%min_range = r kinds(offset)%max_range = r end if if (k == kind_default) then default = kinds(offset) end if end do range_loop allocate (other(offset-1)) i = 1 do j = 1, offset if (kinds(j)%kind == kind_default) then default = kinds(j) default%name = "dflt_int" call int_iso_name (default) else if (i > offset - 1) then print *, "query_int: expected DEFAULT" return end if other(i) = kinds(j) write (other(i)%name, "('range',I2.2)") other(i)%max_range call int_iso_name (other(i)) i = i + 1 end if end do end subroutine query_int end module query_kinds]) AC_DEFUN([WO_FC_MODULE_REPORT_KINDS], [dnl module report_kinds use query_kinds implicit none private public print_kinds contains subroutine print_kinds (request, single_real, double_real, other_real, & default_int, other_int) character(len=*), intent(in) :: request type(real_kind), intent(in) :: single_real, double_real type(real_kind), dimension(:), intent(in) :: other_real type(int_kind), intent(in) :: default_int type(int_kind), dimension(:), intent(in), allocatable :: other_int type(real_kind) :: default_real integer :: i print *, "module kinds" print *, " use, intrinsic :: iso_fortran_env" print *, " use, intrinsic :: iso_c_binding" print *, " implicit none" print *, " private" print *, "" print *, " !!! available REAL kinds ! prec. ! ISO ! C" call print_real_kind (single_real) call print_real_kind (double_real) do i = 1, size (other_real) call print_real_kind (other_real(i)) end do print *, "" print *, " !!! available INTEGER kinds ! range ! ISO ! C" call print_int_kind (default_int) do i = 1, size (other_int) call print_int_kind (other_int(i)) end do print *, "" print *, " !!! additional INTEGER kinds" print *, " public :: i8, i16, i32, i64" print *, " integer, parameter :: i8 = selected_int_kind (2)" print *, " integer, parameter :: i16 = selected_int_kind (4)" print *, " integer, parameter :: i32 = selected_int_kind (9)" print *, " integer, parameter :: i64 = selected_int_kind (18)" print *, " public :: TC" print *, " integer, parameter :: TC = i32" default_real = real_by_name (request, single_real, double_real, other_real) print *, "" print *, " !!! default REAL kinds" print *, " public :: single, double" print *, " public :: default, c_default_float, c_default_complex" print *, " integer, parameter :: default = ", default_real%name print *, " integer, parameter :: c_default_float = ", default_real%c_name print *, " integer, parameter :: c_default_complex = ", & default_real%c_name_complex print *, "" if (default_real%kind < 0) then print *, " !!! ERROR: the requested default real kind '" // & request // "' is not available in this environment" print *, "" else if (trim (default_real%c_name) == "-1" .or. & trim (default_real%c_name_complex) == "-1") then print *, " !!! ERROR: for the requested default real kind '" // & request // "' there is no supported C analogue" print *, "" else if (trim (request) == "real128") then if (default_real%max_prec < 2 * double_real%max_prec) then print *, " !!! WARNING: the requested default real kind 'real128'", & " does NOT provide quadruple precision in this environment" print *, "" end if end if end if print *, "end module kinds" end subroutine print_kinds subroutine print_real_kind (k) type(real_kind), intent(in) :: k write (*, "(A,A,A,I2,A,I2,A,I2,A,A,A,A)") & " integer, parameter :: ", k%name, " = ", k%kind, & " ! ", k%min_prec, "..", k%max_prec, & " ! ", k%iso_name, " ! ", k%c_name end subroutine print_real_kind subroutine print_int_kind (k) type(int_kind), intent(in) :: k write (*, "(A,A,A,I2,A,I2,A,I2,A,A,A,A)") & " integer, parameter :: ", k%name, " = ", k%kind, & " ! ", k%min_range, "..", k%max_range, & " ! ", k%iso_name, " ! ", "" end subroutine print_int_kind end module report_kinds]) AC_DEFUN([WO_FC_PROGRAM_CONFIGURE_KINDS], [dnl program configure_kinds use query_kinds use report_kinds implicit none type(real_kind), dimension(:), allocatable :: other_real type(int_kind), dimension(:), allocatable :: other_int type(real_kind) :: single_real, double_real type(int_kind) :: default_int character(len=120) :: request integer :: length, status call get_command_argument (1, request, length, status) if (status == 0 .and. length > 0) then call query_real (single_real, double_real, other_real) call query_int (default_int, other_int) call print_kinds (request(1:length), & single_real, double_real, other_real, & default_int, other_int) end if end program configure_kinds]) dnl# combining the source code AC_DEFUN([WO_FC_CONFIGURE_KINDS_SOURCE], [dnl WO_FC_MODULE_QUERY_KINDS WO_FC_MODULE_REPORT_KINDS WO_FC_PROGRAM_CONFIGURE_KINDS]) AC_DEFUN([WO_FC_MODULE_KINDS_CROSS_COMPILING], [dnl ! A minimalistic kinds.f90, since we're cross compiling module kinds use, intrinsic :: iso_fortran_env use, intrinsic :: iso_c_binding implicit none private public :: single, double integer, parameter :: single = kind (1.0) integer, parameter :: double = kind (1.0D0) public :: i8, i16, i32, i64, TC integer, parameter :: i8 = selected_int_kind (2) integer, parameter :: i16 = selected_int_kind (4) integer, parameter :: i32 = selected_int_kind (9) integer, parameter :: i64 = selected_int_kind (18) integer, parameter :: TC = i32 public :: default integer, parameter :: default = $1 public :: c_default_float, c_default_complex integer, parameter :: c_default_float = $2 integer, parameter :: c_default_complex = $3 end module kinds]) dnl# fall back option for cross compilation AC_DEFUN([WO_FC_CONFIGURE_KINDS_CROSS_COMPILING], [dnl case "X$wo_cv_fc_requested_precision" in Xsingle) wo_cv_fc_requested_default_c_float_kind=c_float wo_cv_fc_requested_default_c_complex_kind=c_float_complex ;; Xdouble) wo_cv_fc_requested_default_c_float_kind=c_double wo_cv_fc_requested_default_c_complex_kind=c_double_complex ;; *) WO_FC_MSG_ERROR_BOX(dnl [cross compilation supported for single and double precision only!]) ;; esac AC_COMPILE_IFELSE(dnl [WO_FC_MODULE_KINDS_CROSS_COMPILING(dnl [$wo_cv_fc_requested_precision], [$wo_cv_fc_requested_default_c_float_kind], [$wo_cv_fc_requested_default_c_complex_kind])], [cp conftest.$ac_ext kinds.f90], [WO_FC_MSG_ERROR_BOX(dnl [setting up kinds.f90 for cross compilation failed])])]) dnl# report success AC_DEFUN([WO_FC_CONFIGURE_KINDS_RUN_OK], [dnl $INSTALL -d `AS_DIRNAME(["$1"])` ./conftest$EXEEXT "$wo_cv_fc_requested_precision" >$1 if test X"$KEEP_KINDLY" != X; then cp -a ./conftest.f90 "$KEEP_KINDLY" fi if test ! -s $1; then WO_FC_MSG_ERROR_BOX([./conftest$EXEEXT produced no output]) fi kinds_error="`$SED -n '/ERROR/s/^.*ERROR: *//p' $1`" if test "x$kinds_error" != x; then WO_FC_MSG_ERROR_BOX([$kinds_error]) fi kinds_warning="`$SED -n '/WARNING/s/^.*WARNING: *//p' $1`" if test "x$kinds_warning" != x; then WO_FC_MSG_WARN_BOX([$kinds_warning]) fi]) dnl# report failure AC_DEFUN([WO_FC_CONFIGURE_KINDS_RUN_FAIL], [rm -f $1 if test X"$KEEP_KINDLY" != X; then cp -a ./conftest.f90 "$KEEP_KINDLY" fi WO_FC_MSG_ERROR_BOX([could not compile kinds selection program])]) ######################################################################## ### ### Prepare a kinds.f90 with a DEFAULT kind taken from the argument ### of `--with-precision'. If we are NOT cross compiling, ### add comments explaing the relationship to the kinds defined in ### ISO_FORTRAN_ENV and ISO_C_BINDING. ### ### The default of DEFAULT is `double'. ### ######################################################################## AC_DEFUN([WO_FC_CONFIGURE_KINDS], [dnl AC_REQUIRE([AC_PROG_SED]) AC_REQUIRE([AC_PROG_INSTALL]) AC_REQUIRE([WO_FC_FILENAME_CASE_CONVERSION]) AC_REQUIRE([AC_PROG_FC]) AC_LANG([Fortran]) AC_REQUIRE([WO_FC_CHECK_ISO_FORTRAN_ENV_2008]) AC_REQUIRE([WO_FC_CHECK_ISO_C_BINDING_GFORTRAN]) AC_MSG_CHECKING([the requested floating point precision]) wo_cv_fc_requested_precision=double AC_ARG_WITH([precision], [ --with-precision=single|double|quadruple|extended|real32|real64|real128 request a floating point precision other than double precision. Note that only single and double are guaranteed to be provided by all Fortran compilers.], [case "x$withval" in x | xno | xyes ) wo_cv_fc_requested_precision=double ;; * ) wo_cv_fc_requested_precision="`echo $withval | $LOWERCASE`" ;; esac]) case "$wo_cv_fc_requested_precision" in single | double | extended | quadruple | real32 | real64 | real128 ) AC_MSG_RESULT([$wo_cv_fc_requested_precision]) ;; *) AC_MSG_RESULT() WO_FC_MSG_ERROR_BOX2([argument of --with-precision is $wo_cv_fc_requested_precision, but must be one of], [single, double, quadruple, extended, real32, real64, real128!]) ;; esac dnl save_cross_compiling=$cross_compiling dnl cross_compiling=yes if test "x$wo_cv_fc_iso_fortran_env_2008" = xyes; then if test "x$wo_cv_fc_iso_c_binding_gfortran" = xyes; then AC_RUN_IFELSE(dnl [WO_FC_ISO_FORTRAN_ENV_2008_EMPTY WO_FC_ISO_C_BINDING_GFORTRAN_EMPTY WO_FC_CONFIGURE_KINDS_SOURCE], [WO_FC_CONFIGURE_KINDS_RUN_OK([$1])], [WO_FC_CONFIGURE_KINDS_RUN_FAIL([$1])], [WO_FC_CONFIGURE_KINDS_CROSS_COMPILING]) else AC_RUN_IFELSE(dnl [WO_FC_ISO_FORTRAN_ENV_2008_EMPTY WO_FC_ISO_C_BINDING_GFORTRAN_DUMMY WO_FC_CONFIGURE_KINDS_SOURCE], [WO_FC_CONFIGURE_KINDS_RUN_OK([$1])], [WO_FC_CONFIGURE_KINDS_RUN_FAIL([$1])], [WO_FC_CONFIGURE_KINDS_CROSS_COMPILING]) fi else if test "x$wo_cv_fc_iso_c_binding_gfortran" = xyes; then AC_RUN_IFELSE(dnl [WO_FC_ISO_FORTRAN_ENV_2008_DUMMY WO_FC_ISO_C_BINDING_GFORTRAN_EMPTY WO_FC_CONFIGURE_KINDS_SOURCE], [WO_FC_CONFIGURE_KINDS_RUN_OK([$1])], [WO_FC_CONFIGURE_KINDS_RUN_FAIL([$1])], [WO_FC_CONFIGURE_KINDS_CROSS_COMPILING]) else AC_RUN_IFELSE(dnl [WO_FC_ISO_FORTRAN_ENV_2008_DUMMY WO_FC_ISO_C_BINDING_GFORTRAN_DUMMY WO_FC_CONFIGURE_KINDS_SOURCE], [WO_FC_CONFIGURE_KINDS_RUN_OK([$1])], [WO_FC_CONFIGURE_KINDS_RUN_FAIL([$1])], [WO_FC_CONFIGURE_KINDS_CROSS_COMPILING]) fi fi rm -f iso_c_binding_gfortran.* rm -f iso_fortran_env_2008.* rm -f query_kinds.* rm -f report_kinds.* dnl cross_compiling=$save_cross_compiling if test "$wo_cv_fc_requested_precision" = "real128" -a "$FC_VENDOR" = "gfortran"; then FC_PRECISION="extended" elif test "$wo_cv_fc_requested_precision" = "real128" -a "$FC_VENDOR" = "Intel"; then FC_PRECISION="quadruple" elif test "$wo_cv_fc_requested_precision" = "real64"; then FC_PRECISION="double" elif test "$wo_cv_fc_requested_precision" = "real32"; then FC_PRECISION="single" else FC_PRECISION=$wo_cv_fc_requested_precision fi AC_SUBST([FC_PRECISION]) AM_CONDITIONAL([FC_PREC], [test "$FC_PRECISION" = "extended" || test "$FC_PRECISION" = "quadruple"]) AM_CONDITIONAL([FC_EXT], [test "$FC_PRECISION" = "extended"]) AM_CONDITIONAL([FC_QUAD], [test "$FC_PRECISION" = "quadruple"]) ]) ######################################################################## ### end of configure kinds.f90 ######################################################################## ### filename_case_conversion, define two variables LOWERCASE and ### UPPERCASE for /bin/sh filters that convert strings to lower ### and upper case, respectively AC_DEFUN([WO_FC_FILENAME_CASE_CONVERSION], [dnl AC_SUBST([LOWERCASE]) AC_SUBST([UPPERCASE]) AC_PATH_PROGS(TR,tr) AC_MSG_CHECKING([for case conversion]) if test -n "$TR"; then LOWERCASE="$TR A-Z a-z" UPPERCASE="$TR a-z A-Z" WO_FC_FILENAME_CASE_CONVERSION_TEST fi if test -n "$UPPERCASE" && test -n "$LOWERCASE"; then AC_MSG_RESULT([$TR works]) else LOWERCASE="$SED y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/" UPPERCASE="$SED y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/" WO_FC_FILENAME_CASE_CONVERSION_TEST if test -n "$UPPERCASE" && test -n "$LOWERCASE"; then AC_MSG_RESULT([$SED works]) fi fi]) ### end WO_FC_FILE_CASE_CONVERSION dnl AC_DEFUN([WO_FC_FILENAME_CASE_CONVERSION_TEST], [dnl if test "`echo fOo | $LOWERCASE`" != "foo"; then LOWERCASE="" fi if test "`echo fOo | $UPPERCASE`" != "FOO"; then UPPERCASE="" fi]) dnl dnl -------------------------------------------------------------------- dnl dnl COMPILE_FC(VARIABLE, COMPILER, EXTENSION, MODULE, dnl VALUE_SUCCESS, VALUE_FAILURE, KEEP) dnl AC_DEFUN([COMPILE_FC], [cat >conftest.$3 <<__END__ $4 program conftest print *, 42 end program conftest __END__ $2 -o conftest conftest.$3 >/dev/null 2>&1 ./conftest >conftest.out 2>/dev/null if test 42 = "`$SED 's/ //g' conftest.out`"; then $1="$5" else $1="$6" fi if test -z "$7"; then rm -rf conftest* CONFTEST* fi]) dnl dnl -------------------------------------------------------------------- dnl dnl WO_FC_MODULE_FILE(NAME, EXTENSION, FORTRAN_COMPILER, SOURCE_EXTENSION) dnl AC_DEFUN([WO_FC_MODULE_FILE], [AC_SUBST([$1]) AC_SUBST([$2]) AC_MSG_CHECKING([for Fortran90 module file naming convention]) COMPILE_FC([wo_result], [$3], [$4], [module module_NAME implicit none integer, parameter, public :: forty_two = 42 end module module_NAME], [ok], [], [KEEP]) if test -n "[$]wo_result"; then $1=unknown $2=unknown for name in module_name module_NAME MODULE_NAME conftest; do for ext in m mod M MOD d D; do if test -f "[$]name.[$]ext"; then $1="$name" $2="$ext" break 2 fi done done if test X"[$]$1" = X"module_name"; then AC_MSG_RESULT([name: [$]$1, extension: .[$]$2 ]) else AC_MSG_ERROR([unusual unsupported module file name convention: [$]$1.[$]$2]) fi else $1="" $2="" AC_MSG_RESULT([compiler failed]) AC_MSG_NOTICE([error: **************************************************************]) AC_MSG_NOTICE([error: Fortran compiler cannot create proper module files. This]) AC_MSG_NOTICE([error: might be caused by linking against a wrong gcc library.]) AC_MSG_ERROR([**************************************************************]) fi rm -rf conftest* CONFTEST* module_name* module_NAME* MODULE_NAME*]) Index: trunk/ChangeLog =================================================================== --- trunk/ChangeLog (revision 8287) +++ trunk/ChangeLog (revision 8288) @@ -1,1887 +1,1890 @@ ChangeLog -- Summary of changes to the WHIZARD package Use svn log to see detailed changes. Version 2.8.0 2019-10-24 RELEASE: version 2.8.1 +2019-08-27 + Support for Intel MPI + 2019-08-20 Complete (preliminary) HepMC3 support (incl. backwards HepMC2 write/read mode) 2019-08-08 Bug fix: handle carriage returns in UFO files (non-Unix OS) ################################################################## 2019-08-07 RELEASE: version 2.8.0 2019-07-31 Complete WHIZARD UFO interface: - general Lorentz structures - matrix element support for general color factors - missing features: Majorana fermions and SLHA 2019-07-20 Make WHIZARD compatible with OCaml 4.08.0+ 2019-07-19 Fix version testing for LHAPDF 6.2.3 and newer Minimal required OCaml version is now 4.02.3. 2019-04-18 Correctly generate ordered FKS tuples for alpha regions from all possible underlying Born processes 2019-04-08 Extended O'Mega/Recola matrix element test suite 2019-03-29 Correct identical particle symmetry factors for FKS subtraction 2019-03-28 Correct assertion of spin-correlated matrix elements for hadron collisions 2019-03-27 Bug fix for cut-off parameter delta_i for collinear plus/minus regions ################################################################## 2019-03-27 RELEASE: version 2.7.1 2019-02-19 Further infrastructure for HepMC3 interface (v3.01.00) 2019-02-07 Explicit configure option for using debugging options Bug fix for performance by removing unnecessary debug operations 2019-01-29 Bug fix for DGLAP remnants with cut-off parameter delta_i 2019-01-24 Radiative decay neu2 -> neu1 A added to MSSM_Hgg model ################################################################## 2019-01-21 RELEASE: version 2.7.0 2018-12-18 Support RECOLA for integrated und unintegrated subtractions 2018-12-11 FCNC top-up sector in model SM_top_anom 2018-12-05 Use libtirpc instead of SunRPC on Arch Linux etc. 2018-11-30 Display rescaling factor for weighted event samples with cuts 2018-11-29 Reintroduce check against different masses in flavor sums Bug fix for wrong couplings in the Littlest Higgs model(s) 2018-11-22 Bug fix for rescanning events with beam structure 2018-11-09 Major refactoring of internal process data 2018-11-02 PYTHIA8 interface 2018-10-29 Flat phase space parametrization with RAMBO (on diet) implemented 2018-10-17 Revise extended test suite 2018-09-27 Process container for RECOLA processes 2018-09-15 Fixes by M. Berggren for PYTHIA6 interface 2018-09-14 First fixes after HepForge modernization ################################################################## 2018-08-23 RELEASE: version 2.6.4 2018-08-09 Infrastructure to check colored subevents 2018-07-10 Infrastructure for running WHIZARD in batch mode 2018-07-04 MPI available from distribution tarball 2018-06-03 Support Intel Fortran Compiler under MAC OS X 2018-05-07 FKS slicing parameter delta_i (initial state) implementend 2018-05-03 Refactor structure function assignment for NLO 2018-05-02 FKS slicing parameter xi_cut, delta_0 implemented 2018-04-20 Workspace subdirectory for process integration (grid/phs files) Packing/unpacking of files at job end/start Exporting integration results from scan loops 2018-04-13 Extended QCD NLO test suite 2018-04-09 Bug fix for Higgs Singlet Extension model 2018-04-06 Workspace subdirectory for process generation and compilation --job-id option for creating job-specific names 2018-03-20 Bug fix for color flow matching in hadron collisions with identical initial state quarks 2018-03-08 Structure functions quantum numbers correctly assigned for NLO 2018-02-24 Configure setup includes 'pgfortran' and 'flang' 2018-02-21 Include spin-correlated matrix elements in interactions 2018-02-15 Separate module for QED ISR structure functions ################################################################## 2018-02-10 RELEASE: version 2.6.3 2018-02-08 Improvements in memory management for PS generation 2018-01-31 Partial refactoring: quantum number assigment NLO Initial-state QCD splittings for hadron collisions 2018-01-25 Bug fix for weighted events with VAMP2 2018-01-17 Generalized interface for Recola versions 1.3+ and 2.1+ 2018-01-15 Channel equivalences also for VAMP2 integrator 2018-01-12 Fix for OCaml compiler 4.06 (and newer) 2017-12-19 RECOLA matrix elements with flavor sums can be integrated 2017-12-18 Bug fix for segmentation fault in empty resonance histories 2017-12-16 Fixing a bug in PYTHIA6 PYHEPC routine by omitting CMShowers from transferral between PYTHIA and WHIZARD event records 2017-12-15 Event index for multiple processes in event file correct ################################################################## 2017-12-13 RELEASE: version 2.6.2 2017-12-07 User can set offset in event numbers 2017-11-29 Possibility to have more than one RECOLA process in one file 2017-11-23 Transversal/mixed (and unitarized) dim-8 operators 2017-11-16 epa_q_max replaces epa_e_max (trivial factor 2) 2017-11-15 O'Mega matrix element compilation silent now 2017-11-14 Complete expanded P-wave form factor for top threshold 2017-11-10 Incoming particles can be accessed in SINDARIN 2017-11-08 Improved handling of resonance insertion, additional parameters 2017-11-04 Added Higgs-electron coupling (SM_Higgs) ################################################################## 2017-11-03 RELEASE: version 2.6.1 2017-10-20 More than 5 NLO components possible at same time 2017-10-19 Gaussian cutoff for shower resonance matching 2017-10-12 Alternative (more efficient) method to generate phase space file 2017-10-11 Bug fix for shower resonance histories for processes with multiple components 2017-09-25 Bugfix for process libraries in shower resonance histories 2017-09-21 Correctly generate pT distribution for EPA remnants 2017-09-20 Set branching ratios for unstable particles also by hand 2017-09-14 Correctly generate pT distribution for ISR photons ################################################################## 2017-09-08 RELEASE: version 2.6.0 2017-09-05 Bug fix for initial state NLO QCD flavor structures Real and virtual NLO QCD hadron collider processes work with internal interactions 2017-09-04 Fully validated MPI integration and event generation 2017-09-01 Resonance histories for shower: full support Bug fix in O'Mega model constraints O'Mega allows to output a parsable form of the DAG 2017-08-24 Resonance histories in events for transferral to parton shower (e.g. in ee -> jjjj) 2017-08-01 Alpha version of HepMC v3 interface (not yet really functional) 2017-07-31 Beta version for RECOLA OLP support 2017-07-06 Radiation generator fix for LHC processes 2017-06-30 Fix bug for NLO with structure functions and/or polarization 2017-06-23 Collinear limit for QED corrections works 2017-06-17 POWHEG grids generated already during integration 2017-06-12 Soft limit for QED corrections works 2017-05-16 Beta version of full MPI parallelization (VAMP2) Check consistency of POWHEG grid files Logfile config-summary.log for configure summary 2017-05-12 Allow polarization in top threshold 2017-05-09 Minimal demand automake 1.12.2 Silent rules for make procedures 2017-05-07 Major fix for POWHEG damping Correctly initialize FKS ISR phasespace ################################################################## 2017-05-06 RELEASE: version 2.5.0 2017-05-05 Full UFO support (SM-like models) Fixed-beam ISR FKS phase space 2017-04-26 QED splittings in radiation generator 2017-04-10 Retire deprecated O'Mega vertex cache files ################################################################## 2017-03-24 RELEASE: version 2.4.1 2017-03-16 Distinguish resonance charge in phase space channels Keep track of resonance histories in phase space Complex mass scheme default for OpenLoops amplitudes 2017-03-13 Fix helicities for polarized OpenLoops calculations 2017-03-09 Possibility to advance RNG state in rng_stream 2017-03-04 General setup for partitioning real emission phase space 2017-03-06 Bugfix on rescan command for converting event files 2017-02-27 Alternative multi-channel VEGAS implementation VAMP2: serial backbone for MPI setup Smoothstep top threshold matching 2017-02-25 Single-beam structure function with s-channel mapping supported Safeguard against invalid process libraries 2017-02-16 Radiation generator for photon emission 2017-02-10 Fixes for NLO QCD processes (color correlations) 2017-01-16 LCIO variable takes precedence over LCIO_DIR 2017-01-13 Alternative random number generator rng_stream (cf. L'Ecuyer et al.) 2017-01-01 Fix for multi-flavor BLHA tree matrix elements 2016-12-31 Grid path option for VAMP grids 2016-12-28 Alpha version of Recola OLP support 2016-12-27 Dalitz plots for FKS phase space 2016-12-14 NLO multi-flavor events possible 2016-12-09 LCIO event header information added 2016-12-02 Alpha version of RECOLA interface Bugfix for generator status in LCIO ################################################################## 2016-11-28 RELEASE: version 2.4.0 2016-11-24 Bugfix for OpenLoops interface: EW scheme is set by WHIZARD Bugfixes for top threshold implementation 2016-11-11 Refactoring of dispatching 2016-10-18 Bug fix for LCIO output 2016-10-10 First implementation for collinear soft terms 2016-10-06 First full WHIZARD models from UFO files 2016-10-05 WHIZARD does not support legacy gcc 4.7.4 any longer 2016-09-30 Major refactoring of process core and NLO components 2016-09-23 WHIZARD homogeneous entity: discarding subconfigures for CIRCE1/2, O'Mega, VAMP subpackages; these are reconstructable by script projectors 2016-09-06 Introduce main configure summary 2016-08-26 Fix memory leak in event generation ################################################################## 2016-08-25 RELEASE: version 2.3.1 2016-08-19 Bug fix for EW-scheme dependence of gluino propagators 2016-08-01 Beta version of complex mass scheme support 2016-07-26 Fix bug in POWHEG damping for the matching ################################################################## 2016-07-21 RELEASE: version 2.3.0 2016-07-20 UFO file support (alpha version) in O'Mega 2016-07-13 New (more) stable of WHIZARD GUI Support for EW schemes for OpenLoops Factorized NLO top decays for threshold model 2016-06-15 Passing factorization scale to PYTHIA6 Adding charge and neutral observables 2016-06-14 Correcting angular distribution/tweaked kinematics in non-collinear structure functions splittings 2016-05-10 Include (Fortran) TAUOLA/PHOTOS for tau decays via PYTHIA6 (backwards validation of LC CDR/TDR samples) 2016-04-27 Within OpenLoops virtuals: support for Collier library 2016-04-25 O'Mega vertex tables only loaded at first usage 2016-04-21 New CJ15 PDF parameterizations added 2016-04-21 Support for hadron collisions at NLO QCD 2016-04-05 Support for different (parameter) schemes in model files 2016-03-31 Correct transferral of lifetime/vertex from PYTHIA/TAUOLA into the event record 2016-03-21 New internal implementation of polarization via Bloch vectors, remove pointer constructions 2016-03-13 Extension of cascade syntax for processes: exclude propagators/vertices etc. possible 2016-02-24 Full support for OpenLoops QCD NLO matrix elements, inclusion in test suite 2016-02-12 Substantial progress on QCD NLO support 2016-02-02 Automated resonance mapping for FKS subtraction 2015-12-17 New BSM model WZW for diphoton resonances ################################################################## 2015-11-22 RELEASE: version 2.2.8 2015-11-21 Bugfix for fixed-order NLO events 2015-11-20 Anomalous FCNC top-charm vertices 2015-11-19 StdHEP output via HEPEVT/HEPEV4 supported 2015-11-18 Full set of electroweak dim-6 operators included 2015-10-22 Polarized one-loop amplitudes supported 2015-10-21 Fixes for event formats for showered events 2015-10-14 Callback mechanism for event output 2015-09-22 Bypass matrix elements in pure event sample rescans StdHep frozen final version v5.06.01 included internally 2015-09-21 configure option --with-precision to demand 64bit, 80bit, or 128bit Fortran and bind C precision types 2015-09-07 More extensive tests of NLO infrastructure and POWHEG matching 2015-09-01 NLO decay infrastructure User-defined squared matrix elements Inclusive FastJet algorithm plugin Numerical improvement for small boosts ################################################################## 2015-08-11 RELEASE: version 2.2.7 2015-08-10 Infrastructure for damped POWHEG Massive emitters in POWHEG Born matrix elements via BLHA GoSam filters via SINDARIN Minor running coupling bug fixes Fixed-order NLO events 2015-08-06 CT14 PDFs included (LO, NLO, NNLL) 2015-07-07 Revalidation of ILC WHIZARD-PYTHIA event chain Extended test suite for showered events Alpha version of massive FSR for POWHEG 2015-06-09 Fix memory leak in interaction for long cascades Catch mismatch between beam definition and CIRCE2 spectrum 2015-06-08 Automated POWHEG matching: beta version Infrastructure for GKS matching Alpha version of fixed-order NLO events CIRCE2 polarization averaged spectra with explicitly polarized beams 2015-05-12 Abstract matching type: OO structure for matching/merging 2015-05-07 Bug fix in event record WHIZARD-PYTHIA6 transferral Gaussian beam spectra for lepton colliders ################################################################## 2015-05-02 RELEASE: version 2.2.6 2015-05-01 Models for (unitarized) tensor resonances in VBS 2015-04-28 Bug fix in channel weights for event generation. 2015-04-18 Improved event record transfer WHIZARD/PYTHIA6 2015-03-19 POWHEG matching: alpha version ################################################################## 2015-02-27 RELEASE: version 2.2.5 2015-02-26 Abstract types for quantum numbers 2015-02-25 Read-in of StdHEP events, self-tests 2015-02-22 Bugfix for mother-daughter relations in showered/hadronized events 2015-02-20 Projection on polarization in intermediate states 2015-02-13 Correct treatment of beam remnants in event formats (also LC remnants) ################################################################## 2015-02-06 RELEASE: version 2.2.4 2015-02-06 Bugfix in event output 2015-02-05 LCIO event format supported 2015-01-30 Including state matrices in WHIZARD's internal IO Versioning for WHIZARD's internal IO Libtool update from 2.4.3 to 2.4.5 LCIO event output (beta version) 2015-01-27 Progress on NLO integration Fixing a bug for multiple processes in a single event file when using beam event files 2015-01-19 Bug fix for spin correlations evaluated in the rest frame of the mother particle 2015-01-17 Regression fix for statically linked processes from SARAH and FeynRules 2015-01-10 NLO: massive FKS emitters supported (experimental) 2015-01-06 MMHT2014 PDF sets included 2015-01-05 Handling mass degeneracies in auto_decays 2014-12-19 Fixing bug in rescan of event files ################################################################## 2014-11-30 RELEASE: version 2.2.3 2014-11-29 Beta version of LO continuum/NLL-threshold matched top threshold model for e+e- physics 2014-11-28 More internal refactoring: disentanglement of module dependencies 2014-11-21 OVM: O'Mega Virtual Machine, bytecode instructions instead of compiled Fortran code 2014-11-01 Higgs Singlet extension model included 2014-10-18 Internal restructuring of code; half-way WHIZARD main code file disassembled 2014-07-09 Alpha version of NLO infrastructure ################################################################## 2014-07-06 RELEASE: version 2.2.2 2014-07-05 CIRCE2: correlated LC beam spectra and GuineaPig Interface to LC machine parameters 2014-07-01 Reading LHEF for decayed/factorized/showered/ hadronized events 2014-06-25 Configure support for GoSAM/Ninja/Form/QGraf 2014-06-22 LHAPDF6 interface 2014-06-18 Module for automatic generation of radiation and loop infrastructure code 2014-06-11 Improved internal directory structure ################################################################## 2014-06-03 RELEASE: version 2.2.1 2014-05-30 Extensions of internal PDG arrays 2014-05-26 FastJet interface 2014-05-24 CJ12 PDFs included 2014-05-20 Regression fix for external models (via SARAH or FeynRules) ################################################################## 2014-05-18 RELEASE: version 2.2.0 2014-04-11 Multiple components: inclusive process definitions, syntax: process A + B + ... 2014-03-13 Improved PS mappings for e+e- ISR ILC TDR and CLIC spectra included in CIRCE1 2014-02-23 New models: AltH w\ Higgs for exclusion purposes, SM_rx for Dim 6-/Dim-8 operators, SSC for general strong interactions (w/ Higgs), and NoH_rx (w\ Higgs) 2014-02-14 Improved s-channel mapping, new on-shell production mapping (e.g. Drell-Yan) 2014-02-03 PRE-RELEASE: version 2.2.0_beta 2014-01-26 O'Mega: Feynman diagram generation possible (again) 2013-12-16 HOPPET interface for b parton matching 2013-11-15 PRE-RELEASE: version 2.2.0_alpha-4 2013-10-27 LHEF standards 1.0/2.0/3.0 implemented 2013-10-15 PRE-RELEASE: version 2.2.0_alpha-3 2013-10-02 PRE-RELEASE: version 2.2.0_alpha-2 2013-09-25 PRE-RELEASE: version 2.2.0_alpha-1 2013-09-12 PRE-RELEASE: version 2.2.0_alpha 2013-09-03 General 2HDM implemented 2013-08-18 Rescanning/recalculating events 2013-06-07 Reconstruction of complete event from 4-momenta possible 2013-05-06 Process library stacks 2013-05-02 Process stacks 2013-04-29 Single-particle phase space module 2013-04-26 Abstract interface for random number generator 2013-04-24 More object-orientation on modules Midpoint-rule integrator 2013-04-05 Object-oriented integration and event generation 2013-03-12 Processes recasted object-oriented: MEs, scales, structure functions First infrastructure for general Lorentz structures 2013-01-17 Object-orientated reworking of library and process core, more variable internal structure, unit tests 2012-12-14 Update Pythia version to 6.4.27 2012-12-04 Fix the phase in HAZ vertices 2012-11-21 First O'Mega unit tests, some infrastructure 2012-11-13 Bugfix in anom. HVV Lorentz structures ################################################################## 2012-09-18 RELEASE: version 2.1.1 2012-09-11 Model MSSM_Hgg with Hgg and HAA vertices 2012-09-10 First version of implementation of multiple interactions in WHIZARD 2012-09-05 Infrastructure for internal CKKW matching 2012-09-02 C, C++, Python API 2012-07-19 Fixing particle numbering in HepMC format ################################################################## 2012-06-15 RELEASE: version 2.1.0 2012-06-14 Analytical and kT-ordered shower officially released PYTHIA interface officially released 2012-05-09 Intrisince PDFs can be used for showering 2012-05-04 Anomalous Higgs couplings a la hep-ph/9902321 ################################################################## 2012-03-19 RELEASE: version 2.0.7 2012-03-15 Run IDs are available now More event variables in analysis Modified raw event format (compatibility mode exists) 2012-03-12 Bugfix in decay-integration order MLM matching steered completely internally now 2012-03-09 Special phase space mapping for narrow resonances decaying to 4-particle final states with far off-shell intermediate states Running alphas from PDF collaborations with builtin PDFs 2012-02-16 Bug fix in cascades decay infrastructure 2012-02-04 WHIZARD documentation compatible with TeXLive 2011 2012-02-01 Bug fix in FeynRules interface with --prefix flag 2012-01-29 Bug fix with name clash of O'Mega variable names 2012-01-27 Update internal PYTHIA to version 6.4.26 Bug fix in LHEF output 2012-01-21 Catching stricter automake 1.11.2 rules 2011-12-23 Bug fix in decay cascade setup 2011-12-20 Bug fix in helicity selection rules 2011-12-16 Accuracy goal reimplemented 2011-12-14 WHIZARD compatible with TeXLive 2011 2011-12-09 Option --user-target added ################################################################## 2011-12-07 RELEASE: version 2.0.6 2011-12-07 Bug fixes in SM_top_anom Added missing entries to HepMC format 2011-12-06 Allow to pass options to O'Mega Bug fix for HEPEVT block for showered/hadronized events 2011-12-01 Reenabled user plug-in for external code for cuts, structure functions, routines etc. 2011-11-29 Changed model SM_Higgs for Higgs phenomenology 2011-11-25 Supporting a Y, (B-L) Z' model 2011-11-23 Make WHIZARD compatible for MAC OS X Lion/XCode 4 2011-09-25 WHIZARD paper published: Eur.Phys.J. C71 (2011) 1742 2011-08-16 Model SM_QCD: QCD with one EW insertion 2011-07-19 Explicit output channel for dvips avoids printing 2011-07-10 Test suite for WHIZARD unit tests 2011-07-01 Commands for matrix element tests More OpenMP parallelization of kinematics Added unit tests 2011-06-23 Conversion of CIRCE2 from F77 to F90, major clean-up 2011-06-14 Conversion of CIRCE1 from F77 to F90 2011-06-10 OpenMP parallelization of channel kinematics (by Matthias Trudewind) 2011-05-31 RELEASE: version 1.97 2011-05-24 Minor bug fixes: update grids and elsif statement. ################################################################## 2011-05-10 RELEASE: version 2.0.5 2011-05-09 Fixed bug in final state flavor sums Minor improvements on phase-space setup 2011-05-05 Minor bug fixes 2011-04-15 WHIZARD as a precompiled 64-bit binary available 2011-04-06 Wall clock instead of cpu time for time estimates 2011-04-05 Major improvement on the phase space setup 2011-04-02 OpenMP parallelization for helicity loop in O'Mega matrix elements 2011-03-31 Tools for relocating WHIZARD and use in batch environments 2011-03-29 Completely static builds possible, profiling options 2011-03-28 Visualization of integration history 2011-03-27 Fixed broken K-matrix implementation 2011-03-23 Including the GAMELAN manual in the distribution 2011-01-26 WHIZARD analysis can handle hadronized event files 2011-01-17 MSTW2008 and CT10 PDF sets included 2010-12-23 Inclusion of NMSSM with Hgg couplings 2010-12-21 Advanced options for integration passes 2010-11-16 WHIZARD supports CTEQ6 and possibly other PDFs directly; data files included in the distribution ################################################################## 2010-10-26 RELEASE: version 2.0.4 2010-10-06 Bug fix in MSSM implementation 2010-10-01 Update to libtool 2.4 2010-09-29 Support for anomalous top couplings (form factors etc.) Bug fix for running gauge Yukawa SUSY couplings 2010-09-28 RELEASE: version 1.96 2010-09-21 Beam remnants and pT spectra for lepton collider re-enabled Restructuring subevt class 2010-09-16 Shower and matching are disabled by default PYTHIA as a conditional on these two options 2010-09-14 Possibility to read in beam spectra re-enabled (e.g. Guinea Pig) 2010-09-13 Energy scan as (pseudo-) structure functions re-implemented 2010-09-10 CIRCE2 included again in WHIZARD 2 and validated 2010-09-02 Re-implementation of asymmetric beam energies and collision angles, e-p collisions work, inclusion of a HERA DIS test case ################################################################## 2010-10-18 RELEASE: version 2.0.3 2010-08-08 Bug in CP-violating anomalous triple TGCs fixed 2010-08-06 Solving backwards compatibility problem with O'Caml 3.12.0 2010-07-12 Conserved quantum numbers speed up O'Mega code generation 2010-07-07 Attaching full ISR/FSR parton shower and MPI/ISR module Added SM model containing Hgg, HAA, HAZ vertices 2010-07-02 Matching output available as LHEF and STDHEP 2010-06-30 Various bug fixes, missing files, typos 2010-06-26 CIRCE1 completely re-enabled Chaining structure functions supported 2010-06-25 Partial support for conserved quantum numbers in O'Mega 2010-06-21 Major upgrade of the graphics package: error bars, smarter SINDARIN steering, documentation, and all that... 2010-06-17 MLM matching with PYTHIA shower included 2010-06-16 Added full CIRCE1 and CIRCE2 versions including full documentation and miscellanea to the trunk 2010-06-12 User file management supported, improved variable and command structure 2010-05-24 Improved handling of variables in local command lists 2010-05-20 PYTHIA interface re-enabled 2010-05-19 ASCII file formats for interfacing ROOT and gnuplot in data analysis ################################################################## 2010-05-18 RELEASE: version 2.0.2 2010-05-14 Reimplementation of visualization of phase space channels Minor bug fixes 2010-05-12 Improved phase space - elimination of redundancies 2010-05-08 Interface for polarization completed: polarized beams etc. 2010-05-06 Full quantum numbers appear in process log Integration results are usable as user variables Communication with external programs 2010-05-05 Split module commands into commands, integration, simulation modules 2010-05-04 FSR+ISR for the first time connected to the WHIZARD 2 core ################################################################## 2010-04-25 RELEASE: version 2.0.1 2010-04-23 Automatic compile and integrate if simulate is called Minor bug fixes in O'Mega 2010-04-21 Checkpointing for event generation Flush statements to use WHIZARD inside a pipe 2010-04-20 Reimplementation of signal handling in WGIZARD 2.0 2010-04-19 VAMP is now a separately configurable and installable unit of WHIZARD, included VAMP self-checks Support again compilation in quadruple precision 2010-04-06 Allow for logarithmic plots in GAMELAN, reimplement the possibility to set the number of bins 2010-04-15 Improvement on time estimates for event generation ################################################################## 2010-04-12 RELEASE: version 2.0.0 2010-04-09 Per default, the code for the amplitudes is subdivided to allow faster compiler optimization More advanced and unified and straightforward command language syntax Final bug fixes 2010-04-07 Improvement on SINDARIN syntax; printf, sprintf function thorugh a C interface 2010-04-05 Colorizing DAGs instead of model vertices: speed boost in colored code generation 2010-03-31 Generalized options for normalization of weighted and unweighted events Grid and weight histories added again to log files Weights can be used in analyses 2010-03-28 Cascade decays completely implemented including color and spin correlations 2010-03-07 Added new WHIZARD header with logo 2010-03-05 Removed conflict in O'Mega amplitudes between flavour sums and cascades StdHEP interface re-implemented 2010-03-03 RELEASE: version 2.0.0rc3 Several bug fixes for preventing abuse in input files OpenMP support for amplitudes Reimplementation of WHIZARD 1 HEPEVT ASCII event formats FeynRules interface successfully passed MSSM test 2010-02-26 Eliminating ghost gluons from multi-gluon amplitudes 2010-02-25 RELEASE: version 1.95 HEPEVT format from WHIZARD 1 re-implemented in WHIZARD 2 2010-02-23 Running alpha_s implemented in the FeynRules interface 2010-02-19 MSSM (semi-) automatized self-tests finalized 2010-02-17 RELEASE: version 1.94 2010-02-16 Closed memory corruption in WHIZARD 1 Fixed problems of old MadGraph and CompHep drivers with modern compilers Uncolored vertex selection rules for colored amplitudes in O'Mega 2010-02-15 Infrastructure for color correlation computation in O'Mega finished Forbidden processes are warned about, but treated as non-fatal 2010-02-14 Color correlation computation in O'Mega finalized 2010-02-10 Improving phase space mappings for identical particles in initial and final states Introduction of more extended multi-line error message 2010-02-08 First O'Caml code for computation of color correlations in O'Mega 2010-02-07 First MLM matching with e+ e- -> jets ################################################################## 2010-02-06 RELEASE: version 2.0.0rc2 2010-02-05 Reconsidered the Makefile structure and more extended tests Catch a crash between WHIZARD and O'Mega for forbidden processes Tensor products of arbitrary color structures in jet definitions 2010-02-04 Color correlation computation in O'Mega finalized ################################################################## 2010-02-03 RELEASE: version 2.0.0rc1 ################################################################## 2010-01-31 Reimplemented numerical helicity selection rules Phase space functionality of version 1 restored and improved 2009-12-05 NMSSM validated with FeynRules in WHIZARD 1 (Felix Braam) 2009-12-04 RELEASE: version 2.0.0alpha ################################################################## 2009-04-16 RELEASE: version 1.93 2009-04-15 Clean-up of Makefiles and configure scripts Reconfiguration of BSM model implementation extended supersymmetric models 2008-12-23 New model NMSSM (Felix Braam) SLHA2 added Bug in LHAPDF interface fixed 2008-08-16 Bug fixed in K matrix implementation Gravitino option in the MSSM added 2008-03-20 Improved color and flavor sums ################################################################## 2008-03-12 RELEASE: version 1.92 LHEF (Les Houches Event File) format added Fortran 2003 command-line interface (if supported by the compiler) Automated interface to colored models More bug fixes and workarounds for compiler compatibility ################################################################## 2008-03-06 RELEASE: version 1.91 New model K-matrix (resonances and anom. couplings in WW scattering) EWA spectrum Energy-scan pseudo spectrum Preliminary parton shower module (only from final-state quarks) Cleanup and improvements of configure process Improvements for O'Mega parameter files Quadruple precision works again More plotting options: lines, symbols, errors Documentation with PDF bookmarks enabled Various bug fixes 2007-11-29 New model UED ################################################################## 2007-11-23 RELEASE: version 1.90 O'Mega now part of the WHIZARD tree Madgraph/CompHEP disabled by default (but still usable) Support for LHAPDF (preliminary) Added new models: SMZprime, SM_km, Template Improved compiler recognition and compatibility Minor bug fixes ################################################################## 2006-06-15 RELEASE: version 1.51 Support for anomaly-type Higgs couplings (to gluon and photon/Z) Support for spin 3/2 and spin 2 New models: Little Higgs (4 versions), toy models for extra dimensions and gravitinos Fixes to the whizard.nw source documentation to run through LaTeX Intel 9.0 bug workaround (deallocation of some arrays) 2006-05-15 O'Mega RELEASE: version 0.11 merged JRR's O'Mega extensions ################################################################## 2006-02-07 RELEASE: version 1.50 To avoid confusion: Mention outdated manual example in BUGS file O'Mega becomes part of the WHIZARD generator 2006-02-02 [bug fix update] Bug fix: spurious error when writing event files for weighted events Bug fix: 'r' option for omega produced garbage for some particle names Workaround for ifort90 bug (crash when compiling whizard_event) Workaround for ifort90 bug (crash when compiling hepevt_common) 2006-01-27 Added process definition files for MSSM 2->2 processes Included beam recoil for EPA (T.Barklow) Updated STDHEP byte counts (for STDHEP 5.04.02) Fixed STDHEP compatibility (avoid linking of incomplete .so libs) Fixed issue with comphep requiring Xlibs on Opteron Fixed issue with ifort 8.x on Opteron (compiling 'signal' interface) Fixed color-flow code: was broken for omega with option 'c' and 'w' Workaround hacks for g95 compatibility 2005-11-07 O'Mega RELEASE: version 0.10 O'Mega, merged JRR's and WK's color hack for WHiZard O'Mega, EXPERIMENTAL: cache fusion tables (required for colors a la JRR/WK) O'Mega, make JRR's MSSM official ################################################################## 2005-10-25 RELEASE: version 1.43 Minor fixes in MSSM couplings (Higgs/3rd gen squarks). This should be final, since the MSSM results agree now completely with Madgraph and Sherpa User-defined lower and upper limits for split event file count Allow for counters (events, bytes) exceeding $2^{31}$ Revised checksum treatment and implementation (now MD5) Bug fix: missing process energy scale in raw event file ################################################################## 2005-09-30 RELEASE: version 1.42 Graphical display of integration history ('make history') Allow for switching off signals even if supported (configure option) 2005-09-29 Revised phase space generation code, in particular for flavor sums Negative cut and histogram codes use initial beams instead of initial parton momenta. This allows for computing, e.g., E_miss Support constant-width and zero-width options for O'Mega Width options now denoted by w:X (X=f,c,z). f option obsolescent Bug fix: colorized code: flipped indices could screw up result Bug fix: O'Mega with 'c' and 'w:f' option together (still some problem) Bug fix: dvips on systems where dvips defaults to lpr Bug fix: integer overflow if too many events are requested 2005-07-29 Allow for 2 -> 1 processes (if structure functions are on) 2005-07-26 Fixed and expanded the 'test' matrix element: Unit matrix element with option 'u' / default: normalized phase space ################################################################## 2005-07-15 RELEASE: version 1.41 Bug fix: no result for particle decay processes with width=0 Bug fix: line breaks in O'Mega files with color decomposition 2005-06-02 New self-tests (make test-QED / test-QCD / test-SM) check lists of 2->2 processes Bug fix: HELAS calling convention for wwwwxx and jwwwxx (4W-Vertex) 2005-05-25 Revised Makefile structure Eliminated obsolete references to ISAJET/SUSY (superseded by SLHA) 2005-05-19 Support for color in O'Mega (using color flow decomposition) New model QCD Parameter file changes that correspond to replaced SM module in O'Mega Bug fixes in MSSM (O'Mega) parameter file 2005-05-18 New event file formats, useful for LHC applications: ATHENA and Les Houches Accord (external fragmentation) Naive (i.e., leading 1/N) color factor now implemented both for incoming and outgoing partons 2005-01-26 include missing HELAS files for bundle pgf90 compatibility issues [note: still internal error in pgf90] ################################################################## 2004-12-13 RELEASE: version 1.40 compatibility fix: preprocessor marks in helas code now commented out minor bug fix: format string in madgraph source 2004-12-03 support for arbitray beam energies and directions allow for pT kick in structure functions bug fix: rounding error could result in zero cross section (compiler-dependent) 2004-10-07 simulate decay processes list fraction (of total width/cross section) instead of efficiency in process summary new cut/analysis parameters AA, AAD, CTA: absolute polar angle 2004-10-04 Replaced Madgraph I by Madgraph II. Main improvement: model no longer hardcoded introduced parameter reset_seed_each_process (useful for debugging) bug fix: color initialization for some processes was undefined 2004-09-21 don't compile unix_args module if it is not required ################################################################## 2004-09-20 RELEASE: version 1.30 g95 compatibility issues resolved some (irrelevant) memory leaks closed removed obsolete warning in circe1 manual update (essentially) finished 2004-08-03 O'Mega RELEASE: version 0.9 O'Mega, src/trie.mli, src/trie.ml: make interface compatible with the O'Caml 3.08 library (remains compatible with older versions). Implementation of unused functions still incomplete. 2004-07-26 minor fixes and improvements in make process 2004-06-29 workarounds for new Intel compiler bugs ... no rebuild of madgraph/comphep executables after 'make clean' bug fix in phase space routine: wrong energy for massive initial particles bug fix in (new) model interface: name checks for antiparticles pre-run checks for comphep improved ww-strong model file extended Model files particle name fixes, chep SM vertices included 2004-06-22 O'Mega RELEASE: version 0.8 O'Mega MSSM: sign of W+/W-/A and W+/W-/Z couplings 2004-05-05 Fixed bug in PDFLIB interface: p+pbar was initialized as p+p (ThO) NAG compiler: set number of continuation lines to 200 as default Extended format for cross section summary; appears now in whizard.out Fixed 'bundle' feature 2004-04-28 Fixed compatibility with revised O'Mega SM_ac model Fixed problem with x=0 or x=1 when calling PDFLIB (ThO) Fixed bug in comphep module: Vtb was overlooked ################################################################## 2004-04-15 RELEASE: version 1.28 Fixed bug: Color factor was missing for O'Mega processes with four quarks and more Manual partially updated 2004-04-08 Support for grid files in binary format New default value show_histories=F (reduce output file size) Revised phase space switches: removed annihilation_lines, removed s_channel_resonance, changed meaning of extra_off_shell_lines, added show_deleted_channels Bug fixed which lead to omission of some phase space channels Color flow guessed only if requested by guess_color_flow 2004-03-10 New model interface: Only one model name specified in whizard.prc All model-dependent files reside in conf/models (modellib removed) 2004-03-03 Support for input/output in SUSY Les Houches Accord format Split event files if requested Support for overall time limit Support for CIRCE and CIRCE2 generator mode Support for reading beam events from file 2004-02-05 Fixed compiler problems with Intel Fortran 7.1 and 8.0 Support for catching signals ################################################################## 2003-08-06 RELEASE: version 1.27 User-defined PDF libraries as an alternative to the standard PDFLIB 2003-07-23 Revised phase space module: improved mappings for massless particles, equivalences of phase space channels are exploited Improved mapping for PDF (hadron colliders) Madgraph module: increased max number of color flows from 250 to 1000 ################################################################## 2003-06-23 RELEASE: version 1.26 CIRCE2 support Fixed problem with 'TC' integer kind [Intel compiler complained] 2003-05-28 Support for drawing histograms of grids Bug fixes for MSSM definitions ################################################################## 2003-05-22 RELEASE: version 1.25 Experimental MSSM support with ISAJET interface Improved capabilities of generating/analyzing weighted events Optional drawing phase space diagrams using FeynMF ################################################################## 2003-01-31 RELEASE: version 1.24 A few more fixes and workarounds (Intel and Lahey compiler) 2003-01-15 Fixes and workarounds needed for WHIZARD to run with Intel compiler Command-line option interface for the Lahey compiler Bug fix: problem with reading whizard.phs ################################################################## 2002-12-10 RELEASE: version 1.23 Command-line options (on some systems) Allow for initial particles in the event record, ordered: [beams, initials] - [remnants] - outgoing partons Support for PYTHIA 6.2: Les Houches external process interface String pythia_parameters can be up to 1000 characters long Select color flow states in (internal) analysis Bug fix in color flow content of raw event files Support for transversal polarization of fermion beams Cut codes: PHI now for absolute azimuthal angle, DPHI for distance 'Test' matrix elements optionally respect polarization User-defined code can be inserted for spectra, structure functions and fragmentation Time limits can be specified for adaptation and simulation User-defined file names and file directory Initial weights in input file no longer supported Bug fix in MadGraph (wave function counter could overflow) Bug fix: Gamelan (graphical analysis) was not built if noweb absent ################################################################## 2002-03-16 RELEASE: version 1.22 Allow for beam remnants in the event record 2002-03-01 Handling of aliases in whizard.prc fixed (aliases are whole tokens) 2002-02-28 Optimized phase space handling routines (total execution time reduced by 20-60%, depending on process) ################################################################## 2002-02-26 RELEASE: version 1.21 Fixed ISR formula (ISR was underestimated in previous versions). New version includes ISR in leading-log approximation up to third order. Parameter ISR_sqrts renamed to ISR_scale. ################################################################## 2002-02-19 RELEASE: version 1.20 New process-generating method 'test' (dummy matrix element) Compatibility with autoconf 2.50 and current O'Mega version 2002-02-05 Prevent integration channels from being dropped (optionally) New internal mapping for structure functions improves performance Old whizard.phx file deleted after recompiling (could cause trouble) 2002-01-24 Support for user-defined cuts and matrix element reweighting STDHEP output now written by write_events_format=20 (was 3) 2002-01-16 Improved structure function handling; small changes in user interface: new parameter structured_beams in &process_input parameter fixed_energy in &beam_input removed Support for multiple initial states Eta-phi (cone) cut possible (hadron collider applications) Fixed bug: Whizard library was not always recompiled when necessary Fixed bug: Default cuts were insufficient in some cases Fixed bug: Unusable phase space mappings generated in some cases 2001-12-06 Reorganized document source 2001-12-05 Preliminary CIRCE2 support (no functionality yet) 2001-11-27 Intel compiler support (does not yet work because of compiler bugs) New cut and analysis mode cos-theta* and related Fixed circular jetset_interface dependency warning Some broadcast routines removed (parallel support disabled anyway) Minor shifts in cleanup targets (Makefiles) Modified library search, check for pdflib8* 2001-08-06 Fixed bug: I/O unit number could be undefined when reading phase space Fixed bug: Unitialized variable could cause segfault when event generation was disabled Fixed bug: Undefined subroutine in CIRCE replacement module Enabled feature: TGCs in O'Mega (not yet CompHEP!) matrix elements (CompHEP model sm-GF #5, O'Mega model SM_ac) Fixed portability issue: Makefile did rely on PWD environment variable Fixed portability issue: PYTHIA library search ambiguity resolved 2001-08-01 Default whizard.prc and whizard.in depend on activated modules Fixed bug: TEX=latex was not properly enabled when making plots 2001-07-20 Fixed output settings in PERL script calls Cache enabled in various configure checks 2001-07-13 Support for multiple processes in a single WHIZARD run. The integrations are kept separate, but the generated events are mixed The whizard.evx format has changed (incompatible), including now the color flow information for PYTHIA fragmentation Output files are now process-specific, except for the event file Phase space file whizard.phs (if present) is used only as input, program-generated phase space is now in whizard.phx 2001-07-10 Bug fix: Undefined parameters in parameters_SM_ac.f90 removed 2001-07-04 Bug fix: Compiler options for the case OMEGA is disabled Small inconsistencies in whizard.out format fixed 2001-07-01 Workaround for missing PDFLIB dummy routines in PYTHIA library ################################################################## 2001-06-30 RELEASE: version 1.13 Default path /cern/pro/lib in configure script 2001-06-20 New fragmentation option: Interface for PYTHIA with full color flow information, beam remnants etc. 2001-06-18 Severe bug fixed in madgraph interface: 3-gluon coupling was missing Enabled color flow information in madgraph 2001-06-11 VAMP interface module rewritten Revised output format: Multiple VAMP iterations count as one WHIZARD iteration in integration passes 1 and 3 Improved message and error handling Bug fix in VAMP: handle exceptional cases in rebinning_weights 2001-05-31 new parameters for grid adaptation: accuracy_goal and efficiency_goal ################################################################## 2001-05-29 RELEASE: version 1.12 bug fixes (compilation problems): deleted/modified unused functions 2001-05-16 diagram selection improved and documented 2001-05-06 allow for disabling packages during configuration 2001-05-03 slight changes in whizard.out format; manual extended ################################################################## 2001-04-20 RELEASE: version 1.11 fixed some configuration and compilation problems (PDFLIB etc.) 2001-04-18 linked PDFLIB: support for quark/gluon structure functions 2001-04-05 parameter interface written by PERL script SM_ac model file: fixed error in continuation line 2001-03-13 O'Mega, O'Caml 3.01: incompatible changes O'Mega, src/trie.mli: add covariance annotation to T.t This breaks O'Caml 3.00, but is required for O'Caml 3.01. O'Mega, many instances: replace `sig include Module.T end' by `Module.T', since the bug is fixed in O'Caml 3.01 2001-02-28 O'Mega, src/model.mli: new field Model.vertices required for model functors, will retire Model.fuse2, Model.fuse3, Model.fusen soon. ################################################################## 2001-03-27 RELEASE: version 1.10 reorganized the modules as libraries linked PYTHIA: support for parton fragmentation 2000-12-14 fixed some configuration problems (if noweb etc. are absent) ################################################################## 2000-12-01 RELEASE of first public version: version 1.00beta