diff --git a/config/pac.m4 b/config/pac.m4 index 5dc4e0c5..c9f55d94 100644 --- a/config/pac.m4 +++ b/config/pac.m4 @@ -1792,6 +1792,9 @@ AC_DEFUN(PAC_CHECK_METIS, Default: "-lmetis"]), [psblas_cv_metis=$withval], [psblas_cv_metis='-lmetis']) +AC_ARG_WITH(metisincfile, AC_HELP_STRING([--with-metisincfile=DIR], [Specify the name for METIS include file.]), + [psblas_cv_metisincfile=$withval], + [psblas_cv_metisincfile='metis.h']) AC_ARG_WITH(metisdir, AC_HELP_STRING([--with-metisdir=DIR], [Specify the directory for METIS library and includes.]), [psblas_cv_metisdir=$withval], [psblas_cv_metisdir='']) @@ -1821,7 +1824,7 @@ if test "x$psblas_cv_metislibdir" != "x"; then fi AC_MSG_NOTICE([metis dir $psblas_cv_metisdir]) -AC_CHECK_HEADERS([limits.h metis.h], +AC_CHECK_HEADERS([limits.h $psblas_cv_metisincfile], [pac_metis_header_ok=yes], [pac_metis_header_ok=no; METIS_INCLUDES=""]) if test "x$pac_metis_header_ok" == "xno" ; then @@ -1831,7 +1834,7 @@ dnl Maybe Include or include subdirs? CPPFLAGS="$METIS_INCLUDES $SAVE_CPPFLAGS" AC_MSG_CHECKING([for metis_h in $METIS_INCLUDES]) - AC_CHECK_HEADERS([limits.h metis.h], + AC_CHECK_HEADERS([limits.h $psblas_cv_metisincfile], [pac_metis_header_ok=yes], [pac_metis_header_ok=no; METIS_INCLUDES=""]) fi @@ -1840,11 +1843,27 @@ dnl Maybe new structure with METIS UFconfig METIS? unset ac_cv_header_metis_h METIS_INCLUDES="-I$psblas_cv_metisdir/UFconfig -I$psblas_cv_metisdir/METIS/Include -I$psblas_cv_metisdir/METIS/Include" CPPFLAGS="$METIS_INCLUDES $SAVE_CPPFLAGS" - AC_CHECK_HEADERS([limits.h metis.h], + AC_CHECK_HEADERS([limits.h $psblas_cv_metisincfile], [pac_metis_header_ok=yes], [pac_metis_header_ok=no; METIS_INCLUDES=""]) fi +if test "x$pac_metis_header_ok" == "xyes" ; then + AC_LANG_PUSH([C]) + AC_MSG_CHECKING([for METIS idx size]) + AC_LINK_IFELSE([AC_LANG_SOURCE( + #include + #include "$psblas_cv_metisincfile" + void main(){ + printf("%d\n",IDXTYPEWIDTH); + } + )], + [pac_cv_metis_idx=`./conftest${ac_exeext} | sed 's/^ *//'`], + [pac_cv_metis_idx="unknown"]) + AC_MSG_RESULT($pac_cv_metis_idx) + + AC_LANG_POP() +fi if test "x$pac_metis_header_ok" == "xyes" ; then psblas_cv_metis_includes="$METIS_INCLUDES" diff --git a/configure b/configure index 727f56c3..ccefc2c0 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for PSBLAS 3.5. +# Generated by GNU Autoconf 2.69 for PSBLAS 3.7.0. # # Report bugs to . # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='PSBLAS' PACKAGE_TARNAME='psblas' -PACKAGE_VERSION='3.5' -PACKAGE_STRING='PSBLAS 3.5' +PACKAGE_VERSION='3.7.0' +PACKAGE_STRING='PSBLAS 3.7.0' PACKAGE_BUGREPORT='https://github.com/sfilippone/psblas3/issues' PACKAGE_URL='' @@ -626,6 +626,7 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS +METISINCFILE UTILLIBNAME METHDLIBNAME PRECLIBNAME @@ -676,7 +677,6 @@ am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE -am__quote am__include DEPDIR am__untar @@ -753,7 +753,8 @@ PACKAGE_VERSION PACKAGE_TARNAME PACKAGE_NAME PATH_SEPARATOR -SHELL' +SHELL +am__quote' ac_subst_files='' ac_user_opts=' enable_option_checking @@ -775,6 +776,7 @@ with_blasdir with_lapack with_rsb with_metis +with_metisincfile with_metisdir with_metisincdir with_metislibdir @@ -1336,7 +1338,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures PSBLAS 3.5 to adapt to many kinds of systems. +\`configure' configures PSBLAS 3.7.0 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1402,7 +1404,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of PSBLAS 3.5:";; + short | recursive ) echo "Configuration of PSBLAS 3.7.0:";; esac cat <<\_ACEOF @@ -1454,6 +1456,7 @@ Optional Packages: configure script invoke librsb-config) --with-metis=LIBNAME Specify the library name for METIS library. Default: "-lmetis" + --with-metisincfile=DIR Specify the name for METIS include file. --with-metisdir=DIR Specify the directory for METIS library and includes. --with-metisincdir=DIR Specify the directory for METIS includes. @@ -1544,7 +1547,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -PSBLAS configure 3.5 +PSBLAS configure 3.7.0 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2180,7 +2183,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by PSBLAS $as_me 3.5, which was +It was created by PSBLAS $as_me 3.7.0, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2531,7 +2534,7 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu # VERSION is the file containing the PSBLAS version code # FIXME -psblas_cv_version="3.5" +psblas_cv_version="3.7.0" # A sample source file @@ -3515,6 +3518,68 @@ ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + CFLAGS="$save_CFLAGS"; @@ -4942,7 +5007,7 @@ else fi -am__api_version='1.13' +am__api_version='1.16' { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } @@ -5021,9 +5086,6 @@ test "$program_suffix" != NONE && ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - if test x"${MISSING+set}" != xset; then case $am_aux_dir in *\ * | *\ *) @@ -5041,7 +5103,7 @@ else $as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi -if test x"${install_sh}" != xset; then +if test x"${install_sh+set}" != xset; then case $am_aux_dir in *\ * | *\ *) install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; @@ -5278,45 +5340,45 @@ DEPDIR="${am__leading_dot}deps" ac_config_commands="$ac_config_commands depfiles" - -am_make=${MAKE-make} -cat > confinc << 'END' +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} supports the include directive" >&5 +$as_echo_n "checking whether ${MAKE-make} supports the include directive... " >&6; } +cat > confinc.mk << 'END' am__doit: - @echo this is the am__doit target + @echo this is the am__doit target >confinc.out .PHONY: am__doit END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } am__include="#" am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from 'make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD +# BSD make does it like this. +echo '.include "confinc.mk" # ignored' > confmf.BSD +# Other make implementations (GNU, Solaris 10, AIX) do it like this. +echo 'include confinc.mk # ignored' > confmf.GNU +_am_result=no +for s in GNU BSD; do + { echo "$as_me:$LINENO: ${MAKE-make} -f confmf.$s && cat confinc.out" >&5 + (${MAKE-make} -f confmf.$s && cat confinc.out) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } + case $?:`cat confinc.out 2>/dev/null` in #( + '0:this is the am__doit target') : + case $s in #( + BSD) : + am__include='.include' am__quote='"' ;; #( + *) : + am__include='include' am__quote='' ;; +esac ;; #( + *) : ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf +esac + if test "$am__include" != "#"; then + _am_result="yes ($s style)" + break + fi +done +rm -f confinc.* confmf.* +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: ${_am_result}" >&5 +$as_echo "${_am_result}" >&6; } # Check whether --enable-dependency-tracking was given. if test "${enable_dependency_tracking+set}" = set; then : @@ -5398,7 +5460,7 @@ fi # Define the identity of the package. PACKAGE='psblas' - VERSION='3.5' + VERSION='3.7.0' cat >>confdefs.h <<_ACEOF @@ -5428,12 +5490,12 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} # For better backward compatibility. To be removed once Automake 1.9.x # dies out for good. For more background, see: -# -# +# +# mkdir_p='$(MKDIR_P)' -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. # Always define AMTAR for backward compatibility. Yes, it's still used # in the wild :-( We should find a proper way to deprecate it ... AMTAR='$${TAR-tar}' @@ -5577,6 +5639,48 @@ fi +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + @@ -7260,10 +7364,6 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -# -# Optional features -# - { $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran VOLATILE" >&5 $as_echo_n "checking support for Fortran VOLATILE... " >&6; } ac_ext=${ac_fc_srcext-f} @@ -7283,12 +7383,13 @@ _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - FDEFINES="$psblas_cv_define_prepend-DHAVE_VOLATILE $FDEFINES" + : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 + as_fn_error $? "Sorry, cannot build PSBLAS without support for VOLATILE" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7300,31 +7401,21 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking test GENERIC interfaces" >&5 -$as_echo_n "checking test GENERIC interfaces... " >&6; } -ac_ext=${ac_fc_srcext-f} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ISO_FORTRAN_ENV" >&5 +$as_echo_n "checking support for ISO_FORTRAN_ENV... " >&6; } + ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' - ac_ext='F90' + ac_ext='f90' ac_fc=${MPIFC-$FC}; cat > conftest.$ac_ext <<_ACEOF -module conftest - - interface foo - subroutine i_sub_foo(v) - integer, intent(inout) :: v(:) - end subroutine i_sub_foo - end interface foo - - interface bar - procedure i_sub_foo - end interface bar - -end module conftest + program test + use iso_fortran_env + end program test _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 @@ -7335,7 +7426,7 @@ else $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 - FDEFINES="$psblas_cv_define_prepend-DHAVE_BUGGY_GENERICS $FDEFINES" + as_fn_error $? "Sorry, cannot build PSBLAS without support for ISO_FORTRAN_ENV" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7347,8 +7438,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran FLUSH statement" >&5 -$as_echo_n "checking support for Fortran FLUSH statement... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran FINAL" >&5 +$as_echo_n "checking support for Fortran FINAL... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' @@ -7359,23 +7450,35 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_fc=${MPIFC-$FC}; cat > conftest.$ac_ext <<_ACEOF +module conftest_mod + type foo + integer :: i + contains + final :: destroy_foo + end type foo + + private destroy_foo +contains + subroutine destroy_foo(a) + type(foo) :: a + ! Just a test + end subroutine destroy_foo +end module conftest_mod program conftest - integer :: iunit=10 - open(10) - write(10,*) 'Test ' - flush(10) - close(10) + use conftest_mod + type(foo) :: foovar end program conftest _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - FDEFINES="$psblas_cv_define_prepend-DHAVE_FLUSH_STMT $FDEFINES" + : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 + as_fn_error $? "Sorry, cannot build PSBLAS without support for FINAL" "$LINENO" 5 fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7387,31 +7490,48 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for ISO_FORTRAN_ENV" >&5 -$as_echo_n "checking support for ISO_FORTRAN_ENV... " >&6; } - ac_ext=${ac_fc_srcext-f} + +# +# Optional features +# + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking test GENERIC interfaces" >&5 +$as_echo_n "checking test GENERIC interfaces... " >&6; } +ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_exeext='' - ac_ext='f90' + ac_ext='F90' ac_fc=${MPIFC-$FC}; cat > conftest.$ac_ext <<_ACEOF - program test - use iso_fortran_env - end program test +module conftest + + interface foo + subroutine i_sub_foo(v) + integer, intent(inout) :: v(:) + end subroutine i_sub_foo + end interface foo + + interface bar + procedure i_sub_foo + end interface bar + +end module conftest _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - FDEFINES="$psblas_cv_define_prepend-DHAVE_ISO_FORTRAN_ENV $FDEFINES" + : else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } echo "configure: failed program was:" >&5 cat conftest.$ac_ext >&5 + FDEFINES="$psblas_cv_define_prepend-DHAVE_BUGGY_GENERICS $FDEFINES" fi rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext @@ -7423,8 +7543,8 @@ ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran FINAL" >&5 -$as_echo_n "checking support for Fortran FINAL... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking support for Fortran FLUSH statement" >&5 +$as_echo_n "checking support for Fortran FLUSH statement... " >&6; } ac_ext=${ac_fc_srcext-f} ac_compile='$FC -c $FCFLAGS $ac_fcflags_srcext conftest.$ac_ext >&5' ac_link='$FC -o conftest$ac_exeext $FCFLAGS $LDFLAGS $ac_fcflags_srcext conftest.$ac_ext $LIBS >&5' @@ -7435,29 +7555,18 @@ ac_compiler_gnu=$ac_cv_fc_compiler_gnu ac_fc=${MPIFC-$FC}; cat > conftest.$ac_ext <<_ACEOF -module conftest_mod - type foo - integer :: i - contains - final :: destroy_foo - end type foo - - private destroy_foo -contains - subroutine destroy_foo(a) - type(foo) :: a - ! Just a test - end subroutine destroy_foo -end module conftest_mod program conftest - use conftest_mod - type(foo) :: foovar + integer :: iunit=10 + open(10) + write(10,*) 'Test ' + flush(10) + close(10) end program conftest _ACEOF if ac_fn_fc_try_compile "$LINENO"; then : { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - FDEFINES="$psblas_cv_define_prepend-DHAVE_FINAL $FDEFINES" + FDEFINES="$psblas_cv_define_prepend-DHAVE_FLUSH_STMT $FDEFINES" else { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 $as_echo "no" >&6; } @@ -8756,6 +8865,14 @@ else fi +# Check whether --with-metisincfile was given. +if test "${with_metisincfile+set}" = set; then : + withval=$with_metisincfile; psblas_cv_metisincfile=$withval +else + psblas_cv_metisincfile='metis.h' +fi + + # Check whether --with-metisdir was given. if test "${with_metisdir+set}" = set; then : withval=$with_metisdir; psblas_cv_metisdir=$withval @@ -8805,7 +8922,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: metis dir $psblas_cv_metisdir" >&5 $as_echo "$as_me: metis dir $psblas_cv_metisdir" >&6;} -for ac_header in limits.h metis.h +for ac_header in limits.h $psblas_cv_metisincfile do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -8827,7 +8944,7 @@ if test "x$pac_metis_header_ok" == "xno" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: checking for metis_h in $METIS_INCLUDES" >&5 $as_echo_n "checking for metis_h in $METIS_INCLUDES... " >&6; } - for ac_header in limits.h metis.h + for ac_header in limits.h $psblas_cv_metisincfile do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -8847,7 +8964,7 @@ if test "x$pac_metis_header_ok" == "xno" ; then unset ac_cv_header_metis_h METIS_INCLUDES="-I$psblas_cv_metisdir/UFconfig -I$psblas_cv_metisdir/METIS/Include -I$psblas_cv_metisdir/METIS/Include" CPPFLAGS="$METIS_INCLUDES $SAVE_CPPFLAGS" - for ac_header in limits.h metis.h + for ac_header in limits.h $psblas_cv_metisincfile do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -8864,6 +8981,41 @@ done fi +if test "x$pac_metis_header_ok" == "xyes" ; then + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for METIS idx size" >&5 +$as_echo_n "checking for METIS idx size... " >&6; } + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + #include "$psblas_cv_metisincfile" + void main(){ + printf("%d\n",IDXTYPEWIDTH); + } + +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + pac_cv_metis_idx=`./conftest${ac_exeext} | sed 's/^ *//'` +else + pac_cv_metis_idx="unknown" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $pac_cv_metis_idx" >&5 +$as_echo "$pac_cv_metis_idx" >&6; } + + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi if test "x$pac_metis_header_ok" == "xyes" ; then psblas_cv_metis_includes="$METIS_INCLUDES" @@ -9003,9 +9155,12 @@ fi LIBS="$SAVE_LIBS"; CPPFLAGS="$SAVE_CPPFLAGS"; -if test "x$psblas_cv_have_metis" == "xyes" ; then - FDEFINES="$psblas_cv_define_prepend-DHAVE_METIS $FDEFINES" - CDEFINES="-DHAVE_METIS_ $psblas_cv_metis_includes $CDEFINES" +if test "x$pac_cv_metis_idx" == "xunknown" ; then + true ; # do nothing +elif test "x$psblas_cv_have_metis" == "xyes" ; then + FDEFINES="$psblas_cv_define_prepend-DHAVE_METIS $psblas_cv_define_prepend-DMETIS_$pac_cv_metis_idx $FDEFINES" + CDEFINES="-DHAVE_METIS_ $psblas_cv_metis_includes $CDEFINES -DMETIS_$pac_cv_metis_idx" + METISINCFILE=$psblas_cv_metisincfile fi @@ -9218,11 +9373,6 @@ fi -# Note : We would like to detect PSBLAS, but this is complicated by the -# module symbols mangling rules, which are compiler specific ! -# -# Moreover, the PSBLAS doesn't have an installer, currently. - ############################################################################### # Library target directory and archive files. ############################################################################### @@ -9275,7 +9425,6 @@ UTILLIBNAME=libpsb_util.a - PSBLASRULES=' @@ -9301,11 +9450,14 @@ FDEFINES=$(PSBFDEFINES) + ############################################################################### # the following files will be created by Automake ac_config_files="$ac_config_files Make.inc" +ac_config_files="$ac_config_files util/psb_metis_int.h" + cat >confcache <<\_ACEOF # This file is a shell script that caches the results of configure # tests run on this system so they can be shared between configure @@ -9872,7 +10024,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by PSBLAS $as_me 3.5, which was +This file was extended by PSBLAS $as_me 3.7.0, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -9929,7 +10081,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -PSBLAS config.status 3.5 +PSBLAS config.status 3.7.0 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" @@ -10037,7 +10189,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 # # INIT-COMMANDS # -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" +AMDEP_TRUE="$AMDEP_TRUE" MAKE="${MAKE-make}" _ACEOF @@ -10049,6 +10201,7 @@ do case $ac_config_target in "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; "Make.inc") CONFIG_FILES="$CONFIG_FILES Make.inc" ;; + "util/psb_metis_int.h") CONFIG_FILES="$CONFIG_FILES util/psb_metis_int.h" ;; *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; esac @@ -10482,29 +10635,35 @@ $as_echo "$as_me: executing $ac_file commands" >&6;} # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac + # TODO: see whether this extra hack can be removed once we start + # requiring Autoconf 2.70 or later. + case $CONFIG_FILES in #( + *\'*) : + eval set x "$CONFIG_FILES" ;; #( + *) : + set x $CONFIG_FILES ;; #( + *) : + ;; +esac shift - for mf + # Used to flag and report bootstrapping failures. + am_rc=0 + for am_mf do # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named 'Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line + am_mf=`$as_echo "$am_mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile which includes + # dependency-tracking related rules and includes. + # Grep'ing the whole file directly is not great: AIX grep has a line # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | + sed -n 's,^am--depfiles:.*,X,p' "$am_mf" | grep X >/dev/null 2>&1 \ + || continue + am_dirpart=`$as_dirname -- "$am_mf" || +$as_expr X"$am_mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$am_mf" : 'X\(//\)[^/]' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$am_mf" | sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/ q @@ -10522,53 +10681,48 @@ $as_echo X"$mf" | q } s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running 'make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "$am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ + am_filepart=`$as_basename -- "$am_mf" || +$as_expr X/"$am_mf" : '.*/\([^/][^/]*\)/*$' \| \ + X"$am_mf" : 'X\(//\)$' \| \ + X"$am_mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$am_mf" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ s//\1/ q } - /^X\(\/\/\)$/{ + /^X\/\(\/\/\)$/{ s//\1/ q } - /^X\(\/\).*/{ + /^X\/\(\/\).*/{ s//\1/ q } s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done + { echo "$as_me:$LINENO: cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles" >&5 + (cd "$am_dirpart" \ + && sed -e '/# am--include-marker/d' "$am_filepart" \ + | $MAKE -f - am--depfiles) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } || am_rc=$? done + if test $am_rc -ne 0; then + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "Something went wrong bootstrapping makefile fragments + for automatic dependency tracking. Try re-running configure with the + '--disable-dependency-tracking' option to at least be able to build + the package (albeit without support for automatic dependency tracking). +See \`config.log' for more details" "$LINENO" 5; } + fi + { am_dirpart=; unset am_dirpart;} + { am_filepart=; unset am_filepart;} + { am_mf=; unset am_mf;} + { am_rc=; unset am_rc;} + rm -f conftest-deps.mk } ;; diff --git a/configure.ac b/configure.ac index 18dbfdd3..9edcb290 100755 --- a/configure.ac +++ b/configure.ac @@ -36,11 +36,11 @@ dnl NOTE : There is no cross compilation support. ############################################################################### # NOTE: the literal for version (the second argument to AC_INIT should be a literal!) -AC_INIT([PSBLAS],3.5, [https://github.com/sfilippone/psblas3/issues]) +AC_INIT([PSBLAS],3.7.0, [https://github.com/sfilippone/psblas3/issues]) # VERSION is the file containing the PSBLAS version code # FIXME -psblas_cv_version="3.5" +psblas_cv_version="3.7.0" # A sample source file AC_CONFIG_SRCDIR([base/modules/psb_base_mod.f90]) @@ -561,13 +561,26 @@ PAC_FORTRAN_TEST_MOLD( Please get a Fortran compiler that supports it, e.g. GNU Fortran 4.8.])] ) +PAC_FORTRAN_TEST_VOLATILE( + [], + [AC_MSG_ERROR([Sorry, cannot build PSBLAS without support for VOLATILE])] +) + +PAC_FORTRAN_TEST_ISO_FORTRAN_ENV( + [], + [AC_MSG_ERROR([Sorry, cannot build PSBLAS without support for ISO_FORTRAN_ENV])] +) + +PAC_FORTRAN_TEST_FINAL( + [], + [AC_MSG_ERROR([Sorry, cannot build PSBLAS without support for FINAL])] +) + + # # Optional features # -PAC_FORTRAN_TEST_VOLATILE( - [FDEFINES="$psblas_cv_define_prepend-DHAVE_VOLATILE $FDEFINES"], -) PAC_FORTRAN_TEST_GENERICS( [], @@ -578,14 +591,6 @@ PAC_FORTRAN_TEST_FLUSH( [FDEFINES="$psblas_cv_define_prepend-DHAVE_FLUSH_STMT $FDEFINES"], ) -PAC_FORTRAN_TEST_ISO_FORTRAN_ENV( - [FDEFINES="$psblas_cv_define_prepend-DHAVE_ISO_FORTRAN_ENV $FDEFINES"], -) - -PAC_FORTRAN_TEST_FINAL( - [FDEFINES="$psblas_cv_define_prepend-DHAVE_FINAL $FDEFINES"], -) - ############################################################################### # Additional pathname stuff (yes, it is redundant and confusing...) @@ -689,9 +694,12 @@ LIBS="$RSB_LIBS ${LIBS}" dnl AC_CHECK_HEADERS([rsb.h], [ LIBS="${LIBS} $want_rsb_libs"], []) PAC_CHECK_METIS -if test "x$psblas_cv_have_metis" == "xyes" ; then - FDEFINES="$psblas_cv_define_prepend-DHAVE_METIS $FDEFINES" - CDEFINES="-DHAVE_METIS_ $psblas_cv_metis_includes $CDEFINES" +if test "x$pac_cv_metis_idx" == "xunknown" ; then + true ; # do nothing +elif test "x$psblas_cv_have_metis" == "xyes" ; then + FDEFINES="$psblas_cv_define_prepend-DHAVE_METIS $psblas_cv_define_prepend-DMETIS_$pac_cv_metis_idx $FDEFINES" + CDEFINES="-DHAVE_METIS_ $psblas_cv_metis_includes $CDEFINES -DMETIS_$pac_cv_metis_idx" + METISINCFILE=$psblas_cv_metisincfile fi PAC_CHECK_AMD @@ -702,11 +710,6 @@ fi -# Note : We would like to detect PSBLAS, but this is complicated by the -# module symbols mangling rules, which are compiler specific ! -# -# Moreover, the PSBLAS doesn't have an installer, currently. - ############################################################################### # Library target directory and archive files. ############################################################################### @@ -761,7 +764,6 @@ AC_SUBST(LAPACK_LIBS) AC_SUBST(CINCLUDES) AC_SUBST(FINCLUDES) - PSBLASRULES=' PSBLDLIBS=$(LAPACK) $(BLAS) $(METIS_LIB) $(AMD_LIB) $(LIBS) CDEFINES=$(PSBCDEFINES) @@ -784,11 +786,13 @@ AC_SUBST(BASELIBNAME) AC_SUBST(PRECLIBNAME) AC_SUBST(METHDLIBNAME) AC_SUBST(UTILLIBNAME) +AC_SUBST(METISINCFILE) ############################################################################### # the following files will be created by Automake AC_CONFIG_FILES([Make.inc]) +AC_CONFIG_FILES([util/psb_metis_int.h]) AC_OUTPUT() #AC_OUTPUT(Make.inc Makefile) ############################################################################### diff --git a/docs/html/cmsy10-42.png b/docs/html/cmsy10-42.png index 3e3ff34f..bd31f1f8 100644 Binary files a/docs/html/cmsy10-42.png and b/docs/html/cmsy10-42.png differ diff --git a/docs/html/cmsy10-48.png b/docs/html/cmsy10-48.png index b5d0fbf1..df31f928 100644 Binary files a/docs/html/cmsy10-48.png and b/docs/html/cmsy10-48.png differ diff --git a/docs/html/cmsy10-49.png b/docs/html/cmsy10-49.png index b44b91b4..cb292c09 100644 Binary files a/docs/html/cmsy10-49.png and b/docs/html/cmsy10-49.png differ diff --git a/docs/html/userhtml.css b/docs/html/userhtml.css index 201b1c23..86898d97 100644 --- a/docs/html/userhtml.css +++ b/docs/html/userhtml.css @@ -8,13 +8,11 @@ .cmbx-12x-x-144{font-size:172%; font-weight: bold;} .cmbx-12x-x-144{ font-weight: bold;} .cmbx-12x-x-144{ font-weight: bold;} -.cmbx-12x-x-144{ font-weight: bold;} .cmti-10{ font-style: italic;} .cmti-12{font-size:120%; font-style: italic;} .cmbx-10{ font-weight: bold;} .cmbx-10{ font-weight: bold;} .cmbx-10{ font-weight: bold;} -.cmbx-10{ font-weight: bold;} .cmtt-10{font-family: monospace;} .cmtt-10{font-family: monospace;} .cmtt-10{font-family: monospace;} @@ -23,7 +21,6 @@ .cmbx-12{font-size:120%; font-weight: bold;} .cmbx-12{ font-weight: bold;} .cmbx-12{ font-weight: bold;} -.cmbx-12{ font-weight: bold;} .cmtt-8{font-size:80%;font-family: monospace;} .cmtt-8{font-family: monospace;} .cmtt-8{font-family: monospace;} @@ -31,10 +28,6 @@ .cmtt-9{font-family: monospace;} .cmtt-9{font-family: monospace;} .cmmi-8{font-size:80%;font-style: italic;} -.cmbx-9{font-size:90%; font-weight: bold;} -.cmbx-9{ font-weight: bold;} -.cmbx-9{ font-weight: bold;} -.cmbx-9{ font-weight: bold;} p.noindent { text-indent: 0em } td p.noindent { text-indent: 0em; margin-top:0em; } p.nopar { text-indent: 0em; } @@ -104,8 +97,9 @@ span.LATEX span.TEX{ position:relative; left: -0.4em; } div.float, div.figure {margin-left: auto; margin-right: auto;} div.float img {text-align:center;} div.figure img {text-align:center;} -.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} -.marginpar p{margin-top:0.4em; margin-bottom:0.4em;} +.marginpar,.reversemarginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;} +.marginpar p,.reversemarginpar p{margin-top:0.4em; margin-bottom:0.4em;} +.reversemarginpar{float:left;} table.equation {width:100%;} .equation td{text-align:center; } td.equation { margin-top:1em; margin-bottom:1em; } @@ -148,6 +142,7 @@ div.abstract {width:100%;} .Ovalbox-thick { padding-left:3pt; padding-right:3pt; border:solid thick; } .shadowbox { padding-left:3pt; padding-right:3pt; border:solid thin; border-right:solid thick; border-bottom:solid thick; } .doublebox { padding-left:3pt; padding-right:3pt; border-style:double; border:solid thick; } +.rotatebox{display: inline-block;} .figure img.graphics {margin-left:10%;} .lstlisting .label{margin-right:0.5em; } div.lstlisting{font-family: monospace; white-space: nowrap; margin-top:0.5em; margin-bottom:0.5em; } diff --git a/docs/html/userhtml0x.png b/docs/html/userhtml0x.png index 236023f4..bed5b304 100644 Binary files a/docs/html/userhtml0x.png and b/docs/html/userhtml0x.png differ diff --git a/docs/html/userhtml10x.png b/docs/html/userhtml10x.png index bc555490..a0d4d0d4 100644 Binary files a/docs/html/userhtml10x.png and b/docs/html/userhtml10x.png differ diff --git a/docs/html/userhtml11x.png b/docs/html/userhtml11x.png index 02e3ca83..634594e1 100644 Binary files a/docs/html/userhtml11x.png and b/docs/html/userhtml11x.png differ diff --git a/docs/html/userhtml12x.png b/docs/html/userhtml12x.png index 2fe0d741..7257667a 100644 Binary files a/docs/html/userhtml12x.png and b/docs/html/userhtml12x.png differ diff --git a/docs/html/userhtml13x.png b/docs/html/userhtml13x.png index 2640335f..4c70ecb3 100644 Binary files a/docs/html/userhtml13x.png and b/docs/html/userhtml13x.png differ diff --git a/docs/html/userhtml14x.png b/docs/html/userhtml14x.png index bc55f7d1..711ce998 100644 Binary files a/docs/html/userhtml14x.png and b/docs/html/userhtml14x.png differ diff --git a/docs/html/userhtml15x.png b/docs/html/userhtml15x.png index 0b01ec07..00e0d73d 100644 Binary files a/docs/html/userhtml15x.png and b/docs/html/userhtml15x.png differ diff --git a/docs/html/userhtml16x.png b/docs/html/userhtml16x.png index a18061f0..95794ed0 100644 Binary files a/docs/html/userhtml16x.png and b/docs/html/userhtml16x.png differ diff --git a/docs/html/userhtml17x.png b/docs/html/userhtml17x.png index 7fe28a82..27a7387e 100644 Binary files a/docs/html/userhtml17x.png and b/docs/html/userhtml17x.png differ diff --git a/docs/html/userhtml18x.png b/docs/html/userhtml18x.png index 82edd7f7..ebcb935d 100644 Binary files a/docs/html/userhtml18x.png and b/docs/html/userhtml18x.png differ diff --git a/docs/html/userhtml19x.png b/docs/html/userhtml19x.png index 336cb190..5ac0302a 100644 Binary files a/docs/html/userhtml19x.png and b/docs/html/userhtml19x.png differ diff --git a/docs/html/userhtml1x.png b/docs/html/userhtml1x.png index 00fc2e33..465c255b 100644 Binary files a/docs/html/userhtml1x.png and b/docs/html/userhtml1x.png differ diff --git a/docs/html/userhtml20x.png b/docs/html/userhtml20x.png index b19fd75c..f9f0de44 100644 Binary files a/docs/html/userhtml20x.png and b/docs/html/userhtml20x.png differ diff --git a/docs/html/userhtml21x.png b/docs/html/userhtml21x.png index c7b037cf..85201b8c 100644 Binary files a/docs/html/userhtml21x.png and b/docs/html/userhtml21x.png differ diff --git a/docs/html/userhtml22x.png b/docs/html/userhtml22x.png index 6b413586..8c882bc2 100644 Binary files a/docs/html/userhtml22x.png and b/docs/html/userhtml22x.png differ diff --git a/docs/html/userhtml23x.png b/docs/html/userhtml23x.png index ed4251c5..30c84d3d 100644 Binary files a/docs/html/userhtml23x.png and b/docs/html/userhtml23x.png differ diff --git a/docs/html/userhtml24x.png b/docs/html/userhtml24x.png index 3c6bb3bd..0910fe9c 100644 Binary files a/docs/html/userhtml24x.png and b/docs/html/userhtml24x.png differ diff --git a/docs/html/userhtml25x.png b/docs/html/userhtml25x.png index 37836c81..88630c50 100644 Binary files a/docs/html/userhtml25x.png and b/docs/html/userhtml25x.png differ diff --git a/docs/html/userhtml26x.png b/docs/html/userhtml26x.png index 75ae8f6b..ac0518e5 100644 Binary files a/docs/html/userhtml26x.png and b/docs/html/userhtml26x.png differ diff --git a/docs/html/userhtml27x.png b/docs/html/userhtml27x.png index 51d8b238..57beeb01 100644 Binary files a/docs/html/userhtml27x.png and b/docs/html/userhtml27x.png differ diff --git a/docs/html/userhtml28x.png b/docs/html/userhtml28x.png index 2ea69a48..b2106916 100644 Binary files a/docs/html/userhtml28x.png and b/docs/html/userhtml28x.png differ diff --git a/docs/html/userhtml29x.png b/docs/html/userhtml29x.png index b890fc38..64db17ce 100644 Binary files a/docs/html/userhtml29x.png and b/docs/html/userhtml29x.png differ diff --git a/docs/html/userhtml2x.png b/docs/html/userhtml2x.png index 31c7ec89..49dbf305 100644 Binary files a/docs/html/userhtml2x.png and b/docs/html/userhtml2x.png differ diff --git a/docs/html/userhtml30x.png b/docs/html/userhtml30x.png index 059fe3e0..509285f3 100644 Binary files a/docs/html/userhtml30x.png and b/docs/html/userhtml30x.png differ diff --git a/docs/html/userhtml31x.png b/docs/html/userhtml31x.png index f50412f3..72203987 100644 Binary files a/docs/html/userhtml31x.png and b/docs/html/userhtml31x.png differ diff --git a/docs/html/userhtml32x.png b/docs/html/userhtml32x.png index b4a91874..a92c5455 100644 Binary files a/docs/html/userhtml32x.png and b/docs/html/userhtml32x.png differ diff --git a/docs/html/userhtml3x.png b/docs/html/userhtml3x.png index 55f1e95a..3676aa53 100644 Binary files a/docs/html/userhtml3x.png and b/docs/html/userhtml3x.png differ diff --git a/docs/html/userhtml4x.png b/docs/html/userhtml4x.png index cdca4696..1ce118eb 100644 Binary files a/docs/html/userhtml4x.png and b/docs/html/userhtml4x.png differ diff --git a/docs/html/userhtml5x.png b/docs/html/userhtml5x.png index 403b9248..cabc66d4 100644 Binary files a/docs/html/userhtml5x.png and b/docs/html/userhtml5x.png differ diff --git a/docs/html/userhtml6x.png b/docs/html/userhtml6x.png index 60d3b2c5..a0ef30ce 100644 Binary files a/docs/html/userhtml6x.png and b/docs/html/userhtml6x.png differ diff --git a/docs/html/userhtml7x.png b/docs/html/userhtml7x.png index bc555490..a0d4d0d4 100644 Binary files a/docs/html/userhtml7x.png and b/docs/html/userhtml7x.png differ diff --git a/docs/html/userhtml8x.png b/docs/html/userhtml8x.png index c16766fd..147d6b03 100644 Binary files a/docs/html/userhtml8x.png and b/docs/html/userhtml8x.png differ diff --git a/docs/html/userhtml9x.png b/docs/html/userhtml9x.png index aaff2dea..dcf8438f 100644 Binary files a/docs/html/userhtml9x.png and b/docs/html/userhtml9x.png differ diff --git a/docs/html/userhtmlse8.html b/docs/html/userhtmlse8.html index 504703f8..775422c8 100644 --- a/docs/html/userhtmlse8.html +++ b/docs/html/userhtmlse8.html @@ -70,264 +70,254 @@ explicitly.
subroutine psb_foo(some args, info) 
subroutine psb_foo(some args, info) 
   ... 
   ... 
   if(error detected) then 
   if(error detected) then 
      info=errcode1 
      info=errcode1 
      call psb_errpush(psb_foo, errcode1) 
      call psb_errpush(psb_foo, errcode1) 
      goto 9999 
      goto 9999 
   end if 
   end if 
   ... 
   ... 
   call psb_bar(some args, info) 
   call psb_bar(some args, info) 
   if(info .ne. zero) then 
   if(info .ne. zero) then 
      info=errcode2 
      info=errcode2 
      call psb_errpush(psb_foo, errcode2) 
      call psb_errpush(psb_foo, errcode2) 
      goto 9999 
      goto 9999 
   end if 
   end if 
   ... 
   ... 
9999 continue 
9999 continue 
   if (err_act .eq. act_abort) then 
   if (err_act .eq. act_abort) then 
     call psb_error(icontxt) 
     call psb_error(icontxt) 
     return 
     return 
   else 
   else 
     return 
     return 
   end if 
   end if 
 
 
end subroutine psb_foo +class="cmtt-9">end subroutine psb_foo

Notes possible to improve the runtime efficiency by using the following scheme:
    vres(1) = psb_gedot(x1,y1,desc_a,info,global=.false.) 
    vres(2) = psb_gedot(x2,y2,desc_a,info,global=.false.) 
    vres(3) = psb_gedot(x3,y3,desc_a,info,global=.false.) 
    call psb_sum(ictxt,vres(1:3)) + id="x20-57004r1">   vres(1) = psb_gedot(x1,y1,desc_a,info,global=.false.) 
   vres(2) = psb_gedot(x2,y2,desc_a,info,global=.false.) 
   vres(3) = psb_gedot(x3,y3,desc_a,info,global=.false.) 
   call psb_sum(ictxt,vres(1:3))

In this way the global communication, which for small sizes is a latency-bound diff --git a/docs/html/userhtmlsu13.html b/docs/html/userhtmlsu13.html index db09267b..0cb73107 100644 --- a/docs/html/userhtmlsu13.html +++ b/docs/html/userhtmlsu13.html @@ -194,14 +194,84 @@ class="cmbx-12">Notes multiple norms at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:

    vres(1) = psb_geamax(x1,desc_a,info,global=.false.) 
    vres(2) = psb_geamax(x2,desc_a,info,global=.false.) 
    vres(3) = psb_geamax(x3,desc_a,info,global=.false.) 
    call psb_amx(ictxt,vres(1:3)) + id="x22-59004r1">   vres(1) = psb_geamax(x1,desc_a,info,global=.false.) 
   vres(2) = psb_geamax(x2,desc_a,info,global=.false.) 
   vres(3) = psb_geamax(x3,desc_a,info,global=.false.) 
   call psb_amx(ictxt,vres(1:3))

In this way the global communication, which for small sizes is a latency-bound diff --git a/docs/html/userhtmlsu15.html b/docs/html/userhtmlsu15.html index 61096aa2..55c54a24 100644 --- a/docs/html/userhtmlsu15.html +++ b/docs/html/userhtmlsu15.html @@ -195,14 +195,84 @@ class="cmbx-12">Notes multiple norms at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:

    vres(1) = psb_geasum(x1,desc_a,info,global=.false.) 
    vres(2) = psb_geasum(x2,desc_a,info,global=.false.) 
    vres(3) = psb_geasum(x3,desc_a,info,global=.false.) 
    call psb_sum(ictxt,vres(1:3)) + id="x24-61004r1">   vres(1) = psb_geasum(x1,desc_a,info,global=.false.) 
   vres(2) = psb_geasum(x2,desc_a,info,global=.false.) 
   vres(3) = psb_geasum(x3,desc_a,info,global=.false.) 
   call psb_sum(ictxt,vres(1:3))

In this way the global communication, which for small sizes is a latency-bound diff --git a/docs/html/userhtmlsu17.html b/docs/html/userhtmlsu17.html index f040eafb..44716f08 100644 --- a/docs/html/userhtmlsu17.html +++ b/docs/html/userhtmlsu17.html @@ -198,14 +198,84 @@ class="cmbx-12">Notes multiple norms at the same time; in this case, it is possible to improve the runtime efficiency by using the following scheme:

    vres(1) = psb_genrm2(x1,desc_a,info,global=.false.) 
    vres(2) = psb_genrm2(x2,desc_a,info,global=.false.) 
    vres(3) = psb_genrm2(x3,desc_a,info,global=.false.) 
    call psb_nrm2(ictxt,vres(1:3)) + id="x26-63004r1">   vres(1) = psb_genrm2(x1,desc_a,info,global=.false.) 
   vres(2) = psb_genrm2(x2,desc_a,info,global=.false.) 
   vres(3) = psb_genrm2(x3,desc_a,info,global=.false.) 
   call psb_nrm2(ictxt,vres(1:3))

In this way the global communication, which for small sizes is a latency-bound diff --git a/docs/html/userhtmlsu26.html b/docs/html/userhtmlsu26.html index 2287390e..d5fe2035 100644 --- a/docs/html/userhtmlsu26.html +++ b/docs/html/userhtmlsu26.html @@ -87,10 +87,38 @@ class="content">Data types

call psb_halo(x, desc_a, info) 
call psb_halo(x, desc_a, info) 
call psb_halo(x, desc_a, info, work, data) +class="cmtt-10">call psb_halo(x, desc_a, info, work, data)
diff --git a/docs/html/userhtmlsu27.html b/docs/html/userhtmlsu27.html index 2bb4e849..f0fe399b 100644 --- a/docs/html/userhtmlsu27.html +++ b/docs/html/userhtmlsu27.html @@ -92,9 +92,42 @@ class="content">Data types
call psb_ovrl(x, desc_a, info) 
call psb_ovrl(x, desc_a, info) 
call psb_ovrl(x, desc_a, info, update=update_type, work=work) +class="cmtt-10">call psb_ovrl(x, desc_a, info, update=update_type, work=work)
diff --git a/docs/html/userhtmlsu28.html b/docs/html/userhtmlsu28.html index 45fa580e..513f7e28 100644 --- a/docs/html/userhtmlsu28.html +++ b/docs/html/userhtmlsu28.html @@ -109,9 +109,44 @@ class="content">Data types
call psb_gather(glob_x, loc_x, desc_a, info, root) 
call psb_gather(glob_x, loc_x, desc_a, info, root) 
call psb_gather(glob_x, loc_x, desc_a, info, root) +class="cmtt-10">call psb_gather(glob_x, loc_x, desc_a, info, root)
diff --git a/docs/html/userhtmlsu29.html b/docs/html/userhtmlsu29.html index 7186e307..baeee944 100644 --- a/docs/html/userhtmlsu29.html +++ b/docs/html/userhtmlsu29.html @@ -108,7 +108,27 @@ class="content">Data types
call psb_scatter(glob_x, loc_x, desc_a, info, root, mold) +class="cmtt-10">call psb_scatter(glob_x, loc_x, desc_a, info, root, mold)
diff --git a/docs/html/userhtmlsu6.html b/docs/html/userhtmlsu6.html index 18b94c13..f0ba830f 100644 --- a/docs/html/userhtmlsu6.html +++ b/docs/html/userhtmlsu6.html @@ -45,8 +45,14 @@ class="description">Single precision complex;
Z
Double precision complex.
-

The actual data is contained in the polymorphic component Double precision complex; +

+LS,LD,LC,LZ
Same numeric type as above, but with psb_lpk_ integer + indices.
+

The actual data is contained in the polymorphic component a%a of type psb_spasb routine.


-

+

  type :: psb_Tspmat_type  
    class(psb_T_base_sparse_mat), allocatable  :: a  
  end type  psb_Tspmat_type
-

+


Figure 4: The PSBLAS defined data type that contains a sparse matrix.
-


-

The following very common formats are precompiled in PSBLAS and thus are +


+

The following very common formats are precompiled in PSBLAS and thus are always available:

_coo_sparse_mat
Coordinate storage; + + +
psb_csc_sparse_mat
Compressed storage by columns;
- - - -

The inner sparse matrix has an associated state, which can take the following +

The inner sparse matrix has an associated state, which can take the following values:

State entered after a reinitalization; this is used to handl in which the same sparsity pattern is used multiple times with different coefficients. In this state it is only possible to enter coefficients for already existing nonzero entries.
-

The only storage variant supporting the build state is COO; all other variants are +

The only storage variant supporting the build state is COO; all other variants are obtained by conversion to/from it. -

+

3.2.1 Sparse Matrix Methods
-

+

3.2.2 get_nrows — Get number of rows in a sparse matrix
@@ -135,8 +141,8 @@ obtained by conversion to/from it.
nr = a%get_nrows()
-

-

+

+

Type:
the sparse matrix
Scope: local
-

+

On Return
class="cmbx-10">Function value
The number of rows of sparse matrix a.
-

+

3.2.3 get_ncols — Get number of columns in a sparse matrix
@@ -171,8 +177,8 @@ class="cmtt-10">a.
nc = a%get_ncols()
-

-

+

+

Type:
the sparse matrix
Scope: local
-

+

On Return
class="cmbx-10">Function value
The number of columns of sparse matrix a.
-

+

3.2.4 get_nnzeros — Get number of nonzero elements in a sparse matrix
@@ -207,8 +213,8 @@ class="cmtt-10">a.
nz = a%get_nnzeros()
-

-

+

+

Type:
the sparse matrix
Scope: local
-

+

On Return
class="cmbx-10">Function value
The number of nonzero elements stored in sparse matrix a.
-

Notes

  1. Notes class="cmtt-10">a; some storage formats employ padding, thus the returned value for the same matrix may be different for different storage choices.
-

+

3.2.5 get_size — Get maximum number of nonzero elements in a sparse matrix
@@ -252,8 +258,8 @@ matrix
maxnz = a%get_size()
-

-

+

+

Type:
the sparse matrix
Scope: local
-

+

On Return
Function value
The maximum number of nonzero elements that can be stored in sparse matrix a using its current memory allocation.
-

+

3.2.6 sizeof — Get memory occupation in bytes of a sparse matrix
@@ -289,8 +295,8 @@ class="cmtt-10">a using its current memory allocation.
memory_size = a%sizeof()
-

-

+

+

Type:
the sparse matrix
Scope: local
-

+

On Return
Function value
The memory occupation in bytes.
-

+

3.2.7 get_fmt — Short description of the dynamic type
@@ -324,8 +330,8 @@ class="description">The memory occupation in bytes.
write(*,*) a%get_fmt()
-

-

+

+

Type:
the sparse matrix
Scope: local
-

+

On Return
NULL, COO, CSR and CSC.
-

+

3.2.8 is_bld, is_upd, is_asb — Status check
@@ -366,8 +372,8 @@ if (a%is_bld()) then  
if (a%is_upd()) then  
if (a%is_asb()) then -

-

+

+

Type:
the sparse matrix
Scope: local
-

+

On Return
Function value
A logical value indicating whether the matrix is in the Build, Update or Assembled state, respectively.
-

+

3.2.9 is_lower, is_upper, is_triangle, is_unit — Format check
@@ -406,8 +412,8 @@ if (a%is_triangle()) then  
if (a%is_lower()) then  
if (a%is_unit()) then -

-

+

+

Type:
the sparse matrix
Scope: local
-

+

On Return
logical value indicating whether the matrix class="cmtt-10">is_triangle() returns .true. check also if it is lower, upper and with a unit (i.e. assumed) diagonal.
-

+

3.2.10 cscnv — Convert to a different storage format
@@ -447,8 +453,8 @@ class="cmtt-10">.true. check also if it is lower, upper and call  a%cscnv(b,info [, type, mold, dupl])  
call  a%cscnv(info [, type, mold, dupl]) -

-

+

+

Type:
Type: optional. class="cmbx-10">dupl
an integer value specifing how to handle duplicates (see Named Constants below)
-

+

On Return
psb_Tspmat_type. info
Return code.
-

The

The mold arguments may be employed to interface with special devices, such as GPUs and other accelerators. -

+

3.2.11 csclip — Reduce to a submatrix
@@ -511,8 +517,8 @@ and other accelerators.     call a%csclip(b,info[,&  
       & imin,imax,jmin,jmax,rscale,cscale]) -

-

Returns the submatrix

+

Returns the submatrix A(imin:imax,jmin:jmax), optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1. @@ -542,7 +548,7 @@ class="newline" />Type: optional. rscale,cscale

Whether to rescale row/column indices. Type: optional.
-

+

On Return
psb_Tspmat_type. info
Return code.
-

+

3.2.12 clean_zeros — Eliminate zero coefficients
@@ -567,11 +573,11 @@ class="description">Return code.
    call a%clean_zeros(info)
-

-

Eliminates zero coefficients in the input matrix. Note that depending on the +

+

Eliminates zero coefficients in the input matrix. Note that depending on the internal storage format, there may still be some amount of zero padding in the output. -

+

Type:
psb_Tspmat_type.
Scope: local.
-

+

On Return
psb_Tspmat_type. info
Return code.
-

+

3.2.13 get_diag — Get main diagonal
@@ -614,8 +620,8 @@ class="description">Return code.
    call a%get_diag(d,info)
-

-

Returns a copy of the main diagonal. +

+

Returns a copy of the main diagonal.

Type:
psb_Tspmat_type.
Scope: local.
-

+

On Return
A one-dimensional array of the appropriate type. info
Return code.
-

+

3.2.14 clip_diag — Cut out main diagonal
@@ -656,8 +662,8 @@ class="description">Return code.
    call a%clip_diag(b,info)
-

-

Returns a copy of

+

Returns a copy of a without the main diagonal.

psb_Tspmat_type.
Scope: local.
-

+

On Return
psb_Tspmat_type. info
Return code.
-

+

3.2.15 tril — Return the lower triangle
@@ -702,8 +708,8 @@ class="description">Return code.     call a%tril(l,info[,&  
       & diag,imin,imax,jmin,jmax,rscale,cscale,u]) -

-

Returns the lower triangular part of submatrix

+

Returns the lower triangular part of submatrix A(imin:imax,jmin:jmax), optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1 and @@ -741,7 +747,7 @@ class="newline" />Type: optional. rscale,cscale

Whether to rescale row/column indices. Type: optional.
-

+

On Return
psb_Tspmat_type. info
Return code.
-

+

3.2.16 triu — Return the upper triangle
@@ -774,8 +780,8 @@ class="description">Return code.     call a%triu(u,info[,&  
       & diag,imin,imax,jmin,jmax,rscale,cscale,l]) -

-

Returns the upper triangular part of submatrix

+

Returns the upper triangular part of submatrix A(imin:imax,jmin:jmax), optionally rescaling row/col indices to the range 1:imax-imin+1,1:jmax-jmin+1, @@ -813,7 +819,7 @@ class="newline" />Type: optional. rscale,cscale

Whether to rescale row/column indices. Type: optional.
-

+

On Return
psb_Tspmat_type. info
Return code.
-

+

3.2.17 psb_set_mat_default — Set default storage format
@@ -845,8 +851,8 @@ class="description">Return code.
call  psb_set_mat_default(a)
-

-

+

+

Type:
a variable of class(psb_T_base_sparse_mat) requesting a new default storage format.
Type: required.
-

+

3.2.18 clone — Clone current object
@@ -871,8 +877,8 @@ class="newline" />Type: required.
call  a%clone(b,info)
-

-

+

+

Type:
the sparse matrix.
Scope: local.
-

+

On Return
A copy of the input object. info
Return code.
-

+

3.2.19 Named Constants
-

+

psbUpdate strategy based on additional permutation data (see -
Double precision complex.
-

The actual data is contained in the polymorphic component

The actual data is contained in the polymorphic component v%v; the separation between the application and the actual data is essential for cases where it is necessary to link to data storage made available elsewhere outside the direct control of the @@ -70,7 +70,7 @@ compiler/application, e.g. data stored in a graphics accelerator’s private id="x15-460015">

-

+

  type psb_T_base_vect_type  
    TYPE(KIND_), allocatable :: v(:) @@ -81,18 +81,18 @@ compiler/application, e.g. data stored in a graphics accelerator’s private  
  end type  psb_T_vect_type  
-

+


Figure 5: The PSBLAS defined data type that contains a dense vector.
-


-

+


+

3.3.1 Vector Methods
-

+

3.3.2 get_nrows — Get number of rows in a dense vector
@@ -101,8 +101,8 @@ class="content"> The PSBLAS defined data type that contains a dense vector. nr = v%get_nrows() -

-

+

+

Type:
the dense vector
Scope: local
-

+

On Return
class="cmbx-10">Function value
The number of rows of dense vector v.
-

+

3.3.3 sizeof — Get memory occupation in bytes of a dense vector
@@ -137,8 +137,8 @@ class="cmtt-10">v.
memory_size = v%sizeof()
-

-

+

+

Type:
the dense vector
Scope: local
-

+

On Return
Function value
The memory occupation in bytes.
-

+

3.3.4 set — Set contents of the vector
@@ -174,8 +174,8 @@ class="description">The memory occupation in bytes.  
 call  v%set(vect[,first,last])  
 call  v%zero() -

-

+

+

Type:
Intent: in.
Specified as: a number of the data type indicated in Table 1.
-

Note that a call to

Note that a call to v%zero() is provided as a shorthand, but is equivalent to a call to v%set(zero) with the zero constant having the appropriate type and kind. -

+

On Return
-

+

3.3.5 get_vect — Get a copy of the vector contents
@@ -256,8 +256,8 @@ class="newline" />
extv = v%get_vect([n])
-

-

+

+

Type:
Type: optional; default: entire vector.
-

+

On Return
n and the internal size of the vector, or 0 if n is negative; otherwise, the size of the array is the same as the internal size of the vector.
-

+

3.3.6 clone — Clone current object
@@ -308,8 +308,8 @@ class="cmmi-10">n is negative; otherwise, the size of the array is the sa
call  x%clone(y,info)
-

-

+

+

Type:
the dense vector.
Scope: local.
-

+

On Return
Return code.
-
call psb_errpush(err_c, r_name, i_err, a_err) +class="cmtt-10">call psb_errpush(err_c, r_name, i_err, a_err)

diff --git a/docs/html/userhtmlsu75.html b/docs/html/userhtmlsu75.html index b4726464..1b0b6bcd 100644 --- a/docs/html/userhtmlsu75.html +++ b/docs/html/userhtmlsu75.html @@ -21,7 +21,12 @@ href="userhtmlsu76.html#userhtmlse9.html" >up]

call psb_error(icontxt) +class="cmtt-10">call psb_error(icontxt)

diff --git a/docs/html/userhtmlsu76.html b/docs/html/userhtmlsu76.html index 218404fa..6ae8a04e 100644 --- a/docs/html/userhtmlsu76.html +++ b/docs/html/userhtmlsu76.html @@ -21,7 +21,12 @@ href="userhtmlsu76.html#userhtmlsu78.html" >up]

call psb_set_errverbosity(v) +class="cmtt-10">call psb_set_errverbosity(v)

diff --git a/docs/html/userhtmlsu77.html b/docs/html/userhtmlsu77.html index e1e62e1b..e3002b2c 100644 --- a/docs/html/userhtmlsu77.html +++ b/docs/html/userhtmlsu77.html @@ -21,7 +21,12 @@ condition

call psb_set_erraction(err_act) +class="cmtt-10">call psb_set_erraction(err_act)

diff --git a/docs/html/userhtmlsu78.html b/docs/html/userhtmlsu78.html index d7e6fd9f..d793b344 100644 --- a/docs/html/userhtmlsu78.html +++ b/docs/html/userhtmlsu78.html @@ -21,7 +21,27 @@ format

call hb_read(a, iret, iunit, filename, b, mtitle) +class="cmtt-10">call hb_read(a, iret, iunit, filename, b, mtitle)

diff --git a/docs/html/userhtmlsu79.html b/docs/html/userhtmlsu79.html index 47418d21..55d166d1 100644 --- a/docs/html/userhtmlsu79.html +++ b/docs/html/userhtmlsu79.html @@ -22,7 +22,30 @@ format

call hb_write(a, iret, iunit, filename, key, rhs, mtitle) +class="cmtt-10">call hb_write(a, iret, iunit, filename, key, rhs, mtitle)

diff --git a/docs/html/userhtmlsu8.html b/docs/html/userhtmlsu8.html index 5c0ff71c..5a02be22 100644 --- a/docs/html/userhtmlsu8.html +++ b/docs/html/userhtmlsu8.html @@ -10,7 +10,7 @@ -


Figure 6: The PSBLAS defined data type that contains a preconditioner.
-


+


-