From 17947dfb0714605ec0e5107be77c82f58a63ebf6 Mon Sep 17 00:00:00 2001 From: bangerth Date: Thu, 16 Aug 2007 02:34:22 +0000 Subject: [PATCH] Upgrade to UMFPACK 5.1 and AMD 2.2, together with the include file from UFconfig 3.0. git-svn-id: https://svn.dealii.org/trunk@14960 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/contrib/umfpack/AMD/Demo/Makefile | 79 -- deal.II/contrib/umfpack/AMD/Demo/amd_demo.c | 169 ---- deal.II/contrib/umfpack/AMD/Demo/amd_demo.out | 177 ---- deal.II/contrib/umfpack/AMD/Demo/amd_demo2.c | 261 ------ .../contrib/umfpack/AMD/Demo/amd_demo2.out | 310 ------- .../contrib/umfpack/AMD/Demo/amd_f77cross.f | 51 -- .../contrib/umfpack/AMD/Demo/amd_f77cross.out | 51 -- .../contrib/umfpack/AMD/Demo/amd_f77demo.f | 161 ---- .../contrib/umfpack/AMD/Demo/amd_f77demo.out | 318 ------- .../contrib/umfpack/AMD/Demo/amd_f77simple.f | 38 - .../umfpack/AMD/Demo/amd_f77simple.out | 5 - .../contrib/umfpack/AMD/Demo/amd_f77wrapper.c | 108 --- deal.II/contrib/umfpack/AMD/Demo/amd_simple.c | 23 - .../contrib/umfpack/AMD/Demo/amd_simple.out | 5 - .../contrib/umfpack/AMD/Doc/AMD_UserGuide.bib | 16 +- .../contrib/umfpack/AMD/Doc/AMD_UserGuide.pdf | Bin 176601 -> 176721 bytes .../contrib/umfpack/AMD/Doc/AMD_UserGuide.tex | 488 ++++++----- deal.II/contrib/umfpack/AMD/Doc/ChangeLog | 92 ++ deal.II/contrib/umfpack/AMD/Doc/License | 42 +- deal.II/contrib/umfpack/AMD/Doc/Makefile | 11 +- deal.II/contrib/umfpack/AMD/Doc/lesser.txt | 504 +++++++++++ .../contrib/umfpack/AMD/Include/UFconfig.h | 113 +++ deal.II/contrib/umfpack/AMD/Include/amd.h | 281 ++++--- .../AMD/{Source => Include}/amd_internal.h | 190 ++--- deal.II/contrib/umfpack/AMD/README.txt | 105 ++- deal.II/contrib/umfpack/AMD/Source/Makefile | 9 +- deal.II/contrib/umfpack/AMD/Source/amd_1.c | 10 +- deal.II/contrib/umfpack/AMD/Source/amd_2.c | 203 +++-- deal.II/contrib/umfpack/AMD/Source/amd_aat.c | 27 +- .../contrib/umfpack/AMD/Source/amd_control.c | 17 +- .../contrib/umfpack/AMD/Source/amd_defaults.c | 11 +- deal.II/contrib/umfpack/AMD/Source/amd_dump.c | 20 +- .../contrib/umfpack/AMD/Source/amd_global.c | 84 ++ deal.II/contrib/umfpack/AMD/Source/amd_info.c | 17 +- .../contrib/umfpack/AMD/Source/amd_order.c | 143 +++- .../umfpack/AMD/Source/amd_post_tree.c | 6 +- .../umfpack/AMD/Source/amd_postorder.c | 6 +- .../umfpack/AMD/Source/amd_preprocess.c | 138 +-- .../contrib/umfpack/AMD/Source/amd_valid.c | 49 +- deal.II/contrib/umfpack/README.deal.II | 16 +- deal.II/contrib/umfpack/UMFPACK/Doc/ChangeLog | 80 +- deal.II/contrib/umfpack/UMFPACK/Doc/License | 69 +- deal.II/contrib/umfpack/UMFPACK/Doc/Makefile | 9 +- .../umfpack/UMFPACK/Doc/QuickStart.pdf | Bin 137498 -> 134294 bytes .../umfpack/UMFPACK/Doc/QuickStart.tex | 91 +- .../contrib/umfpack/UMFPACK/Doc/UserGuide.bib | 12 +- .../contrib/umfpack/UMFPACK/Doc/UserGuide.pdf | Bin 401941 -> 400091 bytes .../umfpack/UMFPACK/Doc/UserGuide.stex | 272 +++--- .../contrib/umfpack/UMFPACK/Doc/lesser.txt | 504 +++++++++++ .../umfpack/UMFPACK/Include/UFconfig.h | 113 +++ .../contrib/umfpack/UMFPACK/Include/umfpack.h | 96 ++- .../UMFPACK/Include/umfpack_col_to_triplet.h | 26 +- .../UMFPACK/Include/umfpack_defaults.h | 6 +- .../UMFPACK/Include/umfpack_free_numeric.h | 6 +- .../UMFPACK/Include/umfpack_free_symbolic.h | 6 +- .../UMFPACK/Include/umfpack_get_determinant.h | 16 +- .../UMFPACK/Include/umfpack_get_lunz.h | 50 +- .../UMFPACK/Include/umfpack_get_numeric.h | 54 +- .../UMFPACK/Include/umfpack_get_symbolic.h | 74 +- .../umfpack/UMFPACK/Include/umfpack_global.h | 22 + .../UMFPACK/Include/umfpack_load_numeric.h | 14 +- .../UMFPACK/Include/umfpack_load_symbolic.h | 14 +- .../umfpack/UMFPACK/Include/umfpack_numeric.h | 33 +- .../UMFPACK/Include/umfpack_qsymbolic.h | 34 +- .../UMFPACK/Include/umfpack_report_control.h | 6 +- .../UMFPACK/Include/umfpack_report_info.h | 6 +- .../UMFPACK/Include/umfpack_report_matrix.h | 34 +- .../UMFPACK/Include/umfpack_report_numeric.h | 14 +- .../UMFPACK/Include/umfpack_report_perm.h | 22 +- .../UMFPACK/Include/umfpack_report_status.h | 14 +- .../UMFPACK/Include/umfpack_report_symbolic.h | 14 +- .../UMFPACK/Include/umfpack_report_triplet.h | 34 +- .../UMFPACK/Include/umfpack_report_vector.h | 20 +- .../UMFPACK/Include/umfpack_save_numeric.h | 14 +- .../UMFPACK/Include/umfpack_save_symbolic.h | 14 +- .../umfpack/UMFPACK/Include/umfpack_scale.h | 10 +- .../umfpack/UMFPACK/Include/umfpack_solve.h | 26 +- .../UMFPACK/Include/umfpack_symbolic.h | 34 +- .../umfpack/UMFPACK/Include/umfpack_tictoc.h | 2 +- .../umfpack/UMFPACK/Include/umfpack_timer.h | 2 +- .../UMFPACK/Include/umfpack_transpose.h | 48 +- .../UMFPACK/Include/umfpack_triplet_to_col.h | 46 +- .../umfpack/UMFPACK/Include/umfpack_wsolve.h | 30 +- .../contrib/umfpack/UMFPACK/MATLAB/Contents.m | 38 +- .../umfpack/UMFPACK/MATLAB/GNUmakefile | 89 +- .../contrib/umfpack/UMFPACK/MATLAB/Makefile | 362 ++++---- .../UMFPACK/MATLAB/lcc_lib/lapacksyms.def | 718 ++++++++++++++++ .../UMFPACK/MATLAB/lcc_lib/libmwlapack.lib | Bin 0 -> 466678 bytes .../umfpack/UMFPACK/MATLAB/lu_normest.m | 13 +- .../contrib/umfpack/UMFPACK/MATLAB/luflop.m | 10 +- .../umfpack/UMFPACK/MATLAB/luflopmex.c | 18 +- .../UMFPACK/MATLAB/{umfpack.m => umfpack2.m} | 30 +- .../umfpack/UMFPACK/MATLAB/umfpack_btf.m | 16 +- .../umfpack/UMFPACK/MATLAB/umfpack_demo.m | 46 +- .../umfpack/UMFPACK/MATLAB/umfpack_demo.m.out | 29 +- .../umfpack/UMFPACK/MATLAB/umfpack_details.m | 180 ++-- .../umfpack/UMFPACK/MATLAB/umfpack_install.m | 37 + .../umfpack/UMFPACK/MATLAB/umfpack_make.m | 354 ++++---- .../umfpack/UMFPACK/MATLAB/umfpack_report.m | 39 +- .../umfpack/UMFPACK/MATLAB/umfpack_simple.m | 50 +- .../UMFPACK/MATLAB/umfpack_simple.m.out | 61 +- .../umfpack/UMFPACK/MATLAB/umfpack_solve.m | 30 +- .../umfpack/UMFPACK/MATLAB/umfpack_test.m | 45 +- .../umfpack/UMFPACK/MATLAB/umfpackmex.c | 255 +++--- .../contrib/umfpack/UMFPACK/MATLAB/west.mat | Bin 0 -> 1885 bytes .../contrib/umfpack/UMFPACK/MATLAB/west0067 | 294 +++++++ .../umfpack/UMFPACK/MATLAB/west0067.mat | Bin 4456 -> 0 bytes deal.II/contrib/umfpack/UMFPACK/README.txt | 115 +-- .../contrib/umfpack/UMFPACK/Source/Makefile | 2 +- .../umfpack/UMFPACK/Source/cholmod_blas.h | 451 ++++++++++ .../contrib/umfpack/UMFPACK/Source/umf_2by2.c | 8 +- .../contrib/umfpack/UMFPACK/Source/umf_2by2.h | 2 +- .../umfpack/UMFPACK/Source/umf_analyze.c | 2 +- .../umfpack/UMFPACK/Source/umf_analyze.h | 2 +- .../umfpack/UMFPACK/Source/umf_apply_order.c | 2 +- .../umfpack/UMFPACK/Source/umf_apply_order.h | 2 +- .../umfpack/UMFPACK/Source/umf_assemble.c | 4 +- .../umfpack/UMFPACK/Source/umf_assemble.h | 2 +- .../umfpack/UMFPACK/Source/umf_blas3_update.c | 135 +-- .../umfpack/UMFPACK/Source/umf_blas3_update.h | 2 +- .../umfpack/UMFPACK/Source/umf_build_tuples.c | 2 +- .../umfpack/UMFPACK/Source/umf_build_tuples.h | 2 +- .../umfpack/UMFPACK/Source/umf_colamd.c | 2 +- .../umfpack/UMFPACK/Source/umf_colamd.h | 2 +- .../umfpack/UMFPACK/Source/umf_config.h | 793 +++--------------- .../UMFPACK/Source/umf_create_element.c | 14 +- .../UMFPACK/Source/umf_create_element.h | 2 +- .../contrib/umfpack/UMFPACK/Source/umf_dump.c | 24 +- .../contrib/umfpack/UMFPACK/Source/umf_dump.h | 13 +- .../umfpack/UMFPACK/Source/umf_extend_front.c | 2 +- .../umfpack/UMFPACK/Source/umf_extend_front.h | 2 +- .../contrib/umfpack/UMFPACK/Source/umf_free.c | 6 +- .../contrib/umfpack/UMFPACK/Source/umf_free.h | 2 +- .../umfpack/UMFPACK/Source/umf_fsize.c | 2 +- .../umfpack/UMFPACK/Source/umf_fsize.h | 2 +- .../UMFPACK/Source/umf_garbage_collection.c | 2 +- .../UMFPACK/Source/umf_garbage_collection.h | 2 +- .../umfpack/UMFPACK/Source/umf_get_memory.c | 2 +- .../umfpack/UMFPACK/Source/umf_get_memory.h | 2 +- .../umfpack/UMFPACK/Source/umf_grow_front.c | 2 +- .../umfpack/UMFPACK/Source/umf_grow_front.h | 2 +- .../umfpack/UMFPACK/Source/umf_init_front.c | 2 +- .../umfpack/UMFPACK/Source/umf_init_front.h | 2 +- .../umfpack/UMFPACK/Source/umf_internal.h | 96 +-- .../UMFPACK/Source/umf_is_permutation.c | 2 +- .../UMFPACK/Source/umf_is_permutation.h | 2 +- .../umfpack/UMFPACK/Source/umf_kernel.c | 2 +- .../umfpack/UMFPACK/Source/umf_kernel.h | 2 +- .../umfpack/UMFPACK/Source/umf_kernel_init.c | 16 +- .../umfpack/UMFPACK/Source/umf_kernel_init.h | 2 +- .../UMFPACK/Source/umf_kernel_wrapup.c | 2 +- .../UMFPACK/Source/umf_kernel_wrapup.h | 2 +- .../umfpack/UMFPACK/Source/umf_local_search.c | 41 +- .../umfpack/UMFPACK/Source/umf_local_search.h | 2 +- .../umfpack/UMFPACK/Source/umf_lsolve.c | 2 +- .../umfpack/UMFPACK/Source/umf_lsolve.h | 2 +- .../umfpack/UMFPACK/Source/umf_ltsolve.c | 2 +- .../umfpack/UMFPACK/Source/umf_ltsolve.h | 2 +- .../umfpack/UMFPACK/Source/umf_malloc.c | 6 +- .../umfpack/UMFPACK/Source/umf_malloc.h | 9 +- .../UMFPACK/Source/umf_mem_alloc_element.c | 2 +- .../UMFPACK/Source/umf_mem_alloc_element.h | 2 +- .../UMFPACK/Source/umf_mem_alloc_head_block.c | 2 +- .../UMFPACK/Source/umf_mem_alloc_head_block.h | 2 +- .../UMFPACK/Source/umf_mem_alloc_tail_block.c | 2 +- .../UMFPACK/Source/umf_mem_alloc_tail_block.h | 2 +- .../UMFPACK/Source/umf_mem_free_tail_block.c | 2 +- .../UMFPACK/Source/umf_mem_free_tail_block.h | 2 +- .../UMFPACK/Source/umf_mem_init_memoryspace.c | 2 +- .../UMFPACK/Source/umf_mem_init_memoryspace.h | 2 +- .../umfpack/UMFPACK/Source/umf_multicompile.c | 2 +- .../umfpack/UMFPACK/Source/umf_realloc.c | 6 +- .../umfpack/UMFPACK/Source/umf_realloc.h | 2 +- .../umfpack/UMFPACK/Source/umf_report_perm.c | 2 +- .../umfpack/UMFPACK/Source/umf_report_perm.h | 2 +- .../UMFPACK/Source/umf_report_vector.c | 2 +- .../UMFPACK/Source/umf_report_vector.h | 2 +- .../umfpack/UMFPACK/Source/umf_row_search.c | 2 +- .../umfpack/UMFPACK/Source/umf_row_search.h | 2 +- .../umfpack/UMFPACK/Source/umf_scale.c | 68 +- .../umfpack/UMFPACK/Source/umf_scale.h | 2 +- .../umfpack/UMFPACK/Source/umf_scale_column.c | 2 +- .../umfpack/UMFPACK/Source/umf_scale_column.h | 2 +- .../umfpack/UMFPACK/Source/umf_set_stats.c | 2 +- .../umfpack/UMFPACK/Source/umf_set_stats.h | 2 +- .../umfpack/UMFPACK/Source/umf_singletons.c | 23 +- .../umfpack/UMFPACK/Source/umf_singletons.h | 2 +- .../umfpack/UMFPACK/Source/umf_solve.c | 98 ++- .../umfpack/UMFPACK/Source/umf_solve.h | 2 +- .../umfpack/UMFPACK/Source/umf_start_front.c | 2 +- .../umfpack/UMFPACK/Source/umf_start_front.h | 2 +- .../umfpack/UMFPACK/Source/umf_store_lu.c | 2 +- .../umfpack/UMFPACK/Source/umf_store_lu.h | 2 +- .../UMFPACK/Source/umf_symbolic_usage.c | 2 +- .../UMFPACK/Source/umf_symbolic_usage.h | 2 +- .../umfpack/UMFPACK/Source/umf_transpose.c | 6 +- .../umfpack/UMFPACK/Source/umf_transpose.h | 2 +- .../umfpack/UMFPACK/Source/umf_triplet.c | 2 +- .../umfpack/UMFPACK/Source/umf_triplet.h | 2 +- .../UMFPACK/Source/umf_tuple_lengths.c | 2 +- .../UMFPACK/Source/umf_tuple_lengths.h | 2 +- .../umfpack/UMFPACK/Source/umf_usolve.c | 2 +- .../umfpack/UMFPACK/Source/umf_usolve.h | 2 +- .../umfpack/UMFPACK/Source/umf_utsolve.c | 2 +- .../umfpack/UMFPACK/Source/umf_utsolve.h | 2 +- .../UMFPACK/Source/umf_valid_numeric.c | 2 +- .../UMFPACK/Source/umf_valid_numeric.h | 2 +- .../UMFPACK/Source/umf_valid_symbolic.c | 2 +- .../UMFPACK/Source/umf_valid_symbolic.h | 2 +- .../umfpack/UMFPACK/Source/umf_version.h | 153 +--- .../UMFPACK/Source/umfpack_col_to_triplet.c | 2 +- .../umfpack/UMFPACK/Source/umfpack_defaults.c | 14 +- .../UMFPACK/Source/umfpack_free_numeric.c | 2 +- .../UMFPACK/Source/umfpack_free_symbolic.c | 2 +- .../UMFPACK/Source/umfpack_get_determinant.c | 3 +- .../umfpack/UMFPACK/Source/umfpack_get_lunz.c | 2 +- .../UMFPACK/Source/umfpack_get_numeric.c | 2 +- .../UMFPACK/Source/umfpack_get_symbolic.c | 2 +- .../umfpack/UMFPACK/Source/umfpack_global.c | 130 +++ .../UMFPACK/Source/umfpack_load_numeric.c | 2 +- .../UMFPACK/Source/umfpack_load_symbolic.c | 2 +- .../umfpack/UMFPACK/Source/umfpack_numeric.c | 2 +- .../UMFPACK/Source/umfpack_qsymbolic.c | 18 +- .../UMFPACK/Source/umfpack_report_control.c | 53 +- .../UMFPACK/Source/umfpack_report_info.c | 60 +- .../UMFPACK/Source/umfpack_report_matrix.c | 2 +- .../UMFPACK/Source/umfpack_report_numeric.c | 2 +- .../UMFPACK/Source/umfpack_report_perm.c | 2 +- .../UMFPACK/Source/umfpack_report_status.c | 5 +- .../UMFPACK/Source/umfpack_report_symbolic.c | 2 +- .../UMFPACK/Source/umfpack_report_triplet.c | 2 +- .../UMFPACK/Source/umfpack_report_vector.c | 2 +- .../UMFPACK/Source/umfpack_save_numeric.c | 2 +- .../UMFPACK/Source/umfpack_save_symbolic.c | 2 +- .../umfpack/UMFPACK/Source/umfpack_scale.c | 2 +- .../umfpack/UMFPACK/Source/umfpack_solve.c | 2 +- .../umfpack/UMFPACK/Source/umfpack_symbolic.c | 2 +- .../umfpack/UMFPACK/Source/umfpack_tictoc.c | 2 +- .../umfpack/UMFPACK/Source/umfpack_timer.c | 2 +- .../UMFPACK/Source/umfpack_transpose.c | 2 +- .../UMFPACK/Source/umfpack_triplet_to_col.c | 2 +- deal.II/doc/news/changes.html | 6 + 242 files changed, 6203 insertions(+), 5442 deletions(-) delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/Makefile delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_demo.c delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_demo.out delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_demo2.c delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_demo2.out delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_f77cross.f delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_f77cross.out delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_f77demo.f delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_f77demo.out delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_f77simple.f delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_f77simple.out delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_f77wrapper.c delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_simple.c delete mode 100644 deal.II/contrib/umfpack/AMD/Demo/amd_simple.out create mode 100644 deal.II/contrib/umfpack/AMD/Doc/lesser.txt create mode 100644 deal.II/contrib/umfpack/AMD/Include/UFconfig.h rename deal.II/contrib/umfpack/AMD/{Source => Include}/amd_internal.h (65%) create mode 100644 deal.II/contrib/umfpack/AMD/Source/amd_global.c create mode 100644 deal.II/contrib/umfpack/UMFPACK/Doc/lesser.txt create mode 100644 deal.II/contrib/umfpack/UMFPACK/Include/UFconfig.h create mode 100644 deal.II/contrib/umfpack/UMFPACK/Include/umfpack_global.h create mode 100644 deal.II/contrib/umfpack/UMFPACK/MATLAB/lcc_lib/lapacksyms.def create mode 100644 deal.II/contrib/umfpack/UMFPACK/MATLAB/lcc_lib/libmwlapack.lib rename deal.II/contrib/umfpack/UMFPACK/MATLAB/{umfpack.m => umfpack2.m} (63%) create mode 100644 deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_install.m create mode 100644 deal.II/contrib/umfpack/UMFPACK/MATLAB/west.mat create mode 100644 deal.II/contrib/umfpack/UMFPACK/MATLAB/west0067 delete mode 100644 deal.II/contrib/umfpack/UMFPACK/MATLAB/west0067.mat create mode 100644 deal.II/contrib/umfpack/UMFPACK/Source/cholmod_blas.h create mode 100644 deal.II/contrib/umfpack/UMFPACK/Source/umfpack_global.c diff --git a/deal.II/contrib/umfpack/AMD/Demo/Makefile b/deal.II/contrib/umfpack/AMD/Demo/Makefile deleted file mode 100644 index 395cc73375..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/Makefile +++ /dev/null @@ -1,79 +0,0 @@ -#------------------------------------------------------------------------------ -# compile the AMD demo (for both GNU make or original make) -#----------------------------------------------------------------------------- - -all: amd_simple amd_demo amd_demo2 - -include ../Make/Make.include - -C = $(CC) $(CFLAGS) $(CONFIG) -I../Include - -INC = ../Include/amd.h - -../Lib/libamd.a: - ( cd ../Source ; make ) - -../Lib/libamdf77.a: - ( cd ../Source ; make fortran ) - -#------------------------------------------------------------------------------ -# Create the demo program, run it, and compare the output -#------------------------------------------------------------------------------ - -dist: - -amd_demo: amd_demo.c ../Lib/libamd.a $(INC) - $(C) -DDINT -o amd_demo amd_demo.c ../Lib/libamd.a $(LIB) - ./amd_demo > my_amd_demo.out - - diff amd_demo.out my_amd_demo.out - -amd_demo2: amd_demo2.c ../Lib/libamd.a $(INC) - $(C) -DDINT -o amd_demo2 amd_demo2.c ../Lib/libamd.a $(LIB) - ./amd_demo2 > my_amd_demo2.out - - diff amd_demo2.out my_amd_demo2.out - -amd_simple: amd_simple.c ../Lib/libamd.a $(INC) - $(C) -DDINT -o amd_simple amd_simple.c ../Lib/libamd.a $(LIB) - ./amd_simple > my_amd_simple.out - - diff amd_simple.out my_amd_simple.out - -#------------------------------------------------------------------------------ -# compile the Fortran demo -#------------------------------------------------------------------------------ - -fortran: amd_f77demo amd_f77simple - -cross: amd_f77cross - -amd_f77demo: amd_f77demo.f ../Lib/libamdf77.a - $(F77) $(F77FLAGS) -o amd_f77demo amd_f77demo.f ../Lib/libamdf77.a \ - $(F77LIB) - ./amd_f77demo > my_amd_f77demo.out - - diff amd_f77demo.out my_amd_f77demo.out - -amd_f77simple: amd_f77simple.f ../Lib/libamdf77.a - $(F77) $(F77FLAGS) -o amd_f77simple amd_f77simple.f \ - ../Lib/libamdf77.a $(F77LIB) - ./amd_f77simple > my_amd_f77simple.out - - diff amd_f77simple.out my_amd_f77simple.out - -amd_f77wrapper.o: amd_f77wrapper.c - $(C) -DDINT -c amd_f77wrapper.c - -amd_f77cross: amd_f77cross.f amd_f77wrapper.o ../Lib/libamd.a - $(F77) $(F77FLAGS) -o amd_f77cross amd_f77cross.f amd_f77wrapper.o \ - ../Lib/libamd.a $(F77LIB) - ./amd_f77cross > my_amd_f77cross.out - - diff amd_f77cross.out my_amd_f77cross.out - -#------------------------------------------------------------------------------ -# Remove all but the files in the original distribution -#------------------------------------------------------------------------------ - -purge: clean - - $(RM) amd_demo my_amd_demo.out - - $(RM) amd_demo2 my_amd_demo2.out - - $(RM) amd_simple my_amd_simple.out - - $(RM) amd_f77demo my_amd_f77demo.out - - $(RM) amd_f77simple my_amd_f77simple.out - - $(RM) amd_f77cross my_amd_f77cross.out diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_demo.c b/deal.II/contrib/umfpack/AMD/Demo/amd_demo.c deleted file mode 100644 index 009dc3d583..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_demo.c +++ /dev/null @@ -1,169 +0,0 @@ -/* ========================================================================= */ -/* === AMD demo main program =============================================== */ -/* ========================================================================= */ - -/* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ -/* web: http://www.cise.ufl.edu/research/sparse/amd */ -/* ------------------------------------------------------------------------- */ - -/* A simple C main program that illustrates the use of the ANSI C interface - * to AMD. - */ - -#include "amd.h" -#include -#include - -int main (int argc, char **argv) -{ - /* The symmetric can_24 Harwell/Boeing matrix, including upper and lower - * triangular parts, and the diagonal entries. Note that this matrix is - * 0-based, with row and column indices in the range 0 to n-1. */ - int n = 24, nz, - Ap [ ] = { 0, 9, 15, 21, 27, 33, 39, 48, 57, 61, 70, 76, 82, 88, 94, 100, - 106, 110, 119, 128, 137, 143, 152, 156, 160 }, - Ai [ ] = { - /* column 0: */ 0, 5, 6, 12, 13, 17, 18, 19, 21, - /* column 1: */ 1, 8, 9, 13, 14, 17, - /* column 2: */ 2, 6, 11, 20, 21, 22, - /* column 3: */ 3, 7, 10, 15, 18, 19, - /* column 4: */ 4, 7, 9, 14, 15, 16, - /* column 5: */ 0, 5, 6, 12, 13, 17, - /* column 6: */ 0, 2, 5, 6, 11, 12, 19, 21, 23, - /* column 7: */ 3, 4, 7, 9, 14, 15, 16, 17, 18, - /* column 8: */ 1, 8, 9, 14, - /* column 9: */ 1, 4, 7, 8, 9, 13, 14, 17, 18, - /* column 10: */ 3, 10, 18, 19, 20, 21, - /* column 11: */ 2, 6, 11, 12, 21, 23, - /* column 12: */ 0, 5, 6, 11, 12, 23, - /* column 13: */ 0, 1, 5, 9, 13, 17, - /* column 14: */ 1, 4, 7, 8, 9, 14, - /* column 15: */ 3, 4, 7, 15, 16, 18, - /* column 16: */ 4, 7, 15, 16, - /* column 17: */ 0, 1, 5, 7, 9, 13, 17, 18, 19, - /* column 18: */ 0, 3, 7, 9, 10, 15, 17, 18, 19, - /* column 19: */ 0, 3, 6, 10, 17, 18, 19, 20, 21, - /* column 20: */ 2, 10, 19, 20, 21, 22, - /* column 21: */ 0, 2, 6, 10, 11, 19, 20, 21, 22, - /* column 22: */ 2, 20, 21, 22, - /* column 23: */ 6, 11, 12, 23 } ; - - int P [24], Pinv [24], i, j, k, jnew, p, inew, result ; - double Control [AMD_CONTROL], Info [AMD_INFO] ; - char A [24][24] ; - - printf ("AMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24:\n") ; - - /* get the default parameters, and print them */ - amd_defaults (Control) ; - amd_control (Control) ; - - /* print the input matrix */ - nz = Ap [n] ; - printf ("\nInput matrix: %d-by-%d, with %d entries.\n" - " Note that for a symmetric matrix such as this one, only the\n" - " strictly lower or upper triangular parts would need to be\n" - " passed to AMD, since AMD computes the ordering of A+A'. The\n" - " diagonal entries are also not needed, since AMD ignores them.\n" - , n, n, nz) ; - for (j = 0 ; j < n ; j++) - { - printf ("\nColumn: %d, number of entries: %d, with row indices in" - " Ai [%d ... %d]:\n row indices:", - j, Ap [j+1] - Ap [j], Ap [j], Ap [j+1]-1) ; - for (p = Ap [j] ; p < Ap [j+1] ; p++) - { - i = Ai [p] ; - printf (" %d", i) ; - } - printf ("\n") ; - } - - /* print a character plot of the input matrix. This is only reasonable - * because the matrix is small. */ - printf ("\nPlot of input matrix pattern:\n") ; - for (j = 0 ; j < n ; j++) - { - for (i = 0 ; i < n ; i++) A [i][j] = '.' ; - for (p = Ap [j] ; p < Ap [j+1] ; p++) - { - i = Ai [p] ; - A [i][j] = 'X' ; - } - } - printf (" ") ; - for (j = 0 ; j < n ; j++) printf (" %1d", j % 10) ; - printf ("\n") ; - for (i = 0 ; i < n ; i++) - { - printf ("%2d: ", i) ; - for (j = 0 ; j < n ; j++) - { - printf (" %c", A [i][j]) ; - } - printf ("\n") ; - } - - /* order the matrix */ - result = amd_order (n, Ap, Ai, P, Control, Info) ; - printf ("return value from amd_order: %d (should be %d)\n", - result, AMD_OK) ; - - /* print the statistics */ - amd_info (Info) ; - - if (result != AMD_OK) - { - printf ("AMD failed\n") ; - exit (1) ; - } - - /* print the permutation vector, P, and compute the inverse permutation */ - printf ("Permutation vector:\n") ; - for (k = 0 ; k < n ; k++) - { - /* row/column j is the kth row/column in the permuted matrix */ - j = P [k] ; - Pinv [j] = k ; - printf (" %2d", j) ; - } - printf ("\n\n") ; - - printf ("Inverse permutation vector:\n") ; - for (j = 0 ; j < n ; j++) - { - k = Pinv [j] ; - printf (" %2d", k) ; - } - printf ("\n\n") ; - - /* print a character plot of the permuted matrix. */ - printf ("\nPlot of permuted matrix pattern:\n") ; - for (jnew = 0 ; jnew < n ; jnew++) - { - j = P [jnew] ; - for (inew = 0 ; inew < n ; inew++) A [inew][jnew] = '.' ; - for (p = Ap [j] ; p < Ap [j+1] ; p++) - { - inew = Pinv [Ai [p]] ; - A [inew][jnew] = 'X' ; - } - } - printf (" ") ; - for (j = 0 ; j < n ; j++) printf (" %1d", j % 10) ; - printf ("\n") ; - for (i = 0 ; i < n ; i++) - { - printf ("%2d: ", i) ; - for (j = 0 ; j < n ; j++) - { - printf (" %c", A [i][j]) ; - } - printf ("\n") ; - } - - return (0) ; -} diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_demo.out b/deal.II/contrib/umfpack/AMD/Demo/amd_demo.out deleted file mode 100644 index eb8d845bc1..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_demo.out +++ /dev/null @@ -1,177 +0,0 @@ -AMD demo, with the 24-by-24 Harwell/Boeing matrix, can_24: - -amd: approximate minimum degree ordering, parameters: - dense row parameter: 10 - (rows with more than max (10 * sqrt (n), 16) entries are - considered "dense", and placed last in output permutation) - aggressive absorption: yes - - -Input matrix: 24-by-24, with 160 entries. - Note that for a symmetric matrix such as this one, only the - strictly lower or upper triangular parts would need to be - passed to AMD, since AMD computes the ordering of A+A'. The - diagonal entries are also not needed, since AMD ignores them. - -Column: 0, number of entries: 9, with row indices in Ai [0 ... 8]: - row indices: 0 5 6 12 13 17 18 19 21 - -Column: 1, number of entries: 6, with row indices in Ai [9 ... 14]: - row indices: 1 8 9 13 14 17 - -Column: 2, number of entries: 6, with row indices in Ai [15 ... 20]: - row indices: 2 6 11 20 21 22 - -Column: 3, number of entries: 6, with row indices in Ai [21 ... 26]: - row indices: 3 7 10 15 18 19 - -Column: 4, number of entries: 6, with row indices in Ai [27 ... 32]: - row indices: 4 7 9 14 15 16 - -Column: 5, number of entries: 6, with row indices in Ai [33 ... 38]: - row indices: 0 5 6 12 13 17 - -Column: 6, number of entries: 9, with row indices in Ai [39 ... 47]: - row indices: 0 2 5 6 11 12 19 21 23 - -Column: 7, number of entries: 9, with row indices in Ai [48 ... 56]: - row indices: 3 4 7 9 14 15 16 17 18 - -Column: 8, number of entries: 4, with row indices in Ai [57 ... 60]: - row indices: 1 8 9 14 - -Column: 9, number of entries: 9, with row indices in Ai [61 ... 69]: - row indices: 1 4 7 8 9 13 14 17 18 - -Column: 10, number of entries: 6, with row indices in Ai [70 ... 75]: - row indices: 3 10 18 19 20 21 - -Column: 11, number of entries: 6, with row indices in Ai [76 ... 81]: - row indices: 2 6 11 12 21 23 - -Column: 12, number of entries: 6, with row indices in Ai [82 ... 87]: - row indices: 0 5 6 11 12 23 - -Column: 13, number of entries: 6, with row indices in Ai [88 ... 93]: - row indices: 0 1 5 9 13 17 - -Column: 14, number of entries: 6, with row indices in Ai [94 ... 99]: - row indices: 1 4 7 8 9 14 - -Column: 15, number of entries: 6, with row indices in Ai [100 ... 105]: - row indices: 3 4 7 15 16 18 - -Column: 16, number of entries: 4, with row indices in Ai [106 ... 109]: - row indices: 4 7 15 16 - -Column: 17, number of entries: 9, with row indices in Ai [110 ... 118]: - row indices: 0 1 5 7 9 13 17 18 19 - -Column: 18, number of entries: 9, with row indices in Ai [119 ... 127]: - row indices: 0 3 7 9 10 15 17 18 19 - -Column: 19, number of entries: 9, with row indices in Ai [128 ... 136]: - row indices: 0 3 6 10 17 18 19 20 21 - -Column: 20, number of entries: 6, with row indices in Ai [137 ... 142]: - row indices: 2 10 19 20 21 22 - -Column: 21, number of entries: 9, with row indices in Ai [143 ... 151]: - row indices: 0 2 6 10 11 19 20 21 22 - -Column: 22, number of entries: 4, with row indices in Ai [152 ... 155]: - row indices: 2 20 21 22 - -Column: 23, number of entries: 4, with row indices in Ai [156 ... 159]: - row indices: 6 11 12 23 - -Plot of input matrix pattern: - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 - 0: X . . . . X X . . . . . X X . . . X X X . X . . - 1: . X . . . . . . X X . . . X X . . X . . . . . . - 2: . . X . . . X . . . . X . . . . . . . . X X X . - 3: . . . X . . . X . . X . . . . X . . X X . . . . - 4: . . . . X . . X . X . . . . X X X . . . . . . . - 5: X . . . . X X . . . . . X X . . . X . . . . . . - 6: X . X . . X X . . . . X X . . . . . . X . X . X - 7: . . . X X . . X . X . . . . X X X X X . . . . . - 8: . X . . . . . . X X . . . . X . . . . . . . . . - 9: . X . . X . . X X X . . . X X . . X X . . . . . -10: . . . X . . . . . . X . . . . . . . X X X X . . -11: . . X . . . X . . . . X X . . . . . . . . X . X -12: X . . . . X X . . . . X X . . . . . . . . . . X -13: X X . . . X . . . X . . . X . . . X . . . . . . -14: . X . . X . . X X X . . . . X . . . . . . . . . -15: . . . X X . . X . . . . . . . X X . X . . . . . -16: . . . . X . . X . . . . . . . X X . . . . . . . -17: X X . . . X . X . X . . . X . . . X X X . . . . -18: X . . X . . . X . X X . . . . X . X X X . . . . -19: X . . X . . X . . . X . . . . . . X X X X X . . -20: . . X . . . . . . . X . . . . . . . . X X X X . -21: X . X . . . X . . . X X . . . . . . . X X X X . -22: . . X . . . . . . . . . . . . . . . . . X X X . -23: . . . . . . X . . . . X X . . . . . . . . . . X -return value from amd_order: 0 (should be 0) - -amd: approximate minimum degree ordering, results: - status: OK - n, dimension of A: 24 - nz, number of nonzeros in A: 160 - symmetry of A: 1.0000 - number of nonzeros on diagonal: 24 - nonzeros in pattern of A+A' (excl. diagonal): 136 - # dense rows/columns of A+A': 0 - memory used, in bytes: 1516 - # of memory compactions: 0 - - The following approximate statistics are for a subsequent - factorization of A(P,P) + A(P,P)'. They are slight upper - bounds if there are no dense rows/columns in A+A', and become - looser if dense rows/columns exist. - - nonzeros in L (excluding diagonal): 97 - nonzeros in L (including diagonal): 121 - # divide operations for LDL' or LU: 97 - # multiply-subtract operations for LDL': 275 - # multiply-subtract operations for LU: 453 - max nz. in any column of L (incl. diagonal): 8 - - chol flop count for real A, sqrt counted as 1 flop: 671 - LDL' flop count for real A: 647 - LDL' flop count for complex A: 3073 - LU flop count for real A (with no pivoting): 1003 - LU flop count for complex A (with no pivoting): 4497 - -Permutation vector: - 22 20 10 23 12 5 16 8 14 4 15 7 1 9 13 17 0 2 3 6 11 18 21 19 - -Inverse permutation vector: - 16 12 17 18 9 5 19 11 7 13 2 20 4 14 8 10 6 15 21 23 1 22 0 3 - - -Plot of permuted matrix pattern: - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 - 0: X X . . . . . . . . . . . . . . . X . . . . X . - 1: X X X . . . . . . . . . . . . . . X . . . . X X - 2: . X X . . . . . . . . . . . . . . . X . . X X X - 3: . . . X X . . . . . . . . . . . . . . X X . . . - 4: . . . X X X . . . . . . . . . . X . . X X . . . - 5: . . . . X X . . . . . . . . X X X . . X . . . . - 6: . . . . . . X . . X X X . . . . . . . . . . . . - 7: . . . . . . . X X . . . X X . . . . . . . . . . - 8: . . . . . . . X X X . X X X . . . . . . . . . . - 9: . . . . . . X . X X X X . X . . . . . . . . . . -10: . . . . . . X . . X X X . . . . . . X . . X . . -11: . . . . . . X . X X X X . X . X . . X . . X . . -12: . . . . . . . X X . . . X X X X . . . . . . . . -13: . . . . . . . X X X . X X X X X . . . . . X . . -14: . . . . . X . . . . . . X X X X X . . . . . . . -15: . . . . . X . . . . . X X X X X X . . . . X . X -16: . . . . X X . . . . . . . . X X X . . X . X X X -17: X X . . . . . . . . . . . . . . . X . X X . X . -18: . . X . . . . . . . X X . . . . . . X . . X . X -19: . . . X X X . . . . . . . . . . X X . X X . X X -20: . . . X X . . . . . . . . . . . . X . X X . X . -21: . . X . . . . . . . X X . X . X X . X . . X . X -22: X X X . . . . . . . . . . . . . X X . X X . X X -23: . X X . . . . . . . . . . . . X X . X X . X X X diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_demo2.c b/deal.II/contrib/umfpack/AMD/Demo/amd_demo2.c deleted file mode 100644 index 450d7c55ba..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_demo2.c +++ /dev/null @@ -1,261 +0,0 @@ -/* ========================================================================= */ -/* === AMD demo main program (jumbled matrix version) ====================== */ -/* ========================================================================= */ - -/* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ -/* web: http://www.cise.ufl.edu/research/sparse/amd */ -/* ------------------------------------------------------------------------- */ - -/* A simple C main program that illustrates the use of the ANSI C interface - * to AMD. - * - * Identical to amd_demo.c, except that it operates on an input matrix that has - * unsorted columns and duplicate entries. - */ - -#include "amd.h" -#include -#include - -int main (int argc, char **argv) -{ - /* The symmetric can_24 Harwell/Boeing matrix (jumbled, and not symmetric). - * Since AMD operates on A+A', only A(i,j) or A(j,i) need to be specified, - * or both. The diagonal entries are optional (some are missing). - * There are many duplicate entries, which must be removed. */ - int n = 24, nz, - Ap [ ] = { 0, 9, 14, 20, 28, 33, 37, 44, 53, 58, 63, 63, 66, 69, 72, 75, - 78, 82, 86, 91, 97, 101, 112, 112, 116 }, - Ai [ ] = { - /* column 0: */ 0, 17, 18, 21, 5, 12, 5, 0, 13, - /* column 1: */ 14, 1, 8, 13, 17, - /* column 2: */ 2, 20, 11, 6, 11, 22, - /* column 3: */ 3, 3, 10, 7, 18, 18, 15, 19, - /* column 4: */ 7, 9, 15, 14, 16, - /* column 5: */ 5, 13, 6, 17, - /* column 6: */ 5, 0, 11, 6, 12, 6, 23, - /* column 7: */ 3, 4, 9, 7, 14, 16, 15, 17, 18, - /* column 8: */ 1, 9, 14, 14, 14, - /* column 9: */ 7, 13, 8, 1, 17, - /* column 10: */ - /* column 11: */ 2, 12, 23, - /* column 12: */ 5, 11, 12, - /* column 13: */ 0, 13, 17, - /* column 14: */ 1, 9, 14, - /* column 15: */ 3, 15, 16, - /* column 16: */ 16, 4, 4, 15, - /* column 17: */ 13, 17, 19, 17, - /* column 18: */ 15, 17, 19, 9, 10, - /* column 19: */ 17, 19, 20, 0, 6, 10, - /* column 20: */ 22, 10, 20, 21, - /* column 21: */ 6, 2, 10, 19, 20, 11, 21, 22, 22, 22, 22, - /* column 22: */ - /* column 23: */ 12, 11, 12, 23 } ; - - int Rp [25], Ri [116] ; - int P [24], Pinv [24], i, j, k, jnew, p, inew, result ; - double Control [AMD_CONTROL], Info [AMD_INFO] ; - char A [24][24] ; - - printf ("AMD demo, with a jumbled version of the 24-by-24\n") ; - printf ("Harwell/Boeing matrix, can_24:\n") ; - - /* get the default parameters, and print them */ - amd_defaults (Control) ; - amd_control (Control) ; - - /* print the input matrix */ - nz = Ap [n] ; - printf ("\nJumbled input matrix: %d-by-%d, with %d entries.\n" - " Note that for a symmetric matrix such as this one, only the\n" - " strictly lower or upper triangular parts would need to be\n" - " passed to AMD, since AMD computes the ordering of A+A'. The\n" - " diagonal entries are also not needed, since AMD ignores them.\n" - " This version of the matrix has jumbled columns and duplicate\n" - " row indices, and must be fixed by amd_preprocess prior to\n" - " ordering it with amd_order.\n" , n, n, nz) ; - for (j = 0 ; j < n ; j++) - { - printf ("\nColumn: %d, number of entries: %d, with row indices in" - " Ai [%d ... %d]:\n row indices:", - j, Ap [j+1] - Ap [j], Ap [j], Ap [j+1]-1) ; - for (p = Ap [j] ; p < Ap [j+1] ; p++) - { - i = Ai [p] ; - printf (" %d", i) ; - } - printf ("\n") ; - } - - /* print a character plot of the input matrix. This is only reasonable - * because the matrix is small. */ - printf ("\nPlot of (jumbled) input matrix pattern:\n") ; - for (j = 0 ; j < n ; j++) - { - for (i = 0 ; i < n ; i++) A [i][j] = '.' ; - for (p = Ap [j] ; p < Ap [j+1] ; p++) - { - i = Ai [p] ; - A [i][j] = 'X' ; - } - } - printf (" ") ; - for (j = 0 ; j < n ; j++) printf (" %1d", j % 10) ; - printf ("\n") ; - for (i = 0 ; i < n ; i++) - { - printf ("%2d: ", i) ; - for (j = 0 ; j < n ; j++) - { - printf (" %c", A [i][j]) ; - } - printf ("\n") ; - } - - /* sort, remove duplicates, and transpose A to get R */ - result = amd_preprocess (n, Ap, Ai, Rp, Ri) ; - printf ("return value from amd_preprocess: %d (should be %d)\n", - result, AMD_OK) ; - - if (result != AMD_OK) - { - printf ("AMD failed\n") ; - exit (1) ; - } - - /* print the sorted/transposed matrix R */ - printf ("\nThe column-oriented form of the sorted/transposed matrix R:\n"); - for (j = 0 ; j < n ; j++) - { - printf ("\nColumn: %d, number of entries: %d, with row indices in" - " Ri [%d ... %d]:\n row indices:", - j, Rp [j+1] - Rp [j], Rp [j], Rp [j+1]-1) ; - for (p = Rp [j] ; p < Rp [j+1] ; p++) - { - i = Ri [p] ; - printf (" %d", i) ; - } - printf ("\n") ; - } - - /* print a character plot of the matrix R. */ - printf ("\nPlot of the sorted/transposed matrix R:\n") ; - for (j = 0 ; j < n ; j++) - { - for (i = 0 ; i < n ; i++) A [i][j] = '.' ; - for (p = Rp [j] ; p < Rp [j+1] ; p++) - { - i = Ri [p] ; - A [i][j] = 'X' ; - } - } - printf (" ") ; - for (j = 0 ; j < n ; j++) printf (" %1d", j % 10) ; - printf (" \n") ; - for (i = 0 ; i < n ; i++) - { - printf ("%2d: ", i) ; - for (j = 0 ; j < n ; j++) - { - printf (" %c", A [i][j]) ; - } - printf (" \n") ; - } - - /* print a character plot of the matrix R+R'. */ - printf ("\nPlot of symmetric matrix to be ordered by amd_order:\n") ; - for (j = 0 ; j < n ; j++) - { - for (i = 0 ; i < n ; i++) A [i][j] = '.' ; - } - for (j = 0 ; j < n ; j++) - { - A [j][j] = 'X' ; - for (p = Rp [j] ; p < Rp [j+1] ; p++) - { - i = Ri [p] ; - A [i][j] = 'X' ; - A [j][i] = 'X' ; - } - } - printf (" ") ; - for (j = 0 ; j < n ; j++) printf (" %1d", j % 10) ; - printf ("\n") ; - for (i = 0 ; i < n ; i++) - { - printf ("%2d: ", i) ; - for (j = 0 ; j < n ; j++) - { - printf (" %c", A [i][j]) ; - } - printf ("\n") ; - } - - /* order the matrix */ - result = amd_order (n, Rp, Ri, P, Control, Info) ; - printf ("return value from amd_order: %d (should be %d)\n", - result, AMD_OK) ; - - /* print the statistics */ - amd_info (Info) ; - - if (result != AMD_OK) - { - printf ("AMD failed\n") ; - exit (1) ; - } - - /* print the permutation vector, P, and compute the inverse permutation */ - printf ("Permutation vector:\n") ; - for (k = 0 ; k < n ; k++) - { - /* row/column j is the kth row/column in the permuted matrix */ - j = P [k] ; - Pinv [j] = k ; - printf (" %2d", j) ; - } - printf ("\n\n") ; - - printf ("Inverse permutation vector:\n") ; - for (j = 0 ; j < n ; j++) - { - k = Pinv [j] ; - printf (" %2d", k) ; - } - printf ("\n\n") ; - - /* print a character plot of the permuted matrix. */ - printf ("\nPlot of (symmetrized) permuted matrix pattern:\n") ; - for (j = 0 ; j < n ; j++) - { - for (i = 0 ; i < n ; i++) A [i][j] = '.' ; - } - for (jnew = 0 ; jnew < n ; jnew++) - { - j = P [jnew] ; - A [jnew][jnew] = 'X' ; - for (p = Rp [j] ; p < Rp [j+1] ; p++) - { - inew = Pinv [Ri [p]] ; - A [inew][jnew] = 'X' ; - A [jnew][inew] = 'X' ; - } - } - printf (" ") ; - for (j = 0 ; j < n ; j++) printf (" %1d", j % 10) ; - printf ("\n") ; - for (i = 0 ; i < n ; i++) - { - printf ("%2d: ", i) ; - for (j = 0 ; j < n ; j++) - { - printf (" %c", A [i][j]) ; - } - printf ("\n") ; - } - - return (0) ; -} diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_demo2.out b/deal.II/contrib/umfpack/AMD/Demo/amd_demo2.out deleted file mode 100644 index c03e8d5690..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_demo2.out +++ /dev/null @@ -1,310 +0,0 @@ -AMD demo, with a jumbled version of the 24-by-24 -Harwell/Boeing matrix, can_24: - -amd: approximate minimum degree ordering, parameters: - dense row parameter: 10 - (rows with more than max (10 * sqrt (n), 16) entries are - considered "dense", and placed last in output permutation) - aggressive absorption: yes - - -Jumbled input matrix: 24-by-24, with 116 entries. - Note that for a symmetric matrix such as this one, only the - strictly lower or upper triangular parts would need to be - passed to AMD, since AMD computes the ordering of A+A'. The - diagonal entries are also not needed, since AMD ignores them. - This version of the matrix has jumbled columns and duplicate - row indices, and must be fixed by amd_preprocess prior to - ordering it with amd_order. - -Column: 0, number of entries: 9, with row indices in Ai [0 ... 8]: - row indices: 0 17 18 21 5 12 5 0 13 - -Column: 1, number of entries: 5, with row indices in Ai [9 ... 13]: - row indices: 14 1 8 13 17 - -Column: 2, number of entries: 6, with row indices in Ai [14 ... 19]: - row indices: 2 20 11 6 11 22 - -Column: 3, number of entries: 8, with row indices in Ai [20 ... 27]: - row indices: 3 3 10 7 18 18 15 19 - -Column: 4, number of entries: 5, with row indices in Ai [28 ... 32]: - row indices: 7 9 15 14 16 - -Column: 5, number of entries: 4, with row indices in Ai [33 ... 36]: - row indices: 5 13 6 17 - -Column: 6, number of entries: 7, with row indices in Ai [37 ... 43]: - row indices: 5 0 11 6 12 6 23 - -Column: 7, number of entries: 9, with row indices in Ai [44 ... 52]: - row indices: 3 4 9 7 14 16 15 17 18 - -Column: 8, number of entries: 5, with row indices in Ai [53 ... 57]: - row indices: 1 9 14 14 14 - -Column: 9, number of entries: 5, with row indices in Ai [58 ... 62]: - row indices: 7 13 8 1 17 - -Column: 10, number of entries: 0, with row indices in Ai [63 ... 62]: - row indices: - -Column: 11, number of entries: 3, with row indices in Ai [63 ... 65]: - row indices: 2 12 23 - -Column: 12, number of entries: 3, with row indices in Ai [66 ... 68]: - row indices: 5 11 12 - -Column: 13, number of entries: 3, with row indices in Ai [69 ... 71]: - row indices: 0 13 17 - -Column: 14, number of entries: 3, with row indices in Ai [72 ... 74]: - row indices: 1 9 14 - -Column: 15, number of entries: 3, with row indices in Ai [75 ... 77]: - row indices: 3 15 16 - -Column: 16, number of entries: 4, with row indices in Ai [78 ... 81]: - row indices: 16 4 4 15 - -Column: 17, number of entries: 4, with row indices in Ai [82 ... 85]: - row indices: 13 17 19 17 - -Column: 18, number of entries: 5, with row indices in Ai [86 ... 90]: - row indices: 15 17 19 9 10 - -Column: 19, number of entries: 6, with row indices in Ai [91 ... 96]: - row indices: 17 19 20 0 6 10 - -Column: 20, number of entries: 4, with row indices in Ai [97 ... 100]: - row indices: 22 10 20 21 - -Column: 21, number of entries: 11, with row indices in Ai [101 ... 111]: - row indices: 6 2 10 19 20 11 21 22 22 22 22 - -Column: 22, number of entries: 0, with row indices in Ai [112 ... 111]: - row indices: - -Column: 23, number of entries: 4, with row indices in Ai [112 ... 115]: - row indices: 12 11 12 23 - -Plot of (jumbled) input matrix pattern: - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 - 0: X . . . . . X . . . . . . X . . . . . X . . . . - 1: . X . . . . . . X X . . . . X . . . . . . . . . - 2: . . X . . . . . . . . X . . . . . . . . . X . . - 3: . . . X . . . X . . . . . . . X . . . . . . . . - 4: . . . . . . . X . . . . . . . . X . . . . . . . - 5: X . . . . X X . . . . . X . . . . . . . . . . . - 6: . . X . . X X . . . . . . . . . . . . X . X . . - 7: . . . X X . . X . X . . . . . . . . . . . . . . - 8: . X . . . . . . . X . . . . . . . . . . . . . . - 9: . . . . X . . X X . . . . . X . . . X . . . . . -10: . . . X . . . . . . . . . . . . . . X X X X . . -11: . . X . . . X . . . . . X . . . . . . . . X . X -12: X . . . . . X . . . . X X . . . . . . . . . . X -13: X X . . . X . . . X . . . X . . . X . . . . . . -14: . X . . X . . X X . . . . . X . . . . . . . . . -15: . . . X X . . X . . . . . . . X X . X . . . . . -16: . . . . X . . X . . . . . . . X X . . . . . . . -17: X X . . . X . X . X . . . X . . . X X X . . . . -18: X . . X . . . X . . . . . . . . . . . . . . . . -19: . . . X . . . . . . . . . . . . . X X X . X . . -20: . . X . . . . . . . . . . . . . . . . X X X . . -21: X . . . . . . . . . . . . . . . . . . . X X . . -22: . . X . . . . . . . . . . . . . . . . . X X . . -23: . . . . . . X . . . . X . . . . . . . . . . . X -return value from amd_preprocess: 0 (should be 0) - -The column-oriented form of the sorted/transposed matrix R: - -Column: 0, number of entries: 4, with row indices in Ri [0 ... 3]: - row indices: 0 6 13 19 - -Column: 1, number of entries: 4, with row indices in Ri [4 ... 7]: - row indices: 1 8 9 14 - -Column: 2, number of entries: 3, with row indices in Ri [8 ... 10]: - row indices: 2 11 21 - -Column: 3, number of entries: 3, with row indices in Ri [11 ... 13]: - row indices: 3 7 15 - -Column: 4, number of entries: 2, with row indices in Ri [14 ... 15]: - row indices: 7 16 - -Column: 5, number of entries: 4, with row indices in Ri [16 ... 19]: - row indices: 0 5 6 12 - -Column: 6, number of entries: 5, with row indices in Ri [20 ... 24]: - row indices: 2 5 6 19 21 - -Column: 7, number of entries: 4, with row indices in Ri [25 ... 28]: - row indices: 3 4 7 9 - -Column: 8, number of entries: 2, with row indices in Ri [29 ... 30]: - row indices: 1 9 - -Column: 9, number of entries: 5, with row indices in Ri [31 ... 35]: - row indices: 4 7 8 14 18 - -Column: 10, number of entries: 5, with row indices in Ri [36 ... 40]: - row indices: 3 18 19 20 21 - -Column: 11, number of entries: 5, with row indices in Ri [41 ... 45]: - row indices: 2 6 12 21 23 - -Column: 12, number of entries: 5, with row indices in Ri [46 ... 50]: - row indices: 0 6 11 12 23 - -Column: 13, number of entries: 6, with row indices in Ri [51 ... 56]: - row indices: 0 1 5 9 13 17 - -Column: 14, number of entries: 5, with row indices in Ri [57 ... 61]: - row indices: 1 4 7 8 14 - -Column: 15, number of entries: 6, with row indices in Ri [62 ... 67]: - row indices: 3 4 7 15 16 18 - -Column: 16, number of entries: 4, with row indices in Ri [68 ... 71]: - row indices: 4 7 15 16 - -Column: 17, number of entries: 9, with row indices in Ri [72 ... 80]: - row indices: 0 1 5 7 9 13 17 18 19 - -Column: 18, number of entries: 3, with row indices in Ri [81 ... 83]: - row indices: 0 3 7 - -Column: 19, number of entries: 5, with row indices in Ri [84 ... 88]: - row indices: 3 17 18 19 21 - -Column: 20, number of entries: 4, with row indices in Ri [89 ... 92]: - row indices: 2 19 20 21 - -Column: 21, number of entries: 3, with row indices in Ri [93 ... 95]: - row indices: 0 20 21 - -Column: 22, number of entries: 3, with row indices in Ri [96 ... 98]: - row indices: 2 20 21 - -Column: 23, number of entries: 3, with row indices in Ri [99 ... 101]: - row indices: 6 11 23 - -Plot of the sorted/transposed matrix R: - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 - 0: X . . . . X . . . . . . X X . . . X X . . X . . - 1: . X . . . . . . X . . . . X X . . X . . . . . . - 2: . . X . . . X . . . . X . . . . . . . . X . X . - 3: . . . X . . . X . . X . . . . X . . X X . . . . - 4: . . . . . . . X . X . . . . X X X . . . . . . . - 5: . . . . . X X . . . . . . X . . . X . . . . . . - 6: X . . . . X X . . . . X X . . . . . . . . . . X - 7: . . . X X . . X . X . . . . X X X X X . . . . . - 8: . X . . . . . . . X . . . . X . . . . . . . . . - 9: . X . . . . . X X . . . . X . . . X . . . . . . -10: . . . . . . . . . . . . . . . . . . . . . . . . -11: . . X . . . . . . . . . X . . . . . . . . . . X -12: . . . . . X . . . . . X X . . . . . . . . . . . -13: X . . . . . . . . . . . . X . . . X . . . . . . -14: . X . . . . . . . X . . . . X . . . . . . . . . -15: . . . X . . . . . . . . . . . X X . . . . . . . -16: . . . . X . . . . . . . . . . X X . . . . . . . -17: . . . . . . . . . . . . . X . . . X . X . . . . -18: . . . . . . . . . X X . . . . X . X . X . . . . -19: X . . . . . X . . . X . . . . . . X . X X . . . -20: . . . . . . . . . . X . . . . . . . . . X X X . -21: . . X . . . X . . . X X . . . . . . . X X X X . -22: . . . . . . . . . . . . . . . . . . . . . . . . -23: . . . . . . . . . . . X X . . . . . . . . . . X - -Plot of symmetric matrix to be ordered by amd_order: - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 - 0: X . . . . X X . . . . . X X . . . X X X . X . . - 1: . X . . . . . . X X . . . X X . . X . . . . . . - 2: . . X . . . X . . . . X . . . . . . . . X X X . - 3: . . . X . . . X . . X . . . . X . . X X . . . . - 4: . . . . X . . X . X . . . . X X X . . . . . . . - 5: X . . . . X X . . . . . X X . . . X . . . . . . - 6: X . X . . X X . . . . X X . . . . . . X . X . X - 7: . . . X X . . X . X . . . . X X X X X . . . . . - 8: . X . . . . . . X X . . . . X . . . . . . . . . - 9: . X . . X . . X X X . . . X X . . X X . . . . . -10: . . . X . . . . . . X . . . . . . . X X X X . . -11: . . X . . . X . . . . X X . . . . . . . . X . X -12: X . . . . X X . . . . X X . . . . . . . . . . X -13: X X . . . X . . . X . . . X . . . X . . . . . . -14: . X . . X . . X X X . . . . X . . . . . . . . . -15: . . . X X . . X . . . . . . . X X . X . . . . . -16: . . . . X . . X . . . . . . . X X . . . . . . . -17: X X . . . X . X . X . . . X . . . X X X . . . . -18: X . . X . . . X . X X . . . . X . X X X . . . . -19: X . . X . . X . . . X . . . . . . X X X X X . . -20: . . X . . . . . . . X . . . . . . . . X X X X . -21: X . X . . . X . . . X X . . . . . . . X X X X . -22: . . X . . . . . . . . . . . . . . . . . X X X . -23: . . . . . . X . . . . X X . . . . . . . . . . X -return value from amd_order: 0 (should be 0) - -amd: approximate minimum degree ordering, results: - status: OK - n, dimension of A: 24 - nz, number of nonzeros in A: 102 - symmetry of A: 0.4000 - number of nonzeros on diagonal: 17 - nonzeros in pattern of A+A' (excl. diagonal): 136 - # dense rows/columns of A+A': 0 - memory used, in bytes: 1516 - # of memory compactions: 0 - - The following approximate statistics are for a subsequent - factorization of A(P,P) + A(P,P)'. They are slight upper - bounds if there are no dense rows/columns in A+A', and become - looser if dense rows/columns exist. - - nonzeros in L (excluding diagonal): 97 - nonzeros in L (including diagonal): 121 - # divide operations for LDL' or LU: 97 - # multiply-subtract operations for LDL': 275 - # multiply-subtract operations for LU: 453 - max nz. in any column of L (incl. diagonal): 8 - - chol flop count for real A, sqrt counted as 1 flop: 671 - LDL' flop count for real A: 647 - LDL' flop count for complex A: 3073 - LU flop count for real A (with no pivoting): 1003 - LU flop count for complex A (with no pivoting): 4497 - -Permutation vector: - 22 20 10 23 12 5 16 8 14 4 15 7 1 9 13 17 0 2 3 6 11 18 21 19 - -Inverse permutation vector: - 16 12 17 18 9 5 19 11 7 13 2 20 4 14 8 10 6 15 21 23 1 22 0 3 - - -Plot of (symmetrized) permuted matrix pattern: - 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 - 0: X X . . . . . . . . . . . . . . . X . . . . X . - 1: X X X . . . . . . . . . . . . . . X . . . . X X - 2: . X X . . . . . . . . . . . . . . . X . . X X X - 3: . . . X X . . . . . . . . . . . . . . X X . . . - 4: . . . X X X . . . . . . . . . . X . . X X . . . - 5: . . . . X X . . . . . . . . X X X . . X . . . . - 6: . . . . . . X . . X X X . . . . . . . . . . . . - 7: . . . . . . . X X . . . X X . . . . . . . . . . - 8: . . . . . . . X X X . X X X . . . . . . . . . . - 9: . . . . . . X . X X X X . X . . . . . . . . . . -10: . . . . . . X . . X X X . . . . . . X . . X . . -11: . . . . . . X . X X X X . X . X . . X . . X . . -12: . . . . . . . X X . . . X X X X . . . . . . . . -13: . . . . . . . X X X . X X X X X . . . . . X . . -14: . . . . . X . . . . . . X X X X X . . . . . . . -15: . . . . . X . . . . . X X X X X X . . . . X . X -16: . . . . X X . . . . . . . . X X X . . X . X X X -17: X X . . . . . . . . . . . . . . . X . X X . X . -18: . . X . . . . . . . X X . . . . . . X . . X . X -19: . . . X X X . . . . . . . . . . X X . X X . X X -20: . . . X X . . . . . . . . . . . . X . X X . X . -21: . . X . . . . . . . X X . X . X X . X . . X . X -22: X X X . . . . . . . . . . . . . X X . X X . X X -23: . X X . . . . . . . . . . . . X X . X X . X X X diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_f77cross.f b/deal.II/contrib/umfpack/AMD/Demo/amd_f77cross.f deleted file mode 100644 index ddbfd00268..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_f77cross.f +++ /dev/null @@ -1,51 +0,0 @@ -C ====================================================================== -C === AMD_cross ======================================================== -C ====================================================================== - -C ---------------------------------------------------------------------- -C AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. -C Davis, Patrick R. Amestoy, and Iain S. Duff. See ../README for -C License. email: davis@cise.ufl.edu CISE Department, Univ. of -C Florida. web: http://www.cise.ufl.edu/research/sparse/amd -C ---------------------------------------------------------------------- - -C This program provides an example of how to call the C version of AMD -C from a Fortran program. It is HIGHLY non-portable. - -C The amd_order routine returns PERM (1) < 0 if an error occurs. -C (-1: out of memory, -2: invalid matrix) - -C Note that the input matrix is 0-based. From Fortran, column j of the -C matrix is in AI (AP (I)+1 ... AP (I+1)). The row indices in this -C set are in the range 0 to N-1. To demonstrate this translation, -C the input matrix is printed in 1-based form. This program uses -C the same 5-by-5 test matrix as amd_simple.c. - - INTEGER N, NZ, K, P - PARAMETER (N = 5, NZ = 14) - INTEGER AP (N+1), AI (NZ), PERM (N) - DATA AP / 0, 2, 6, 10, 12, 14 / - DATA AI / 0,1, 0,1,2,4, 1,2,3,4, 2,3, 1,4 / - DOUBLE PRECISION CONTROL (5), INFO (20) - -C print the input matrix - PRINT 10, N, N, NZ -10 FORMAT ('Input matrix:', I2, '-by-', I2, ' with',I3,' entries') - DO 40 J = 1, N - PRINT 20, J, AP (J+1) - AP (J), AP (J)+1, AP (J+1) -20 FORMAT ( /, 'Column: ', I2, ' number of entries: ', I2, - $ ' with row indices in AI (', I3, ' ... ', I3, ')') - PRINT 30, ((AI (P) + 1), P = AP (J) + 1, AP (J+1)) -30 FORMAT (' row indices: ', 24I3) -40 CONTINUE - - CALL AMDDEFAULTS (CONTROL) - CALL AMDORDER (N, AP, AI, PERM, CONTROL, INFO) - CALL AMDINFO (INFO) - - DO 60 K = 1, N - PRINT 50, K, PERM (K) + 1 -50 FORMAT ('PERM (',I2,') = ', I2) -60 CONTINUE - END - diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_f77cross.out b/deal.II/contrib/umfpack/AMD/Demo/amd_f77cross.out deleted file mode 100644 index 6d8a670da5..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_f77cross.out +++ /dev/null @@ -1,51 +0,0 @@ -Input matrix: 5-by- 5 with 14 entries - -Column: 1 number of entries: 2 with row indices in AI ( 1 ... 2) - row indices: 1 2 - -Column: 2 number of entries: 4 with row indices in AI ( 3 ... 6) - row indices: 1 2 3 5 - -Column: 3 number of entries: 4 with row indices in AI ( 7 ... 10) - row indices: 2 3 4 5 - -Column: 4 number of entries: 2 with row indices in AI ( 11 ... 12) - row indices: 3 4 - -Column: 5 number of entries: 2 with row indices in AI ( 13 ... 14) - row indices: 2 5 - -amd: approximate minimum degree ordering, results: - status: OK - n, dimension of A: 5 - nz, number of nonzeros in A: 14 - symmetry of A: 0.8889 - number of nonzeros on diagonal: 5 - nonzeros in pattern of A+A' (excl. diagonal): 10 - # dense rows/columns of A+A': 0 - memory used, in bytes: 228 - # of memory compactions: 0 - - The following approximate statistics are for a subsequent - factorization of A(P,P) + A(P,P)'. They are slight upper - bounds if there are no dense rows/columns in A+A', and become - looser if dense rows/columns exist. - - nonzeros in L (excluding diagonal): 5 - nonzeros in L (including diagonal): 10 - # divide operations for LDL' or LU: 5 - # multiply-subtract operations for LDL': 6 - # multiply-subtract operations for LU: 7 - max nz. in any column of L (incl. diagonal): 3 - - chol flop count for real A, sqrt counted as 1 flop: 22 - LDL' flop count for real A: 17 - LDL' flop count for complex A: 93 - LU flop count for real A (with no pivoting): 19 - LU flop count for complex A (with no pivoting): 101 - -PERM ( 1) = 1 -PERM ( 2) = 4 -PERM ( 3) = 3 -PERM ( 4) = 5 -PERM ( 5) = 2 diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_f77demo.f b/deal.II/contrib/umfpack/AMD/Demo/amd_f77demo.f deleted file mode 100644 index 3ed47ab206..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_f77demo.f +++ /dev/null @@ -1,161 +0,0 @@ -C ====================================================================== -C === Fortran AMD demo main program ==================================== -C ====================================================================== - -C ---------------------------------------------------------------------- -C AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. -C Davis, Patrick R. Amestoy, and Iain S. Duff. See ../README for -C License. email: davis@cise.ufl.edu CISE Department, Univ. of -C Florida. web: http://www.cise.ufl.edu/research/sparse/amd -C ---------------------------------------------------------------------- - -C A simple Fortran 77 main program that illustrates the use of the -C Fortran version of AMD (both the AMD and AMDBAR routines). Note -C that aggressive absorption has no effect on this particular matrix. - -C AP and AI contain the symmetric can_24 Harwell/Boeing matrix, -C including upper and lower triangular parts, but excluding the -C diagonal entries. Note that this matrix is 1-based, with row -C and column indices in the range 1 to N. - - INTEGER N, NZ, IWLEN, PFREE, I, J, K, JNEW, P, INEW, - $ METHOD, NCMPA - PARAMETER (N = 24, NZ = 136, IWLEN = 200) - INTEGER PE (N), DEGREE (N), NV (N), NEXT (N), PERM (N), W (N), - $ HEAD (N), PINV (N), LEN (N), AP (N+1), AI (NZ), IW (IWLEN) - CHARACTER A (24,24) - - DATA AP - $ / 1, 9, 14, 19, 24, 29, 34, 42, 50, 53, 61, 66, 71, - $ 76, 81, 86, 91, 94, 102, 110, 118, 123, 131, 134, 137 / - DATA AI / - $ 6, 7, 13, 14, 18, 19, 20, 22, - $ 9, 10, 14, 15, 18, - $ 7, 12, 21, 22, 23, - $ 8, 11, 16, 19, 20, - $ 8, 10, 15, 16, 17, - $ 1, 7, 13, 14, 18, - $ 1, 3, 6, 12, 13, 20, 22, 24, - $ 4, 5, 10, 15, 16, 17, 18, 19, - $ 2, 10, 15, - $ 2, 5, 8, 9, 14, 15, 18, 19, - $ 4, 19, 20, 21, 22, - $ 3, 7, 13, 22, 24, - $ 1, 6, 7, 12, 24, - $ 1, 2, 6, 10, 18, - $ 2, 5, 8, 9, 10, - $ 4, 5, 8, 17, 19, - $ 5, 8, 16, - $ 1, 2, 6, 8, 10, 14, 19, 20, - $ 1, 4, 8, 10, 11, 16, 18, 20, - $ 1, 4, 7, 11, 18, 19, 21, 22, - $ 3, 11, 20, 22, 23, - $ 1, 3, 7, 11, 12, 20, 21, 23, - $ 3, 21, 22, - $ 7, 12, 13 / - -C print the input matrix - PRINT 11, N, N, NZ -11 FORMAT ('AMD Fortran 77 demo, with the 24-by-24', - $ ' Harwell/Boeing matrix, can_24:' - $ /, 'Input matrix: ', I2, '-by-', I2,' with ',I3,' entries', - $ /, 'Note that the Fortran version of AMD requires that' - $ /, 'no diagonal entries be present.') - DO 20 J = 1, N - PRINT 21, J, AP (J+1) - AP (J), AP (J), AP (J+1)-1 -21 FORMAT ( /, 'Column: ', I2, ' number of entries: ', I2, - $ ' with row indices in AI (', I3, ' ... ', I3, ')') - PRINT 10, ((AI (P)), P = AP (J), AP (J+1) - 1) -10 FORMAT (' row indices: ', 24I3) -20 CONTINUE - -C print a character plot of the input matrix. This is only -C reasonable because the matrix is small. - PRINT 31 -31 FORMAT ('Plot of input matrix pattern:') - DO 50 J = 1,N - DO 30 I = 1,N - A (I, J) = '.' -30 CONTINUE -C add the diagonal entry to the plot - A (J, J) = 'X' - DO 40 P = AP (J), AP (J+1) - 1 - I = AI (P) - A (I, J) = 'X' -40 CONTINUE -50 CONTINUE - PRINT 60, ((MOD (J, 10)), J = 1,N) -60 FORMAT (' ', 24I2) - DO 80 I = 1,N - PRINT 70, I, (A (I, J), J = 1,N) -70 FORMAT (' ', I2, ': ', 24A2) -80 CONTINUE - - DO 190 METHOD = 1,2 - -C load the matrix into AMD's workspace - DO 90 J = 1,N - PE (J) = AP (J) - LEN (J) = AP (J+1) - AP (J) -90 CONTINUE - DO 100 P = 1,NZ - IW (P) = AI (P) -100 CONTINUE - PFREE = NZ + 1 - -C order the matrix using AMD or AMDBAR - IF (METHOD .EQ. 1) THEN - PRINT 101 -101 FORMAT (/, '------------------------------------------', - $ /, 'ordering the matrix with AMD', - $ /, '------------------------------------------') - CALL AMD (N, PE, IW, LEN, IWLEN, PFREE, NV, NEXT, - $ PERM, HEAD, PINV, DEGREE, NCMPA, W) - ELSE - PRINT 102 -102 FORMAT (/, '------------------------------------------', - $ /, 'ordering the matrix with AMDBAR', - $ /, '------------------------------------------') - CALL AMDBAR (N, PE, IW, LEN, IWLEN, PFREE, NV, NEXT, - $ PERM, HEAD, PINV, DEGREE, NCMPA, W) - ENDIF - -C print the permutation vector, PERM, and its inverse, PINV. -C row/column J = PERM (K) is the Kth row/column in the -C permuted matrix. - PRINT 110, (PERM (K), K = 1,N) -110 FORMAT (/, 'Permutation vector: ', /, 24I3) - PRINT 120, (PINV (J), J = 1,N) -120 FORMAT (/, 'Inverse permutation vector: ', /, 24I3) - -C print a character plot of the permuted matrix. - PRINT 121 -121 FORMAT ('Plot of permuted matrix pattern:') - DO 150 JNEW = 1,N - J = PERM (JNEW) - DO 130 INEW = 1,N - A (INEW, JNEW) = '.' -130 CONTINUE -C add the diagonal entry to the plot - A (JNEW, JNEW) = 'X' - DO 140 P = AP (J), AP (J+1) - 1 - INEW = PINV (AI (P)) - A (INEW, JNEW) = 'X' -140 CONTINUE -150 CONTINUE - PRINT 60, ((MOD (J, 10)), J = 1,N) - DO 160 I = 1,N - PRINT 70, I, (A (I, J), J = 1,N) -160 CONTINUE - -C print the permuted matrix, PERM*A*PERM' - DO 180 JNEW = 1,N - J = PERM (JNEW) - PRINT 171, JNEW, J, AP (J+1) - AP (J) -171 FORMAT (/, 'New column: ', I2, ' old column: ', I2, - $ ' number of entries: ', I2) - PRINT 170, (PINV (AI (P)), P = AP (J), AP (J+1) - 1) -170 FORMAT (' new row indices: ', 24I3) -180 CONTINUE -190 CONTINUE - END diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_f77demo.out b/deal.II/contrib/umfpack/AMD/Demo/amd_f77demo.out deleted file mode 100644 index 10758dd511..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_f77demo.out +++ /dev/null @@ -1,318 +0,0 @@ -AMD Fortran 77 demo, with the 24-by-24 Harwell/Boeing matrix, can_24: -Input matrix: 24-by-24 with 136 entries -Note that the Fortran version of AMD requires that -no diagonal entries be present. - -Column: 1 number of entries: 8 with row indices in AI ( 1 ... 8) - row indices: 6 7 13 14 18 19 20 22 - -Column: 2 number of entries: 5 with row indices in AI ( 9 ... 13) - row indices: 9 10 14 15 18 - -Column: 3 number of entries: 5 with row indices in AI ( 14 ... 18) - row indices: 7 12 21 22 23 - -Column: 4 number of entries: 5 with row indices in AI ( 19 ... 23) - row indices: 8 11 16 19 20 - -Column: 5 number of entries: 5 with row indices in AI ( 24 ... 28) - row indices: 8 10 15 16 17 - -Column: 6 number of entries: 5 with row indices in AI ( 29 ... 33) - row indices: 1 7 13 14 18 - -Column: 7 number of entries: 8 with row indices in AI ( 34 ... 41) - row indices: 1 3 6 12 13 20 22 24 - -Column: 8 number of entries: 8 with row indices in AI ( 42 ... 49) - row indices: 4 5 10 15 16 17 18 19 - -Column: 9 number of entries: 3 with row indices in AI ( 50 ... 52) - row indices: 2 10 15 - -Column: 10 number of entries: 8 with row indices in AI ( 53 ... 60) - row indices: 2 5 8 9 14 15 18 19 - -Column: 11 number of entries: 5 with row indices in AI ( 61 ... 65) - row indices: 4 19 20 21 22 - -Column: 12 number of entries: 5 with row indices in AI ( 66 ... 70) - row indices: 3 7 13 22 24 - -Column: 13 number of entries: 5 with row indices in AI ( 71 ... 75) - row indices: 1 6 7 12 24 - -Column: 14 number of entries: 5 with row indices in AI ( 76 ... 80) - row indices: 1 2 6 10 18 - -Column: 15 number of entries: 5 with row indices in AI ( 81 ... 85) - row indices: 2 5 8 9 10 - -Column: 16 number of entries: 5 with row indices in AI ( 86 ... 90) - row indices: 4 5 8 17 19 - -Column: 17 number of entries: 3 with row indices in AI ( 91 ... 93) - row indices: 5 8 16 - -Column: 18 number of entries: 8 with row indices in AI ( 94 ... 101) - row indices: 1 2 6 8 10 14 19 20 - -Column: 19 number of entries: 8 with row indices in AI (102 ... 109) - row indices: 1 4 8 10 11 16 18 20 - -Column: 20 number of entries: 8 with row indices in AI (110 ... 117) - row indices: 1 4 7 11 18 19 21 22 - -Column: 21 number of entries: 5 with row indices in AI (118 ... 122) - row indices: 3 11 20 22 23 - -Column: 22 number of entries: 8 with row indices in AI (123 ... 130) - row indices: 1 3 7 11 12 20 21 23 - -Column: 23 number of entries: 3 with row indices in AI (131 ... 133) - row indices: 3 21 22 - -Column: 24 number of entries: 3 with row indices in AI (134 ... 136) - row indices: 7 12 13 -Plot of input matrix pattern: - 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 - 1: X . . . . X X . . . . . X X . . . X X X . X . . - 2: . X . . . . . . X X . . . X X . . X . . . . . . - 3: . . X . . . X . . . . X . . . . . . . . X X X . - 4: . . . X . . . X . . X . . . . X . . X X . . . . - 5: . . . . X . . X . X . . . . X X X . . . . . . . - 6: X . . . . X X . . . . . X X . . . X . . . . . . - 7: X . X . . X X . . . . X X . . . . . . X . X . X - 8: . . . X X . . X . X . . . . X X X X X . . . . . - 9: . X . . . . . . X X . . . . X . . . . . . . . . - 10: . X . . X . . X X X . . . X X . . X X . . . . . - 11: . . . X . . . . . . X . . . . . . . X X X X . . - 12: . . X . . . X . . . . X X . . . . . . . . X . X - 13: X . . . . X X . . . . X X . . . . . . . . . . X - 14: X X . . . X . . . X . . . X . . . X . . . . . . - 15: . X . . X . . X X X . . . . X . . . . . . . . . - 16: . . . X X . . X . . . . . . . X X . X . . . . . - 17: . . . . X . . X . . . . . . . X X . . . . . . . - 18: X X . . . X . X . X . . . X . . . X X X . . . . - 19: X . . X . . . X . X X . . . . X . X X X . . . . - 20: X . . X . . X . . . X . . . . . . X X X X X . . - 21: . . X . . . . . . . X . . . . . . . . X X X X . - 22: X . X . . . X . . . X X . . . . . . . X X X X . - 23: . . X . . . . . . . . . . . . . . . . . X X X . - 24: . . . . . . X . . . . X X . . . . . . . . . . X - ------------------------------------------- -ordering the matrix with AMD ------------------------------------------- - -Permutation vector: - 24 23 17 9 15 5 21 13 6 11 16 8 2 10 14 18 1 3 4 19 7 12 22 20 - -Inverse permutation vector: - 17 13 18 19 6 9 21 12 4 14 10 22 8 15 5 11 3 16 20 24 7 23 2 1 -Plot of permuted matrix pattern: - 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 - 1: X . . . . . . X . . . . . . . . . . . . X X . . - 2: . X . . . . X . . . . . . . . . . X . . . . X . - 3: . . X . . X . . . . X X . . . . . . . . . . . . - 4: . . . X X . . . . . . . X X . . . . . . . . . . - 5: . . . X X X . . . . . X X X . . . . . . . . . . - 6: . . X . X X . . . . X X . X . . . . . . . . . . - 7: . X . . . . X . . X . . . . . . . X . . . . X X - 8: X . . . . . . X X . . . . . . . X . . . X X . . - 9: . . . . . . . X X . . . . . X X X . . . X . . . - 10: . . . . . . X . . X . . . . . . . . X X . . X X - 11: . . X . . X . . . . X X . . . . . . X X . . . . - 12: . . X . X X . . . . X X . X . X . . X X . . . . - 13: . . . X X . . . . . . . X X X X . . . . . . . . - 14: . . . X X X . . . . . X X X X X . . . X . . . . - 15: . . . . . . . . X . . . X X X X X . . . . . . . - 16: . . . . . . . . X . . X X X X X X . . X . . . X - 17: . . . . . . . X X . . . . . X X X . . X X . X X - 18: . X . . . . X . . . . . . . . . . X . . X X X . - 19: . . . . . . . . . X X X . . . . . . X X . . . X - 20: . . . . . . . . . X X X . X . X X . X X . . . X - 21: X . . . . . . X X . . . . . . . X X . . X X X X - 22: X . . . . . . X . . . . . . . . . X . . X X X . - 23: . X . . . . X . . X . . . . . . X X . . X X X X - 24: . . . . . . X . . X . . . . . X X . X X X . X X - -New column: 1 old column: 24 number of entries: 3 - new row indices: 21 22 8 - -New column: 2 old column: 23 number of entries: 3 - new row indices: 18 7 23 - -New column: 3 old column: 17 number of entries: 3 - new row indices: 6 12 11 - -New column: 4 old column: 9 number of entries: 3 - new row indices: 13 14 5 - -New column: 5 old column: 15 number of entries: 5 - new row indices: 13 6 12 4 14 - -New column: 6 old column: 5 number of entries: 5 - new row indices: 12 14 5 11 3 - -New column: 7 old column: 21 number of entries: 5 - new row indices: 18 10 24 23 2 - -New column: 8 old column: 13 number of entries: 5 - new row indices: 17 9 21 22 1 - -New column: 9 old column: 6 number of entries: 5 - new row indices: 17 21 8 15 16 - -New column: 10 old column: 11 number of entries: 5 - new row indices: 19 20 24 7 23 - -New column: 11 old column: 16 number of entries: 5 - new row indices: 19 6 12 3 20 - -New column: 12 old column: 8 number of entries: 8 - new row indices: 19 6 14 5 11 3 16 20 - -New column: 13 old column: 2 number of entries: 5 - new row indices: 4 14 15 5 16 - -New column: 14 old column: 10 number of entries: 8 - new row indices: 13 6 12 4 15 5 16 20 - -New column: 15 old column: 14 number of entries: 5 - new row indices: 17 13 9 14 16 - -New column: 16 old column: 18 number of entries: 8 - new row indices: 17 13 9 12 14 15 20 24 - -New column: 17 old column: 1 number of entries: 8 - new row indices: 9 21 8 15 16 20 24 23 - -New column: 18 old column: 3 number of entries: 5 - new row indices: 21 22 7 23 2 - -New column: 19 old column: 4 number of entries: 5 - new row indices: 12 10 11 20 24 - -New column: 20 old column: 19 number of entries: 8 - new row indices: 17 19 12 14 10 11 16 24 - -New column: 21 old column: 7 number of entries: 8 - new row indices: 17 18 9 22 8 24 23 1 - -New column: 22 old column: 12 number of entries: 5 - new row indices: 18 21 8 23 1 - -New column: 23 old column: 22 number of entries: 8 - new row indices: 17 18 21 10 22 24 7 2 - -New column: 24 old column: 20 number of entries: 8 - new row indices: 17 19 21 10 16 20 7 23 - ------------------------------------------- -ordering the matrix with AMDBAR ------------------------------------------- - -Permutation vector: - 24 23 17 9 15 5 21 13 6 11 16 8 2 10 14 18 1 3 4 19 7 12 22 20 - -Inverse permutation vector: - 17 13 18 19 6 9 21 12 4 14 10 22 8 15 5 11 3 16 20 24 7 23 2 1 -Plot of permuted matrix pattern: - 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 - 1: X . . . . . . X . . . . . . . . . . . . X X . . - 2: . X . . . . X . . . . . . . . . . X . . . . X . - 3: . . X . . X . . . . X X . . . . . . . . . . . . - 4: . . . X X . . . . . . . X X . . . . . . . . . . - 5: . . . X X X . . . . . X X X . . . . . . . . . . - 6: . . X . X X . . . . X X . X . . . . . . . . . . - 7: . X . . . . X . . X . . . . . . . X . . . . X X - 8: X . . . . . . X X . . . . . . . X . . . X X . . - 9: . . . . . . . X X . . . . . X X X . . . X . . . - 10: . . . . . . X . . X . . . . . . . . X X . . X X - 11: . . X . . X . . . . X X . . . . . . X X . . . . - 12: . . X . X X . . . . X X . X . X . . X X . . . . - 13: . . . X X . . . . . . . X X X X . . . . . . . . - 14: . . . X X X . . . . . X X X X X . . . X . . . . - 15: . . . . . . . . X . . . X X X X X . . . . . . . - 16: . . . . . . . . X . . X X X X X X . . X . . . X - 17: . . . . . . . X X . . . . . X X X . . X X . X X - 18: . X . . . . X . . . . . . . . . . X . . X X X . - 19: . . . . . . . . . X X X . . . . . . X X . . . X - 20: . . . . . . . . . X X X . X . X X . X X . . . X - 21: X . . . . . . X X . . . . . . . X X . . X X X X - 22: X . . . . . . X . . . . . . . . . X . . X X X . - 23: . X . . . . X . . X . . . . . . X X . . X X X X - 24: . . . . . . X . . X . . . . . X X . X X X . X X - -New column: 1 old column: 24 number of entries: 3 - new row indices: 21 22 8 - -New column: 2 old column: 23 number of entries: 3 - new row indices: 18 7 23 - -New column: 3 old column: 17 number of entries: 3 - new row indices: 6 12 11 - -New column: 4 old column: 9 number of entries: 3 - new row indices: 13 14 5 - -New column: 5 old column: 15 number of entries: 5 - new row indices: 13 6 12 4 14 - -New column: 6 old column: 5 number of entries: 5 - new row indices: 12 14 5 11 3 - -New column: 7 old column: 21 number of entries: 5 - new row indices: 18 10 24 23 2 - -New column: 8 old column: 13 number of entries: 5 - new row indices: 17 9 21 22 1 - -New column: 9 old column: 6 number of entries: 5 - new row indices: 17 21 8 15 16 - -New column: 10 old column: 11 number of entries: 5 - new row indices: 19 20 24 7 23 - -New column: 11 old column: 16 number of entries: 5 - new row indices: 19 6 12 3 20 - -New column: 12 old column: 8 number of entries: 8 - new row indices: 19 6 14 5 11 3 16 20 - -New column: 13 old column: 2 number of entries: 5 - new row indices: 4 14 15 5 16 - -New column: 14 old column: 10 number of entries: 8 - new row indices: 13 6 12 4 15 5 16 20 - -New column: 15 old column: 14 number of entries: 5 - new row indices: 17 13 9 14 16 - -New column: 16 old column: 18 number of entries: 8 - new row indices: 17 13 9 12 14 15 20 24 - -New column: 17 old column: 1 number of entries: 8 - new row indices: 9 21 8 15 16 20 24 23 - -New column: 18 old column: 3 number of entries: 5 - new row indices: 21 22 7 23 2 - -New column: 19 old column: 4 number of entries: 5 - new row indices: 12 10 11 20 24 - -New column: 20 old column: 19 number of entries: 8 - new row indices: 17 19 12 14 10 11 16 24 - -New column: 21 old column: 7 number of entries: 8 - new row indices: 17 18 9 22 8 24 23 1 - -New column: 22 old column: 12 number of entries: 5 - new row indices: 18 21 8 23 1 - -New column: 23 old column: 22 number of entries: 8 - new row indices: 17 18 21 10 22 24 7 2 - -New column: 24 old column: 20 number of entries: 8 - new row indices: 17 19 21 10 16 20 7 23 diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_f77simple.f b/deal.II/contrib/umfpack/AMD/Demo/amd_f77simple.f deleted file mode 100644 index ef189fb416..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_f77simple.f +++ /dev/null @@ -1,38 +0,0 @@ -C ---------------------------------------------------------------------- -C AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. -C Davis, Patrick R. Amestoy, and Iain S. Duff. See ../README for -C License. email: davis@cise.ufl.edu CISE Department, Univ. of -C Florida. web: http://www.cise.ufl.edu/research/sparse/amd -C ---------------------------------------------------------------------- - -C This program provides an example of how to call the Fortran version -C of AMD. It uses the same matrix as the amd_simple.c demo (in C). -C Note that the diagonal entries are not present, and the matrix is -C symmetric. - - INTEGER N, NZ, J, K, P, IWLEN, PFREE, NCMPA - PARAMETER (N = 5, NZ = 10, IWLEN = 17) - INTEGER AP (N+1), AI (NZ), LAST (N), PE (N), LEN (N), ELEN (N), - $ IW (IWLEN), DEGREE (N), NV (N), NEXT (N), HEAD (N), W (N) - DATA AP / 1, 2, 5, 8, 9, 11/ - DATA AI / 2, 1,3,5, 2,4,5, 3, 2,3 / - -C load the matrix into the AMD workspace - DO 10 J = 1,N - PE (J) = AP (J) - LEN (J) = AP (J+1) - AP (J) -10 CONTINUE - DO 20 P = 1,NZ - IW (P) = AI (P) -20 CONTINUE - PFREE = NZ + 1 - -C order the matrix (destroys the copy of A in IW, PE, and LEN) - CALL AMD (N, PE, IW, LEN, IWLEN, PFREE, NV, NEXT, LAST, HEAD, - $ ELEN, DEGREE, NCMPA, W) - - DO 60 K = 1, N - PRINT 50, K, LAST (K) -50 FORMAT ('P (',I2,') = ', I2) -60 CONTINUE - END diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_f77simple.out b/deal.II/contrib/umfpack/AMD/Demo/amd_f77simple.out deleted file mode 100644 index c7f902e0a4..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_f77simple.out +++ /dev/null @@ -1,5 +0,0 @@ -P ( 1) = 4 -P ( 2) = 1 -P ( 3) = 3 -P ( 4) = 5 -P ( 5) = 2 diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_f77wrapper.c b/deal.II/contrib/umfpack/AMD/Demo/amd_f77wrapper.c deleted file mode 100644 index 01802b8fa7..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_f77wrapper.c +++ /dev/null @@ -1,108 +0,0 @@ -/* ========================================================================= */ -/* === amd_f77wrapper ====================================================== */ -/* ========================================================================= */ - -/* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ -/* web: http://www.cise.ufl.edu/research/sparse/amd */ -/* ------------------------------------------------------------------------- */ - -/* Fortran interface for the C-callable AMD library (int version only). This - * is HIGHLY non-portable. You will need to modify this depending on how your - * Fortran and C compilers behave. Two examples are provided. - * - * To avoid using I/O, and to avoid the extra porting step of a Fortran - * function, the status code is returned as the first entry in P (P [0] in C - * and P (1) in Fortran) if an error occurs. The error codes are negative - * (-1: out of memory, -2: invalid matrix). - * - * For some C and Fortran compilers, the Fortran compiler appends a single "_" - * after each routine name. C doesn't do this, so the translation is made - * here. Some Fortran compilers don't append an underscore (xlf on IBM AIX, - * for * example). - * - * Tested with the following compilers: - * Solaris with cc and f77 from Sun WorkShop 6 update 1. - * SGI Irix with MIPSpro cc and f77 compilers version 7.4 - * Linux with GNU gcc or Intel's icc, and GNU g77 Intel's ifc Fortran compiler. - * (any combination). Note that with g77, a call to amd_order in Fortran - * gets translated to a call to amd_order__, with two underscores ("_"). - * Thus, the Fortran names do not include an underscore. - */ - -#include "amd.h" -#include - -/* ------------------------------------------------------------------------- */ -/* Linux, Solaris, SGI */ -/* ------------------------------------------------------------------------- */ - -void amdorder_ (int *n, const int *Ap, const int *Ai, int *P, - double *Control, double *Info) -{ - int result = amd_order (*n, Ap, Ai, P, Control, Info) ; - if (result != AMD_OK && P) P [0] = result ; -} - -void amddefaults_ (double *Control) -{ - amd_defaults (Control) ; -} - -void amdcontrol_ (double *Control) -{ - fflush (stdout) ; - amd_control (Control) ; - fflush (stdout) ; -} - -void amdinfo_ (double *Info) -{ - fflush (stdout) ; - amd_info (Info) ; - fflush (stdout) ; -} - -void amdpreproc_ (int *n, const int *Ap, const int *Ai, int *Rp, int *Ri) -{ - int result = amd_preprocess (*n, Ap, Ai, Rp, Ri) ; - if (result != AMD_OK && Rp) Rp [0] = result ; -} - -/* ------------------------------------------------------------------------- */ -/* IBM AIX. Probably Windows, Compaq Alpha, and HP Unix as well. */ -/* ------------------------------------------------------------------------- */ - -void amdorder (int *n, const int *Ap, const int *Ai, int *P, - double *Control, double *Info) -{ - int result = amd_order (*n, Ap, Ai, P, Control, Info) ; - if (result != AMD_OK && P) P [0] = result ; -} - -void amddefaults (double *Control) -{ - amd_defaults (Control) ; -} - -void amdcontrol (double *Control) -{ - fflush (stdout) ; - amd_control (Control) ; - fflush (stdout) ; -} - -void amdinfo (double *Info) -{ - fflush (stdout) ; - amd_info (Info) ; - fflush (stdout) ; -} - -void amdpreproc (int *n, const int *Ap, const int *Ai, int *Rp, int *Ri) -{ - int result = amd_preprocess (*n, Ap, Ai, Rp, Ri) ; - if (result != AMD_OK && Rp) Rp [0] = result ; -} diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_simple.c b/deal.II/contrib/umfpack/AMD/Demo/amd_simple.c deleted file mode 100644 index 2399526f22..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_simple.c +++ /dev/null @@ -1,23 +0,0 @@ -/* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ -/* web: http://www.cise.ufl.edu/research/sparse/amd */ -/* ------------------------------------------------------------------------- */ - -#include -#include "amd.h" - -int n = 5 ; -int Ap [ ] = { 0, 2, 6, 10, 12, 14} ; -int Ai [ ] = { 0,1, 0,1,2,4, 1,2,3,4, 2,3, 1,4 } ; -int P [5] ; - -int main (void) -{ - int k ; - (void) amd_order (n, Ap, Ai, P, (double *) NULL, (double *) NULL) ; - for (k = 0 ; k < n ; k++) printf ("P [%d] = %d\n", k, P [k]) ; - return (0) ; -} - diff --git a/deal.II/contrib/umfpack/AMD/Demo/amd_simple.out b/deal.II/contrib/umfpack/AMD/Demo/amd_simple.out deleted file mode 100644 index 08a04e0b9f..0000000000 --- a/deal.II/contrib/umfpack/AMD/Demo/amd_simple.out +++ /dev/null @@ -1,5 +0,0 @@ -P [0] = 0 -P [1] = 3 -P [2] = 2 -P [3] = 4 -P [4] = 1 diff --git a/deal.II/contrib/umfpack/AMD/Doc/AMD_UserGuide.bib b/deal.II/contrib/umfpack/AMD/Doc/AMD_UserGuide.bib index 9584598a94..03fbfa8f76 100644 --- a/deal.II/contrib/umfpack/AMD/Doc/AMD_UserGuide.bib +++ b/deal.II/contrib/umfpack/AMD/Doc/AMD_UserGuide.bib @@ -32,6 +32,16 @@ ,pages={886-905} } +@article{AmestoyDavisDuff04, + author={Amestoy, P. R. and Davis, T. A. and Duff, I. S.}, + title={Algorithm 837: An approximate minimum degree ordering algorithm}, + journal=TOMS, + year={2004} + ,volume={30} + ,number={3} + ,pages={381-388} + } + @misc{hsl:2002, author = {HSL}, title = "{HSL} 2002: {A} collection of {F}ortran codes for large @@ -77,10 +87,12 @@ ,pages={68-84} } -@article{DavisGilbertLarimoreNg00pending, +@article{DavisGilbertLarimoreNg04, author={Davis, T. A. and Gilbert, J. R. and Larimore, S. I. and Ng, E. G.}, title={A column approximate minimum degree ordering algorithm}, journal=TOMS, - year={(to appear)} + year={2004} + ,volume={30} + ,pages={353-376} } diff --git a/deal.II/contrib/umfpack/AMD/Doc/AMD_UserGuide.pdf b/deal.II/contrib/umfpack/AMD/Doc/AMD_UserGuide.pdf index 39ca0b2abf6963a3f7b1908c4651e38af510297f..c6c29fe8c3670f8c0c29af157c49e8db0e4c5b70 100644 GIT binary patch delta 158244 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 HNl)y*V#bvL literal 176601 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

a-UX~oB$sEJS? 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 + +/* define UF_long */ +#include "UFconfig.h" + +int amd_order /* returns AMD_OK, AMD_OK_BUT_JUMBLED, + * AMD_INVALID, or AMD_OUT_OF_MEMORY */ +( int n, /* A is n-by-n. n must be >= 0. */ const int Ap [ ], /* column pointers for A, of size n+1 */ const int Ai [ ], /* row indices of A, of size nz = Ap [n] */ @@ -812,11 +838,12 @@ int amd_order ( /* returns 0 if OK, negative value if error */ double Info [ ] /* output Info statistics, of size AMD_INFO */ ) ; -long amd_l_order ( /* see above for description of arguments */ - long n, - const long Ap [ ], - const long Ai [ ], - long P [ ], +UF_long amd_l_order /* see above for description of arguments */ +( + UF_long n, + const UF_long Ap [ ], + const UF_long Ai [ ], + UF_long P [ ], double Control [ ], double Info [ ] ) ; @@ -824,15 +851,15 @@ long amd_l_order ( /* see above for description of arguments */ /* Input arguments (not modified): * * n: the matrix A is n-by-n. - * Ap: an int/long array of size n+1, containing the column pointers of A. - * Ai: an int/long array of size nz, containing the row indices of A, + * Ap: an int/UF_long array of size n+1, containing column pointers of A. + * Ai: an int/UF_long array of size nz, containing the row indices of A, * where nz = Ap [n]. * Control: a double array of size AMD_CONTROL, containing control * parameters. Defaults are used if Control is NULL. * * Output arguments (not defined on input): * - * P: an int/long array of size n, containing the output permutation. If + * P: an int/UF_long array of size n, containing the output permutation. If * row i is the kth pivot row, then P [k] = i. In MATLAB notation, * the reordered matrix is A (P,P). * Info: a double array of size AMD_INFO, containing statistical @@ -840,8 +867,15 @@ long amd_l_order ( /* see above for description of arguments */ * * On input, the matrix A is stored in column-oriented form. The row indices * of nonzero entries in column j are stored in Ai [Ap [j] ... Ap [j+1]-1]. - * The row indices must appear in ascending order in each column, and there - * must not be any duplicate entries. Row indices must be in the range 0 to + * + * If the row indices appear in ascending order in each column, and there + * are no duplicate entries, then amd_order is slightly more efficient in + * terms of time and memory usage. If this condition does not hold, a copy + * of the matrix is created (where these conditions do hold), and the copy is + * ordered. This feature is new to v2.0 (v1.2 and earlier required this + * condition to hold for the input matrix). + * + * Row indices must be in the range 0 to * n-1. Ap [0] must be zero, and thus nz = Ap [n] is the number of nonzeros * in A. The array Ap is of size n+1, and the array Ai is of size nz = Ap [n]. * The matrix does not need to be symmetric, and the diagonal does not need to @@ -851,17 +885,12 @@ long amd_l_order ( /* see above for description of arguments */ * pattern of the matrix A is the same as that used internally by MATLAB. * If you wish to use a more flexible input structure, please see the * umfpack_*_triplet_to_col routines in the UMFPACK package, at - * http://www.cise.ufl.edu/research/sparse/umfpack, or use the amd_preprocess - * routine discussed below. + * http://www.cise.ufl.edu/research/sparse/umfpack. * * Restrictions: n >= 0. Ap [0] = 0. Ap [j] <= Ap [j+1] for all j in the - * range 0 to n-1. nz = Ap [n] >= 0. For all j in the range 0 to n-1, - * and for all p in the range Ap [j] to Ap [j+1]-2, Ai [p] < Ai [p+1] must - * hold. Ai [0..nz-1] must be in the range 0 to n-1. To avoid integer - * overflow, (2.4*nz + 8*n) < INT_MAX / sizeof (int) for must hold for the - * "int" version. (2.4*nz + 8*n) < LONG_MAX / sizeof (long) must hold - * for the "long" version. Finally, Ai, Ap, and P must not be NULL. If - * any of these restrictions are not met, AMD returns AMD_INVALID. + * range 0 to n-1. nz = Ap [n] >= 0. Ai [0..nz-1] must be in the range 0 + * to n-1. Finally, Ai, Ap, and P must not be NULL. If any of these + * restrictions are not met, AMD returns AMD_INVALID. * * AMD returns: * @@ -873,6 +902,9 @@ long amd_l_order ( /* see above for description of arguments */ * AMD_INVALID if the input arguments n, Ap, Ai are invalid, or if P is * NULL. * + * AMD_OK_BUT_JUMBLED if the matrix had unsorted columns, and/or duplicate + * entries, but was otherwise valid. + * * The AMD routine first forms the pattern of the matrix A+A', and then * computes a fill-reducing ordering, P. If P [k] = i, then row/column i of * the original is the kth pivotal row. In MATLAB notation, the permuted @@ -911,7 +943,7 @@ long amd_l_order ( /* see above for description of arguments */ * condition. * * Info [AMD_STATUS]: the return value of AMD, either AMD_OK, - * AMD_OUT_OF_MEMORY, or AMD_INVALID. + * AMD_OK_BUT_JUMBLED, AMD_OUT_OF_MEMORY, or AMD_INVALID. * * Info [AMD_N]: n, the size of the input matrix * @@ -973,105 +1005,102 @@ long amd_l_order ( /* see above for description of arguments */ */ /* ------------------------------------------------------------------------- */ -/* AMD preprocess */ +/* direct interface to AMD */ /* ------------------------------------------------------------------------- */ -/* amd_preprocess: sorts, removes duplicate entries, and transposes the - * nonzero pattern of a column-form matrix A, to obtain the matrix R. - * - * Alternatively, you can consider this routine as constructing a row-form - * matrix from a column-form matrix. Duplicate entries are allowed in A (and - * removed in R). The columns of R are sorted. Checks its input A for errors. - * - * On input, A can have unsorted columns, and can have duplicate entries. - * Ap [0] must still be zero, and Ap must be monotonically nondecreasing. - * Row indices must be in the range 0 to n-1. - * - * On output, if this routine returns AMD_OK, then the matrix R is a valid - * input matrix for AMD_order. It has sorted columns, with no duplicate - * entries in each column. Since AMD_order operates on the matrix A+A', it - * can just as easily use A or A', so the transpose has no significant effect - * (except for minor tie-breaking, which can lead to a minor effect in the - * quality of the ordering). As an example, compare the output of amd_demo.c - * and amd_demo2.c. - * - * This routine transposes A to get R because that's the simplest way to - * sort and remove duplicate entries from a matrix. - * - * Allocates 2*n integer work arrays, and free's them when done. - * - * If you wish to call amd_order, but do not know if your matrix has unsorted - * columns or duplicate entries, then you can use the following code, which is - * fairly efficient. amd_order will not allocate any internal matrix until - * it checks that the input matrix is valid, so the method below is memory- - * efficient as well. This code snippet assumes that Rp and Ri are already - * allocated, and are the same size as Ap and Ai respectively. - - result = amd_order (n, p, Ap, Ai, Control, Info) ; - if (result == AMD_INVALID) - { - if (amd_preprocess (n, Ap, Ai, Rp, Ri) == AMD_OK) - { - result = amd_order (n, p, Rp, Ri, Control, Info) ; - } - } - - * amd_preprocess will still return AMD_INVALID if any row index in Ai is out - * of range or if the Ap array is invalid. These errors are not corrected by - * amd_preprocess since they represent a more serious error that should be - * flagged with the AMD_INVALID error code. - */ +/* amd_2 is the primary AMD ordering routine. It is not meant to be + * user-callable because of its restrictive inputs and because it destroys + * the user's input matrix. It does not check its inputs for errors, either. + * However, if you can work with these restrictions it can be faster than + * amd_order and use less memory (assuming that you can create your own copy + * of the matrix for AMD to destroy). Refer to AMD/Source/amd_2.c for a + * description of each parameter. */ -int amd_preprocess +void amd_2 ( int n, - const int Ap [ ], - const int Ai [ ], - int Rp [ ], - int Ri [ ] + int Pe [ ], + int Iw [ ], + int Len [ ], + int iwlen, + int pfree, + int Nv [ ], + int Next [ ], + int Last [ ], + int Head [ ], + int Elen [ ], + int Degree [ ], + int W [ ], + double Control [ ], + double Info [ ] ) ; -long amd_l_preprocess +void amd_l2 ( - long n, - const long Ap [ ], - const long Ai [ ], - long Rp [ ], - long Ri [ ] + UF_long n, + UF_long Pe [ ], + UF_long Iw [ ], + UF_long Len [ ], + UF_long iwlen, + UF_long pfree, + UF_long Nv [ ], + UF_long Next [ ], + UF_long Last [ ], + UF_long Head [ ], + UF_long Elen [ ], + UF_long Degree [ ], + UF_long W [ ], + double Control [ ], + double Info [ ] ) ; -/* Input arguments (not modified): - * - * n: the matrix A is n-by-n. - * Ap: an int/long array of size n+1, containing the column pointers of A. - * Ai: an int/long array of size nz, containing the row indices of A, - * where nz = Ap [n]. - * The nonzero pattern of column j of A is in Ai [Ap [j] ... Ap [j+1]-1]. - * Ap [0] must be zero, and Ap [j] <= Ap [j+1] must hold for all j in the - * range 0 to n-1. Row indices in Ai must be in the range 0 to n-1. - * The row indices in any one column need not be sorted, and duplicates - * may exist. - * - * Output arguments (not defined on input): - * - * Rp: an int/long array of size n+1, containing the column pointers of R. - * Ri: an int/long array of size rnz, containing the row indices of R, - * where rnz = Rp [n]. Note that Rp [n] will be less than Ap [n] if - * duplicates appear in A. In general, Rp [n] <= Ap [n]. - * The data structure for R is the same as A, except that each column of - * R contains sorted row indices, and no duplicates appear in any column. - * - * amd_preprocess returns: - * - * AMD_OK if the matrix A is valid and sufficient memory can be allocated - * to perform the preprocessing. - * - * AMD_OUT_OF_MEMORY if not enough memory can be allocated. +/* ------------------------------------------------------------------------- */ +/* amd_valid */ +/* ------------------------------------------------------------------------- */ + +/* Returns AMD_OK or AMD_OK_BUT_JUMBLED if the matrix is valid as input to + * amd_order; the latter is returned if the matrix has unsorted and/or + * duplicate row indices in one or more columns. Returns AMD_INVALID if the + * matrix cannot be passed to amd_order. For amd_order, the matrix must also + * be square. The first two arguments are the number of rows and the number + * of columns of the matrix. For its use in AMD, these must both equal n. * - * AMD_INVALID if the input arguments n, Ap, Ai are invalid, or if Rp or - * Ri are NULL. + * NOTE: this routine returned TRUE/FALSE in v1.2 and earlier. */ +int amd_valid +( + int n_row, /* # of rows */ + int n_col, /* # of columns */ + const int Ap [ ], /* column pointers, of size n_col+1 */ + const int Ai [ ] /* row indices, of size Ap [n_col] */ +) ; + +UF_long amd_l_valid +( + UF_long n_row, + UF_long n_col, + const UF_long Ap [ ], + const UF_long Ai [ ] +) ; + +/* ------------------------------------------------------------------------- */ +/* AMD memory manager and printf routines */ +/* ------------------------------------------------------------------------- */ + +/* The user can redefine these to change the malloc, free, and printf routines + * that AMD uses. */ + +#ifndef EXTERN +#define EXTERN extern +#endif + +EXTERN void *(*amd_malloc) (size_t) ; /* pointer to malloc */ +EXTERN void (*amd_free) (void *) ; /* pointer to free */ +EXTERN void *(*amd_realloc) (void *, size_t) ; /* pointer to realloc */ +EXTERN void *(*amd_calloc) (size_t, size_t) ; /* pointer to calloc */ +EXTERN int (*amd_printf) (const char *, ...) ; /* pointer to printf */ + /* ------------------------------------------------------------------------- */ /* AMD Control and Info arrays */ /* ------------------------------------------------------------------------- */ @@ -1120,13 +1149,52 @@ void amd_l_info (double Info [ ]) ; /* ------------------------------------------------------------------------- */ #define AMD_OK 0 /* success */ -#define AMD_OUT_OF_MEMORY -1 /* malloc failed */ +#define AMD_OUT_OF_MEMORY -1 /* malloc failed, or problem too large */ #define AMD_INVALID -2 /* input arguments are not valid */ +#define AMD_OK_BUT_JUMBLED 1 /* input matrix is OK for amd_order, but + * columns were not sorted, and/or duplicate entries were present. AMD had + * to do extra work before ordering the matrix. This is a warning, not an + * error. */ + +/* ========================================================================== */ +/* === AMD version ========================================================== */ +/* ========================================================================== */ + +/* AMD Version 1.2 and later include the following definitions. + * As an example, to test if the version you are using is 1.2 or later: + * + * #ifdef AMD_VERSION + * if (AMD_VERSION >= AMD_VERSION_CODE (1,2)) ... + * #endif + * + * This also works during compile-time: + * + * #if defined(AMD_VERSION) && (AMD_VERSION >= AMD_VERSION_CODE (1,2)) + * printf ("This is version 1.2 or later\n") ; + * #else + * printf ("This is an early version\n") ; + * #endif + * + * Versions 1.1 and earlier of AMD do not include a #define'd version number. + */ +#define AMD_DATE "May 31, 2007" +#define AMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub)) +#define AMD_MAIN_VERSION 2 +#define AMD_SUB_VERSION 2 +#define AMD_SUBSUB_VERSION 0 +#define AMD_VERSION AMD_VERSION_CODE(AMD_MAIN_VERSION,AMD_SUB_VERSION) + +#ifdef __cplusplus +} +#endif + +#endif #endif \end{verbatim} } + %------------------------------------------------------------------------------ \newpage % References diff --git a/deal.II/contrib/umfpack/AMD/Doc/ChangeLog b/deal.II/contrib/umfpack/AMD/Doc/ChangeLog index 69c1806d0d..9b98e38ec0 100644 --- a/deal.II/contrib/umfpack/AMD/Doc/ChangeLog +++ b/deal.II/contrib/umfpack/AMD/Doc/ChangeLog @@ -1,3 +1,95 @@ +May 31, 2007: version 2.2.0 + + * port to 64-bit MATLAB + + * Makefile moved from Source/ to Lib/ + + * minor changes to printing routines (amd_control.c, amd_info.c) + +Dec 12, 2006, version 2.0.4 + + * minor MATLAB code cleanup + +Nov 29, 2006, version 2.0.3 + + * changed MATLAB function name to amd2, so as not to conflict with + the now built-in version of AMD in MATLAB (which is the same thing + as the AMD here...). + +Sept 28, 2006, version 2.0.2 + + * #define SIZE_T_MAX not done if already defined (Mac OSX). + +Aug 31, 2006: + + * trivial change to comments in amd.m + +Apr 30, 2006: AMD Version 2.0: + + * long integer redefined as UF_long, controlled by UFconfig.h. + + * amd_order no longer requires its input to have sorted columns. It can + also tolerate duplicate entries in each column. If these conditions + hold, but the matrix is otherwise valid, amd_order returns + AMD_OK_BUT_JUMBLED (a warning, not an error). + + * amd_preprocess no longer deemed user-callable, since it is no longer + needed (it was used to ensure the input matrix had sorted columns with + no duplicate entries). It still exists, with additional parameters, + and is called by amd_order if necessary. amd_wpreprocess and + amd_preprocess_valid removed. Fortran interface routine amdpreproc + removed. + + * Integer overflow computations modified, to extend the size of problem + that the "int" version can solve when used in an LP64 compilation. + + * amd_demo2.c simplified (it tests AMD with a jumbled matrix). + + * amd_valid returned TRUE/FALSE in v1.2. It now returns AMD_OK, + AMD_OK_BUT_JUMBLED, or AMD_INVALID. Only in the latter case is the + matrix unsuitable as input to amd_order. + + * amd_internal.h include file moved from AMD/Source to AMD/Include. + +Nov 15, 2005: + + * minor editting of comments; version number (1.2) unchanged. + +Aug. 30, 2005: AMD Version 1.2 + + * AMD v1.2 is upward compatible with v1.1 and v1.0, except that v1.2 no + longer includes the compile-time redefinition of malloc and free. + + * Makefile modified to use UFconfig.mk. "Make" directory removed. + + * License changed to GNU LGPL. + + * Easier inclusion in C++ programs. + + * option to allow compile-time redefinition of malloc and free + (added to v1.1) removed for v1.2. Replaced with a run-time + redefinition. AMD includes function pointers for malloc, free, + calloc, realloc, and printf, so that all those routines can be + redefined at compile time. These function pointers are global + variables, and so are not technically thread-safe, unless you + use defaults and don't need to change them (the common case) + or if you change them in one thread before using them in other + threads. + + * added #define'd version number + + * minor modification to AMD_2 to ensure all lines can be tested, without + conditional compilation. + + * moved the prototype for AMD_2 from amd_internal.h to amd.h + + * moved the prototype for AMD_valid from amd_internal.h to amd.h + + * MATLAB mexFunction uses libamd.a (compiled with cc) instead of compiling + each AMD source file with the mex command + + * long demo (amd_l_demo.c) added. + Jan. 21, 2004: AMD Version 1.1 * No bugs found or fixed - new features added, only diff --git a/deal.II/contrib/umfpack/AMD/Doc/License b/deal.II/contrib/umfpack/AMD/Doc/License index ed8f2ab901..b01008a9a6 100644 --- a/deal.II/contrib/umfpack/AMD/Doc/License +++ b/deal.II/contrib/umfpack/AMD/Doc/License @@ -1,25 +1,39 @@ -AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. -Davis, Patrick R. Amestoy, and Iain S. Duff. All Rights Reserved. +AMD, Copyright (c) by Timothy A. Davis, +Patrick R. Amestoy, and Iain S. Duff. All Rights Reserved. +AMD is available under alternate licenses, contact T. Davis for details. AMD License: Your use or distribution of AMD or any modified version of AMD implies that you agree to this License. - THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY - EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. - Permission is hereby granted to use or copy this program, provided - that the Copyright, this License, and the Availability of the original - version is retained on all copies. User documentation of any code that - uses AMD or any modified version of AMD code must cite the - Copyright, this License, the Availability note, and "Used by permission." - Permission to modify the code and to distribute modified code is granted, - provided the Copyright, this License, and the Availability note are - retained, and a notice that the code was modified is included. This - software was developed with support from the National Science Foundation, - and is provided to you free of charge. + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + USA + + Permission is hereby granted to use or copy this program under the + terms of the GNU LGPL, provided that the Copyright, this License, + and the Availability of the original version is retained on all copies. + User documentation of any code that uses this code or any modified + version of this code must cite the Copyright, this License, the + Availability note, and "Used by permission." Permission to modify + the code and to distribute modified code is granted, provided the + Copyright, this License, and the Availability note are retained, + and a notice that the code was modified is included. Availability: http://www.cise.ufl.edu/research/sparse/amd + +------------------------------------------------------------------------------- diff --git a/deal.II/contrib/umfpack/AMD/Doc/Makefile b/deal.II/contrib/umfpack/AMD/Doc/Makefile index c0cf976c74..8b593fa73b 100644 --- a/deal.II/contrib/umfpack/AMD/Doc/Makefile +++ b/deal.II/contrib/umfpack/AMD/Doc/Makefile @@ -2,15 +2,20 @@ # AMD Makefile for compiling on Unix systems (for GNU or original make) #------------------------------------------------------------------------------ -all: dist +default: dist -include ../Make/Make.include +include ../../UFconfig/UFconfig.mk #------------------------------------------------------------------------------ # Remove all but the files in the original distribution #------------------------------------------------------------------------------ -purge: clean +clean: + - $(RM) $(CLEAN) + +purge: distclean + +distclean: clean - $(RM) *.aux *.bbl *.blg *.log *.toc #------------------------------------------------------------------------------ diff --git a/deal.II/contrib/umfpack/AMD/Doc/lesser.txt b/deal.II/contrib/umfpack/AMD/Doc/lesser.txt new file mode 100644 index 0000000000..8add30ad59 --- /dev/null +++ b/deal.II/contrib/umfpack/AMD/Doc/lesser.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/deal.II/contrib/umfpack/AMD/Include/UFconfig.h b/deal.II/contrib/umfpack/AMD/Include/UFconfig.h new file mode 100644 index 0000000000..91bbeac32c --- /dev/null +++ b/deal.II/contrib/umfpack/AMD/Include/UFconfig.h @@ -0,0 +1,113 @@ +/* ========================================================================== */ +/* === UFconfig.h =========================================================== */ +/* ========================================================================== */ + +/* Configuration file for SuiteSparse: a Suite of Sparse matrix packages + * (AMD, COLAMD, CCOLAMD, CAMD, CHOLMOD, UMFPACK, CXSparse, and others). + * + * UFconfig.h provides the definition of the long integer. On most systems, + * a C program can be compiled in LP64 mode, in which long's and pointers are + * both 64-bits, and int's are 32-bits. Windows 64, however, uses the LLP64 + * model, in which int's and long's are 32-bits, and long long's and pointers + * are 64-bits. + * + * SuiteSparse packages that include long integer versions are + * intended for the LP64 mode. However, as a workaround for Windows 64 + * (and perhaps other systems), the long integer can be redefined. + * + * If _WIN64 is defined, then the __int64 type is used instead of long. + * + * The long integer can also be defined at compile time. For example, this + * could be added to UFconfig.mk: + * + * CFLAGS = -O -D'UF_long=long long' -D'UF_long_max=9223372036854775801' \ + * -D'UF_long_id="%lld"' + * + * This file defines UF_long as either long (on all but _WIN64) or + * __int64 on Windows 64. The intent is that a UF_long is always a 64-bit + * integer in a 64-bit code. ptrdiff_t might be a better choice than long; + * it is always the same size as a pointer. + * + * This file also defines the SUITESPARSE_VERSION and related definitions. + * + * Copyright (c) 2007, University of Florida. No licensing restrictions + * apply to this file or to the UFconfig directory. Author: Timothy A. Davis. + */ + +#ifndef _UFCONFIG_H +#define _UFCONFIG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* ========================================================================== */ +/* === UF_long ============================================================== */ +/* ========================================================================== */ + +#ifndef UF_long + +#ifdef _WIN64 + +#define UF_long __int64 +#define UF_long_max _I64_MAX +#define UF_long_id "%I64d" + +#else + +#define UF_long long +#define UF_long_max LONG_MAX +#define UF_long_id "%ld" + +#endif +#endif + +/* ========================================================================== */ +/* === SuiteSparse version ================================================== */ +/* ========================================================================== */ + +/* SuiteSparse is not a package itself, but a collection of packages, some of + * which must be used together (UMFPACK requires AMD, CHOLMOD requires AMD, + * COLAMD, CAMD, and CCOLAMD, etc). A version number is provided here for the + * collection itself. The versions of packages within each version of + * SuiteSparse are meant to work together. Combining one packge from one + * version of SuiteSparse, with another package from another version of + * SuiteSparse, may or may not work. + * + * SuiteSparse Version 3.0.0 contains the following packages: + * + * AMD version 2.2.0 + * CAMD version 2.2.0 + * COLAMD version 2.7.0 + * CCOLAMD version 2.7.0 + * CHOLMOD version 1.5.0 + * CSparse version 2.2.0 + * CXSparse version 2.2.0 + * KLU version 1.0.0 + * BTF version 1.0.0 + * LDL version 2.0.0 + * UFconfig version number is the same as SuiteSparse + * UMFPACK version 5.1.0 + * RBio version 1.1.0 + * UFcollection version 1.1.0 + * + * Other package dependencies: + * BLAS required by CHOLMOD and UMFPACK + * LAPACK required by CHOLMOD + * METIS 4.0.1 required by CHOLMOD (optional) and KLU (optional) + */ + +#define SUITESPARSE_DATE "May 31, 2007" +#define SUITESPARSE_VER_CODE(main,sub) ((main) * 1000 + (sub)) +#define SUITESPARSE_MAIN_VERSION 3 +#define SUITESPARSE_SUB_VERSION 0 +#define SUITESPARSE_SUBSUB_VERSION 0 +#define SUITESPARSE_VERSION \ + SUITESPARSE_VER_CODE(SUITESPARSE_MAIN_VERSION,SUITESPARSE_SUB_VERSION) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deal.II/contrib/umfpack/AMD/Include/amd.h b/deal.II/contrib/umfpack/AMD/Include/amd.h index d23c0bbe36..e4fd47ec67 100644 --- a/deal.II/contrib/umfpack/AMD/Include/amd.h +++ b/deal.II/contrib/umfpack/AMD/Include/amd.h @@ -3,9 +3,9 @@ /* ========================================================================= */ /* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* AMD Version 2.2, Copyright (c) 2007 by Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ /* web: http://www.cise.ufl.edu/research/sparse/amd */ /* ------------------------------------------------------------------------- */ @@ -13,7 +13,7 @@ * factorization of P*A*P' has fewer nonzeros and takes less work than the * Cholesky factorization of A. If A is not symmetric, then it performs its * ordering on the matrix A+A'. Two sets of user-callable routines are - * provided, one for "int" integers and the other for "long" integers. + * provided, one for int integers and the other for UF_long integers. * * The method is based on the approximate minimum degree algorithm, discussed * in Amestoy, Davis, and Duff, "An approximate degree ordering algorithm", @@ -36,7 +36,20 @@ #ifndef AMD_H #define AMD_H -int amd_order ( /* returns 0 if OK, negative value if error */ +/* make it easy for C++ programs to include AMD */ +#ifdef __cplusplus +extern "C" { +#endif + +/* get the definition of size_t: */ +#include + +/* define UF_long */ +#include "UFconfig.h" + +int amd_order /* returns AMD_OK, AMD_OK_BUT_JUMBLED, + * AMD_INVALID, or AMD_OUT_OF_MEMORY */ +( int n, /* A is n-by-n. n must be >= 0. */ const int Ap [ ], /* column pointers for A, of size n+1 */ const int Ai [ ], /* row indices of A, of size nz = Ap [n] */ @@ -45,11 +58,12 @@ int amd_order ( /* returns 0 if OK, negative value if error */ double Info [ ] /* output Info statistics, of size AMD_INFO */ ) ; -long amd_l_order ( /* see above for description of arguments */ - long n, - const long Ap [ ], - const long Ai [ ], - long P [ ], +UF_long amd_l_order /* see above for description of arguments */ +( + UF_long n, + const UF_long Ap [ ], + const UF_long Ai [ ], + UF_long P [ ], double Control [ ], double Info [ ] ) ; @@ -57,15 +71,15 @@ long amd_l_order ( /* see above for description of arguments */ /* Input arguments (not modified): * * n: the matrix A is n-by-n. - * Ap: an int/long array of size n+1, containing the column pointers of A. - * Ai: an int/long array of size nz, containing the row indices of A, + * Ap: an int/UF_long array of size n+1, containing column pointers of A. + * Ai: an int/UF_long array of size nz, containing the row indices of A, * where nz = Ap [n]. * Control: a double array of size AMD_CONTROL, containing control * parameters. Defaults are used if Control is NULL. * * Output arguments (not defined on input): * - * P: an int/long array of size n, containing the output permutation. If + * P: an int/UF_long array of size n, containing the output permutation. If * row i is the kth pivot row, then P [k] = i. In MATLAB notation, * the reordered matrix is A (P,P). * Info: a double array of size AMD_INFO, containing statistical @@ -73,8 +87,15 @@ long amd_l_order ( /* see above for description of arguments */ * * On input, the matrix A is stored in column-oriented form. The row indices * of nonzero entries in column j are stored in Ai [Ap [j] ... Ap [j+1]-1]. - * The row indices must appear in ascending order in each column, and there - * must not be any duplicate entries. Row indices must be in the range 0 to + * + * If the row indices appear in ascending order in each column, and there + * are no duplicate entries, then amd_order is slightly more efficient in + * terms of time and memory usage. If this condition does not hold, a copy + * of the matrix is created (where these conditions do hold), and the copy is + * ordered. This feature is new to v2.0 (v1.2 and earlier required this + * condition to hold for the input matrix). + * + * Row indices must be in the range 0 to * n-1. Ap [0] must be zero, and thus nz = Ap [n] is the number of nonzeros * in A. The array Ap is of size n+1, and the array Ai is of size nz = Ap [n]. * The matrix does not need to be symmetric, and the diagonal does not need to @@ -84,17 +105,12 @@ long amd_l_order ( /* see above for description of arguments */ * pattern of the matrix A is the same as that used internally by MATLAB. * If you wish to use a more flexible input structure, please see the * umfpack_*_triplet_to_col routines in the UMFPACK package, at - * http://www.cise.ufl.edu/research/sparse/umfpack, or use the amd_preprocess - * routine discussed below. + * http://www.cise.ufl.edu/research/sparse/umfpack. * * Restrictions: n >= 0. Ap [0] = 0. Ap [j] <= Ap [j+1] for all j in the - * range 0 to n-1. nz = Ap [n] >= 0. For all j in the range 0 to n-1, - * and for all p in the range Ap [j] to Ap [j+1]-2, Ai [p] < Ai [p+1] must - * hold. Ai [0..nz-1] must be in the range 0 to n-1. To avoid integer - * overflow, (2.4*nz + 8*n) < INT_MAX / sizeof (int) for must hold for the - * "int" version. (2.4*nz + 8*n) < LONG_MAX / sizeof (long) must hold - * for the "long" version. Finally, Ai, Ap, and P must not be NULL. If - * any of these restrictions are not met, AMD returns AMD_INVALID. + * range 0 to n-1. nz = Ap [n] >= 0. Ai [0..nz-1] must be in the range 0 + * to n-1. Finally, Ai, Ap, and P must not be NULL. If any of these + * restrictions are not met, AMD returns AMD_INVALID. * * AMD returns: * @@ -106,6 +122,9 @@ long amd_l_order ( /* see above for description of arguments */ * AMD_INVALID if the input arguments n, Ap, Ai are invalid, or if P is * NULL. * + * AMD_OK_BUT_JUMBLED if the matrix had unsorted columns, and/or duplicate + * entries, but was otherwise valid. + * * The AMD routine first forms the pattern of the matrix A+A', and then * computes a fill-reducing ordering, P. If P [k] = i, then row/column i of * the original is the kth pivotal row. In MATLAB notation, the permuted @@ -144,7 +163,7 @@ long amd_l_order ( /* see above for description of arguments */ * condition. * * Info [AMD_STATUS]: the return value of AMD, either AMD_OK, - * AMD_OUT_OF_MEMORY, or AMD_INVALID. + * AMD_OK_BUT_JUMBLED, AMD_OUT_OF_MEMORY, or AMD_INVALID. * * Info [AMD_N]: n, the size of the input matrix * @@ -206,105 +225,102 @@ long amd_l_order ( /* see above for description of arguments */ */ /* ------------------------------------------------------------------------- */ -/* AMD preprocess */ +/* direct interface to AMD */ /* ------------------------------------------------------------------------- */ -/* amd_preprocess: sorts, removes duplicate entries, and transposes the - * nonzero pattern of a column-form matrix A, to obtain the matrix R. - * - * Alternatively, you can consider this routine as constructing a row-form - * matrix from a column-form matrix. Duplicate entries are allowed in A (and - * removed in R). The columns of R are sorted. Checks its input A for errors. - * - * On input, A can have unsorted columns, and can have duplicate entries. - * Ap [0] must still be zero, and Ap must be monotonically nondecreasing. - * Row indices must be in the range 0 to n-1. - * - * On output, if this routine returns AMD_OK, then the matrix R is a valid - * input matrix for AMD_order. It has sorted columns, with no duplicate - * entries in each column. Since AMD_order operates on the matrix A+A', it - * can just as easily use A or A', so the transpose has no significant effect - * (except for minor tie-breaking, which can lead to a minor effect in the - * quality of the ordering). As an example, compare the output of amd_demo.c - * and amd_demo2.c. - * - * This routine transposes A to get R because that's the simplest way to - * sort and remove duplicate entries from a matrix. - * - * Allocates 2*n integer work arrays, and free's them when done. - * - * If you wish to call amd_order, but do not know if your matrix has unsorted - * columns or duplicate entries, then you can use the following code, which is - * fairly efficient. amd_order will not allocate any internal matrix until - * it checks that the input matrix is valid, so the method below is memory- - * efficient as well. This code snippet assumes that Rp and Ri are already - * allocated, and are the same size as Ap and Ai respectively. - - result = amd_order (n, p, Ap, Ai, Control, Info) ; - if (result == AMD_INVALID) - { - if (amd_preprocess (n, Ap, Ai, Rp, Ri) == AMD_OK) - { - result = amd_order (n, p, Rp, Ri, Control, Info) ; - } - } - - * amd_preprocess will still return AMD_INVALID if any row index in Ai is out - * of range or if the Ap array is invalid. These errors are not corrected by - * amd_preprocess since they represent a more serious error that should be - * flagged with the AMD_INVALID error code. - */ - -int amd_preprocess +/* amd_2 is the primary AMD ordering routine. It is not meant to be + * user-callable because of its restrictive inputs and because it destroys + * the user's input matrix. It does not check its inputs for errors, either. + * However, if you can work with these restrictions it can be faster than + * amd_order and use less memory (assuming that you can create your own copy + * of the matrix for AMD to destroy). Refer to AMD/Source/amd_2.c for a + * description of each parameter. */ + +void amd_2 ( int n, - const int Ap [ ], - const int Ai [ ], - int Rp [ ], - int Ri [ ] + int Pe [ ], + int Iw [ ], + int Len [ ], + int iwlen, + int pfree, + int Nv [ ], + int Next [ ], + int Last [ ], + int Head [ ], + int Elen [ ], + int Degree [ ], + int W [ ], + double Control [ ], + double Info [ ] ) ; -long amd_l_preprocess +void amd_l2 ( - long n, - const long Ap [ ], - const long Ai [ ], - long Rp [ ], - long Ri [ ] + UF_long n, + UF_long Pe [ ], + UF_long Iw [ ], + UF_long Len [ ], + UF_long iwlen, + UF_long pfree, + UF_long Nv [ ], + UF_long Next [ ], + UF_long Last [ ], + UF_long Head [ ], + UF_long Elen [ ], + UF_long Degree [ ], + UF_long W [ ], + double Control [ ], + double Info [ ] ) ; -/* Input arguments (not modified): - * - * n: the matrix A is n-by-n. - * Ap: an int/long array of size n+1, containing the column pointers of A. - * Ai: an int/long array of size nz, containing the row indices of A, - * where nz = Ap [n]. - * The nonzero pattern of column j of A is in Ai [Ap [j] ... Ap [j+1]-1]. - * Ap [0] must be zero, and Ap [j] <= Ap [j+1] must hold for all j in the - * range 0 to n-1. Row indices in Ai must be in the range 0 to n-1. - * The row indices in any one column need not be sorted, and duplicates - * may exist. - * - * Output arguments (not defined on input): - * - * Rp: an int/long array of size n+1, containing the column pointers of R. - * Ri: an int/long array of size rnz, containing the row indices of R, - * where rnz = Rp [n]. Note that Rp [n] will be less than Ap [n] if - * duplicates appear in A. In general, Rp [n] <= Ap [n]. - * The data structure for R is the same as A, except that each column of - * R contains sorted row indices, and no duplicates appear in any column. - * - * amd_preprocess returns: - * - * AMD_OK if the matrix A is valid and sufficient memory can be allocated - * to perform the preprocessing. - * - * AMD_OUT_OF_MEMORY if not enough memory can be allocated. - * - * AMD_INVALID if the input arguments n, Ap, Ai are invalid, or if Rp or - * Ri are NULL. +/* ------------------------------------------------------------------------- */ +/* amd_valid */ +/* ------------------------------------------------------------------------- */ + +/* Returns AMD_OK or AMD_OK_BUT_JUMBLED if the matrix is valid as input to + * amd_order; the latter is returned if the matrix has unsorted and/or + * duplicate row indices in one or more columns. Returns AMD_INVALID if the + * matrix cannot be passed to amd_order. For amd_order, the matrix must also + * be square. The first two arguments are the number of rows and the number + * of columns of the matrix. For its use in AMD, these must both equal n. + * + * NOTE: this routine returned TRUE/FALSE in v1.2 and earlier. */ +int amd_valid +( + int n_row, /* # of rows */ + int n_col, /* # of columns */ + const int Ap [ ], /* column pointers, of size n_col+1 */ + const int Ai [ ] /* row indices, of size Ap [n_col] */ +) ; + +UF_long amd_l_valid +( + UF_long n_row, + UF_long n_col, + const UF_long Ap [ ], + const UF_long Ai [ ] +) ; + +/* ------------------------------------------------------------------------- */ +/* AMD memory manager and printf routines */ +/* ------------------------------------------------------------------------- */ + +/* The user can redefine these to change the malloc, free, and printf routines + * that AMD uses. */ + +#ifndef EXTERN +#define EXTERN extern +#endif + +EXTERN void *(*amd_malloc) (size_t) ; /* pointer to malloc */ +EXTERN void (*amd_free) (void *) ; /* pointer to free */ +EXTERN void *(*amd_realloc) (void *, size_t) ; /* pointer to realloc */ +EXTERN void *(*amd_calloc) (size_t, size_t) ; /* pointer to calloc */ +EXTERN int (*amd_printf) (const char *, ...) ; /* pointer to printf */ + /* ------------------------------------------------------------------------- */ /* AMD Control and Info arrays */ /* ------------------------------------------------------------------------- */ @@ -353,7 +369,44 @@ void amd_l_info (double Info [ ]) ; /* ------------------------------------------------------------------------- */ #define AMD_OK 0 /* success */ -#define AMD_OUT_OF_MEMORY -1 /* malloc failed */ +#define AMD_OUT_OF_MEMORY -1 /* malloc failed, or problem too large */ #define AMD_INVALID -2 /* input arguments are not valid */ +#define AMD_OK_BUT_JUMBLED 1 /* input matrix is OK for amd_order, but + * columns were not sorted, and/or duplicate entries were present. AMD had + * to do extra work before ordering the matrix. This is a warning, not an + * error. */ + +/* ========================================================================== */ +/* === AMD version ========================================================== */ +/* ========================================================================== */ + +/* AMD Version 1.2 and later include the following definitions. + * As an example, to test if the version you are using is 1.2 or later: + * + * #ifdef AMD_VERSION + * if (AMD_VERSION >= AMD_VERSION_CODE (1,2)) ... + * #endif + * + * This also works during compile-time: + * + * #if defined(AMD_VERSION) && (AMD_VERSION >= AMD_VERSION_CODE (1,2)) + * printf ("This is version 1.2 or later\n") ; + * #else + * printf ("This is an early version\n") ; + * #endif + * + * Versions 1.1 and earlier of AMD do not include a #define'd version number. + */ + +#define AMD_DATE "May 31, 2007" +#define AMD_VERSION_CODE(main,sub) ((main) * 1000 + (sub)) +#define AMD_MAIN_VERSION 2 +#define AMD_SUB_VERSION 2 +#define AMD_SUBSUB_VERSION 0 +#define AMD_VERSION AMD_VERSION_CODE(AMD_MAIN_VERSION,AMD_SUB_VERSION) + +#ifdef __cplusplus +} +#endif #endif diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_internal.h b/deal.II/contrib/umfpack/AMD/Include/amd_internal.h similarity index 65% rename from deal.II/contrib/umfpack/AMD/Source/amd_internal.h rename to deal.II/contrib/umfpack/AMD/Include/amd_internal.h index e1ec500bd3..d515b64e24 100644 --- a/deal.II/contrib/umfpack/AMD/Source/amd_internal.h +++ b/deal.II/contrib/umfpack/AMD/Include/amd_internal.h @@ -3,54 +3,47 @@ /* ========================================================================= */ /* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* AMD, Copyright (c) Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ /* web: http://www.cise.ufl.edu/research/sparse/amd */ /* ------------------------------------------------------------------------- */ /* This file is for internal use in AMD itself, and does not normally need to - * be included in user code. Use amd.h instead. + * be included in user code (it is included in UMFPACK, however). All others + * should use amd.h instead. * * The following compile-time definitions affect how AMD is compiled. * - * -DMATLAB_MEX_FILE + * -DNPRINT * - * This flag is turned on when compiling the amd mexFunction for - * use in MATLAB. + * Disable all printing. stdio.h will not be included. Printing can + * be re-enabled at run-time by setting the global pointer amd_printf + * to printf (or mexPrintf for a MATLAB mexFunction). * - * -DMATHWORKS + * -DNMALLOC * - * This flag is turned on when compiling amd as a built-in routine - * in MATLAB. Internal routines utMalloc, utFree, utRealloc, and - * utPrintf are used, and the MathWorks "util.h" file is included. - * This option is intended for use by The MathWorks, Inc., only. - * - * -DNDEBUG - * - * Debugging mode (if NDEBUG is not defined). The default, of course, - * is no debugging. Turning on debugging takes some work (see below). - * If you do not edit this file, then debugging is turned off anyway, - * regardless of whether or not -DNDEBUG is specified in your compiler - * options. - * - * -DALLOCATE=allocation_routine - * -DFREE=free_routine - * - * If you do not wish to use malloc or free, you can define the - * routines to be used here. You must specify both of them, or - * neither. - * - * -DPRINTF=printf_routine - * - * If you wish to use a routine other than printf, you can define it - * with -DPRINTF= followed by the name of the printf replacement. + * No memory manager is defined at compile-time. You MUST define the + * function pointers amd_malloc, amd_free, amd_realloc, and + * amd_calloc at run-time for AMD to work properly. */ /* ========================================================================= */ /* === NDEBUG ============================================================== */ /* ========================================================================= */ +/* + * Turning on debugging takes some work (see below). If you do not edit this + * file, then debugging is always turned off, regardless of whether or not + * -DNDEBUG is specified in your compiler options. + * + * If AMD is being compiled as a mexFunction, then MATLAB_MEX_FILE is defined, + * and mxAssert is used instead of assert. If debugging is not enabled, no + * MATLAB include files or functions are used. Thus, the AMD library libamd.a + * can be safely used in either a stand-alone C program or in another + * mexFunction, without any change. + */ + /* AMD will be exceedingly slow when running in debug mode. The next three lines ensure that debugging is turned off. @@ -68,11 +61,14 @@ /* ANSI include files */ /* ------------------------------------------------------------------------- */ -/* from stdlib.h: malloc, free, realloc (when not compiling for MATLAB) */ +/* from stdlib.h: size_t, malloc, free, realloc, and calloc */ #include -/* from stdio.h: printf. When in debug mode: fopen, fscanf */ +#if !defined(NPRINT) || !defined(NDEBUG) +/* from stdio.h: printf. Not included if NPRINT is defined at compile time. + * fopen and fscanf are used when debugging. */ #include +#endif /* from limits.h: INT_MAX and LONG_MAX */ #include @@ -84,10 +80,6 @@ /* MATLAB include files (only if being used in or via MATLAB) */ /* ------------------------------------------------------------------------- */ -#ifdef MATHWORKS -#include "util.h" -#endif - #ifdef MATLAB_MEX_FILE #include "matrix.h" #include "mex.h" @@ -160,16 +152,23 @@ #define NULL 0 +/* largest value of size_t */ +#ifndef SIZE_T_MAX +#define SIZE_T_MAX ((size_t) (-1)) +#endif + /* ------------------------------------------------------------------------- */ -/* integer type for AMD: int or long */ +/* integer type for AMD: int or UF_long */ /* ------------------------------------------------------------------------- */ +/* define UF_long */ +#include "UFconfig.h" + #if defined (DLONG) || defined (ZLONG) -#define Int long -#define ID "%ld" -#define Int_MAX LONG_MAX -#define Int_MIN LONG_MIN +#define Int UF_long +#define ID UF_long_id +#define Int_MAX UF_long_max #define AMD_order amd_l_order #define AMD_defaults amd_l_defaults @@ -184,16 +183,13 @@ #define AMD_dump amd_l_dump #define AMD_debug amd_l_debug #define AMD_debug_init amd_l_debug_init -#define AMD_wpreprocess amd_l_wpreprocess #define AMD_preprocess amd_l_preprocess -#define AMD_preprocess_valid amd_l_preprocess_valid #else #define Int int #define ID "%d" #define Int_MAX INT_MAX -#define Int_MIN INT_MIN #define AMD_order amd_order #define AMD_defaults amd_defaults @@ -208,55 +204,16 @@ #define AMD_dump amd_dump #define AMD_debug amd_debug #define AMD_debug_init amd_debug_init -#define AMD_wpreprocess amd_wpreprocess #define AMD_preprocess amd_preprocess -#define AMD_preprocess_valid amd_preprocess_valid #endif -/* ========================================================================= */ -/* === Memory allocator ==================================================== */ -/* ========================================================================= */ - -/* The MATLAB mexFunction uses MATLAB's memory manager, while the C-callable */ -/* AMD routine uses the ANSI C malloc, free, and realloc routines. */ - -#ifndef ALLOCATE -#ifdef MATLAB_MEX_FILE -#define ALLOCATE mxMalloc -#define FREE mxFree -#else -#ifdef MATHWORKS -/* Compiling as a built-in routine. Since out-of-memory conditions are checked - * after every allocation, we can use ut* routines here. */ -#define ALLOCATE utMalloc -#define FREE utFree -#else -/* use the ANSI C memory allocation routines */ -#define ALLOCATE malloc -#define FREE free -#endif -#endif -#endif - - /* ========================================================================= */ /* === PRINTF macro ======================================================== */ /* ========================================================================= */ /* All output goes through the PRINTF macro. */ - -#ifndef PRINTF -#ifdef MATLAB_MEX_FILE -#define PRINTF(params) { (void) mexPrintf params ; } -#else -#ifdef MATHWORKS -#define PRINTF(params) { (void) utPrintf params ; } -#else -#define PRINTF(params) { (void) printf params ; } -#endif -#endif -#endif +#define PRINTF(params) { if (amd_printf != NULL) (void) amd_printf params ; } /* ------------------------------------------------------------------------- */ /* AMD routine definitions (user-callable) */ @@ -268,21 +225,13 @@ /* AMD routine definitions (not user-callable) */ /* ------------------------------------------------------------------------- */ -GLOBAL Int AMD_valid -( - Int n_row, - Int n_col, - const Int Ap [ ], - const Int Ai [ ] -) ; - -GLOBAL Int AMD_aat +GLOBAL size_t AMD_aat ( Int n, const Int Ap [ ], const Int Ai [ ], Int Len [ ], - Int Tp [ ], + Int Tp [ ], double Info [ ] ) ; @@ -300,24 +249,6 @@ GLOBAL void AMD_1 double Info [ ] ) ; -GLOBAL void AMD_2 ( - Int n, - Int Pe [ ], - Int Iw [ ], - Int Len [ ], - Int iwlen, - Int pfree, - Int Nv [ ], - Int Next [ ], - Int Last [ ], - Int Head [ ], - Int Elen [ ], - Int Degree [ ], - Int W [ ], - double Control [ ], - double Info [ ] -) ; - GLOBAL void AMD_postorder ( Int nn, @@ -343,7 +274,7 @@ GLOBAL Int AMD_post_tree #endif ) ; -GLOBAL void AMD_wpreprocess +GLOBAL void AMD_preprocess ( Int n, const Int Ap [ ], @@ -354,29 +285,25 @@ GLOBAL void AMD_wpreprocess Int Flag [ ] ) ; -GLOBAL Int AMD_preprocess_valid -( - Int n, - const Int Ap [ ], - const Int Ai [ ] -) ; - /* ------------------------------------------------------------------------- */ /* debugging definitions */ /* ------------------------------------------------------------------------- */ +#ifndef NDEBUG + /* from assert.h: assert macro */ -#if !defined (MATHWORKS) && !defined (MATLAB_MEX_FILE) #include -#endif -#ifndef NDEBUG +#ifndef EXTERN +#define EXTERN extern +#endif -GLOBAL Int AMD_debug ; +EXTERN Int AMD_debug ; GLOBAL void AMD_debug_init ( char *s ) ; -GLOBAL void AMD_dump ( +GLOBAL void AMD_dump +( Int n, Int Pe [ ], Int Iw [ ], @@ -397,15 +324,12 @@ GLOBAL void AMD_dump ( #undef ASSERT #endif +/* Use mxAssert if AMD is compiled into a mexFunction */ #ifdef MATLAB_MEX_FILE #define ASSERT(expression) (mxAssert ((expression), "")) #else -#ifdef MATHWORKS -#define ASSERT(expression) (utAssert (expression)) -#else #define ASSERT(expression) (assert (expression)) #endif -#endif /* MATLAB_MEX_FILE */ #define AMD_DEBUG0(params) { PRINTF (params) ; } #define AMD_DEBUG1(params) { if (AMD_debug >= 1) PRINTF (params) ; } @@ -415,12 +339,12 @@ GLOBAL void AMD_dump ( #else +/* no debugging */ +#define ASSERT(expression) #define AMD_DEBUG0(params) #define AMD_DEBUG1(params) #define AMD_DEBUG2(params) #define AMD_DEBUG3(params) #define AMD_DEBUG4(params) -#define ASSERT(expression) - #endif diff --git a/deal.II/contrib/umfpack/AMD/README.txt b/deal.II/contrib/umfpack/AMD/README.txt index e47f18e60a..c6fd2e0a4b 100644 --- a/deal.II/contrib/umfpack/AMD/README.txt +++ b/deal.II/contrib/umfpack/AMD/README.txt @@ -1,46 +1,63 @@ -AMD version 1.1: a set of routines for permuting sparse matrices prior to +AMD Version 2.2, Copyright (c) 2007 by Timothy A. +Davis, Patrick R. Amestoy, and Iain S. Duff. All Rights Reserved. +AMD is available under alternate licences; contact T. Davis for details. + +AMD: a set of routines for permuting sparse matrices prior to factorization. Includes a version in C, a version in Fortran, and a MATLAB mexFunction. +Requires UFconfig, in the ../UFconfig directory relative to this directory. + Quick start (Unix, or Windows with Cygwin): To compile, test, and install AMD, you may wish to first configure the - installation by editting the AMD/Make/Make.include file. Next, cd to this + installation by editting the ../UFconfig/UFconfig.mk file. Next, cd to this directory (AMD) and type "make" (or "make lib" if you do not have MATLAB). To compile and run a demo program for the Fortran version, type "make fortran". When done, type "make clean" to remove unused *.o files (keeps the compiled libraries and demo programs). See the User Guide - (Doc/AMD_UserGuide.pdf), or AMD/Make/Make.include, for more details. + (Doc/AMD_UserGuide.pdf), or ../UFconfig/UFconfig.mk for more details. Quick start (for MATLAB users); To compile, test, and install the AMD mexFunction, cd to the AMD/MATLAB directory and type amd_make at the MATLAB prompt. - This works on any system supported by MATLAB. -------------------------------------------------------------------------------- +If you have MATLAB 7.2 or earlier and use "make mex", you must first edit +UFconfig/UFconfig.h to remove the "-largeArrayDims" option from the MEX command +(or just use amd_make.m inside MATLAB). -AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. -Davis, Patrick R. Amestoy, and Iain S. Duff. All Rights Reserved. +------------------------------------------------------------------------------- AMD License: Your use or distribution of AMD or any modified version of AMD implies that you agree to this License. - THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY - EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. - - Permission is hereby granted to use or copy this program, provided - that the Copyright, this License, and the Availability of the original - version is retained on all copies. User documentation of any code that - uses AMD or any modified version of AMD code must cite the - Copyright, this License, the Availability note, and "Used by permission." - Permission to modify the code and to distribute modified code is granted, - provided the Copyright, this License, and the Availability note are - retained, and a notice that the code was modified is included. This - software was developed with support from the National Science Foundation, - and is provided to you free of charge. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + USA + + Permission is hereby granted to use or copy this program under the + terms of the GNU LGPL, provided that the Copyright, this License, + and the Availability of the original version is retained on all copies. + User documentation of any code that uses this code or any modified + version of this code must cite the Copyright, this License, the + Availability note, and "Used by permission." Permission to modify + the code and to distribute modified code is granted, provided the + Copyright, this License, and the Availability note are retained, + and a notice that the code was modified is included. Availability: @@ -48,8 +65,9 @@ Availability: ------------------------------------------------------------------------------- -This is the AMD Version 1.1 README file. It is a terse overview of AMD. -Refer to the User Guide (Doc/AMD_UserGuide.pdf) for how to install and use AMD. +This is the AMD README file. It is a terse overview of AMD. +Refer to the User Guide (Doc/AMD_UserGuide.pdf) for how to install +and use AMD. Description: @@ -60,7 +78,7 @@ Description: Authors: - Timothy A. Davis (davis@cise.ufl.edu), University of Florida. + Timothy A. Davis (davis at cise.ufl.edu), University of Florida. Patrick R. Amestory, ENSEEIHT, Toulouse, France. Iain S. Duff, Rutherford Appleton Laboratory, UK. @@ -75,7 +93,7 @@ Acknowledgements: for making this sabbatical possible. ------------------------------------------------------------------------------- -Files and directories in the AMD v1.0 distribution: +Files and directories in the AMD distribution: ------------------------------------------------------------------------------- --------------------------------------------------------------------------- @@ -83,7 +101,6 @@ Files and directories in the AMD v1.0 distribution: --------------------------------------------------------------------------- Doc documentation - Make for compiling AMD Source primary source code Include include file for use in your code that calls AMD Demo demo programs. also serves as test of the AMD installation. @@ -98,7 +115,7 @@ Files and directories in the AMD v1.0 distribution: Makefile top-level Makefile for GNU make or original make. Windows users would require Cygwin to use "make" - README this file + README.txt this file --------------------------------------------------------------------------- Doc directory: documentation @@ -109,42 +126,28 @@ Files and directories in the AMD v1.0 distribution: Makefile for creating the documentation AMD_UserGuide.bib AMD User Guide (references) AMD_UserGuide.tex AMD User Guide (LaTeX) - AMD_UserGuide.pdf AmD User Guide (PDF) - - --------------------------------------------------------------------------- - Make directory: for compiling AMD (Lib/libamd.a and Lib/libamdf77.a) - --------------------------------------------------------------------------- - - Make.include overall configurations. Can use one of: - Make.alpha Makefile additions for Compaq Alpha - Make.linux Makefile additions for Linux - Make.rs6000 Makefile additions for RS 6000 - Make.sgi Makefile additions for SGI - Make.solaris Makefile additions for Solaris + AMD_UserGuide.pdf AMD User Guide (PDF) + lesser.txt the GNU LGPL license --------------------------------------------------------------------------- Source directory: --------------------------------------------------------------------------- - GNUmakefile a nice Makefile, for GNU make - Makefile an ugly Unix Makefile (for older make's) - amd_order.c user-callable, primary AMD ordering routine amd_control.c user-callable, prints the control parameters amd_defaults.c user-callable, sets default control parameters amd_info.c user-callable, prints the statistics from AMD amd_1.c non-user-callable, construct A+A' - amd_2.c non-user-callable, primary ordering kernel + amd_2.c user-callable, primary ordering kernel (a C version of amd.f and amdbar.f, with post-ordering added) amd_aat.c non-user-callable, computes nnz (A+A') amd_dump.c non-user-callable, debugging routines - amd_internal.h non-user-callable, include file for AMD - amd_mex.c non-user-callable, MATLAB mexFunction amd_postorder.c non-user-callable, postorder amd_post_tree.c non-user-callable, postorder just one tree amd_valid.c non-user-callable, verifies a matrix + amd_preprocess.c non-user-callable, computes A', removes duplic amd.f user-callable Fortran 77 version amdbar.f user-callable Fortran 77 version @@ -154,6 +157,7 @@ Files and directories in the AMD v1.0 distribution: --------------------------------------------------------------------------- amd.h include file for C programs that use AMD + amd_internal.h non-user-callable, include file for AMD --------------------------------------------------------------------------- Demo directory: @@ -164,6 +168,12 @@ Files and directories in the AMD v1.0 distribution: amd_demo.c C demo program for AMD amd_demo.out output of amd_demo.c + amd_demo2.c C demo program for AMD, jumbled matrix + amd_demo2.out output of amd_demo2.c + + amd_l_demo.c C demo program for AMD (UF_long version) + amd_l_demo.out output of amd_l_demo.c + amd_simple.c simple C demo program for AMD amd_simple.out output of amd_simple.c @@ -184,10 +194,11 @@ Files and directories in the AMD v1.0 distribution: GNUmakefile a nice Makefile, for GNU make Makefile an ugly Unix Makefile (for older make's) - Contents.m for "help amd" listing of toolbox contents + Contents.m for "help amd2" listing of toolbox contents - amd.m MATLAB help file for AMD + amd2.m MATLAB help file for AMD amd_make.m MATLAB m-file for compiling AMD mexFunction + amd_install.m compile and install the AMD mexFunction amd_mex.c AMD mexFunction for MATLAB @@ -199,4 +210,6 @@ Files and directories in the AMD v1.0 distribution: Lib directory: libamd.a and libamdf77.a libraries placed here --------------------------------------------------------------------------- + GNUmakefile a nice Makefile, for GNU make + Makefile an ugly Unix Makefile (for older make's) libamd.def AMD definitions for Windows diff --git a/deal.II/contrib/umfpack/AMD/Source/Makefile b/deal.II/contrib/umfpack/AMD/Source/Makefile index 43f8aa6af9..63d45e000a 100644 --- a/deal.II/contrib/umfpack/AMD/Source/Makefile +++ b/deal.II/contrib/umfpack/AMD/Source/Makefile @@ -11,7 +11,7 @@ include ../../../../common/Make.global_options AMD = amd_aat amd_1 amd_2 amd_dump amd_postorder amd_post_tree amd_defaults \ amd_order amd_control amd_info amd_valid amd_preprocess -INC = ../Include/amd.h amd_internal.h +INC = ../Include/amd.h #------------------------------------------------------------------------------- # object files for each version @@ -32,4 +32,9 @@ $D/lib/contrib/umfpack/amd_l_%.$(OBJEXT): amd_%.c $(INC) @echo =====umfpack==========optimized====== $(= wbig) + { + for (x = 0 ; x < n ; x++) + { + if (W [x] != 0) W [x] = 1 ; + } + wflg = 2 ; + } + /* at this point, W [0..n-1] < wflg holds */ + return (wflg) ; +} + + +/* ========================================================================= */ +/* === AMD_2 =============================================================== */ +/* ========================================================================= */ + GLOBAL void AMD_2 ( Int n, /* A is n-by-n, where n > 0 */ @@ -42,7 +66,7 @@ GLOBAL void AMD_2 { /* - * Given a representation of the nonzero pattern of a symmetric matrix, A, + * Given a representation of the nonzero pattern of a symmetric matrix, A, * (excluding the diagonal) perform an approximate minimum (UMFPACK/MA38-style) * degree ordering to compute a pivot order such that the introduction of * nonzeros (fill-in) in the Cholesky factors A = LL' is kept low. At each @@ -50,15 +74,15 @@ GLOBAL void AMD_2 * upper-bound on the external degree. This routine can optionally perform * aggresive absorption (as done by MC47B in the Harwell Subroutine * Library). - * + * * The approximate degree algorithm implemented here is the symmetric analog of * the degree update algorithm in MA38 and UMFPACK (the Unsymmetric-pattern * MultiFrontal PACKage, both by Davis and Duff). The routine is based on the * MA27 minimum degree ordering algorithm by Iain Duff and John Reid. - * + * * This routine is a translation of the original AMDBAR and MC47B routines, * in Fortran, with the following modifications: - * + * * (1) dense rows/columns are removed prior to ordering the matrix, and placed * last in the output order. The presence of a dense row/column can * increase the ordering time by up to O(n^2), unless they are removed @@ -96,8 +120,8 @@ GLOBAL void AMD_2 * ouput. Many of these functions are also provided by the Fortran * Harwell Subroutine Library routine MC47A. * - * (6) both "int" and "long" versions are provided. In the descriptions below - * and integer is and "int" or "long", depending on which version is + * (6) both int and UF_long versions are provided. In the descriptions below + * and integer is and int or UF_long depending on which version is * being used. ********************************************************************** @@ -172,7 +196,7 @@ GLOBAL void AMD_2 * ---------------------------------------------------------------------------- * INPUT ARGUMENTS (unaltered): * ---------------------------------------------------------------------------- - + * n: The matrix order. Restriction: n >= 1. * * iwlen: The size of the Iw array. On input, the matrix is stored in @@ -436,7 +460,7 @@ GLOBAL void AMD_2 Int deg, degme, dext, lemax, e, elenme, eln, i, ilast, inext, j, jlast, jnext, k, knt1, knt2, knt3, lenj, ln, me, mindeg, nel, nleft, - nvi, nvj, nvpiv, slenme, wbig, we, wflg, wnvi, x, ok, ndense, ncmpa, + nvi, nvj, nvpiv, slenme, wbig, we, wflg, wnvi, ok, ndense, ncmpa, dense, aggressive ; unsigned Int hash ; /* unsigned, so that hash % n is well defined.*/ @@ -471,8 +495,8 @@ GLOBAL void AMD_2 * nvj: the number of variables in a supervariable j (= Nv [j]) * nvpiv: number of pivots in current element * slenme: number of variables in variable list of pivotal variable - * wbig: = INT_MAX - n for the "int" version, LONG_MAX - n for the - * "long" version. wflg is not allowed to be >= wbig. + * wbig: = INT_MAX - n for the int version, UF_long_max - n for the + * UF_long version. wflg is not allowed to be >= wbig. * we: W [e] * wflg: used for flagging the W array. See description of Iw. * wnvi: wflg - Nv [i] @@ -552,19 +576,10 @@ GLOBAL void AMD_2 dmax = 1 ; me = EMPTY ; - wflg = 2 ; mindeg = 0 ; ncmpa = 0 ; nel = 0 ; - lemax = 0 ; /* this is called dmax in the Fortran version */ - -#ifdef TEST_FOR_INTEGER_OVERFLOW - /* for testing only */ - wbig = 3*n ; -#else - /* normal operation */ - wbig = Int_MAX - n ; -#endif + lemax = 0 ; /* get control parameters */ if (Control != (double *) NULL) @@ -577,10 +592,11 @@ GLOBAL void AMD_2 alpha = AMD_DEFAULT_DENSE ; aggressive = AMD_DEFAULT_AGGRESSIVE ; } + /* Note: if alpha is NaN, this is undefined: */ if (alpha < 0) { - /* no dense rows/columns */ - dense = n ; + /* only remove completely dense rows/columns */ + dense = n-2 ; } else { @@ -588,14 +604,15 @@ GLOBAL void AMD_2 } dense = MAX (16, dense) ; dense = MIN (n, dense) ; - AMD_DEBUG1 (("AMD (debug), alpha %g, aggr. "ID"\n", alpha, aggressive)) ; + AMD_DEBUG1 (("\n\nAMD (debug), alpha %g, aggr. "ID"\n", + alpha, aggressive)) ; for (i = 0 ; i < n ; i++) { Last [i] = EMPTY ; Head [i] = EMPTY ; Next [i] = EMPTY ; - /* if seperate Hhead array is used for hash buckets: * + /* if separate Hhead array is used for hash buckets: * Hhead [i] = EMPTY ; */ Nv [i] = 1 ; @@ -605,18 +622,21 @@ GLOBAL void AMD_2 } #ifndef NDEBUG - AMD_DEBUG1 (("\n======Nel "ID"\n", nel)) ; + AMD_DEBUG1 (("\n======Nel "ID" initial\n", nel)) ; AMD_dump (n, Pe, Iw, Len, iwlen, pfree, Nv, Next, Last, Head, Elen, Degree, W, -1) ; #endif + /* initialize wflg */ + wbig = Int_MAX - n ; + wflg = clear_flag (0, wbig, W, n) ; + /* --------------------------------------------------------------------- */ /* initialize degree lists and eliminate dense and empty rows */ /* --------------------------------------------------------------------- */ ndense = 0 ; - /* for (i = n-1 ; i >= 0 ; i--) */ for (i = 0 ; i < n ; i++) { deg = Degree [i] ; @@ -680,8 +700,11 @@ GLOBAL void AMD_2 #ifndef NDEBUG AMD_DEBUG1 (("\n======Nel "ID"\n", nel)) ; - if (AMD_debug >= 2) AMD_dump (n, Pe, Iw, Len, iwlen, pfree, Nv, Next, - Last, Head, Elen, Degree, W, nel) ; + if (AMD_debug >= 2) + { + AMD_dump (n, Pe, Iw, Len, iwlen, pfree, Nv, Next, + Last, Head, Elen, Degree, W, nel) ; + } #endif /* ========================================================================= */ @@ -761,7 +784,7 @@ GLOBAL void AMD_2 /* store i in new list */ /* ----------------------------------------------------- */ - /* flag i as being in Lme by negating Nv [i] */ + /* flag i as being in Lme by negating Nv [i] */ degme += nvi ; Nv [i] = -nvi ; Iw [++pme2] = i ; @@ -781,7 +804,7 @@ GLOBAL void AMD_2 } else { - /* i is at the head of the degree list */ + /* i is at the head of the degree list */ ASSERT (Degree [i] >= 0 && Degree [i] < n) ; Head [Degree [i]] = inext ; } @@ -812,7 +835,7 @@ GLOBAL void AMD_2 } else { - /* search the elements in me. */ + /* search the elements in me. */ e = Iw [p++] ; ASSERT (e >= 0 && e < n) ; pj = Pe [e] ; @@ -856,17 +879,17 @@ GLOBAL void AMD_2 Pe [me] = p ; Len [me] -= knt1 ; - /* check if nothing left of supervariable me */ + /* check if nothing left of supervariable me */ if (Len [me] == 0) Pe [me] = EMPTY ; Pe [e] = pj ; Len [e] = ln - knt2 ; - /* nothing left of element e */ + /* nothing left of element e */ if (Len [e] == 0) Pe [e] = EMPTY ; ncmpa++ ; /* one more garbage collection */ - /* store first entry of each object in Pe */ - /* FLIP the first entry in each object */ + /* store first entry of each object in Pe */ + /* FLIP the first entry in each object */ for (j = 0 ; j < n ; j++) { pn = Pe [j] ; @@ -878,7 +901,7 @@ GLOBAL void AMD_2 } } - /* psrc/pdst point to source/destination */ + /* psrc/pdst point to source/destination */ psrc = 0 ; pdst = 0 ; pend = pme1 - 1 ; @@ -901,7 +924,7 @@ GLOBAL void AMD_2 } } - /* move the new partially-constructed element */ + /* move the new partially-constructed element */ p1 = pdst ; for (psrc = pme1 ; psrc <= pfree-1 ; psrc++) { @@ -919,7 +942,7 @@ GLOBAL void AMD_2 /* store i in new list */ /* ------------------------------------------------- */ - /* flag i as being in Lme by negating Nv [i] */ + /* flag i as being in Lme by negating Nv [i] */ degme += nvi ; Nv [i] = -nvi ; Iw [pfree++] = i ; @@ -940,7 +963,7 @@ GLOBAL void AMD_2 } else { - /* i is at the head of the degree list */ + /* i is at the head of the degree list */ ASSERT (Degree [i] >= 0 && Degree [i] < n) ; Head [Degree [i]] = inext ; } @@ -949,8 +972,8 @@ GLOBAL void AMD_2 if (e != me) { - /* set tree pointer and flag to indicate element e is - * absorbed into new element me (the parent of e is me) */ + /* set tree pointer and flag to indicate element e is + * absorbed into new element me (the parent of e is me) */ AMD_DEBUG1 ((" Element "ID" => "ID"\n", e, me)) ; Pe [e] = FLIP (me) ; W [e] = 0 ; @@ -964,14 +987,14 @@ GLOBAL void AMD_2 /* me has now been converted into an element in Iw [pme1..pme2] */ /* ----------------------------------------------------------------- */ - /* degme holds the external degree of new element */ + /* degme holds the external degree of new element */ Degree [me] = degme ; Pe [me] = pme1 ; Len [me] = pme2 - pme1 + 1 ; ASSERT (Pe [me] >= 0 && Pe [me] < iwlen) ; Elen [me] = FLIP (nvpiv + degme) ; - /* FLIP (Elen (me)) is now the degree of pivot (including + /* FLIP (Elen (me)) is now the degree of pivot (including * diagonal part). */ #ifndef NDEBUG @@ -987,14 +1010,7 @@ GLOBAL void AMD_2 /* With the current value of wflg, wflg+n must not cause integer * overflow */ - if (wflg >= wbig) - { - for (x = 0 ; x < n ; x++) - { - if (W [x] != 0) W [x] = 1 ; - } - wflg = 2 ; - } + wflg = clear_flag (wflg, wbig, W, n) ; /* ========================================================================= */ /* COMPUTE (W [e] - wflg) = |Le\Lme| FOR ALL ELEMENTS */ @@ -1007,7 +1023,7 @@ GLOBAL void AMD_2 * for each element e that appears in any supervariable in Lme. The * notation Le refers to the pattern (list of supervariables) of a * previous element e, where e is not yet absorbed, stored in - * Iw [Pe [e] + 1 ... Pe [e] + Iw [Pe [e]]]. The notation Lme + * Iw [Pe [e] + 1 ... Pe [e] + Len [e]]. The notation Lme * refers to the pattern of the current element (stored in * Iw [pme1..pme2]). If aggressive absorption is enabled, and * (W [e] - wflg) becomes zero, then the element e will be absorbed @@ -1023,7 +1039,7 @@ GLOBAL void AMD_2 AMD_DEBUG3 ((""ID" Elen "ID": \n", i, eln)) ; if (eln > 0) { - /* note that Nv [i] has been negated to denote i in Lme: */ + /* note that Nv [i] has been negated to denote i in Lme: */ nvi = -Nv [i] ; ASSERT (nvi > 0 && Pe [i] >= 0 && Pe [i] < iwlen) ; wnvi = wflg - nvi ; @@ -1035,14 +1051,14 @@ GLOBAL void AMD_2 AMD_DEBUG4 ((" e "ID" we "ID" ", e, we)) ; if (we >= wflg) { - /* unabsorbed element e has been seen in this loop */ + /* unabsorbed element e has been seen in this loop */ AMD_DEBUG4 ((" unabsorbed, first time seen")) ; we -= nvi ; } else if (we != 0) { - /* e is an unabsorbed element */ - /* this is the first we have seen e in all of Scan 1 */ + /* e is an unabsorbed element */ + /* this is the first we have seen e in all of Scan 1 */ AMD_DEBUG4 ((" unabsorbed")) ; we = Degree [e] + wnvi ; } @@ -1080,7 +1096,7 @@ GLOBAL void AMD_2 /* scan the element list associated with supervariable i */ /* ------------------------------------------------------------- */ - /* UMFPACK/MA38-style approximate degree: */ + /* UMFPACK/MA38-style approximate degree: */ if (aggressive) { for (p = p1 ; p <= p2 ; p++) @@ -1132,7 +1148,7 @@ GLOBAL void AMD_2 } } - /* count the number of elements in i (including me): */ + /* count the number of elements in i (including me): */ Elen [i] = pn - p1 + 1 ; /* ------------------------------------------------------------- */ @@ -1151,8 +1167,8 @@ GLOBAL void AMD_2 nvj = Nv [j] ; if (nvj > 0) { - /* j is unabsorbed, and not in Lme. */ - /* add to degree and add to new list */ + /* j is unabsorbed, and not in Lme. */ + /* add to degree and add to new list */ deg += nvj ; Iw [pn++] = j ; hash += j ; @@ -1165,7 +1181,7 @@ GLOBAL void AMD_2 /* update the degree and check for mass elimination */ /* ------------------------------------------------------------- */ - /* with aggressive absorption, deg==0 is identical to the + /* with aggressive absorption, deg==0 is identical to the * Elen [i] == 1 && p3 == pn test, below. */ ASSERT (IMPLIES (aggressive, (deg==0) == (Elen[i]==1 && p3==pn))) ; @@ -1173,7 +1189,7 @@ GLOBAL void AMD_2 { /* --------------------------------------------------------- */ - /* mass elimination */ + /* mass elimination */ /* --------------------------------------------------------- */ /* There is nothing left of this node except for an edge to @@ -1213,8 +1229,8 @@ GLOBAL void AMD_2 /* update the upper-bound degree of i */ /* --------------------------------------------------------- */ - /* the following degree does not yet include the size - * of the current element, which is added later: */ + /* the following degree does not yet include the size + * of the current element, which is added later: */ Degree [i] = MIN (Degree [i], deg) ; @@ -1222,13 +1238,13 @@ GLOBAL void AMD_2 /* add me to the list for i */ /* --------------------------------------------------------- */ - /* move first supervariable to end of list */ + /* move first supervariable to end of list */ Iw [pn] = Iw [p3] ; - /* move first element to end of element part of list */ + /* move first element to end of element part of list */ Iw [p3] = Iw [p1] ; - /* add new element, me, to front of list. */ + /* add new element, me, to front of list. */ Iw [p1] = me ; - /* store the new length of the list in Len [i] */ + /* store the new length of the list in Len [i] */ Len [i] = pn - p1 + 1 ; /* --------------------------------------------------------- */ @@ -1258,7 +1274,7 @@ GLOBAL void AMD_2 Last [j] = i ; } - /* if a seperate Hhead array is used: * + /* if a separate Hhead array is used: * Next [i] = Hhead [hash] ; Hhead [hash] = i ; */ @@ -1273,18 +1289,11 @@ GLOBAL void AMD_2 /* Clear the counter array, W [...], by incrementing wflg. */ /* ----------------------------------------------------------------- */ - /* make sure that wflg+n does not cause integer overflow */ + /* make sure that wflg+n does not cause integer overflow */ lemax = MAX (lemax, degme) ; wflg += lemax ; - if (wflg >= wbig) - { - for (x = 0 ; x < n ; x++) - { - if (W [x] != 0) W [x] = 1 ; - } - wflg = 2 ; - } - /* at this point, W [0..n-1] < wflg holds */ + wflg = clear_flag (wflg, wbig, W, n) ; + /* at this point, W [0..n-1] < wflg holds */ /* ========================================================================= */ /* SUPERVARIABLE DETECTION */ @@ -1298,7 +1307,7 @@ GLOBAL void AMD_2 AMD_DEBUG2 (("Consider i "ID" nv "ID"\n", i, Nv [i])) ; if (Nv [i] < 0) { - /* i is a principal variable in Lme */ + /* i is a principal variable in Lme */ /* --------------------------------------------------------- * examine all hash buckets with 2 or more variables. We do @@ -1306,7 +1315,7 @@ GLOBAL void AMD_2 * the pattern Lme of the current element, me * --------------------------------------------------------- */ - /* let i = head of hash bucket, and empty the hash bucket */ + /* let i = head of hash bucket, and empty the hash bucket */ ASSERT (Last [i] >= 0 && Last [i] < n) ; hash = Last [i] ; @@ -1330,7 +1339,7 @@ GLOBAL void AMD_2 Last [j] = EMPTY ; } - /* if seperate Hhead array is used: * + /* if separate Hhead array is used: * i = Hhead [hash] ; Hhead [hash] = EMPTY ; */ @@ -1351,7 +1360,7 @@ GLOBAL void AMD_2 eln = Elen [i] ; ASSERT (ln >= 0 && eln >= 0) ; ASSERT (Pe [i] >= 0 && Pe [i] < iwlen) ; - /* do not flag the first element in the list (me) */ + /* do not flag the first element in the list (me) */ for (p = Pe [i] + 1 ; p <= Pe [i] + ln - 1 ; p++) { ASSERT (Iw [p] >= 0 && Iw [p] < n) ; @@ -1378,7 +1387,7 @@ GLOBAL void AMD_2 ASSERT (Len [j] >= 0 && Elen [j] >= 0) ; ASSERT (Pe [j] >= 0 && Pe [j] < iwlen) ; ok = (Len [j] == ln) && (Elen [j] == eln) ; - /* skop the first element in the list (me) */ + /* skip the first element in the list (me) */ for (p = Pe [j] + 1 ; ok && p <= Pe [j] + ln - 1 ; p++) { ASSERT (Iw [p] >= 0 && Iw [p] < n) ; @@ -1442,8 +1451,8 @@ GLOBAL void AMD_2 AMD_DEBUG3 (("Restore i "ID" "ID"\n", i, nvi)) ; if (nvi > 0) { - /* i is a principal variable in Lme */ - /* restore Nv [i] to signify that i is principal */ + /* i is a principal variable in Lme */ + /* restore Nv [i] to signify that i is principal */ Nv [i] = nvi ; /* --------------------------------------------------------- */ @@ -1488,11 +1497,11 @@ GLOBAL void AMD_2 AMD_DEBUG2 (("ME = "ID" DONE\n", me)) ; Nv [me] = nvpiv ; - /* save the length of the list for the new element me */ + /* save the length of the list for the new element me */ Len [me] = p - pme1 ; if (Len [me] == 0) { - /* there is nothing left of the current pivot element */ + /* there is nothing left of the current pivot element */ /* it is a root of the assembly tree */ Pe [me] = EMPTY ; W [me] = 0 ; @@ -1593,6 +1602,10 @@ GLOBAL void AMD_2 Info [AMD_STATUS] = AMD_OK ; } +/* ========================================================================= */ +/* POST-ORDERING */ +/* ========================================================================= */ + /* ------------------------------------------------------------------------- * Variables at this point: * @@ -1617,9 +1630,15 @@ GLOBAL void AMD_2 * No other scalars needed (pfree, iwlen, etc.) * ------------------------------------------------------------------------- */ + /* restore Pe */ for (i = 0 ; i < n ; i++) { Pe [i] = FLIP (Pe [i]) ; + } + + /* restore Elen, for output information, and for postordering */ + for (i = 0 ; i < n ; i++) + { Elen [i] = FLIP (Elen [i]) ; } @@ -1810,7 +1829,7 @@ GLOBAL void AMD_2 } } } - ASSERT (nel == n) ; + ASSERT (nel == n) ; AMD_DEBUG2 (("\n\nPerm:\n")) ; for (i = 0 ; i < n ; i++) diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_aat.c b/deal.II/contrib/umfpack/AMD/Source/amd_aat.c index 3de1e2446a..4f02b755fb 100644 --- a/deal.II/contrib/umfpack/AMD/Source/amd_aat.c +++ b/deal.II/contrib/umfpack/AMD/Source/amd_aat.c @@ -3,20 +3,22 @@ /* ========================================================================= */ /* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* AMD, Copyright (c) Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ /* web: http://www.cise.ufl.edu/research/sparse/amd */ /* ------------------------------------------------------------------------- */ /* AMD_aat: compute the symmetry of the pattern of A, and count the number of - * nonzeros each column of A+A' (excluding the diagonal). Assume the input - * matrix has no errors. + * nonzeros each column of A+A' (excluding the diagonal). Assumes the input + * matrix has no errors, with sorted columns and no duplicates + * (AMD_valid (n, n, Ap, Ai) must be AMD_OK, but this condition is not + * checked). */ #include "amd_internal.h" -GLOBAL Int AMD_aat /* returns nz in A+A' */ +GLOBAL size_t AMD_aat /* returns nz in A+A' */ ( Int n, const Int Ap [ ], @@ -24,15 +26,16 @@ GLOBAL Int AMD_aat /* returns nz in A+A' */ Int Len [ ], /* Len [j]: length of column j of A+A', excl diagonal*/ Int Tp [ ], /* workspace of size n */ double Info [ ] -) +) { - Int p1, p2, p, i, j, pj, pj2, k, nzdiag, nzboth, nz, nzaat ; + Int p1, p2, p, i, j, pj, pj2, k, nzdiag, nzboth, nz ; double sym ; + size_t nzaat ; #ifndef NDEBUG AMD_debug_init ("AMD AAT") ; for (k = 0 ; k < n ; k++) Tp [k] = EMPTY ; - ASSERT (AMD_valid (n, n, Ap, Ai)) ; + ASSERT (AMD_valid (n, n, Ap, Ai) == AMD_OK) ; #endif if (Info != (double *) NULL) @@ -154,7 +157,7 @@ GLOBAL Int AMD_aat /* returns nz in A+A' */ } else { - sym = ((double) (2 * nzboth)) / ((double) (nz - nzdiag)) ; + sym = (2 * (double) nzboth) / ((double) (nz - nzdiag)) ; } nzaat = 0 ; @@ -162,7 +165,9 @@ GLOBAL Int AMD_aat /* returns nz in A+A' */ { nzaat += Len [k] ; } - AMD_DEBUG1 (("AMD nz in A+A', excluding diagonal (nzaat) = "ID"\n",nzaat)); + + AMD_DEBUG1 (("AMD nz in A+A', excluding diagonal (nzaat) = %g\n", + (double) nzaat)) ; AMD_DEBUG1 ((" nzboth: "ID" nz: "ID" nzdiag: "ID" symmetry: %g\n", nzboth, nz, nzdiag, sym)) ; diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_control.c b/deal.II/contrib/umfpack/AMD/Source/amd_control.c index 6fc8f9f475..c2aec9f0bf 100644 --- a/deal.II/contrib/umfpack/AMD/Source/amd_control.c +++ b/deal.II/contrib/umfpack/AMD/Source/amd_control.c @@ -3,9 +3,9 @@ /* ========================================================================= */ /* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* AMD, Copyright (c) Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ /* web: http://www.cise.ufl.edu/research/sparse/amd */ /* ------------------------------------------------------------------------- */ @@ -35,8 +35,9 @@ GLOBAL void AMD_control aggressive = AMD_DEFAULT_AGGRESSIVE ; } - PRINTF (("\namd: approximate minimum degree ordering, parameters:\n" - " dense row parameter: %g\n", alpha)) ; + PRINTF (("\nAMD version %d.%d.%d, %s: approximate minimum degree ordering\n" + " dense row parameter: %g\n", AMD_MAIN_VERSION, AMD_SUB_VERSION, + AMD_SUBSUB_VERSION, AMD_DATE, alpha)) ; if (alpha < 0) { @@ -52,10 +53,12 @@ GLOBAL void AMD_control if (aggressive) { - PRINTF ((" aggressive absorption: yes\n\n")) ; + PRINTF ((" aggressive absorption: yes\n")) ; } else { - PRINTF ((" aggressive absorption: no\n\n")) ; + PRINTF ((" aggressive absorption: no\n")) ; } + + PRINTF ((" size of AMD integer: %d\n\n", sizeof (Int))) ; } diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_defaults.c b/deal.II/contrib/umfpack/AMD/Source/amd_defaults.c index d0737f4fab..ffe3f4bd53 100644 --- a/deal.II/contrib/umfpack/AMD/Source/amd_defaults.c +++ b/deal.II/contrib/umfpack/AMD/Source/amd_defaults.c @@ -3,9 +3,9 @@ /* ========================================================================= */ /* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* AMD, Copyright (c) Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ /* web: http://www.cise.ufl.edu/research/sparse/amd */ /* ------------------------------------------------------------------------- */ @@ -15,12 +15,17 @@ #include "amd_internal.h" +/* ========================================================================= */ +/* === AMD defaults ======================================================== */ +/* ========================================================================= */ + GLOBAL void AMD_defaults ( double Control [ ] ) { Int i ; + if (Control != (double *) NULL) { for (i = 0 ; i < AMD_CONTROL ; i++) diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_dump.c b/deal.II/contrib/umfpack/AMD/Source/amd_dump.c index c526007fe7..89d67b875f 100644 --- a/deal.II/contrib/umfpack/AMD/Source/amd_dump.c +++ b/deal.II/contrib/umfpack/AMD/Source/amd_dump.c @@ -3,9 +3,9 @@ /* ========================================================================= */ /* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* AMD, Copyright (c) Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ /* web: http://www.cise.ufl.edu/research/sparse/amd */ /* ------------------------------------------------------------------------- */ @@ -40,7 +40,10 @@ GLOBAL void AMD_debug_init ( char *s ) fscanf (f, ID, &AMD_debug) ; fclose (f) ; } - if (AMD_debug >= 0) printf ("%s: AMD_debug_init, D= "ID"\n", s, AMD_debug); + if (AMD_debug >= 0) + { + printf ("%s: AMD_debug_init, D= "ID"\n", s, AMD_debug) ; + } } /* ========================================================================= */ @@ -73,6 +76,7 @@ GLOBAL void AMD_dump ( if (AMD_debug < 0) return ; ASSERT (pfree <= iwlen) ; + AMD_DEBUG3 (("\nAMD dump, pfree: "ID"\n", pfree)) ; for (i = 0 ; i < n ; i++) { pe = Pe [i] ; @@ -107,7 +111,7 @@ GLOBAL void AMD_dump ( p = pe ; AMD_DEBUG3 ((" e/s: ")) ; if (elen == 0) AMD_DEBUG3 ((" : ")) ; - ASSERT (pe < pfree) ; + ASSERT (pe + len <= pfree) ; for (k = 0 ; k < len ; k++) { j = Iw [p] ; @@ -134,7 +138,7 @@ GLOBAL void AMD_dump ( ASSERT (nv > 0 && pe >= 0) ; p = pe ; AMD_DEBUG3 ((" : ")) ; - ASSERT (pe < pfree) ; + ASSERT (pe + len <= pfree) ; for (k = 0 ; k < len ; k++) { j = Iw [p] ; @@ -156,10 +160,10 @@ GLOBAL void AMD_dump ( { if (Head [deg] == EMPTY) continue ; ilast = EMPTY ; - AMD_DEBUG3 ((ID": ", deg)) ; + AMD_DEBUG3 ((ID": \n", deg)) ; for (i = Head [deg] ; i != EMPTY ; i = Next [i]) { - AMD_DEBUG3 ((" "ID" : next "ID" last "ID" deg "ID"\n", + AMD_DEBUG3 ((" "ID" : next "ID" last "ID" deg "ID"\n", i, Next [i], Last [i], Degree [i])) ; ASSERT (i >= 0 && i < n && ilast == Last [i] && deg == Degree [i]) ; diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_global.c b/deal.II/contrib/umfpack/AMD/Source/amd_global.c new file mode 100644 index 0000000000..93f2b45187 --- /dev/null +++ b/deal.II/contrib/umfpack/AMD/Source/amd_global.c @@ -0,0 +1,84 @@ +/* ========================================================================= */ +/* === amd_global ========================================================== */ +/* ========================================================================= */ + +/* ------------------------------------------------------------------------- */ +/* AMD, Copyright (c) Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ +/* web: http://www.cise.ufl.edu/research/sparse/amd */ +/* ------------------------------------------------------------------------- */ + +#include + +#ifdef MATLAB_MEX_FILE +#include "mex.h" +#include "matrix.h" +#endif + +#ifndef NULL +#define NULL 0 +#endif + +/* ========================================================================= */ +/* === Default AMD memory manager ========================================== */ +/* ========================================================================= */ + +/* The user can redefine these global pointers at run-time to change the memory + * manager used by AMD. AMD only uses malloc and free; realloc and calloc are + * include for completeness, in case another package wants to use the same + * memory manager as AMD. + * + * If compiling as a MATLAB mexFunction, the default memory manager is mxMalloc. + * You can also compile AMD as a standard ANSI-C library and link a mexFunction + * against it, and then redefine these pointers at run-time, in your + * mexFunction. + * + * If -DNMALLOC is defined at compile-time, no memory manager is specified at + * compile-time. You must then define these functions at run-time, before + * calling AMD, for AMD to work properly. + */ + +#ifndef NMALLOC +#ifdef MATLAB_MEX_FILE +/* MATLAB mexFunction: */ +void *(*amd_malloc) (size_t) = mxMalloc ; +void (*amd_free) (void *) = mxFree ; +void *(*amd_realloc) (void *, size_t) = mxRealloc ; +void *(*amd_calloc) (size_t, size_t) = mxCalloc ; +#else +/* standard ANSI-C: */ +void *(*amd_malloc) (size_t) = malloc ; +void (*amd_free) (void *) = free ; +void *(*amd_realloc) (void *, size_t) = realloc ; +void *(*amd_calloc) (size_t, size_t) = calloc ; +#endif +#else +/* no memory manager defined at compile-time; you MUST define one at run-time */ +void *(*amd_malloc) (size_t) = NULL ; +void (*amd_free) (void *) = NULL ; +void *(*amd_realloc) (void *, size_t) = NULL ; +void *(*amd_calloc) (size_t, size_t) = NULL ; +#endif + +/* ========================================================================= */ +/* === Default AMD printf routine ========================================== */ +/* ========================================================================= */ + +/* The user can redefine this global pointer at run-time to change the printf + * routine used by AMD. If NULL, no printing occurs. + * + * If -DNPRINT is defined at compile-time, stdio.h is not included. Printing + * can then be enabled at run-time by setting amd_printf to a non-NULL function. + */ + +#ifndef NPRINT +#ifdef MATLAB_MEX_FILE +int (*amd_printf) (const char *, ...) = mexPrintf ; +#else +#include +int (*amd_printf) (const char *, ...) = printf ; +#endif +#else +int (*amd_printf) (const char *, ...) = NULL ; +#endif diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_info.c b/deal.II/contrib/umfpack/AMD/Source/amd_info.c index 1cc8968f98..0a842adf04 100644 --- a/deal.II/contrib/umfpack/AMD/Source/amd_info.c +++ b/deal.II/contrib/umfpack/AMD/Source/amd_info.c @@ -3,9 +3,9 @@ /* ========================================================================= */ /* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* AMD, Copyright (c) Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ /* web: http://www.cise.ufl.edu/research/sparse/amd */ /* ------------------------------------------------------------------------- */ @@ -24,6 +24,9 @@ GLOBAL void AMD_info { double n, ndiv, nmultsubs_ldl, nmultsubs_lu, lnz, lnzd ; + PRINTF (("\nAMD version %d.%d.%d, %s, results:\n", + AMD_MAIN_VERSION, AMD_SUB_VERSION, AMD_SUBSUB_VERSION, AMD_DATE)) ; + if (!Info) { return ; @@ -37,9 +40,7 @@ GLOBAL void AMD_info lnzd = (n >= 0 && lnz >= 0) ? (n + lnz) : (-1) ; /* AMD return status */ - PRINTF (( - "\namd: approximate minimum degree ordering, results:\n" - " status: ")) ; + PRINTF ((" status: ")) ; if (Info [AMD_STATUS] == AMD_OK) { PRINTF (("OK\n")) ; @@ -52,6 +53,10 @@ GLOBAL void AMD_info { PRINTF (("invalid matrix\n")) ; } + else if (Info [AMD_STATUS] == AMD_OK_BUT_JUMBLED) + { + PRINTF (("OK, but jumbled\n")) ; + } else { PRINTF (("unknown\n")) ; diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_order.c b/deal.II/contrib/umfpack/AMD/Source/amd_order.c index eac5471a0b..d3f6853d16 100644 --- a/deal.II/contrib/umfpack/AMD/Source/amd_order.c +++ b/deal.II/contrib/umfpack/AMD/Source/amd_order.c @@ -3,9 +3,9 @@ /* ========================================================================= */ /* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* AMD, Copyright (c) Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ /* web: http://www.cise.ufl.edu/research/sparse/amd */ /* ------------------------------------------------------------------------- */ @@ -15,6 +15,10 @@ #include "amd_internal.h" +/* ========================================================================= */ +/* === AMD_order =========================================================== */ +/* ========================================================================= */ + GLOBAL Int AMD_order ( Int n, @@ -25,7 +29,9 @@ GLOBAL Int AMD_order double Info [ ] ) { - Int slen, *Len, *S, nz, nzaat, i, *Pinv, info ; + Int *Len, *S, nz, i, *Pinv, info, status, *Rp, *Ri, *Cp, *Ci, ok ; + size_t nzaat, slen ; + double mem = 0 ; #ifndef NDEBUG AMD_debug_init ("amd") ; @@ -66,74 +72,129 @@ GLOBAL Int AMD_order return (AMD_INVALID) ; } - /* Avoid integer overflow in memory size calculations. The space required - * by AMD is at most 2.4nz + 8n for S, and n for Len. - * Note nz - n <= nzaat <= 2*nz, below. */ - if ((2.4 * (double) nz + 8 * (double) n) > (double) Int_MAX / sizeof (Int)) + /* check if n or nz will cause size_t overflow */ + if (((size_t) n) >= SIZE_T_MAX / sizeof (Int) + || ((size_t) nz) >= SIZE_T_MAX / sizeof (Int)) { - /* :: int overflow :: */ if (info) Info [AMD_STATUS] = AMD_OUT_OF_MEMORY ; - return (AMD_OUT_OF_MEMORY) ; + return (AMD_OUT_OF_MEMORY) ; /* problem too large */ } - if (!AMD_valid (n, n, Ap, Ai)) + /* check the input matrix: AMD_OK, AMD_INVALID, or AMD_OK_BUT_JUMBLED */ + status = AMD_valid (n, n, Ap, Ai) ; + + if (status == AMD_INVALID) { if (info) Info [AMD_STATUS] = AMD_INVALID ; return (AMD_INVALID) ; /* matrix is invalid */ } - /* --------------------------------------------------------------------- */ - /* determine the symmetry and count off-diagonal nonzeros in A+A' */ - /* --------------------------------------------------------------------- */ - - /* allocate size-n integer workspace */ - Len = (Int *) ALLOCATE (n * sizeof (Int)) ; - if (!Len) + /* allocate two size-n integer workspaces */ + Len = amd_malloc (n * sizeof (Int)) ; + Pinv = amd_malloc (n * sizeof (Int)) ; + mem += n ; + mem += n ; + if (!Len || !Pinv) { /* :: out of memory :: */ + amd_free (Len) ; + amd_free (Pinv) ; if (info) Info [AMD_STATUS] = AMD_OUT_OF_MEMORY ; return (AMD_OUT_OF_MEMORY) ; } - nzaat = AMD_aat (n, Ap, Ai, Len, P, Info) ; - AMD_DEBUG1 (("nzaat: "ID"\n", nzaat)) ; - ASSERT (nz-n <= nzaat && nzaat <= 2*nz) ; + + if (status == AMD_OK_BUT_JUMBLED) + { + /* sort the input matrix and remove duplicate entries */ + AMD_DEBUG1 (("Matrix is jumbled\n")) ; + Rp = amd_malloc ((n+1) * sizeof (Int)) ; + Ri = amd_malloc (MAX (nz,1) * sizeof (Int)) ; + mem += (n+1) ; + mem += MAX (nz,1) ; + if (!Rp || !Ri) + { + /* :: out of memory :: */ + amd_free (Rp) ; + amd_free (Ri) ; + amd_free (Len) ; + amd_free (Pinv) ; + if (info) Info [AMD_STATUS] = AMD_OUT_OF_MEMORY ; + return (AMD_OUT_OF_MEMORY) ; + } + /* use Len and Pinv as workspace to create R = A' */ + AMD_preprocess (n, Ap, Ai, Rp, Ri, Len, Pinv) ; + Cp = Rp ; + Ci = Ri ; + } + else + { + /* order the input matrix as-is. No need to compute R = A' first */ + Rp = NULL ; + Ri = NULL ; + Cp = (Int *) Ap ; + Ci = (Int *) Ai ; + } /* --------------------------------------------------------------------- */ - /* allocate workspace for matrix, elbow room, and 7 size-n vectors */ + /* determine the symmetry and count off-diagonal nonzeros in A+A' */ /* --------------------------------------------------------------------- */ - slen = (nzaat + nzaat/5 + n) + 7*n ; - if (info) + nzaat = AMD_aat (n, Cp, Ci, Len, P, Info) ; + AMD_DEBUG1 (("nzaat: %g\n", (double) nzaat)) ; + ASSERT ((MAX (nz-n, 0) <= nzaat) && (nzaat <= 2 * (size_t) nz)) ; + + /* --------------------------------------------------------------------- */ + /* allocate workspace for matrix, elbow room, and 6 size-n vectors */ + /* --------------------------------------------------------------------- */ + + S = NULL ; + slen = nzaat ; /* space for matrix */ + ok = ((slen + nzaat/5) >= slen) ; /* check for size_t overflow */ + slen += nzaat/5 ; /* add elbow room */ + for (i = 0 ; ok && i < 7 ; i++) { - /* memory usage (Len and S), in bytes. */ - Info [AMD_MEMORY] = ((double) slen + n) * sizeof (Int) ; + ok = ((slen + n) > slen) ; /* check for size_t overflow */ + slen += n ; /* size-n elbow room, 6 size-n work */ } - S = (Int *) ALLOCATE (slen * sizeof (Int)) ; - AMD_DEBUG1 ((" S "ID" Len "ID" n "ID" nzaat "ID" slen "ID"\n", - (Int) S, (Int) Len, n, nzaat, slen)) ; - if (S == (Int *) NULL) + mem += slen ; + ok = ok && (slen < SIZE_T_MAX / sizeof (Int)) ; /* check for overflow */ + ok = ok && (slen < Int_MAX) ; /* S[i] for Int i must be OK */ + if (ok) { - /* :: out of memory :: */ - FREE (Len) ; - if (Info != (double *) NULL) Info [AMD_STATUS] = AMD_OUT_OF_MEMORY ; + S = amd_malloc (slen * sizeof (Int)) ; + } + AMD_DEBUG1 (("slen %g\n", (double) slen)) ; + if (!S) + { + /* :: out of memory :: (or problem too large) */ + amd_free (Rp) ; + amd_free (Ri) ; + amd_free (Len) ; + amd_free (Pinv) ; + if (info) Info [AMD_STATUS] = AMD_OUT_OF_MEMORY ; return (AMD_OUT_OF_MEMORY) ; } - - /* allocate space from S for Pinv */ - Pinv = S + slen - n ; - slen -= n ; + if (info) + { + /* memory usage, in bytes. */ + Info [AMD_MEMORY] = mem * sizeof (Int) ; + } /* --------------------------------------------------------------------- */ /* order the matrix */ /* --------------------------------------------------------------------- */ - AMD_1 (n, Ap, Ai, P, Pinv, Len, slen, S, Control, Info) ; + AMD_1 (n, Cp, Ci, P, Pinv, Len, slen, S, Control, Info) ; /* --------------------------------------------------------------------- */ /* free the workspace */ /* --------------------------------------------------------------------- */ - FREE (Len) ; - FREE (S) ; - return (AMD_OK) ; /* successful ordering */ + amd_free (Rp) ; + amd_free (Ri) ; + amd_free (Len) ; + amd_free (Pinv) ; + amd_free (S) ; + if (info) Info [AMD_STATUS] = status ; + return (status) ; /* successful ordering */ } diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_post_tree.c b/deal.II/contrib/umfpack/AMD/Source/amd_post_tree.c index 3928925457..b4e063d52b 100644 --- a/deal.II/contrib/umfpack/AMD/Source/amd_post_tree.c +++ b/deal.II/contrib/umfpack/AMD/Source/amd_post_tree.c @@ -3,9 +3,9 @@ /* ========================================================================= */ /* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* AMD, Copyright (c) Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ /* web: http://www.cise.ufl.edu/research/sparse/amd */ /* ------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_postorder.c b/deal.II/contrib/umfpack/AMD/Source/amd_postorder.c index 2b1bcd6893..4adcea3c02 100644 --- a/deal.II/contrib/umfpack/AMD/Source/amd_postorder.c +++ b/deal.II/contrib/umfpack/AMD/Source/amd_postorder.c @@ -3,9 +3,9 @@ /* ========================================================================= */ /* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* AMD, Copyright (c) Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ /* web: http://www.cise.ufl.edu/research/sparse/amd */ /* ------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_preprocess.c b/deal.II/contrib/umfpack/AMD/Source/amd_preprocess.c index db635e2d0d..86ea07f869 100644 --- a/deal.II/contrib/umfpack/AMD/Source/amd_preprocess.c +++ b/deal.II/contrib/umfpack/AMD/Source/amd_preprocess.c @@ -3,88 +3,31 @@ /* ========================================================================= */ /* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* AMD, Copyright (c) Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ /* web: http://www.cise.ufl.edu/research/sparse/amd */ /* ------------------------------------------------------------------------- */ /* Sorts, removes duplicate entries, and transposes from the nonzero pattern of - * a column-form matrix A, to obtain the matrix R. - * See amd.h for a complete description of AMD_preprocess + * a column-form matrix A, to obtain the matrix R. The input matrix can have + * duplicate entries and/or unsorted columns (AMD_valid (n,Ap,Ai) must not be + * AMD_INVALID). + * + * This input condition is NOT checked. This routine is not user-callable. */ #include "amd_internal.h" -GLOBAL Int AMD_preprocess /* returns AMD_OK if input is OK, AMD_INVALID - * if the matrix is invalid, or AMD_OUT_OF_MEMORY - * if out of memory for the 2n workspace. */ -( - Int n, /* input matrix: A is n-by-n */ - const Int Ap [ ], /* size n+1 */ - const Int Ai [ ], /* size nz = Ap [n] */ - - /* output matrix R: */ - Int Rp [ ], /* size n+1 */ - Int Ri [ ] /* size nz (or less, if duplicates present) */ -) -{ - /* --------------------------------------------------------------------- */ - /* local variables */ - /* --------------------------------------------------------------------- */ - - Int *Flag, *W ; - - /* --------------------------------------------------------------------- */ - /* check inputs (note: fewer restrictions than AMD_order) */ - /* --------------------------------------------------------------------- */ - - if (!AMD_preprocess_valid (n, Ap, Ai) || !Ri || !Rp) - { - return (AMD_INVALID) ; - } - - /* --------------------------------------------------------------------- */ - /* allocate workspace */ - /* --------------------------------------------------------------------- */ - - W = (Int *) ALLOCATE (MAX (n,1) * sizeof (Int)) ; - if (!W) - { - return (AMD_OUT_OF_MEMORY) ; - } - Flag = (Int *) ALLOCATE (MAX (n,1) * sizeof (Int)) ; - if (!Flag) - { - FREE (W) ; - return (AMD_OUT_OF_MEMORY) ; - } - - /* --------------------------------------------------------------------- */ - /* preprocess the matrix: sort, remove duplicates, and transpose */ - /* --------------------------------------------------------------------- */ - - AMD_wpreprocess (n, Ap, Ai, Rp, Ri, W, Flag) ; - - /* --------------------------------------------------------------------- */ - /* free the workspace */ - /* --------------------------------------------------------------------- */ - - FREE (W) ; - FREE (Flag) ; - return (AMD_OK) ; -} - - /* ========================================================================= */ -/* === AMD_wpreprocess ===================================================== */ +/* === AMD_preprocess ====================================================== */ /* ========================================================================= */ -/* The AMD_wpreprocess routine is not user-callable. It does not check its - * input for errors or allocate workspace (that is done by the user-callable - * AMD_preprocess routine). It does handle the n=0 case. */ +/* AMD_preprocess does not check its input for errors or allocate workspace. + * On input, the condition (AMD_valid (n,n,Ap,Ai) != AMD_INVALID) must hold. + */ -GLOBAL void AMD_wpreprocess +GLOBAL void AMD_preprocess ( Int n, /* input matrix: A is n-by-n */ const Int Ap [ ], /* size n+1 */ @@ -105,6 +48,8 @@ GLOBAL void AMD_wpreprocess Int i, j, p, p2 ; + ASSERT (AMD_valid (n, n, Ap, Ai) != AMD_INVALID) ; + /* --------------------------------------------------------------------- */ /* count the entries in each row of A (excluding duplicates) */ /* --------------------------------------------------------------------- */ @@ -165,61 +110,10 @@ GLOBAL void AMD_wpreprocess } #ifndef NDEBUG + ASSERT (AMD_valid (n, n, Rp, Ri) == AMD_OK) ; for (j = 0 ; j < n ; j++) { ASSERT (W [j] == Rp [j+1]) ; } - ASSERT (AMD_valid (n, n, Rp, Ri)) ; #endif } - - -/* ========================================================================= */ -/* === AMD_preprocess_valid ================================================ */ -/* ========================================================================= */ - -/* Not user-callable. Checks a matrix and returns TRUE if it is valid as input - * to AMD_wpreprocess, FALSE otherwise. */ - -GLOBAL Int AMD_preprocess_valid -( - Int n, - const Int Ap [ ], - const Int Ai [ ] -) -{ - Int i, j, p, nz ; - - if (n < 0 || !Ai || !Ap) - { - return (FALSE) ; - } - nz = Ap [n] ; - if (Ap [0] != 0 || nz < 0) - { - /* column pointers must start at Ap [0] = 0, and Ap [n] must be >= 0 */ - AMD_DEBUG0 (("column 0 pointer bad or nz < 0\n")) ; - return (FALSE) ; - } - for (j = 0 ; j < n ; j++) - { - if (Ap [j] > Ap [j+1]) - { - /* column pointers must be ascending */ - AMD_DEBUG0 (("column "ID" pointer bad\n", j)) ; - return (FALSE) ; - } - } - for (p = 0 ; p < nz ; p++) - { - i = Ai [p] ; - AMD_DEBUG3 (("row: "ID"\n", i)) ; - if (i < 0 || i >= n) - { - /* row index out of range */ - AMD_DEBUG0 (("index out of range, col "ID" row "ID"\n", j, i)) ; - return (FALSE) ; - } - } - return (TRUE) ; -} diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_valid.c b/deal.II/contrib/umfpack/AMD/Source/amd_valid.c index 77e3dea68c..4d05925c21 100644 --- a/deal.II/contrib/umfpack/AMD/Source/amd_valid.c +++ b/deal.II/contrib/umfpack/AMD/Source/amd_valid.c @@ -3,9 +3,9 @@ /* ========================================================================= */ /* ------------------------------------------------------------------------- */ -/* AMD Version 1.1 (Jan. 21, 2004), Copyright (c) 2004 by Timothy A. Davis, */ -/* Patrick R. Amestoy, and Iain S. Duff. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* AMD, Copyright (c) Timothy A. Davis, */ +/* Patrick R. Amestoy, and Iain S. Duff. See ../README.txt for License. */ +/* email: davis at cise.ufl.edu CISE Department, Univ. of Florida. */ /* web: http://www.cise.ufl.edu/research/sparse/amd */ /* ------------------------------------------------------------------------- */ @@ -18,11 +18,20 @@ * nz = Ap [n_col] >= 0 number of entries in the matrix * Ap [0] == 0 * Ap [j] <= Ap [j+1] for all j in the range 0 to n_col. - * row indices in Ai [Ap [j] ... Ap [j+1]-1] must be sorted in ascending - * order, must be in the range 0 to n_row-1, and no duplicate entries - * can exist. + * Ai [0 ... nz-1] must be in the range 0 to n_row-1. * - * Not user-callable. + * If any of the above conditions hold, AMD_INVALID is returned. If the + * following condition holds, AMD_OK_BUT_JUMBLED is returned (a warning, + * not an error): + * + * row indices in Ai [Ap [j] ... Ap [j+1]-1] are not sorted in ascending + * order, and/or duplicate entries exist. + * + * Otherwise, AMD_OK is returned. + * + * In v1.2 and earlier, this function returned TRUE if the matrix was valid + * (now returns AMD_OK), or FALSE otherwise (now returns AMD_INVALID or + * AMD_OK_BUT_JUMBLED). */ #include "amd_internal.h" @@ -36,18 +45,18 @@ GLOBAL Int AMD_valid const Int Ai [ ] /* row indices of A, of size nz = Ap [n_col] */ ) { - Int nz, j, p1, p2, ilast, i, p ; - if (n_row < 0 || n_col < 0) + Int nz, j, p1, p2, ilast, i, p, result = AMD_OK ; + + if (n_row < 0 || n_col < 0 || Ap == NULL || Ai == NULL) { - AMD_DEBUG0 (("n must be >= 0: "ID" "ID"\n", n_row, n_col)) ; - return (FALSE) ; + return (AMD_INVALID) ; } nz = Ap [n_col] ; if (Ap [0] != 0 || nz < 0) { /* column pointers must start at Ap [0] = 0, and Ap [n] must be >= 0 */ AMD_DEBUG0 (("column 0 pointer bad or nz < 0\n")) ; - return (FALSE) ; + return (AMD_INVALID) ; } for (j = 0 ; j < n_col ; j++) { @@ -58,21 +67,27 @@ GLOBAL Int AMD_valid { /* column pointers must be ascending */ AMD_DEBUG0 (("column "ID" pointer bad\n", j)) ; - return (FALSE) ; + return (AMD_INVALID) ; } ilast = EMPTY ; for (p = p1 ; p < p2 ; p++) { i = Ai [p] ; AMD_DEBUG3 (("row: "ID"\n", i)) ; - if (i <= ilast || i >= n_row) + if (i < 0 || i >= n_row) { - /* row index out of range, or unsorted */ + /* row index out of range */ AMD_DEBUG0 (("index out of range, col "ID" row "ID"\n", j, i)); - return (FALSE) ; + return (AMD_INVALID) ; + } + if (i <= ilast) + { + /* row index unsorted, or duplicate entry present */ + AMD_DEBUG1 (("index unsorted/dupl col "ID" row "ID"\n", j, i)); + result = AMD_OK_BUT_JUMBLED ; } ilast = i ; } } - return (TRUE) ; + return (result) ; } diff --git a/deal.II/contrib/umfpack/README.deal.II b/deal.II/contrib/umfpack/README.deal.II index b2d3beade0..27b46ce5bb 100644 --- a/deal.II/contrib/umfpack/README.deal.II +++ b/deal.II/contrib/umfpack/README.deal.II @@ -1,11 +1,11 @@ -This directory is an almost identical copy of the UMFPACK 4.4 -release. The only things I have changed are the Makefiles: they build -shared libraries instead of static ones if deal.II is so configured, -and they put the object files somewhere else. This also allowed us to -get rid of the AMD/Make and UMFPACK/Make subdirectories, since they -did by hand what we do more elegantly using autoconf and friends. -Finally, I removed the UMFPACK/Demo directory, since it is rather -big. I assume that people using UMFPACK from inside deal.II are not +This directory is an almost identical copy of the UMFPACK 5.1 release, +together with the AMD 2.2 and UFconfig 3.0 packages. The only things I have +changed are the Makefiles: they build shared libraries instead of static ones +if deal.II is so configured, and they put the object files somewhere +else. This also allowed us to get rid of the AMD/Make and UMFPACK/Make +subdirectories, since they did by hand what we do more elegantly using +autoconf and friends. Finally, I removed the UMFPACK/Demo directory, since it +is rather big. I assume that people using UMFPACK from inside deal.II are not interested in this, but they can of course download the full UMFPACK distribution if they want these files. diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/ChangeLog b/deal.II/contrib/umfpack/UMFPACK/Doc/ChangeLog index 1dd8c66b8c..c2e258b87e 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Doc/ChangeLog +++ b/deal.II/contrib/umfpack/UMFPACK/Doc/ChangeLog @@ -1,3 +1,79 @@ +May 31, 2007, version 5.1.0 + + * port to 64-bit MATLAB + + * Makefiles updated to reflect directory changes to AMD (UMFPACK v5.1.0 + requires AMD v2.2.0) + + * Source/Makefile and GNUMakefile moved to Lib/ + +Dec 12, 2006: version 5.0.3 + + * minor MATLAB cleanup. Renamed umfpack mexFunction to umfpack2, to avoid + filename clash with the built-in version of umfpack. + +Dec 2, 2006, version 5.0.2 + + * minor change to umfpack_report_info: does not print timings less + than 0.001 seconds. + + * bug fix for complex case when using a non-gcc compiler (simplified the + scaling of the pivot column). Does not affect the use of UMFPACK in + MATLAB. + +Aug 31, 2006, version 5.0.1 + + * Minor correction to comments in umfpack_get_numeric.h. + +May 5, 2006, version 5.0 + + * Tcov subdirectory added. This has existed since the first C version of + UMFPACK, but is only now included in the released version. It provides + a near 100% test coverage for UMFPACK. The code isn't pretty, but it + works. + + * now uses CHOLMOD's method for interfacing to the BLAS, including the + BLAS_INT definition. This way, the UF_long version of UMFPACK can + call the int BLAS. + + * revised to use AMD v2.0 + +Apr 7, 2006 + + * Minor correction to UMFPACK/Source/Makefile, for those who + do not have GNU make. No change to version number, because + no code was modified. + +Oct 10, 2005, version 4.6 + + * umf_solve.c modified for the complex case. A, X, and b can be + split complex or unsplit. Prior version required the form of + A, X, and B to be identical (all split or all unsplit). + (Thanks to David Bateman). + + * added Cygwin to architecture detection. + + * added UMFPACK_SUBSUB_VERSION + +Aug. 30, 2005: v4.5 released + + * License changed to GNU LGPL. + + * The Make/ directory removed; configurations are now in ../UFconfig. + + * requires AMD v1.2 or later + + * added UMFPACK_MAIN_VERSION and UMFPACK_SUB_VERSION, defined as 4 and 5, + respectively, for version 4.5. These macros will be updated for all + future versions. See Include/umfpack.h for details. + + * function pointers used for malloc, free, calloc, realloc, printf, + hypot, and complex divide. Defined in AMD/Source/amd_global.c, + AMD/Source/amd_internal.h, UMFPACK/Source/umfpack_global.c, + and UMFPACK/Include/umfpack_global.h. + Compile-time dependence on The MathWorks "util.h", ut* routines + and ut* macros removed. + Jan. 28, 2005: v4.4 released * bug fix: when Qinit is provided to umfpack_*_qsymbolic, @@ -9,7 +85,7 @@ Jan. 28, 2005: v4.4 released ordering and can use all 4 strategies (auto, symmetric, unsymmetric, and 2-by-2). - * umfpack_get_determinant added. + * umfpack_get_determinant added. (Thanks to David Bateman). * packed complex case added for all routines (previously only used in umfpack_report_vector). This allows arrays of ANSI C/C++ complex @@ -344,7 +420,7 @@ May 4, 2001: April 30, 2001: UMFPACK Version 3.0 released. Changes since 3.0Beta release: - * Long integer version added (umfpack_l_* user-callable routines). + * long integer version added (umfpack_l_* user-callable routines). * Peak memory usage in the numerical factorization reduced by a total of 12n integers (8n temporary workspace used during numerical factorization, diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/License b/deal.II/contrib/umfpack/UMFPACK/Doc/License index 2347e22ff6..3ee02fd2a0 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Doc/License +++ b/deal.II/contrib/umfpack/UMFPACK/Doc/License @@ -1,53 +1,38 @@ -UMFPACK Version 4.4 (Jan. 28, 2005), Copyright (c) 2005 by Timothy A. -Davis. All Rights Reserved. +UMFPACK Version 5.0, Copyright 1995-2006 by Timothy A. Davis. +All Rights Reserved. +UMFPACK is available under alternate licenses, contact T. Davis for details. UMFPACK License: Your use or distribution of UMFPACK or any modified version of UMFPACK implies that you agree to this License. - THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY - EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. - - Permission is hereby granted to use or copy this program, provided - that the Copyright, this License, and the Availability of the original - version is retained on all copies. User documentation of any code that - uses UMFPACK or any modified version of UMFPACK code must cite the - Copyright, this License, the Availability note, and "Used by permission." - Permission to modify the code and to distribute modified code is granted, - provided the Copyright, this License, and the Availability note are - retained, and a notice that the code was modified is included. This - software was developed with support from the National Science Foundation, - and is provided to you free of charge. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + USA + + Permission is hereby granted to use or copy this program under the + terms of the GNU LGPL, provided that the Copyright, this License, + and the Availability of the original version is retained on all copies. + User documentation of any code that uses this code or any modified + version of this code must cite the Copyright, this License, the + Availability note, and "Used by permission." Permission to modify + the code and to distribute modified code is granted, provided the + Copyright, this License, and the Availability note are retained, + and a notice that the code was modified is included. Availability: http://www.cise.ufl.edu/research/sparse/umfpack --------------------------------------------------------------------------------- - -AMD Version 1.1 (Jan. 10, 2004), Copyright (c) 2004 by Timothy A. -Davis, Patrick R. Amestoy, and Iain S. Duff. All Rights Reserved. - -AMD License: - - Your use or distribution of AMD or any modified version of - AMD implies that you agree to this License. - - THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY - EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. - - Permission is hereby granted to use or copy this program, provided - that the Copyright, this License, and the Availability of the original - version is retained on all copies. User documentation of any code that - uses AMD or any modified version of AMD code must cite the - Copyright, this License, the Availability note, and "Used by permission." - Permission to modify the code and to distribute modified code is granted, - provided the Copyright, this License, and the Availability note are - retained, and a notice that the code was modified is included. This - software was developed with support from the National Science Foundation, - and is provided to you free of charge. - -Availability: - - http://www.cise.ufl.edu/research/sparse/amd diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/Makefile b/deal.II/contrib/umfpack/UMFPACK/Doc/Makefile index f4d62abbee..41cf07e4c7 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Doc/Makefile +++ b/deal.II/contrib/umfpack/UMFPACK/Doc/Makefile @@ -5,9 +5,9 @@ # UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. # All Rights Reserved. See ../Doc/License for License. -all: dist +default: dist -include ../Make/Make.include +include ../../UFconfig/UFconfig.mk #------------------------------------------------------------------------------- # Remove all but the files in the original distribution @@ -19,6 +19,9 @@ purge: clean - $(RM) *.aux *.bbl *.blg *.log *.toc - $(RM) UserGuide.tex +clean: + - $(RM) $(CLEAN) + #------------------------------------------------------------------------------- # Create the User Guide and Quick Start Guide #------------------------------------------------------------------------------- @@ -39,7 +42,7 @@ USER = $(UMFPACKW) $(UMFPACK) SRC = $(addprefix ../Include/, $(addsuffix .h,$(USER))) ../Demo/umfpack_simple.c -UserGuide.pdf: UserGuide.stex UserGuide.sed1 UserGuide.sed2 $(SRC) +UserGuide.pdf: UserGuide.stex UserGuide.sed1 UserGuide.sed2 $(SRC) UserGuide.bib sed -f UserGuide.sed1 < UserGuide.stex | sed -f UserGuide.sed2 \ | expand -8 > UserGuide.tex pdflatex UserGuide diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/QuickStart.pdf b/deal.II/contrib/umfpack/UMFPACK/Doc/QuickStart.pdf index db89a759ad9db3b97f37c99ff737ea9bb779c66e..ffb85e21322b9152be3f62fbb9bcbe09d8d50369 100644 GIT binary patch delta 118369 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

n1Q?(@mZ`(rEcyaXM=jVi9UC(UWSX zna8}K;$7U)mhhW{RAIz^Wk3%zXVhoxGdwT`;JFith0Z;ad7z?4yEV$2+}W+OL2qvm zQWbyM*dvN3O#?nlbb#K|R`lj`_E*W!Hdgm^u{nlrwcv!jNIcx!-D@4nQn`!EBdhXE zuBYc`*)F;a8s4FNE-o_X>uxKpaQz>(P0-e!#!!O{wDJzZYC^&EEPzj~kcoz!is@}Q zMJ4KB_Un17^0{FAm(?I?Q2&7ARHde9n~f8qkPh1On@A8@z5%&5pX4i!v{)$I%y;b- z63V1n8!!%95}N5htKq-$Wu!DN3{XIm+N5*HQr?S?uBFwxpAtMh@e8(?MRes>iHV)~ zN~O!4yMwC}xo--txBye|3Ke(OPzJ&iEk>g*s>4l)NST`%u14AD*%?&H)YCYV1u4w^ z7>yd;sK-{xHDES>$LbQf@9}Cj$}HV|OX`F?6R& z0(0nfJh#Rx`OnzYHS$ZCyoJPtCB^-!hyD4oN9%_z;{DckMni9BBGptsXOVNN9$f}| z^pu(p$5hu^InDyWOPa7McR8R0HObM*aBDevvpy1U=G!~Jt1)d&8Z5)rz=Mu$W-oja zSGw_;Ndq!Q+vYbIcwt;b#goX$Nag}>rE5GRscWLovi8I**H9uwO=UefLl$S)1299u zDJyVQ)Y|8X4i>_zHt}y4~ZY1N=?Z~rpk1hFkBpBVJQu3 zlYg8wvkNs5^L=;GNC(%lydv)J%(rh}x--sZdN#PwbF|%`d1$;lW_qqze>y`z7%`Rz zjWdUS(m?NksIIrF$L*N+FirdY&{!tdX$W?xM(d4!wyNy#;>CYmwi7=!4mg@n=vsY~ z+rsj5+*2I;c4V^}@uijx=UdM;fHVsKm+G%qFb8Mn=Kh!NAJW=(UHeD(8}_*!6*opu zQ$ULFa=J>#yS0iW!#@*Wx?`VaW2=-fSM$|jt* z#=crnLM8u)ZtD7zAQnoXo&3#H(ZSKvS#T4||Dt5?JMZ>3Pu9bTiKngAQ%OIowYfqI z-S%#F178mh_iMfOWX}{w`Z4aYN%zMGv#8(+g^MD9Np5~-XpCu{h7k!C>a%qBhp6=2 zILOM#`#$NwDE$ty^KYUoYDr%6C`u|~KH|K!wIR?B)veM^7Rz|u+&1kz1BN5Z?26UV z^huZIlmI=0ZL5)Jt8hBVz1}hw8f@bmx%NSGBi)VY+aBtux*s(RIdTK`p`C=dKkS}~ z-L!=OeBx!nm(p%@v0ynn-C(8n!}B1pkHHJyL2HiXcTp&jSKLaTt z!8nPHSY{2ZmK+^&k%>Ayn|d*Y^O`E!fGH2KZCF%*5*mIY1CLfep3D!@Hq!lznW#M2 zJH{k<14LIs?*8}hLmTbTJv@!vYJPY>1K~EOlvO!-vFf1%VKuD6Lzv$SG-3*$>e@~| z@+RuSpXud7Oy1$ z4A`lM1sq)PMbQJnmw#!{r*(2hYZS9vuqMTkP1{G3I4~_1ty@H% ztLRhUis^z`QFI79>F9`3{q%|92FarZ=nh0!j&%20q zsujsOfe80Ee*MlPln~T$I@jE++MsP=M1|;N{3MC&s2F|$#_B%ttho*K460m|XM;_8 zgp`^=zhQ`ZY79o^w`eP6M5<_5c1m;SPZW?ilaI3g?Q~>R7N0vOQ@B01=+*|rLJ|l5 zg}pv=-PCHw#yE{Osx`OX$%ZW~Dz94-CRRpm`;C^_Fa5hTFT2f8?NpU&g<0A|F4l0}ai57;@Nn>-E44=RSA2 zn65xS)Gaw^+lDr6GjsDQXmNy@U?pbWG#_;jjJ-xK?nV4EBHm#M1ab&KjTG#d&~$_7 zU>AWl%BPmpf|E_;L9oDqZGdY0FX4Q|7&Kb{C@jdigQqYykRNY#sfG(JijGygT1-zd z{ZB?dQK$$N1n_bcn25732Js8ts^Kri@$PhWYlWjH)|Jd1taUu{r`75b1^C_Hk^(fJ zZz|>zS#0WrB=3M%HWXH%HU7Avmh##~>&U=O(*OyL|26Jm}B zYFZI<3Jgj}_>Vc;)pFvZi4?v_bLAPm(j+{$^1?vu^tV$i9Q!T64+D}U?ot<@#h=>Y z@cjKlIstPc^BZi2#BMGR;PZK~S*Fb9&z)YJFN3<{k4;k1)10`L?60D0DLvKWj`Z3W z@REUC?xkEOs)Hla97h$Hp}ym*FFpZKj$%eZjT*hJr3~NjI}3iPa}wrlA+V-z|M=Q* z@9$&t#pVAy^8+t|XDMk@us)&wQ{k{)v*EGg6XYC?Cjbbc{vX3k5I8Ff+kXu)|2pbm z*jMNu$8Cmdw>BEWIPd0?ew3bDl0zvf6rTzn1r*aeuBm}QBch{BH{i`R8-{AEaQs?c zG(FGPKi#?^;DKz+Jmns)WyTMF{(cOe(Wdb9-^LI8uwsHRI(Uka)2qCvB8ZiIcMMs) zbG?2tN9M|V{wDC2gbPrhX!6c^?0&k^$OAs`9lK7uj_gjXMqlT__s@*_d|SqSJ)^m# z_gQYLDEPx}$NkzEf$)$E4bAQ*z(=(pe#(A&L1zgZF`j|%ArxRI6n0jhcdw!4 zc_~5OK9sQMWD7b7AqgW$v+g?I+#89kS|1jT49ec05H^@9(O8kZ9`Bszc@Y{%YbPH2 zekj3s4g)AnW)Itj7qbNwPI6plm2HNR5kJ{WwYB%C^q zxH%px+>i!2fHHDMp}oG)Dy|1A95rLAt&pZd`V4?nX)-2oMxtIqpjS#O;oWo|E1oHP z4x3f|Jpi0(cwv~qZwl5Ah85>B7i(J zbuQy?(uAW^;wpbnbXR8mo!M;;igw6N-d0Lo?I$ARF2pRIZ%e>YwZ8{-7i?m|tx$Y; zZw}Dc|2cwQ>1>_GLBGisRvSnkq^;09TwVxvZ=fP|Vjoj7Hr3|?p zbAR!@b`IJa@*Dxa@6>@VH|-c-lZk1Tn-W%s6nir0J`sPt_iBWD7ubbGDT5mPUlsO<^{tB%0tt6|ER<2E~!v zt&R7%g{|yoBT$cDaW9>sX5Z+nhqFeKLK2~i%IW#n3tw}Y_2c#^=z9*How#Xk@%ms~ z;PLzCptY|n4{g}Q#AKGMK*CrH>ABo`?6ZiQFd}E@C=*aRM=M347vjOaw&1OnPZD2wxHO1 z{%--bxneWg0J^GM)e77X^SxH3=Y4I{mz#P2PmI+MhBVix8u>80% zezbI4!Ho?cHTgOFi)vcBZPAfg2VP~*!#;lU$Ezvz%rZQ8;e1zD$`mO51gpHj{z5Jm@TiBBSemdBt#N##L!u` zDr{A;vM1<5Zx%vEpO9NB?bwIX*rl{oTWk^u*Z1T32+o>qef`hJzb{vpXYZSL!kc-2 z077bY;D+oDu%5*VkJfeUMSY(n`i zNglQtL`3CD(fHv+BvRE4-ohm`HvV4BtLDHAUF{%`rDPqsDwAkF5ol%bot!HMn;a4{ zR0JuVr>97t8s>;Nxl9dq7cjU{#sVH*@jO5x2Bu~X=U z6Vw*4apO1RKrq3jvXgPFEqusQ!1R4v)X?UV7pg)F;;x1Vyw^o?v=$Lsjf7%5dPQFj znxoUAdqaakI(={VHN}4*)}wxLtf=Uh4{`8uC4~q-6_t{ZUyY}Vn74v1*-m+wU9$0j z6>8s|@)2hN)N6&=31+`woU53hF+C6;RKg-4Af;O!%Z7+_i7U0U5f6w~WwW-Tj26ySFgc6Wbp`KsZu|Mym$W0x=S8r+dALvxWJW3fd-LQRFPy|E4{N zf#^qUWS>*cxB$`;$g;SDIK2Fj=Uyt{@~&^p^xa{kn0^td_-A;1EeA5-Rek?2YEUK# zx^!zX3FKcuGYor_2MujNBT6pQU+__Tw$@8CbNjj|#Cba?9v`?#Z*I+u(W{bLev*&! z=ulSI?-C&l$&563`hRg+GQ(Z0Lq_`tVyiqaC6p>@!(2|Pua<$C+w$p2)}m2><}-~0 z>)*oQ#q>m8Jwn)j8ss_RMY!F_mYcBggq1kl%P>a#_0`cY9%Wcd{lfM5nk`T)_QEFZ z@{>=-6?@LkP0@tGAFSMc_C00@SF)T3Ii`tvyj9OPcJi)hI>Vc9>sc@JfZLi?^8yBm z4B&TUCCJ^wp?)BW#A}MVQ2;%_jlDYQdamp5$0-!JtbO+R`N`^t?hc&t@|?!w^5%t1 zIA;Wrkl5S3$zg&DZfdFc;Q42-S^=ctAZ)kgZ8sUrR&7yc&<5H>zhaReJkYqG8)wz6 zQ`RrP3ZcEN*8CY84!h6Q7ASybjNI7?odL6vkF#vp^>Ya$TeD$8J!OmlLsD7+gMQX~ z3)bavZI;|;$$QtuX@^c(eIO}=e>*w(w$ggpC^7FD-V!O3B9qPfgG+*TcKFN`aTQA0 z5+hSby!Uh0l&7P9L+<>Me|rUXtG@D~mOm(5bTu7f#^toXKhJEl zo*{jQ{>=lxqtD09OHNhEpfm3Y-E~0xzR!bM?&v=Az$T>=uglIUE-L|`=%Ata0WN&- zlnA6S`M-vpDiaHEmamC?pFcG~Q(kpn0;TJoR!aR(tFuSoo<4z`zQ|=1b~U!cuqWW%=V5&BWdGf~hBY$$J-{-_b8m~N9S?zL zxyxYT5}7yV;#@kse*V5Ch|_!3kXqdl4p8em4x<GQx!dq z9&By0#SN#MabXeC;)!%uL_P6R=4Ir5k{f^LL*U_s+c}u2yzAVLq1A~nI<=7tQ6$6J z5RV32N`eMMtY&bbf^U;DsdQa}$w|X@)LkLXpd~SAJn>ATV0|tD;b_ZE;)wnFUU)k0 zk9SLf_+y-sSk4tFl|)igqDFPn?pJV*_5%Yaa@SayQJ?!tUpeIz0cn+VJ=4c>aFefKwn7_DWK!TslPs(4ovk%=6ZS1dwHdhUwTG z1eJ^}Twrb|`%+wbwklAm?&}<~+^Esr<3G^!*4YvDKB$o|(jSEbP_su)=gmykg&#=x zSHJ?9Qv(3V#-8F<)P43UaBcZ3h=ew1+Cw$Lzn2-RUe9ZYr|5`(DeP1CWo~sxL#ij5 z_Uk$+LWIIdlA>N86{#${@%-DXs%?G8Q@}9a&Z-*Jv%>8$%p*ue4dE;L$V{L6WZO1RZ`Th4B0^2r@#g8>8vo#v`b4`aJmZajuIz6iffO9IR+gTMw$eKGcr|FD~D(TY_ z%LkuNPJBrZxm>j3Z$#kAqAIQTjiF34X&Oi*{P6(Lp|G)peFVG+_3ALi=n*7;Ay@6Dt{ zK5Ap>lWKW8(+RP>LUdtI``Y6W-l#J_Q19onWk=jtPsFgk6HGG|l47$JDA#b~6Hc_k zrz%G<g!J%(Bq(j7pP1bRs z=w~rG(Wn#E7~Wr!NhH6=$m|bc{vHs>tQ%^};kLB+DHt3A98W0es^i2)^6e`=2H<&H zew1?F`A_=OcHKGABR|5Ohrmi#%ABAlo|s3T;r3NBA6uH zd>5XOoz1$xwrH2iA?}G~&|Wckb)W!$pt`yRZzzs|B(Z#(W>kJ!;%4LqbL_HGR(S!@ z(pc*-+%b13IZ~IXmD`+GwU2^aDF(a60FJxxG3n2RCkh((OFIS53BJGf&i>xKUC*8E z+IrJhN8c-6|1PiI0a*Z5AXe={1rtf~#-dbskbi?{CnAR&g`?0h)a+CX3PSEiww^1K z1dEfMY)>c@nH`T@>^_uQDZItl*4UjQuDs3^Vg^X}AgaDy1PY4kd2E0&A(APau*qTg zRjm3m_2fY{9M%ndtA{ZrmX0QC&g4%uGqFySrMi0=@&n^Kh zT#*Ne9X%5u)Tf~NvjoevGe)e7Z$K1F5I+nt>wrXg-bl+dep{_6h=u<=0F$HPf8NS=ixWXs~h4z?&EaMaYrB zyOnTsw%No15Tf`{j)`9e*4hO7gR>FHMDh=-%f~pCN8kqY{T(Z9S zb(wGeggd|tzpPWBV2dkS=dvHrrJu9R)8&fFa#M2~un7@M%haHQtwVhI=CJR#^a|k- zH;P=Yll4Yee*W|H75WGPGlp!0=<#mUSe^D>HsyYEQG5}|$20P?Hxk^L-J9cA`C@qy z4CvSXJPBmu3O1Kig~nvR8zKp~MEDstT51!lb~2!(F~jr9p4{fJ2bkJOln+C2C?}pF zbUx=y)fa|RXr^0PfBXt_b9PjbW_U~^f?ZW!aI*{1DI8HvPmAmRt+$isDlyl0UX7j1 zYCNUPMkI}Y#YwtES7YBioqB4eI_Ebfi^bn17NOe4u0;_;F(#DIG59f)SY+OCA=fg* z99F=pdc=^8$G441%O}~J($dmFhe-(@UyXX^O6jVDnh(L!O9a95Olh*2ro8BI`RaogRr zWyb9)s@`%>TH*K2v7yWUVd=m~G=3wW4Kup>UgE+eD!(6k@xDB}eMMe%?ATuWw^ER7 zJogf$;K6`mLcR=0XhG2Odf6Qyz5V}CWV?nc;QDpu#k?Vj<^!?fmK0#VS0QxDO#NZYhRj4M#HQ{vlX{RgE1SVhpXSN`ccOAUnbWk0Jb5>q%~@j$mop9E=I z0Zx0;uhL<$`A6e4Fw;5pNjXo7mjru|7Ff7xZGl5kpcOzI=~JKc@xnAqaMX$6+9l_J z{&ex+g-St8jKJo{^JA1DhhQ!=fSOV0lmUX|v5C70>+@3M`9R}W$B~F71o+2GO9UGj z)=SUKD1S7pL_ul&hwa(Q6Tsn`@RZ|>uXTLH+tjhaD}m;;A>wqOLRQswDWkfl@0)=1 ziNIrFpF6-w#ZLtGS<6Lg_nq(t!6Z+>@cw-39=0DAaHH%d1B()UvE`y$A78|7TKx?$ z@^-QkGkx!#0NA06QG{8B*{Ll$^fYB^)aIpon@js1b9O+*)_>zfc9ztw^lca%N+^Fj zigufhFV|263mo~lBPdYHE#?ODJqsIB23Abury~G|Ub4)?0>bEPYZg3&KP(|5SwhkQ zp@4{|&W{lx%!4w}dJ+Z#?VLHSCi!?_Ab)r=rxwJFcop#*QRhyjk)M?4s_9^l;=R5u8fBnmc|p6c>L)0cdT7DIc__6CSd9P|Y8mNccBM=4xsdhkNDuZeHsaL9 zSS)}nGw6{#nBiboF*>PAQtO&g4?&5XMhXxi>ax7tRZzNQ2Pby}O?w z$Ca9ja$qEEaV=O~YI^vN{^)5g$i@pS=O$=a zbF+|E#zNS~_|~R2M}Z2rLm*RNL-Ur`rV!YJR{-eDBXqHDh#E*`s>fdGmSdvUx+>aZ zy6XpDF;G|hSV%oZzyb9lk7XS)T~_D@7OWyF;$oV=22&zw?1%Rq`Jw%LlaO_522(?vBlR zb>z-HTrNwil-}UJske+huSfH^1SX-vy~Pp300ueqVUd=4LaelEc?wf;{CGA~6N|yv zg16m!#$)3jDnNIa|4=${;A~&F4LQ3q0j4!is$6KON$fXsq%F}ouUefCW9b!nfj(>~ zu-aBqfsjJlf0n-!)$SnHtF|bbSUJ^k`A%I43ovYV@(RN8&iC2zUD0vot~xOxTINb) zA%*X2TVew)4V1hW2*V1m_*i=kPZRobz5M_Sf=CjgO%&soG=tao=!B0U45|G0fM}N2 zmXskgQ71mGcHNIPY>$^dCnj9>7UJ4TRrB;)vj@NhT7zG%QOE37! zp|y1O^*)uRFcn)2h3CQp*oRWX{L>}tOvLc1d)CrCY0?Jy{q z0L75H#>P%COmyZAQJKt>tE>)62$djG%!ZSgZJs>-=?+>9mNIvSJEK(yW1Ay?f8pD1 z*`)aiTGh_%RqdkfxG0XM=A(1h2y;eOv!gs_(WpQ!c`YUluRY@iu#Rpm3p)@_9jR{E zUjLBQ%;9I-5)=9!*t<<>@-r*Y306I@iAP+;dZNIFwau>iRF^Ps9y5;+dFSsor6IV5 z!c|LskNaQP#l6XSB*|pZ(WO6lB3)qKq*mT(s{eW9Eu1D2nlvmO-C-%%a;`Ei^42=60^Zn zTi0%m7$9ge$$H0{dR#S(Dcuj``0WwJ!drX&#ZUR@lcbSd9Y!J%UpYzGDHnw3i&Vmx}U#VS3`nJ05WI}0s;Xgea{4_FL9fz zizeRw?%tLVw_7UZO$M)QJ(S6z^FawcV-;5~C7Vj5*Q(Y*eZkJA* zxy-ZGz+}neU(*^;F|G}yKeY+{bXwd@7a5<(CNG85&9w)JS7M4g;SAOD&@6unQ zrC7u~);#RwgN+bg2RwI;45DJ8!u3iG2^2W+I+e1A0HhB6CDThR)HtLR?*2192KD2ZGNOSxEg-|^eWCu2Q{fBnO1M+&CL2xl~6aBNg z1&(`vT}naHL@eDiC(Q@3AhQ`r^1E0bKRRa+G+~gT8T>NfJ!eH>UkSyxY`?~Ls_SXv zJTF4BBqqu7?;kssy8a0lNmbtyg{rdS)hRQJu+#SMIS9jBt?56%r}PVV;=YBY{AN!k zBmc$JqzF~b>fzHPC4GoQ+NO1$iib+4X`q}pUIPdA2Sk?Lo zmXn8Oeu1M$$QtJ?2}hOA8R$|RY36c}aKrxwc5xtC8Q&R*$3F2L?3^C96>^9o;(hoC zz8~2I&2HM{5(}{4$-kTzb<@=EK@rhJDS2!FI(*cOr^kK5ihh@Da=7>BGE929ZsbK~ zs2A{PznzWEP?^hrGlL<4kuonNAMv_KUi~wz$sQ?O)tBW@s$+ot!|UQ6Me8%>q@$x| z3o5m@Sbb?AWC3r8nrkYs73 znTUFn4CNrKiuxy{9t;g99k<{dor0S-F%iI_OEDq~e;5nKSU09x>FJLOSFO!Y>l3+P z!e(lLJIz{C3V1{!xRPl2(~KUJA#v#~=1^EcqU-8Wqrwz|{P;zqb!Ms>4G1?qr6u~< z5ONGW&ezDy(F9{z2j&R`5xb^1tAI4-ny?gQg+Cc3Y)tQt%OiAewn zYdrfMIHdxo=#=9iYmjex<{cBD@0Dn%)w~L1kFR-1xSO^3tdPs(y}I_5jy5gvGh0C9 zP9=#IS8A2lo;*Ex19WoKsL$Teo<}PipQ3o$^1CT$fz_%%^OxkA$rC!?I&}3vG9+Wh z7biF0zmr>%!nM+wNKG!2j7OowU!4GOgWVEGi_=nmJMS;d%%rYN!_YVW5p*!zTvDH1 zYk|Gw>z6htPIRyCL3?o%TEXKJeyla;ITsSFeT`N!;fx7f91F)?awO$+w#qk6AsgU_g1@&IT3{-YD&0=4`tK-qu=-ZX$o4SmOK zCUpN}%^R3SC;M1XM@9PD z0&^Xl$S1@%_ThG!wssC*BJYE|7PWl6ywQzy51YQO()x*NU%QXsJxCC)AJ-ItfBf5( zFHHXfg0h2!n%SZlvgZ_S__mY8m(Rrxzusfhra|0J@uE30fyra=>W4J|FAMVY%_vai-ct;vVDhp>2=@(Ykim=|D-zWqlaiaT5>{m)j1CSj15@ z!wG}bRi4Sh78xq$>!`m^%C&mM_xX`7uqu3Fcg2Ww5~mlwY>ef;%P`4V`UDv79Rx30yZJgU7KB(_!G(IH>V3$Gxjo* zJr9jejx1CP5g}5$uFG%T$ugb^q?%*Wvg9iGjD_WTt#rubs$Xmrr39quD!X4P7t%L)MX*Bghy#5DG*lp#jx&^XO5)WR zWg_nI!?OARAvwqPMEUr2&*uEeM4)7&o=tGC%+cNaMAg^pqZfT^sG9)xhmbqLH}PI+ zS-4t0+&K?v#o^c*^O1L&s1xV-^jMuYp`TUA+jcd6`mU#F}MzFA-SnKM&=<)Sw# z<KeK2m$bYf#rI)J3Hy}dD` zn7N&sF{7H5`PaXkvAv0zF{73>qmnhFs|3Lr3VRUn` zHg>SIGyhNMUzk4TE{=|NU$MWv?aUb+9nAkL?dJL4`EFJ&=H`xo|AS`X=B?Q%3@G)M&Sx-z=j8M|6BT7HEi zcQbckbagX!VRSNf!E>`VwllM~uwWEs6k!x)6k`-;lwg!(lwy=-lmWub5z|}P8M`q$ z7`uI~A?+Alt&ClqzDT*dn3&r+dj2bAY~tu)&S>Xq>SFDbUdszglAc`#`VGKn=IHhh zW9$EuuwnExw>EeAiimFf)f^9VQ#VH!MmKBof4(gdGYdB(gM*`+nYjfKGY1o+tCO** zIphBq;Ur?_Wd0%r_}{cRS^s~O*8dm63jOtFM9g2k%=iEl16Un|0mjJ=910=_V`Kie z(L%*q?VBc+c#1}_4vLO&k-#7oDy%e-SwUc+80lbeU_FiL5u^kKt8<2vh;Z$dOcNe` z-K-9}9$c`jdKw&w1}sDCj)a;LM1qd^P*pHIzEVQTbHn@Myf9ZvYDjVmHQ≧sur`Me~pX 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

    ohK$fQnv**Ui*7_Rj^cQvndI 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 0 and n_col > 0. - Int Ap [n_col+1] ; Input argument, not modified. + int Ap [n_col+1] ; Input argument, not modified. Ap is an integer array of size n_col+1. On input, it holds the "pointers" for the column form of the sparse matrix A. Column j of @@ -384,7 +381,7 @@ Arguments: total number of entries in the pattern of the matrix A. nz must be greater than or equal to zero. - Int Ai [nz] ; Input argument, not modified, of size nz = Ap [n_col]. + int Ai [nz] ; Input argument, not modified, of size nz = Ap [n_col]. The nonzero pattern (row indices) for column j is stored in Ai [(Ap [j]) ... (Ap [j+1]-1)]. The row indices in a given column j @@ -611,13 +608,13 @@ Returns: Arguments: - Int Ap [n_col+1] ; Input argument, not modified. + int Ap [n_col+1] ; Input argument, not modified. This must be identical to the Ap array passed to umfpack_di_symbolic. The value of n_col is what was passed to umfpack_di_symbolic (this is held in the Symbolic object). - Int Ai [nz] ; Input argument, not modified, of size nz = Ap [n_col]. + int Ai [nz] ; Input argument, not modified, of size nz = Ap [n_col]. This must be identical to the Ai array passed to umfpack_di_symbolic. @@ -840,7 +837,7 @@ Returns: Arguments: - Int sys ; Input argument, not modified. + int sys ; Input argument, not modified. Defines which system to solve. (') is the linear algebraic transpose. @@ -866,8 +863,8 @@ Arguments: For the other values of the sys argument, iterative refinement is not performed (Control [UMFPACK_IRSTEP], Ap, Ai, and Ax are ignored). - Int Ap [n+1] ; Input argument, not modified. - Int Ai [nz] ; Input argument, not modified. + int Ap [n+1] ; Input argument, not modified. + int Ai [nz] ; Input argument, not modified. double Ax [nz] ; Input argument, not modified. If iterative refinement is requested (Control [UMFPACK_IRSTEP] >= 1, diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.bib b/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.bib index a84b90d7b2..540f12ed63 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.bib +++ b/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.bib @@ -54,20 +54,20 @@ @techreport{Davis03_umf, author={Davis, T. A.}, - title={{UMFPACK} Version 4.4 User Guide}, + title={{UMFPACK} User Guide}, institution={Univ. of Florida, CISE Dept.}, - year={2004} - ,number={TR-04-003} + year={2005} + ,number={TR-04-003 (revised)} ,address={Gainesville, FL} ,note={(www.cise.ufl.edu/tech-reports)} } @techreport{Davis03_umfquick, author={Davis, T. A.}, - title={{UMFPACK} Version 4.4 Quick Start Guide}, + title={{UMFPACK} Quick Start Guide}, institution={Univ. of Florida, CISE Dept.}, - year={2004} - ,number={TR-04-005} + year={2005} + ,number={TR-04-005 (revised)} ,address={Gainesville, FL} ,note={(www.cise.ufl.edu/tech-reports)} } diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.pdf b/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.pdf index 3509a087aaa02c852019078214a7a9f8c32751f4..5fa49191f74b292c76caf940b6a9599806c0b0e4 100644 GIT binary patch literal 400091 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�!aPo)5cxt29Nx+MVI}5)ud;Ve5 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

      br^c58x3aAnw8g;DLH-> zfUfh?o`~<}hvt4fW8bK67p=|7`7dnzTyYWSg91VXU@#47{?*R%4gvN;4z0y~-rfF5 zV_QSoUBFC-MBU_MQWqnHj}A(i#C2fO*lC}yCR1`I4josKz!IR&Jmi`y1ayQ66meG$ zOg%*k;NV!ikwkkK2Rw>c50o6eM25s*ujh@GOg5!QDm^pluy#j675EeffO9m39pYV9 zvpAjExC^K>m>3!{L5ktTL7~wSNJIeV;Om^Ns<8anNhfP|Lwmd&OJOHq6<73nu+BpZ zMc|Mk&PNT-ZXWa+Uhg!?dk`r=Z5(YKj$$;Li%lWog8pHMQBr44uwqN8-|^YW({bQH zT#h+tXa$ktL0FKHa6JA=IL$D-c<%W2>te19!;bVb%nSOVqnwj4wQB7I=n&+l$85iw``Egh@&5N`Hj4 zps!8G|GdY^#GYP$XA(wFYwZnUaLA%@7gwqym|C(FbHfkNfRzZAbavttAF*>*+PlRj zqWb~kbPxbS0yGX{yni=k2l12*1L4H@orwd~RfY$k4nUsU{>5q!zCsU9%oFf#t;)9O z^5-6KO~(2VmFTCtkC*r7+OHC0E>cwRoX7l=@uxZ0G%G^Q>+qLGO@5Xt&@1=AMD}aI z%Vv0aHtz*{Yr00V2V&~on_~kur^3eTiF`@IS8E|u{y!b7gpNZ|>Vz8bwniGJ^5W*m zoOat+vB%N^`nN~N)C%d~Rt?}e!(#0Bg(NP)nBFG>Y}hGo%CnnD(KDeyvr0omOz70G z-}%-2*+t0vabk&*D8sdC;DMaozVeZGAaxsI+48qm&SWzRrV#`3{_j{7t+38Ghs-F# zm2YqF;76W3lBxxLzd%<(hd1R?=7U}94aI+TMriRijg}pU$h1M{K&|0;kaKqevr7u& z&?otxk`KfJRM)+gM(aKK)ldKq!+{*HLSJ{tMXGx9ybj8sSU0)%-EqXqBaJWTzDJ#DOMae+A*G{*( z<>Ur*o3dC_aP|$S^VX9CR7MMJzzK*A(xoth0VjMt&wz2=AhTv>>DtAt+9@l}wdj zaH%daPOR~4yc0$s#2|xDwM@ha$59HfCo0q?9qTM%K(jNMjaKBqx3b;lPP;rqzExt^ zA8R0uYCws!%Zga=FSNe~xzszSHmss(t)Cml{AKEdKH)T0+qt(^U-Bad!lPYTU}rY_ z*_EHMsJv1u;Q0kauQudRei={_A)LhXUdjdY*ohVg%w*wNhcB>1v$Z|UNw*DXvAi6b zA*}%rKO^^eV!(1}5)q*7&>5bzu$}V^y!h=I_2e++8=$f_>#yb{@N86zP3}COk$bRO z6liIFS$2SJPnX5?qJg2iYtouw09pAQ@M>g&!l!|qTA*vd2&&Cvq0KR>5E0@HAq_0Hlwm%QVuu(C58Rrq1n2M zYrhGM;VPne!$HzSD2i%Upmilu6-V*}R6Ws*ZL7T&1`Tex5$~ZI>FNW7(`ZI*1E(`5f4 zHK3~~JaZ#~2slXE%q&XO{O~Hppi+gMGM)rq@z9mx47RTUWFRrtI)A@*r#o&@2ZlnT z^(D4OGm%mC$+F;uljw6~lU&t(HyF?mbtYh{d5v+Gp?{c{a~iV7k{>D=3r~#JGa|-} za9Os_^-_ZykqGZ)DIc4Vp9hx`C_ z5?A*U_HaEmp{tKu9+aq#P24l%2+H#&t&%J(|MB1$bUddkb17=ox-ii`<7S2yWRksq z_gYGuwoWH=bA4iVc=pA3Z3!md(q0Rr-0`d0=|DU1F|JDNWuh8bN zS=Il5Hvhw6KjUBE%wJs+|9~_9*#ZB*u|O~}e=7$5L#R@vVePoaiu8G@n|~sG^^45l zMl$Z?K`6ug@b^)NbPHpkiEwQIxXY|in=eYa5=XIl{ne~LwyFw~*!#9$k#e<_@W!<&)uL6zx+B-)$EZTBt_ zl=U}d&g_z4nE0f+0V6U$0pGODG;0RXPePkq4=@DEDDG%aPUV;D^C*)c-GzN*cXU?u z90>5y@1~3TdHW#5<<`;P9T38wjT;cGDTyk%(m7L(gT7QW3R8)rICLs8LSu@@po*kN zwef%{qNd)QSlNc3Nq1EZEF-?;s_T02X}wsFGy6vKF#ky-1ie0b?TETv<(k zVhe<)BBY977}_J*%l>5fHW(F0H6#Xo3e`nPd@%sKhmWvrfB`PGtO4v}BtR$HhNuK& z9I^K)Kn5uME=DQTDYU5FD9_=K@5@$e268iE1!KTGRlx2xaayq*F=z${s^F!}xvtg? zg`z!1#!D(J%Qh>3f4C~U#*q!BIb}ke8`OXdLupw^fP6NboVLD?^Z9#!Lo|Z$#t+yY z@64iVJ0F)XjEdOrbg|;`%+D+Ftg~73RW=87ctkdd7vIU$on|z*({S(qqEkS6Z(K*+ zt{Z^If&;O1s&q3KUr-+Fm7K{~o%y}-zyQ#WLltq1O!yOO$7Q=1{h>IV5XV8ey^}74 zG!YGjuJpo!^NgE^p1kf7#;HVFF7;<+=H5^Y=q`F7$;-(SzE2nfC4JZ^SbGx^L5U)Z z@7!F|GOpc%630-NC#%_EAZg6D=U!?Y)cT@7k1$G;CCxQc`qU9X-< z34rT!O*Kx-m`)sKA;N~}rx-)EGV(69DcsW(1e8l+b%82dQUD}3#Bi(PiJWt4ney+hwD3@$4R)@9Nw=8X(7N8*ku=;ixl7<#$SLj{G4}tc zbj4Y-hEFw-nDuksYIscnhQrEjejWm0(bdORbIJyn2n^!7Lu?7wXHJwmZK@R zIxAQ-J~E{y@@9cN1Y1hEVJmNNJdsF!)`IioCs!!*33x4&MWFH)C)xlup~uAb)iG1| z)LKNjwPU>^>Z-$WPVRJd%}ZZI1dU}b@`n`s_!$6$TOn`?Y-f#2E(ZvZ5U|f}JZ;mZOAu zs+Zndv-of7Q8*U}z2D?cD%Y)6_KF7#0ut}XjW>Jm1jpTx=yUh#Md=b(LZlOjQHa8> zu$UW^!lcM1Ah&jWYpGeGcJut}Cz5==9sTDG?Epoz0DbQ~1>ED3%e}FE-qU(ZsJ1gk zZ@Y1Wi|2YON}wr=M616lAREJui9bM+4+fr1)*c>S_sq8u+}6Bx!t>03cpbH*oIM6H zu~jQr3Cr&ZiD1vt-X3BV9jiYw5z|My>TQ=TBo@uahy9j%FR+GIM9f9V1~QT|V*ca= z*R%BqWvoAC0qaR1OK$j@zDQ?4bf@!dNSN)t~kAGr2oyCAuq-L{N zC0)PT016qvp6N1|>gZ!xq9wzR|Gt~x-I4;*t_zg4fFC>6j#cLhv(?p|tvz6S8dHR2 zDeNFI8X#&wD`f@zc}Svq-Eg&YpxYMc+(zkDc6OW|d1x%4&4R(97}eZb(G96U<3VjG zCnjgjRtKE#?5_6UIR~w%W*OkWWMSvcktFDg5n!#z8=m9RCrS?rrb(5_-^AQ`_GwbD1QO_IeN5pa^FuPx51|dp08F%y?yIQ-WjDrB~*hK(r`65To{i zC7(vz-t|KPyyISl(M@-~1u@Wb)a2nB5{$mRZcfNe(MmS`h2znegEw?!)0|xA4}be7 z3!5EL+=&muHLBiY6qQU&amh zO+W8rDcbyxeALdsbflbW(X-zv#BemL)f%`G%Ym^!@D-M>WIcZFEBX6p!6wrqSp{>9b4h4;1C8*Ew! z=iGk0sWhVbEOZ<#0~x4!PanO6A5v><1Z+?fNQ$OPUY)%F=K)wG+6?{ zi}ZQMN5eh*i-3Yuc}v>Q#sOc~-6M9Q zZbJNoL9IYh-l7Xv^kX8@_ruGFToPP^HuVu%6qB15gY?)?zT|~@{4Uq``7u|{*W>Xb zb6HN9GqAfVxg-=M&5814S6PO1B^%hl>V}K16=*?1aZR@NJ>=?#3)`rT&(4=SfNd#C zt%P?gVL44l+#x-W->QpvzqPM0pvE&tP7Ro9(AOC;r;goX|-SY_Jre^`D6vT3l&NDv!Go>^ppNE42Ia2_gysaCfg2kxN z5Ql`cQ|mqED1Me5gRlB4it65$baDGauk2VGfyfu~Te?D^Ad-HK(qNV!^t*4y_JC#3 zlAsjtpgdU}B}MJn{pU_~y||ndYz8f~X~Ga~`6yFqtLT(y@mIJ9^CAe42Z}SZ!Wlkx ziwX`*o(cAutULC5bRApt5YI{dmezC%EwBRjLemU`NPkKyBMe)cYoZj>%-g;nRP4OeuTmf zFIsb5B0?dkY+pB(Oz>xr09Y(M7^Jbkz|f3R4zo3Zg9`(qkklqCB>2tR`@VSPz88P_;cQ4_W>9h4 ztOa#rf)Cc?5gOqV*#qhyn*G&lY~EKtzXu0x{Yy|4_$mEBh_O?6C-HJiB$ow(1+nyT zY%1BG21KBaAdWe^=9URR@QNA%#lL{7Xm?`&6_);gHRv4wqCw~Q-)hkR6_);c4f+_h}ogmnWstCXoy#8g8D--1gFRnn;F;IFS5- zcrTRr&;)s+Oky4}r~5&3$Bqe+G^}>3)({b#59J%pQyYusiE_qi5)%W$|VIH;Dx(ThoxO zU`G3PVR;?+N$zfQk59o~9Ti3}W0(N~xa7`&18Nz?Gna(f0T+1!=Q-`u%PVf|yNvMe z`TY;Fs(OYKc35Oou@ncM77vt+(blFO&Mp9pgb|s0m7)BfzZIw?4xFyJBJvHbgTPSt z=k)`;x_JGhq3}}Hc19_Ggu}VWoOvuc^@~H5AOOz`jHJytRFN#pB^8Y@7WOo7D3mfs zIa6Pu2CwZ7MIqG7pHe$Amby>O%%qe-PTNDzOm`bk@5$fZoTvq>gJns_#L|eI^`6Er|S6O9T^Ru?PNM2Ht0r~`y3ChtOJrWw167NjkD=0l#E7h58cKUqomo$j+Z8s*4 z9FbGN*Tq4T`pL-$vV*ZED@Q(D?thGBwiwiLAVyxv370l7YiJEbLXe)D)p5<`&(+yq zEsRwp`nr4k5VK<`ex_;fD-1-*Q!8T}7$3cplk@el_lXq44Gs^(OOOz|(V=C*=~7T4 zo6+U=e7`*(5sTfLE|r8a)vFKhA|ZPoy(|)t%P0sqDisbFrD^fO);TTyRBMElqg-}x zY@SgVA2U&7n1L$S<9VpL|7iCMpx2R)5C|DGGI{;Y=S-M8ul*qQ`( z60yPU%@s9cuv{M;k)D^Db<~%&^##q+*j0#vEwMK>3g=AY$?x(bvJ`)PEfr>t9NrpV&}5UqCgoNAZV0 zSfW6u%~W8Yhn>Kn41!#}N5Gyd8rMZ4IkIA&$eUU7j!-l)=)*wM^x6lDe*Zfv20x*w z8YVD7)yP2Ak|=(cb3Ih(=5FmW#Pq{7KiE-g1UxxlnC8m{r8}^nvHJzmPdnZENpnU# z*_-#mO7a}s{P7VA5O|$j&0D#@go!edT*i2_SM%+B60)l6|b>T zcqE=Xm{(nQ)Bf4qarR*-L=nHSmEYt=GuC}`1NXMMjiAL;vdsCcV%EKb=1{eK=bvq< z3+s)~Lu+M+PbON)Yk35TqnG9L^I9a1fPcvVkg6)m9RS-Ppn_pY9Xq05JZx^Q@^1#Zgj?GAUPOu*Nt9%!!tjbP&2yCPC#~i-ajd2wbx!DJ6j-6NLB!+r@R5epbH zTlEJ}QgA1W>?#R8rUIaexonZW6))QzTNt-Pkqw{jl6gSo#n(JJlwP7R|AJ&bUO!wia zU3;S95vp|_8|Hd2=Yss{8*Drpi`7;!aS~#Fw^8Gn?4u@M zhC~akEy$AuxN}@Ja?E1g^o~+g`L{fQBN?uApdhYN{0N|=u??rP=aCWW6St$%p}(js zSwC>25}!&_$e$ICs=S?^fXb+D5wY}47jwg?0PdWw0G{ohoET5&Ln8USYO97g>uG3w zz8X)Z$hTzrK4ul-M|O~oGL}HgQo%i#0}BrL1DE1EUS>~aJqP7Qdw_kKjbOPnWfRM~ zoEpYExA$-`{g|A@RX)c#`%!Jv$~zI*;zAvf*SX5M;9tE*GfN*;T@7V4w%Sr{_rUD7 zbFTVkaSraY(J}>Eu2F|=Av6M7lk5owj}V}{9f4Tt${4A6QJ6N59-CFoOcd0MN+WFm zaNy_pp;&T8Sv^c*`n}9g9^IgCzJEv8!ZE1_b^ZXz(TH+&fWYWg^?yiv%b>`*ZA%+> zcM6BX-63&zhr-?6ox2Qy|tp!4dx&* zo>v@OBuU_U!J!{MbKwNsnrZ5DXDy+e zHi%T<7c>8mlog9T;;0jEY)t8zmOLq2;w?fg>VT z5xWi^o>HL5F7#P}qL%|#8(q!fSM;qOh| zFX8tmcr=f_^2G(j+7W~xe3#~EzexWRV^9ePEKa;=5sow+A_Q>9AQ}b zX@eyM0!J@-1O}^57k12I8kvOzf=b@CkaoZz9G(`pgYaI*10oWbq9FKZ5dagGE(3|E%*dQaP#gfND258>Dn$?MI&DL+`>cs0 zcgCHU>e-K-t~8;qNa-VzZgC-E1Z8=KJRS6{^{IDxllyM-ZsU;WvIoh&@2!H#qDVJchv7)xS#zd1!cW-bI>NA$Yywf`Y_M6tRa&q2^zJf=dc?Ua8BVU_V=~&sc{G6fxQ$5o*#e#F$cJ2HxzBO2v!oP zB|X81e@YI5jGyzrm3sF_IStt#k9pV_@M>zCN00g!hQN?;W3)!no^J~svCp`;!1*)? zCk5Q}aT5aV)4oNGuAI4IqmA(#vdw~RvFd<^F}eiPZsv+$V{%b8QLddd_Bs8(VOF`@Z6<>52KwGw6x zU2TLi(?F5+9mzkPq500IQxZLQ!7tMR-wCB{vJe)K_8XwM0F4pp!IY!wxH zR#qsG`ou$bNo=&U+3%;9Gp*oztA$}_rKQKFXh*(X=W+7e-@@9oLBB=_Bn8eD)(?@2G8CcJS-EzATCTY!J{@Bi1 zz+z)wd*#{TqSRr*wj#ZTkXVc%u#BSkLHbE{Kv73~Dc|a8PM3QP zjP&=~g6po&vg?dPJ3nY}nP&#B1GBvf4q<$mRPi*VC_WOUEaE>-*vqHnO;>dgA+U^) zOxvNhUY%HcTz~DI>Vb%1vLM%+F+vy>5Lz>5>=AKc^I1o{p7qe*SB`ba$X{PZy3C`d zI5$o*KR2LrY{k&e%c~&(f%KQl3rJ`z~ceEHBwe*JVZ8bxfb`**~2{5I?V1F#tx{(c1e zZ#Av|1kL~D1*pCZ-&2UY7oFY$lMTK{ig{WpOAU(SL5Kbh*^0s0H983|ebk=geJ z-~Ykw|3$F=d(+`x4saIs|MCRo4oxZ7y+-uSS5-Gv&IYVq5s>qfUWtrOGV4{2i0l&@ zvoQR*IN=!aiRIfZQ%+&An?m)?*M|-!%(7Scr&%;$j*M(JBR6Cw)Z_&c_uO9#Jp^%b>})2JOqOKKG* zesW@}=fO-E5}*=}Nn=3ha5#Yy?tWuX=Xt%8w>?Fp_|0Uk1(sB3ndsEncc}AE8{31V#iuy|^D+ie0l~-qe*Pv)++L!wlaVDR5r>qet%oj5>Ap}y~wii*!=4&+np(m z+l_qIY7}}F{<;bON zzbOPf#BKY&Q-in6b%Yw7oYn#fY@YPJc}zcHnoU-$QUL_ znYI>>~(f^RH;q`<)c56m%wo)_1QP(#LZbHR z!S+E-esSV4clQY;U8b^wXeYRbZJ}w;Sz$jHTv@3Ndy*VhF98k+Lg{thrll#F5V5M* z=d-Ct3Eq&+*~F6K&Y?ru$&ZJx`5;SP*r~o#C8+u;`%cX9AYYRk?FpY&7RUUIFI{v4BAsfz8vjYmD9N6z7*w0 zvx+Vmdk+QEiHwej1=obQQ?%2y+NZ}8EW<1fwKOD$S|xTvmQx9%uN+<`;@iGH9eJrp zSWnehnDd;B(RPwP;dvqQ4d&xB3pQ%B^5m4$)}|vH#9!9Zr&=KEMqdX4+j9c%LSf$K zIsJuKRSyr`40}Ql?TlOcu(xqx5^XGim8r3rkx4qMIszqQsAflyRlD z`*)=VLO+M=kTqDVN&11JX?KY9SuKo~?xeVsi2H$%h^EV%u>%qB=adL;B?O&2Xqy{p z4z-$l@F#RL{pZ((ff&rsP_U!8uYr9xI8J*HS9v}Lu5@UIbHT&uxdd+<|AgCv*bWX`=r-llaZfNJ$4faPUAZQ}k*9FEn*evyes{ zfpn@_ByP719LNWF+`>}UDh@+|4~tc#dFA)1b-E?Lo?aDqFiFn^ znme!!xn`}w*`PmBr=ZjZUaTiZBUjT`%&K4ItR2|7LnW!Ca2@8waW=;JA<3{;V)MlP z-aWH{I1o4~)mTp&cphy-=1;^Yo62A58=WoBgKM$NI(+nhwih3l3zt`ZzfBx@tlg;a zxRAA{g`y1~^dh*aY4Xv08$NZJR@KkCS^$r<)$NGc5Vj!Qs=Yit4^}0WK236@^izmm z&doBh%_@O`7vqNWfWseLjnO|3`%M%}Uc!w~?2GGmMfNpx1?KqJ@>USI!;>k#C#Qg` zeI-&z{pm&<^Ac*2q01%cBYL!>OQ;U+)6#`Ng6}cuk#ueuLgmbLJr_XIt0$i& zhy_;;Eoj>+$B>*Wc(a>X@l^!Zch)!Y(eY?A9WMQ4z|WclL=DsgeK@SiM7#w) zm+*0sF@bVEmI2yW1XRFDpM-;*^3)n;?|z<8XAF&_cjnz1EaWXmM1^F<_ajsfaJk5s zGatyQaFy}mQ#`Zgf_9g=A4SoOEVyUKJW6jdNl*8q?EuO9L4WqMVpN5W`r0c~;UHQZ zU!^5)3p&Y@H&Edqn;%Q%0!zQ^H`|8N+5-9eK`yOBLXTcs3GJ1U%}C0{@`8R6GA?*l zO3z&JX|h*dagj1++DR($Z5s9!^tSENl0M-l_z|HM58>7aRgKmyhevNTNBB)mMysHb8V1AO<2~L1 zOWb>+k#IdKiHfG~ZC%!s^{_&oFHL^NK$wA*8G8&CoR{uB>j;KLP>|%x$D*-2GU|N@ zd3uov42+-#3;WEnf`7M6dblc2#aY#*u@l?1-1{)u6870(WhNu4OS0CsK} zJ?0zU@>F1xC4W}A+VEbMwpwwX)qr2*%!8sIFen{8vkoyJ&O9!qdQym8l0iySy6$Xw zdSLrjEJt3FuuhLDAO$a$6!nY_70W*dO;e@}Dwe!AG&MjjdCk`h`r@Mm;$2WQ%BF*M zPvS<_4U;Kz`J_{$8{oQbuVDR@Z}~I2N`2{W903M4r;2f>v48{&6H#Zlh1jumy&|Bw z3UI~NL4xhz;MrGJqp2W#h{_fO{4Ughz56(4I8!(kQ2p&;4Hw$`>6Sr_=G(qDpP4~b zCBfCpyAa2;0y`hPG1B*pQ+td0d%K_8y>fjiBrFjd;g!8qk>Bk!*2c6<8--6F-~QmA z6~JjBc#1mnk-1B640#VNykjFnIQzip%Riz9;te;vC_Cpa-Tg2zj%IsME8XC>M+Q4F zf$Q*a_y3B2`Eyc?11I&#aZ_>_OZ%oddwzv!Xm7xVn5RhgSc9DwKc51cMFQa;fcOCC z_DfYO#rLky2P$=!zmnw57f`!$fei1~>VghZ#@zu>DfK;Z5sq}utsp9sI|B+v8ktYg zgT228jBJ=4ov!1dmZQWJAc+N0*(CtT6h+9SV~KjOmPvra1&4QiX1J6D!BfFgo3ZXa zWu@Ge(EjZIx-l#V0dv|3SFn!()n3dskXvyEQ14UP=Sx=$IB@ll;#XLEl0<)6WmM?r5K0kkMLyQ09lefD;dgdv7?DJELWePRCmFn(c97L zZJs+^F!Oyr4Mw&QRYD?)Gz|*jx5VLR{R#s>PKS5zFX^7nZCs7-h75Qi+ziK-pQC|> z=)2pqQPQpa^QZULEV9l1RF4nUB@?G{<=P-}`KL{7;D-@#Uoq8?@>LJLPpQUK#&>7c zs$NIsN4*Ux(8%~4%JTQO$Dt#6`D$uW33R~Es)yR)15RcL0k?F_k?>V~~U zx|#~WvU+Nn8_{_9b)5z4s7yY8U7lXmE`IX4VT~1Qo^dn;d$ZIhK@!*6Z40Q0x^NSI zbk9vm9#sF~_xr`r#T|)9IXU!Q$=#q@MHpIx>Om@;&sxjmm*YR5|7xXQqhHv`pb!I% zWGb05PH%hQz~u5++|wj@yd43Amfh;0Nsgkv+1nDnsSaRGCNK3yj)(+wr=1o*@U{Zu5NDi%L=g~Y4oV4qmOMcM+Rwel z0{f_Oqj4vvKsIAPivpS1=U=J6Py zeC;Eo(&niVF%OE|hhW%l|Y=i?KQchmKmeVGs)NYGVj5Y%*=M`)I1 zLw|3WB(`w%Q4pyb5pkmx;q`Emr%pHni7%-Sg$qR8uv1K=g}}c3Nb?-dH!dO5vcawR z?$38@c4cQIOxe=J19eyR3$11?#<>*y(3afIYM#}VB;}*y65G1GS&e6aQZ>ut2`>Ln zCrK)Ybu)PZR;ZwK9t6Q$sZbY|9HzZ=rGc^*Tg6-{)pW-6ciNi3b^O!1$Xk-}jcptMu z5m=F*Ydf`!LEw%9em7_)uD+9=Hv4DxOZQ%^g@fDAnQOan?`NMuY@~QVZcuNy;1uh0 zn!1(w5x?wgsxrqTFjr6If5jAAt$Q=skKhj-zB4g;E#DNBn5nwF7F;YFf_!|qa|e&# zSAJASF!EU8kiNF7<9T#7<}iEPy&?&bvNl<*;gvPZuuL@F3%sKV)B6x9dps+;Q4orT zrNn+44epKZx9w|1!4a}g&XFGa4Zqdk)fBPCXLTeo@MBrRq8Al<1>Lv5@$UE*0nu6g z9^F;6isH$=8G81G%M_(?LrFJ;JX3wdx>JuX9O%W%XhbRJ*dJs{ilje&clNW&M+vMaj5h$E`) ziHPR4V%DT+V3_+D&r)iU3s+ba^^p(Y_9y<|G`RjQ=J>xfxc+MR{BI4e|2gpC|G#aU zk>T%_=>OE*@E<0IFSQ6GA?v?Wj{N71um4(ui}CM1_J1iyzQ&IJSCu0RnqNa8*f2I8 zRm~`6qRhS;T+FPnL#&mfeP!P-e#L(^xc->XgyDrdwB6o25&#L8Q_f^Fq@`1(Nce3Z z0NY*mv;e(CtYu(Uol6&nNoA#O*qF2g`Y=f_zqNdre>hUzxey&57*HOD7}c<>PU>D@ zN+liK8gvAUsc0^EHe+bgG~5>R_Et5n-da*Q-on@*dc6WQ$#lfJeB^0B_E|PAZ5E^@ zPyD(P=B~K0u=T(QnUKtL{^qQE0fLhT_s^w6`ekm4WlHL zc{L_d)ubim89G+}s?{;}$x!^gXLBq6YtwKb!)I$#&mMrvoHzHKwJgo}2YDLuvsFXe z^Z8+k?(E77S=LYI1hP?eX3szZb7EY*t&LLQ3h9uowTveAEwO+xGy4_RXYiLHY+iU5 zt3%lw(M%uD=;Aq83CAfA<)U4xB_~YW|1;HNkyI zx<-%BQ`3}$s#V54*IfFCm4YYe>lkRGgM%m zQ@{Nj7R?57V#PqpvDs|{MrC7c8R1*$e+;0gpC?XNqskDBq_@){fN{*&mkr*0*AJ!D zTb8r$B!ckA);Z|5ems!JwM-}-j@{D1SIdF|_wK&8AmleZ>`JCKk$K_|M+X_z_X54p>>gufq{PnE z`HHOutK$ae0BeFlh4_2GvoSLNx_QkJnUZ-n{I2?L8wBIUyQY`k!;@uy`5;Cspn5^Z z6D4v!Y?VwB>RKz$Jkg!zsFatJgmRY4%dF=IS`IvmWH%xfQ3YNUl1j@L0)j#`^D05Z znEktmDZgLPCn^MR_EookeEB{)iXTiDxh1{#jC-T*WJjSP2PwD3B zR=F5&S)K;Yh}blvZA_}KM%O{p9C74JK^~2{deztbU7iffRqm@x!D&!kXdt&6-e({{ zwf#JQa%w;%N7OmgFIbuQs$ApyYadOR!mY>_%9#mb2nO#w+kDJ(tV{sXW`7bD=y7c5 z&-9?^>;hyr5UbyyB1hfHhn^N`8B0{9qpae7iKyg*k}*R8V1#4Vd8o15BQ_aMR$A~d zjP+qP6G$0^<8}twSMp-C9q3#|BakwdXPl5cFUHj){RtIcuRppzl-jFXaErvb?#eLC zFf;9$g!6t|912o!H`B4}_2iv?xya;$zEc@ghLI3jZ}w4Uh0zc^>^v5V($?8Lr4@o< zpRQ(9SO?2VQ(nOSj@^od$}Qwtcf-EC?I0w(^tclch&c)rxrsa5IY?S24I0rwVBs7; z#vQqZk`}CibqFC?hkXN2f(pxmsy%Len*vJ;(IIS7+9(SH2Bn)YH8VsPQ(Vgt`d;() z;YH)q!H^7i`CL)c;7gmaTOIBM1=339FcrLf18^sjHErb8w-8`kP7NYwPZNvwwBN>^ zD&r}qKq~qH&8>QG^1n0&4J7awV&PB1X~Yj8dQIAas2fwtvMiSd*v|WzQU-DU0$W+k z>D=qbO~R^x_(PT?YF+GROb#G<^9JqGrTdk><$ZetO9y~(AtVa{k)so*;p73g(Km?m zQ*%=!0v1}eYN=5~la0F$(Rg6zLry%LwO=55Zp}%;erdm4eymP=@WiO_*TE*B8O!dVmei|% zrRXB+(uA@hY8`Q#;;U)LVAm^lsEq9qnc(^G^hkt|4J3jsF}f#h3w9v;XCUZ*Z$=J` z+ir!bLRmM$k^^J+XGGD$B)Ry;ipBBjVkVoMdy)y*<1j`|;`}*jk0ynfsBrU07N78h1CAnYC=Bbx6O$rV~lLg06#?U4+8X0f}D(Q*@p zPH<@<-*;MURe??|F+)Ual5*qw8cbMpq}$jjx-5KsO5EAJJ*GV|esYq|*DFQXX>c0! zX9RP1$i+SYt*dV56cr@@eJ&W*CCiK79U6W~sG+N1Vl4lptdAM6v2_0F&!|$2l1IKl zev;lkm|C;xJeY~3uQ$#Z=*Q>@g*Xs$!)feK=39>H4~HQppivzqy#o5&fL{DGN8K4>D;MJomu$!?Gp@_t%c)L)L2Z~6Me*}AUpR)j7tOZ>1TwaYA`Kq@Azoh`cyVx& zfw)1_CLuI*au$$9(XL9bHQU?ea=)FX!#=-Xq0BF)p0_U#%0^hDc9PfIv9!qHKl31p z5eTkJQGKMI%nfh!#6P}^%UeiR7T5}ni=7$W?oG`soBy5$-1$^sh(}A;Mg}>k5nxi! zHX)mX4~Gpe(cokv=)1X1!Fv^iTf5KOnRg<7#H7Hqglh2DDjbrHFdM%T^0Dd#r>T!| z&mc5ir=<-9j??^>WTGw^M{6UiVs!lFnw3T_jFsvRr>}R2-&@gY3W$wM8{&sBxd?bW zYhchCXY|RsXz7G-0chS}{=ql23s>+7zKGjCwSoCK5&n0J(O&LZ4C)?Ui5$z=+Db?s zR{1IV_?B1t{5j3@jl}>Vp)HUX)ot-l%ovRA*Xs*sDYa945uu!6hyI44aJ=MI;0Y2$ zL;+M(ut1|a!A|u}O*bka1IehG17>!22gW}5T8V`0x}?BvgQ1eg2sdcxAK>C!Ic zn)GF*qRPGiPpgS1aSeW}>K)Lz1g4y{pQd6(uKT?J{BdHNg|kbY>A>ENKU2hsTt1P=6wD-?8>c%j17RQE zE#W9TGP@Vf55uH9d~^gYt4`k5JaliAHqjFC@XT_!O~ z$mCjSMrc5G&}SgaEkP&^K{t4qF_EkWKu&5V$+Y=7vTe{>W+p%}#g z3I^MZD+o@+oyqO&wcW&_`#hMD*)^cUO@^WL;X{{s7&a z=5<4tK#TCQQ@j#fBSew;LlQTa$FtrePGk5}T;W6#6MqZ7vsrm}(bAz@;SUiB! zI2k#BPPx>|bRwA1l0A*Qxl$YJ?5bZDf4o>f_a=BK#i9inm*b^)t z!Jlq?69JT%(@p54b>Ds$DDZCCn(rIxzv0ey;33o}(BM6G-Zlh(0#65y-@h(+W*Dqz(&aQ53>Ht0P#2P{(sl#!1#BG%D-^+Yo5S=6;}r|HB;6a zk-fKc^Tf)A1Vg!E*@sGOvii%`tUP4pG9fFIPgR7%s6^b)eYUXIp)6YRJ(Fd1e-J_; z@B(eYnLsRGR#tVoPn`K<^kXE`RbFBYB2_l)m<@{ORbM9h6d?03TtN7GY%|Z}JK{)-Vw-`cN(gS>q}2h7%bgECGs?JoB{f z*``8h&Lu`~cNI&>G!UCqwzobJi)ey2@lPAMCBH>pr$0|fg zc|cjAR4QL8>n}*RA3Q4>qYk@ztP?(XEEcld&j^fq)MXmqWK`hl1T5st# zXdo&KFTr@>wh}{uKcb$^qw56JwJ&EQ!=ZFX*>^$ol=}?E!+RW9u|mq@r^Qo_TGzeR zD`On>GdTVX@t>z%>mH~`MN!DA5+I|<4SN%)pmEh~Gtx=44;q!JI^GYpwm-%N-G$q8 z1I(5d!MX+QG8<-I|B{IL&GJJ!7=}(7(wasG9g4avr zfS#r@h-4B9e4VSb5K{&FT@T)}63%a{g}U52jnLf=<-3BH5i2X_}*TlOv@Ks}(h zJALdxonwnp(C%-^-8?uGhV60phs+TSe1Q|*;iSz+vs(NA9zduK#+YEVxGsnUA2uU z1^S>|fxVI~(cb^Ce8#kP6o9$H3rt_j6T;r}u);vrD5n=`HN|)_TDjrv@gwtfDrrY* zS=3LBSi~&*wwblH7g&2E7xCw^=1Y!D9asIr%=3uKlU@K~E)-g7v+fpasT|i9?x=b~ z7V0?{kEqx;-91crk9NeqDQ)&Ag%x}u7JM>4-UiFSn$!aD{cZE2EHfWi2 zM192~=s<}Shd`xK7MyXN3^F}3=TUu-I0WYf9@|H^Mp2?Xd(fBtH5(yW=x%}EeMi{> z^e#T!2e6@A41n~wo3!DG#F%q33O<5f;b-W;up7=^%F!u^x{^1rap7m&!=UCL;s&LQ zN0~$1+<+ZNd+)%6#a@h*8xB5QU$dFd@O^8WAC{CUpOx!}vpgN7rTz>(ox$Evq|kd- zvhTwpI4q*r9%&1l4`eS;*>Ak(+l7QqyYSW-w#_ z6$KhgJ(NEB{-LkKkc}+lie>KRfVLdeb&K5N@;b1tLMS5S)#6f$(YoH5JBGX}dBDkf zFXOpDi=w@k>{Ld5=|JW@(38|xKOAIA{iZHgce68?>{4D#H@{w$@0XtH{FsMl06@JF zpZSOLV*X^9Qeu17a z3fCv2@b%W_=o2R6(^R%Tubj^h3_mAhvT;&Y*^G<%U^<(*=a<9zBgAW&6X^NX z=0Xv+9Y0#AYG-SL-lJC{IxXaGRwg`~3fBYFmVrQ>Tmy)r@8Z1$5_P!U8o&WB^>EnUkKK@5CA@c>XXxoMA*V8xF1HjWk}y zN3&&ySj`|J)h-;_c?rTj--fQ+>B9|h&0Na-g2SwaJix>vzOmunt;q0kugvSt>aV9A z!=A;7*+9fh4{>VBJJlgS zoWgRrbQOXz*SKuGx<7k@Fomcda(*Hp_-XEP1G^DW>4otH65rbhuz%5{zi$&AT`W2h z1J$lkOchrB$c1CnwQ>)GG@wlzmMBwfC-?mZWAOe3?^{jEabAIf$UYbQqS;-p42)F5 zEq){NudWz&y*CSp5{gN60Ja?jYz}^P+L||S!SATf7~kVegG2J1XCHmo z3z$ilrzGbR0`< zk?3b&x91?H4OgB&@{Ct8v~y1Xd~i_5MLC4pt>^9Hy0}vv3SooG`hnf_o(e`v?-fk+ zqDkx8mBbnZgmzz#T~c+Pxg35?W2a5UswS`(8nO)tkBnD9CQEYja*JvKiaMXX7=435 zm~BhR?LPWoJu_m^XzS+6#5D{zeO*%c>lu8gYZyvQcq4tj4*bFA{bo%=ofnG1jqtSn z)-ubbtG$rFQ;R{vHQ8!38DL-G>!^`!k?A4vTG7#|a;0A_9uU}dI2mS%`Yln%zfPIl zrx@C2^r5cGH5&45ll+!g-F7!O^GN~Ruf#B^VHN*<*F5MMn@6in$fcx5bE)-@c10^9 z&sgJKF?R9(nu06;bHo#oFB)^PG#0gQd{8!{aePF3B9p{9U5T`bFqRUT5|rVnk*^)G zF%!XfB2$__wh|d=DzjGqXBl)@v{J|&H~53i&p>T73@$gnZriyd)xedc zARciB<_F^|%M%GN-2F)UFL;X|I6=8Y2!2C@?_$0Q*qQn4!1cGP%%7z1Tl@!=FQV$3 zEbj6LA=M<2!i<|rg>Z@My8NP~h}UVb85}A^U0_jmj%KZ|^%B#1xyKCm%0Y)V`8$|A z%C~Qs19duc{uTTfrPQb6BM8ny zAX)eH_>VC^Pl@d;Sp+X1`Izw~#h?vYusHWDa-Dz_``4b5b(YJ zY?LR)dLWYzqyd%D12OZS-UX!G?k!>mSX@3@@C2C~A$V8%M^T>|I+{EPlC|(aw7Fen z3e_dk6h6XxvADpIjdi@hew#nHCJ^2bnM)^(Y zdxeE7734wnbT`La9##>7naj47X^TUhUhClYpMqEi>TK&<<@EuZK%Mp21CJGU`)>nN z=ArzC5Rlr=(#tt=pmY+5$h9#WSKUN2JYX|6#JK#tQJJ^l-e)59Sm~7*4(VK@C3!1jTBD;nY&| zJ*hiw(*I~dc$Yn?g&;zwRw%HVrGP>X`1Imv&cbNVHAK^K=>(oMUD0nvN-l=0BFIPG zZrA=rITu0{b1ZLF-L{or>UAozOFOh$Vm_C;o}P3Z_e%A~$IsGr(H27JiEh9gY|012 z_O!?L9V0*A^cJFhzz6Gl0eLyU8_{(q8tE^FkHYxXQu9yndj+9_e?x+Q>G1y(68xVj zZHmT@w$2WQ#*T!HjQ==X{BLAZGcx|=HCOywDD^+D@vl4o2MYe*`0wwser7_Jf1v0W z7XCePnvs)`^&hwS`ktAcko8~a_}`W9e_iuG*5qIEeKywrauoFj*P6p#WBla@%o6X2 zsTl4$RJ^GrL8e5ph3sK`6i=IG(l{us0vmPwv5?}mTc`Ich;Jd7Wm7twxi-7U!zB zP5kN9dhWZ7&x{fH@C{k%n*z#Q$C#UYJ4fmRNf!Sp35VBTfK?2b0jw3c zYHqMw`}mS=%4CnB=ARJZi`2zRR7wLx9A~Uv8`YUj_xGON1i-bBmO;|RrwuhHd9`d7B_#`H%yki!0>C9 zgIVfhdt^3}5PiWA!yOZ#=PEQZ8)1U5U}*a5lR({OWjYk1KNcqO)FYU3aafI;>1Pi3 ze6vuOr#}-$bapwWc!__+xbb135~k;F8Xs*|A27Fy{?f7nzsawL73920ftg|HEX~yH zKI5)TbiD3oD1%7UTN>cJ8vVUyVN8I80DLwa7vv?DgGe$Iu%u(8mR2e{7EN6Gt`P-< zub7?kH?W%6Ke4`^XG*zv)zR>)CXmu|peY^_HxAab-zOf==p>V=W(m8>t37Wb3M@hT znc5HO(4aGaJ)w%ko5ruZP(&EW!#Xr(U4SaB+k`x|dVg;0xt%V$-nSZzFUG9j%A<~( z9NB4Wm0DrAsBf?HK|Rs-;W3mVS8`1xCuxZF!X<*SgNK5-9)%TJGtRvU{ekpmm(kqe zWbQshaMmS*I(*2Mowt`eLGV9ENBD*8s5NzGWhoCcxL4nw=k>!Tg}Y=w=K=vcA>-%D zC17cg6e@vbr`QV5sK3{muXEf2`h`VCg(LR*xG$3{*K+?%poW^+F|@IsHosurN`>bt zw+&-;a;xA+VbF;yTxi+;1QcBIIW1ma4GhSiH}Qd}fB-C#XF^|*a7cw=9p5kEnN+Pe zB@D7ZgWxx0VywvNeynZ~c^JY3!c!QdNeNb0|`dp+Gq$a zG}Ud+D-L3N-U0CxnuW^+8M3qOO-4!&!o~pS1Ge0;KGFX8x$>?8Eh+-SSYNBzX90~YsWh})lVLb6^sAV_-+Yh47p(7Vx@N6vSw+JqvUPj!KeWM+bIIH^%=Og< zd41eqn{Hui&q*DYGjjZNcj7-;!nQH4p*Lo}VSB36wsh?iFo^M78wEwuJvEMP!vA=$ z++gwv6yU4bY+jsXj)nXgkjm|lK?BZqp}AY)$2VdjN+;KcE~Q>L)#hHtAfaRQf}3C3 zU;J=DB<9OO5D@u9S?0S8HosBLij9yfhO?K6i?!&Xaw8 z!gC267F4$<71X-Gn~6a^9%qlzP4oV|lG?Tc%7rp>1wul=`pRxdBd{H2waVpn6B5&y zwbbOPOCz5n7m(b}(dU|eCN86oZBvfCg~#)ZSeA-mZWQ3|(goeA>t7V_BZ750zm zA{f-3DL$w*P{6F8U^yq4>V(I}_8BA_xn0=kejN_6?Klp#fW2^Vj{8-Y zg2)f+p}UZ1ew4sA=OccP*aOf=P>JZZ`Vv8f*gm+AfNm91GH`nz`}!lI$st0+YkUq8 z$#0xi695b3Ie9{i+0_Cv)`VU0v)_T@fi(Lk2)Km!T-7K*&tYHBHu!(+Z0DmP{H3aZBJ7C_yYrWGC`lC zjpz=%Jir8|eRfj0lsj6}7gWe?j`SE_FNDBm`xQo)*`{ZzB{z0`p^UekY(re-0DrS8 z!3jzyE7fodPRLR!6L>O$x>&b`I^&)R4~klc>+gAIWw9INFww#^&--**s}A7=4SsWd z=9I3M=1$+Z`5@ME=L{zclWFr7Ic1C3k6a%_r-&rBjOc~*?qGk1bYvLIXb*OqY?+3j zNfLevv3_M}zM?99-VJu}at{Jt`7#Ph7v-D2t_{~pi#zN1D?ONcjmlzUuje~OwJ zl&+H&=y!qwJwLZ7kGxUXJd%QRDP-OSZ#ag3)Oa?E2;wzGcp6Yr;iJ6QC^W=G;Z1A{ zkGxD(rs^+!@Hck!t|U1hRb8pYw)(>nB?u**m4q2gFo=TC(5F~0y4|6}Y!*Ue>U>d9U&|}`G}$o|*Scu;bAVjnC^zRAhH;T_ z&VfBrXwXzr!@0P%K5-l>bSOD#_;yo8mr7(Qinwa9U^0m4^NJr$PpuAoh2^Na04NR4 zQEzB+b-ejX2vSdnwO#V}v4na5MSwJCFD*AQp&lYk$mJMax`H@uCun2z=_Y_JO!8`s*ZbgrMJczL!FVm-bd5q&{lP;c%#>N5rRIv#t`#yj z1M-$!3LiNHn#W4u-&g7l`~>d=@r3xjF?z!`so0#JZt!)JA-6+giMD3`Yk| zP&<>L_6DE-(uB6>n-%A7uN?WBLJUPV_s_<3{?&C+R>J2ZIv?nC&TYv}A`>mgoU1^I zt<;|+6bIN;>hzsh$~ykuTdp;5oq#^UB<$*t2QcKAkiRzN7BwV&EZ{|^agz9-FK+Lr zC68hiN+`v1tVL4Q;F9g9W3dGx_>%71!+H{fwh9cjxRHzJZ+7Nq!&n%zZna z%$UjF5uhMgiA#o5aCcou*v-Ac?Qr_pZ=URKK$H!BF;3VIO!8_FGcWY@K0L^+NHZ&W zYp@J>0YVfoHDLNJ7n&F1h9)#_5Kf$7(ERI1kK$zn4VVJcll$5AWRyZ(j%0ZG<P!@79f%E+OPOK#5xASIJHYM$mdIcx5dZA7P2hF z+psEH@*n={{z)p>OyfVK`vbhWH(G5k!D3Lr@PvfEZST?2ML}cO1;K>n zn{JEftPATm zXcLNR|J4~>SVPx;=BK>Wx_gIWQXqC&L6nAZBk$0PGm+X$`q_5y3oaX5>#s%*eK&z<0=gO&W~M z=4hLe;npi2Bc;RLT;hci+DNo4Tedh%VJ@fGBlOqiIfH_qVU`!6Z`uEtqPyk8spEL~ z%R*13zR^~2x-{b2Pd=jeQ&` z<@h(5m#NZ<)YLaZ!a}IK5iUhFbQ)iI^|<{sj}~;8ziw5-1=1Qpqtv$;dLP60v;E}+ zXp99M6V+>QPX7yi2AC!iaFvKqX?))A_;fo-{IK-HCCcw!-3^crpw-px>Gfbp80gDn z#V>%av0C7b3;hCz(t3Tvsreh_LW{nNND4kbN|mMOW}@VAs}GHWsNfNu=b(|p^Gx+O zj55#eaMn>sG450;YEqGB%R~u>fIoti{{LX@or7$P)9>!KZQHhO+qP|6w{6?DZQSN< z+cs`nZ_gx^%(r@TyY~5duUen=Fhfua6a>BT4onsV|6}I$;7~az#Vr0j z;^|R1KD@)C12_`Ni3^8Ugt%kKE&kw+OC+(Qbu@B7Prui>;vsalL+IBmuX!n!m$%Xv zDx{dO+`;IIYDXnO%kxxbVb24PBP#Qa#;KvWj>S}Uha)F;WLg5PI&YZaYW4DC>9*58 zL{w`14IV#5zU^BqV+oT27EVgB<5+m(XYld;kl*)ohZB|bz0Xb*>0nF&F*h-=@ zPo$V~H)p|T$-{DK&(Bp~<{P|X+d@i=)t zad#hjI1_FB_axm^GusXcrBZVMf$A;u^k<;ltUyEQDRKb273k({AWhO{BMmhJCBfu% z;fu3=iFd#QqX?QQudnz$ciD@VZEqCqCU)rj!O3cCZCGCc0)kKdc8Ud^SAS3$Ce#3dFyd;ie}@e!Sb7%9NPNl0yQf;?u4|Qo^9#K> zDfWZUlcuCrz2R&_;tU9dV}yCh1OtAOFFdv9BjQmBfFmCm=3a@RH3NxM#>e|2s&f*S z(VL>I`(VdS4;AQv6;d|Reh^4e*gVy5@M_@_E@sFTO@ljwf_aIAmd3>AV-$1w(SiFY zNHea#$=Je`%TRQ_LHbm0Z!UpL9R~H5uKg2&>yEmwwDb{u)w`Rj9j94r#p9pSVbted zZAY5B-nvHR-v?EO;k+HYfT`^#R8yd+ly#FM@jW!VO&6YXY~#D)q1dg6pRck*Okdk z`hPa;mk3jVD14mQc_b$5c;P+9x#W^59nQXriyGN_kbFM3C#8%}l`3P1$uFV5X>d_0 zJ(~-!IDYF2AA&J)OjY5w82{cmQ9|X&^4bYfsp*5cz06~T9PPoZ4l|pTy|Fa#zEAUA z9Uub|QjXxIg}dIt9bKi4+IO-IT(NRmPrzK^k1yWXO3dherHT}jOuWAnmmKftU#$5Su6|j*l?NAy zIZTcZY6$(-9Fc^STlfv`)d^_-Z)CauJ#+9+mFmA5G#LL+nS*~P%l&)k;6IV&{zv@e zkNoy865W4+5&p%+!SX+nH~ur|;O9R7t1QRF#PpxKI9hZzeo{65_&@6xJoKo1%|w!3 z3v6G;xLqu##nd#*Ch^Q6(N_I1LWzxCuNU0GSrWerRcNz#$%zCVUWPUqm;rovJ6{gK zw}>r`l!U#C((q(mg`!z_MMVZ%5_Y_j&6l6L3O-fH&FOfDVO74hrCh@%&$4f4+` zqwq-~6{TOspre2HzP$eA8+Ax{`}ay9n>C;MhGn7bVy~%9w=m-pAAb)IF?Hd2$OnK9YIP{wh{MqbuKpYcZw#f2Ry$y355Rnta>lQ#sDvK zbI4TO&O4-EGmFJtSuF->t{y#t(cWIZy`E|+FwC~hlpwNHKd6pxIyme!%$}bcb}$To z?bRqW@skvl+VuwkCvdU&!YuIuo!=CcgOqI!qX$zW?+<4`6}(N@%@=a?2SIT`G||K# zEF0UV!#o-U^fvBw5|7>$=6+w-0(v-{Lr~!D`xz*%z|7*2_r;tHLxfFml zEn?9$Dc}VM%xY1ZS}YBxCehl!;4-A>!{69n@4*25=WC7NCfptX&E)q zwh?YiF5cCgpsmpk9Me=6^!01+Nk%g+>UDI6R@!_eCn774*p7sX^+IX$=jwg9t!nS? z*NdUk`gU&M4pevUaf)lI@jpXXw|D1XpFc@k$n<~PU_i8LYtUzpx7*E^gV8TC9xkS& zdK_kYrc#X;1DjL?vWtK=Nk~|`rBTb{ZIlD&V8tDM-{%0BDg}O?gK7@$=L_oL!Zg2J zJfCnBJ5wm5p~};t$%oC6wm?MbyRpmTx6>81P41^(ZvPP{kU0WtaIFjFEz|^CV7Ogs zTG3e5pW6d@@?p`6heVEDnlM=$x+Yh?PcJm)CC;g0C=X$iw5jTN z8)LK6u%h-(&<9Q%-kiWqEqU&73trWD_Gk7YWuLP9Ugy^AP|Aj5e)NtU?x_2!uGwSN zh2L(C8Q)s4e>trLOoT91bt?r!O|q~;>{5r~MggjDuMCMyO*KjvA_-hwobWkn-a{XJ;h`>j{qA_*OcOU#yEXrv zlSk-o=rIVvj{Cbus!{a10UPdMXnM#0rPLFuWVP-8ZQb!o&RqXn^w;W74Ya~)3T^s$Lo1STpgMSXE7TOAo zhMY!>CoHH4w3+EFmLb4O!VUVz<0X?JI)NV)6ic6nICsK=hRS#9N%f(jHPyiI^ryvJ z79`FXm$FiSz^JJ;);_o_WfxTu@Cq)_Nvr?-`%bLRHHf{ty@k`gr)GdZrMk$sF!2Jf z`}&M+s(lYs0xZ1Yjw->W@pRGxKUYUXZ&iQ#e7tb@cy+#B_@7z!t%EXLFnsRDAbi?H zE~uZatE-`JNo9C5dh2ym4qQ8##|h(zyL0e7MEV{PaeDZ2I?~?Y?|WVN9Y%JO(lCnL z$EHeG9m3H=N2!n{L-)}oc;1dUT{}mb*J~hiFpAZ73y~Y7$)1w=Met4Iqern%=5@g9 zt}wSDeCY;2g}?v$1z^ZPFo!!MaEBoW z=p4Y%9Q$C;Uc`T8sKP`TQKZw!Rk2Y-Nsm5*|M0 zdlZ6!-K`gn06b!hfGS@urHQ-0wRHM)-pR;kgy0OhU7AbJC^6fYPv+OZ#gTRNq76M4 zl3kP)*+JzM-l<8rR+?3?VcEHcIa6cTdJx^IIkI-m$vxEmn0vst-b7nYlo)kLU$k^dOS>3{ zZdmzGAHLyq=9JFn>}{SqbI+8|s%Eo4gFnn&BaHI=g%HXMUk32w@BX?wz!Mun^7!TY z&*}YVJS13aQE;2rXUD=OnDm?IS15T=xcOEy| zJM{N}>z=><7BC6l-Q%z6L3IY-0w6?`ZE7aXBOo$H8pO@^c-JNm&&kp6^%Ph@`NCa( z1@H*cW=>1h$Uy9r@Iz!uxJnY;Om$!hhmBsfIMNs;!bkRdCO;P4w;0mLK5z-BN+IFxY` zA&j8%%G-qf0(TSwyA4E6;v`i@U)tLQ2$jf?H{hNy9>0A_e-{s&utNMAvc@voRioS+ z&bOB6O@U0uwmSBA7hOy;v%7 zham&FGFaRhn82NBf>c!0L>mQLKGUzp5029;x?3B+j?>{vAZA??W0enb+cXuU#td3v9aW*(AKWjajgZ{!RoamDkNbtL_VL1c~u z@By6ARra@(cj|c})l2>{TX9lF%%KgSD8%#8Aknn0bh4<5(8`x*t5^+ExkalUthy#= zOab1la&agBpt_I*L|qSxbDb-ln`_O(n$=aUTGj{=wIllVld_vO;e1;pkxu{jIpios zi;MB@r=uzVEECngU=KAJkqm4dQ5_5-8CKk7WuBz<-~@K(7RCi zwY+)SMhTpMDL~5-pH2^F5%#PC;b`qoapTQn$=5WvDgfyLW5`bCGLkykz#It!E|{iN z({|GtAL9k^XHk)ZxYG^_eSj{g=c(G80HAh3bGsBUF9D)px>~#{W78mEyB0s%!J}35 zopHA@qvJ*6Bd)2`D%V`uP1wjZ=Q27?PD~Lxc^&RmDk|V(K~J9@-g^OQ_h&V>9c+ zCN|W}RO3*PfKG%MDlJ0l?d=KT@+K)8+6aE_-rR6<>2*7C3p39e*i5ul*&eA^i44r# zo|)sQ9e35T8B^!^v_L^_nSH^9pQEpp-|9{IL8<5c80g%&A4F19ZGp#x-bR|FJ%&K&nYEMp&WY-#_vY2Zhx|i-0%tq zL!`|ilpgbFQJ>Y0Dg4Eb&6cmajEQf@PdW|++GyI6f>Z?rK^uW~;$mISQ_m0P%SpIx z22)EFk7cde56T#UR%0<2?KP{nL?3qbFUu7zbo!h3JGJ<&bFdY#&8tp{XnICpA@@m% zWz+L=;mC6sw4D)GlA{_OrN*#qqC0Qk&82A+Rep->AZ!H`y_oaCA=CA{DnScV;;OH> zQfdw&V5*oaSzSs({xTg9Dc-D63z$`j3HU4lcFJ#*V(1teLT|^Fv!LtiVMCz!S;?}j zfcq(HOV<3b9Qi&<0?QDfoM3#6M-SX)BNuB|T5=9*%W>P}%w~HtHEBsj`qB{beX)Q8&YO_vvkkey}J84cBp%hU?GD+6kWiW5O~0pszgdGaSx$<*3EKL z-b;`PGKF^6P=8C@LP%|D({q-vCi_vV2s_OFF|L=&mCIR1s%sIt_`;o`w4+B2kM}?J zp_Vu07X#`CiT-uTLN+iEr)S*3>~3#*4J7nRkBR3s*vcU2X{B*K%q4ic3JlayJxEN% zI?Fo%Z)Vsbil&5Mz$nXBWz#_4 zC0B_P485{rct(fobp~{$g*6$5;}aQ=vT)&J@29JfuEe-QER}|s+|TjGIAA)h*Lq>L zB>Y9m3z%1HAd`sIkW@?4c;?g^`wKygyG}F0Tdz$}C7&;@qBxF1hfBSh;69Epo7;dW za%#kIA&@uss4-lVryo@1>d`Ea`KZY^I=nX%hE2yi7*!XG1{uLIuXWMAa^UB!3d`oy zJ#oM-%-OnL+(9h3W}j!mpleWzan-F_JGjP(){onwPKP9uqNPP$Cnn0j1n4Sdo?}Nb zNp18BHQnmqp5KF`%|Fi^OC6|%+Rz}aGt@Aug~2`vq)oj%%w~2Yhxf6yQsj0!dLKoX zmD_F_4i{8w+eLwq6L-691^dFj_2)bn8iiyRcI(680?TeO81F&97tm1HrZ z8h)%nVDc4z z_2WXZ2GDzd5rt|@*I(a?28rJ)GO!ED;_eXX?;>6!7g~-cwDu>5m6xVY@%{b`%4wkik-*F`%L!9C!Nt9={6;LM)Kaz%K+f z^p3pnJ-3KCBF&n9u7u!qu~!lN;4>g0)M~diNe1D4f$txbLHJ)49;W|2g7Z(oii3j^FJA!A2#RTW~=^(s?NV*b6D7a(pUfafua|)v~e+Y z`f+sG7`m8>m>S!gnEtrPpqyQtObuFjLlbEj1Ztyxo>rlNDSzIs01=&WWvxA}iv*HDE;9T>}1`Mqsy`1ihk(YN28%eSd> zWa~#+7d+6gcbo}sU)B2cyuJGR^>qBM`}RpO|IO|E2}AEm)}6M}MV(@)div7a^LBUs zjnwZN)Q%VQLF_jL>4&x3J{Z?`EPu28d9a06-L)=kOZ7O^ z&)3lKPH_!2{1^?{~WuaP#_eTlt03>W2G={L3 zccFRGUroesmziuZ_SCxoUW0K3ebE@sp&EPctz*2ijQf9IK-F2sZi#tjT0Jc$aT$u# zoE|?StTW!aLHdlHg3UJzuLsKriW{#6=e@r+c-53yBDx`*j^*W%#w$v6KIiUelr7@u z;VAqpJYIltbx@a+$AAl(_e>LfIK(Xw9pN9p2m|&i@cS+u2!pNS!Nn<1tKt%9Z#vtp zK`zy}v&#=AL_I|k+P_v7%}7#5P$mVa7RHn--`YWM#l+5_sna~z!zUDJOv0D#$v*Ga?V2u z@~mtT&x#u)czUM?p#@Y){$pAbHY^8Aj>n3EJEk>M5kfMzz!vi-vB`uKOe#(4raGl}T4s;fdTprkps>NnR zC|n7Pz6jVxt|k!fLV@23H~~T}u^5uF;+czTP-|B6!BvCv=VCLKYM@edLT_?^Qg@-% zgF_xSlQK7K;bm~PM^g|$-a=UcX>OT1#RLltFBX5dWCN^x*1}S1z6u=AkQ_Ykw*wFa zVIxGWeI;GKwjaShnTw7{*$T+*{RJWgkaM35q&9 zMth)LSZEhhApm`M^}c=sy~A}(u+8{pAI>6$z>0Q39W;j^A@t+Ywe3F^nrsJqK~+;O zaCrKfE{sJA-GJ^W&;%F&b4L~iSiTpGFW%pf1iilpUfa@W)$CQ{eq`e?}<#8hX=oRQnhBrax;(&8Bid59rCmW_&P zIlw_PG@d6AM>Iv~h~wS+SOi~RHF4_^Ok2*jjW_ZWetA;{6mwl9pnDjl|XnFoR5<0ms$(6zlN zSjh=Fe^PgC&BQbjm_j#ed$%)5A}$EWCFNm+MSj|QO%p_zswV}S=x1vnI&*fQR%IN$ z4{BVL3P1#Q)Q0(IYe$R>yaTUzhn$4Mw6~Hq&7XqaMI)HsHREmCI|iMY>RK{WBf*o) z1G9lp2elfK*kqjxROXk|rx*Q!1rH%5SHe~y`61OEBnF*t#itU#AlmO{g6TW+`I!J- z3;B^&dIs?|VJ5fnGX|JmiG^tkNc#g9yiAR^tZ~k|>kb?D2s4`Q#09-NLNHSUxhy%Un?7+2wN0*c*XC zfjiVCJN5_i@!CBytV}b38ak$)91qvabD{BFJRtagpVj&2IDJP|3%t&dJ1-NYXf-YL zW8Otd@pBz+vm6QR(o5KFIOUQY58D8$r9_ieb4hLtj`#Z^b9fcO_i=~u)X#@qas}Nm zGu6LT@cekf>eLV}gX~N79`^1>;QdEYY|0}!A@U!8kx9qqDtSc`dJrvV?l#o;@$Oq= zQ)4GDTX`^{CftTvaiErEVN|GF4w4cx!-7-h=qVw?3HBC4E_8azw&SEqBF`9NvhG1l zetMPyN!NGiBMd<}q6tHMINL8lhE0D}a4zb8R%FJ5LljlJD8eRwQ5SvzpYW>+Ng9x< z%ftn1VNXWGL;{lHp5($CvP^BWZXDS8W6&Rc@WL1XhDvENvc762-; zke397w^C{Pp&olk@(wK6O9Hcg`*H&Ll7!NyCKmyYqaRV!dWYiBhMCffGi#7>Vi|F! z?P#1)b~n)%(vFx&#mj@hE*@tz8mLR)uE zRNSS453;7kZi`C;=DlQx@z)<)6kG@R=re?~D!3vt!?HxI6-zJASTahgngJo2y#R5t zKm)%sP6@+r+=I!^ml1OZ4sh<%BqCcIWx`^1hes9xR}L(@JzaGSt5U-k{UL|^S`aWB z3EN_O5j}9^96S8^g?FJNMET{kg^?-0zDY;&6KI_)>BoqQm8gd`R-4!0Yc3^TTu8+h zo0jZHp(yCLhv>w)cSHCDDMLxyKgx;N=i{H-5axNC6A*}Mc91r%0sfDPH4)tc!lkie zFDu$@_8!xo-XI5QjiBH6HWqJ^u(U@)Vj2=(KE5&SHUtI=9zlDzweDvufhhL)F}mA8^Ty{WE^pz zzZaTCDexD0#Nhyd1v>#!#NTIPpR)5Ai8T}`-)xX9XmrwqB;!ARaSo*`>>uQBeYYoC5# zeo6Mj?=Af?+wxb%%(lt6XtE5@CQXBR%LfuW)`S%H>u?{KwD$#2!xi+aLU&gvr3ii$ zl(Ka|n3Er$BU3FnCbg=5*K&JL6{rAr*zFQ~?B!zQJ^1zEy$)sLK0f?Mngwuk>ttBc zyuP;?^iaNF_gRwnSv*PQ_8yOiWxR#e3(BXyfwOCNWv!z`n5m$2%)C6mH%H{lpJC`) zc@5=pKn~A`5p5~4KNK9BRAT+h!Ht1{Z;fl}uM>^LjB5m`1^{Px%&2;MX(j#U zv;cFn(JFU1%a2+-Ljv!Sk;^Iv%JP$axqM^iec`{z8-;y(!i(l&l72WP zOCp>|2v4JhCYcv!7^y?Xni($j|3;?gQG!U>t{f-AZ6WK($Ivha4lnx)z^%bBOY1{S z8?>#ii<^FS?hEj%B)Pv@1E)2V#}dPf%276rrJwKB*ckqL%3QUIeIXOo$4o(}mVcfz z?}}#|c(*8dJamrEt755cEM8@3WU+iKuB-vyuM_Z7b}c(FT&$a_<);D{S`+ya8xI;b z*DfhbqNC4b6DwynD<^1n^WHwj%vQJ(BA@dMw=Q_lYN5nFb4eIZDt%Nz9RvcrZ=A(> zs%VHEUAo5{>#jrO_gp`e0HNl|Hz_bRA>FzBFlMYL+vXDv94XAgdg3?FqK+vq4eKf`Fjh&EXbzxg! z@pGx_o8NSof;@5QJP&UI$z4|Ia$t26R=$aH+ass@GEikmN!GAJcXZb%MkRZ4f}RAj zaKL}us`#3rlyI|vALjxFwfRskC|?IYQW~BT5mj$9UQz_YV46RGN{Ik;;0fh4p{yA$ zl|E+A@x%Z=_E!cv6cuEe;J$1Mmg7kfpQ z4HM|8NwVfXqBIvG-}&3>2Z|u{98?D_7qe8s3LnwA;Ew=ma1-W};769OH%nscJEE zj$w5WXWL*`YyrWF^nLE^m35f}y8iU^-Rj3$I^Dp%m|(YPJtN|*j!l?>`=If6!0GO$&l z_ndWuxGxD3)neDL*MOT;sZSqbLZcDW(6fpw-vD}8WN8r48_(vxF5pKB1-1nPi%~$U+NcB zt^1{+yE@&mO~SF`Ejv?-cLtXJ;6r}M*pa@MnHAM*H&y_`_vF596FvWV&fqzXVE)GK zY=_aG1bf6vrxR1;o6mku`eDqP5&)=+ITlh2!Zd7n|+$3h2U3mCBtp#6r0S zooa!)F>-xDJ-}vF0P*%bUz|=Wx2%zF$Nj724*Y@p176*{Gxnm(8HZPLbY(J<5)0pJODd}Am8*{wdNj!zoU+S$T~^@- z5f?)H+cMeP3d#kK7Bva{RITj$d#lF50T65L=0dH55gpDn#fq5bf1G@b>}ARN?5h9_ z^W-{|WmYF%z1X(7`zrZBt*coUru5c^uNC%~acuZRy%$(GvTC8ZqqvP9#(s#N`r&lC zet_GHzfqiG@WSU-M5-^@H83Utj$?gw_^pBI%SthTqjN8~Fu}=SU{9Z&<&ru|GK>xL zdWzqw@i(=T5;)+OJBKpNH;Y(mqJ54OCg<@t;2FiN+rJU_{`XWR)Bj3U{#cp*nIiii z=j;3%aqpk^_`jkm|COZt*RY-cS5zg_zgpV!bwym#TTWnitcK8^-T3deXTgjOmeSRlk@ref1-bDNw1ORYg!5#1~Z(C7W z?47+zriy7TonG$Vs;Z%PWICWVQS-(-_s?tJ$y7Such~yt_R)EAvD1lWpHD+sdHTMO zxN<&s(_QGRx_TAVrjvy(CD?*=Z1i7VcklQ|OZTFlk9Fv#hUdR^eFMT96p zW7_UKKlfMAzf%BakcVGU4y`w*5dF}0ReJe0r`h{H?ic9EHNbRLDpk;jnS^+vOm9P5 zw{eX;yR_QKC6-+kHLvI+OhP>1By}@|!p|d;?fs2f%i*4ipf0MBYdt)9+gd@;oJiwA z{1*A^PPSE>+@GtgS+N~7rq_FKymC8EYfm~eX$|X-2A2AXeY-ZE=Xz|@Ht)W$$oQPR z-T8ax+`T++vR|(p_|&;fINM9U2k6c zZ-Cl)kAbj}vUFu>7wfj|orJLiC)%!DN&7%B^TcUi+k2qF36nbz@%Hw-{t7>8chQ}_ z#?}n{*$-EreMz`;4FL~X(d4qYi5Fc-h$5XSlHDH(2iP5i0O40Cm^a+G?GRSu207XV zPg^8}u%>&A1Er7WHtvOY*d~vAE+q-wu|n$r&ih$lK*6yLYmfoDz7W%PwkM3o=n;DW zU*t+zKbY-M@o*pHh&^y=IxpijzX^p|V4sO_B3-E9&mIsGf=mtB2z#)?Q2R5mkuey7 z!G$FD_++O;m=-<_vNrG)yKK2eIQo6&aY}6M1rR(Vw2R%0LSP(Zhb( zX5qzIk+K~1(q6mA@(KW0H1yvxMa7D#a}#!kJpw=$u4@GVQvv-{KK%3=yINw4gc9X!%*gV0{ie&U{luycgf6|`#TIfA0vd>NXsdT97_k|&$qlygn;s=0RP8ug)~ zd4js)sljY{^786gAz;5F8^GL30z@Ja4;xS;)ER<@XwEdyhEQ~{ zbExyV!s>u)fFxFS#LI>lD&YOHv-%MK&2zPu#S@x8FyyeSsd*hjVBPJ~4Tfa);>7!( zg1OqJ+wjyGj&pKs`*m&PYYhgR*?z&4AN@*3Fa*B)Ns zfk>&&L`4wHqK$`KatIh0EZsQLck2$F_AYeU*5z1TpXcX>zgayL8jp!GDI$qn8yP{Z zxE+F)aMhzsJwWqz(QCtcG#-6(8tudD78ERQuK><4Q3r@&CU}W?U%Uw|7nZjGl!yia z;_VBw6BhJ{J4`4=SWNGgV<0Vmj82q1yh+>jn;G#%w^9E1DJ)IH)SWGJefF~vuOO(6 z+MoUfV;2fXtXkT)FdMG5X;7%up7J=cfX$jh^*Am|7cQK4lh`fJ^!kk!-$e&$Fn012 zm`uc?^7V1@j9OVf9GD35$my%XEb9>#(` z@zu)1mOmIe`EI@59aq?K2epyB*?DDs4=aW;UFl{&9q^a1>{bQ|7ZB}}{H;fn0}D*E zBYPk8z>2N~zZwUowzuyO&1lP8F7_s_cG%kCABEJ^40W-FLs{ zbyy51t?xF!^g+$`TJ$+y9&#_AT|k_AKi^Mg%w) z9A0F@25)_i$s`3bUNJeil&U+xZZY>H;SpIzDJPYBNC?V<0%^^pi}E;%{v-@VI=-RX zFA^kN$+Bo|-fnQgpn(zEHh z6){neI)?ehz@o=SA(z7j*vrx9Y z;BmGbexz35Skf_J?zi7L+Q#7Ny6%r8bVn0Lhyr-<2n>^URZ8sy31!S!R35rpj%pn< zLyCjKZC#4=F#0i*iNJz4BD!R8QlIm%3DHmH_<_BcT0D+sq1DKfkIOOj8_#i|^fP@c zur4ycN1EHf85SIBnG46ebi5Am?$sj%;tBYsk=J_U4VI^CBQkN6vJ1l4CG4FOn|%I_ zK!gaL;e`6j@RtGqXX?J=CFuzu0p5h&Ko6vPVpB`C-v%3ZV{0KDlTxZoGU#V}qP|Lx z4V;B?Y4#oB14RY8jlymm>^3P&7_Sw%VhOMJ%BsIKq~NAfwq!@p(okm%GlkCfEpX*G zzTO_)4&nYzpVw!cAex88o8xP46YdZq*EHAb%k({^K6XkfwsOE6m?)>0vafU*tHi3X zGWwQRU&0EAJ{!*qopmQf(~;PNUrVWkSR+$xqdU)Xn~21@7Za>y|1C#R)kBA{Lg=pY zJGoPMbZWKCR7>11G8vnoKm#H{i*Ps|5Crij--ZjX%?a`+!2T!2ZN=aZ`%GL|-^1-g zb=M)2YvHD%`Xs#J_=8Cis>`B@>C&TXu`p~;Yn6P$@c zC{SkHJocdS9~DNAW(C;vDmn23=FAEK!V@8%tw)`WpB>1vkHM;L~9pbbG~ z(6$T1gqtI6pxSJmnKvCeUr@PJ$2Q+8tLdH*_3xyxV(B!U1F`+LA!Ab-G=~Z+mzmaf zu7$1#43##-@N>v0coIDuNXIvLS-Gu#azN9Q2-~un6a$q5nL+{ASS_WIC8#(!nO50i z*M@v^h?tUB8c9#Apc%tqA}lc_*hVOtt)-V@v93iW_3?ab#0CZ(2!aA$m3Sl>uws{( zsc;FUzc`Pt=nOxmA11DI9_XtRdZ~7bd3+?nPk4|MP;z;x=2EJs;?aI%%*{+zc4ub! zsk;FeZ9IT$-&T=4&o-Hcvt8}R(9Sux3Ieeth zZ>5p968)oj=^8+Li|Gf9$~-l%0C*IWsnVg1FbH!;;+56D5QGilk#VeH6+?PSP>F|| zIF@T6%G>2CJah`^0yia{bJU_5%wPdMTxR226x8#D8*pPW>l1PnTVFgQ>SrxM69XegjccCJBrl2iJE}9B=jhrhD^1gy`QLg* zVm&Kt!u9ParOU5Xx%KpV($;=c^?GiURFa57%{_9vP&|kC6MF2IxMnwM;w{AhQ3i@|-wy=p?gqTI9+80>*;so?AzQIR2ab98PGA^-k0NT4?laD6 zk5M2{x_9w|yp!A1IY>(018&(dOJY00!^(v~;?RZ>2!V@8q+8t-e5zz4YRvx3XqoDnM zDBP%FKfil-xXvjNxHlob$My}h*TWw<36vqsqqGxXmYPHJHnuin7{z4x@c6GXyIfcCV1<|_zx(t!z>@Gh{fRu}gE44x+?3pP`*CTq5%|ZvM4P8Z3AR9y zPbF%$ty!6qJ z+xI1(KMIMt_fGpCLjLk3{pFydHxn>?G-oXMtW-R<0l3OtT5xNbr4`fN(sdKI+9DSGJkGFOWhkB< zi@~QlZ&AD`vQ{N$r3>D!JbM?@Fm%7x&w)v4FQ4S3G8?HBbEAM{qol`ukf>D5j@9A1 zyaQN;)g0H6y|bOICkiF1s^tvo$G2*KK<9ueNib7J;Oq%66SU40E&bpsZ#HpI#k||z zAr)7diG<$x+{Knv#I&oJT*`;+!xaHQ4WUUV765XG11RtXUE<>_5pZ<&S*lQ&(@7GE zxUY#440tn*SCAfcX*IW7p_H@)HaapHuG6C*`KpnCRYoI*o`knTnF6Skbz*ZgfQ7A2 zn!0-Qv#eISq_Jb$?PFbutJ%SGOI8W*S`WCLMA3_v0plrIR-Q{yt9r~C>-%sZ?)pG6 zIzH1Q{q(2;y}>=^Al1XOrDrO4A8 zfTy5+3wn=0m{rtD>$ln!#Y=coQ9vE#dJ3W-i!hg{L1hpwiKFN-4U*afyo#h}awPp_ zXD}&BoIT1qlU=^#VXv5%!eX9S&ic8f(TK&IS|7Oyh=k65VYbo^ewEv-iJ_!bv~)C{ zO^|y45=9B7kLx(7%qA_&Ov*n&{@kShr*Ex#`S7%wQZ6YN;{a|^0B;go+;OFNzeDcY zWBameup;?tCf!#TeOvVwF56bK3)*KEiSQqNW442V0hW|_%xnL|s`UD8`lO3EgXx>D zoYvdB`SkNfvate2Q^I=e@SZ2<3h5!<+L$K7__L7_aWJr!8o((`VSmnBe`o(08*fQN zaFby!b=Dc#KuvmCiF?9dXGGI$!+)?72<>Wlt9DY_^W+y8>C%n@=I=Kq{p(?SatplHhIx&zZU!`zT9C)}2O~Lb=21ZB?E0If zn|RoK7{_~sgdgebWPU!+7wgdH~h z@@UlDoZMQ%!A(hNMzpw0mJ7V_N0^ixx2|*SSyTsnzY zs@(M_WjkXy7<-!A!9n?O4Wh@(>ye*kJxd8ZThh= zsOFScn7qjpsyT8CRo`E;>i^u3mrp7M>gxkKl zrcwJ`_Rg&aA6-~f^dHH5S>43heR?A5^CIfonsSli-0xL>hs64)9PPkASEZwmjhRM` z)BxYiWG%!AwcDu#k*JL2Emn)CRS_PdI2HL^4b66A)3%>ZkfYrOfDnSVCJO=#OPk&64UafP2=*Z8dd#}N4OToF zN}dKs^Q23wO#Qx{wlIOH=;f_Lv3xnBhF>Cx9%zeCPjd17)NnD)>i4hkt$qIQ2eT_F zW7hkwojP&AN_BylbuZ2&>^VcO_Bwd*Nyi5S6B2ES?0x$e*c|3FX@5VfFJAe;V#lBZ zxx2q){03tCdK0ic!TMzDKQLXov&TR9FO6;4PT*Bfng4uh(zGpDuZys~^IzZrN&Oq4 z^j~Sye;-8tPu=jpx*(bUTbSH`UOfKa38nwI$N!a3`d^%n|H8BWtAP4H+18(ky8lP9 zbj<(i82#@8DihOxUUch7YvZTr7LxCZdU>NNDLFS=H8{X8&8g?y1f6|kSPw7v+E4IU1QoI5fKUaS{9-UZ*lxPkCnQ57F4nB|m& zK4M@y+YemolM(}#Y5KYWI8k~q5YL#~U=JodwhR$Ii) zYo=O)aKcl*rO}Ee&DF@dTUuqc%Li+QWk6KK(c4=UV#Ji?=kT8rNU^$B!RfozSllbJ zO(d)`rC_`p1KJI_$wW0VI#jzItXB+nkt|0a@ySx%h7hX)iiX3e0gDv5?GTl+B+;Ub zdqD^2Gz?+*P6}2^miaUuO77t4M;Z>ni|4|xa|~!ihzUZS4L<5xi}f%{Dvsv2%a|dt z*hs$-IcEAX1(T__Or2`lG7Qeh*a4ztYuTxJ8n0QpNcg%00vt%=GIUQ$hnlbr#LU{* z(Ab%)>Ejh|DKM-;2yL05wN^iR481r75aDvv)nu6(D#n{DLq=4MY)N>fNCycDQzXg~ z0T@b=?A1KjZpe_a(jZODY@_9AlGY8l#!VI}kf%vrA($-P(7-jFvhxL0NoRTA zJXaJ(r5FLqB zJ11ZPjFT>=q2fduRhaxXXi&{HOe^B|EX!y}_wR#8NVW#AEm~vn zJEUBh$5t;wiozr?-c)5=$hw%dfHDQg2rt!XYeV;kt=JYT_8CiAY29{9V=|!q zD`YZxfTkkUtcEym^I(URb{bZLQ}f%5t#}Q`4KlBhWgsxJ^zGG1f`&4vFnerEtq4z< zRV8k_wM&VLRRidDr-#`2-|GJ?uvx7K#(94n?BQOvh z|GqRhwl43fR;9w)l#rR1=O#QhY*-vycu}X^%TwGg0@I_2o%Gf*-f--M=l4hb26lmnIs~-LLggkz0zg`1yiT z)Zm<>i=)FK1Bs5A)vC(dwl1te{+qoo;iQa_1yP` z`+DS6A53fR*?HL*CK=104V+o&(UAk6F8E%0B1@`dXmrSMQv4ayxZH$IbRG!sfqH7 zV-`&Ar2&CKKv}Dh6<@UeVphHDkfLd`zJjp;m@*JHb#vcwj+uGUQ3fnZy>_BCw#uXV zLsJwuHV4LcmybDOQPu-XiLle}KuI^)Th59M75S0XzqH6wY>H|)>1O!b^MBXK>E zL}3w|ri8$k4?_j)0aK@-Xt2Z&@e6K28Zhu^%bo4RX~9CCs*u<0_vlzI^jAE)-j4%q z%-X6Zhu`iXzAG2xO4T?SdR_$z8$3Q;*~>mR4!;?+H2b^x6&OGC8#_D2 z>Apc~dn-bLE+)OjJ-5_pR@~kjJ8f#Oz0@}IOuXF_UhM4^@^++p%j&!~gxI|9I=MYq zDQ6{xjjxvEJ(@D>GGZz}rqf#45b$|({J4G#8GP6Gs$Z&p+Fss0RB0q^SZ^uJ@(iS=b8kqAAWnB72xRXhu4GB#r-SdHMVxrGVW6~8 zMW|}iukE%R9H!(;gRWZ^x~2jOM2>+ zv$C==wn_-_Y%w+Di^SIbLv!Ym!h|C$~ z#+9_!;67W;43F;JT6dYoj9IDDl&%|FA;!5W*0dN=z+d{uUpuOKWX@ za`qg1VM{aeO^tTu8XwHP&FSm~%xvY;)euVIPu{rMxz(m{ComqI!!TANP^H@kq7}BN zY$xO>1FC2}*p|yA^EMw+<+Mk~IMdG|`eAjAO;%Z64G3S&yc`^l@z0aSF<)grR|=jk zOLI7K?$zjB7csSLTNivM?2hq9-h1}tu|-PI{zLEh=N!v_?j8T$GX1yS@gGOE{*OfV zKLdjQ6#>%tSH-T@b#o|v%;}9?+=4BqA-O`rFr2rVU`{xo!8CF$ z3)`fW7%HkR&m^U^v>QO6cI=%2ixc$@%v|mcX6}5GciM{=vKZ~iK7`CMr@I^9KbEP= zvNaO@a)j}AF+bEP!g!P4Su@0EzhTIiS!$pw5(J@de)!_WXWrfeFvEs9febr7+^(E% z+!5~su~IsApCPZ1;iwq(maini+=dyoCB0${=rHdKWeh`D6EznF8T#vVDU72N-Bbft z$=ABy#dyDj9#)97Cloi{mzAqe_%@NR==z>)?mX+K_=~cw>Rlhqknn~31PK@W0g3OV zfuTm(IgWQD;c~p`KkcZ!2;l?cs)&5f26a#2a6y3b1-=<27J$M!s1GHPZw_PZNH*SV zZ31&7o{=sNT|f#ivUC7b<+s+BzCrhi3{hca5EVvoYJFd|36t@d>|3f9bf&S7N1$>D zJi0G_Msj)pSCJt?fM&tpbjJPw+dBxfU0p&V=cuL^bVTmg$05rJEI&_cFwpU(RsNV` zNVJNNT1MH};qt79n~Di9_HtxIfC;7ANS?VHwS2xBsxAxvLP-5Jwm3OKzdK()i=_;N zY%7WpYSqpZM!Me58_-k8c|$jqmCWBz{VOT>Og&&xsiM;U<1PIyxKnD06W9-t>@2QN z8n;b8<|jRFn;Qpx&$swX+Z(rrwj?hP6$|xw?V8K{c)d4O%fh*3@(C;I7_vPLB_+Tm z?hpcWLjQ~?@vip+mWUa(FuqOA3l(vRzZS+f4cS@VA4=3!R=gbBDG;DHLIK?)LGT@UdP5%LR&hIC8fL>+N5Y}k0TF~+%mQ3;!Or%bPI=9b9PaUlt+pJGh2nyi zC4}aD7$dP)`$e=@(vwJ{@>>uQuv%n0E2N(yG@xU)=q>pxK4Sj*;;$m7zYl;t&_+B7 zbKupD%35Sc=~iCazr)93PGHL<9e1`bXlauhrWs0eO%75~7vO@KQQh>=F5|8x2-rDq zbc|`w|KcFx?L4YMPE|SOP)$&#C#&AK%C<;_WlQ~|(YCgC##wDicnYdnWLCR^6BEWx zf(os#@Tmfos)v`h)NIvxj>?7@0v5f=!zJpuRm3D+BIsn=p9J7*Rbv);2p~k`jRk7y zdl5~7N9oRGP<0l4o+Z& zgH&@qL2uR;yWY@(v_7Bq7|}XUv6t)TFum1QeySsiL&;0h9-*RH{HT=>+^t$Q+)rde zIgLlM5ct*8${xj~Zczo+e3;J5eB5E=@CFKWWBz1q-mXk}frHTIIC*=>elgZr(SN&A z=R!hC6L(z>tP0-nm&HpWY_$;HY)mza8(JI+haI&q@OAj166c*AUR*fQlbb}O1wN$A zAfNq)LuKAhYUODp*g!wA$kQ7|h6SV|DR*5A%evVx7sXACNJ?$Wtml}x*;gBG^c=hq z)BYP|@36f!DkBKwE;3iW5-KV%GAaV9c9HN~p!!%p3P>|>F^qXR9H5$64p4x5#gSCK zT95{E=ucG&)Nc}Uw+s(qee2=hL{6#iKup|YAA{u8)No=Q#{#>$xnfJo0K%)?6eL>= zsUxf?2_|DBP+C;#G0?8nZaC_FP)3HGXc_!zqy)+VPz|zdLLVC}`ADMpHQY`|lL{dD|Gvh*b1nbM<^Mfe`bT)!ABB!l>^~OOzgGW#7ubKV zf2_YB<}Z$x&a1E6q)8xoU+QibK}j>~VKGx1EC297x0QN2 zVJ{a?IvCl~XRc>(9#$6iq@qvU8ViAHNSPEmDq0yp< zeBErjJA}14F8AfdjfA3@>4Z_-7*xz00FEv;_~3st|KwAEApI@YGt(E6jAnTBcfRDc zRG7WT@cB2|ZM8T140y~tlod7$OvE{E6V%(>lBD*+Ze@cI&EB9dF#Bj9F*#SPw7lkUs zg+1*}3`gczesOdI2*pBUg6YZ}`3Yx;gv=E!8UU2wNdn~h2;x+>_QFAIYB;Ig)vM*- zhVmNEI0dq)VsV4c(tg^7#lb`ySAg~el92i`6XpH%Xb{)357m*0r%6?_=LTYd(VA!WCgGzd5jE4?dEA%^&uYdW)yi7?81D6?heh38a3@8$|{MVNj2%+zzeGu}n&eKLC7=DRN3DPo+ zw8ZYT%^Q%=WMZ=RrZk$4)P05JxPeHW$8!?jWl1S8edr)ttU;TYFmc%AdomT!ORegZ-{-;PXAxOf$#YSp_2Ne{iLbbMM{B@H_)gWJ_M$DpjO!5uwC#b$@Rv)26l?I+c@>L^F* z4*W<*l@}dRg4ne->We!r8IZ!N)}}J`xRA;eo-lX%ruwERQDB5rC4SU4m0q4IX-+;8 zS&qn~iFu)Y0wGjl{}1osPCphrpq7ClMTMmGJQd+kdpopw5iVVNkHd@My4N;K`Du}a zOo%CUw3KS955t(-L68lZp)nESRP=iSOKP3NTs{EfG8aMDMCwvc6fhzEj@wDIm-cZ@ z(IU^uT#ftk`DPeHQr^Hbd%cXs%=^Jp43I0e{}O@o{X2`rG?DFw2u63tl1= zq8TrM>ztz}|;bH(Db)Y^5Du%#AgiFX_kU(=5#7bjM{z zFX{`Le}L1&-_|2QK#&?J$ey7u9JjgJK&-TeR0FzxRf^?xfn z|JN|>Ka`#S4AcI9FFSvlzyHb81Ab?7{>8FWud!;sD)u*?{#Om6v}y_zlZ&M}As+dP zR9iC$|6zs&+Ph}#mnR7pG43w4Sli&;lxw3M=AX4oYXD@p`G^1QuJg_2~6MIYZd2kw%XtGqt1d*EULQie0^xP5-iVWcTAM(n!lf-pT?XtoI8Y|G>Q@XTYSYw+f4?YFy5 z4W{EMjO*;QFr3MPb!%TQ29uCkd)sOliO2V6EEr7WwqDpTblPySnLQ+H4#}Qj9!X5v znLtqsq(b!g!e&I8JW~?W(m;$QD1z=`U9?+AAs?pUy-3)dNgg<-2jt4vYdc#{Z%MDzX8CPS`B&$MmIDwhadZ8ItJxi#tL880s zo2Yzg3_FaTWMJdP228Idi@}d4H?n!A)_V=(ISSyju&KV`SooTH38Zf z^g^`@Bt*?)=ch#%YUdRV)4bFiUQuoD1iGc?-rcjow3!BwXFZs+N0p!yyJFTRSs%fu zicKy|2_$1-kT@yZ9tV|P5f|dPBGw?woK-g=(q^hdk=zkoL7NR1$~EjC--j5Mebpj19!>wbPg zp-LI|rHL^!$2!UCq<}{;J-yvR9)ekkf)+{~ABDn{E2T#liO{7mo+5V*4X9U7V}p>xnVa-ZBPXT}A?-DrQR-xktYTH8Xv2L&CQf^0?T^}xZD=;^ z`NDDJ#Eq_`GN$C$?p935(^XBGC}2q3ThE6}>u<@c*E)l&B7Fhou7TkI7c^;2FJfd; z_@pKX79CWUt`(*7WT;{zNIk+x-6lIROy)MMg0-F(|WGRqdGQ&aY z5N6>pm9QHFLo*1U)%*n@-j3mgMB1$haOR&i_T_rV1QzS2IbB0#DZAvE+c;{@5(e5F zZJ3>O%iZ$w z)wN`qVn*}J| zbuBmoyP4FbXokb({2XYd1?LLs4>`t*Ah^kH%*nw_as0~(eQWV5k zFi3t`t@mU1FdS~m3JwppON7IM3W}UPoLv;#ZK|m8>$C?4DGFce zSW!xP_6gAtrwEZZGniVkAR%DQd60!GFY3KS33Vb$5CP+6h8)B`3d3)Y6B+A7bUF>{ zZ_Krx7rAd*A8rKY(Ue>NIY**lZ8;X-zn0)Bgv}zSy&|cLPyU!Q9=Q|MkLRv0g7^Uk zSpYI=#1c>i=HB7pH(;k}ROGm`~ za_^C%wx;+;^;%^PIdU1}hwW%)ZmYC@6y@z$9Gpu&wySvtV|x5y-x@xfr5nG((!z4S zEVtk<@rUz=54*Y<2+)cfyE>Sk)2Dz?8rMM!`mBu(6TS?e@SQ>4FY z5gW7V89VZoG-`(l$*&voOYTjU7?9UXc@L_+VBqJy9!-qR*r(!066IcCx;$Yvt)*YK zS>8~2ceS8-WR}e4&*i9TewRiMql%hF38);n1RbWoB$Xo#l$p36cRZKA#|Tp6lbNAV z=j=oOI%bbtrQxYAAt?-4>3G57kR<~OM@_|Idq|~1GKoD;dE#3VX{?&221jwT-J|<0 z)wo|o6`!RP1%t;L)VLfyZ@=94wo-^P?ZLxv|Km;S;}WC#SPB zCts#JJ9-9AZ;eMh+eFq*XTT|LOkpoxeHn)wA3VaMf}9<@bIi@g{=Ji9&)AgTL9euB z+pVcCOOAyI3|hXPkhX(n!#-xt^kr8situ6#oTUKDZr-{iLgdDwyo5;o26RZL=cO=C zwMnx!w-kc<{k?9?#?OZA#wAG)Z(@{zztT~Ec*pea1oy`)GAoblfzew{0j$f;ZUDOy zURN@tE_C+6jrsrUEs8-!jdiDR7K=0xx!8k_fWvW*_!^3od4b~=>PG>P7>w7;#NaNI zY<^pq`qunK{^aFN&TvK~ssZw(&$4vvb6EM)hdY!R(%}di;)<{kixBHd#|s1#!gIHx zhXE318>%RY8wEm1RIIOvmEq`=8Nn^Ztlm&7q3Q^CxBDCIL-O(7cL)eiK8Qk!nb6S& zpE#?{d(*~Ey{wVA5LY-*;Mbx2nfDx^S^b1h(A31e$$tkBY=0Yz{3m<#pLwg_^2vYa zt$rtn{r#)|32*iHHU4?$f9X7ba#erOQ~w25{GtE+PtwuY{)2?W%E`g`SFuDt?x_9l zz;$KS6um-QpMg$SmkL)o=ko9WJ8ekrScQ5K#fV{n(TYGaIhib_P11t3|S%3At{IoYpjP|?7`}!&(O$Nh5 z7IekRCC5u;DQDY^9Hu#{W{i>b_M#eWg_Gl=PDpWSRer=vS%4DFNhJo!Nf^Q4bF1$p zx|dUv5GXkXw4#AidI~VGg1uU~*Y9(ky<0m3K;oqBsB6jO3aWRvRa?V!8NFV(nzeMv zk~X!;sz)lC+k)g!!g!OCT4B*G63jO@bv)Xh7J+P;1+-)Yz5FaQW+_?WXO$+NTPic7 zO=s09XuL&H`1)$eR(R!{>;()oH`uMbB?@D?4~M?a3|13@<^&bts&*{^)eCT#D1fq`L3i_9lmQ_J)ns3H+4; z7MYTdFogK3y{uY>#DZ?Za&Kals0M48`ZcGiD$o1^ee?ssnA9{an*J#mSsV>oq@gq3l z%Q|r)h}U!>(Lnh?9&#ihT{#-i&_B#?7D?@Yx<*RS!v$HelIV7SE5M#g_pYp6>FD~_ zu2s@8B=~+I1ulyGFVn3k#xE#e zd~Vg*GTghRtDhG2;U(R??R9ed_tJy<9>W44H^uum3pL93vjDvdE}(9l`B=sJNO z;dDI@vNL|Pnu;wNngE)$#VgjkzHP=&R1$61DC#MS6+e~V{?j=pmY3#4j}4k`dPcJ; z8l9!Me}-P2E(SX)EL&UH$yXvkZ2?%pR59Wm!xt2_D<_AAs|o#J$&$0o?w&w2HoWF1%ZHu)_$z2DP$AaM-v`fe^kpQvwD zB0tfQu%wu&AcNB-l&x#15OP5t%y&hDx~0M7#a%-Ma+sBMVxzl5dRjrPf8q?S3A`B1 z6fa#U<_L6=((MEkEc6K>B3!KZO3Rz+{*Zd_Q7%OWp2F7N?dR$4^0R_PgXXR2bbren z61p-LJfGFdoT^GGtsx@TVsa!CU!e-#uk)0QS^-MRfl*Y;VSJ!p>&1QmyU(5 z`VehLF!x5$bowgvq5fjR5dB@mC-3$qM*Mrwkc`$aoo^G|2c_ZcP8+$QUj?VSX+#@y z&vofRLsl2wIsJk&@wLQ$j%dz0i$R14Ov{v;U=M2EnW<_>z4!LP`udRBpg#~O3%p%X zDl?J3eALr50G{BD;B_aYxu0EJRyebtLlG4ei|s`(=nZ&kjGJxkq0t&h>p0?72G1mw zXoMHTkD2>YD1Z~@!d~QVNWyvSHq#EiF){;z*S*=Rm(wlEJsSAz;THq~NWxE{vC3L& zK%#mc(YjSg0G@CHuV7OV${t9rL95e7WSKrzLU6Dz68`(toHdUduc

      &ifM|9j-y) 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 literal 401941 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≷Xdn-oI6se`~b=sxJS7n*3j@%fF`oE9C!%EdLg# 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 )GOzT??MEQ8q}?3*S9S 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ⅈo@_H@d>`4TN-?f=RQu=(ms3B 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%0DEtA991aJwByUvY}$`pkhvjKQod7Gqc-o8gxT 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 X*U8(LT|)@1L0VjC*f0~z$x8nR+rzDo diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.stex b/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.stex index 4c45880bca..8cf79f18b3 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.stex +++ b/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.stex @@ -20,8 +20,8 @@ \author{Timothy A. Davis \\ Dept. of Computer and Information Science and Engineering \\ Univ. of Florida, Gainesville, FL} -\title{UMFPACK Version 4.4 User Guide} -\date{Jan. 28, 2005} +\title{UMFPACK Version 5.1 User Guide} +\date{May 31, 2007} \maketitle %------------------------------------------------------------------------------- @@ -38,26 +38,38 @@ Univ. of Florida, Gainesville, FL} Technical Report TR-04-003 (revised) -UMFPACK Version 4.4 (Jan. 28, 2005), Copyright\copyright 2005 by Timothy A. -Davis. All Rights Reserved. +UMFPACK Version 5.1, Copyright\copyright 1995-2006 by Timothy A. Davis. +All Rights Reserved. +UMFPACK is available under alternate licences; contact T. Davis for details. {\bf UMFPACK License:} Your use or distribution of UMFPACK or any modified version of UMFPACK implies that you agree to this License. - THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY - EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. - - Permission is hereby granted to use or copy this program, provided - that the Copyright, this License, and the Availability of the original - version is retained on all copies. User documentation of any code that - uses UMFPACK or any modified version of UMFPACK code must cite the - Copyright, this License, the Availability note, and ``Used by permission.'' - Permission to modify the code and to distribute modified code is granted, - provided the Copyright, this License, and the Availability note are - retained, and a notice that the code was modified is included. This - software was developed with support from the National Science Foundation, - and is provided to you free of charge. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + USA + + Permission is hereby granted to use or copy this program under the + terms of the GNU LGPL, provided that the Copyright, this License, + and the Availability of the original version is retained on all copies. + User documentation of any code that uses this code or any modified + version of this code must cite the Copyright, this License, the + Availability note, and "Used by permission." Permission to modify + the code and to distribute modified code is granted, provided the + Copyright, this License, and the Availability note are retained, + and a notice that the code was modified is included. {\bf Availability:} http://www.cise.ufl.edu/research/sparse/umfpack @@ -83,7 +95,7 @@ Davis. All Rights Reserved. %------------------------------------------------------------------------------- UMFPACK\footnote{Pronounced with two syllables: umph-pack} -Version 4.4 is a set of routines for solving systems of linear +Version 5.0 is a set of routines for solving systems of linear equations, $\m{Ax}=\m{b}$, when $\m{A}$ is sparse and unsymmetric. It is based on the Unsymmetric-pattern MultiFrontal method \cite{DavisDuff97,DavisDuff99}. UMFPACK factorizes @@ -257,13 +269,13 @@ http://www.cise.ufl.edu/tech-reports. %------------------------------------------------------------------------------- In addition to appearing as a Collected Algorithm of the ACM, -UMFPACK Version 4.4 is available at http://www.cise.ufl.edu/research/sparse. -Version 4.3 is included as a built-in routine in MATLAB -7.1. Version 4.0 (in MATLAB 6.5) +UMFPACK is available at http://www.cise.ufl.edu/research/sparse. +It is included as a built-in routine in MATLAB. +Version 4.0 (in MATLAB 6.5) does not have the symmetric or 2-by-2 strategies and it takes less advantage of the level-3 BLAS \cite{DaydeDuff99,ACM679a,ATLAS,GotoVandeGeijn02}. -Version 4.4 (and v4.3 through v4.1) tend to be much faster than Version 4.0, +Versions 5.0 through v4.1 tend to be much faster than Version 4.0, particularly on unsymmetric matrices with mostly symmetric nonzero pattern (such as finite element and circuit simulation matrices). Version 3.0 and following make @@ -284,6 +296,43 @@ Subroutine Library. A detailed list of changes is in the {\tt ChangeLog} file. +%------------------------------------------------------------------------------- +\subsection{Version 5.1.0} +%------------------------------------------------------------------------------- + +Port of MATLAB interface to 64-bit MATLAB. + +%------------------------------------------------------------------------------- +\subsection{Version 5.0.3} +%------------------------------------------------------------------------------- + +Renamed the MATLAB function to {\tt umfpack2}, so as not to confict with +itself (the MATLAB built-in version of UMFPACK). + +%------------------------------------------------------------------------------- +\subsection{Version 5.0} +%------------------------------------------------------------------------------- + +Changed {\tt long} to {\tt UF\_long}, controlled by the {\tt UFconfig.h} +file. A {\tt UF\_long} is normally just {\tt long}, except on the Windows 64 +(WIN64) platform. In that case, it becomes {\tt \_\_int64}. + +%------------------------------------------------------------------------------- +\subsection{Version 4.6} +%------------------------------------------------------------------------------- + +Added additional options to {\tt umf\_solve.c}. + +%------------------------------------------------------------------------------- +\subsection{Version 4.5} +%------------------------------------------------------------------------------- + +Added function pointers for malloc, calloc, realloc, free, printf, hypot, +and complex divisiion, so that these functions can be redefined at run-time. +Added a version number so you can determine the +version of UMFPACK at run time or compile time. UMFPACK requires AMD v2.0 +or later. + %------------------------------------------------------------------------------- \subsection{Version 4.4} %------------------------------------------------------------------------------- @@ -382,7 +431,7 @@ or MATLAB user: %------------------------------------------------------------------------------- The easiest way to use UMFPACK is within MATLAB. Version 4.3 is a built-in -routine in MATLAB 7.1, and is used in {\tt x = A}$\backslash${\tt b} when +routine in MATLAB 7.0.4, and is used in {\tt x = A}$\backslash${\tt b} when {\tt A} is sparse, square, unsymmetric (or symmetric but not positive definite), and with nonzero entries that are not confined in a narrow band. It is also used for the {\tt [L,U,P,Q] = lu (A)} usage of {\tt lu}. @@ -621,14 +670,7 @@ and uses less memory. If the space is not large enough during factorization, it is increased via {\tt mxRealloc}. However, {\tt mxMalloc} and {\tt mxRealloc} abort the {\tt umfpack} mexFunction -if they fail, so this strategy does not work in MATLAB. The strategy works fine -when {\tt malloc} or the internal memory allocator {\tt utMalloc} are used -instead, since those routines return {\tt NULL} on failure, and do not terminate -the mexFunction. The {\tt umfpack} mexFunction can be compiled to use -{\tt utMalloc}, but this is an internal undocumented utility routine in MATLAB, -and thus using {\tt utMalloc} might not always be successful. -To use the documented {\tt mxMalloc} routine instead, compile the -mexFunction with the {\tt -DNUTIL} flag enabled. +if they fail, so this strategy does not work in MATLAB. To compute the determinant with UMFPACK: @@ -651,9 +693,9 @@ include file. All but three of the routines come in four versions, with different sizes of integers and for real or complex floating-point numbers: \begin{enumerate} \item {\tt umfpack\_di\_*}: real double precision, {\tt int} integers. -\item {\tt umfpack\_dl\_*}: real double precision, {\tt long} integers. +\item {\tt umfpack\_dl\_*}: real double precision, {\tt UF\_long} integers. \item {\tt umfpack\_zi\_*}: complex double precision, {\tt int} integers. -\item {\tt umfpack\_zl\_*}: complex double precision, {\tt long} integers. +\item {\tt umfpack\_zl\_*}: complex double precision, {\tt UF\_long} integers. \end{enumerate} where {\tt *} denotes the specific name of one of the routines. Routine names beginning with {\tt umf\_} are internal to the package, @@ -663,7 +705,7 @@ The other three routines are the same for all four versions. In addition, the C-callable AMD library distributed with UMFPACK includes 4 user-callable routines (in two versions with {\tt int} and -{\tt long} integers) and one include file. Refer to the AMD documentation +{\tt UF\_long} integers) and one include file. Refer to the AMD documentation for more details. Use only one version for any one problem; do not attempt to use one version @@ -672,7 +714,7 @@ to analyze the matrix and another version to factorize the matrix, for example. The notation {\tt umfpack\_di\_*} refers to all user-callable routines for the real double precision and {\tt int} integer case. The notation {\tt umfpack\_*\_numeric}, for example, refers all four versions -(real/complex, int/long) of a single operation +(real/complex, int/UF\_long) of a single operation (in this case numeric factorization). %------------------------------------------------------------------------------- @@ -681,7 +723,7 @@ for the real double precision and {\tt int} integer case. The notation The {\tt umfpack\_di\_*} and {\tt umfpack\_zi\_*} routines use {\tt int} integer arguments; those starting with {\tt umfpack\_dl\_} or {\tt umfpack\_zl\_} -use {\tt long} integer arguments. If you compile UMFPACK in the standard +use {\tt UF\_long} integer arguments. If you compile UMFPACK in the standard ILP32 mode (32-bit {\tt int}'s, {\tt long}'s, and pointers) then the versions are essentially identical. You will be able to solve problems using up to 2GB of memory. If you compile UMFPACK in the standard LP64 mode, the size of an @@ -696,7 +738,7 @@ architectures, and are not portable. UMFPACK and AMD should be compiled in the same mode. If you compile UMFPACK and AMD in the LP64 mode, be sure to add {\tt -DLP64} to the compilation command. See the examples in -{\tt Make.alpha}, {\tt Make.sgi}, and {\tt Make.solaris}. +the {\tt UFconfig/UFconfig.mk} file. %------------------------------------------------------------------------------- \subsection{Real and complex floating-point} @@ -794,12 +836,12 @@ with {\tt nz} entries. For the {\tt int} version of UMFPACK: \end{verbatim} } -For the {\tt long} version of UMFPACK: +For the {\tt UF\_long} version of UMFPACK: {\footnotesize \begin{verbatim} - long Ap [n+1] ; - long Ai [nz] ; + UF_long Ap [n+1] ; + UF_long Ai [nz] ; double Ax [nz] ; \end{verbatim} } @@ -973,12 +1015,12 @@ four arrays. For the {\tt int} version of UMFPACK: \end{verbatim} } -For the {\tt long} version: +For the {\tt UF\_long} version: {\footnotesize \begin{verbatim} - long Ti [nz] ; - long Tj [nz] ; + UF_long Ti [nz] ; + UF_long Tj [nz] ; double Tx [nz] ; \end{verbatim} } @@ -1057,10 +1099,9 @@ however. Refer to the discussion of on how to compute these operations in your own code. The only primary matrix operation not provided by UMFPACK is the multiplication of two sparse matrices \cite{Gustavson78}. -A future package under development (as of Jan. 2005), CHOLMOD, -will provide many of these matrix operations, which +The CHOLMOD provides many of these matrix operations, which can then be used in conjunction with UMFPACK. -Watch my web page for details. +See my web page for details. %------------------------------------------------------------------------------- \subsection{Getting the contents of opaque objects} @@ -1255,7 +1296,7 @@ Two new timing routines are provided in UMFPACK Version 4.1 and following, {\tt sysconf} and {\tt times} routines to find both the CPU time and wallclock time. These three routines are the only user-callable -routine that is identical in all four {\tt int}/{\tt long}, real/complex +routine that is identical in all four {\tt int}/{\tt UF\_long}, real/complex versions (there is no {\tt umfpack\_di\_timer} routine, for example). %------------------------------------------------------------------------------- @@ -1465,7 +1506,7 @@ In this case, no {\tt Symbolic} or {\tt Numeric} object was created. \item {\tt UMFPACK\_ERROR\_internal\_error}, (-911): An internal error has occurred, of unknown cause. This is either a bug in UMFPACK, or the result of a memory overrun from your program. - Try modifying the file {\tt AMD/Source/amd\_internal.h} and adding + Try modifying the file {\tt AMD/Include/amd\_internal.h} and adding the statement {\tt \#undef NDEBUG}, to enable the debugging mode. Recompile UMFPACK and rerun your program. A failed assertion might occur which @@ -1514,13 +1555,15 @@ values, and calling sequences of the routines in one category. Variables with the same name as those already listed in a prior category have the same size and type. -The real, {\tt long} integer {\tt umfpack\_dl\_*} routines are +The real, {\tt UF\_long} integer {\tt umfpack\_dl\_*} routines are identical to the real, {\tt int} routines, except that {\tt \_di\_} is replaced -with {\tt \_dl\_} in the name, and all {\tt int} arguments become {\tt long}. -Similarly, the complex, {\tt long} integer {\tt umfpack\_zl\_*} routines are +with {\tt \_dl\_} in the name, and all {\tt int} arguments become +{\tt UF\_long}. +Similarly, the complex, {\tt UF\_long} integer {\tt umfpack\_zl\_*} routines are identical to the complex, {\tt int} routines, except that {\tt \_zi\_} is replaced -with {\tt \_zl\_} in the name, and all {\tt int} arguments become {\tt long}. +with {\tt \_zl\_} in the name, and all {\tt int} arguments become +{\tt UF\_long}. Only the real and complex {\tt int} versions are listed in the synopsis below. The matrix $\m{A}$ is {\tt m}-by-{\tt n} with {\tt nz} entries. @@ -1806,7 +1849,7 @@ UMFPACK makes use of the AMD ordering package for its symmetric ordering strategy. You may also use these four user-callable routines in your own C programs. You need to include the {\tt amd.h} file only if you make direct calls to the AMD routines themselves. The {\tt int} versions are summarized -below; {\tt long} versions are also available. Refer to the AMD User Guide +below; {\tt UF\_long} versions are also available. Refer to the AMD User Guide for more information, or to the file {\tt amd.h} which documents these routines. {\footnotesize @@ -1955,7 +1998,7 @@ Access to the complex routines in UMFPACK is provided by the interface routines in {\tt umf4\_f77zwrapper.c}. The following is a synopsis of each routine. All the arguments are the same as the real versions, except {\tt Az}, {\tt xz}, and {\tt bz} are the imaginary parts of -the matrix, solution, and right-hand-side, respectively. The +the matrix, solution, and right-hand side, respectively. The {\tt Ax}, {\tt x}, and {\tt b} are the real parts. {\footnotesize @@ -1993,23 +2036,17 @@ Unix, or in Windows with Cygwin\footnote{www.cygwin.com}. You can skip this section and go to next one if all you want to use is the UMFPACK and AMD mexFunctions in MATLAB. -You will need to install both UMFPACK v4.4 and AMD v1.1 (or AMD v1.0) to use UMFPACK. +You will need to install both UMFPACK v5.0 and AMD v2.0 to use UMFPACK. The {\tt UMFPACK} and {\tt AMD} subdirectories must be placed side-by-side within the same directory. AMD is a stand-alone package that is required by UMFPACK. UMFPACK can be compiled without the BLAS \cite{DaydeDuff99,ACM679a,ATLAS,GotoVandeGeijn02}, but your performance will be much less than what it should be. -System-dependent configurations are in the {\tt AMD/Make} -and {\tt UMFPACK/Make} directories (the \newline -{\tt UMFPACK/Make} directory is actually -just a symbolic link to {\tt AMD/Make}\footnote{Windows might not extract -the symbolic link {\tt UMFPACK/Make} correctly. If it doesn't, simply -create the {\tt UMFPACK/Make} folder by copying it from {\tt AMD/Make}.}). -You can edit the {\tt Make.include} -files in either of those directories to customize the compilation. The default +System-dependent configurations are in the {\tt UFconfig/UFconfig.mk} +file. The default settings will work on most systems, except that UMFPACK will be compiled so -that it does not use the BLAS. Sample configuration files are provided +that it does not use the BLAS. Sample configurations are provided for Linux, Sun Solaris, SGI IRIX, IBM AIX, and the DEC/Compaq Alpha. To compile and install both packages, @@ -2021,74 +2058,67 @@ compiled and tested in the {\tt UMFPACK/Demo} directory. The outputs of these demo programs will then be compared with output files in the distribution. Expect to see a few differences, such as residual norms, compile-time control settings, and perhaps memory usage -differences. The AMD and UMFPACK mexFunctions for -use in MATLAB will also be compiled. If you do not have MATLAB 6.0 or -later, type {\tt make lib} instead. +differences. + +To use {\tt make} to compile the MATLAB mexFunctions for MATLAB +and AMD, you can either type {\tt make mex} in the UMFPACK directory. +You may first need to edit the {\tt UFconfig/UFconfig.mk} file to +modify the definition of the {\tt MEX}, if you have a version of MATLAB +older than Version 7.2. Remove the {\tt -largeArrayDims} definition. +If you use the MATLAB command {\tt umfpack\_make} in the MATLAB directory, +then this case is handled for you automatically. -If you have the GNU version of {\tt make}, the {\tt Source/GNUmakefile} and +If you have the GNU version of {\tt make}, the {\tt Lib/GNUmakefile} and {\tt MATLAB/GNUmakefile} files are used. These are much more concise than what the ``old'' version of {\tt make} can handle. If you do not have -GNU {\tt make}, the {\tt Source/Makefile} and {\tt MATLAB/Makefile} files +GNU {\tt make}, the {\tt Lib/Makefile} and {\tt MATLAB/Makefile} files are used instead. Each UMFPACK source file is compiled into four -versions ({\tt double} / complex, and {\tt int} / {\tt long}). A proper +versions ({\tt double} / complex, and {\tt int} / {\tt UF\_long}). A proper old-style {\tt Makefile} is cumbersome in this case, so these two {\tt Makefile}'s have been constructed by brute force. They ignore dependencies, and simply compile everything. I highly recommend using GNU {\tt make} if you wish to modify UMFPACK. -If you compile UMFPACK and AMD and then later change the {\tt Make.include} -file or your system-specific configuration file such as {\tt Make.linux}, +If you compile UMFPACK and AMD and then later change the +{\tt UFconfig/UFconfig.mk} file then you should type {\tt make purge} and then {\tt make} to recompile. Here are the various parameters that you can control in your -{\tt Make.include} file: +{\tt UFconfig/UFconfig.mk} file: \begin{itemize} \item {\tt CC = } your C compiler, such as {\tt cc}. \item {\tt RANLIB = } your system's {\tt ranlib} program, if needed. \item {\tt CFLAGS = } optimization flags, such as {\tt -O}. - Add {\tt -DLP64} if you are compiling in 64-bit mode - (32 bit {\tt int}'s, 64 bit {\tt long}'s, and 64 bit pointers). -\item {\tt CONFIG = } configuration settings for the BLAS, memory allocation - routines, and timing routines. +\item {\tt UMFPACK\_CONFIG = } configuration settings for the BLAS, + memory allocation routines, and timing routines. \item {\tt LIB = } your libraries, such as {\tt -lm} or {\tt -lblas}. \item {\tt RM =} the command to delete a file. \item {\tt MV =} the command to rename a file. \item {\tt MEX =} the command to compile a MATLAB mexFunction. If you are using MATLAB 5, you need to add {\tt -DNBLAS} and - {\tt -DNUTIL} to this command. An example is provided in - the {\tt Make/Make.include} file. + {\tt -DNUTIL} to this command. \item {\tt F77 =} the command to compile a Fortran program (optional). \item {\tt F77FLAGS =} the Fortran compiler flags (optional). \item {\tt F77LIB =} the Fortran libraries (optional). \end{itemize} -The {\tt CONFIG} string can include combinations of the following; +The {\tt UMFPACK\_CONFIG} string can include combinations of the following; most deal with how the BLAS are called: \begin{itemize} \item {\tt -DNBLAS} if you do not have any BLAS at all. -\item {\tt -DCBLAS} if you have the C-BLAS \cite{ATLAS}. \item {\tt -DNSUNPERF} if you are on Solaris but do not have the Sun Performance Library (for the BLAS). -\item {\tt -DNSCSL} if you on SGI IRIX but do not have the SCSL BLAS library. -\item {\tt -DLONGBLAS} if your BLAS can take {\tt long} integer input - arguments. If not defined, then the {\tt umfpack\_*l\_*} versions of - UMFPACK that use {\tt long} integers do not call the BLAS. - This flag is set internally when using the Sun Performance BLAS - or SGI's SCSL BLAS (both have 64-bit versions of the BLAS). -\item Options for controlling how C calls the Fortran BLAS: - {\tt -DBLAS\_BY\_VALUE}, {\tt -DBLAS\_NO\_UNDERSCORE}, - and {\tt -DBLAS\_CHAR\_ARG}. These are set automatically for Windows, +\item {\tt -DLONGBLAS} if your BLAS takes non-{\tt int} integer arguments. +\item {\tt -DBLAS\_INT = } the integer used by the BLAS. + +\item {\tt -DBLAS\_NO\_UNDERSCORE} + for controlling how C calls the Fortran BLAS. + This is set automatically for Windows, Sun Solaris, SGI Irix, Red Hat Linux, Compaq Alpha, and - AIX (the IBM RS 6000). They are ignored if you are using - the C-BLAS interface to the BLAS. + AIX (the IBM RS 6000). + \item {\tt -DGETRUSAGE} if you have the {\tt getrusage} function. -\item {\tt -DNUTIL} if you wish to compile the MATLAB-callable - UMFPACK mexFunction with the {\tt mxMalloc}, {\tt mxRealloc} - and {\tt mxFree} routines, instead of the undocumented (but - superior) {\tt utMalloc}, {\tt utRealloc}, and {\tt utFree} - routines. The default is to use the {\tt ut*} routines on - Unix, and the {\tt mx*} routines on Windows. \item {\tt -DNPOSIX} if you do not have the POSIX-compliant {\tt sysconf} and {\tt times} routines used by {\tt umfpack\_tic} and {\tt umfpack\_toc}. @@ -2150,11 +2180,12 @@ program, unless you directly call AMD routines. You only need the statement, as described in Section~\ref{Synopsis}. If you would like to compile both 32-bit and 64-bit versions of the libraries, -you will need to do it in two steps. Modify your {\tt Make/Make.} +you will need to do it in two steps. Modify your {\tt UFconfig/UFconfig.mk} file, and select the 32-bit option. Type {\tt make} in the {\tt UMFPACK} directory, which creates the {\tt UMFPACK/Lib/libumfpack.a} and {\tt AMD/Lib/libamd.a} libraries. Rename those two files. Edit your -{\tt Make/Make.} and select the 64-bit option. Type {\tt make purge}, +{\tt UFconfig/UFconfig.mk} file and select the 64-bit option. +Type {\tt make purge}, and then {\tt make}, and you will create the 64-bit libraries. You can use the same {\tt umfpack.h} include file for both 32-bit and 64-bit versions. Simply link your program with the appropriate 32-bit @@ -2181,13 +2212,13 @@ to compile the stand-alone AMD mexFunction (this is not required to compile the UMFPACK mexFunction). This works on any computer with MATLAB, including Windows. -You will be prompted to select several configuration options, including -whether or not to use the BLAS. -MATLAB 5.3 (or earlier) does not include the BLAS, so you either have to -compile UMFPACK without the BLAS (UMFPACK will be slow), or modify your -{\tt /bin/mexopts.sh} by adding your BLAS library -to the {\tt CLIBS} string, -where {\tt } is the directory in which MATLAB is installed. +% You will be prompted to select several configuration options, including +% whether or not to use the BLAS. +% MATLAB 5.3 (or earlier) does not include the BLAS, so you either have to +% compile UMFPACK without the BLAS (UMFPACK will be slow), or modify your +% {\tt /bin/mexopts.sh} by adding your BLAS library +% to the {\tt CLIBS} string, +% where {\tt } is the directory in which MATLAB is installed. If you are using Windows and the {\tt lcc} compiler bundled with MATLAB 6.1, then you may need to copy the @@ -2264,12 +2295,16 @@ all of these warnings. \label{Future} %------------------------------------------------------------------------------- -Here are a few features that are not in UMFPACK Version 4.4, in no particular +Here are a few features that are not in the current version of UMFPACK, +in no particular order. They may appear in a future release of UMFPACK. If you are interested, let me know and I could consider including them: \begin{enumerate} +\item Remove the restriction that the column-oriented form be given with + sorted columns. This has already been done in AMD Version 2.0. + \item Future versions may have different default {\tt Control} parameters. Future versions may return more statistics in the {\tt Info} array, and they may use more entries in the {\tt Control} array. @@ -2286,10 +2321,12 @@ let me know and I could consider including them: solver that could be used to write a MATLAB mexFunction {\tt x = lu\_refine (A, b, L, U, P, Q, R)} that gives MATLAB access to the iterative refinement algorithm with sparse backward error - analysis. It would also be easier to handle sparse right-hand-sides + analysis. It would also be easier to handle sparse right-hand sides in this data structure, and end up with good asymptotic run-time in this case (particularly for $\m{Lx}=\m{b}$; see \cite{GilbertPeierls88}). + See also CSparse and + CXSparse for software for handling sparse right-hand sides. \item Complex absolute value computations could be based on FDLIBM (see \newline @@ -2302,6 +2339,8 @@ let me know and I could consider including them: \item The solve routines could handle multiple right-hand sides, and sparse right-hand sides. See {\tt umfpack\_solve} for the MATLAB version of this feature. + See also CSparse and + CXSparse for software for handling sparse right-hand sides. \item An option to redirect the error and diagnostic output. @@ -2312,15 +2351,8 @@ let me know and I could consider including them: to C and included in UMFPACK. This would result in better performance for matrices from circuit simulation and chemical process engineering. See {\tt umfpack\_btf.m} for the MATLAB - version of this feature. An upcoming package (KLU) will include - this feature. - -\item The ability to use user-provided {\tt malloc}, {\tt free}, and - {\tt realloc} memory allocation routines. Note that UMFPACK makes very - few calls to these routines. You can do this at compile-time by - modifying the definitions of {\tt ALLOCATE}, {\tt FREE}, and - {\tt REALLOCATE} in the file {\tt umf\_internal.h}. Be sure to document - your changes carefully when you change UMFPACK source code. + version of this feature. KLU includes this feature. + See also {\tt cs\_dmperm} in CSparse and CXSparse. \item The ability to use user-provided work arrays, so that {\tt malloc}, {\tt free}, and {\tt realloc} realloc are not called. The @@ -2334,6 +2366,8 @@ let me know and I could consider including them: time proportional to the number of nonzeros in the upper bound of $\m{U}$. The method used in UMFPACK exploits super-columns, however, so this bound is rarely reached. + See {\tt cs\_counts} in CSparse and CXSparse, + and {\tt cholmod\_analyze} in CHOLMOD. \item Other basic sparse matrix operations, such as sparse matrix multiplication, could be included. @@ -2356,7 +2390,7 @@ let me know and I could consider including them: The include files are the same for all four versions of UMFPACK. The generic integer type is {\tt Int}, which is an {\tt int} or -{\tt long}, depending on which version of UMFPACK you are using. +{\tt UF\_long}, depending on which version of UMFPACK you are using. \subsection{umfpack\_*\_symbolic} diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/lesser.txt b/deal.II/contrib/umfpack/UMFPACK/Doc/lesser.txt new file mode 100644 index 0000000000..8add30ad59 --- /dev/null +++ b/deal.II/contrib/umfpack/UMFPACK/Doc/lesser.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/UFconfig.h b/deal.II/contrib/umfpack/UMFPACK/Include/UFconfig.h new file mode 100644 index 0000000000..91bbeac32c --- /dev/null +++ b/deal.II/contrib/umfpack/UMFPACK/Include/UFconfig.h @@ -0,0 +1,113 @@ +/* ========================================================================== */ +/* === UFconfig.h =========================================================== */ +/* ========================================================================== */ + +/* Configuration file for SuiteSparse: a Suite of Sparse matrix packages + * (AMD, COLAMD, CCOLAMD, CAMD, CHOLMOD, UMFPACK, CXSparse, and others). + * + * UFconfig.h provides the definition of the long integer. On most systems, + * a C program can be compiled in LP64 mode, in which long's and pointers are + * both 64-bits, and int's are 32-bits. Windows 64, however, uses the LLP64 + * model, in which int's and long's are 32-bits, and long long's and pointers + * are 64-bits. + * + * SuiteSparse packages that include long integer versions are + * intended for the LP64 mode. However, as a workaround for Windows 64 + * (and perhaps other systems), the long integer can be redefined. + * + * If _WIN64 is defined, then the __int64 type is used instead of long. + * + * The long integer can also be defined at compile time. For example, this + * could be added to UFconfig.mk: + * + * CFLAGS = -O -D'UF_long=long long' -D'UF_long_max=9223372036854775801' \ + * -D'UF_long_id="%lld"' + * + * This file defines UF_long as either long (on all but _WIN64) or + * __int64 on Windows 64. The intent is that a UF_long is always a 64-bit + * integer in a 64-bit code. ptrdiff_t might be a better choice than long; + * it is always the same size as a pointer. + * + * This file also defines the SUITESPARSE_VERSION and related definitions. + * + * Copyright (c) 2007, University of Florida. No licensing restrictions + * apply to this file or to the UFconfig directory. Author: Timothy A. Davis. + */ + +#ifndef _UFCONFIG_H +#define _UFCONFIG_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/* ========================================================================== */ +/* === UF_long ============================================================== */ +/* ========================================================================== */ + +#ifndef UF_long + +#ifdef _WIN64 + +#define UF_long __int64 +#define UF_long_max _I64_MAX +#define UF_long_id "%I64d" + +#else + +#define UF_long long +#define UF_long_max LONG_MAX +#define UF_long_id "%ld" + +#endif +#endif + +/* ========================================================================== */ +/* === SuiteSparse version ================================================== */ +/* ========================================================================== */ + +/* SuiteSparse is not a package itself, but a collection of packages, some of + * which must be used together (UMFPACK requires AMD, CHOLMOD requires AMD, + * COLAMD, CAMD, and CCOLAMD, etc). A version number is provided here for the + * collection itself. The versions of packages within each version of + * SuiteSparse are meant to work together. Combining one packge from one + * version of SuiteSparse, with another package from another version of + * SuiteSparse, may or may not work. + * + * SuiteSparse Version 3.0.0 contains the following packages: + * + * AMD version 2.2.0 + * CAMD version 2.2.0 + * COLAMD version 2.7.0 + * CCOLAMD version 2.7.0 + * CHOLMOD version 1.5.0 + * CSparse version 2.2.0 + * CXSparse version 2.2.0 + * KLU version 1.0.0 + * BTF version 1.0.0 + * LDL version 2.0.0 + * UFconfig version number is the same as SuiteSparse + * UMFPACK version 5.1.0 + * RBio version 1.1.0 + * UFcollection version 1.1.0 + * + * Other package dependencies: + * BLAS required by CHOLMOD and UMFPACK + * LAPACK required by CHOLMOD + * METIS 4.0.1 required by CHOLMOD (optional) and KLU (optional) + */ + +#define SUITESPARSE_DATE "May 31, 2007" +#define SUITESPARSE_VER_CODE(main,sub) ((main) * 1000 + (sub)) +#define SUITESPARSE_MAIN_VERSION 3 +#define SUITESPARSE_SUB_VERSION 0 +#define SUITESPARSE_SUBSUB_VERSION 0 +#define SUITESPARSE_VERSION \ + SUITESPARSE_VER_CODE(SUITESPARSE_MAIN_VERSION,SUITESPARSE_SUB_VERSION) + +#ifdef __cplusplus +} +#endif +#endif diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack.h index d41f1b34b4..d972559b94 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -19,6 +19,17 @@ #ifndef UMFPACK_H #define UMFPACK_H +/* -------------------------------------------------------------------------- */ +/* Make it easy for C++ programs to include UMFPACK */ +/* -------------------------------------------------------------------------- */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* define UF_long */ +#include "UFconfig.h" + /* -------------------------------------------------------------------------- */ /* size of Info and Control arrays */ /* -------------------------------------------------------------------------- */ @@ -76,40 +87,89 @@ #include "umfpack_timer.h" #include "umfpack_tictoc.h" +/* AMD */ +#include "../../AMD/Include/amd.h" + +/* global function pointers */ +#include "umfpack_global.h" + /* -------------------------------------------------------------------------- */ /* Version, copyright, and license */ /* -------------------------------------------------------------------------- */ -#define UMFPACK_VERSION "UMFPACK V4.4 (Jan. 28, 2005)" +#define UMFPACK_VERSION "UMFPACK V5.1.0 (May 31, 2007)" #define UMFPACK_COPYRIGHT \ -"UMFPACK: Copyright (c) 2005 by Timothy A. Davis. All Rights Reserved.\n" +"UMFPACK: Copyright (c) 2005-2006 by Timothy A. Davis. All Rights Reserved.\n" #define UMFPACK_LICENSE_PART1 \ "\nUMFPACK License:\n" \ "\n" \ +" UMFPACK is available under alternate licenses,\n" \ +" contact T. Davis for details.\n" \ +"\n" \ " Your use or distribution of UMFPACK or any modified version of\n" \ " UMFPACK implies that you agree to this License.\n" \ "\n" \ -" THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY\n" \ -" EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK.\n" +" This library is free software; you can redistribute it and/or\n" \ +" modify it under the terms of the GNU Lesser General Public\n" \ +" License as published by the Free Software Foundation; either\n" \ +" version 2.1 of the License, or (at your option) any later version.\n" \ +"\n" \ +" This library is distributed in the hope that it will be useful,\n" \ +" but WITHOUT ANY WARRANTY; without even the implied warranty of\n" \ +" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n" \ +" Lesser General Public License for more details.\n" \ +"\n" \ +" You should have received a copy of the GNU Lesser General Public\n" \ +" License along with this library; if not, write to the Free Software\n" \ +" Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301\n" \ +" USA\n" \ + #define UMFPACK_LICENSE_PART2 \ "\n" \ -" Permission is hereby granted to use or copy this program, provided\n" \ -" that the Copyright, this License, and the Availability of the original\n" \ -" version is retained on all copies. User documentation of any code that\n" \ -" uses UMFPACK or any modified version of UMFPACK code must cite the\n" \ -" Copyright, this License, the Availability note, and \"Used by permission.\"\n" +" Permission is hereby granted to use or copy this program under the\n" \ +" terms of the GNU LGPL, provided that the Copyright, this License,\n" \ +" and the Availability of the original version is retained on all copies.\n" \ +" User documentation of any code that uses this code or any modified\n" \ +" version of this code must cite the Copyright, this License, the\n" \ +" Availability note, and \"Used by permission.\" Permission to modify\n" \ +" the code and to distribute modified code is granted, provided the\n" \ +" Copyright, this License, and the Availability note are retained,\n" \ +" and a notice that the code was modified is included.\n" + #define UMFPACK_LICENSE_PART3 \ -" Permission to modify the code and to distribute modified code is granted,\n" \ -" provided the Copyright, this License, and the Availability note are\n" \ -" retained, and a notice that the code was modified is included. This\n" \ -" software was developed with support from the National Science Foundation,\n" \ -" and is provided to you free of charge.\n" \ "\n" \ "Availability: http://www.cise.ufl.edu/research/sparse/umfpack\n" \ "\n" +/* UMFPACK Version 4.5 and later will include the following definitions. + * As an example, to test if the version you are using is 4.5 or later: + * + * #ifdef UMFPACK_VER + * if (UMFPACK_VER >= UMFPACK_VER_CODE (4,5)) ... + * #endif + * + * This also works during compile-time: + * + * #if defined(UMFPACK_VER) && (UMFPACK >= UMFPACK_VER_CODE (4,5)) + * printf ("This is version 4.5 or later\n") ; + * #else + * printf ("This is an early version\n") ; + * #endif + * + * Versions 4.4 and earlier of UMFPACK do not include a #define'd version + * number, although they do include the UMFPACK_VERSION string, defined + * above. + */ + +#define UMFPACK_DATE "May 31, 2007" +#define UMFPACK_VER_CODE(main,sub) ((main) * 1000 + (sub)) +#define UMFPACK_MAIN_VERSION 5 +#define UMFPACK_SUB_VERSION 1 +#define UMFPACK_SUBSUB_VERSION 0 +#define UMFPACK_VER UMFPACK_VER_CODE(UMFPACK_MAIN_VERSION,UMFPACK_SUB_VERSION) + /* -------------------------------------------------------------------------- */ /* contents of Info */ /* -------------------------------------------------------------------------- */ @@ -128,7 +188,7 @@ /* computed in UMFPACK_*symbolic: */ #define UMFPACK_SIZE_OF_INT 4 /* sizeof (int) */ -#define UMFPACK_SIZE_OF_LONG 5 /* sizeof (long) */ +#define UMFPACK_SIZE_OF_LONG 5 /* sizeof (UF_long) */ #define UMFPACK_SIZE_OF_POINTER 6 /* sizeof (void *) */ #define UMFPACK_SIZE_OF_ENTRY 7 /* sizeof (Entry), real or complex */ #define UMFPACK_NDENSE_ROW 8 /* number of dense rows */ @@ -371,4 +431,8 @@ /* Integer constants are used for status and solve codes instead of enum */ /* to make it easier for a Fortran code to call UMFPACK. */ +#ifdef __cplusplus +} +#endif + #endif /* UMFPACK_H */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_col_to_triplet.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_col_to_triplet.h index fdfde6e6d1..948a65ecf8 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_col_to_triplet.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_col_to_triplet.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -15,11 +15,11 @@ int umfpack_di_col_to_triplet int Tj [ ] ) ; -long umfpack_dl_col_to_triplet +UF_long umfpack_dl_col_to_triplet ( - long n_col, - const long Ap [ ], - long Tj [ ] + UF_long n_col, + const UF_long Ap [ ], + UF_long Tj [ ] ) ; int umfpack_zi_col_to_triplet @@ -29,11 +29,11 @@ int umfpack_zi_col_to_triplet int Tj [ ] ) ; -long umfpack_zl_col_to_triplet +UF_long umfpack_zl_col_to_triplet ( - long n_col, - const long Ap [ ], - long Tj [ ] + UF_long n_col, + const UF_long Ap [ ], + UF_long Tj [ ] ) ; /* @@ -43,10 +43,10 @@ double int Syntax: int n_col, *Tj, *Ap, status ; status = umfpack_di_col_to_triplet (n_col, Ap, Tj) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" - long n_col, *Tj, *Ap, status ; + UF_long n_col, *Tj, *Ap, status ; status = umfpack_dl_col_to_triplet (n_col, Ap, Tj) ; complex int Syntax: @@ -55,10 +55,10 @@ complex int Syntax: int n_col, *Tj, *Ap, status ; status = umfpack_zi_col_to_triplet (n_col, Ap, Tj) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" - long n_col, *Tj, *Ap, status ; + UF_long n_col, *Tj, *Ap, status ; status = umfpack_zl_col_to_triplet (n_col, Ap, Tj) ; Purpose: diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_defaults.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_defaults.h index 8f3ff5ee4c..a588d4f652 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_defaults.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_defaults.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -35,7 +35,7 @@ double int Syntax: double Control [UMFPACK_CONTROL] ; umfpack_di_defaults (Control) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" double Control [UMFPACK_CONTROL] ; @@ -47,7 +47,7 @@ complex int Syntax: double Control [UMFPACK_CONTROL] ; umfpack_zi_defaults (Control) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" double Control [UMFPACK_CONTROL] ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_numeric.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_numeric.h index e1d81163ed..986a6ab0d9 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_numeric.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -35,7 +35,7 @@ double int Syntax: void *Numeric ; umfpack_di_free_numeric (&Numeric) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Numeric ; @@ -47,7 +47,7 @@ complex int Syntax: void *Numeric ; umfpack_zi_free_numeric (&Numeric) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" void *Numeric ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_symbolic.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_symbolic.h index c9806e528b..ad3aeb6072 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_symbolic.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -35,7 +35,7 @@ double int Syntax: void *Symbolic ; umfpack_di_free_symbolic (&Symbolic) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Symbolic ; @@ -47,7 +47,7 @@ complex int Syntax: void *Symbolic ; umfpack_zi_free_symbolic (&Symbolic) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" void *Symbolic ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_determinant.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_determinant.h index e568674dfd..702c1f17bf 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_determinant.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_determinant.h @@ -3,9 +3,10 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ +/* UMFPACK_get_determinant contributed by David Bateman, Motorola, Paris. */ /* -------------------------------------------------------------------------- */ int umfpack_di_get_determinant @@ -16,7 +17,7 @@ int umfpack_di_get_determinant double User_Info [UMFPACK_INFO] ) ; -long umfpack_dl_get_determinant +UF_long umfpack_dl_get_determinant ( double *Mx, double *Ex, @@ -33,7 +34,7 @@ int umfpack_zi_get_determinant double User_Info [UMFPACK_INFO] ) ; -long umfpack_zl_get_determinant +UF_long umfpack_zl_get_determinant ( double *Mx, double *Mz, @@ -51,11 +52,11 @@ double int Syntax: double Mx, Ex, Info [UMFPACK_INFO] ; status = umfpack_di_get_determinant (&Mx, &Ex, Numeric, Info) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Numeric ; - long status ; + UF_long status ; double Mx, Ex, Info [UMFPACK_INFO] ; status = umfpack_dl_get_determinant (&Mx, &Ex, Numeric, Info) ; @@ -71,7 +72,7 @@ complex int Syntax: #include "umfpack.h" void *Numeric ; - long status ; + UF_long status ; double *Mx, *Mz, *Ex, Info [UMFPACK_INFO] ; status = umfpack_zl_get_determinant (&Mx, &Mz, &Ex, Numeric, Info) ; @@ -79,6 +80,8 @@ packed complex int Syntax: Same as above, except Mz is NULL. +Author: Contributed by David Bateman, Motorola, Paris + Purpose: Using the LU factors and the permutation vectors contained in the Numeric @@ -189,4 +192,5 @@ Arguments: obtaining the determinant is used, the overflow has already occurred. + */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_lunz.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_lunz.h index 62381e52ed..512cffa973 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_lunz.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_lunz.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -18,13 +18,13 @@ int umfpack_di_get_lunz void *Numeric ) ; -long umfpack_dl_get_lunz +UF_long umfpack_dl_get_lunz ( - long *lnz, - long *unz, - long *n_row, - long *n_col, - long *nz_udiag, + UF_long *lnz, + UF_long *unz, + UF_long *n_row, + UF_long *n_col, + UF_long *nz_udiag, void *Numeric ) ; @@ -38,13 +38,13 @@ int umfpack_zi_get_lunz void *Numeric ) ; -long umfpack_zl_get_lunz +UF_long umfpack_zl_get_lunz ( - long *lnz, - long *unz, - long *n_row, - long *n_col, - long *nz_udiag, + UF_long *lnz, + UF_long *unz, + UF_long *n_row, + UF_long *n_col, + UF_long *nz_udiag, void *Numeric ) ; @@ -53,29 +53,33 @@ double int Syntax: #include "umfpack.h" void *Numeric ; - int status, lnz, unz, n_row, n_col ; - status = umfpack_di_get_lunz (&lnz, &unz, &n_row, &n_col, Numeric) ; + int status, lnz, unz, n_row, n_col, nz_udiag ; + status = umfpack_di_get_lunz (&lnz, &unz, &n_row, &n_col, &nz_udiag, + Numeric) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Numeric ; - long status, lnz, unz, n_row, n_col ; - status = umfpack_dl_get_lunz (&lnz, &unz, &n_row, &n_col, Numeric) ; + UF_long status, lnz, unz, n_row, n_col, nz_udiag ; + status = umfpack_dl_get_lunz (&lnz, &unz, &n_row, &n_col, &nz_udiag, + Numeric) ; complex int Syntax: #include "umfpack.h" void *Numeric ; - int status, lnz, unz, n_row, n_col ; - status = umfpack_zi_get_lunz (&lnz, &unz, &n_row, &n_col, Numeric) ; + int status, lnz, unz, n_row, n_col, nz_udiag ; + status = umfpack_zi_get_lunz (&lnz, &unz, &n_row, &n_col, &nz_udiag, + Numeric) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" void *Numeric ; - long status, lnz, unz, n_row, n_col ; - status = umfpack_zl_get_lunz (&lnz, &unz, &n_row, &n_col, Numeric) ; + UF_long status, lnz, unz, n_row, n_col, nz_udiag ; + status = umfpack_zl_get_lunz (&lnz, &unz, &n_row, &n_col, &nz_udiag, + Numeric) ; Purpose: diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_numeric.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_numeric.h index f071f2375f..45ba0e6218 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_numeric.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -24,18 +24,18 @@ int umfpack_di_get_numeric void *Numeric ) ; -long umfpack_dl_get_numeric +UF_long umfpack_dl_get_numeric ( - long Lp [ ], - long Lj [ ], + UF_long Lp [ ], + UF_long Lj [ ], double Lx [ ], - long Up [ ], - long Ui [ ], + UF_long Up [ ], + UF_long Ui [ ], double Ux [ ], - long P [ ], - long Q [ ], + UF_long P [ ], + UF_long Q [ ], double Dx [ ], - long *do_recip, + UF_long *do_recip, double Rs [ ], void *Numeric ) ; @@ -56,18 +56,18 @@ int umfpack_zi_get_numeric void *Numeric ) ; -long umfpack_zl_get_numeric +UF_long umfpack_zl_get_numeric ( - long Lp [ ], - long Lj [ ], + UF_long Lp [ ], + UF_long Lj [ ], double Lx [ ], double Lz [ ], - long Up [ ], - long Ui [ ], + UF_long Up [ ], + UF_long Ui [ ], double Ux [ ], double Uz [ ], - long P [ ], - long Q [ ], + UF_long P [ ], + UF_long Q [ ], double Dx [ ], double Dz [ ], - long *do_recip, + UF_long *do_recip, double Rs [ ], void *Numeric ) ; @@ -82,11 +82,11 @@ double int Syntax: status = umfpack_di_get_numeric (Lp, Lj, Lx, Up, Ui, Ux, P, Q, Dx, &do_recip, Rs, Numeric) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Numeric ; - long *Lp, *Lj, *Up, *Ui, *P, *Q, status, do_recip ; + UF_long *Lp, *Lj, *Up, *Ui, *P, *Q, status, do_recip ; double *Lx, *Ux, *Dx, *Rs ; status = umfpack_dl_get_numeric (Lp, Lj, Lx, Up, Ui, Ux, P, Q, Dx, &do_recip, Rs, Numeric) ; @@ -100,16 +100,16 @@ complex int Syntax: status = umfpack_zi_get_numeric (Lp, Lj, Lx, Lz, Up, Ui, Ux, Uz, P, Q, Dx, Dz, &do_recip, Rs, Numeric) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" void *Numeric ; - long *Lp, *Lj, *Up, *Ui, *P, *Q, status, do_recip ; + UF_long *Lp, *Lj, *Up, *Ui, *P, *Q, status, do_recip ; double *Lx, *Lz, *Ux, *Uz, *Dx, *Dz, *Rs ; status = umfpack_zl_get_numeric (Lp, Lj, Lx, Lz, Up, Ui, Ux, Uz, P, Q, Dx, Dz, &do_recip, Rs, Numeric) ; -packed complex int/long Syntax: +packed complex int/UF_long Syntax: Same as above, except Lz, Uz, and Dz are all NULL. @@ -226,13 +226,15 @@ Arguments: Int *do_recip ; Output argument. - If do_recip is returned as zero (false), then the scale factors Rs [i] - are to be used by multiplying row i by Rs [i]. Otherwise, the entries - in row i are to be divided by Rs [i]. + This argument defines how the scale factors Rs are to be interpretted. + + If do_recip is TRUE (one), then the scale factors Rs [i] are to be used + by multiplying row i by Rs [i]. Otherwise, the entries in row i are to + be divided by Rs [i]. If UMFPACK has been compiled with gcc, or for MATLAB as either a built-in routine or as a mexFunction, then the NRECIPROCAL flag is - set, and do_recip will always be zero (false). + set, and do_recip will always be FALSE (zero). double Rs [n_row] ; Output argument. diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_symbolic.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_symbolic.h index d509e1ecb8..21b7cc2531 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_symbolic.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -28,23 +28,23 @@ int umfpack_di_get_symbolic void *Symbolic ) ; -long umfpack_dl_get_symbolic +UF_long umfpack_dl_get_symbolic ( - long *n_row, - long *n_col, - long *n1, - long *nz, - long *nfr, - long *nchains, - long P [ ], - long Q [ ], - long Front_npivcol [ ], - long Front_parent [ ], - long Front_1strow [ ], - long Front_leftmostdesc [ ], - long Chain_start [ ], - long Chain_maxrows [ ], - long Chain_maxcols [ ], + UF_long *n_row, + UF_long *n_col, + UF_long *n1, + UF_long *nz, + UF_long *nfr, + UF_long *nchains, + UF_long P [ ], + UF_long Q [ ], + UF_long Front_npivcol [ ], + UF_long Front_parent [ ], + UF_long Front_1strow [ ], + UF_long Front_leftmostdesc [ ], + UF_long Chain_start [ ], + UF_long Chain_maxrows [ ], + UF_long Chain_maxcols [ ], void *Symbolic ) ; @@ -68,23 +68,23 @@ int umfpack_zi_get_symbolic void *Symbolic ) ; -long umfpack_zl_get_symbolic +UF_long umfpack_zl_get_symbolic ( - long *n_row, - long *n_col, - long *n1, - long *nz, - long *nfr, - long *nchains, - long P [ ], - long Q [ ], - long Front_npivcol [ ], - long Front_parent [ ], - long Front_1strow [ ], - long Front_leftmostdesc [ ], - long Chain_start [ ], - long Chain_maxrows [ ], - long Chain_maxcols [ ], + UF_long *n_row, + UF_long *n_col, + UF_long *n1, + UF_long *nz, + UF_long *nfr, + UF_long *nchains, + UF_long P [ ], + UF_long Q [ ], + UF_long Front_npivcol [ ], + UF_long Front_parent [ ], + UF_long Front_1strow [ ], + UF_long Front_leftmostdesc [ ], + UF_long Chain_start [ ], + UF_long Chain_maxrows [ ], + UF_long Chain_maxcols [ ], void *Symbolic ) ; @@ -102,10 +102,10 @@ double int Syntax: Front_leftmostdesc, Chain_start, Chain_maxrows, Chain_maxcols, Symbolic) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" - long status, n_row, n_col, nz, nfr, nchains, *P, *Q, + UF_long status, n_row, n_col, nz, nfr, nchains, *P, *Q, *Front_npivcol, *Front_parent, *Front_1strow, *Front_leftmostdesc, *Chain_start, *Chain_maxrows, *Chain_maxcols ; void *Symbolic ; @@ -126,10 +126,10 @@ complex int Syntax: Front_leftmostdesc, Chain_start, Chain_maxrows, Chain_maxcols, Symbolic) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" - long status, n_row, n_col, nz, nfr, nchains, *P, *Q, + UF_long status, n_row, n_col, nz, nfr, nchains, *P, *Q, *Front_npivcol, *Front_parent, *Front_1strow, *Front_leftmostdesc, *Chain_start, *Chain_maxrows, *Chain_maxcols ; void *Symbolic ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_global.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_global.h new file mode 100644 index 0000000000..51c64dd304 --- /dev/null +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_global.h @@ -0,0 +1,22 @@ +/* ========================================================================== */ +/* === umfpack_global ======================================================= */ +/* ========================================================================== */ + +/* -------------------------------------------------------------------------- */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ +/* web: http://www.cise.ufl.edu/research/sparse/umfpack */ +/* -------------------------------------------------------------------------- */ + +/* prototypes for global variables, and basic operators for complex values */ + +#ifndef EXTERN +#define EXTERN extern +#endif + +EXTERN double (*umfpack_hypot) (double, double) ; +EXTERN int (*umfpack_divcomplex) (double, double, double, double, double *, double *) ; + +double umf_hypot (double x, double y) ; +int umf_divcomplex (double, double, double, double, double *, double *) ; + diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_numeric.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_numeric.h index 29d65963eb..0b84c99978 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_numeric.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -14,7 +14,7 @@ int umfpack_di_load_numeric char *filename ) ; -long umfpack_dl_load_numeric +UF_long umfpack_dl_load_numeric ( void **Numeric, char *filename @@ -26,7 +26,7 @@ int umfpack_zi_load_numeric char *filename ) ; -long umfpack_zl_load_numeric +UF_long umfpack_zl_load_numeric ( void **Numeric, char *filename @@ -41,10 +41,10 @@ double int Syntax: void *Numeric ; status = umfpack_di_load_numeric (&Numeric, filename) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" - long status ; + UF_long status ; char *filename ; void *Numeric ; status = umfpack_dl_load_numeric (&Numeric, filename) ; @@ -57,10 +57,10 @@ complex int Syntax: void *Numeric ; status = umfpack_zi_load_numeric (&Numeric, filename) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" - long status ; + UF_long status ; char *filename ; void *Numeric ; status = umfpack_zl_load_numeric (&Numeric, filename) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_symbolic.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_symbolic.h index fe70ecfb3b..8bd572894e 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_symbolic.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -14,7 +14,7 @@ int umfpack_di_load_symbolic char *filename ) ; -long umfpack_dl_load_symbolic +UF_long umfpack_dl_load_symbolic ( void **Symbolic, char *filename @@ -26,7 +26,7 @@ int umfpack_zi_load_symbolic char *filename ) ; -long umfpack_zl_load_symbolic +UF_long umfpack_zl_load_symbolic ( void **Symbolic, char *filename @@ -41,10 +41,10 @@ double int Syntax: void *Symbolic ; status = umfpack_di_load_symbolic (&Symbolic, filename) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" - long status ; + UF_long status ; char *filename ; void *Symbolic ; status = umfpack_dl_load_symbolic (&Symbolic, filename) ; @@ -57,10 +57,10 @@ complex int Syntax: void *Symbolic ; status = umfpack_zi_load_symbolic (&Symbolic, filename) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" - long status ; + UF_long status ; char *filename ; void *Symbolic ; status = umfpack_zl_load_symbolic (&Symbolic, filename) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_numeric.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_numeric.h index f97d68396b..d871ef18e2 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_numeric.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -19,10 +19,10 @@ int umfpack_di_numeric double Info [UMFPACK_INFO] ) ; -long umfpack_dl_numeric +UF_long umfpack_dl_numeric ( - const long Ap [ ], - const long Ai [ ], + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], void *Symbolic, void **Numeric, @@ -41,10 +41,10 @@ int umfpack_zi_numeric double Info [UMFPACK_INFO] ) ; -long umfpack_zl_numeric +UF_long umfpack_zl_numeric ( - const long Ap [ ], - const long Ai [ ], + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], const double Az [ ], void *Symbolic, void **Numeric, @@ -61,11 +61,11 @@ double int Syntax: double *Ax, Control [UMFPACK_CONTROL], Info [UMFPACK_INFO] ; status = umfpack_di_numeric (Ap, Ai, Ax, Symbolic, &Numeric, Control, Info); -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Symbolic, *Numeric ; - long *Ap, *Ai, status ; + UF_long *Ap, *Ai, status ; double *Ax, Control [UMFPACK_CONTROL], Info [UMFPACK_INFO] ; status = umfpack_dl_numeric (Ap, Ai, Ax, Symbolic, &Numeric, Control, Info); @@ -78,11 +78,11 @@ complex int Syntax: status = umfpack_zi_numeric (Ap, Ai, Ax, Az, Symbolic, &Numeric, Control, Info) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" void *Symbolic, *Numeric ; - long *Ap, *Ai, status ; + UF_long *Ap, *Ai, status ; double *Ax, *Az, Control [UMFPACK_CONTROL], Info [UMFPACK_INFO] ; status = umfpack_zl_numeric (Ap, Ai, Ax, Az, Symbolic, &Numeric, Control, Info) ; @@ -281,13 +281,10 @@ Arguments: collection then occurs. The strategy of attempting to "malloc" a working space, and - re-trying with a smaller space, may not work under MATLAB, since - mxMalloc aborts the mexFunction if it fails. The built-in umfpack - routine in MATLAB 6.5 uses utMalloc instead, which - avoids this problem. As a mexFunction, utMalloc is used unless - -DNUTIL is defined at compile time. The utMalloc routine, and - utFree and utRealloc, are not documented. If the mexFunction - doesn't work, then compile it with -DNUTIL instead. + re-trying with a smaller space, may not work when UMFPACK is used + as a mexFunction MATLAB, since mxMalloc aborts the mexFunction if it + fails. This issue does not affect the use of UMFPACK as a part of + the built-in x=A\b in MATLAB 6.5 and later. If you are using the umfpack mexFunction, decrease the magnitude of Control [UMFPACK_ALLOC_INIT] if you run out of memory in MATLAB. diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_qsymbolic.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_qsymbolic.h index f93de8589e..00f9cd44d1 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_qsymbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_qsymbolic.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -21,14 +21,14 @@ int umfpack_di_qsymbolic double Info [UMFPACK_INFO] ) ; -long umfpack_dl_qsymbolic +UF_long umfpack_dl_qsymbolic ( - long n_row, - long n_col, - const long Ap [ ], - const long Ai [ ], + UF_long n_row, + UF_long n_col, + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], - const long Qinit [ ], + const UF_long Qinit [ ], void **Symbolic, const double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO] @@ -47,14 +47,14 @@ int umfpack_zi_qsymbolic double Info [UMFPACK_INFO] ) ; -long umfpack_zl_qsymbolic +UF_long umfpack_zl_qsymbolic ( - long n_row, - long n_col, - const long Ap [ ], - const long Ai [ ], + UF_long n_row, + UF_long n_col, + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], const double Az [ ], - const long Qinit [ ], + const UF_long Qinit [ ], void **Symbolic, const double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO] @@ -70,11 +70,11 @@ double int Syntax: status = umfpack_di_qsymbolic (n_row, n_col, Ap, Ai, Ax, Qinit, &Symbolic, Control, Info) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Symbolic ; - long n_row, n_col, *Ap, *Ai, *Qinit, status ; + UF_long n_row, n_col, *Ap, *Ai, *Qinit, status ; double Control [UMFPACK_CONTROL], Info [UMFPACK_INFO], *Ax ; status = umfpack_dl_qsymbolic (n_row, n_col, Ap, Ai, Ax, Qinit, &Symbolic, Control, Info) ; @@ -88,11 +88,11 @@ complex int Syntax: status = umfpack_zi_qsymbolic (n_row, n_col, Ap, Ai, Ax, Az, Qinit, &Symbolic, Control, Info) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" void *Symbolic ; - long n_row, n_col, *Ap, *Ai, *Qinit, status ; + UF_long n_row, n_col, *Ap, *Ai, *Qinit, status ; double Control [UMFPACK_CONTROL], Info [UMFPACK_INFO], *Ax, *Az ; status = umfpack_zl_qsymbolic (n_row, n_col, Ap, Ai, Ax, Az, Qinit, &Symbolic, Control, Info) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_control.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_control.h index 607185c1a6..361a353d87 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_control.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_control.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -35,7 +35,7 @@ double int Syntax: double Control [UMFPACK_CONTROL] ; umfpack_di_report_control (Control) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" double Control [UMFPACK_CONTROL] ; @@ -47,7 +47,7 @@ complex int Syntax: double Control [UMFPACK_CONTROL] ; umfpack_zi_report_control (Control) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" double Control [UMFPACK_CONTROL] ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_info.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_info.h index 0f7970903a..5822721eb5 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_info.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_info.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -39,7 +39,7 @@ double int Syntax: double Control [UMFPACK_CONTROL], Info [UMFPACK_INFO] ; umfpack_di_report_info (Control, Info) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" double Control [UMFPACK_CONTROL], Info [UMFPACK_INFO] ; @@ -51,7 +51,7 @@ complex int Syntax: double Control [UMFPACK_CONTROL], Info [UMFPACK_INFO] ; umfpack_zi_report_info (Control, Info) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" double Control [UMFPACK_CONTROL], Info [UMFPACK_INFO] ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_matrix.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_matrix.h index 831d32ca34..0d17e2df3c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_matrix.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_matrix.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -19,14 +19,14 @@ int umfpack_di_report_matrix const double Control [UMFPACK_CONTROL] ) ; -long umfpack_dl_report_matrix +UF_long umfpack_dl_report_matrix ( - long n_row, - long n_col, - const long Ap [ ], - const long Ai [ ], + UF_long n_row, + UF_long n_col, + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], - long col_form, + UF_long col_form, const double Control [UMFPACK_CONTROL] ) ; @@ -41,14 +41,14 @@ int umfpack_zi_report_matrix const double Control [UMFPACK_CONTROL] ) ; -long umfpack_zl_report_matrix +UF_long umfpack_zl_report_matrix ( - long n_row, - long n_col, - const long Ap [ ], - const long Ai [ ], + UF_long n_row, + UF_long n_col, + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], const double Az [ ], - long col_form, + UF_long col_form, const double Control [UMFPACK_CONTROL] ) ; @@ -62,10 +62,10 @@ double int Syntax: or: status = umfpack_di_report_matrix (n_row, n_col, Ap, Ai, Ax, 0, Control) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" - long n_row, n_col, *Ap, *Ai, status ; + UF_long n_row, n_col, *Ap, *Ai, status ; double *Ax, Control [UMFPACK_CONTROL] ; status = umfpack_dl_report_matrix (n_row, n_col, Ap, Ai, Ax, 1, Control) ; or: @@ -82,10 +82,10 @@ or: status = umfpack_zi_report_matrix (n_row, n_col, Ap, Ai, Ax, Az, 0, Control) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" - long n_row, n_col, *Ap, *Ai, status ; + UF_long n_row, n_col, *Ap, *Ai, status ; double *Ax, Control [UMFPACK_CONTROL] ; status = umfpack_zl_report_matrix (n_row, n_col, Ap, Ai, Ax, Az, 1, Control) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_numeric.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_numeric.h index 28bad670bb..ff4eb117a0 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_numeric.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -14,7 +14,7 @@ int umfpack_di_report_numeric const double Control [UMFPACK_CONTROL] ) ; -long umfpack_dl_report_numeric +UF_long umfpack_dl_report_numeric ( void *Numeric, const double Control [UMFPACK_CONTROL] @@ -26,7 +26,7 @@ int umfpack_zi_report_numeric const double Control [UMFPACK_CONTROL] ) ; -long umfpack_zl_report_numeric +UF_long umfpack_zl_report_numeric ( void *Numeric, const double Control [UMFPACK_CONTROL] @@ -41,12 +41,12 @@ double int Syntax: int status ; status = umfpack_di_report_numeric (Numeric, Control) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Numeric ; double Control [UMFPACK_CONTROL] ; - long status ; + UF_long status ; status = umfpack_dl_report_numeric (Numeric, Control) ; complex int Syntax: @@ -57,12 +57,12 @@ complex int Syntax: int status ; status = umfpack_zi_report_numeric (Numeric, Control) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" void *Numeric ; double Control [UMFPACK_CONTROL] ; - long status ; + UF_long status ; status = umfpack_zl_report_numeric (Numeric, Control) ; Purpose: diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_perm.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_perm.h index cffab230e6..4810e32f79 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_perm.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_perm.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -15,10 +15,10 @@ int umfpack_di_report_perm const double Control [UMFPACK_CONTROL] ) ; -long umfpack_dl_report_perm +UF_long umfpack_dl_report_perm ( - long np, - const long Perm [ ], + UF_long np, + const UF_long Perm [ ], const double Control [UMFPACK_CONTROL] ) ; @@ -29,10 +29,10 @@ int umfpack_zi_report_perm const double Control [UMFPACK_CONTROL] ) ; -long umfpack_zl_report_perm +UF_long umfpack_zl_report_perm ( - long np, - const long Perm [ ], + UF_long np, + const UF_long Perm [ ], const double Control [UMFPACK_CONTROL] ) ; @@ -44,10 +44,10 @@ double int Syntax: double Control [UMFPACK_CONTROL] ; status = umfpack_di_report_perm (np, Perm, Control) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" - long np, *Perm, status ; + UF_long np, *Perm, status ; double Control [UMFPACK_CONTROL] ; status = umfpack_dl_report_perm (np, Perm, Control) ; @@ -58,10 +58,10 @@ complex int Syntax: double Control [UMFPACK_CONTROL] ; status = umfpack_zi_report_perm (np, Perm, Control) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" - long np, *Perm, status ; + UF_long np, *Perm, status ; double Control [UMFPACK_CONTROL] ; status = umfpack_zl_report_perm (np, Perm, Control) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_status.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_status.h index 3d1e9e0d82..24376ae72f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_status.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_status.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -17,7 +17,7 @@ void umfpack_di_report_status void umfpack_dl_report_status ( const double Control [UMFPACK_CONTROL], - long status + UF_long status ) ; void umfpack_zi_report_status @@ -29,7 +29,7 @@ void umfpack_zi_report_status void umfpack_zl_report_status ( const double Control [UMFPACK_CONTROL], - long status + UF_long status ) ; /* @@ -40,11 +40,11 @@ double int Syntax: int status ; umfpack_di_report_status (Control, status) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" double Control [UMFPACK_CONTROL] ; - long status ; + UF_long status ; umfpack_dl_report_status (Control, status) ; complex int Syntax: @@ -54,11 +54,11 @@ complex int Syntax: int status ; umfpack_zi_report_status (Control, status) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" double Control [UMFPACK_CONTROL] ; - long status ; + UF_long status ; umfpack_zl_report_status (Control, status) ; Purpose: diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_symbolic.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_symbolic.h index 4218dfccd1..eb61182839 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_symbolic.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -14,7 +14,7 @@ int umfpack_di_report_symbolic const double Control [UMFPACK_CONTROL] ) ; -long umfpack_dl_report_symbolic +UF_long umfpack_dl_report_symbolic ( void *Symbolic, const double Control [UMFPACK_CONTROL] @@ -26,7 +26,7 @@ int umfpack_zi_report_symbolic const double Control [UMFPACK_CONTROL] ) ; -long umfpack_zl_report_symbolic +UF_long umfpack_zl_report_symbolic ( void *Symbolic, const double Control [UMFPACK_CONTROL] @@ -41,12 +41,12 @@ double int Syntax: int status ; status = umfpack_di_report_symbolic (Symbolic, Control) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Symbolic ; double Control [UMFPACK_CONTROL] ; - long status ; + UF_long status ; status = umfpack_dl_report_symbolic (Symbolic, Control) ; complex int Syntax: @@ -57,12 +57,12 @@ complex int Syntax: int status ; status = umfpack_zi_report_symbolic (Symbolic, Control) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" void *Symbolic ; double Control [UMFPACK_CONTROL] ; - long status ; + UF_long status ; status = umfpack_zl_report_symbolic (Symbolic, Control) ; Purpose: diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_triplet.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_triplet.h index f3da629d7a..4e7a605b8a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_triplet.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_triplet.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -19,13 +19,13 @@ int umfpack_di_report_triplet const double Control [UMFPACK_CONTROL] ) ; -long umfpack_dl_report_triplet +UF_long umfpack_dl_report_triplet ( - long n_row, - long n_col, - long nz, - const long Ti [ ], - const long Tj [ ], + UF_long n_row, + UF_long n_col, + UF_long nz, + const UF_long Ti [ ], + const UF_long Tj [ ], const double Tx [ ], const double Control [UMFPACK_CONTROL] ) ; @@ -41,13 +41,13 @@ int umfpack_zi_report_triplet const double Control [UMFPACK_CONTROL] ) ; -long umfpack_zl_report_triplet +UF_long umfpack_zl_report_triplet ( - long n_row, - long n_col, - long nz, - const long Ti [ ], - const long Tj [ ], + UF_long n_row, + UF_long n_col, + UF_long nz, + const UF_long Ti [ ], + const UF_long Tj [ ], const double Tx [ ], const double Tz [ ], const double Control [UMFPACK_CONTROL] ) ; @@ -60,10 +60,10 @@ double int Syntax: double *Tx, Control [UMFPACK_CONTROL] ; status = umfpack_di_report_triplet (n_row, n_col, nz, Ti, Tj, Tx, Control) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" - long n_row, n_col, nz, *Ti, *Tj, status ; + UF_long n_row, n_col, nz, *Ti, *Tj, status ; double *Tx, Control [UMFPACK_CONTROL] ; status = umfpack_dl_report_triplet (n_row, n_col, nz, Ti, Tj, Tx, Control) ; @@ -75,10 +75,10 @@ complex int Syntax: status = umfpack_zi_report_triplet (n_row, n_col, nz, Ti, Tj, Tx, Tz, Control) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" - long n_row, n_col, nz, *Ti, *Tj, status ; + UF_long n_row, n_col, nz, *Ti, *Tj, status ; double *Tx, *Tz, Control [UMFPACK_CONTROL] ; status = umfpack_zl_report_triplet (n_row, n_col, nz, Ti, Tj, Tx, Tz, Control) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_vector.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_vector.h index 1bae66ab7b..2c4c386e0d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_vector.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_vector.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -15,9 +15,9 @@ int umfpack_di_report_vector const double Control [UMFPACK_CONTROL] ) ; -long umfpack_dl_report_vector +UF_long umfpack_dl_report_vector ( - long n, + UF_long n, const double X [ ], const double Control [UMFPACK_CONTROL] ) ; @@ -29,9 +29,9 @@ int umfpack_zi_report_vector const double Control [UMFPACK_CONTROL] ) ; -long umfpack_zl_report_vector +UF_long umfpack_zl_report_vector ( - long n, + UF_long n, const double Xx [ ], const double Xz [ ], const double Control [UMFPACK_CONTROL] ) ; @@ -44,10 +44,10 @@ double int Syntax: double *X, Control [UMFPACK_CONTROL] ; status = umfpack_di_report_vector (n, X, Control) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" - long n, status ; + UF_long n, status ; double *X, Control [UMFPACK_CONTROL] ; status = umfpack_dl_report_vector (n, X, Control) ; @@ -58,10 +58,10 @@ complex int Syntax: double *Xx, *Xz, Control [UMFPACK_CONTROL] ; status = umfpack_zi_report_vector (n, Xx, Xz, Control) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" - long n, status ; + UF_long n, status ; double *Xx, *Xz, Control [UMFPACK_CONTROL] ; status = umfpack_zl_report_vector (n, Xx, Xz, Control) ; @@ -107,7 +107,7 @@ Arguments: when passed to umfpack_*_report_vector (this is untested, however). This is the "merged" form of the complex vector X. - Note that all complex routines in UMFPACK V4.4 use this same + Note that all complex routines in UMFPACK V4.4 and later use this same strategy for their complex arguments. The split format is useful for MATLAB, which holds its real and imaginary parts in seperate arrays. The packed format is compatible with the intrinsic double _Complex diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_save_numeric.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_save_numeric.h index 9eeb4be6e4..708e5819ad 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_save_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_save_numeric.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -14,7 +14,7 @@ int umfpack_di_save_numeric char *filename ) ; -long umfpack_dl_save_numeric +UF_long umfpack_dl_save_numeric ( void *Numeric, char *filename @@ -26,7 +26,7 @@ int umfpack_zi_save_numeric char *filename ) ; -long umfpack_zl_save_numeric +UF_long umfpack_zl_save_numeric ( void *Numeric, char *filename @@ -41,10 +41,10 @@ double int Syntax: void *Numeric ; status = umfpack_di_save_numeric (Numeric, filename) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" - long status ; + UF_long status ; char *filename ; void *Numeric ; status = umfpack_dl_save_numeric (Numeric, filename) ; @@ -57,10 +57,10 @@ complex int Syntax: void *Numeric ; status = umfpack_zi_save_numeric (Numeric, filename) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" - long status ; + UF_long status ; char *filename ; void *Numeric ; status = umfpack_zl_save_numeric (Numeric, filename) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_save_symbolic.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_save_symbolic.h index 26eab600b1..2dffdd64e6 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_save_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_save_symbolic.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -14,7 +14,7 @@ int umfpack_di_save_symbolic char *filename ) ; -long umfpack_dl_save_symbolic +UF_long umfpack_dl_save_symbolic ( void *Symbolic, char *filename @@ -26,7 +26,7 @@ int umfpack_zi_save_symbolic char *filename ) ; -long umfpack_zl_save_symbolic +UF_long umfpack_zl_save_symbolic ( void *Symbolic, char *filename @@ -41,10 +41,10 @@ double int Syntax: void *Symbolic ; status = umfpack_di_save_symbolic (Symbolic, filename) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" - long status ; + UF_long status ; char *filename ; void *Symbolic ; status = umfpack_dl_save_symbolic (Symbolic, filename) ; @@ -57,10 +57,10 @@ complex int Syntax: void *Symbolic ; status = umfpack_zi_save_symbolic (Symbolic, filename) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" - long status ; + UF_long status ; char *filename ; void *Symbolic ; status = umfpack_zl_save_symbolic (Symbolic, filename) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_scale.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_scale.h index 11138aa48d..62fc32a85f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_scale.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_scale.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -15,7 +15,7 @@ int umfpack_di_scale void *Numeric ) ; -long umfpack_dl_scale +UF_long umfpack_dl_scale ( double X [ ], const double B [ ], @@ -29,7 +29,7 @@ int umfpack_zi_scale void *Numeric ) ; -long umfpack_zl_scale +UF_long umfpack_zl_scale ( double Xx [ ], double Xz [ ], const double Bx [ ], const double Bz [ ], @@ -44,7 +44,7 @@ double int Syntax: double *B, *X ; status = umfpack_di_scale (X, B, Numeric) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Numeric ; @@ -58,7 +58,7 @@ complex int Syntax: double *Bx, *Bz, *Xx, *Xz ; status = umfpack_zi_scale (Xx, Xz, Bx, Bz, Numeric) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" void *Numeric ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_solve.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_solve.h index 6bbce1c3c6..09320914cc 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_solve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_solve.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -21,11 +21,11 @@ int umfpack_di_solve double Info [UMFPACK_INFO] ) ; -long umfpack_dl_solve +UF_long umfpack_dl_solve ( - long sys, - const long Ap [ ], - const long Ai [ ], + UF_long sys, + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], double X [ ], const double B [ ], @@ -47,11 +47,11 @@ int umfpack_zi_solve double Info [UMFPACK_INFO] ) ; -long umfpack_zl_solve +UF_long umfpack_zl_solve ( - long sys, - const long Ap [ ], - const long Ai [ ], + UF_long sys, + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], const double Az [ ], double Xx [ ], double Xz [ ], const double Bx [ ], const double Bz [ ], @@ -69,11 +69,11 @@ double int Syntax: double *B, *X, *Ax, Info [UMFPACK_INFO], Control [UMFPACK_CONTROL] ; status = umfpack_di_solve (sys, Ap, Ai, Ax, X, B, Numeric, Control, Info) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Numeric ; - long status, *Ap, *Ai, sys ; + UF_long status, *Ap, *Ai, sys ; double *B, *X, *Ax, Info [UMFPACK_INFO], Control [UMFPACK_CONTROL] ; status = umfpack_dl_solve (sys, Ap, Ai, Ax, X, B, Numeric, Control, Info) ; @@ -87,11 +87,11 @@ complex int Syntax: status = umfpack_zi_solve (sys, Ap, Ai, Ax, Az, Xx, Xz, Bx, Bz, Numeric, Control, Info) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" void *Numeric ; - long status, *Ap, *Ai, sys ; + UF_long status, *Ap, *Ai, sys ; double *Bx, *Bz, *Xx, *Xz, *Ax, *Az, Info [UMFPACK_INFO], Control [UMFPACK_CONTROL] ; status = umfpack_zl_solve (sys, Ap, Ai, Ax, Az, Xx, Xz, Bx, Bz, Numeric, diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_symbolic.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_symbolic.h index 3ee4ffa5f1..1deacc2582 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_symbolic.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -20,12 +20,12 @@ int umfpack_di_symbolic double Info [UMFPACK_INFO] ) ; -long umfpack_dl_symbolic +UF_long umfpack_dl_symbolic ( - long n_row, - long n_col, - const long Ap [ ], - const long Ai [ ], + UF_long n_row, + UF_long n_col, + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], void **Symbolic, const double Control [UMFPACK_CONTROL], @@ -44,12 +44,12 @@ int umfpack_zi_symbolic double Info [UMFPACK_INFO] ) ; -long umfpack_zl_symbolic +UF_long umfpack_zl_symbolic ( - long n_row, - long n_col, - const long Ap [ ], - const long Ai [ ], + UF_long n_row, + UF_long n_col, + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], const double Az [ ], void **Symbolic, const double Control [UMFPACK_CONTROL], @@ -66,11 +66,11 @@ double int Syntax: status = umfpack_di_symbolic (n_row, n_col, Ap, Ai, Ax, &Symbolic, Control, Info) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Symbolic ; - long n_row, n_col, *Ap, *Ai, status ; + UF_long n_row, n_col, *Ap, *Ai, status ; double Control [UMFPACK_CONTROL], Info [UMFPACK_INFO], *Ax ; status = umfpack_dl_symbolic (n_row, n_col, Ap, Ai, Ax, &Symbolic, Control, Info) ; @@ -84,11 +84,11 @@ complex int Syntax: status = umfpack_zi_symbolic (n_row, n_col, Ap, Ai, Ax, Az, &Symbolic, Control, Info) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" void *Symbolic ; - long n_row, n_col, *Ap, *Ai, status ; + UF_long n_row, n_col, *Ap, *Ai, status ; double Control [UMFPACK_CONTROL], Info [UMFPACK_INFO], *Ax, *Az ; status = umfpack_zl_symbolic (n_row, n_col, Ap, Ai, Ax, Az, &Symbolic, Control, Info) ; @@ -252,7 +252,7 @@ Arguments: A value less than 1 is treated as 1. Default: 32. Modifying this parameter affects when updates are applied to the working frontal matrix, and can indirectly affect fill-in and operation count. - As long as the block size is large enough (8 or so), this parameter + Assuming the block size is large enough (8 or so), this parameter has a modest effect on performance. Control [UMFPACK_2BY2_TOLERANCE]: a diagonal entry S (k,k) is @@ -328,7 +328,7 @@ Arguments: Info [UMFPACK_SIZE_OF_INT]: the number of bytes in an int. - Info [UMFPACK_SIZE_OF_LONG]: the number of bytes in a long. + Info [UMFPACK_SIZE_OF_LONG]: the number of bytes in a UF_long. Info [UMFPACK_SIZE_OF_POINTER]: the number of bytes in a void * pointer. diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_tictoc.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_tictoc.h index 121755895a..da10426b77 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_tictoc.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_tictoc.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_timer.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_timer.h index 8d8d8cf10c..413a1779c2 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_timer.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_timer.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_transpose.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_transpose.h index 5f2fa92c7d..b12bb0bd8f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_transpose.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_transpose.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -22,17 +22,17 @@ int umfpack_di_transpose double Rx [ ] ) ; -long umfpack_dl_transpose +UF_long umfpack_dl_transpose ( - long n_row, - long n_col, - const long Ap [ ], - const long Ai [ ], + UF_long n_row, + UF_long n_col, + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], - const long P [ ], - const long Q [ ], - long Rp [ ], - long Ri [ ], + const UF_long P [ ], + const UF_long Q [ ], + UF_long Rp [ ], + UF_long Ri [ ], double Rx [ ] ) ; @@ -51,19 +51,19 @@ int umfpack_zi_transpose int do_conjugate ) ; -long umfpack_zl_transpose +UF_long umfpack_zl_transpose ( - long n_row, - long n_col, - const long Ap [ ], - const long Ai [ ], + UF_long n_row, + UF_long n_col, + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], const double Az [ ], - const long P [ ], - const long Q [ ], - long Rp [ ], - long Ri [ ], + const UF_long P [ ], + const UF_long Q [ ], + UF_long Rp [ ], + UF_long Ri [ ], double Rx [ ], double Rz [ ], - long do_conjugate + UF_long do_conjugate ) ; /* @@ -74,10 +74,10 @@ double int Syntax: double *Ax, *Rx ; status = umfpack_di_transpose (n_row, n_col, Ap, Ai, Ax, P, Q, Rp, Ri, Rx) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" - long n_row, n_col, status, *Ap, *Ai, *P, *Q, *Rp, *Ri ; + UF_long n_row, n_col, status, *Ap, *Ai, *P, *Q, *Rp, *Ri ; double *Ax, *Rx ; status = umfpack_dl_transpose (n_row, n_col, Ap, Ai, Ax, P, Q, Rp, Ri, Rx) ; @@ -89,10 +89,10 @@ complex int Syntax: status = umfpack_zi_transpose (n_row, n_col, Ap, Ai, Ax, Az, P, Q, Rp, Ri, Rx, Rz, do_conjugate) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" - long n_row, n_col, status, *Ap, *Ai, *P, *Q, *Rp, *Ri, do_conjugate ; + UF_long n_row, n_col, status, *Ap, *Ai, *P, *Q, *Rp, *Ri, do_conjugate ; double *Ax, *Az, *Rx, *Rz ; status = umfpack_zl_transpose (n_row, n_col, Ap, Ai, Ax, Az, P, Q, Rp, Ri, Rx, Rz, do_conjugate) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_triplet_to_col.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_triplet_to_col.h index abeee030d8..cb45278e18 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_triplet_to_col.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_triplet_to_col.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -22,18 +22,18 @@ int umfpack_di_triplet_to_col int Map [ ] ) ; -long umfpack_dl_triplet_to_col +UF_long umfpack_dl_triplet_to_col ( - long n_row, - long n_col, - long nz, - const long Ti [ ], - const long Tj [ ], + UF_long n_row, + UF_long n_col, + UF_long nz, + const UF_long Ti [ ], + const UF_long Tj [ ], const double Tx [ ], - long Ap [ ], - long Ai [ ], + UF_long Ap [ ], + UF_long Ai [ ], double Ax [ ], - long Map [ ] + UF_long Map [ ] ) ; int umfpack_zi_triplet_to_col @@ -50,18 +50,18 @@ int umfpack_zi_triplet_to_col int Map [ ] ) ; -long umfpack_zl_triplet_to_col +UF_long umfpack_zl_triplet_to_col ( - long n_row, - long n_col, - long nz, - const long Ti [ ], - const long Tj [ ], + UF_long n_row, + UF_long n_col, + UF_long nz, + const UF_long Ti [ ], + const UF_long Tj [ ], const double Tx [ ], const double Tz [ ], - long Ap [ ], - long Ai [ ], + UF_long Ap [ ], + UF_long Ai [ ], double Ax [ ], double Az [ ], - long Map [ ] + UF_long Map [ ] ) ; /* @@ -73,10 +73,10 @@ double int Syntax: status = umfpack_di_triplet_to_col (n_row, n_col, nz, Ti, Tj, Tx, Ap, Ai, Ax, Map) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" - long n_row, n_col, nz, *Ti, *Tj, *Ap, *Ai, status, *Map ; + UF_long n_row, n_col, nz, *Ti, *Tj, *Ap, *Ai, status, *Map ; double *Tx, *Ax ; status = umfpack_dl_triplet_to_col (n_row, n_col, nz, Ti, Tj, Tx, Ap, Ai, Ax, Map) ; @@ -89,10 +89,10 @@ complex int Syntax: status = umfpack_zi_triplet_to_col (n_row, n_col, nz, Ti, Tj, Tx, Tz, Ap, Ai, Ax, Az, Map) ; -long Syntax: +UF_long Syntax: #include "umfpack.h" - long n_row, n_col, nz, *Ti, *Tj, *Ap, *Ai, status, *Map ; + UF_long n_row, n_col, nz, *Ti, *Tj, *Ap, *Ai, status, *Map ; double *Tx, *Tz, *Ax, *Az ; status = umfpack_zl_triplet_to_col (n_row, n_col, nz, Ti, Tj, Tx, Tz, Ap, Ai, Ax, Az, Map) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_wsolve.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_wsolve.h index b537221cb7..38d15baee0 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_wsolve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_wsolve.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -23,18 +23,18 @@ int umfpack_di_wsolve double W [ ] ) ; -long umfpack_dl_wsolve +UF_long umfpack_dl_wsolve ( - long sys, - const long Ap [ ], - const long Ai [ ], + UF_long sys, + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], double X [ ], const double B [ ], void *Numeric, const double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO], - long Wi [ ], + UF_long Wi [ ], double W [ ] ) ; @@ -53,18 +53,18 @@ int umfpack_zi_wsolve double W [ ] ) ; -long umfpack_zl_wsolve +UF_long umfpack_zl_wsolve ( - long sys, - const long Ap [ ], - const long Ai [ ], + UF_long sys, + const UF_long Ap [ ], + const UF_long Ai [ ], const double Ax [ ], const double Az [ ], double Xx [ ], double Xz [ ], const double Bx [ ], const double Bz [ ], void *Numeric, const double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO], - long Wi [ ], + UF_long Wi [ ], double W [ ] ) ; @@ -78,11 +78,11 @@ double int Syntax: status = umfpack_di_wsolve (sys, Ap, Ai, Ax, X, B, Numeric, Control, Info, Wi, W) ; -double long Syntax: +double UF_long Syntax: #include "umfpack.h" void *Numeric ; - long status, *Ap, *Ai, *Wi, sys ; + UF_long status, *Ap, *Ai, *Wi, sys ; double *B, *X, *Ax, *W, Info [UMFPACK_INFO], Control [UMFPACK_CONTROL] ; status = umfpack_dl_wsolve (sys, Ap, Ai, Ax, X, B, Numeric, Control, Info, Wi, W) ; @@ -97,11 +97,11 @@ complex int Syntax: status = umfpack_zi_wsolve (sys, Ap, Ai, Ax, Az, Xx, Xz, Bx, Bz, Numeric, Control, Info, Wi, W) ; -complex long Syntax: +complex UF_long Syntax: #include "umfpack.h" void *Numeric ; - long status, *Ap, *Ai, *Wi, sys ; + UF_long status, *Ap, *Ai, *Wi, sys ; double *Bx, *Bz, *Xx, *Xz, *Ax, *Az, *W, Info [UMFPACK_INFO], Control [UMFPACK_CONTROL] ; status = umfpack_zl_wsolve (sys, Ap, Ai, Ax, Az, Xx, Xz, Bx, Bz, Numeric, diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/Contents.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/Contents.m index 8514438b17..b936449122 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/Contents.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/Contents.m @@ -1,24 +1,32 @@ %Contents of the UMFPACK sparse matrix toolbox: % -% umfpack computes x=A\b, x=A/b, or lu (A) for a sparse matrix A -% umfpack_make to compile umfpack for use in MATLAB -% umfpack_details details on all the options for using umfpack in MATLAB -% umfpack_report prints optional control settings and statistics -% umfpack_demo a long demo -% umfpack_simple a simple demo -% umfpack_btf factorize A using a block triangular form -% umfpack_solve x = A\b or x = b/A -% lu_normest estimates norm (L*U-A, 1) without forming L*U-A -% luflop given L and U, computes # of flops required to compute them -% umfpack_test for testing umfpack (requires UFget interface to UF sparse -% matrix collection) +% umfpack2 - computes x=A\b, x=A/b, or lu (A) for a sparse matrix A +% umfpack_make - to compile umfpack2 for use in MATLAB +% umfpack_install - to compile and install umfpack2 and amd2 for use in MATLAB +% umfpack_details - details on all the options for using umfpack2 in MATLAB +% umfpack_report - prints optional control settings and statistics +% umfpack_demo - a lenghty demo +% umfpack_simple - a simple demo +% umfpack_btf - factorize A using a block triangular form +% umfpack_solve - x = A\b or x = b/A +% lu_normest - estimates norm (L*U-A, 1) without forming L*U-A +% luflop - given L and U, computes # of flops required to compute them +% umfpack_test - for testing umfpack2 (requires UFget) % -% See also: -% amd symmetric minimum degree ordering +% Example: +% x = umfpack2 (A, '\', b) ; % same as x = A\b, if A square and unsymmetric +% +% See also these built-in functions: +% umfpack the built-in version of UMFPACK +% amd symmetric minimum degree ordering % colamd unsymmetric column approx minimum degree ordering % symamd symmetric approx minimum degree ordering, based on colamd % -% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. +% NOTE: UMFPACK is a built-in function in MATLAB, used in x=A\b. This is the +% source code for the built-in umfpack, but the MATLAB function has been renamed +% here to umfpack2, to avoid a filename clash with itself. +% +% Copyright 1995-2007 by Timothy A. Davis. % All Rights Reserved. Type umfpack_details for License. help Contents diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/GNUmakefile b/deal.II/contrib/umfpack/UMFPACK/MATLAB/GNUmakefile index 20bdee5e60..b6e7ad1c19 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/GNUmakefile +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/GNUmakefile @@ -2,11 +2,14 @@ # UMFPACK GNUmakefile for the UMFPACK MATLAB mexFunction (GNU "make" only) #------------------------------------------------------------------------------- -all: umfpack luflop +default: umfpack2 luflop -include ../Make/Make.include +include ../../UFconfig/UFconfig.mk -MX = $(MEX) -I../Include -I../Source -I../../AMD/Include -I../../AMD/Source +I = -I../Include -I../Source -I../../AMD/Include -I../../UFconfig + +MX = $(MEX) $(I) + #------------------------------------------------------------------------------- # source files @@ -28,25 +31,25 @@ UMFCH = umf_assemble umf_blas3_update \ umf_valid_symbolic umf_grow_front umf_start_front umf_2by2 \ umf_store_lu umf_scale -# non-user-callable umf_*.[ch] files, int/long versions only (no real/complex): +# non-user-callable umf_*.[ch] files, int/UF_long versions only (no real/complex): UMFINT = umf_analyze umf_apply_order umf_colamd umf_free umf_fsize \ umf_is_permutation umf_malloc umf_realloc umf_report_perm \ umf_singletons -# non-user-callable and user-callable amd_*.[ch] files (int/long versions only): +# non-user-callable and user-callable amd_*.[ch] files (int/UF_long versions only): AMD = amd_aat amd_1 amd_2 amd_dump amd_postorder amd_post_tree amd_defaults \ - amd_order amd_control amd_info amd_valid amd_preprocess + amd_order amd_control amd_info amd_valid amd_preprocess amd_global # non-user-callable, created from umf_ltsolve.c, umf_utsolve.c, -# umf_triplet.c, and umf_assemble.c , with int/long and real/complex versions: +# umf_triplet.c, and umf_assemble.c , with int/UF_long and real/complex versions: UMF_CREATED = umf_lhsolve umf_uhsolve umf_triplet_map_nox \ umf_triplet_nomap_x umf_triplet_nomap_nox umf_triplet_map_x \ umf_assemble_fixq umf_store_lu_drop -# non-user-callable, int/long and real/complex versions: +# non-user-callable, int/UF_long and real/complex versions: UMF = $(UMF_CREATED) $(UMFCH) -# user-callable umfpack_*.[ch] files (int/long and real/complex): +# user-callable umfpack_*.[ch] files (int/UF_long and real/complex): UMFPACK = umfpack_col_to_triplet umfpack_defaults umfpack_free_numeric \ umfpack_free_symbolic umfpack_get_numeric umfpack_get_lunz \ umfpack_get_symbolic umfpack_get_determinant umfpack_numeric \ @@ -59,19 +62,20 @@ UMFPACK = umfpack_col_to_triplet umfpack_defaults umfpack_free_numeric \ umfpack_load_symbolic umfpack_save_symbolic # user-callable, created from umfpack_solve.c (umfpack_wsolve.h exists, though): -# with int/long and real/complex versions: +# with int/UF_long and real/complex versions: UMFPACKW = umfpack_wsolve USER = $(UMFPACKW) $(UMFPACK) -# user-callable, only one version for int/long, real/complex, *.[ch] files: -GENERIC = umfpack_timer umfpack_tictoc +# user-callable, only one version for int/UF_long, real/complex, *.[ch] files: +GENERIC = umfpack_timer umfpack_tictoc umfpack_global #------------------------------------------------------------------------------- # include files: #------------------------------------------------------------------------------- -AMDH = ../../AMD/Source/amd_internal.h ../../AMD/Include/amd.h +AMDH = ../../AMD/Include/amd_internal.h ../../AMD/Include/amd.h \ + ../../UFconfig/UFconfig.h INC1 = umf_config.h umf_version.h umf_internal.h umf_triplet.h @@ -97,18 +101,18 @@ MEXUMFPACK = $(MEXI) $(MEXDI) $(MEXZI) $(MEXGN) # Note that mex has no "-o" option, thus the need for $(MV) commands. # If it did, then the rules would be much simpler: -# $(MX) -DDINT -c $< -o $@ +# $(MX) -DDLONG -c $< -o $@ #---------------------------------------- # integer-only routines (no real/complex): #---------------------------------------- amd_m_%.o: ../../AMD/Source/amd_%.c $(AMDH) - $(MX) -DDINT -c $< + $(MX) -DDLONG -c $< - $(MV) amd_$*.o $@ umf_m_%.o: ../Source/umf_%.c $(INC) - $(MX) -DDINT -c $< + $(MX) -DDLONG -c $< - $(MV) umf_$*.o $@ #---------------------------------------- @@ -116,43 +120,43 @@ umf_m_%.o: ../Source/umf_%.c $(INC) #---------------------------------------- umf_md_%.o: ../Source/umf_%.c $(INC) - $(MX) -DDINT -c $< + $(MX) -DDLONG -c $< - $(MV) umf_$*.o $@ umf_md_%hsolve.o: ../Source/umf_%tsolve.c $(INC) - $(MX) -DDINT -DCONJUGATE_SOLVE -c $< + $(MX) -DDLONG -DCONJUGATE_SOLVE -c $< - $(MV) umf_$*tsolve.o $@ umf_md_triplet_map_x.o: ../Source/umf_triplet.c $(INC) - $(MX) -DDINT -DDO_MAP -DDO_VALUES -c $< + $(MX) -DDLONG -DDO_MAP -DDO_VALUES -c $< - $(MV) umf_triplet.o $@ umf_md_triplet_map_nox.o: ../Source/umf_triplet.c $(INC) - $(MX) -DDINT -DDO_MAP -c $< + $(MX) -DDLONG -DDO_MAP -c $< - $(MV) umf_triplet.o $@ umf_md_triplet_nomap_x.o: ../Source/umf_triplet.c $(INC) - $(MX) -DDINT -DDO_VALUES -c $< + $(MX) -DDLONG -DDO_VALUES -c $< - $(MV) umf_triplet.o $@ umf_md_triplet_nomap_nox.o: ../Source/umf_triplet.c $(INC) - $(MX) -DDINT -c $< + $(MX) -DDLONG -c $< - $(MV) umf_triplet.o $@ umf_md_assemble_fixq.o: ../Source/umf_assemble.c $(INC) - $(MX) -DDINT -DFIXQ -c $< + $(MX) -DDLONG -DFIXQ -c $< - $(MV) umf_assemble.o $@ umf_md_store_lu_drop.o: ../Source/umf_store_lu.c $(INC) - $(MX) -DDINT -DDROP -c $< + $(MX) -DDLONG -DDROP -c $< - $(MV) umf_store_lu.o $@ umfpack_md_wsolve.o: ../Source/umfpack_solve.c $(INC) - $(MX) -DDINT -DWSOLVE -c $< + $(MX) -DDLONG -DWSOLVE -c $< - $(MV) umfpack_solve.o $@ umfpack_md_%.o: ../Source/umfpack_%.c $(INC) - $(MX) -DDINT -c $< + $(MX) -DDLONG -c $< - $(MV) umfpack_$*.o $@ #---------------------------------------- @@ -160,43 +164,43 @@ umfpack_md_%.o: ../Source/umfpack_%.c $(INC) #---------------------------------------- umf_mz_%.o: ../Source/umf_%.c $(INC) - $(MX) -DZINT -c $< + $(MX) -DZLONG -c $< - $(MV) umf_$*.o $@ umf_mz_%hsolve.o: ../Source/umf_%tsolve.c $(INC) - $(MX) -DZINT -DCONJUGATE_SOLVE -c $< + $(MX) -DZLONG -DCONJUGATE_SOLVE -c $< - $(MV) umf_$*tsolve.o $@ umf_mz_triplet_map_x.o: ../Source/umf_triplet.c $(INC) - $(MX) -DZINT -DDO_MAP -DDO_VALUES -c $< + $(MX) -DZLONG -DDO_MAP -DDO_VALUES -c $< - $(MV) umf_triplet.o $@ umf_mz_triplet_map_nox.o: ../Source/umf_triplet.c $(INC) - $(MX) -DZINT -DDO_MAP -c $< + $(MX) -DZLONG -DDO_MAP -c $< - $(MV) umf_triplet.o $@ umf_mz_triplet_nomap_x.o: ../Source/umf_triplet.c $(INC) - $(MX) -DZINT -DDO_VALUES -c $< + $(MX) -DZLONG -DDO_VALUES -c $< - $(MV) umf_triplet.o $@ umf_mz_triplet_nomap_nox.o: ../Source/umf_triplet.c $(INC) - $(MX) -DZINT -c $< + $(MX) -DZLONG -c $< - $(MV) umf_triplet.o $@ umf_mz_assemble_fixq.o: ../Source/umf_assemble.c $(INC) - $(MX) -DZINT -DFIXQ -c $< + $(MX) -DZLONG -DFIXQ -c $< - $(MV) umf_assemble.o $@ umf_mz_store_lu_drop.o: ../Source/umf_store_lu.c $(INC) - $(MX) -DZINT -DDROP -c $< + $(MX) -DZLONG -DDROP -c $< - $(MV) umf_store_lu.o $@ umfpack_mz_wsolve.o: ../Source/umfpack_solve.c $(INC) - $(MX) -DZINT -DWSOLVE -c $< + $(MX) -DZLONG -DWSOLVE -c $< - $(MV) umfpack_solve.o $@ umfpack_mz_%.o: ../Source/umfpack_%.c $(INC) - $(MX) -DZINT -c $< + $(MX) -DZLONG -c $< - $(MV) umfpack_$*.o $@ #---------------------------------------- @@ -211,12 +215,16 @@ umfpack_m_tictoc.o: ../Source/umfpack_tictoc.c $(INC) $(MX) -c $< - $(MV) umfpack_tictoc.o $@ +umfpack_m_global.o: ../Source/umfpack_global.c $(INC) + $(MX) -c $< + - $(MV) umfpack_global.o $@ + #---------------------------------------- # umfpack mexFunction #---------------------------------------- -umfpack: umfpackmex.c $(MEXUMFPACK) $(MEXAMD) - $(MX) -output umfpack umfpackmex.c $(MEXUMFPACK) $(MEXAMD) +umfpack2: umfpackmex.c $(MEXUMFPACK) $(MEXAMD) + $(MX) -output umfpack2 umfpackmex.c $(MEXUMFPACK) $(MEXAMD) luflop: luflopmex.c $(MX) -output luflop luflopmex.c @@ -226,4 +234,7 @@ luflop: luflopmex.c #------------------------------------------------------------------------------- purge: clean - - $(RM) *.mex* *.dll + - $(RM) *.mex* + +clean: + - $(RM) $(CLEAN) diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/Makefile b/deal.II/contrib/umfpack/UMFPACK/MATLAB/Makefile index 91b56a6960..4eab588f00 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/Makefile +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/Makefile @@ -4,360 +4,362 @@ # This is a very ugly Makefile, and is only provided for those who do not # have GNU make. Note that it is not used if you have GNU make. It ignores -# dependency checking and just compiles everything. It was created -# automatically, via make -n using the GNUmakefile. That way, I don't have -# maintain two Makefiles. +# dependency checking and just compiles everything. -all: umfpack luflop +default: umfpack luflop -include ../Make/Make.include +include ../../UFconfig/UFconfig.mk -MX = $(MEX) -I../Include -I../Source -I../../AMD/Include -I../../AMD/Source +MX = $(MEX) -I../Include -I../Source -I../../AMD/Include -I../../UFconfig umfpack: - $(MX) -DDINT -c ../Source/umf_analyze.c + $(MX) -c ../Source/umfpack_global.c + $(MV) -f umfpack_global.o umfpack_m_global.o + $(MX) -DDLONG -c ../Source/umf_analyze.c $(MV) -f umf_analyze.o umf_m_analyze.o - $(MX) -DDINT -c ../Source/umf_apply_order.c + $(MX) -DDLONG -c ../Source/umf_apply_order.c $(MV) -f umf_apply_order.o umf_m_apply_order.o - $(MX) -DDINT -c ../Source/umf_colamd.c + $(MX) -DDLONG -c ../Source/umf_colamd.c $(MV) -f umf_colamd.o umf_m_colamd.o - $(MX) -DDINT -c ../Source/umf_free.c + $(MX) -DDLONG -c ../Source/umf_free.c $(MV) -f umf_free.o umf_m_free.o - $(MX) -DDINT -c ../Source/umf_fsize.c + $(MX) -DDLONG -c ../Source/umf_fsize.c $(MV) -f umf_fsize.o umf_m_fsize.o - $(MX) -DDINT -c ../Source/umf_is_permutation.c + $(MX) -DDLONG -c ../Source/umf_is_permutation.c $(MV) -f umf_is_permutation.o umf_m_is_permutation.o - $(MX) -DDINT -c ../Source/umf_malloc.c + $(MX) -DDLONG -c ../Source/umf_malloc.c $(MV) -f umf_malloc.o umf_m_malloc.o - $(MX) -DDINT -c ../Source/umf_realloc.c + $(MX) -DDLONG -c ../Source/umf_realloc.c $(MV) -f umf_realloc.o umf_m_realloc.o - $(MX) -DDINT -c ../Source/umf_report_perm.c + $(MX) -DDLONG -c ../Source/umf_report_perm.c $(MV) -f umf_report_perm.o umf_m_report_perm.o - $(MX) -DDINT -c ../Source/umf_singletons.c + $(MX) -DDLONG -c ../Source/umf_singletons.c $(MV) -f umf_singletons.o umf_m_singletons.o - $(MX) -DDINT -DCONJUGATE_SOLVE -c ../Source/umf_ltsolve.c + $(MX) -DDLONG -DCONJUGATE_SOLVE -c ../Source/umf_ltsolve.c $(MV) -f umf_ltsolve.o umf_md_lhsolve.o - $(MX) -DDINT -DCONJUGATE_SOLVE -c ../Source/umf_utsolve.c + $(MX) -DDLONG -DCONJUGATE_SOLVE -c ../Source/umf_utsolve.c $(MV) -f umf_utsolve.o umf_md_uhsolve.o - $(MX) -DDINT -DDO_MAP -c ../Source/umf_triplet.c + $(MX) -DDLONG -DDO_MAP -c ../Source/umf_triplet.c $(MV) -f umf_triplet.o umf_md_triplet_map_nox.o - $(MX) -DDINT -DDO_VALUES -c ../Source/umf_triplet.c + $(MX) -DDLONG -DDO_VALUES -c ../Source/umf_triplet.c $(MV) -f umf_triplet.o umf_md_triplet_nomap_x.o - $(MX) -DDINT -c ../Source/umf_triplet.c + $(MX) -DDLONG -c ../Source/umf_triplet.c $(MV) -f umf_triplet.o umf_md_triplet_nomap_nox.o - $(MX) -DDINT -DDO_MAP -DDO_VALUES -c ../Source/umf_triplet.c + $(MX) -DDLONG -DDO_MAP -DDO_VALUES -c ../Source/umf_triplet.c $(MV) -f umf_triplet.o umf_md_triplet_map_x.o - $(MX) -DDINT -DFIXQ -c ../Source/umf_assemble.c + $(MX) -DDLONG -DFIXQ -c ../Source/umf_assemble.c $(MV) -f umf_assemble.o umf_md_assemble_fixq.o - $(MX) -DDINT -DDROP -c ../Source/umf_store_lu.c + $(MX) -DDLONG -DDROP -c ../Source/umf_store_lu.c $(MV) -f umf_store_lu.o umf_md_store_lu_drop.o - $(MX) -DDINT -c ../Source/umf_assemble.c + $(MX) -DDLONG -c ../Source/umf_assemble.c $(MV) -f umf_assemble.o umf_md_assemble.o - $(MX) -DDINT -c ../Source/umf_blas3_update.c + $(MX) -DDLONG -c ../Source/umf_blas3_update.c $(MV) -f umf_blas3_update.o umf_md_blas3_update.o - $(MX) -DDINT -c ../Source/umf_build_tuples.c + $(MX) -DDLONG -c ../Source/umf_build_tuples.c $(MV) -f umf_build_tuples.o umf_md_build_tuples.o - $(MX) -DDINT -c ../Source/umf_create_element.c + $(MX) -DDLONG -c ../Source/umf_create_element.c $(MV) -f umf_create_element.o umf_md_create_element.o - $(MX) -DDINT -c ../Source/umf_dump.c + $(MX) -DDLONG -c ../Source/umf_dump.c $(MV) -f umf_dump.o umf_md_dump.o - $(MX) -DDINT -c ../Source/umf_extend_front.c + $(MX) -DDLONG -c ../Source/umf_extend_front.c $(MV) -f umf_extend_front.o umf_md_extend_front.o - $(MX) -DDINT -c ../Source/umf_garbage_collection.c + $(MX) -DDLONG -c ../Source/umf_garbage_collection.c $(MV) -f umf_garbage_collection.o umf_md_garbage_collection.o - $(MX) -DDINT -c ../Source/umf_get_memory.c + $(MX) -DDLONG -c ../Source/umf_get_memory.c $(MV) -f umf_get_memory.o umf_md_get_memory.o - $(MX) -DDINT -c ../Source/umf_init_front.c + $(MX) -DDLONG -c ../Source/umf_init_front.c $(MV) -f umf_init_front.o umf_md_init_front.o - $(MX) -DDINT -c ../Source/umf_kernel.c + $(MX) -DDLONG -c ../Source/umf_kernel.c $(MV) -f umf_kernel.o umf_md_kernel.o - $(MX) -DDINT -c ../Source/umf_kernel_init.c + $(MX) -DDLONG -c ../Source/umf_kernel_init.c $(MV) -f umf_kernel_init.o umf_md_kernel_init.o - $(MX) -DDINT -c ../Source/umf_kernel_wrapup.c + $(MX) -DDLONG -c ../Source/umf_kernel_wrapup.c $(MV) -f umf_kernel_wrapup.o umf_md_kernel_wrapup.o - $(MX) -DDINT -c ../Source/umf_local_search.c + $(MX) -DDLONG -c ../Source/umf_local_search.c $(MV) -f umf_local_search.o umf_md_local_search.o - $(MX) -DDINT -c ../Source/umf_lsolve.c + $(MX) -DDLONG -c ../Source/umf_lsolve.c $(MV) -f umf_lsolve.o umf_md_lsolve.o - $(MX) -DDINT -c ../Source/umf_ltsolve.c + $(MX) -DDLONG -c ../Source/umf_ltsolve.c $(MV) -f umf_ltsolve.o umf_md_ltsolve.o - $(MX) -DDINT -c ../Source/umf_mem_alloc_element.c + $(MX) -DDLONG -c ../Source/umf_mem_alloc_element.c $(MV) -f umf_mem_alloc_element.o umf_md_mem_alloc_element.o - $(MX) -DDINT -c ../Source/umf_mem_alloc_head_block.c + $(MX) -DDLONG -c ../Source/umf_mem_alloc_head_block.c $(MV) -f umf_mem_alloc_head_block.o umf_md_mem_alloc_head_block.o - $(MX) -DDINT -c ../Source/umf_mem_alloc_tail_block.c + $(MX) -DDLONG -c ../Source/umf_mem_alloc_tail_block.c $(MV) -f umf_mem_alloc_tail_block.o umf_md_mem_alloc_tail_block.o - $(MX) -DDINT -c ../Source/umf_mem_free_tail_block.c + $(MX) -DDLONG -c ../Source/umf_mem_free_tail_block.c $(MV) -f umf_mem_free_tail_block.o umf_md_mem_free_tail_block.o - $(MX) -DDINT -c ../Source/umf_mem_init_memoryspace.c + $(MX) -DDLONG -c ../Source/umf_mem_init_memoryspace.c $(MV) -f umf_mem_init_memoryspace.o umf_md_mem_init_memoryspace.o - $(MX) -DDINT -c ../Source/umf_report_vector.c + $(MX) -DDLONG -c ../Source/umf_report_vector.c $(MV) -f umf_report_vector.o umf_md_report_vector.o - $(MX) -DDINT -c ../Source/umf_row_search.c + $(MX) -DDLONG -c ../Source/umf_row_search.c $(MV) -f umf_row_search.o umf_md_row_search.o - $(MX) -DDINT -c ../Source/umf_scale_column.c + $(MX) -DDLONG -c ../Source/umf_scale_column.c $(MV) -f umf_scale_column.o umf_md_scale_column.o - $(MX) -DDINT -c ../Source/umf_set_stats.c + $(MX) -DDLONG -c ../Source/umf_set_stats.c $(MV) -f umf_set_stats.o umf_md_set_stats.o - $(MX) -DDINT -c ../Source/umf_solve.c + $(MX) -DDLONG -c ../Source/umf_solve.c $(MV) -f umf_solve.o umf_md_solve.o - $(MX) -DDINT -c ../Source/umf_symbolic_usage.c + $(MX) -DDLONG -c ../Source/umf_symbolic_usage.c $(MV) -f umf_symbolic_usage.o umf_md_symbolic_usage.o - $(MX) -DDINT -c ../Source/umf_transpose.c + $(MX) -DDLONG -c ../Source/umf_transpose.c $(MV) -f umf_transpose.o umf_md_transpose.o - $(MX) -DDINT -c ../Source/umf_tuple_lengths.c + $(MX) -DDLONG -c ../Source/umf_tuple_lengths.c $(MV) -f umf_tuple_lengths.o umf_md_tuple_lengths.o - $(MX) -DDINT -c ../Source/umf_usolve.c + $(MX) -DDLONG -c ../Source/umf_usolve.c $(MV) -f umf_usolve.o umf_md_usolve.o - $(MX) -DDINT -c ../Source/umf_utsolve.c + $(MX) -DDLONG -c ../Source/umf_utsolve.c $(MV) -f umf_utsolve.o umf_md_utsolve.o - $(MX) -DDINT -c ../Source/umf_valid_numeric.c + $(MX) -DDLONG -c ../Source/umf_valid_numeric.c $(MV) -f umf_valid_numeric.o umf_md_valid_numeric.o - $(MX) -DDINT -c ../Source/umf_valid_symbolic.c + $(MX) -DDLONG -c ../Source/umf_valid_symbolic.c $(MV) -f umf_valid_symbolic.o umf_md_valid_symbolic.o - $(MX) -DDINT -c ../Source/umf_grow_front.c + $(MX) -DDLONG -c ../Source/umf_grow_front.c $(MV) -f umf_grow_front.o umf_md_grow_front.o - $(MX) -DDINT -c ../Source/umf_start_front.c + $(MX) -DDLONG -c ../Source/umf_start_front.c $(MV) -f umf_start_front.o umf_md_start_front.o - $(MX) -DDINT -c ../Source/umf_2by2.c + $(MX) -DDLONG -c ../Source/umf_2by2.c $(MV) -f umf_2by2.o umf_md_2by2.o - $(MX) -DDINT -c ../Source/umf_store_lu.c + $(MX) -DDLONG -c ../Source/umf_store_lu.c $(MV) -f umf_store_lu.o umf_md_store_lu.o - $(MX) -DDINT -c ../Source/umf_scale.c + $(MX) -DDLONG -c ../Source/umf_scale.c $(MV) -f umf_scale.o umf_md_scale.o - $(MX) -DDINT -DWSOLVE -c ../Source/umfpack_solve.c + $(MX) -DDLONG -DWSOLVE -c ../Source/umfpack_solve.c $(MV) -f umfpack_solve.o umfpack_md_wsolve.o - $(MX) -DDINT -c ../Source/umfpack_col_to_triplet.c + $(MX) -DDLONG -c ../Source/umfpack_col_to_triplet.c $(MV) -f umfpack_col_to_triplet.o umfpack_md_col_to_triplet.o - $(MX) -DDINT -c ../Source/umfpack_defaults.c + $(MX) -DDLONG -c ../Source/umfpack_defaults.c $(MV) -f umfpack_defaults.o umfpack_md_defaults.o - $(MX) -DDINT -c ../Source/umfpack_free_numeric.c + $(MX) -DDLONG -c ../Source/umfpack_free_numeric.c $(MV) -f umfpack_free_numeric.o umfpack_md_free_numeric.o - $(MX) -DDINT -c ../Source/umfpack_free_symbolic.c + $(MX) -DDLONG -c ../Source/umfpack_free_symbolic.c $(MV) -f umfpack_free_symbolic.o umfpack_md_free_symbolic.o - $(MX) -DDINT -c ../Source/umfpack_get_numeric.c + $(MX) -DDLONG -c ../Source/umfpack_get_numeric.c $(MV) -f umfpack_get_numeric.o umfpack_md_get_numeric.o - $(MX) -DDINT -c ../Source/umfpack_get_lunz.c + $(MX) -DDLONG -c ../Source/umfpack_get_lunz.c $(MV) -f umfpack_get_lunz.o umfpack_md_get_lunz.o - $(MX) -DDINT -c ../Source/umfpack_get_symbolic.c + $(MX) -DDLONG -c ../Source/umfpack_get_symbolic.c $(MV) -f umfpack_get_symbolic.o umfpack_md_get_symbolic.o - $(MX) -DDINT -c ../Source/umfpack_get_determinant.c + $(MX) -DDLONG -c ../Source/umfpack_get_determinant.c $(MV) -f umfpack_get_determinant.o umfpack_md_get_determinant.o - $(MX) -DDINT -c ../Source/umfpack_numeric.c + $(MX) -DDLONG -c ../Source/umfpack_numeric.c $(MV) -f umfpack_numeric.o umfpack_md_numeric.o - $(MX) -DDINT -c ../Source/umfpack_qsymbolic.c + $(MX) -DDLONG -c ../Source/umfpack_qsymbolic.c $(MV) -f umfpack_qsymbolic.o umfpack_md_qsymbolic.o - $(MX) -DDINT -c ../Source/umfpack_report_control.c + $(MX) -DDLONG -c ../Source/umfpack_report_control.c $(MV) -f umfpack_report_control.o umfpack_md_report_control.o - $(MX) -DDINT -c ../Source/umfpack_report_info.c + $(MX) -DDLONG -c ../Source/umfpack_report_info.c $(MV) -f umfpack_report_info.o umfpack_md_report_info.o - $(MX) -DDINT -c ../Source/umfpack_report_matrix.c + $(MX) -DDLONG -c ../Source/umfpack_report_matrix.c $(MV) -f umfpack_report_matrix.o umfpack_md_report_matrix.o - $(MX) -DDINT -c ../Source/umfpack_report_numeric.c + $(MX) -DDLONG -c ../Source/umfpack_report_numeric.c $(MV) -f umfpack_report_numeric.o umfpack_md_report_numeric.o - $(MX) -DDINT -c ../Source/umfpack_report_perm.c + $(MX) -DDLONG -c ../Source/umfpack_report_perm.c $(MV) -f umfpack_report_perm.o umfpack_md_report_perm.o - $(MX) -DDINT -c ../Source/umfpack_report_status.c + $(MX) -DDLONG -c ../Source/umfpack_report_status.c $(MV) -f umfpack_report_status.o umfpack_md_report_status.o - $(MX) -DDINT -c ../Source/umfpack_report_symbolic.c + $(MX) -DDLONG -c ../Source/umfpack_report_symbolic.c $(MV) -f umfpack_report_symbolic.o umfpack_md_report_symbolic.o - $(MX) -DDINT -c ../Source/umfpack_report_triplet.c + $(MX) -DDLONG -c ../Source/umfpack_report_triplet.c $(MV) -f umfpack_report_triplet.o umfpack_md_report_triplet.o - $(MX) -DDINT -c ../Source/umfpack_report_vector.c + $(MX) -DDLONG -c ../Source/umfpack_report_vector.c $(MV) -f umfpack_report_vector.o umfpack_md_report_vector.o - $(MX) -DDINT -c ../Source/umfpack_solve.c + $(MX) -DDLONG -c ../Source/umfpack_solve.c $(MV) -f umfpack_solve.o umfpack_md_solve.o - $(MX) -DDINT -c ../Source/umfpack_symbolic.c + $(MX) -DDLONG -c ../Source/umfpack_symbolic.c $(MV) -f umfpack_symbolic.o umfpack_md_symbolic.o - $(MX) -DDINT -c ../Source/umfpack_transpose.c + $(MX) -DDLONG -c ../Source/umfpack_transpose.c $(MV) -f umfpack_transpose.o umfpack_md_transpose.o - $(MX) -DDINT -c ../Source/umfpack_triplet_to_col.c + $(MX) -DDLONG -c ../Source/umfpack_triplet_to_col.c $(MV) -f umfpack_triplet_to_col.o umfpack_md_triplet_to_col.o - $(MX) -DDINT -c ../Source/umfpack_scale.c + $(MX) -DDLONG -c ../Source/umfpack_scale.c $(MV) -f umfpack_scale.o umfpack_md_scale.o - $(MX) -DDINT -c ../Source/umfpack_load_numeric.c + $(MX) -DDLONG -c ../Source/umfpack_load_numeric.c $(MV) -f umfpack_load_numeric.o umfpack_md_load_numeric.o - $(MX) -DDINT -c ../Source/umfpack_save_numeric.c + $(MX) -DDLONG -c ../Source/umfpack_save_numeric.c $(MV) -f umfpack_save_numeric.o umfpack_md_save_numeric.o - $(MX) -DDINT -c ../Source/umfpack_load_symbolic.c + $(MX) -DDLONG -c ../Source/umfpack_load_symbolic.c $(MV) -f umfpack_load_symbolic.o umfpack_md_load_symbolic.o - $(MX) -DDINT -c ../Source/umfpack_save_symbolic.c + $(MX) -DDLONG -c ../Source/umfpack_save_symbolic.c $(MV) -f umfpack_save_symbolic.o umfpack_md_save_symbolic.o - $(MX) -DZINT -DCONJUGATE_SOLVE -c ../Source/umf_ltsolve.c + $(MX) -DZLONG -DCONJUGATE_SOLVE -c ../Source/umf_ltsolve.c $(MV) -f umf_ltsolve.o umf_mz_lhsolve.o - $(MX) -DZINT -DCONJUGATE_SOLVE -c ../Source/umf_utsolve.c + $(MX) -DZLONG -DCONJUGATE_SOLVE -c ../Source/umf_utsolve.c $(MV) -f umf_utsolve.o umf_mz_uhsolve.o - $(MX) -DZINT -DDO_MAP -c ../Source/umf_triplet.c + $(MX) -DZLONG -DDO_MAP -c ../Source/umf_triplet.c $(MV) -f umf_triplet.o umf_mz_triplet_map_nox.o - $(MX) -DZINT -DDO_VALUES -c ../Source/umf_triplet.c + $(MX) -DZLONG -DDO_VALUES -c ../Source/umf_triplet.c $(MV) -f umf_triplet.o umf_mz_triplet_nomap_x.o - $(MX) -DZINT -c ../Source/umf_triplet.c + $(MX) -DZLONG -c ../Source/umf_triplet.c $(MV) -f umf_triplet.o umf_mz_triplet_nomap_nox.o - $(MX) -DZINT -DDO_MAP -DDO_VALUES -c ../Source/umf_triplet.c + $(MX) -DZLONG -DDO_MAP -DDO_VALUES -c ../Source/umf_triplet.c $(MV) -f umf_triplet.o umf_mz_triplet_map_x.o - $(MX) -DZINT -DFIXQ -c ../Source/umf_assemble.c + $(MX) -DZLONG -DFIXQ -c ../Source/umf_assemble.c $(MV) -f umf_assemble.o umf_mz_assemble_fixq.o - $(MX) -DZINT -DDROP -c ../Source/umf_store_lu.c + $(MX) -DZLONG -DDROP -c ../Source/umf_store_lu.c $(MV) -f umf_store_lu.o umf_mz_store_lu_drop.o - $(MX) -DZINT -c ../Source/umf_assemble.c + $(MX) -DZLONG -c ../Source/umf_assemble.c $(MV) -f umf_assemble.o umf_mz_assemble.o - $(MX) -DZINT -c ../Source/umf_blas3_update.c + $(MX) -DZLONG -c ../Source/umf_blas3_update.c $(MV) -f umf_blas3_update.o umf_mz_blas3_update.o - $(MX) -DZINT -c ../Source/umf_build_tuples.c + $(MX) -DZLONG -c ../Source/umf_build_tuples.c $(MV) -f umf_build_tuples.o umf_mz_build_tuples.o - $(MX) -DZINT -c ../Source/umf_create_element.c + $(MX) -DZLONG -c ../Source/umf_create_element.c $(MV) -f umf_create_element.o umf_mz_create_element.o - $(MX) -DZINT -c ../Source/umf_dump.c + $(MX) -DZLONG -c ../Source/umf_dump.c $(MV) -f umf_dump.o umf_mz_dump.o - $(MX) -DZINT -c ../Source/umf_extend_front.c + $(MX) -DZLONG -c ../Source/umf_extend_front.c $(MV) -f umf_extend_front.o umf_mz_extend_front.o - $(MX) -DZINT -c ../Source/umf_garbage_collection.c + $(MX) -DZLONG -c ../Source/umf_garbage_collection.c $(MV) -f umf_garbage_collection.o umf_mz_garbage_collection.o - $(MX) -DZINT -c ../Source/umf_get_memory.c + $(MX) -DZLONG -c ../Source/umf_get_memory.c $(MV) -f umf_get_memory.o umf_mz_get_memory.o - $(MX) -DZINT -c ../Source/umf_init_front.c + $(MX) -DZLONG -c ../Source/umf_init_front.c $(MV) -f umf_init_front.o umf_mz_init_front.o - $(MX) -DZINT -c ../Source/umf_kernel.c + $(MX) -DZLONG -c ../Source/umf_kernel.c $(MV) -f umf_kernel.o umf_mz_kernel.o - $(MX) -DZINT -c ../Source/umf_kernel_init.c + $(MX) -DZLONG -c ../Source/umf_kernel_init.c $(MV) -f umf_kernel_init.o umf_mz_kernel_init.o - $(MX) -DZINT -c ../Source/umf_kernel_wrapup.c + $(MX) -DZLONG -c ../Source/umf_kernel_wrapup.c $(MV) -f umf_kernel_wrapup.o umf_mz_kernel_wrapup.o - $(MX) -DZINT -c ../Source/umf_local_search.c + $(MX) -DZLONG -c ../Source/umf_local_search.c $(MV) -f umf_local_search.o umf_mz_local_search.o - $(MX) -DZINT -c ../Source/umf_lsolve.c + $(MX) -DZLONG -c ../Source/umf_lsolve.c $(MV) -f umf_lsolve.o umf_mz_lsolve.o - $(MX) -DZINT -c ../Source/umf_ltsolve.c + $(MX) -DZLONG -c ../Source/umf_ltsolve.c $(MV) -f umf_ltsolve.o umf_mz_ltsolve.o - $(MX) -DZINT -c ../Source/umf_mem_alloc_element.c + $(MX) -DZLONG -c ../Source/umf_mem_alloc_element.c $(MV) -f umf_mem_alloc_element.o umf_mz_mem_alloc_element.o - $(MX) -DZINT -c ../Source/umf_mem_alloc_head_block.c + $(MX) -DZLONG -c ../Source/umf_mem_alloc_head_block.c $(MV) -f umf_mem_alloc_head_block.o umf_mz_mem_alloc_head_block.o - $(MX) -DZINT -c ../Source/umf_mem_alloc_tail_block.c + $(MX) -DZLONG -c ../Source/umf_mem_alloc_tail_block.c $(MV) -f umf_mem_alloc_tail_block.o umf_mz_mem_alloc_tail_block.o - $(MX) -DZINT -c ../Source/umf_mem_free_tail_block.c + $(MX) -DZLONG -c ../Source/umf_mem_free_tail_block.c $(MV) -f umf_mem_free_tail_block.o umf_mz_mem_free_tail_block.o - $(MX) -DZINT -c ../Source/umf_mem_init_memoryspace.c + $(MX) -DZLONG -c ../Source/umf_mem_init_memoryspace.c $(MV) -f umf_mem_init_memoryspace.o umf_mz_mem_init_memoryspace.o - $(MX) -DZINT -c ../Source/umf_report_vector.c + $(MX) -DZLONG -c ../Source/umf_report_vector.c $(MV) -f umf_report_vector.o umf_mz_report_vector.o - $(MX) -DZINT -c ../Source/umf_row_search.c + $(MX) -DZLONG -c ../Source/umf_row_search.c $(MV) -f umf_row_search.o umf_mz_row_search.o - $(MX) -DZINT -c ../Source/umf_scale_column.c + $(MX) -DZLONG -c ../Source/umf_scale_column.c $(MV) -f umf_scale_column.o umf_mz_scale_column.o - $(MX) -DZINT -c ../Source/umf_set_stats.c + $(MX) -DZLONG -c ../Source/umf_set_stats.c $(MV) -f umf_set_stats.o umf_mz_set_stats.o - $(MX) -DZINT -c ../Source/umf_solve.c + $(MX) -DZLONG -c ../Source/umf_solve.c $(MV) -f umf_solve.o umf_mz_solve.o - $(MX) -DZINT -c ../Source/umf_symbolic_usage.c + $(MX) -DZLONG -c ../Source/umf_symbolic_usage.c $(MV) -f umf_symbolic_usage.o umf_mz_symbolic_usage.o - $(MX) -DZINT -c ../Source/umf_transpose.c + $(MX) -DZLONG -c ../Source/umf_transpose.c $(MV) -f umf_transpose.o umf_mz_transpose.o - $(MX) -DZINT -c ../Source/umf_tuple_lengths.c + $(MX) -DZLONG -c ../Source/umf_tuple_lengths.c $(MV) -f umf_tuple_lengths.o umf_mz_tuple_lengths.o - $(MX) -DZINT -c ../Source/umf_usolve.c + $(MX) -DZLONG -c ../Source/umf_usolve.c $(MV) -f umf_usolve.o umf_mz_usolve.o - $(MX) -DZINT -c ../Source/umf_utsolve.c + $(MX) -DZLONG -c ../Source/umf_utsolve.c $(MV) -f umf_utsolve.o umf_mz_utsolve.o - $(MX) -DZINT -c ../Source/umf_valid_numeric.c + $(MX) -DZLONG -c ../Source/umf_valid_numeric.c $(MV) -f umf_valid_numeric.o umf_mz_valid_numeric.o - $(MX) -DZINT -c ../Source/umf_valid_symbolic.c + $(MX) -DZLONG -c ../Source/umf_valid_symbolic.c $(MV) -f umf_valid_symbolic.o umf_mz_valid_symbolic.o - $(MX) -DZINT -c ../Source/umf_grow_front.c + $(MX) -DZLONG -c ../Source/umf_grow_front.c $(MV) -f umf_grow_front.o umf_mz_grow_front.o - $(MX) -DZINT -c ../Source/umf_start_front.c + $(MX) -DZLONG -c ../Source/umf_start_front.c $(MV) -f umf_start_front.o umf_mz_start_front.o - $(MX) -DZINT -c ../Source/umf_2by2.c + $(MX) -DZLONG -c ../Source/umf_2by2.c $(MV) -f umf_2by2.o umf_mz_2by2.o - $(MX) -DZINT -c ../Source/umf_store_lu.c + $(MX) -DZLONG -c ../Source/umf_store_lu.c $(MV) -f umf_store_lu.o umf_mz_store_lu.o - $(MX) -DZINT -c ../Source/umf_scale.c + $(MX) -DZLONG -c ../Source/umf_scale.c $(MV) -f umf_scale.o umf_mz_scale.o - $(MX) -DZINT -DWSOLVE -c ../Source/umfpack_solve.c + $(MX) -DZLONG -DWSOLVE -c ../Source/umfpack_solve.c $(MV) -f umfpack_solve.o umfpack_mz_wsolve.o - $(MX) -DZINT -c ../Source/umfpack_col_to_triplet.c + $(MX) -DZLONG -c ../Source/umfpack_col_to_triplet.c $(MV) -f umfpack_col_to_triplet.o umfpack_mz_col_to_triplet.o - $(MX) -DZINT -c ../Source/umfpack_defaults.c + $(MX) -DZLONG -c ../Source/umfpack_defaults.c $(MV) -f umfpack_defaults.o umfpack_mz_defaults.o - $(MX) -DZINT -c ../Source/umfpack_free_numeric.c + $(MX) -DZLONG -c ../Source/umfpack_free_numeric.c $(MV) -f umfpack_free_numeric.o umfpack_mz_free_numeric.o - $(MX) -DZINT -c ../Source/umfpack_free_symbolic.c + $(MX) -DZLONG -c ../Source/umfpack_free_symbolic.c $(MV) -f umfpack_free_symbolic.o umfpack_mz_free_symbolic.o - $(MX) -DZINT -c ../Source/umfpack_get_numeric.c + $(MX) -DZLONG -c ../Source/umfpack_get_numeric.c $(MV) -f umfpack_get_numeric.o umfpack_mz_get_numeric.o - $(MX) -DZINT -c ../Source/umfpack_get_lunz.c + $(MX) -DZLONG -c ../Source/umfpack_get_lunz.c $(MV) -f umfpack_get_lunz.o umfpack_mz_get_lunz.o - $(MX) -DZINT -c ../Source/umfpack_get_symbolic.c + $(MX) -DZLONG -c ../Source/umfpack_get_symbolic.c $(MV) -f umfpack_get_symbolic.o umfpack_mz_get_symbolic.o - $(MX) -DZINT -c ../Source/umfpack_get_determinant.c + $(MX) -DZLONG -c ../Source/umfpack_get_determinant.c $(MV) -f umfpack_get_determinant.o umfpack_mz_get_determinant.o - $(MX) -DZINT -c ../Source/umfpack_numeric.c + $(MX) -DZLONG -c ../Source/umfpack_numeric.c $(MV) -f umfpack_numeric.o umfpack_mz_numeric.o - $(MX) -DZINT -c ../Source/umfpack_qsymbolic.c + $(MX) -DZLONG -c ../Source/umfpack_qsymbolic.c $(MV) -f umfpack_qsymbolic.o umfpack_mz_qsymbolic.o - $(MX) -DZINT -c ../Source/umfpack_report_control.c + $(MX) -DZLONG -c ../Source/umfpack_report_control.c $(MV) -f umfpack_report_control.o umfpack_mz_report_control.o - $(MX) -DZINT -c ../Source/umfpack_report_info.c + $(MX) -DZLONG -c ../Source/umfpack_report_info.c $(MV) -f umfpack_report_info.o umfpack_mz_report_info.o - $(MX) -DZINT -c ../Source/umfpack_report_matrix.c + $(MX) -DZLONG -c ../Source/umfpack_report_matrix.c $(MV) -f umfpack_report_matrix.o umfpack_mz_report_matrix.o - $(MX) -DZINT -c ../Source/umfpack_report_numeric.c + $(MX) -DZLONG -c ../Source/umfpack_report_numeric.c $(MV) -f umfpack_report_numeric.o umfpack_mz_report_numeric.o - $(MX) -DZINT -c ../Source/umfpack_report_perm.c + $(MX) -DZLONG -c ../Source/umfpack_report_perm.c $(MV) -f umfpack_report_perm.o umfpack_mz_report_perm.o - $(MX) -DZINT -c ../Source/umfpack_report_status.c + $(MX) -DZLONG -c ../Source/umfpack_report_status.c $(MV) -f umfpack_report_status.o umfpack_mz_report_status.o - $(MX) -DZINT -c ../Source/umfpack_report_symbolic.c + $(MX) -DZLONG -c ../Source/umfpack_report_symbolic.c $(MV) -f umfpack_report_symbolic.o umfpack_mz_report_symbolic.o - $(MX) -DZINT -c ../Source/umfpack_report_triplet.c + $(MX) -DZLONG -c ../Source/umfpack_report_triplet.c $(MV) -f umfpack_report_triplet.o umfpack_mz_report_triplet.o - $(MX) -DZINT -c ../Source/umfpack_report_vector.c + $(MX) -DZLONG -c ../Source/umfpack_report_vector.c $(MV) -f umfpack_report_vector.o umfpack_mz_report_vector.o - $(MX) -DZINT -c ../Source/umfpack_solve.c + $(MX) -DZLONG -c ../Source/umfpack_solve.c $(MV) -f umfpack_solve.o umfpack_mz_solve.o - $(MX) -DZINT -c ../Source/umfpack_symbolic.c + $(MX) -DZLONG -c ../Source/umfpack_symbolic.c $(MV) -f umfpack_symbolic.o umfpack_mz_symbolic.o - $(MX) -DZINT -c ../Source/umfpack_transpose.c + $(MX) -DZLONG -c ../Source/umfpack_transpose.c $(MV) -f umfpack_transpose.o umfpack_mz_transpose.o - $(MX) -DZINT -c ../Source/umfpack_triplet_to_col.c + $(MX) -DZLONG -c ../Source/umfpack_triplet_to_col.c $(MV) -f umfpack_triplet_to_col.o umfpack_mz_triplet_to_col.o - $(MX) -DZINT -c ../Source/umfpack_scale.c + $(MX) -DZLONG -c ../Source/umfpack_scale.c $(MV) -f umfpack_scale.o umfpack_mz_scale.o - $(MX) -DZINT -c ../Source/umfpack_load_numeric.c + $(MX) -DZLONG -c ../Source/umfpack_load_numeric.c $(MV) -f umfpack_load_numeric.o umfpack_mz_load_numeric.o - $(MX) -DZINT -c ../Source/umfpack_save_numeric.c + $(MX) -DZLONG -c ../Source/umfpack_save_numeric.c $(MV) -f umfpack_save_numeric.o umfpack_mz_save_numeric.o - $(MX) -DZINT -c ../Source/umfpack_load_symbolic.c + $(MX) -DZLONG -c ../Source/umfpack_load_symbolic.c $(MV) -f umfpack_load_symbolic.o umfpack_mz_load_symbolic.o - $(MX) -DZINT -c ../Source/umfpack_save_symbolic.c + $(MX) -DZLONG -c ../Source/umfpack_save_symbolic.c $(MV) -f umfpack_save_symbolic.o umfpack_mz_save_symbolic.o $(MX) -c ../Source/umfpack_timer.c $(MV) -f umfpack_timer.o umfpack_m_timer.o $(MX) -c ../Source/umfpack_tictoc.c $(MV) -f umfpack_tictoc.o umfpack_m_tictoc.o - $(MX) -DDINT -c ../../AMD/Source/amd_aat.c + $(MX) -DDLONG -c ../../AMD/Source/amd_global.c + $(MV) -f amd_global.o amd_m_global.o + $(MX) -DDLONG -c ../../AMD/Source/amd_aat.c $(MV) -f amd_aat.o amd_m_aat.o - $(MX) -DDINT -c ../../AMD/Source/amd_1.c + $(MX) -DDLONG -c ../../AMD/Source/amd_1.c $(MV) -f amd_1.o amd_m_1.o - $(MX) -DDINT -c ../../AMD/Source/amd_2.c + $(MX) -DDLONG -c ../../AMD/Source/amd_2.c $(MV) -f amd_2.o amd_m_2.o - $(MX) -DDINT -c ../../AMD/Source/amd_dump.c + $(MX) -DDLONG -c ../../AMD/Source/amd_dump.c $(MV) -f amd_dump.o amd_m_dump.o - $(MX) -DDINT -c ../../AMD/Source/amd_postorder.c + $(MX) -DDLONG -c ../../AMD/Source/amd_postorder.c $(MV) -f amd_postorder.o amd_m_postorder.o - $(MX) -DDINT -c ../../AMD/Source/amd_post_tree.c + $(MX) -DDLONG -c ../../AMD/Source/amd_post_tree.c $(MV) -f amd_post_tree.o amd_m_post_tree.o - $(MX) -DDINT -c ../../AMD/Source/amd_defaults.c + $(MX) -DDLONG -c ../../AMD/Source/amd_defaults.c $(MV) -f amd_defaults.o amd_m_defaults.o - $(MX) -DDINT -c ../../AMD/Source/amd_order.c + $(MX) -DDLONG -c ../../AMD/Source/amd_order.c $(MV) -f amd_order.o amd_m_order.o - $(MX) -DDINT -c ../../AMD/Source/amd_control.c + $(MX) -DDLONG -c ../../AMD/Source/amd_control.c $(MV) -f amd_control.o amd_m_control.o - $(MX) -DDINT -c ../../AMD/Source/amd_info.c + $(MX) -DDLONG -c ../../AMD/Source/amd_info.c $(MV) -f amd_info.o amd_m_info.o - $(MX) -DDINT -c ../../AMD/Source/amd_valid.c + $(MX) -DDLONG -c ../../AMD/Source/amd_valid.c $(MV) -f amd_valid.o amd_m_valid.o - $(MX) -output umfpack umfpackmex.c \ + $(MX) -output umfpack2 umfpackmex.c \ umf_m_analyze.o umf_m_apply_order.o umf_m_colamd.o umf_m_free.o \ umf_m_fsize.o umf_m_is_permutation.o umf_m_malloc.o \ umf_m_realloc.o umf_m_report_perm.o umf_m_singletons.o \ @@ -423,7 +425,8 @@ umfpack: umfpack_mz_triplet_to_col.o umfpack_mz_scale.o \ umfpack_mz_load_numeric.o umfpack_mz_save_numeric.o \ umfpack_mz_load_symbolic.o umfpack_mz_save_symbolic.o \ - umfpack_m_timer.o umfpack_m_tictoc.o \ + umfpack_m_timer.o umfpack_m_tictoc.o umfpack_m_global.o \ + amd_m_global.o \ amd_m_aat.o amd_m_1.o amd_m_2.o amd_m_dump.o \ amd_m_postorder.o amd_m_post_tree.o amd_m_defaults.o amd_m_order.o \ amd_m_control.o amd_m_info.o amd_m_valid.o @@ -436,4 +439,7 @@ luflop: luflopmex.c #------------------------------------------------------------------------------- purge: clean - - $(RM) *.mex* *.dll + - $(RM) *.mex* + +clean: + - $(RM) $(CLEAN) diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/lcc_lib/lapacksyms.def b/deal.II/contrib/umfpack/UMFPACK/MATLAB/lcc_lib/lapacksyms.def new file mode 100644 index 0000000000..7f8563c553 --- /dev/null +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/lcc_lib/lapacksyms.def @@ -0,0 +1,718 @@ +LIBRARY liblapack.dll +EXPORTS +dasum +daxpy +dbdsdc +dbdsqr +dcopy +ddisna +ddot +dgbbrd +dgbcon +dgbequ +dgbmv +dgbrfs +dgbsv +dgbsvx +dgbtf2 +dgbtrf +dgbtrs +dgebak +dgebal +dgebd2 +dgebrd +dgecon +dgeequ +dgees +dgeesx +dgeev +dgeevx +dgegs +dgegv +dgehd2 +dgehrd +dgelq2 +dgelqf +dgels +dgelsd +dgelss +dgelsx +dgelsy +dgemm +dgemv +dgeql2 +dgeqlf +dgeqp3 +dgeqpf +dgeqr2 +dgeqrf +dger +dgerfs +dgerq2 +dgerqf +dgesc2 +dgesdd +dgesv +dgesvd +dgesvx +dgetc2 +dgetf2 +dgetrf +dgetri +dgetrs +dggbak +dggbal +dgges +dggesx +dggev +dggevx +dggglm +dgghrd +dgglse +dggqrf +dggrqf +dggsvd +dggsvp +dgtcon +dgtrfs +dgtsv +dgtsvx +dgttrf +dgttrs +dgtts2 +dhgeqz +dhsein +dhseqr +dlabad +dlabrd +dlacon +dlacpy +dladiv +dlae2 +dlaebz +dlaed0 +dlaed1 +dlaed2 +dlaed3 +dlaed4 +dlaed5 +dlaed6 +dlaed7 +dlaed8 +dlaed9 +dlaeda +dlaein +dlaev2 +dlaexc +dlag2 +dlags2 +dlagtf +dlagtm +dlagts +dlagv2 +dlahqr +dlahrd +dlaic1 +dlaln2 +dlals0 +dlalsa +dlalsd +dlamch +dlamrg +dlangb +dlange +dlangt +dlanhs +dlansb +dlansp +dlanst +dlansy +dlantb +dlantp +dlantr +dlanv2 +dlapll +dlapmt +dlapy2 +dlapy3 +dlaqgb +dlaqge +dlaqp2 +dlaqps +dlaqsb +dlaqsp +dlaqsy +dlaqtr +dlar1v +dlar2v +dlarf +dlarfb +dlarfg +dlarft +dlarfx +dlargv +dlarnv +dlarrb +dlarre +dlarrf +dlarrv +dlartg +dlartv +dlaruv +dlarz +dlarzb +dlarzt +dlas2 +dlascl +dlasd0 +dlasd1 +dlasd2 +dlasd3 +dlasd4 +dlasd5 +dlasd6 +dlasd7 +dlasd8 +dlasd9 +dlasda +dlasdq +dlasdt +dlaset +dlasq1 +dlasq2 +dlasq3 +dlasq4 +dlasq5 +dlasq6 +dlasr +dlasrt +dlassq +dlasv2 +dlaswp +dlasy2 +dlasyf +dlatbs +dlatdf +dlatps +dlatrd +dlatrs +dlatrz +dlatzm +dlauu2 +dlauum +dnrm2 +dopgtr +dopmtr +dorg2l +dorg2r +dorgbr +dorghr +dorgl2 +dorglq +dorgql +dorgqr +dorgr2 +dorgrq +dorgtr +dorm2l +dorm2r +dormbr +dormhr +dorml2 +dormlq +dormql +dormqr +dormr2 +dormr3 +dormrq +dormrz +dormtr +dpbcon +dpbequ +dpbrfs +dpbstf +dpbsv +dpbsvx +dpbtf2 +dpbtrf +dpbtrs +dpocon +dpoequ +dporfs +dposv +dposvx +dpotf2 +dpotrf +dpotri +dpotrs +dppcon +dppequ +dpprfs +dppsv +dppsvx +dpptrf +dpptri +dpptrs +dptcon +dpteqr +dptrfs +dptsv +dptsvx +dpttrf +dpttrs +dptts2 +drot +drotg +drscl +dsbev +dsbevd +dsbevx +dsbgst +dsbgv +dsbgvd +dsbgvx +dsbmv +dsbtrd +dscal +dspcon +dspev +dspevd +dspevx +dspgst +dspgv +dspgvd +dspgvx +dspmv +dspr +dspr2 +dsprfs +dspsv +dspsvx +dsptrd +dsptrf +dsptri +dsptrs +dstebz +dstedc +dstegr +dstein +dsteqr +dsterf +dstev +dstevd +dstevr +dstevx +dswap +dsycon +dsyev +dsyevd +dsyevr +dsyevx +dsygs2 +dsygst +dsygv +dsygvd +dsygvx +dsymm +dsymv +dsyr +dsyr2 +dsyr2k +dsyrfs +dsyrk +dsysv +dsysvx +dsytd2 +dsytf2 +dsytrd +dsytrf +dsytri +dsytrs +dtbcon +dtbmv +dtbrfs +dtbsv +dtbtrs +dtgevc +dtgex2 +dtgexc +dtgsen +dtgsja +dtgsna +dtgsy2 +dtgsyl +dtpcon +dtpmv +dtprfs +dtpsv +dtptri +dtptrs +dtrcon +dtrevc +dtrexc +dtrmm +dtrmv +dtrrfs +dtrsen +dtrsm +dtrsna +dtrsv +dtrsyl +dtrti2 +dtrtri +dtrtrs +dtzrqf +dtzrzf +dzasum +dznrm2 +dzsum1 +idamax +ieeeck +ilaenv +izamax +izmax1 +lsame +lsamen +xerbla +zaxpy +zbdsqr +zcopy +zdotc +zdotu +zdrot +zdrscl +zdscal +zgbbrd +zgbcon +zgbequ +zgbmv +zgbrfs +zgbsv +zgbsvx +zgbtf2 +zgbtrf +zgbtrs +zgebak +zgebal +zgebd2 +zgebrd +zgecon +zgeequ +zgees +zgeesx +zgeev +zgeevx +zgegs +zgegv +zgehd2 +zgehrd +zgelq2 +zgelqf +zgels +zgelsd +zgelss +zgelsx +zgelsy +zgemm +zgemv +zgeql2 +zgeqlf +zgeqp3 +zgeqpf +zgeqr2 +zgeqrf +zgerc +zgerfs +zgerq2 +zgerqf +zgeru +zgesc2 +zgesdd +zgesv +zgesvd +zgesvx +zgetc2 +zgetf2 +zgetrf +zgetri +zgetrs +zggbak +zggbal +zgges +zggesx +zggev +zggevx +zggglm +zgghrd +zgglse +zggqrf +zggrqf +zggsvd +zggsvp +zgtcon +zgtrfs +zgtsv +zgtsvx +zgttrf +zgttrs +zgtts2 +zhbev +zhbevd +zhbevx +zhbgst +zhbgv +zhbgvd +zhbgvx +zhbmv +zhbtrd +zhecon +zheev +zheevd +zheevr +zheevx +zhegs2 +zhegst +zhegv +zhegvd +zhegvx +zhemm +zhemv +zher +zher2 +zher2k +zherfs +zherk +zhesv +zhesvx +zhetd2 +zhetf2 +zhetrd +zhetrf +zhetri +zhetrs +zhgeqz +zhpcon +zhpev +zhpevd +zhpevx +zhpgst +zhpgv +zhpgvd +zhpgvx +zhpmv +zhpr +zhpr2 +zhprfs +zhpsv +zhpsvx +zhptrd +zhptrf +zhptri +zhptrs +zhsein +zhseqr +zlabrd +zlacgv +zlacon +zlacp2 +zlacpy +zlacrm +zlacrt +zladiv +zlaed0 +zlaed7 +zlaed8 +zlaein +zlaesy +zlaev2 +zlags2 +zlagtm +zlahef +zlahqr +zlahrd +zlaic1 +zlals0 +zlalsa +zlalsd +zlangb +zlange +zlangt +zlanhb +zlanhe +zlanhp +zlanhs +zlanht +zlansb +zlansp +zlansy +zlantb +zlantp +zlantr +zlapll +zlapmt +zlaqgb +zlaqge +zlaqhb +zlaqhe +zlaqhp +zlaqp2 +zlaqps +zlaqsb +zlaqsp +zlaqsy +zlar1v +zlar2v +zlarcm +zlarf +zlarfb +zlarfg +zlarft +zlarfx +zlargv +zlarnv +zlarrv +zlartg +zlartv +zlarz +zlarzb +zlarzt +zlascl +zlaset +zlasr +zlassq +zlaswp +zlasyf +zlatbs +zlatdf +zlatps +zlatrd +zlatrs +zlatrz +zlatzm +zlauu2 +zlauum +zpbcon +zpbequ +zpbrfs +zpbstf +zpbsv +zpbsvx +zpbtf2 +zpbtrf +zpbtrs +zpocon +zpoequ +zporfs +zposv +zposvx +zpotf2 +zpotrf +zpotri +zpotrs +zppcon +zppequ +zpprfs +zppsv +zppsvx +zpptrf +zpptri +zpptrs +zptcon +zpteqr +zptrfs +zptsv +zptsvx +zpttrf +zpttrs +zptts2 +zrot +zrotg +zscal +zspcon +zspmv +zspr +zsprfs +zspsv +zspsvx +zsptrf +zsptri +zsptrs +zstedc +zstegr +zstein +zsteqr +zswap +zsycon +zsymm +zsymv +zsyr +zsyr2k +zsyrfs +zsyrk +zsysv +zsysvx +zsytf2 +zsytrf +zsytri +zsytrs +ztbcon +ztbmv +ztbrfs +ztbsv +ztbtrs +ztgevc +ztgex2 +ztgexc +ztgsen +ztgsja +ztgsna +ztgsy2 +ztgsyl +ztpcon +ztpmv +ztprfs +ztpsv +ztptri +ztptrs +ztrcon +ztrevc +ztrexc +ztrmm +ztrmv +ztrrfs +ztrsen +ztrsm +ztrsna +ztrsv +ztrsyl +ztrti2 +ztrtri +ztrtrs +ztzrqf +ztzrzf +zung2l +zung2r +zungbr +zunghr +zungl2 +zunglq +zungql +zungqr +zungr2 +zungrq +zungtr +zunm2l +zunm2r +zunmbr +zunmhr +zunml2 +zunmlq +zunmql +zunmqr +zunmr2 +zunmr3 +zunmrq +zunmrz +zunmtr +zupgtr +zupmtr diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/lcc_lib/libmwlapack.lib b/deal.II/contrib/umfpack/UMFPACK/MATLAB/lcc_lib/libmwlapack.lib new file mode 100644 index 0000000000000000000000000000000000000000..ba94c1bae40289f8ffd3c21c68dc5e471682bc74 GIT binary patch literal 466678 zcmeI5514ILS^wAkMXx}3Q&d#A5@J$bXU@!=nTv!*hWRHnOf*a`Gjrz749v`(Ip^HV zy(dFOCB;NV!$c)TMI%K;qr^ld#YD5hq9U^*L!+X?qN2jz`+eWN=d88P+aK~I9XrPOPxj9p zJ1XOqYL(m1-Db?lJB@kaS;oBR8e?8^vDn#n8v}b8wZnGbBsRCx7+CFcvBg1SV9V!; zoqwA#u(i{~)~_`N);L;h-$lm2F1Smqb(S%(m)|7z3VLqXtF91x&8RW3i|b;q`=&9l zH#|q|jn^9kd-L&PmtA5E>}~goz5N_xVDGp^>|GUOU{})f!`@5J4SOFwKkNha+^`SP z^TV#WPV6Jc8Uy<%JvZ#*^!%_-&WT-ri!rcI(R0H-eWloq+l+yIZok+~cNhcv;u&IJ zy1^LOEtEg(tCxy>?LK2*f3!#J>$e&MyX{o5KfBr(*k5cH`^yWBf&JB8Vt1Tn4D4Gs ziG7>SDeUjB5c@|uX4u_zv46SU7}$4D7yI{Xje-5=F=F>!Yz*vw?h*UmImVC;4BR3% zTr~r*(W}HBdZZbEJ**{m#GPgUcGMYS+ix%fut%OK_NdFu0PHdMi#_fH(miGX_7utq_SBojDit#To4itNdYc)5?b{QAN z_6*7i_7jvB>?bc1dluyddk*CUdmiNldp_j^`x(j$_Op}|?5vB#UUIh?fW7o=v6oR^ zuyZLV*c{~rTcDg^i2>g6*T6U_J&)`0PNDL*qg611F*LqDfTNZGXQ)0onlv4-c zPBH_q_g*gc{y{SUyLwIRL${j&*l(OJ_L1w%0PJJOid}b!8GwEAUa{YrGXtx;$ixZ4cC{_bqCZ{KVNV0Tr-{_#pP0Q=`{V*k3|48Xp7huFPmm;u;- z-XQkhCz=7+|6V5cz5C4o+2G)LV#BwYLD*rZi9PgMGYC8U7_lQSHiNLE?h*UJbIc&@ zk++CFx?%=l$6P7)_-$qocHDlkC){BMVJDm+cH#|Y5ccE~#eU>6GYESM=eogcIw??KYq3ug#EE2z&kgV!uo|!7jZ`>@AcN z?5&g&>~hKp_N$Z=>Y_U^OAe(h#62)n8x_Wmo)Anb$N#D0Ch8HD}D9b(s>VFqCz zyFu&|$D2XeZ(b_)Tlbkk*bRHce&<#*2>a}*VxPap48p!}wAjrTnnBp_-6i&wv&WXSBw44b~6b3+m_hh-Dw74-#Jt4 zt{coC?4M2)`)A4@_OJJe{o9-wgxyQe5Bsl^#r~U~A9nwdY(u7H*aq)3L$HxE#16aO z48gV?D|YxLW(aoVJz@_(#|*)K@D{P7t7ZuH=&QsYd!!kHJ)WK)b{su7?D#XqPPoww z!Jc%I*pn|eL$DvYUu@@jW(YQRo7lu@W(YQQjo8f5W(aojg<_}NWrko+KTGV#Z!$x$ zXYLd`{R%S#d-kB%bJxre?5A%RdjUN+>`Z!o*o(G{y_j-`{T$^E`+3SAcFqlAv&Wku z*!-np3-_5J*wP-c^KLamu+>w=_R@31>XbXId6C%uyUY;mAmtDH1v)pd3r`Yz<>h7w z_Ub{g*HZ4VU%FlFlGDu)?3b?-d(*LI2=DYj@Yl>VuoPvtcbn)N;3p| z&o;5E_M0Kt`|l9@;2CBJ_UqS+eVCpbb}c|^xYuuq&L_M7zFu-~TVhuuKW4g1VC zvCqX5BmZ=H|%CQudpwlDE5`h%nS^UM(J*4xDXBh z!M<^k*f;MsL$JR&TkLOdGDEOCcZz-Iax(G@$h>A7L!^!%_1 zdT!X%-C{Fmn_<|=H;erkJvZ#>SBjlR&kcJfJwNR9+r^%Jx*3K&_d2mNjy1!u7hEEC z=DlVZ_9Dt1_TpQ_&aRqa*w0@jwtJfyhRyC5o4>;h!}dH!Z0UM43_JgLvDHh>Fl_IA zV)Z>{7}mU1?1EFxFznzpVlO}148tzGQ0$d=nPJ$g&lG#@jb<43x|75%x!erH-Z&`s zCOT%=Tj;o9Z=+*|T~5ahd&jY2@4Une!`^+5*n7?~!?3Gv5&J;Z48uNnmDn}g%rNZ3 z`^B!MV}^bF46#pKZ-!ylA20UXbj+|D?iKsYoEe6F_G@A{Rn0K$3s;GK=}0pS`*KU{ zD|eb<*w^T|VSjjo*w;@q!>~WOOzcnZGsCdk>A7Lwp!{KfRT2A}E6p(MTa-KO&brul zZa2fQe>h$2pRO~*uzxvL?4C=^Fznwbf7pM}bHo0N@`wG;$zu0kZHCE4296XPYMBw( z$em&jIn#{5w%s6h#EE7E_5+uRJ^Vg10(-=q*wMF`5!hp@VvoJjjKGfFCbnb08G#*t zhu9O(Fe9)h(euMjqUVPFC_O)H=lx>i=a~`M#BE~L)658L=323*9b-mdKX$R$)9*1O zu+z>FdnV-sdluydd-hdg&!gjpozW6|!JTFV_QEs8UUZ`wfxYA;v9m8XBe0hZitS!A zBe2=q#cHRU5!jyV#FmdWBe3%?5nH|2jKJ3C#Ohx&Bd~oZi(PQF8G*I7i@p3pGXlHt zF0oggWkz7HzDexjon{2~x+}!qFlt6%Z>)>G>6>N*cG+{p-gdnifxZ2Bv3Fc*Mqux} zPwdJ)W(4-0TgBdYsu_WO;2NM_vvN?_Al3oeV6ir{X69Z z`;U9Y?mNef!2ahJvF}k%WTOLDi47lVMq#5Zv4`AgMqv*-Q|yQv%qZ-r6UDY)W=3I; zxL@p1=b2I1V{Q|B+-YVMcI>rcPdLVm!hYx?u_xYbMqxjEw%AEGn^D+PDq>H)(u~3? z+r%dKn^9Qxn_|13V@6?5yI$=kE;z3L`23VY2?v5T)Tqp;VHioJoJANI!E z#om0n8HHU&&kg$(dT!X;DSy~ID0kSqD0kSEw}`!$a)-U|DzU4NG^4N&wZyKu(~QDC za)#JPZ!n{<>y8)uq zL+q>c+^|2O=ZF0fJvZ#@_ley`&kg%CdVbhn&~wB7@*1(fKH7}J?zl+oTX&mL*tgFX z`}>>CDC{3AVs~F@Mq&TDP3*h-%_!{O?-2XXGt4OLKFSI9zbA@)?=mw=cG$rEV#DW| z!(gMgi9Pf*a~SMl*NPo^j5!Q;)Wu@k?=gqL9(j(~qi!*W!H%hlJ?^R#nk%#Gv-9US z4z4!L2}_o1z{wZ*x)dTp~U^Qd)x@0!)h94Pw;izdZ0skGTAO<+Rx5jGr3=OUv*Y=k9T3gIy3BGPn?SkmCU2oMf*A7 zpv{hkLv2gWF|mhM=a|@|)|CzW_}SxD>ul3LBluZV*-`&fmxg^d+EfA(n4jTJk8_RzXMVVza>xYgNrU5<65?mRC% z>}yjf9<|o3XQkiKV!sE(L#uPH+2dCG|JSo~-I%xkKYO%qqh_CN_Rwmd7kO_{o3kf8 z-qU^svUl7<)A?WQ(Z0_6P&~9cXMjC!UAE3avrZnj+7x8(&PC_lDPC=nw${5-JZiPy zMeJ~!bqv%<9$Kw)zz(-LdrEy-TwJlx5|8$E-W}pm>q=vxeO%&Et3!c!)XJ}1{+<<& zTAkNHJZ@dLp0}}|yxL;ZsW0MDtHY9b)M~%x>~NcPywu2Nrs=$5;?chRYUJ69ht`Hg zop`k+!oIbcZRXXM8Vk$qej@YGYV}f?S6i8#n{CsWd1$pNQsz;seHJngtyV{udDL24 zZollAN39F(gAfO8bM0fuJhaxvHjgaxxOLoVC68O3r$vqB)^<(7Gmyuvlg=}c$E{ON zD|y^nby~^e)@i4eJZ_zFTFK+qT}~@`+}gehKxX8j)q2%353T#1V}pm*1MTaO%%j#t zdsjGUv$)ATv^Lw7E%Ugw{r*EMdEDBr6=)?7txjI-QR|Y$SmvSCp-K9;mD%Na`?X|` z_FY-C4}v|kHf$Q$<5v4Tt~BI4a!;4Ne-MfKx-z>uzhu1o?ji+2@Qsv^JdQg~zS!ii3SnajYQKpxYa%n8`=5Yu&!+oDQ9xSIXmppGt|fJTE-q) zD^4pswAybhINWBxKJ`8F`qcN>?6JrD+Gn@EM_%{(o_7C%|AGF4w$>$P=Am`X$qOD@ z>rM{vxYa)A^|~-!cMl>zin{Z>@bC;x=P2NDtFv!2+jpPS3J?3*L#xxLu*a=-9ct91Pia_J>WIvq7rn?P&yB24Y1Ag2R`U3H?LMVZ zlRl+Ut2+CV$NSoSN~0!yN~31?DeUpS)Qea-kjJfdEo@|cN~5;n>`NZ+YoEtPEjy13 zPAfd@yWyN2c-(5gD;v0a=2qwIY{sKi+HdQ|L3v*{=j|x)Q-Dk5$t^4-buMd0NYVW%blODCT`f7VuacXDqSllxH5b zt~#yk)%MmGEA97M=5ed_473kzIb!y>)&6g**%7ZgN6a4fb&i-lv^q!39=F<= zt!78O>Krk9*w?!L$~?3>N6a3#w%@JT2k%yFo&T1dhgFL`?1L&zTj%Tu59`h>Rp!;! zomr~PqgHzam3h?Ku&z!s53Tz*krap9+WjIL(J!t$^HiCKR;yRbJZ^2j*U(B{ZGEpj z(#bq(wda#Ek6N8$5RY2zY}w&9D_d&hZ1>uu`E~JVUng7fxV1f+$37U%V{09Qc(wI) z=NQDJR_7SRqgLk_#G_XG7}()9>lmn!k73=(Ry^95^UHdw%;Q!oTiS=uxHH0D&qmnm zO?%9mc{Mz}^$g-stDUWkyU}K4n~l5IopE>OQM_{&vvD`IT9+4@SF2kyw){I<+LuA% z)av#{h&Z*zoHZLF4!5<(;Aq5%1>1J+nMbXQ*0><^(As`)h{J96vo2=Oy68MBd$g}L ze~Ncv6E*UY($+ds@n~P?NX0{|b)@WYoBgcW zk={o;H?# z`&$2>TKWGUwC7G5;?ceim*Sz-Is@!*o1H<%CH>LnxdvR-0h)(CX|;4z<}-v%_t6-Wk;go7Om~As+2(_i34jR{I?w z9=BTW0BXgxHTG@ybeYGk);oaq!8@SoTybO`wOVIS9BQ-AK;}`ab+qD8o822^Uad*f z*X?*EwwOXou?(uf>U7UN^+Q$Tk+cvKma*wy}uKB+9QL$>z`_f#t z)Ti8|ZM%+U4mS3&!l5=xwa-1?+WE6;kJj}G>p!u_t&AT7K@)*5OM$YPDZ;cDT(tUYS#%R_7HHk6W$RM&=aI+MZL$z1EU7GmtsFY4e3W z$m7;_257}=vt-W<@B`O-&&8u(i$rJKSbxkevbgqy4|K zGhkQFC3Yy@J}c}{o1MMnZk0UxGi8ju+9R{v!`7;9nTOW)TUZ=wvxpRj+w8oh-YhLx zBQx5EJ#4LdlX+;h`m)U9)^;65E2=ZL?JAUc+}b7`t>m?w^(nd6TCztaxkp=@6n41H zdY!0|Ns$?%tcOD!GhxpcQ6!Jjv9(@(cDT)c*6h`{=ZknBc~<+C=CKm}&3dKrJ6h<) z-AqVcX?sM4J@5+C)_(oi;Wq2_qel79&TB#=Dmiw$&MZ+Yzb3S`UK8=?dHGe?Oe=d$ z?A1Z7Y;_Q}?b)8(YdPzHa*ww2)=AAgw6<5L<{q|f{XX}2+rCD@KIEabzBw?It8 z)!2tTYPHrEsC8+f{SM1Kv|6u4=AqSkk7gdVTB~SskG9r&ncU;;=GZFtc-wwAWb0+9 z)mj6Sd%WEo$mJey?N^A`z@T+$Q^U_a-a5~)L>{-cdul|I$F1#}f>ykPuyy_$JhZmg ze&il+o#(~c4{o*T<5e_hZLgxqJ>ELcfK@cy+O7eJL=|w>%j6!m?e#LbM_X$ROz!d4 zK0CYy2CdGSWRF{&eX}#UfpfRX8GG2*c^9(Bt@iolRWxXI&Ln%>>O60DCaqO8ypOz( zt@Se0${x1u^)k7K?Y#ZIU=OYK+k$Hx+H9WK<2^Tpm)zs6%?Pie;nsGY#q*)g($=YF z?4h+i=aGBZw%5Sq9=2`qC-->U?s~8fd1&1f@iT`v&XHlY3%5GQfYmP4YR^Yx9$MRL zH*ybK8&WuEYp;;VJ#5=+A#x8}taI38i9KqyRz2h%w(V69xrc3g)kE%K>r^u7+0bg! zD7_V0?Gwfxo}s}J=!|QARe_k#~>cH+S#(hZC19TQd6sw zt$1j)vlWk9+gBr*O3kg-F^Edta#ZTvqpfoc;!&$}4A~Wxty0r2I3V6w$Bp7O9bK?KAhVZEK&ohplzJmw9NluD~*{ zW$Tfd({l94+@q~E+a?a$+Lb{ZYO~HBen*QnKFmC{+UHa}w6@2G;!vA?p4s6x>pW8< zpJ!X6qkZ`Ojji<_$vkeg&c0}K+-jYDQR7;U8kc*twT@mKYO{|j^QhH20&%F#?i(_% z<*0GFhizMp%RSz|dDLp@L%D}-TaC*-Y}*P^?qSZuT8#S3siGIb!y>)yW|{VrvB?_Td>CY$rCaZ!?eo>ioCtJXk9rc^|qe#nw4H?6vmU zt7mhMw$8rnIiE>3V>|cGooC%rv)kP?rzYfHnmcx!yX|=cqh{&$`BNS@V9XH)kKuux z&4mL^{{7HDb{KQ+&f08q_RzcVU!Flfcg{5$U3N3C#D1hFH)l_n&i6fvemR`-@*mlL zllVJq7)4U!&;X9ieb~o6LVp?>z@F|S+lP;tZkM^`K8VO8u^luIr=KoU<0YA@PFJ#9 zy0)1*mChI4?voz>-ihnd6aC(ij{%rCsd$mFqe&+^Jb_WS+cqr24(@N1F(nYT-8SQuf<&`_|5voS2ROAN2BB#*q#U;2a{e_QO8IUFhYr+dIAZA2^%&W6&H+zdE;SaNw?# zWP57Lu9qWRFHfM?+^?4p$r8Zp`3%14eF$ z(OEYU>;A+1T+ko*e@QLda-S*eBXtuQZMn}R_Q78Zo~Md^guMJrphX_p?K{}Pf57p} zGh&PXE-js$W%FEe=nixfiL)r24H9R#uZmL6kUBs5M*(R#2kv8co;)=dktSDY5<6&)qhIohCif|FP%~4BwJ59& zGix;H)XN%@r$^tcQM}7qwJdAtI*rbM_v^F~BR3h-*?;m%?XIL9`Z|r{9nhxBa+dnf zo;Vvd*^TRz)-<`#9#HGArb)bmnwcrf+JmH~LRhF|<)98G5?>ir2=oXduP>KT5wi**;$@g8;B;I9h+!G+W>JN#v zo>+S*Si|C2wXAXS0jwe3W6cvL5^HpN=@B}2yA7;i@swKDIC(k~{avfc!F#NELP1y7 z9wgUl`4vj6Yqf`gHCp_kbNtDv^Lws{v_p?SIo<(n+!G4Aa+dl}I{)3T)eZ+|SWu*Z zw5_kzIQf8@hIj`xGwz86U0F*tttZxw0Bf|eOlwV})cMhGO`~`Rv~f=;=*n5DX+3dv zq;PgXZ%xB0VmyjSJG3T+H`xIfH8buB1&K92!NFsK9{_7u-mRdjZQXxz@&T+N-YIKl z+!G5DYu_K%j$+p6BLsR`L-HZ4QM|{RCl(~uzCWxzTv$^)E}%~@1hUpKF7O0{#M<|V zwe7?je_fT&`Qz^qOkS|W{qyy zr?;*l`4HA9-m7b6^@23#LFd2wJnkczHN~1c-^DVBH9B~YwWJwDscT1rHO-p4Bp*=M zIyLu7Sl4cO4|9p&ardOZhyMY6>BGL-_XO)IMxq?*=KO?wi7A@ZZB2Q8XYqj(3jiKG)m;p~Tm zGrjjwpzq)eyH-QIgPNHrs}m%ho!;x+b%GOwHL45`{8_cF$Dk|O4YZ4@TG1F3@g8eQ zD~M9po+zv-)(Y@#z<{h z+LOQwac4H-M{uc2bYe_4J z!rG58YwHt=>l%^|scRJPu~t?qNaIgB|J~=+epFb~T-VkE>l(#-tR=l5N?m&jvqoRP zsP}pe$%oW6iuYJcdO;M{b_#2n>sr{oi0DhKJL+0lz2HGI-x2$J3!Vzr>Kdxr*7ItV zIzNg=p@;t70vx(m(~?#YrKXKBXNvEIyAXIUT#k2Hn<}dnq;Ubg*Sn7k#+fzEYa{DO zo*qS2Z9DHFKiu!lqpH@iHgc-0UXWO$Q`?=jim;~mTCELyxX$DbPn`G8%iq}UrkbDSh6z{QCRx@~zj6w5}7q&6Jw|$CP z)2q1$es{rw|J?;sNiT@PSyedGT+{Xk)-;OuYFg3@qOdkCtSMfH8~8mLRMq@-xKl|l zh{DRMU7AkBBs`R_j8v5Q$#{GBWdf#1o(@g8eQGl){xPG;61 zC2F1TXa?$_h<915Ce0uUYflr_mNm0R$%piz^<|&6q!~nE?G#~6@#jGUzyD_e@m^g^ znn4uSevDXKoSQvgZC#V(`>$&p@3EFNgD9+>Dy*$&W{r{$V$J{lpK8(!qOkUKutqmk zf8dV{a`lA4;vaNBd8E#dq7@zmp9e*}Q`D+SGl;_3GlVm}^SDGx(ESuR-a*Y&%W4Km z2c`FV_qnwnXV%o}po@X`lSjM*S~ckfQEJ+0!kOlp7Ir^*BF)#Ps!1=1!rD)OwZ#>> z`^5wQN^Q$EYmz+G@1iTUg0;9D@02xDO?p8T)}9I0_!h=mSqr@XG9SFl+H}$jqOkUp zU~Q$bptr7Z@&R=X@g8eQFNnh0>0k{XiB#K%a`FMJb$%XnI_U*bSbG*&IO-l z>WQ`Ifi?QD+5?}oEj4$f&X1y*+yc!V@eXLyNi&GjfBv*^rdOXLQi3#hj(1Qq(@8Uk z!rB>NjhE>^@T=OE`jjLe(0_J*#$YCC22oghzObfu-8Zo&%hrl|&;l)#L#9Cuv zc}*>Al6?QHalFS`(hQ=o_CjWDqpp}WBp<>W#e1wJ%^(VEKWl0$vvad*wa_g2zFCua zkF}&3L}Bek%vxPDYe+tXHH!CGE2|kKeTvS1cYW$Cu%=iG&5{pb4F~VBmUM$Cb?wE> z+Pd2Bqb1gmdbriM2Pf#6NcjtHqv|ULvh*HzeX3pl+&f^j(NWKec+j$T9;eKz1#5<^& zT}d;D!rDujwc428{&NAz)1yBvlvty9kF}&3L}Bgcg|%_btWokotd0AuCCwlTYcCVl zNV?WKE?B5h@dgIQY;)@C)c zM#%@UHrv6PD;y-&zCWz(Vb=71)_^o7Bp<>W#k(5S_?RmkB-Xw^tSvHY`!(wZNIrx$ ziuYM_g@eS}_lLD5X6?Yd;yx6~hp$WTNT#S-k%7ph1{P=;=Q^yo-~6PtgSI?n&&$f1Lr#s@3WRPgBYys1#3%mD+{$_ z15Tc*eZSXhi1%4bnn4WK)|oZU_f`n|4k~)1b=+HFd^~9eF<9FGYs>SBKi9&^2h=sh z`*kg81~FKxgSC}4#q(>Nd;n{R_gO2c8Kk*fI{)1@g9fwKQ2g1@6(k?R8pZppCEXxK zU26(!vwFt{D-B9Mh_#OOMB_;}h{4)EVNLOU*H#)~_gzE0U)Pdu5QDY-U~P4NNpD@_ zL;#=>{=a zJ1DHF{f>9MQ7HK!*8J~yAFm|cAO>qKVXdjTu2J$qtTj98TG9<-u=Weg+LGdR9&1QG zgf)uy`_QBt#9-~^%vwY9^%{~7VU6N_){<@zgSB52*47pGp$$qth&BH^-p4CRH;BR7 zg~FQV>$OJU^%}+dbuH-zF<5(ru%`HX4b~cA-)n$)pS7eL#9-}}%vw|P^%{~7=|d^r zV{Ibo1~FKBm9VDydaW6Fy+-jqYe_eV!P-T_n&LI!YfVZ%sIGOa0iQ^^K@8Sj&8%tu zY|C2UXIl{O*R`Y@#9-|;U~PS6Mem#kCm&GP5bv{=bb}bIy_Q*9RXpdhj^smFqj;aS zq#MLw?P6x_pyJOPtRwjl)+pX*E$Id^Sowb25XlvYwL=y*EW!RNL{0NkG099 z8^mDk4Z@n@^=ljJVe8ir@3WS4gBYy+GP9<6{n|$0`ZdJ+tR>wb25WB=))ecZ8-eTB z5bv{=bb}bIT`H_8UQ@IYxTXm4K5I!gh{4*Mm^H}PTE7!{1IdSs4Jh7cE$Id^SbH;A ztB>#3%Ni#iz#8Ix){<@zgSEFXYZc9`A^8y2DBfqSq;8PDM}y9P_j_Vp#;om8(1SjN ziL!s}MoE?%&KKUnwCH;@DBb~Wd@^YUF>2adg)_zLzw3L#)_)`3LCuU$Ce0uQYi|?Q z6yGtR>AL25WC;))qC7L6Lk2YZULZmNbJHtoW#rv!!%^(JA?_k#I zn#Z9?K7=)j_gPDtK@8Te5Y`m0ldRXn?(>IupS7eJ#9-~6!kXgm4y|WXxqXif{Ha_s zK2=gPNZ+GD{YrPu;9bI+=Igb3;Po2C`*khp1~KZ|yP377=DA!XA9B4$@jh!wH;BR7 zmBO0ly4DP=YZULXR!zD=4Ay>)S=*OXtxKi>z|8WpwuC#BAhqM5a#{*&Sz(8jAtFNjgo-p`!PE57Gi1Ig2)h_vmzhx`~c z$I&mlcQ3E5@5X9g#5<^&@oLfwVzBlBX00}+cP&u^$HmNzK6PLlbMp;C*!%zZ&=<-baMB8O^Lw^7QDR zwV4jq!gPbgT22?gF!V!MyH;4+rI|HKo*w2g`Sj#*pK%o>uXN8fdg;yu=8!gPbg+SaUnf?3c4+T2NjHeW+HVPKnzi?hK<%C4{koQPgBYy+wy>sId*2Au-YMQ^ zt)y(Dh@r!0W9^MWib^ciL ztWUOhU(_-_lQe@EoZTRtX`WlF2hOcgykFCjW)Oq5Pcv%`l6dkJRww|d5JLl4V};+^ zk9>6%TCjF!XaH+>w%ms=ps=E+U?0Aq$1@b{!=2*@?}If}?t`lulBY*eRV!RiMDadr zNi&GS+V3!H`!&z4A^8y2DBfdjSJDh(u=W{d?E=N$7urDbA*@ln&sx$9Vz722vvyE( zT|@FAtWmtrTG9++u=ZJDP4PW)8wcg<&icMyqj;aSq#49u?Q>wQIoHrTHsIs~>KfvG z){AASfhBKwWJxuVC^PmZC!I+L-HZ4QM}JuNzEXAhKkOA_s=2! zF0)pzDegm&dgUYYZULZmUM#{tbI{fqq`bw)eV|;xg~SI z<50x=tR>wb25UDnYpqqqtReZ3K9u5J)+%F3H;BR7m%!S-eTwIDIr#wA5bv{=bb}bI z{hqLdEvB}2eX&{Bdaafv--Wd8%%c2o@Bc0F4r-<{mNbJHtbGNnt!ieClMi4G@jh!w zGl;?3SBbUyVr4~bU6bVdXN}{1){AL25Yx6Ya5!!p-4WYu2HKeuStR>wb25WyJtZBYps|Q}MQM}Ju(hXv; zb{n&%Sfi@5m>W{pIyI{Cq#MLw?N7nls%DLflMi4G@qS%PxZA1AO>rH$*gJCs8$0tD#ZJ&CEXwfYu^;sG>=0A zHLBH4jjED#gBYy+6|<&UqgoBrs1WbhwWJ%wVC}DkwF$lJ*H-J4e8^lb#rv!!-5>^Q ze$NQTzOUCL-m7a9NjHeW+TVe-g^hiBS>xmbSVO$eTG9<- zuy!X{tM5^JPsuF#0M>BuK5I!gh{4*o!CIrK_8#C_@&T;j;CIUh4Saklof41d2 z%-VhhcQ4)QyBvwM{dAc0D7t&;!(|u#>3)|Z$2*`^CX!|lqo)16aCSiNwOV68B~Onc z(zf#+^25C!7DzkLQPYxU5QDY5z*=(;eGEzGJ(;uQ16aesJ7vvOCX!|lgSCHP*6NC{ z)tX2?gf)uySxcHh4A%ZpSW`R(Z3ca>0oBEh?=`4QB+VcOYyU*7?bSSwE6Mj?*Ers< zYe_SR!P?zmP4hgiBp<-q7W251Ni&GS+CPIe&GWdDd;n`(%;Qd$)C|(x8lC^{b8G(s z)@Xw2fjZ9+AO>syCaf*1 z)eMLgN`uy!x8wyt>|SCa3aHIDb| zTG9++u=XEdP4hgiBp<-qR`a+?Gl;?3e}Xm5^SF|H0Bc*!<4%>-4AML## z^v>fVb$%4hcofXzBHrmhD^n%)f;6|*6KD4cXL{#xiIkvuT#k28GnJ{N8N}#6{~N6F z^wa}io!Tbl%lf%HPoCO}s#?K3E+4$lTG9++u=YQ~n%=oJVkKy9jpKdRl4cNtwf_~? z^v9PhK1G=mtd-A}AFHP5X{^8NRr9PhK1G=mtdeGjZH;1+pGuh%5`0M>Bu zK5I!ch{2i}Al5X`tx56$tZg;7R#G!ab8B?|yU(o+fHl2yYe=0RMWfJyxi!Q)MXfTG z^nw^QZBRJVJGVxp1kJ5+yn~vlR7>gwX&$$ynl=R1G|#O`@^q|4RjpudjpKdRl4cO2 zt_=%odgnWcm7w_!j`vwhnn4WKMwqomMei82iR44-8pZppmDCI#B;$g^_&geePY%Uk zZFHbk-`mtc+E$;P;?(&J74@J;W#iX{8eCR%BCG~;_31|7)jm6nv z%-N!XS+)F3w4q^67R4{(?9k&+;&jn1Xq9S7tsrqmFF^Nsj)xFujrkR=oFR37^vN0G zoq|@WmedInXFYND(1BWGZb9p3jyd%J&N$xVENKKWuFtj!XEhC1Xj`ox0x6U{J&G#Y zq31Xx-a(D#(@JUtX+Dk4fA_xgVZxf)xm&OjGIuNSK5I!Qh*8%L2WyKB6(i5B>l!B? zP}dOeu{K>&CrH<7J=L`%m^HoEYKuYIC%w&l?Q=S51Tkvbk;0kcYqiC|Yc<6CH7#ib zFjo`HW?(x!a?_+N$3ElTznL(FpX=bGLlx4rrC>k{Ur8 zfA(~p_Hc04tSjz6Ie9wPBGQWHIuP%mW-8N3Cy3F1ZYS2}XSM1CoO(!2!=XE%Ri;bo z1gWO=RMUQtIMaMzm@N7JYuZ-#g_$m?6{LBNo>+SXSktRXA$5Kf^_~USX^8h~TG9z( z^qr3s&h%cV5h+2M6vsQL(REtV31YBzw6Lako`YBk(xf=vV{N9SPLQtEdg?zP1=cic zQj$C!Yf%qcF#hCtpS6-&LAqA!iM2;FYij4z)&n&u#5W|B@2qyK!2aHjZLEl`sp z(mLkUW=iS=ssHS$rX3@!DZW+<)TD^D4ozyNq*jpn&z@L&ELhX4Ng;K96kVwm&2><` z*MI)s)CppLKI(Dctgd18ZLR_fSNOSGQt!&yp+6smLw7JUm6?({L8@nT{=2WeeLQnk zQTn+R;-tcu6^=ZM>KVm5pjBo{Y6R&TttZZoWzP1f{Tw@yhUDo{)N>ZiacptVp_!68 zL8@szv349-Q+v-LPQ5E>MK!JCoW#rv$4)C^Kxqx0Wg2YoWLMqfdqKnXoWT|@FA ztWmtrTG9<-)U}hCHB3?I{H`Aw*o4imalFgg#8^q)AZejJ)wLgC*3_=|ZU%lf5AhCY z6Jtp;h*8siR5;VS-kV4X`fMJ@JE)n7v7{NqVC^Zwn&xY@{ejnN6z{W^G=mtd?G)DZ zuJNF{6!bYzj`vwBsTrhewVtlko=U7;FuSf`RIufmZ=}wTq7{+_>(&tOfHpCf^nw^Q zZHzcOsQ7!0v*d}jBGR@CjQn%Z97o&y+gBvsL5;4}O6movrqLPgKCdZ zvZf(*eiV^bP}30afHpCfw1OBlts))(8h>)U$J%&FtsrTjJzc9!fwe{Y3QPr8Yg=ldk~|%2(bZbf zxBv(5vzGLN7#3&g64n%t3j*(XMXdRsJ)RgZsTZXF zvnSS025YOU3PuH6&*4(){3sd~6wTpMyfY}67*AS3jQ;a!%$eTnw7`3-9rW+5HZfjO zD|nF9v)K1mI|ZDnn7!S)p2^&8@hnHdz18T@opNR-#!Ko14-(Guvx{wvdiGS(l<#Sk;QgofPkYHc?6XK#ZF9lTABe%)Pk^;%t)h2Kz{v-U2@vme zpEM>YsShMAs;BF;XEJMhG_!`}Ls+ADpS6-2L1L{Z)_#&%Q~X`+2Lr#Wo#TDhO6mlO zwVqfzU0Bn5pAKRr=svg{@3U4?D@d&M#M-ljHNE%2C02s&gUj(gYe_GNF*f)qVNLIS zaEXv)^5pdM-F)8S#Nn+E$;F%98Iw+M)G!iFZ&l6B8vhgQS7> z#M<+~np$m&Q>WwXzovC)Qxi!qh|zccG&tkSYOOUbY)l{r@7J`X7sO!g3}S6@VZYk% zE69@XQq>CjPd<2`wWJrsVD0(L+5xrN6tRZnLs+ADpS7eH#9-|O!kXr~b|BkQnsB1WQzpf>{AO>q^GHd6}YF$f2tReXj)+pX%Z8GTv zF<5&cv$m$0H6$Ox8pZppmDCH;JT9I8?(?`m%d8z#JT_<``4HA9-e)ao1~KZ|i-ffm z#eL{ON?Vw4$2Up}9{cy&y(SI~$zwvT3E7yChGn6_Hj{({S*9 zO-p(~4Ax#Mtf^h|jWxr{-nKQMYnW_iQ-y+`QtfWqmG^w6An+0c@=Wiu>I@W&s zP8__0nwgkNT0xBKv^lV*d2OU5AHdocYa^$URuF@=d1g)PcVp1oBGsYSe$0)C$s=pr>oK1!hg}m>^L9tas?2Q%NU?QPcJ?XINIK zbv~^TwkEQUc(0~alTHwWwMDSjT-LkRTaphL6X4)|){;&TgS91Q4Y$M7TGztv@ibL-HZ4QM}Ju(hFj+wlYv_%{KPYOsLN5wJiC*S(A95wUT;4>O<-L zcVE}BO02EbSJjR~v*i0{jSt>uEolZZ>e?EyMrCbWZC#V(`)7^geb!292C1&~RM++n zEZ1gNXSIH}S)P2qtYz^&Ye_eVQPq21IsJ3 z3v2X=N|j@SJo&y^lY{qJOS(Y}*6IVxEzNysmVDo=NxaWm(hXv;)*#mCa!u>lAWy!3 z*7)Fk)=KIIX+060|L$`h&4HE1?COGo9`qq}Jnmz+q|S{+E58rz*?&sB1KPxN(hFkLv;zaJxmshRuC%7*$#)^` zko{*C@1REgXGy&v)igT)-D}#xf!6$9wKa`XM@j3mrg6Lj+Qf88tsrsM6KAb~R&8%{ zUTNRSsRwYz@h)dGC3S+tSx=n(0&})cFK7E0vp(w?akkH0tTr)IQX@#5^~BlBiL?6N zrdH07IzNhLI1W7);6wN7S<(k$j0JuXoHgcGw2lR`d7J2vQ%~Qy=;&u(q&4qd1l8)biv5Si`~ltd-OW(ipTS)-D2TbmPPa zK51L5=aAItIEzOHhaQ9Sp*x^W%#_p!QcdfLvsZ&Nz4wgFlkY;>p~s+d@D6G;22DCa zjBB;mfHk`Dlh&FRbk8d}bO*GFT_tsbRMUE@X|EN|w0=&CNulHeYFcCe0slH}S4piP zvDOo77lXCto{HWv0Vf~88seR@W+rwey&y*a`Af`NUF-ci@J2!MA*@ln&sx$8VzBl) zVNL5jub8!fdtPPnK5I!Yh{4+HiM55fS*@Qn&Xe!IuJOV9tR=l525XlHYie~+yiq9m zAl5qWhr2831uL;AHdocn)|Mjnn9{-bpE^7wM)U8 zX3bra4`8iRbDtb5sT(BCy(iY*#H=;6>Qf5~GT~9!gBED+h<7^B$+4sv#OOcYES%}p zr-+mweTw59)Xd~qNzEYDw4Q3(TbMPqn)|{6-4zaxqESI%P4m8cc5*D~1u<&cWx|=} znns#=H_{5$5fQ1r<~})AQZGm~jb4E6V}iGWwMD(xX_R_b(u!&t#XFtnYmAV%N$E8uKNvrfRt(|fAuDy^vRM7)Cf$wK@8U34%SvS6ziXyd;n{R_v>2H31YDJtHPSzwUP8j30fP;@g8gA zNhgTG+B=vvz2nc7!0{)=JD^RDC!HV$XIBVkdhesKu+j*-RztjlnwcCgsS_lfovvTH z&#AprSfk4D!2fjKHeCKYkKMS?Y)Dz_cMOVnpS7eF#HefU64n%J1uKF2C*pn9N@@kE zu2BW(Uf13&tR2)`*C=^<^k3HwcCeQ8f*5t}O0c%Ns-Oqm@}3to7S>BHk%!H2zFl zK@8U3E37G=zui~~o4-Z8&sx$7Vz71RV$iTqeFL!+GHhZ1u<&c2br@yiZxKak#9i%iFgM! zGg&FA6{K-NPc`jB%$nx4k#!^=!dmCr$Vy4QAhFgHYrih6DZW;#2d<4oykFN!Y6j_A zttZy5Vb-*MM&$2*`+R+3&2<67-Ez*%En@mvQdAJBgy-a(D7)skKigS8Jc zYc<8|a2rTIgf)uySeq!R7o`4^&VP5k;3LeM-nAWp-;uFE@eXK{6GZ9sAO>rn z5Z0D8vqs5>^r7|T4%SNQ1?hT?&VTp$j!z0}iZ%CUosth?twVF4NSZ;6y7rsI+M?#~ znUduDXN}|iJ~U|tF<84^SX)ushY~B4d=P8?_e@PrCe0uQYrh57=;r+o{E@+ypF2kC zT}dlgABlLUs7+2L%^(J6zb%~UoyR3og645K-a*YwPL|XRk`7Am_3q<>Pcdt1bSvo%{47dnJ z)@}rA_~@rn1#A4#BdvXC;OD0J;QhLm^nw_yeGaTOu%uNh zYn*&QT|>Ob+EhusAZhM&{=3hueO_2w*UTCvAH>>v2Wv?)h*8&WBG#Jod)L&mCdv2D z8pr!}t)ym<>KdK@?se^V!5ZHJLunr>$p^5u#r->`O6mqlpX!OVFMu`ru-XHkv@JDv zq|T3`PZ<Ky3}W=3Ulh*t>Qh8Ykmk~2U<&Ww0P@*--B*7F5uL=l6L5E0mnO_O-?1fAVy8QML1Kd7l4$I z`*%pZgPNJFCcPjAYhMx8)Q&;HO2`;g;(gYVUJ!$|uY$G3MpLU^kR{*uwVK5Htd-OY z(zRMo*J{7dtm(a0TMU}RCDQyk+-ga!An8&)arQOgO!2kaV&JtJ;{BSI^nw`u=N|}b zim%lc1FzK(@3U4?FG&4oPj&4N!5V#;tJb-WuMos%8aMr9V?ms#C zfH48$9n@&9BWVROSi6;2TTr}SEla+C*7)Fk){<5bgSD@NHN9E^Qs+m1Yl!&J9ndDL zNh^rK*&hpMdizfzEl4Zicn38zIi0kE7_9w?uvS+)e@m=T^7JUGYTJ1a`7vmYqhEIK zUS3__y_*Yq-M?0wPFg_>)@~El^v-nFtm)N2>5W3k2eH=dV6CKHkmhjd{CBTwf6lC_ox@!S)IbsM z6t&6el3GFPKYQZrcHvC%7&K4=CDJ(1xFApiCDuAL(CLzTLFzwy zs%zf>YpbhTHBh9^kD^gQ!Fq4Rd;Mq93S!i>zhutzUZ(|W?F$s|aaK|*c#zby!{qI1 z@ac^hoP86VshGXp^7AW5ogYQ@?5J!XYzEEa>1TWPwqx#grld~rAmJ=OyRkU?E9R`C zw%@E*1fn9&iuz58ck9_q(gK7=)j_gO2c5v2Z;&VToL+dG)G^Y!+hQq&5oT4Dd`6}8Ekqz}ZXX@3jO z)ZXWcQ}0^Qia6`I&(%!Q2V!vcE#XY@oNd^Bu0U$Xob61~2V$`HcVMkqqY>N#|C1|Q z-RCMxKHxeH2k&2}mDC54?%C6I+MUeW9?h&F`4HA9-e;|(Mvz$RiM4MtYl=T7wGj9@ zDUSD9E2$GC)_P*?JHndU?_r@n6kj4kkACOXwzya1u98|oVy!3E{$5yHR(!oyr{sfJ zTlV|VT}dy9F*dkMSW`TQ8+Kn()WwcD++9g8h{4)F5NnGI8!feUO_J}wu5r9~y|$~Q zUXc1wI{)4Ef`25|)-`{wU6SvgHIDaLOPWE9y7o_CP4DO0kvcz$Mg|3%0pcCdCU+&x zAO>f53uk&iQ$VByeXgD39n{R^uA~{nVC|oUHNE;2u@dxIV~+P(OPWCp*8T;oX}$-p zBp-0ChJ*K6E2$ZzbwqUjyN?V0m045!xq|h;&wnD`0c~1%CdMSo7BsO^ub*3sV2tQ~&vIU`_8maFIGc`km|WKbJQ( zR#Gc?kZ>0Jb9w&`&gvSJg8Y+X!WDkfUD1#_KZ-aj_*@>vJC|u@YOJJA@F3wVKfAF$ zmv=97ruK7r>-4$0uACLk-BP>*+SFJ{jUee!bpE@KJO6_@Q~X(}^}x?calC^X)wGg2 zL8@szvG$)}P48z|ka|!}^FPBfHI_7j7~{_W63!HlI|Dz%LZo(%JCjBbgSGp>n&$7s zkmRYZ6^#hCOX1_6-hGxi-tRw4Y6R(8jm~WMYqkFt*7UCRCRT#hdUL$bTG9z()V2Q+ z*7UCRCRT#hdUL$T+IZ3lVzBnV!kXT--o#4K{W>__XRV}8kowS``q2A{wZ_8onuZzN zEkAQC$d7J3leKRv1SHaE3=>e?W)wpZ=-8nK4t zLs+ADpS7eL#HedS%-T9B*J|q;k`G~x;(gYVZV-dDVPWl{X4WYAAl43cu$FX#7_5yj zYjygD3AJ?%$%n8;@qS%PxOm82`$p^58c%QYT8^mDkp~Bj{=adl<8(S9_-m03;v68pZp4XwnU0uy#1J)=)gZwt(bASfhBK zwWJ%wVC@KIZNFmOU;)X8utxDdYe_eV!P=2vZLy)4HBLT&HN^X@CEXwfYd^rOH5Kay zi%33%HH!CHOS(Y}){X*eOABg0+ma<8z#0zTV{Ibo1~FKBIJ1VOty=ZaB_toh8pZpp zCEXwfYulMM&FgZPkbDSh6z{W^bb}bI{UBIdo*&m+*EsnA))4QrmUM#{tUUs(tuz$t zp`3gGYl!z*OS(Y})*dOW&FZadD-B9Mh_%@c){<@zgSDfDHMRH0MNtmBUPHWJ*OG1! zgSAJ2wY9}Ly>*R~52$O1_gPE2K@8R&EvzkQW{r{$Vr`*=wWJ%wVC^x&n&LI!Yl~rP zz!C4)wWJ%wVC@)YZAo(^Qj}z9` z6<@C{QSw1`ZM}oFq#MLw?eW5z+WW83AbKg}{%aEN*R`Y@#9-}MVNLVcU@35HK=D3n zNjHeW+HuTUL-W`G$%piz6z{W^bb}bI?GV;9U#~R+uh%HvXD#UlF<5(ou%`I4Eo*_F zZ9%-xTG9<-uy#DN*3{gGBKeR$l;VBXl5P-#wI34JH20y+z&@1Xeb$n05QDW7gf+!$ zz}K2#Yrqlju{M=-gBYwm5v;ARtmvJ~<>UkUP{jMJCEXwfYbP>mtBU8>){%S&YZULZ zmUM#{tUU>=ZD?M<#>oe;hIpT~q#MLw?T3Xm#oGJEVwm=hc%QYT8^mDk$;_JOHANeN zYl;x>vzBy&7_6NntZA-mfoqC3I@c6UCEXwfYd<2aDV|^32wYQyc)zYC-5>^QKgz6W z{w|G;!0*yPyw6(F4PvnN6k$#A`n8Squ=Q(*_gPE2K@8S*GHaUG6m0~qDMGx*S~ckg zF<5)5u%`KXEpScIM(3KMYSIm2ur?;FDPB{w5xAxZ@qS%Px4`Geseb$n05QDV|W^G>a{c`I_K7=)j_gO2c8%$Mq$m85? z&l?yq%eT*;a>9TyM{r)l1Nj|0AHu#dhtu{OWZ%hr+STkZ=G>jjwb|zE3Dd(_JGS?b z-JAK?507lWDSJOde;m$s@b;Uu_dAmQxP9yWs(F6c#$audS=*!F4yO5;;M2`NcBA{J zJN@E;(>KV!w749dK6W)?YxKl7&OPxFLqU1>|iZv1~FKh7SqQ!rB4Nb&ZmzNB?#0fX~`=(hOp-wu@O?)I8sTAL25YA`Ns;WQM?fRz-pYsvfqsn?CDtPG_nZ!PL zhJt;n*k^?I*@j=82UgQIkUTy5u4@$UvzGLN7_2=DtTpEpf7YFo4`2=PK5HfQg6deu zXADjx^tFA);Gz7UH3skL7_9vivsP1F*P2M49{tue#QUrz%^(JA&t}$e8w{;|XfyC0 z9*Fl@OPWCp)}F(x)oY4bL-HYYjpBXQl4cNtwdV?Jn(JCU?A}C8iuYMdnn4WKo+qr) zDhaiHXkC_g^nJZX@g8ftN@@maY(V`=cg^6ZnYEVU&$>5}d`KTk@jh!wH;7T!&H!us z_Eq%OHBLT&HN^X@CEXwfYtI+f6xX$V`@-rP;(gYVZV-dD7Yw%6=jQjWX{~En@_pAe ziT7Dcx>9Z0ys^8YdsX8sdG{l5P-#wKKt5eUI8Xk1Y8B)^PAXYe_eV!P*PK zTBE5}qso#GU=0WFvsO|!Nb4l&{CA)8_*rIczk=Ddt?s!-q{#>M3f0gCl20atvZ%8gBYy6 zm|4S}KXvL;#9DUS(*E=*iT7Dcnn4WKULve19)m(R$D@DN{4r>CENKQYSo=9*ZLj8e zTuHuv);Qj;Ye_SR!P?niP4hgiBp<+9=R9t8ENKQYSbHg0(>#wW$p^63IgeW%E2$Zz zxivcf-RIVR9<0#>)dPQIu;ttuQs+m})mp*a8seP}v^tjbf*3XJWx|=>xiumsXl{+; z9n?&9tfXF$)=2hL)6M~Fn&;Lec{wl{EYjpKdR zl4cNtwR45FWwrCT#0n)JQr9TnV{JTX1~FKh71s35;}UB@^SB)Evz9c27_7|^YwMcl zaV7cw>l(-VtR>AL25a+RP4hgiBp<-q7W25{Ni&GSS`Dmep2wBs16bQ)9(TN?W{~D_ z>HK$}$6WwxdgpPGIzNhLJPPJ<5$|-M)$x*gL7H3ZiL*VzncjI^A|+@Zm*XAOOm#eI z1~K~2MX<)xQxAM~YODMEWy#a~s;H_J%;WOG`>Z9+AO>qo!kXT>HDV=bZjIx8){LDNi&GS+IhrUQ}f)KB;S7@%JCj+m82QOVC{Ucwy;rGt4~St z0j%NReb$m@5QDW9u%>x#O_C2_ZHu|JN=eNi&8^Y-?>@J-3fA<_ts!-O6pca)=GGAJ z6t!w4=>;)r+L~~tcW#YH37T8ucn398t(4RY(mZZYHEl0g(>%8($7DN&R)Xd`INoP1X$CP^+hEoj6}@B7CXx@SYZULZR#G!~kcl7MX#H`<@h)c* zNhgTWZ|)<`G_Uv0k|)-RNIUe{Q{o-eOm(89PLOI^Pc>~nSXWvuweZb`i>XNMjO;Lsh+sGcQ_AV%MLfH~89k8dIc$d7J2oh^O zvG$9?np%w=tb~mV5bv{AQYT2P^~BnR#9DKqHm_l}W2?{QWy$y7hw{ODtW74ZAjb9D zE10!K6*FsxU=7KKutxDdYbCV;udbbU`}`><()7y_oY(L`{^{C$W)L$2-yr)A|6OKk zb{KQ+&gI%{bM}Pk;jA6od&ut1e9Y+Jk?l8S?}zE0;cN$Qze#()Bk7OZx8AS%PKc-#2TtH1|CXQIq0N@<+%7)`&2jWgzM@0oeb!3q1&K8}quuA$ zUd61@$AuKA?T4sqNS+>jvqtegYb7-UZypzQ?F33kTV2cRF19i1+C{|L1+(i4NXyRz zgT+5cn?maRC?c(39vATrXw}J*dO@mbbpE^7v{w^n2Ni$TI7^<6wTQHW{*w>hLCsVr zOKJwGruD?yYrxv-s@9r@)cH|FT0u=iyaQTwvZP*+IO~bC*D_~n*AE?}^*>>p`Rj)! zOKJrV63$|;AG#QvsTd7xd5wnDyK+{reu(0oaz_1Tm`;%9IE=w7m2;bWzr>tX&R09` zJXlBa^eE~%i>}cS@3R)B6C~Dhy7+~mA41;im^H;~)eZ)(RpWS%wW*Ri!Gom#%zF)N zW6W{9o>@Cz?RcOrMXj)^6^#cd-T|#TRZ=5JoDrGb=Qu6_XL{E}B6WTg^`1qXb=(VP zD(M3;>e(BFGremfiL{_KksR-oG*g`_sSl)i+n#FLFM~D3-u-s*p!K&L@7J}GIzeKs zC)VC1tm$2UORNN~zvXzJwUSyvVy!3E-aOc9&MDT}v*i2kLnYp4t)yO%<~w>~?JZzU z?fnxtbvn-Ck-?$oJ2>6}tvZ#of*9k1%fJ~=x96*o^H*(X09Se#*|i_}N@TQPo$Js5 z*12xE&lL8->eqsOCb18mpVUD3w4$2UF^5|%sTHK_G&=j;$DeNlXM9<$wWfuQ3FP4YnwIo}7&Yxzh_%Iq{c1mx zmnGk&svUX`SK@uvl3oylwab~c0~M`nh=>&=AHo{N`>Z9sAO>r17uGb_wF8uV5Nq=t ztR=l525Y|x)*1_HKmVB}AHW(8-mhy(FNnd~JD9ceX7%==4J04J8pZppCA}a9YgaI9 zYnoX@@*%8Iyw6%my&%nb(E0B^=kZQv?V#eZK?BK$utxDdYe_SRQP5{rZ(%gGu?MkqwS93?|{1~90 zhq?<I6xX>WQ-tfiunXw~{;^Yf(ij8WZ5)9n?&9CTRsRuG4-UtZ7~w zDai-0w#C}WnWPoOVC@=aP3yhA>1`5pZ*PuwiduChX$3Jj`wiwy@w&)*BWztH$2+J| z|5;KiNMnMYuGK!wtmz#S1nQsl4*hc`=>#!q+DDi(EGyJHpVkOl6In;RU(=FK5QDXA z!CG@!?^==hvDT_@&@E+^)-_4K|2~xCeb$m*5Tg&hj#+DIW(~=Q zutxDdYe_GN!P+MVTl>})D{9A~S@M0eChThtm1)zOLhw!dhKx9|~3|`5@Nn z9d#{f1~KZ|Z!&9hnps2gA*@lnU)M@%2C1&m`R`uWu4mSkG_!`}Ls+ADpS7eL#Hee( z#jLGV6!)P>K7=)j_gPE2K@8S@TUguB%o-&h#M(v&Ye_eV!P=*owGGYVP$VD18pZo{ zE$Id^Si3=3(|o4Awp? ztSPQ*tAQF7;(gYVZV-dD&oOJ7HLBG>jSBHTYe_eV!P@7UHO(5;YM@4ic%QYT8^mDk zCT2~uMztEKQ6b)EE$Id^So>XJP4S$^>Ppz02jYF!l5P-#wJ$Jhnl-A`K#dCV9&6)C zH;BR77lk#=L7*PG+Np<*C*2?hYhM=DTAJ$`B_CARS{-#Q=>{=ayMZA1AO>q+1#4UyblzhjOFn?Lt?F7y z-C&}+LmuaDd)~mPIq&xQQ}9|Hfv(*Q57=jxo3{9|!Qrt?1?MZX-5+X;J*Y`;nT9X1R*^nO#1pufYg-$S<8kDB?hvOKqX z!OHCV?ELvVYbz^T+{Gi`v%R&?0lpt`Xp85!kALV;`&h@0JckBwWbVU0?h*Ra&;a&y iAK5;9%%k+Dt@c4g9*OOsc{u$%p(%&nIJio$*8c 1) end load west0067 -A = Problem.A ; +A = spconvert (west0067) ; + n = size (A, 1) ; b = rand (n, 1) ; fprintf ('Solving Ax=b via UMFPACK:\n') ; -[xu, info] = umfpack (A, '\', b, control) ; -x = xu ; +xu = umfpack2 (A, '\', b, control) ; fprintf ('Solving Ax=b via MATLAB:\n') ; xm = A\b ; -x = xm ; fprintf ('Difference between UMFPACK and MATLAB solution: %g\n', ... norm (xu - xm, Inf)) ; @@ -60,7 +64,7 @@ spy (A) title ('The matrix A') ; subplot (2,3,2) -[P1, Q1, Fr, Ch, Info] = umfpack (A, 'symbolic') ; +[P1, Q1, Fr, Ch, Info] = umfpack2 (A, 'symbolic') ; %#ok treeplot (Fr (1:end-1,2)') ; title ('Supernodal column elimination tree') ; @@ -70,8 +74,8 @@ title ('A, with initial row and column order') ; subplot (2,3,4) fprintf ('\n--------------------------------------------------------------\n') ; -fprintf ('\nFactorizing [L, U, P, Q, R] = umfpack (A)\n') ; -[L, U, P, Q, R] = umfpack (A) ; +fprintf ('\nFactorizing [L, U, P, Q, R] = umfpack2 (A)\n') ; +[L, U, P, Q, R] = umfpack2 (A) ; spy (P*A*Q) title ('A, with final row/column order') ; @@ -82,7 +86,6 @@ fprintf ('norm (P*(R\\A)*Q - L*U, 1) = %g (exact) %g (estimated)\n', ... fprintf ('\nSolution to Ax=b via UMFPACK factorization:\n') ; fprintf ('x = Q * (U \\ (L \\ (P * (R \\ b))))\n') ; xu = Q * (U \ (L \ (P * (R \ b)))) ; -x = xu ; fprintf ('\nUMFPACK flop count: %d\n', luflop (L, U)) ; @@ -125,12 +128,11 @@ fprintf ('\n--------------------------------------------------------------\n') ; fprintf ('Solve A''x=b:\n') ; fprintf ('Solving A''x=b via UMFPACK:\n') ; -[xu, info] = umfpack (b', '/', A, control) ; +xu = umfpack2 (b', '/', A, control) ; xu = xu' ; fprintf ('Solving A''x=b via MATLAB:\n') ; xm = (b'/A)' ; -x = xm ; fprintf ('Difference between UMFPACK and MATLAB solution: %g\n', ... norm (xu - xm, Inf)) ; @@ -148,7 +150,7 @@ fprintf ('same as the solution to Ax=b for the original A.\n'); C = A' ; % factorize C (P,Q) = L*U -[L, U, P, Q, R, info] = umfpack (C, control) ; +[L, U, P, Q, R, info] = umfpack2 (C, control) ; %#ok fprintf ('\nP * (R\\C) * Q - L*U should be zero:\n') ; fprintf ('norm (P*(R\\C)*Q - L*U, 1) = %g (exact) %g (estimated)\n', ... @@ -157,11 +159,9 @@ fprintf ('norm (P*(R\\C)*Q - L*U, 1) = %g (exact) %g (estimated)\n', ... fprintf ('\nSolution to Ax=b via UMFPACK, using the factors of C:\n') ; fprintf ('x = R \\ (P'' * (L'' \\ (U'' \\ (Q'' * b)))) ;\n') ; xu = R \ (P' * (L' \ (U' \ (Q' * b)))) ; -x = xu ; fprintf ('Solution to Ax=b via MATLAB:\n') ; xm = A\b ; -x = xm ; fprintf ('Difference between UMFPACK and MATLAB solution: %g\n', ... norm (xu - xm, Inf)) ; @@ -199,4 +199,4 @@ fprintf ('Difference between UMFPACK and MATLAB solution: %g\n', ... %------------------------------------------------------------------------------- fprintf ('\n--------------------------------------------------------------\n') ; -fprintf ('det(A): %g UMFPACK determinant: %g\n', det (A), umfpack (A, 'det')) ; +fprintf ('det(A): %g UMFPACK determinant: %g\n', det (A), umfpack2 (A, 'det')); diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_demo.m.out b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_demo.m.out index cab2e0f0d0..c0c60ba9cc 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_demo.m.out +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_demo.m.out @@ -1,7 +1,7 @@ ->> umfpack_demo +umfpack_demo Enter the printing level for UMFPACK's output statistics: -0: none, 1: errors only, 2: statistics, 4: print some of outputs +0: none, 1: errors only, 2: statistics, 4: print some outputs 5: print all output [default is 1]: -------------------------------------------------------------- @@ -12,15 +12,15 @@ Difference between UMFPACK and MATLAB solution: 0 -------------------------------------------------------------- -Factorizing [L, U, P, Q, R] = umfpack (A) +Factorizing [L, U, P, Q, R] = umfpack2 (A) P * (R\A) * Q - L*U should be zero: -norm (P*(R\A)*Q - L*U, 1) = 6.80012e-16 (exact) 6.80012e-16 (estimated) +norm (P*(R\A)*Q - L*U, 1) = 2.77556e-16 (exact) 1.21864e-16 (estimated) Solution to Ax=b via UMFPACK factorization: x = Q * (U \ (L \ (P * (R \ b)))) -UMFPACK flop count: 2354 +UMFPACK flop count: 2453 Factorizing [L, U, P] = lu (A (:, q)) If you are using a version of MATLAB prior to V6.0, then the @@ -31,15 +31,15 @@ q = colmmd (A) ; Solution to Ax=b via MATLAB factorization: x = U \ (L \ (P * b)) ; x (q) = x ; -Difference between UMFPACK and MATLAB solution: 7.10543e-15 +Difference between UMFPACK and MATLAB solution: 5.55112e-15 -MATLAB LU flop count: 3164 +MATLAB LU flop count: 3160 -------------------------------------------------------------- Solve A'x=b: Solving A'x=b via UMFPACK: Solving A'x=b via MATLAB: -Difference between UMFPACK and MATLAB solution: 2.66454e-15 +Difference between UMFPACK and MATLAB solution: 1.77636e-15 -------------------------------------------------------------- Compute C = A', and compute the LU factorization of C. @@ -48,29 +48,28 @@ Factorizing A' can sometimes be better than factorizing A itself same as the solution to Ax=b for the original A. P * (R\C) * Q - L*U should be zero: -norm (P*(R\C)*Q - L*U, 1) = 1.94289e-16 (exact) 5.55112e-17 (estimated) +norm (P*(R\C)*Q - L*U, 1) = 1.17961e-16 (exact) 5.60533e-17 (estimated) Solution to Ax=b via UMFPACK, using the factors of C: x = R \ (P' * (L' \ (U' \ (Q' * b)))) ; Solution to Ax=b via MATLAB: -Difference between UMFPACK and MATLAB solution: 7.10543e-15 +Difference between UMFPACK and MATLAB solution: 3.55271e-15 -------------------------------------------------------------- Solve AX=B, where B is n-by-10, and sparse -Difference between UMFPACK and MATLAB solution: 6.72949e-14 +Difference between UMFPACK and MATLAB solution: 6.3926e-14 -------------------------------------------------------------- Solve AX=B, where B is n-by-10, and sparse, using umfpack_btf -Difference between UMFPACK and MATLAB solution: 8.51541e-14 +Difference between UMFPACK and MATLAB solution: 4.41347e-14 -------------------------------------------------------------- Solve A'X=B, where B is n-by-10, and sparse -Difference between UMFPACK and MATLAB solution: 7.99291e-14 +Difference between UMFPACK and MATLAB solution: 8.90054e-14 -------------------------------------------------------------- det(A): -4.07453e-05 UMFPACK determinant: -4.07453e-05 ->> ->> diary off +diary off diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_details.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_details.m index 2039abed09..4306fe9862 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_details.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_details.m @@ -1,5 +1,5 @@ -function [out1, out2, out3, out4, out5] = umfpack (in1, in2, in3, in4, in5) -% UMFPACK v4.4: details on each usage. +function umfpack_details +%UMFPACK_DETAILS details on all the options for using umfpack2 in MATLAB % % Factor or solve a sparse linear system, returning either the solution x to % Ax=b or A'x'=b', the factorization LU=PAQ, or LU=P(R\A)Q. A must be sparse. @@ -13,72 +13,72 @@ function [out1, out2, out3, out4, out5] = umfpack (in1, in2, in3, in4, in5) % submatrix S is then analyzed, based on the symmetry of the nonzero pattern of % the submatrix and the values on the diagaonal. The strategies include: % -% (1) unsymmetric: use a COLAMD pre-ordering, a column elimination tree -% post-ordering, refine the column ordering during factorization, -% and make no effort at selecting pivots on the diagonal. -% (2) 2-by-2: like the symmetric strategy (see below), except that local -% row permutations are first made to attempt to place large entries -% on the diagonal. -% (3) symmetric: use an AMD pre-ordering on the matrix S+S', an -% elimination tree post-ordering, do not refine the column ordering -% during factorization, and attempt to select pivots on the diagonal. -% -% Each of the following uses of umfpack (except for "Control = umfpack") is -% stand-alone. That is, no call to umfpack is required for any subsequent +% (1) unsymmetric: use a COLAMD pre-ordering, a column elimination tree +% post-ordering, refine the column ordering during factorization, +% and make no effort at selecting pivots on the diagonal. +% (2) 2-by-2: like the symmetric strategy (see below), except that local +% row permutations are first made to attempt to place large entries +% on the diagonal. +% (3) symmetric: use an AMD pre-ordering on the matrix S+S', an +% elimination tree post-ordering, do not refine the column ordering +% during factorization, and attempt to select pivots on the diagonal. +% +% Each of the following uses of umfpack2 (except for "Control = umfpack2") is +% stand-alone. That is, no call to umfpack2 is required for any subsequent % call. In each usage, the Info output argument is optional. % -% Usage: +% Example: % -% [x, Info] = umfpack (A, '\', b) ; -% [x, Info] = umfpack (A, '\', b, Control) ; -% [x, Info] = umfpack (A, Qinit, '\', b, Control) ; -% [x, Info] = umfpack (A, Qinit, '\', b) ; +% [x, Info] = umfpack2 (A, '\', b) ; +% [x, Info] = umfpack2 (A, '\', b, Control) ; +% [x, Info] = umfpack2 (A, Qinit, '\', b, Control) ; +% [x, Info] = umfpack2 (A, Qinit, '\', b) ; % % Solves Ax=b (similar to x = A\b in MATLAB). % -% [x, Info] = umfpack (b, '/', A) ; -% [x, Info] = umfpack (b, '/', A, Control) ; -% [x, Info] = umfpack (b, '/', A, Qinit) ; -% [x, Info] = umfpack (b, '/', A, Qinit, Control) ; +% [x, Info] = umfpack2 (b, '/', A) ; +% [x, Info] = umfpack2 (b, '/', A, Control) ; +% [x, Info] = umfpack2 (b, '/', A, Qinit) ; +% [x, Info] = umfpack2 (b, '/', A, Qinit, Control) ; % % Solves A'x'=b' (similar to x = b/A in MATLAB). % -% [L, U, P, Q, R, Info] = umfpack (A) ; -% [L, U, P, Q, R, Info] = umfpack (A, Control) ; -% [L, U, P, Q, R, Info] = umfpack (A, Qinit) ; -% [L, U, P, Q, R, Info] = umfpack (A, Qinit, Control) ; +% [L, U, P, Q, R, Info] = umfpack2 (A) ; +% [L, U, P, Q, R, Info] = umfpack2 (A, Control) ; +% [L, U, P, Q, R, Info] = umfpack2 (A, Qinit) ; +% [L, U, P, Q, R, Info] = umfpack2 (A, Qinit, Control) ; % % Returns the LU factorization of A. P and Q are returned as permutation % matrices. R is a diagonal sparse matrix of scale factors for the rows -% of A, L is lower triangular, and U is upper triangular. The -% factorization is L*U = P*(R\A)*Q. You can turn off scaling by setting -% Control (17) to zero (in which case R = speye (m)), or by using the -% following syntaxes (in which case Control (17) is ignored): +% of A, L is lower triangular, and U is upper triangular. The +% factorization is L*U = P*(R\A)*Q. You can turn off scaling by setting +% Control (17) to zero (in which case R = speye (m)), or by using the +% following syntaxes (in which case Control (17) is ignored): % -% [L, U, P, Q] = umfpack (A) ; -% [L, U, P, Q] = umfpack (A, Control) ; -% [L, U, P, Q] = umfpack (A, Qinit) ; -% [L, U, P, Q] = umfpack (A, Qinit, Control) ; +% [L, U, P, Q] = umfpack2 (A) ; +% [L, U, P, Q] = umfpack2 (A, Control) ; +% [L, U, P, Q] = umfpack2 (A, Qinit) ; +% [L, U, P, Q] = umfpack2 (A, Qinit, Control) ; % % Same as above, except that no row scaling is performed. The Info array -% is not returned, either. +% is not returned, either. % -% [P1, Q1, Fr, Ch, Info] = umfpack (A, 'symbolic') ; -% [P1, Q1, Fr, Ch, Info] = umfpack (A, 'symbolic', Control) ; -% [P1, Q1, Fr, Ch, Info] = umfpack (A, Qinit, 'symbolic') ; -% [P1, Q1, Fr, Ch, Info] = umfpack (A, Qinit, 'symbolic', Control); +% [P1, Q1, Fr, Ch, Info] = umfpack2 (A, 'symbolic') ; +% [P1, Q1, Fr, Ch, Info] = umfpack2 (A, 'symbolic', Control) ; +% [P1, Q1, Fr, Ch, Info] = umfpack2 (A, Qinit, 'symbolic') ; +% [P1, Q1, Fr, Ch, Info] = umfpack2 (A, Qinit, 'symbolic', Control); % % Performs only the fill-reducing column pre-ordering (including the % elimination tree post-ordering) and symbolic factorization. Q1 is the -% initial column permutation (either from colamd, amd, or the input -% ordering Qinit), possibly followed by a column elimination tree post- -% ordering or a symmetric elimination tree post-ordering, depending on -% the strategy used. +% initial column permutation (either from colamd, amd, or the input +% ordering Qinit), possibly followed by a column elimination tree post- +% ordering or a symmetric elimination tree post-ordering, depending on +% the strategy used. % -% For the unsymmetric strategy, P1 is the row ordering induced by Q1 -% (row-merge order). For the 2-by-2 strategy, P1 is the row ordering that -% places large entries on the diagonal of P1*A*Q1. For the symmetric -% strategy, P1 = Q1. +% For the unsymmetric strategy, P1 is the row ordering induced by Q1 +% (row-merge order). For the 2-by-2 strategy, P1 is the row ordering that +% places large entries on the diagonal of P1*A*Q1. For the symmetric +% strategy, P1 = Q1. % % Fr is a (nfr+1)-by-4 array containing information about each frontal % matrix, where nfr <= n is the number of frontal matrices. Fr (:,1) is @@ -88,14 +88,14 @@ function [out1, out2, out3, out4, out5] = umfpack (in1, in2, in3, in4, in5) % columns for the first front, the next Fr (2,1) columns of P1*A*Q1 % are the pivot columns for the second front, and so on. % -% For the unsymmetric strategy, Fr (:,3) is the row index of the first -% row in P1*A*Q1 whose leftmost nonzero entry is in a pivot column for -% the kth front. Fr (:,4) is the leftmost descendent of the kth front. -% Rows in the range Fr (Fr (k,4),3) to Fr (k+1,3)-1 form the entire set -% of candidate pivot rows for the kth front (some of these will typically -% have been selected as pivot rows of fronts Fr (k,3) to k-1, before the -% factorization reaches the kth front. If front k is a leaf node, then -% Fr (k,4) is k. +% For the unsymmetric strategy, Fr (:,3) is the row index of the first +% row in P1*A*Q1 whose leftmost nonzero entry is in a pivot column for +% the kth front. Fr (:,4) is the leftmost descendent of the kth front. +% Rows in the range Fr (Fr (k,4),3) to Fr (k+1,3)-1 form the entire set +% of candidate pivot rows for the kth front (some of these will typically +% have been selected as pivot rows of fronts Fr (k,3) to k-1, before the +% factorization reaches the kth front. If front k is a leaf node, then +% Fr (k,4) is k. % % Ch is a (nchains+1)-by-3 array containing information about each "chain" % (unifrontal sequence) of frontal matrices, and where nchains <= nfr @@ -103,26 +103,26 @@ function [out1, out2, out3, out4, out5] = umfpack (in1, in2, in3, in4, in5) % Chain (i,1) to Chain (i+1,1)-1, and the largest front in chain i is % Chain (i,2)-by-Chain (i,3). % -% This use of umfpack is not required to factor or solve a linear system +% This use of umfpack2 is not required to factor or solve a linear system % in MATLAB. It analyzes the matrix A and provides information only. % The MATLAB statement "treeplot (Fr (:,2)')" plots the column elimination % tree. % -% Control = umfpack ; +% Control = umfpack2 ; % -% Returns a 20-by-1 vector of default parameter settings for umfpack. +% Returns a 20-by-1 vector of default parameter settings for umfpack2. % % umfpack_report (Control, Info) ; % % Prints the current Control settings, and Info % -% det = umfpack (A, 'det') ; -% [det dexp] = umfpack (A, 'det') ; +% det = umfpack2 (A, 'det') ; +% [det dexp] = umfpack2 (A, 'det') ; % -% Computes the determinant of A. The 2nd form returns the determinant -% in the form det*10^dexp, where det is in the range +/- 1 to 10, -% which helps to avoid overflow/underflow when dexp is out of range of -% normal floating-point numbers. +% Computes the determinant of A. The 2nd form returns the determinant +% in the form det*10^dexp, where det is in the range +/- 1 to 10, +% which helps to avoid overflow/underflow when dexp is out of range of +% normal floating-point numbers. % % If present, Qinit is a user-supplied 1-by-n permutation vector. It is an % initial fill-reducing column pre-ordering for A; if not present, then colamd @@ -131,31 +131,43 @@ function [out1, out2, out3, out4, out5] = umfpack (in1, in2, in3, in4, in5) % are used. If a Control entry is NaN, then the default is used for that entry. % % -% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. -% All Rights Reserved. Type umfpack_details for License. +% Copyright 1995-2007 by Timothy A. Davis, University of Florida. +% All Rights Reserved. +% UMFPACK is available under alternate licenses, contact T. Davis for details. % % UMFPACK License: % -% Your use or distribution of UMFPACK or any modified version of -% UMFPACK implies that you agree to this License. -% -% THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY -% EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. -% -% Permission is hereby granted to use or copy this program, provided -% that the Copyright, this License, and the Availability of the original -% version is retained on all copies. User documentation of any code that -% uses UMFPACK or any modified version of UMFPACK code must cite the -% Copyright, this License, the Availability note, and "Used by permission." -% Permission to modify the code and to distribute modified code is granted, -% provided the Copyright, this License, and the Availability note are -% retained, and a notice that the code was modified is included. This -% software was developed with support from the National Science Foundation, -% and is provided to you free of charge. +% Your use or distribution of UMFPACK or any modified version of +% UMFPACK implies that you agree to this License. +% +% This library is free software; you can redistribute it and/or +% modify it under the terms of the GNU Lesser General Public +% License as published by the Free Software Foundation; either +% version 2.1 of the License, or (at your option) any later version. +% +% This library is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +% Lesser General Public License for more details. +% +% You should have received a copy of the GNU Lesser General Public +% License along with this library; if not, write to the Free Software +% Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 +% USA +% +% Permission is hereby granted to use or copy this program under the +% terms of the GNU LGPL, provided that the Copyright, this License, +% and the Availability of the original version is retained on all copies. +% User documentation of any code that uses this code or any modified +% version of this code must cite the Copyright, this License, the +% Availability note, and "Used by permission." Permission to modify +% the code and to distribute modified code is granted, provided the +% Copyright, this License, and the Availability note are retained, +% and a notice that the code was modified is included. % % Availability: http://www.cise.ufl.edu/research/sparse/umfpack % -% See also umfpack, umfpack_make, umfpack_report, +% See also umfpack, umfpack2, umfpack_make, umfpack_report, % umfpack_demo, and umfpack_simple. more on diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_install.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_install.m new file mode 100644 index 0000000000..921f2c56da --- /dev/null +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_install.m @@ -0,0 +1,37 @@ +function umfpack_install +%UMFPACK_INSTALL to compile and install umfpack2 and amd2 for use in MATLAB +% Your current directory must be UMFPACK/MATLAB for this function to work. +% +% Example: +% umfpack_install +% +% See also umfpack2, amd2. + +% Copyright 1995-2007 by Timothy A. Davis. + +% compile and install UMFPACK +umfpack_path = pwd ; +addpath (umfpack_path) ; +try + umfpack_make +catch + fprintf ('Trying to install with lcc_lib/libmwlapack.lib instead\n') ; + umfpack_make ('lcc_lib/libmwlapack.lib') ; +end + +% compile and install AMD +cd ../../AMD/MATLAB +amd_path = pwd ; +addpath (amd_path) ; +amd_make ; + +cd (umfpack_path) + +fprintf ('Now trying the umfpack_simple demo.\n'); +umfpack_simple + +fprintf ('Added the following directories to the path. You may wish to add\n'); +fprintf ('these permanently with the MATLAB pathtool command:\n') ; +fprintf ('%s\n', umfpack_path) ; +fprintf ('%s\n', amd_path) ; + diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_make.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_make.m index efc34d5858..3576175651 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_make.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_make.m @@ -1,115 +1,54 @@ -function umfpack_make -% UMFPACK_MAKE +function umfpack_make (lapack) +%UMFPACK_MAKE to compile umfpack2 for use in MATLAB % -% Compiles the UMFPACK mexFunction and then runs a simple demo. +% Compiles the umfpack2 mexFunction and then runs a simple demo. % -% See also: umfpack, umfpack_details, umfpack_report, umfpack_demo, and -% umfpack_simple. +% Example: +% umfpack_make % use default LAPACK and BLAS +% umfpack_make ('lcc_lib/libmwlapack.lib') % try this if umfpack_make fails % -% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. -% All Rights Reserved. Type umfpack_details for License. +% See also: umfpack, umfpack2, umfpack_details, umfpack_report, umfpack_demo, +% and umfpack_simple. -help umfpack_make +% Copyright 1995-2007 by Timothy A. Davis. -fprintf ('\n--------------------------------------------------------------\n') ; -fprintf ('Now compiling the UMFPACK and AMD mexFunctions.\n') ; -fprintf ('--------------------------------------------------------------\n') ; +details = 0 ; -try - % ispc does not appear in MATLAB 5.3 - pc = ispc ; -catch - % if ispc fails, assume we aren't on a Windows PC. - pc = 0 ; +d = '' ; +if (~isempty (strfind (computer, '64'))) + d = ' -largeArrayDims' ; end -obj = 'o' ; -blas_lib = '' ; +[v,pc] = getversion ; +fprintf ('Compiling UMFPACK for MATLAB Version %g\n', v) ; + if (pc) obj = 'obj' ; +else + obj = 'o' ; end +kk = 0 ; + %------------------------------------------------------------------------------- % BLAS option %------------------------------------------------------------------------------- -msg = [ ... - '\nUsing the BLAS is faster, but might not compile correctly.\n', ... - 'If you get an error stating that dgemm, dgemv, dger, zgemm,\n', ... - 'zgemv, and/or zger are not defined, then recompile without the\n', ... - 'BLAS. You can ignore warnings that these routines are implicitly\n', ... - 'declared.\n\nPlease select one of the following options: \n', ... - ' 1: attempt to compile with the BLAS (default)\n', ... - ' 2: do not use the BLAS\n'] ; -fprintf (msg) ; -blas = input (': ') ; -if (isempty (blas)) - blas = 1 ; -end -if (blas == 1) - % try to link to MATLAB's built-in BLAS - blas = '' ; +if (nargin < 1) if (pc) - % the default lcc compiler needs this library to access the BLAS - blas_lib = ' libmwlapack.lib' ; - msg = [ ... - '\nCheck to see if you have a file called libmwlapack.lib in the\n', ... - '\\extern\\lib\\win32\\lcc\\ directory, where is ', ... - 'the\ndirectory where MATLAB is installed. If a file of that ', ... - 'name is already\nthere, then you don''t have to do anything. ', ... - 'Otherwise, you must first\ncopy the libmwlapack.lib file from ', ... - 'the umfpack\\lcc_lib\\ directory to the\n', ... - '\\extern\\lib\\win32\\lcc\\ directory. Next, type\n\n', ... - ' mex -setup\n\n', ... - 'at the MATLAB prompt, and ask MATLAB to select the lcc compiler. ',... - 'You can skip\nall of this if you have already done it, or have ', ... - 'configured mex to use\na different compiler. If you are using ', ... - 'Norton anti-virus software on Windows\n98SE, then you need to ', ... - 'exit MATLAB, turn off virus checking, and restart MATLAB\n', ... - 'before you can use the mex command or compile UMFPACK.\n', ... - 'You may also need to turn off virus checking in other cases.\n', ... - '\nHit enter to continue, or type control-C if you do not wish to '] ; - fprintf (msg) ; - input ('proceed: ') ; - end - fprintf ('\nUsing the BLAS (recommended).\n') ; -else - % No BLAS - fprintf ('\nNot using the BLAS. UMFPACK will be slow.\n') ; - blas = ' -DNBLAS' ; -end - -%------------------------------------------------------------------------------- -% -DNUTIL option (using utMalloc or mxMalloc) -%------------------------------------------------------------------------------- - -utils = '' ; - -if (~pc) - msg = [ ... - '--------------------------------------------------------------\n', ... - '\nUMFPACK uses MATLAB''s memory allocation routines. The internal', ... - '\nutMalloc, utFree, and utRealloc allow for better use of memory,', ... - '\nbut they are internal utility routines that are not documented.\n', ... - 'Thus, they might not always work. Using mxMalloc, mxFree, and\n', ... - 'mxRealloc works, but UMFPACK might run out of memory when solving\n', ... - 'problems that it could otherwise solve. Try using the default.\n', ... - 'If you get an error stating that utMalloc, utFree, and/or\n', ... - 'utRealloc are not defined, then recompile with the mx* routines.\n', ... - '\nPlease select one of the following options:\n', ... - ' 1: attempt to use the ut* routines (default)\n', ... - ' 2: use the standard mx* routines\n'] ; - fprintf (msg) ; - utils = input (': ') ; - if (isempty (utils)) - utils = 1 ; - end - if (utils == 2) - fprintf ('\nNot using utMalloc, utFree, or utRealloc\n') ; - utils = ' -DNUTIL' ; + if (v < 6.5) + % MATLAB 6.1 and earlier: use the version supplied here + lapack = 'lcc_lib/libmwlapack.lib' ; + fprintf ('Using %s. If this fails with dgemm and others\n',lapack); + fprintf ('undefined, then edit umfpack_make.m and modify the') ; + fprintf (' statement:\nlapack = ''%s'' ;\n', lapack) ; + else + lapack = 'libmwlapack.lib' ; + end else - fprintf ('\nUsing utMalloc, utFree, and utRealloc\n') ; - utils = '' ; + % For other systems, mex should find lapack on its own, but this has + % been broken in MATLAB R2007a; the following is now required. + lapack = '-lmwlapack' ; end end @@ -119,49 +58,41 @@ end posix = '' ; -if (~pc) - msg = [ ... - '--------------------------------------------------------------\n', ... - '\nUMFPACK can use the POSIX routines sysconf () and times ()\n', ... - 'to provide CPU time and wallclock time statistics. If you do not\n', ... - 'have a POSIX-compliant operating system, then UMFPACK won''t\n', ... - 'compile. If you don''t know which option to pick, try the\n', ... - 'default. If you get an error saying that sysconf and/or times\n', ... - 'are not defined, then recompile with the non-POSIX option.\n', ... - '\nPlease select one of the following options:\n', ... - ' 1: use POSIX sysconf and times routines (default)\n', ... - ' 2: do not use POSIX routines\n'] ; - fprintf (msg) ; - posix = input (': ') ; - if (isempty (posix)) - posix = 1 ; - end - if (posix == 2) - fprintf ('\nNot using POSIX sysconf and times routines.\n') ; - posix = ' -DNPOSIX' ; - else - fprintf ('\nUsing POSIX sysconf and times routines.\n') ; - posix = '' ; - end -end +% if (~pc) +% msg = [ ... +% '--------------------------------------------------------------\n', ... +% '\nUMFPACK can use the POSIX routines sysconf () and times ()\n', ... +% 'to provide CPU time and wallclock time statistics. If you do not\n', ... +% 'have a POSIX-compliant operating system, then UMFPACK won''t\n', ... +% 'compile. If you don''t know which option to pick, try the\n', ... +% 'default. If you get an error saying that sysconf and/or times\n', ... +% 'are not defined, then recompile with the non-POSIX option.\n', ... +% '\nPlease select one of the following options:\n', ... +% ' 1: use POSIX sysconf and times routines (default)\n', ... +% ' 2: do not use POSIX routines\n'] ; +% fprintf (msg) ; +% posix = str2num (input (': ', 's')) ; +% if (isempty (posix)) +% posix = 1 ; +% end +% if (posix == 2) +% fprintf ('\nNot using POSIX sysconf and times routines.\n') ; +% posix = ' -DNPOSIX' ; +% else +% fprintf ('\nUsing POSIX sysconf and times routines.\n') ; +% posix = '' ; +% end +% end %------------------------------------------------------------------------------- % mex command %------------------------------------------------------------------------------- -umfdir = sprintf ('..%sSource%s', filesep, filesep) ; -amddir = sprintf ('..%s..%sAMD%sSource%s', filesep, filesep, filesep, filesep) ; -incdir = sprintf ( ... -' -I..%sInclude -I..%sSource -I..%s..%sAMD%sInclude -I..%s..%sAMD%sSource', ... -filesep,filesep, filesep, filesep, filesep, filesep, filesep, filesep) ; - -mx = sprintf ('mex -inline -O%s%s%s%s', blas, utils, posix, incdir) ; -msg = [ ... - '--------------------------------------------------------------\n', ... - '\nCompile options:\n%s\nNow compiling. Please wait.\n'] ; -fprintf (msg, mx) ; - -% The following is adapted from GNUmakefile +umfdir = '../Source/' ; +amddir = '../../AMD/Source/' ; +incdir = ' -I../Include -I../Source -I../../AMD/Include -I../../UFconfig' ; +mx = sprintf ('mex -O%s%s%s ', posix, incdir, d) ; +% fprintf ('compile options:\n%s\n', mx) ; %------------------------------------------------------------------------------- % source files @@ -189,8 +120,8 @@ umfint = { 'analyze', 'apply_order', 'colamd', 'free', 'fsize', ... 'singletons' } ; % non-user-callable and user-callable amd_*.[ch] files (int versions only): -amd = { 'aat', '1', '2', 'dump', 'postorder', 'post_tree', 'defaults', ... - 'order', 'control', 'info', 'valid', 'preprocess' } ; +amdsrc = { 'aat', '1', '2', 'dump', 'postorder', 'post_tree', 'defaults', ... + 'order', 'control', 'info', 'valid', 'preprocess', 'global' } ; % user-callable umfpack_*.[ch] files (real/complex): user = { 'col_to_triplet', 'defaults', 'free_numeric', ... @@ -204,20 +135,21 @@ user = { 'col_to_triplet', 'defaults', 'free_numeric', ... 'load_numeric', 'save_numeric', 'load_symbolic', 'save_symbolic' } ; % user-callable umfpack_*.[ch], only one version -generic = { 'timer', 'tictoc' } ; +generic = { 'timer', 'tictoc', 'global' } ; M = cell (0) ; %------------------------------------------------------------------------------- -% Create the umfpack and amd mexFunctions for MATLAB (int versions only) +% Create the umfpack2 and amd2 mexFunctions for MATLAB (int versions only) %------------------------------------------------------------------------------- for k = 1:length(umfint) - M = make (M, '%s -DDINT -c %sumf_%s.c', 'umf_%s.%s', 'umf_%s_%s.%s', ... - mx, umfint {k}, umfint {k}, 'm', obj, umfdir) ; + [M, kk] = make (M, '%s -DDLONG -c %sumf_%s.c', 'umf_%s.%s', ... + 'umf_%s_%s.%s', mx, umfint {k}, umfint {k}, 'm', obj, umfdir, ... + kk, details) ; end -rules = { [mx ' -DDINT'] , [mx ' -DZINT'] } ; +rules = { [mx ' -DDLONG'] , [mx ' -DZLONG'] } ; kinds = { 'md', 'mz' } ; for what = 1:2 @@ -225,69 +157,80 @@ for what = 1:2 rule = rules {what} ; kind = kinds {what} ; - M = make (M, '%s -DCONJUGATE_SOLVE -c %sumf_%s.c', 'umf_%s.%s', ... - 'umf_%s_%s.%s', rule, 'ltsolve', 'lhsolve', kind, obj, umfdir) ; + [M, kk] = make (M, '%s -DCONJUGATE_SOLVE -c %sumf_%s.c', 'umf_%s.%s', ... + 'umf_%s_%s.%s', rule, 'ltsolve', 'lhsolve', kind, obj, umfdir, ... + kk, details) ; - M = make (M, '%s -DCONJUGATE_SOLVE -c %sumf_%s.c', 'umf_%s.%s', ... - 'umf_%s_%s.%s', rule, 'utsolve', 'uhsolve', kind, obj, umfdir) ; + [M, kk] = make (M, '%s -DCONJUGATE_SOLVE -c %sumf_%s.c', 'umf_%s.%s', ... + 'umf_%s_%s.%s', rule, 'utsolve', 'uhsolve', kind, obj, umfdir, ... + kk, details) ; - M = make (M, '%s -DDO_MAP -c %sumf_%s.c', 'umf_%s.%s', ... - 'umf_%s_%s_map_nox.%s', rule, 'triplet', 'triplet', kind, obj, umfdir) ; + [M, kk] = make (M, '%s -DDO_MAP -c %sumf_%s.c', 'umf_%s.%s', ... + 'umf_%s_%s_map_nox.%s', rule, 'triplet', 'triplet', kind, obj, ... + umfdir, kk, details) ; - M = make (M, '%s -DDO_VALUES -c %sumf_%s.c', 'umf_%s.%s', ... - 'umf_%s_%s_nomap_x.%s', rule, 'triplet', 'triplet', kind, obj, umfdir) ; + [M, kk] = make (M, '%s -DDO_VALUES -c %sumf_%s.c', 'umf_%s.%s', ... + 'umf_%s_%s_nomap_x.%s', rule, 'triplet', 'triplet', kind, obj, ... + umfdir, kk, details) ; - M = make (M, '%s -c %sumf_%s.c', 'umf_%s.%s', ... + [M, kk] = make (M, '%s -c %sumf_%s.c', 'umf_%s.%s', ... 'umf_%s_%s_nomap_nox.%s', rule, 'triplet', 'triplet', kind, obj, ... - umfdir) ; + umfdir, kk, details) ; - M = make (M, '%s -DDO_MAP -DDO_VALUES -c %sumf_%s.c', 'umf_%s.%s', ... - 'umf_%s_%s_map_x.%s', rule, 'triplet', 'triplet', kind, obj, umfdir) ; + [M, kk] = make (M, '%s -DDO_MAP -DDO_VALUES -c %sumf_%s.c', 'umf_%s.%s', ... + 'umf_%s_%s_map_x.%s', rule, 'triplet', 'triplet', kind, obj, ... + umfdir, kk, details) ; - M = make (M, '%s -DFIXQ -c %sumf_%s.c', 'umf_%s.%s', ... - 'umf_%s_%s_fixq.%s', rule, 'assemble', 'assemble', kind, obj, umfdir) ; + [M, kk] = make (M, '%s -DFIXQ -c %sumf_%s.c', 'umf_%s.%s', ... + 'umf_%s_%s_fixq.%s', rule, 'assemble', 'assemble', kind, obj, ... + umfdir, kk, details) ; - M = make (M, '%s -DDROP -c %sumf_%s.c', 'umf_%s.%s', ... - 'umf_%s_%s_drop.%s', rule, 'store_lu', 'store_lu', kind, obj, umfdir) ; + [M, kk] = make (M, '%s -DDROP -c %sumf_%s.c', 'umf_%s.%s', ... + 'umf_%s_%s_drop.%s', rule, 'store_lu', 'store_lu', kind, obj, ... + umfdir, kk, details) ; for k = 1:length(umfch) - M = make (M, '%s -c %sumf_%s.c', 'umf_%s.%s', 'umf_%s_%s.%s', ... - rule, umfch {k}, umfch {k}, kind, obj, umfdir) ; + [M, kk] = make (M, '%s -c %sumf_%s.c', 'umf_%s.%s', 'umf_%s_%s.%s', ... + rule, umfch {k}, umfch {k}, kind, obj, umfdir, kk, details) ; end - M = make (M, '%s -DWSOLVE -c %sumfpack_%s.c', 'umfpack_%s.%s', ... - 'umfpack_%s_w%s.%s', rule, 'solve', 'solve', kind, obj, umfdir) ; + [M, kk] = make (M, '%s -DWSOLVE -c %sumfpack_%s.c', 'umfpack_%s.%s', ... + 'umfpack_%s_w%s.%s', rule, 'solve', 'solve', kind, obj, umfdir, ... + kk, details) ; for k = 1:length(user) - M = make (M, '%s -c %sumfpack_%s.c', 'umfpack_%s.%s', ... - 'umfpack_%s_%s.%s', rule, user {k}, user {k}, kind, obj, umfdir) ; + [M, kk] = make (M, '%s -c %sumfpack_%s.c', 'umfpack_%s.%s', ... + 'umfpack_%s_%s.%s', rule, user {k}, user {k}, kind, obj, ... + umfdir, kk, details) ; end end for k = 1:length(generic) - M = make (M, '%s -c %sumfpack_%s.c', 'umfpack_%s.%s', ... - 'umfpack_%s_%s.%s', mx, generic {k}, generic {k}, 'm', obj, umfdir) ; + [M, kk] = make (M, '%s -c %sumfpack_%s.c', 'umfpack_%s.%s', ... + 'umfpack_%s_%s.%s', mx, generic {k}, generic {k}, 'm', obj, ... + umfdir, kk, details) ; end %---------------------------------------- % AMD routines (int only) %---------------------------------------- -for k = 1:length(amd) - M = make (M, '%s -DDINT -c %samd_%s.c', 'amd_%s.%s', 'amd_%s_%s.%s', ... - mx, amd {k}, amd {k}, 'm', obj, amddir) ; +for k = 1:length(amdsrc) + [M, kk] = make (M, '%s -DDLONG -c %samd_%s.c', 'amd_%s.%s', ... + 'amd_%s_%s.%s', mx, amdsrc {k}, amdsrc {k}, 'm', obj, amddir, ... + kk, details) ; end %---------------------------------------- -% compile the umfpack mexFunction +% compile the umfpack2 mexFunction %---------------------------------------- -C = sprintf ('%s -output umfpack umfpackmex.c', mx) ; +C = sprintf ('%s -output umfpack2 umfpackmex.c', mx) ; for i = 1:length (M) - C = [C ' ' (M {i})] ; + C = [C ' ' (M {i})] ; %#ok end -C = [C ' ' blas_lib] ; -cmd (C) ; +C = [C ' ' lapack] ; +kk = cmd (C, kk, details) ; %---------------------------------------- % delete the object files @@ -301,56 +244,83 @@ end % compile the luflop mexFunction %---------------------------------------- -cmd (sprintf ('%s -output luflop luflopmex.c', mx)) ; +cmd (sprintf ('%s -output luflop luflopmex.c', mx), kk, details) ; + +fprintf ('\nUMFPACK successfully compiled\n') ; + +%=============================================================================== +% end of umfpack_make +%=============================================================================== -fprintf ('\n\nCompilation has completed. Now trying the umfpack_simple demo.\n'); -umfpack_simple -%------------------------------------------------------------------------------- -% rmfile: delete a file, but only if it exists %------------------------------------------------------------------------------- function rmfile (file) -if (length (dir (file)) > 0) +% rmfile: delete a file, but only if it exists +if (length (dir (file)) > 0) %#ok delete (file) ; end -%------------------------------------------------------------------------------- -% cpfile: copy the src file to the filename dst, overwriting dst if it exists %------------------------------------------------------------------------------- function cpfile (src, dst) +% cpfile: copy the src file to the filename dst, overwriting dst if it exists rmfile (dst) -if (length (dir (src)) == 0) - help umfpack_make - error (sprintf ('File does not exist: %s\n', src)) ; +if (length (dir (src)) == 0) %#ok + fprintf ('File does not exist: %s\n', src) ; + error ('File does not exist') ; end copyfile (src, dst) ; -%------------------------------------------------------------------------------- -% mvfile: move the src file to the filename dst, overwriting dst if it exists %------------------------------------------------------------------------------- function mvfile (src, dst) +% mvfile: move the src file to the filename dst, overwriting dst if it exists cpfile (src, dst) ; rmfile (src) ; -%------------------------------------------------------------------------------- -% cmd: display and execute a command %------------------------------------------------------------------------------- -function cmd (s) -fprintf ('.') ; +function kk = cmd (s, kk, details) +%CMD: evaluate a command, and either print it or print a "." +if (details) + fprintf ('%s\n', s) ; +else + if (mod (kk, 60) == 0) + fprintf ('\n') ; + end + kk = kk + 1 ; + fprintf ('.') ; +end eval (s) ; -%------------------------------------------------------------------------------- -% make: execute a "make" command for a source file %------------------------------------------------------------------------------- -function M = make (M, s, src, dst, rule, file1, file2, kind, obj, srcdir) -cmd (sprintf (s, rule, srcdir, file1)) ; +function [M, kk] = make (M, s, src, dst, rule, file1, file2, kind, obj, ... + srcdir, kk, details) +% make: execute a "make" command for a source file +kk = cmd (sprintf (s, rule, srcdir, file1), kk, details) ; src = sprintf (src, file1, obj) ; dst = sprintf (dst, kind, file2, obj) ; mvfile (src, dst) ; M {end + 1} = dst ; + +%------------------------------------------------------------------------------- +function [v,pc] = getversion +% determine the MATLAB version, and return it as a double. +% only the primary and secondary version numbers are kept. +% MATLAB 7.0.4 becomes 7.0, version 6.5.2 becomes 6.5, etc. +v = version ; +t = find (v == '.') ; +if (length (t) > 1) + v = v (1:(t(2)-1)) ; +end +v = str2double (v) ; +try + % ispc does not appear in MATLAB 5.3 + pc = ispc ; +catch + % if ispc fails, assume we are on a Windows PC if it's not unix + pc = ~isunix ; +end diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_report.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_report.m index 16a85d9437..627b394698 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_report.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_report.m @@ -1,10 +1,11 @@ function umfpack_report (Control, Info) -% UMFPACK_REPORT +%UMFPACK_REPORT prints optional control settings and statistics % +% Example: % umfpack_report (Control, Info) ; % -% Prints the current Control settings for umfpack, and the statistical -% information returned by umfpack in the Info array. If Control is +% Prints the current Control settings for umfpack2, and the statistical +% information returned by umfpack2 in the Info array. If Control is % an empty matrix, then the default control settings are printed. % % Control is 20-by-1, and Info is 90-by-1. Not all entries are used. @@ -17,11 +18,10 @@ function umfpack_report (Control, Info) % umfpack_report ; print the default control parameters % and an empty Info array. % -% See also umfpack, umfpack_make, umfpack_details, +% See also umfpack, umfpack2, umfpack_make, umfpack_details, % umfpack_demo, and umfpack_simple. -% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. -% All Rights Reserved. Type umfpack_details for License. +% Copyright 1995-2007 by Timothy A. Davis. %------------------------------------------------------------------------------- % get inputs, use defaults if input arguments not present @@ -35,7 +35,7 @@ if (nargin < 2) Info = [] ; end if (isempty (Control)) - Control = umfpack ; + Control = umfpack2 ; end if (isempty (Info)) Info = [ 0 (-ones (1, 89)) ] ; @@ -45,7 +45,7 @@ end % control settings %------------------------------------------------------------------------------- -fprintf ('\nUMFPACK Version 4.4: Control settings:\n\n') ; +fprintf ('\nUMFPACK: Control settings:\n\n') ; fprintf (' Control (1): print level: %d\n', Control (1)) ; fprintf (' Control (2): dense row parameter: %g\n', Control (2)) ; fprintf (' "dense" rows have > max (16, (%g)*16*sqrt(n_col)) entries\n', Control (2)) ; @@ -102,12 +102,8 @@ if (Control (10) == 1) fprintf (' Control (10): compiled for MATLAB\n') ; elseif (Control (10) == 2) fprintf (' Control (10): compiled for MATLAB\n') ; - fprintf (' Uses internal utMalloc, utFree, utRealloc, utPrintf\n') ; - fprintf (' utDivideComplex, and utFdlibm_hypot routines.\n') ; else fprintf (' Control (10): not compiled for MATLAB\n') ; - fprintf (' Uses ANSI C malloc, free, realloc, and printf\n') ; - fprintf (' instead of mxMalloc, mxFree, mxRealloc, and mexPrintf.\n') ; fprintf (' Printing will be in terms of 0-based matrix indexing,\n') ; fprintf (' not 1-based as is expected in MATLAB. Diary output may\n') ; fprintf (' not be properly recorded.\n') ; @@ -127,13 +123,6 @@ if (Control (12) == 1) fprintf (' ###########################################\n') ; fprintf (' ### This will be exceedingly slow! ########\n') ; fprintf (' ###########################################\n') ; - if (Control (10) == 1) - fprintf (' Uses mxAssert.\n') ; - elseif (Control (10) == 2) - fprintf (' Uses utAssert.\n') ; - else - fprintf (' Uses ANSI C assert instead of mxAssert.\n') ; - end else fprintf (' Control (12): compiled for normal operation (no debugging)\n') ; end @@ -163,7 +152,7 @@ elseif (status == -5) fprintf ('ERROR required argument is missing\n') ; elseif (status == -6) fprintf ('ERROR n <= 0\n') ; -elseif (status <= -7 & status >= -12 | status == -14) +elseif (status <= -7 & status >= -12 | status == -14) %#ok fprintf ('ERROR matrix A is corrupted\n') ; elseif (status == -13) fprintf ('ERROR invalid system\n') ; @@ -184,7 +173,7 @@ fprintf (' Info (17): %d, # of columns of A\n', Info (17)) ; fprintf (' Info (3): %d, nnz (A)\n', Info (3)) ; fprintf (' Info (4): %d, Unit size, in bytes, for memory usage reported below\n', Info (4)) ; fprintf (' Info (5): %d, size of int (in bytes)\n', Info (5)) ; -fprintf (' Info (6): %d, size of long (in bytes)\n', Info (6)) ; +fprintf (' Info (6): %d, size of UF_long (in bytes)\n', Info (6)) ; fprintf (' Info (7): %d, size of pointer (in bytes)\n', Info (7)) ; fprintf (' Info (8): %d, size of numerical entry (in bytes)\n', Info (8)) ; @@ -192,7 +181,7 @@ fprintf ('\n Pivots with zero Markowitz cost removed to obtain submatrix S:\n') fprintf (' Info (57): %d, # of pivots with one entry in pivot column\n', Info (57)) ; fprintf (' Info (58): %d, # of pivots with one entry in pivot row\n', Info (58)) ; fprintf (' Info (59): %d, # of rows/columns in submatrix S (if square)\n', Info (59)) ; -fprintf (' Info (60): %d ') ; +fprintf (' Info (60): ') ; if (Info (60) > 0) fprintf ('submatrix S square and diagonal preserved\n') ; elseif (Info (60) == 0) @@ -279,7 +268,7 @@ fprintf (' Info (64): %d, integer indices in compressed pattern of L and U\n' fprintf (' Info (65): %d, numerical values stored in L and U\n', Info (65)) ; fprintf (' Info (66): %.2f, numeric factorization CPU time (seconds)\n', Info (66)) ; fprintf (' Info (76): %.2f, numeric factorization wall clock time (seconds)\n', Info (76)) ; -if (Info (66) > 0.05 & Info (43) > 0) +if (Info (66) > 0.05 & Info (43) > 0) %#ok fprintf (' mflops in numeric factorization phase: %.2f\n', 1e-6 * Info (43) / Info (66)) ; end fprintf (' Info (67): %d, nnz (diag (U))\n', Info (67)) ; @@ -317,6 +306,7 @@ fprintf ('\n Info (88:90): unused\n\n') ; %------------------------------------------------------------------------------- function prstrat (fmt, strategy) +% prstrat print the ordering strategy fprintf (fmt, strategy) ; if (strategy == 1) fprintf ('(unsymmetric)\n') ; @@ -332,13 +322,14 @@ elseif (strategy == 3) fprintf (' Q = AMD (A+A''), Q not refined during numeric factorization,\n') ; fprintf (' and diagonal pivoting (P=Q'') attempted.\n') ; else - strategy = 0 ; + % strategy = 0 ; fprintf ('(auto)\n') ; end %------------------------------------------------------------------------------- function yes_no (s) +% yes_no print yes or no if (s == 0) fprintf ('(no)\n') ; else diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m index 83a636aabe..b9a5dbc2e6 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m @@ -1,36 +1,24 @@ -% umfpack_simple: a simple demo of UMFPACK +%UMFPACK_SIMPLE a simple demo % -% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. -% All Rights Reserved. Type umfpack_details for License. +% Example: +% umfpack_simple +% +% Copyright 1995-2007 by Timothy A. Davis. % % UMFPACK License: % % Your use or distribution of UMFPACK or any modified version of -% UMFPACK implies that you agree to this License. -% -% THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY -% EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. -% -% Permission is hereby granted to use or copy this program, provided -% that the Copyright, this License, and the Availability of the original -% version is retained on all copies. User documentation of any code that -% uses UMFPACK or any modified version of UMFPACK code must cite the -% Copyright, this License, the Availability note, and "Used by permission." -% Permission to modify the code and to distribute modified code is granted, -% provided the Copyright, this License, and the Availability note are -% retained, and a notice that the code was modified is included. This -% software was developed with support from the National Science Foundation, -% and is provided to you free of charge. -% +% UMFPACK implies that you agree to this License. UMFPACK is +% is free software; you can redistribute it and/or +% modify it under the terms of the GNU Lesser General Public +% License as published by the Free Software Foundation; either +% version 2.1 of the License, or (at your option) any later version. + % Availability: http://www.cise.ufl.edu/research/sparse/umfpack % -% See also: umfpack, umfpack_details +% See also: umfpack, umfpack2, umfpack_details help umfpack_simple -i = input ('Hit enter to agree to the above License: ', 's') ; -if (~isempty (i)) - error ('terminating') ; -end format short @@ -40,21 +28,25 @@ A = [ 0 -1 -3 2 0 0 0 1 0 0 0 4 2 0 1 -] +] ; +fprintf ('A = \n') ; disp (A) ; A = sparse (A) ; -b = [8 45 -3 3 19]' +b = [8 45 -3 3 19]' ; +fprintf ('b = \n') ; disp (b) ; fprintf ('Solution to Ax=b via UMFPACK:\n') ; -fprintf ('x1 = umfpack (A, ''\\'', b)\n') ; +fprintf ('x1 = umfpack2 (A, ''\\'', b)\n') ; -x1 = umfpack (A, '\', b) +x1 = umfpack2 (A, '\', b) ; +fprintf ('x1 = \n') ; disp (x1) ; fprintf ('Solution to Ax=b via MATLAB:\n') ; fprintf ('x2 = A\\b\n') ; -x2 = A\b +x2 = A\b ; +fprintf ('x2 = \n') ; disp (x2) ; fprintf ('norm (x1-x2) should be small: %g\n', norm (x1-x2)) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m.out b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m.out index 90349e61b9..11d5639776 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m.out +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m.out @@ -1,75 +1,48 @@ ->> umfpack_simple - umfpack_simple: a simple demo of UMFPACK +umfpack_simple + UMFPACK_SIMPLE a simple demo - UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. - All Rights Reserved. Type umfpack_details for License. + Example: + umfpack_simple + + Copyright 1995-2007 by Timothy A. Davis. UMFPACK License: Your use or distribution of UMFPACK or any modified version of - UMFPACK implies that you agree to this License. - - THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY - EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. - - Permission is hereby granted to use or copy this program, provided - that the Copyright, this License, and the Availability of the original - version is retained on all copies. User documentation of any code that - uses UMFPACK or any modified version of UMFPACK code must cite the - Copyright, this License, the Availability note, and "Used by permission." - Permission to modify the code and to distribute modified code is granted, - provided the Copyright, this License, and the Availability note are - retained, and a notice that the code was modified is included. This - software was developed with support from the National Science Foundation, - and is provided to you free of charge. - - Availability: http://www.cise.ufl.edu/research/sparse/umfpack - - See also: umfpack, umfpack_details - - - -Hit enter to agree to the above License: - -A = + UMFPACK implies that you agree to this License. UMFPACK is + is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. +A = 2 3 0 0 0 3 0 4 0 6 0 -1 -3 2 0 0 0 1 0 0 0 4 2 0 1 - - -b = - +b = 8 45 -3 3 19 - Solution to Ax=b via UMFPACK: -x1 = umfpack (A, '\', b) - -x1 = - +x1 = umfpack2 (A, '\', b) +x1 = 1.0000 2.0000 3.0000 4.0000 5.0000 - Solution to Ax=b via MATLAB: x2 = A\b - -x2 = - +x2 = 1.0000 2.0000 3.0000 4.0000 5.0000 - norm (x1-x2) should be small: 1.28037e-15 Type 'umfpack_demo' for a full demo of UMFPACK ->> diary off +diary off diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_solve.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_solve.m index 56bf6c4fde..c30ae58028 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_solve.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_solve.m @@ -1,17 +1,17 @@ function x = umfpack_solve (arg1, op, arg2, Control) -% UMFPACK_SOLVE +%UMFPACK_SOLVE x = A\b or x = b/A % -% x = umfpack_solve (A, '\', b, Control) -% x = umfpack_solve (b, '/', A, Control) +% Example: +% x = umfpack_solve (A, '\', b, Control) +% x = umfpack_solve (b, '/', A, Control) % % Computes x = A\b, or b/A, where A is square. Uses UMFPACK if A is sparse. % The Control argument is optional. % -% See also umfpack, umfpack_make, umfpack_details, umfpack_report, +% See also umfpack, umfpack2, umfpack_make, umfpack_details, umfpack_report, % and umfpack_simple. -% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. -% All Rights Reserved. Type umfpack_details for License. +% Copyright 1995-2007 by Timothy A. Davis. %------------------------------------------------------------------------------- % check inputs and get default control parameters @@ -35,13 +35,13 @@ if (m ~= n) end [m1 n1] = size (b) ; -if ((op == '\' & n ~= m1) | (op == '/' & n1 ~= m)) +if ((op == '\' & n ~= m1) | (op == '/' & n1 ~= m)) %#ok help umfpack_solve error ('umfpack_solve: b has the wrong dimensions') ; end if (nargin < 4) - Control = umfpack ; + Control = umfpack2 ; end %------------------------------------------------------------------------------- @@ -55,15 +55,15 @@ if (op == '\') % A is not sparse, so just use MATLAB x = A\b ; - elseif (n1 == 1 & ~issparse (b)) + elseif (n1 == 1 & ~issparse (b)) %#ok % the UMFPACK '\' requires b to be a dense column vector - x = umfpack (A, '\', b, Control) ; + x = umfpack2 (A, '\', b, Control) ; else % factorize with UMFPACK and do the forward/back solves in MATLAB - [L, U, P, Q, R] = umfpack (A, Control) ; + [L, U, P, Q, R] = umfpack2 (A, Control) ; x = Q * (U \ (L \ (P * (R \ b)))) ; end @@ -75,20 +75,20 @@ else % A is not sparse, so just use MATLAB x = b/A ; - elseif (m1 == 1 & ~issparse (b)) + elseif (m1 == 1 & ~issparse (b)) %#ok % the UMFPACK '\' requires b to be a dense column vector - x = umfpack (b, '/', A, Control) ; + x = umfpack2 (b, '/', A, Control) ; else % factorize with UMFPACK and do the forward/back solves in MATLAB % this mimics the behavior of x = b/A, except for the row scaling - [L, U, P, Q, R] = umfpack (A.', Control) ; + [L, U, P, Q, R] = umfpack2 (A.', Control) ; x = (Q * (U \ (L \ (P * (R \ (b.')))))).' ; % an alternative method: - % [L, U, P, Q, r] = umfpack (A, Control) ; + % [L, U, P, Q, r] = umfpack2 (A, Control) ; % x = (R \ (P' * (L.' \ (U.' \ (Q' * b.'))))).' ; end diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_test.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_test.m index 3805a63ab8..94c5516520 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_test.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_test.m @@ -1,9 +1,10 @@ -% UMFPACK_TEST: test UMFPACK solve: b/A, A\b with iterative refinement -% Requires the UFsparse package for downloading matrices from the UF -% sparse matrix library. +%UMFPACK_TEST for testing umfpack2 (requires UFget) % -% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. -% All Rights Reserved. Type umfpack_details for License. +% Example: +% umfpack_test +% See also umfpack2 + +% Copyright 1995-2007 by Timothy A. Davis. index = UFget ; @@ -11,10 +12,9 @@ f = find (index.nrows == index.ncols) ; [ignore, i] = sort (index.nrows (f)) ; f = f (i) ; -Control = umfpack ; +Control = umfpack2 ; Control (1) = 0 ; -warning ('off', 'all') ; figure (1) clf @@ -36,7 +36,7 @@ for i = f % symbolic factorization %----------------------------------------------------------------------- - [P1, Q1, Fr, Ch, Info] = umfpack (A, 'symbolic') ; + [P1, Q1, Fr, Ch, Info] = umfpack2 (A, 'symbolic') ; subplot (2,2,1) spy (A) title ('A') @@ -49,7 +49,7 @@ for i = f % P(R\A)Q = LU %----------------------------------------------------------------------- - [L,U,P,Q,R,Info] = umfpack (A) ; + [L,U,P,Q,R,Info] = umfpack2 (A) ; err = lu_normest (P*(R\A)*Q, L, U) ; fprintf ('norm est PR\\AQ-LU: %g relative: %g\n', ... err, err / norm (A,1)) ; @@ -79,7 +79,7 @@ for i = f % PAQ = LU %----------------------------------------------------------------------- - [L,U,P,Q] = umfpack (A) ; + [L,U,P,Q] = umfpack2 (A) ; err = lu_normest (P*A*Q, L, U) ; fprintf ('norm est PAQ-LU: %g relative: %g\n', ... err, err / norm (A,1)) ; @@ -95,7 +95,7 @@ for i = f % factor the transpose Control (8) = 2 ; - [x, info] = umfpack (A', '\', c, Control) ; + [x, info] = umfpack2 (A', '\', c, Control) ; lunz0 = info (44) + info (45) - info (67) ; r = norm (A'*x-c) ; @@ -104,7 +104,7 @@ for i = f % factor the original matrix and solve xA=b for ir = 0:4 Control (8) = ir ; - [x, info] = umfpack (b, '/', A, Control) ; + [x, info] = umfpack2 (b, '/', A, Control) ; r = norm (b-x*A) ; if (ir == 0) lunz1 = info (44) + info (45) - info (67) ; @@ -115,12 +115,13 @@ for i = f % factor the original matrix and solve Ax=b for ir = 0:4 Control (8) = ir ; - [x, info] = umfpack (A, '\', c, Control) ; + [x, info] = umfpack2 (A, '\', c, Control) ; r = norm (A*x-c) ; fprintf ('%d: %8.2e %d %d\n', ir, r, info (81), info (82)) ; end - fprintf ('lunz trans %12d no trans: %12d trans/notrans: %10.4f\n', ... + fprintf (... + 'lunz trans %12d no trans: %12d trans/notrans: %10.4f\n', ... lunz0, lunz1, lunz0 / lunz1) ; %----------------------------------------------------------------------- @@ -128,8 +129,8 @@ for i = f %----------------------------------------------------------------------- det1 = det (A) ; - det2 = umfpack (A, 'det') ; - [det3 dexp3] = umfpack (A, 'det') ; + det2 = umfpack2 (A, 'det') ; + [det3 dexp3] = umfpack2 (A, 'det') ; err = abs (det1-det2) ; err3 = abs (det1 - (det3 * 10^dexp3)) ; denom = det1 ; @@ -138,15 +139,15 @@ for i = f end err = err / denom ; err3 = err3 / denom ; - fprintf ('det: %24.16e + (%24.16e)i MATLAB\n', real(det1), imag(det1)) ; - fprintf ('det: %24.16e + (%24.16e)i umfpack\n',real(det2), imag(det2)) ; - fprintf ('det: (%24.16e + (%24.16e)i) * 10^(%g) umfpack\n', real(det3), imag(det3), dexp3) ; + fprintf ('det: %20.12e + (%20.12e)i MATLAB\n', ... + real(det1), imag(det1)) ; + fprintf ('det: %20.12e + (%20.12e)i umfpack2\n', ... + real(det2), imag(det2)) ; + fprintf ('det: (%20.12e + (%20.12e)i) * 10^(%g) umfpack2\n', ... + real(det3), imag(det3), dexp3) ; fprintf ('diff %g %g\n', err, err3) ; catch fprintf ('failed\n') ; end - -% pause - end diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpackmex.c b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpackmex.c index 23dad00431..13f2e66d69 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpackmex.c +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpackmex.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -61,9 +61,13 @@ Modified for v4.3.1, Jan 10, 2005: default has been changed to NO_TRANSPOSE_FORWARD_SLASH, to test iterative refinement for b/A. v4.4: added method for computing the determinant. + + v5.1: port to 64-bit MATLAB */ + #define NO_TRANSPOSE_FORWARD_SLASH /* default has changed for v4.3.1 */ +#include "UFconfig.h" #include "umfpack.h" #include "mex.h" #include "matrix.h" @@ -90,35 +94,35 @@ static void error ( char *s, - int A_is_complex, + UF_long A_is_complex, int nargout, mxArray *pargout [ ], double Control [UMFPACK_CONTROL], double Info [UMFPACK_INFO], - int status, - int do_info + UF_long status, + UF_long do_info ) { - int i ; - double *OutInfo ; + UF_long i ; + double *Out_Info ; if (A_is_complex) { - umfpack_zi_report_status (Control, status) ; - umfpack_zi_report_info (Control, Info) ; + umfpack_zl_report_status (Control, status) ; + umfpack_zl_report_info (Control, Info) ; } else { - umfpack_di_report_status (Control, status) ; - umfpack_di_report_info (Control, Info) ; + umfpack_dl_report_status (Control, status) ; + umfpack_dl_report_info (Control, Info) ; } if (do_info > 0) { /* return Info */ pargout [do_info] = mxCreateDoubleMatrix (1, UMFPACK_INFO, mxREAL) ; - OutInfo = mxGetPr (pargout [do_info]) ; + Out_Info = mxGetPr (pargout [do_info]) ; for (i = 0 ; i < UMFPACK_INFO ; i++) { - OutInfo [i] = Info [i] ; + Out_Info [i] = Info [i] ; } } mexErrMsgTxt (s) ; @@ -144,9 +148,9 @@ void mexFunction double Info [UMFPACK_INFO], Control [UMFPACK_CONTROL], dx, dz, dexp ; double *Lx, *Lz, *Ux, *Uz, *Ax, *Az, *Bx, *Bz, *Xx, *Xz, *User_Control, - *p, *q, *OutInfo, *p1, *p2, *p3, *p4, *Ltx, *Ltz, *Rs, *Px, *Qx ; + *p, *q, *Out_Info, *p1, *p2, *p3, *p4, *Ltx, *Ltz, *Rs, *Px, *Qx ; void *Symbolic, *Numeric ; - int *Lp, *Li, *Up, *Ui, *Ap, *Ai, *P, *Q, do_solve, lnz, unz, nn, i, + UF_long *Lp, *Li, *Up, *Ui, *Ap, *Ai, *P, *Q, do_solve, lnz, unz, nn, i, transpose, size, do_info, do_numeric, *Front_npivcol, op, k, *Rp, *Ri, *Front_parent, *Chain_start, *Chain_maxrows, *Chain_maxcols, nz, status, nfronts, nchains, *Ltp, *Ltj, *Qinit, print_level, status2, no_scale, @@ -159,10 +163,28 @@ void mexFunction char warning [200] ; #ifndef NO_TRANSPOSE_FORWARD_SLASH - int *Cp, *Ci ; + UF_long *Cp, *Ci ; double *Cx, *Cz ; #endif + /* ---------------------------------------------------------------------- */ + /* define the memory manager and printf functions for UMFPACK and AMD */ + /* ---------------------------------------------------------------------- */ + + /* with these settings, the UMFPACK mexFunction can use ../Lib/libumfpack.a + * and ../Lib/libamd.a, instead compiling UMFPACK and AMD specifically for + * the MATLAB mexFunction. */ + amd_malloc = mxMalloc ; + amd_free = mxFree ; + amd_calloc = mxCalloc ; + amd_realloc = mxRealloc ; + amd_printf = mexPrintf ; + + /* The default values for these function pointers are fine. + umfpack_hypot = umf_hypot ; + umfpack_divcomplex = umf_divcomplex ; + */ + /* ---------------------------------------------------------------------- */ /* get inputs A, b, and the operation to perform */ /* ---------------------------------------------------------------------- */ @@ -414,7 +436,7 @@ void mexFunction pargout [0] = mxCreateDoubleMatrix (UMFPACK_CONTROL, 1, mxREAL) ; User_Control = mxGetPr (pargout [0]) ; - umfpack_di_defaults (User_Control) ; + umfpack_dl_defaults (User_Control) ; return ; } @@ -445,11 +467,11 @@ void mexFunction } /* The real/complex status of A determines which version to use, */ - /* (umfpack_di_* or umfpack_zi_*). */ + /* (umfpack_dl_* or umfpack_zl_*). */ A_is_complex = mxIsComplex (Amatrix) ; Atype = A_is_complex ? mxCOMPLEX : mxREAL ; - Ap = mxGetJc (Amatrix) ; - Ai = mxGetIr (Amatrix) ; + Ap = (UF_long *) mxGetJc (Amatrix) ; + Ai = (UF_long *) mxGetIr (Amatrix) ; Ax = mxGetPr (Amatrix) ; Az = mxGetPi (Amatrix) ; @@ -501,11 +523,11 @@ void mexFunction if (A_is_complex) { - umfpack_zi_defaults (Control) ; + umfpack_zl_defaults (Control) ; } else { - umfpack_di_defaults (Control) ; + umfpack_dl_defaults (Control) ; } if (User_Control_matrix) { @@ -537,7 +559,7 @@ void mexFunction } else { - print_level = (int) Control [UMFPACK_PRL] ; + print_level = (UF_long) Control [UMFPACK_PRL] ; } Control [UMFPACK_PRL] = print_level ; @@ -568,12 +590,12 @@ void mexFunction { mexErrMsgTxt ("input Qinit must be dense") ; } - Qinit = (int *) mxMalloc (n_col * sizeof (int)) ; + Qinit = (UF_long *) mxMalloc (n_col * sizeof (UF_long)) ; p = mxGetPr (User_Qinit) ; for (k = 0 ; k < n_col ; k++) { /* convert from 1-based to 0-based indexing */ - Qinit [k] = ((int) (p [k])) - 1 ; + Qinit [k] = ((UF_long) (p [k])) - 1 ; } } @@ -581,7 +603,7 @@ void mexFunction { /* umfpack_*_qsymbolic will call colamd to get Qinit. This is the */ /* same as calling umfpack_*_symbolic with Qinit set to NULL*/ - Qinit = (int *) NULL ; + Qinit = (UF_long *) NULL ; } /* ---------------------------------------------------------------------- */ @@ -596,26 +618,26 @@ void mexFunction if (A_is_complex) { - umfpack_zi_report_control (Control) ; + umfpack_zl_report_control (Control) ; if (print_level >= 3) mexPrintf ("\nA: ") ; - (void) umfpack_zi_report_matrix (n_row, n_col, Ap, Ai, Ax, Az, + (void) umfpack_zl_report_matrix (n_row, n_col, Ap, Ai, Ax, Az, 1, Control) ; if (Qinit) { if (print_level >= 3) mexPrintf ("\nQinit: ") ; - (void) umfpack_zi_report_perm (n_col, Qinit, Control) ; + (void) umfpack_zl_report_perm (n_col, Qinit, Control) ; } } else { - umfpack_di_report_control (Control) ; + umfpack_dl_report_control (Control) ; if (print_level >= 3) mexPrintf ("\nA: ") ; - (void) umfpack_di_report_matrix (n_row, n_col, Ap, Ai, Ax, + (void) umfpack_dl_report_matrix (n_row, n_col, Ap, Ai, Ax, 1, Control) ; if (Qinit) { if (print_level >= 3) mexPrintf ("\nQinit: ") ; - (void) umfpack_di_report_perm (n_col, Qinit, Control) ; + (void) umfpack_dl_report_perm (n_col, Qinit, Control) ; } } @@ -632,19 +654,19 @@ void mexFunction /* make sure Ci and Cx exist, avoid malloc of zero-sized arrays. */ nz = MAX (Ap [nn], 1) ; - Cp = (int *) mxMalloc ((nn+1) * sizeof (int)) ; - Ci = (int *) mxMalloc (nz * sizeof (int)) ; + Cp = (UF_long *) mxMalloc ((nn+1) * sizeof (UF_long)) ; + Ci = (UF_long *) mxMalloc (nz * sizeof (UF_long)) ; Cx = (double *) mxMalloc (nz * sizeof (double)) ; if (A_is_complex) { Cz = (double *) mxMalloc (nz * sizeof (double)) ; - status = umfpack_zi_transpose (nn, nn, Ap, Ai, Ax, Az, - (int *) NULL, (int *) NULL, Cp, Ci, Cx, Cz, FALSE) ; + status = umfpack_zl_transpose (nn, nn, Ap, Ai, Ax, Az, + (UF_long *) NULL, (UF_long *) NULL, Cp, Ci, Cx, Cz, FALSE) ; } else { - status = umfpack_di_transpose (nn, nn, Ap, Ai, Ax, - (int *) NULL, (int *) NULL, Cp, Ci, Cx) ; + status = umfpack_dl_transpose (nn, nn, Ap, Ai, Ax, + (UF_long *) NULL, (UF_long *) NULL, Cp, Ci, Cx) ; } if (status != UMFPACK_OK) @@ -671,12 +693,12 @@ void mexFunction if (A_is_complex) { - status = umfpack_zi_qsymbolic (n_row, n_col, Ap, Ai, Ax, Az, + status = umfpack_zl_qsymbolic (n_row, n_col, Ap, Ai, Ax, Az, Qinit, &Symbolic, Control, Info) ; } else { - status = umfpack_di_qsymbolic (n_row, n_col, Ap, Ai, Ax, + status = umfpack_dl_qsymbolic (n_row, n_col, Ap, Ai, Ax, Qinit, &Symbolic, Control, Info) ; } @@ -698,11 +720,11 @@ void mexFunction if (A_is_complex) { - (void) umfpack_zi_report_symbolic (Symbolic, Control) ; + (void) umfpack_zl_report_symbolic (Symbolic, Control) ; } else { - (void) umfpack_di_report_symbolic (Symbolic, Control) ; + (void) umfpack_dl_report_symbolic (Symbolic, Control) ; } /* ---------------------------------------------------------------------- */ @@ -718,12 +740,12 @@ void mexFunction if (A_is_complex) { - status = umfpack_zi_numeric (Ap, Ai, Ax, Az, Symbolic, &Numeric, + status = umfpack_zl_numeric (Ap, Ai, Ax, Az, Symbolic, &Numeric, Control, Info) ; } else { - status = umfpack_di_numeric (Ap, Ai, Ax, Symbolic, &Numeric, + status = umfpack_dl_numeric (Ap, Ai, Ax, Symbolic, &Numeric, Control, Info) ; } @@ -733,11 +755,11 @@ void mexFunction if (A_is_complex) { - umfpack_zi_free_symbolic (&Symbolic) ; + umfpack_zl_free_symbolic (&Symbolic) ; } else { - umfpack_di_free_symbolic (&Symbolic) ; + umfpack_dl_free_symbolic (&Symbolic) ; } /* ------------------------------------------------------------------ */ @@ -753,11 +775,11 @@ void mexFunction if (A_is_complex) { - (void) umfpack_zi_report_numeric (Numeric, Control) ; + (void) umfpack_zl_report_numeric (Numeric, Control) ; } else { - (void) umfpack_di_report_numeric (Numeric, Control) ; + (void) umfpack_dl_report_numeric (Numeric, Control) ; } /* ------------------------------------------------------------------ */ @@ -813,11 +835,11 @@ void mexFunction if (print_level >= 3) mexPrintf ("\nright-hand side, b: ") ; if (B_is_complex) { - (void) umfpack_zi_report_vector (nn, Bx, Bz, Control) ; + (void) umfpack_zl_report_vector (nn, Bx, Bz, Control) ; } else { - (void) umfpack_di_report_vector (nn, Bx, Control) ; + (void) umfpack_dl_report_vector (nn, Bx, Control) ; } /* -------------------------------------------------------------- */ @@ -832,10 +854,10 @@ void mexFunction { if (!B_is_complex) { - /* umfpack_zi_solve expects a complex B */ + /* umfpack_zl_solve expects a complex B */ Bz = (double *) mxCalloc (nn, sizeof (double)) ; } - status = umfpack_zi_solve (sys, Ap, Ai, Ax, Az, Xx, Xz, Bx, Bz, + status = umfpack_zl_solve (sys, Ap, Ai, Ax, Az, Xx, Xz, Bx, Bz, Numeric, Control, Info) ; if (!B_is_complex) { @@ -849,10 +871,10 @@ void mexFunction /* Ax=b when b is complex and A is sparse can be split */ /* into two systems, A*xr=br and A*xi=bi, where r denotes */ /* the real part and i the imaginary part of x and b. */ - status2 = umfpack_di_solve (sys, Ap, Ai, Ax, Xz, Bz, + status2 = umfpack_dl_solve (sys, Ap, Ai, Ax, Xz, Bz, Numeric, Control, Info) ; } - status = umfpack_di_solve (sys, Ap, Ai, Ax, Xx, Bx, + status = umfpack_dl_solve (sys, Ap, Ai, Ax, Xx, Bx, Numeric, Control, Info) ; } @@ -879,11 +901,11 @@ void mexFunction if (A_is_complex) { - umfpack_zi_free_numeric (&Numeric) ; + umfpack_zl_free_numeric (&Numeric) ; } else { - umfpack_di_free_numeric (&Numeric) ; + umfpack_dl_free_numeric (&Numeric) ; } /* -------------------------------------------------------------- */ @@ -905,11 +927,11 @@ void mexFunction if (print_level >= 3) mexPrintf ("\nsolution, x: ") ; if (X_is_complex) { - (void) umfpack_zi_report_vector (nn, Xx, Xz, Control) ; + (void) umfpack_zl_report_vector (nn, Xx, Xz, Control) ; } else { - (void) umfpack_di_report_vector (nn, Xx, Control) ; + (void) umfpack_dl_report_vector (nn, Xx, Control) ; } /* -------------------------------------------------------------- */ @@ -966,15 +988,15 @@ void mexFunction } if (A_is_complex) { - status = umfpack_zi_get_determinant (&dx, &dz, p, + status = umfpack_zl_get_determinant (&dx, &dz, p, Numeric, Info) ; - umfpack_zi_free_numeric (&Numeric) ; + umfpack_zl_free_numeric (&Numeric) ; } else { - status = umfpack_di_get_determinant (&dx, p, + status = umfpack_dl_get_determinant (&dx, p, Numeric, Info) ; - umfpack_di_free_numeric (&Numeric) ; + umfpack_dl_free_numeric (&Numeric) ; dz = 0 ; } if (status < 0) @@ -1013,12 +1035,12 @@ void mexFunction if (A_is_complex) { - status = umfpack_zi_get_lunz (&lnz, &unz, &ignore1, &ignore2, + status = umfpack_zl_get_lunz (&lnz, &unz, &ignore1, &ignore2, &ignore3, Numeric) ; } else { - status = umfpack_di_get_lunz (&lnz, &unz, &ignore1, &ignore2, + status = umfpack_dl_get_lunz (&lnz, &unz, &ignore1, &ignore2, &ignore3, Numeric) ; } @@ -1026,11 +1048,11 @@ void mexFunction { if (A_is_complex) { - umfpack_zi_free_numeric (&Numeric) ; + umfpack_zl_free_numeric (&Numeric) ; } else { - umfpack_di_free_numeric (&Numeric) ; + umfpack_dl_free_numeric (&Numeric) ; } error ("extracting LU factors failed", A_is_complex, nargout, pargout, Control, Info, status, do_info) ; @@ -1042,8 +1064,8 @@ void mexFunction unz = MAX (unz, 1) ; /* get temporary space, for the *** ROW *** form of L */ - Ltp = (int *) mxMalloc ((n_row+1) * sizeof (int)) ; - Ltj = (int *) mxMalloc (lnz * sizeof (int)) ; + Ltp = (UF_long *) mxMalloc ((n_row+1) * sizeof (UF_long)) ; + Ltj = (UF_long *) mxMalloc (lnz * sizeof (UF_long)) ; Ltx = (double *) mxMalloc (lnz * sizeof (double)) ; if (A_is_complex) { @@ -1056,14 +1078,14 @@ void mexFunction /* create permanent copy of the output matrix U */ pargout [1] = mxCreateSparse (n_inner, n_col, unz, Atype) ; - Up = mxGetJc (pargout [1]) ; - Ui = mxGetIr (pargout [1]) ; + Up = (UF_long *) mxGetJc (pargout [1]) ; + Ui = (UF_long *) mxGetIr (pargout [1]) ; Ux = mxGetPr (pargout [1]) ; Uz = mxGetPi (pargout [1]) ; /* temporary space for the integer permutation vectors */ - P = (int *) mxMalloc (n_row * sizeof (int)) ; - Q = (int *) mxMalloc (n_col * sizeof (int)) ; + P = (UF_long *) mxMalloc (n_row * sizeof (UF_long)) ; + Q = (UF_long *) mxMalloc (n_col * sizeof (UF_long)) ; /* get scale factors, if requested */ status2 = UMFPACK_OK ; @@ -1071,8 +1093,8 @@ void mexFunction { /* create a diagonal sparse matrix for the scale factors */ pargout [4] = mxCreateSparse (n_row, n_row, n_row, mxREAL) ; - Rp = mxGetJc (pargout [4]) ; - Ri = mxGetIr (pargout [4]) ; + Rp = (UF_long *) mxGetJc (pargout [4]) ; + Ri = (UF_long *) mxGetIr (pargout [4]) ; for (i = 0 ; i < n_row ; i++) { Rp [i] = i ; @@ -1089,17 +1111,17 @@ void mexFunction /* get Lt, U, P, Q, and Rs from the numeric object */ if (A_is_complex) { - status = umfpack_zi_get_numeric (Ltp, Ltj, Ltx, Ltz, Up, Ui, Ux, + status = umfpack_zl_get_numeric (Ltp, Ltj, Ltx, Ltz, Up, Ui, Ux, Uz, P, Q, (double *) NULL, (double *) NULL, &do_recip, Rs, Numeric) ; - umfpack_zi_free_numeric (&Numeric) ; + umfpack_zl_free_numeric (&Numeric) ; } else { - status = umfpack_di_get_numeric (Ltp, Ltj, Ltx, Up, Ui, + status = umfpack_dl_get_numeric (Ltp, Ltj, Ltx, Up, Ui, Ux, P, Q, (double *) NULL, &do_recip, Rs, Numeric) ; - umfpack_di_free_numeric (&Numeric) ; + umfpack_dl_free_numeric (&Numeric) ; } /* for the mexFunction, -DNRECIPROCAL must be set, @@ -1121,8 +1143,8 @@ void mexFunction /* create sparse permutation matrix for P */ pargout [2] = mxCreateSparse (n_row, n_row, n_row, mxREAL) ; - Pp = mxGetJc (pargout [2]) ; - Pi = mxGetIr (pargout [2]) ; + Pp = (UF_long *) mxGetJc (pargout [2]) ; + Pi = (UF_long *) mxGetIr (pargout [2]) ; Px = mxGetPr (pargout [2]) ; for (k = 0 ; k < n_row ; k++) { @@ -1134,8 +1156,8 @@ void mexFunction /* create sparse permutation matrix for Q */ pargout [3] = mxCreateSparse (n_col, n_col, n_col, mxREAL) ; - Qp = mxGetJc (pargout [3]) ; - Qi = mxGetIr (pargout [3]) ; + Qp = (UF_long *) mxGetJc (pargout [3]) ; + Qi = (UF_long *) mxGetIr (pargout [3]) ; Qx = mxGetPr (pargout [3]) ; for (k = 0 ; k < n_col ; k++) { @@ -1147,8 +1169,8 @@ void mexFunction /* permanent copy of L */ pargout [0] = mxCreateSparse (n_row, n_inner, lnz, Atype) ; - Lp = mxGetJc (pargout [0]) ; - Li = mxGetIr (pargout [0]) ; + Lp = (UF_long *) mxGetJc (pargout [0]) ; + Li = (UF_long *) mxGetIr (pargout [0]) ; Lx = mxGetPr (pargout [0]) ; Lz = mxGetPi (pargout [0]) ; @@ -1156,13 +1178,14 @@ void mexFunction if (A_is_complex) { /* non-conjugate array transpose */ - status = umfpack_zi_transpose (n_inner, n_row, Ltp, Ltj, Ltx, - Ltz, (int *) NULL, (int *) NULL, Lp, Li, Lx, Lz, FALSE) ; + status = umfpack_zl_transpose (n_inner, n_row, Ltp, Ltj, Ltx, + Ltz, (UF_long *) NULL, (UF_long *) NULL, Lp, Li, Lx, Lz, + FALSE) ; } else { - status = umfpack_di_transpose (n_inner, n_row, Ltp, Ltj, Ltx, - (int *) NULL, (int *) NULL, Lp, Li, Lx) ; + status = umfpack_dl_transpose (n_inner, n_row, Ltp, Ltj, Ltx, + (UF_long *) NULL, (UF_long *) NULL, Lp, Li, Lx) ; } mxFree (Ltp) ; @@ -1190,28 +1213,28 @@ void mexFunction if (A_is_complex) { if (print_level >= 3) mexPrintf ("\nL: ") ; - (void) umfpack_zi_report_matrix (n_row, n_inner, Lp, Li, + (void) umfpack_zl_report_matrix (n_row, n_inner, Lp, Li, Lx, Lz, 1, Control) ; if (print_level >= 3) mexPrintf ("\nU: ") ; - (void) umfpack_zi_report_matrix (n_inner, n_col, Up, Ui, + (void) umfpack_zl_report_matrix (n_inner, n_col, Up, Ui, Ux, Uz, 1, Control) ; if (print_level >= 3) mexPrintf ("\nP: ") ; - (void) umfpack_zi_report_perm (n_row, P, Control) ; + (void) umfpack_zl_report_perm (n_row, P, Control) ; if (print_level >= 3) mexPrintf ("\nQ: ") ; - (void) umfpack_zi_report_perm (n_col, Q, Control) ; + (void) umfpack_zl_report_perm (n_col, Q, Control) ; } else { if (print_level >= 3) mexPrintf ("\nL: ") ; - (void) umfpack_di_report_matrix (n_row, n_inner, Lp, Li, + (void) umfpack_dl_report_matrix (n_row, n_inner, Lp, Li, Lx, 1, Control) ; if (print_level >= 3) mexPrintf ("\nU: ") ; - (void) umfpack_di_report_matrix (n_inner, n_col, Up, Ui, + (void) umfpack_dl_report_matrix (n_inner, n_col, Up, Ui, Ux, 1, Control) ; if (print_level >= 3) mexPrintf ("\nP: ") ; - (void) umfpack_di_report_perm (n_row, P, Control) ; + (void) umfpack_dl_report_perm (n_row, P, Control) ; if (print_level >= 3) mexPrintf ("\nQ: ") ; - (void) umfpack_di_report_perm (n_col, Q, Control) ; + (void) umfpack_dl_report_perm (n_col, Q, Control) ; } mxFree (P) ; @@ -1227,31 +1250,31 @@ void mexFunction /* return the symbolic factorization */ /* ------------------------------------------------------------------ */ - Q = (int *) mxMalloc (n_col * sizeof (int)) ; - P = (int *) mxMalloc (n_row * sizeof (int)) ; - Front_npivcol = (int *) mxMalloc ((nn+1) * sizeof (int)) ; - Front_parent = (int *) mxMalloc ((nn+1) * sizeof (int)) ; - Front_1strow = (int *) mxMalloc ((nn+1) * sizeof (int)) ; - Front_leftmostdesc = (int *) mxMalloc ((nn+1) * sizeof (int)) ; - Chain_start = (int *) mxMalloc ((nn+1) * sizeof (int)) ; - Chain_maxrows = (int *) mxMalloc ((nn+1) * sizeof (int)) ; - Chain_maxcols = (int *) mxMalloc ((nn+1) * sizeof (int)) ; + Q = (UF_long *) mxMalloc (n_col * sizeof (UF_long)) ; + P = (UF_long *) mxMalloc (n_row * sizeof (UF_long)) ; + Front_npivcol = (UF_long *) mxMalloc ((nn+1) * sizeof (UF_long)) ; + Front_parent = (UF_long *) mxMalloc ((nn+1) * sizeof (UF_long)) ; + Front_1strow = (UF_long *) mxMalloc ((nn+1) * sizeof (UF_long)) ; + Front_leftmostdesc = (UF_long *) mxMalloc ((nn+1) * sizeof (UF_long)) ; + Chain_start = (UF_long *) mxMalloc ((nn+1) * sizeof (UF_long)) ; + Chain_maxrows = (UF_long *) mxMalloc ((nn+1) * sizeof (UF_long)) ; + Chain_maxcols = (UF_long *) mxMalloc ((nn+1) * sizeof (UF_long)) ; if (A_is_complex) { - status = umfpack_zi_get_symbolic (&ignore1, &ignore2, &ignore3, + status = umfpack_zl_get_symbolic (&ignore1, &ignore2, &ignore3, &nz, &nfronts, &nchains, P, Q, Front_npivcol, Front_parent, Front_1strow, Front_leftmostdesc, Chain_start, Chain_maxrows, Chain_maxcols, Symbolic) ; - umfpack_zi_free_symbolic (&Symbolic) ; + umfpack_zl_free_symbolic (&Symbolic) ; } else { - status = umfpack_di_get_symbolic (&ignore1, &ignore2, &ignore3, + status = umfpack_dl_get_symbolic (&ignore1, &ignore2, &ignore3, &nz, &nfronts, &nchains, P, Q, Front_npivcol, Front_parent, Front_1strow, Front_leftmostdesc, Chain_start, Chain_maxrows, Chain_maxcols, Symbolic) ; - umfpack_di_free_symbolic (&Symbolic) ; + umfpack_dl_free_symbolic (&Symbolic) ; } if (status < 0) @@ -1272,8 +1295,8 @@ void mexFunction /* create sparse permutation matrix for P */ pargout [0] = mxCreateSparse (n_row, n_row, n_row, mxREAL) ; - Pp = mxGetJc (pargout [0]) ; - Pi = mxGetIr (pargout [0]) ; + Pp = (UF_long *) mxGetJc (pargout [0]) ; + Pi = (UF_long *) mxGetIr (pargout [0]) ; Px = mxGetPr (pargout [0]) ; for (k = 0 ; k < n_row ; k++) { @@ -1285,8 +1308,8 @@ void mexFunction /* create sparse permutation matrix for Q */ pargout [1] = mxCreateSparse (n_col, n_col, n_col, mxREAL) ; - Qp = mxGetJc (pargout [1]) ; - Qi = mxGetIr (pargout [1]) ; + Qp = (UF_long *) mxGetJc (pargout [1]) ; + Qi = (UF_long *) mxGetIr (pargout [1]) ; Qx = mxGetPr (pargout [1]) ; for (k = 0 ; k < n_col ; k++) { @@ -1344,21 +1367,21 @@ void mexFunction if (A_is_complex) { - umfpack_zi_report_info (Control, Info) ; + umfpack_zl_report_info (Control, Info) ; } else { - umfpack_di_report_info (Control, Info) ; + umfpack_dl_report_info (Control, Info) ; } if (do_info > 0) { /* return Info */ pargout [do_info] = mxCreateDoubleMatrix (1, UMFPACK_INFO, mxREAL) ; - OutInfo = mxGetPr (pargout [do_info]) ; + Out_Info = mxGetPr (pargout [do_info]) ; for (i = 0 ; i < UMFPACK_INFO ; i++) { - OutInfo [i] = Info [i] ; + Out_Info [i] = Info [i] ; } } } diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/west.mat b/deal.II/contrib/umfpack/UMFPACK/MATLAB/west.mat new file mode 100644 index 0000000000000000000000000000000000000000..9110c2b3099659f5f77bc6f6de5944d9108bfdc8 GIT binary patch literal 1885 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 b%E5dmRD|R0bS~Z!)9_|!#wSq2Ux2>@cgC5+ diff --git a/deal.II/contrib/umfpack/UMFPACK/README.txt b/deal.II/contrib/umfpack/UMFPACK/README.txt index e601f38e5f..eec0f743ca 100644 --- a/deal.II/contrib/umfpack/UMFPACK/README.txt +++ b/deal.II/contrib/umfpack/UMFPACK/README.txt @@ -1,58 +1,76 @@ -UMFPACK Version 4.4: a set of routines solving sparse linear systems via LU - factorization. Requires two other packages: the BLAS (dense matrix - operations) and AMD (sparse matrix minimum degree ordering). Includes - a C-callable and MATLAB interface, and a basic FORTRAN 77 interface to - a subset of the C-callable routines. +UMFPACK Version 5.0.2: a set of routines solving sparse linear systems via LU + factorization. Requires three other packages: the BLAS (dense matrix + operations), AMD (sparse matrix minimum degree ordering), and UFconfig. + Includes a C-callable and MATLAB interface, and a basic FORTRAN 77 + interface to a subset of the C-callable routines. Requires AMD Version + 2.0 or later. + +The AMD, UFconfig, and UMFPACK directories must all reside in the same parent +directory. Quick start (Unix, or Windows with Cygwin): To compile, test, and install both UMFPACK and AMD, the UMFPACK and AMD directories must be in the same parent directory. To configure, edit - UMFPACK/Make/Make.include and AMD/Make/Make.include (otherwise the BLAS - will not be used, and UMFPACK will be slow). cd to this directory (UMFPACK) - and type "make" (or "make lib" if you do not have MATLAB). To compile and - run a demo program for Harwell/Boeing matrices, type "make hb". To compile - a FORTRAN main program that calls the 32-bit C-callable UMFPACK library, - type "make fortran". When done, type "make clean" to remove unused *.o - files (keeps the compiled libraries and demo programs). See the User Guide - (Doc/UserGuide.pdf), or UMFPACK/Make/Make.include, for more details - (including options for compiling 64-bit mode). + the UFconfig/UFconfig.mk file (otherwise, you may get warnings that the + BLAS (dgemm, etc) are not found). You may use UMFPACK_CONFIG = -DNBLAS in + the UFconfig/UFconfig.mk file, to avoid using the BLAS, but UMFPACK will be + slow. Next, cd to this directory (UMFPACK) and type "make". To compile + and run a FORTRAN demo program for Harwell/Boeing matrices, type "make hb". + To compile a FORTRAN main program that calls the 32-bit C-callable UMFPACK + library, type "make fortran". When done, type "make clean" to remove + unused *.o files (keeps the compiled libraries and demo programs). See + the User Guide (Doc/UserGuide.pdf), or ../UFconfig/UFconfig.mk for more + details (including options for compiling in 64-bit mode). Quick start (for MATLAB users): To compile, test, and install the UMFPACK mexFunction, cd to the UMFPACK/MATLAB directory and type umfpack_make at the MATLAB prompt. - This works on any system supported by MATLAB. + + NOTE: DO NOT ATTEMPT TO USE THIS CODE IN 64-BIT MATLAB (v7.3). + It is not yet ported to that version of MATLAB. -------------------------------------------------------------------------------- -UMFPACK Version 4.4 (Jan. 28, 2005), Copyright (c) 2005 by Timothy A. -Davis. All Rights Reserved. +UMFPACK, Copyright (c) 1995-2006 by Timothy A. Davis. All Rights Reserved. +UMFPACK is available under alternate licences; contact T. Davis for details. UMFPACK License: Your use or distribution of UMFPACK or any modified version of UMFPACK implies that you agree to this License. - THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY - EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. - - Permission is hereby granted to use or copy this program, provided - that the Copyright, this License, and the Availability of the original - version is retained on all copies. User documentation of any code that - uses UMFPACK or any modified version of UMFPACK code must cite the - Copyright, this License, the Availability note, and "Used by permission." - Permission to modify the code and to distribute modified code is granted, - provided the Copyright, this License, and the Availability note are - retained, and a notice that the code was modified is included. This - software was developed with support from the National Science Foundation, - and is provided to you free of charge. + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 + USA + + Permission is hereby granted to use or copy this program under the + terms of the GNU LGPL, provided that the Copyright, this License, + and the Availability of the original version is retained on all copies. + User documentation of any code that uses this code or any modified + version of this code must cite the Copyright, this License, the + Availability note, and "Used by permission." Permission to modify + the code and to distribute modified code is granted, provided the + Copyright, this License, and the Availability note are retained, + and a notice that the code was modified is included. Availability: http://www.cise.ufl.edu/research/sparse/umfpack - UMFPACK (including versions 2.2.1 and earlier, in Fortran) is available at + UMFPACK (including versions 2.2.1 and earlier, in FORTRAN) is available at http://www.cise.ufl.edu/research/sparse. MA38 is available in the Harwell Subroutine Library. This version of UMFPACK includes a modified form of COLAMD Version 2.0, originally released on Jan. 31, 2000, also available at @@ -67,7 +85,8 @@ Availability: Refer to ../AMD/README for the License for AMD, which is a separate package for ordering sparse matrices that is required by UMFPACK. -UMFPACK v4.4 can use either AMD v1.0 or v1.1. +UMFPACK v4.5 cannot use AMD v1.1 or earlier. UMFPACK 5.0 +requires AMD v2.0 or later. -------------------------------------------------------------------------------- @@ -82,8 +101,7 @@ Description: with a MATLAB (Version 6.0 or later) interface. For best performance, UMFPACK requires an optimized BLAS library. It can - also be compiled without any BLAS at all. UMFPACK requires AMD Version 1.0 - or Version 1.1 + also be compiled without any BLAS at all. UMFPACK requires AMD Version 2.0. Authors: @@ -137,7 +155,6 @@ Files and directories in the UMFPACK distribution: ---------------------------------------------------------------------------- Doc documentation - Make for compiling UMFPACK (a symbolic link to ../AMD/Make) Source primary source code Include include files for use in your code that calls UMFPACK Demo demo programs. also serves as test of the UMFPACK installation. @@ -168,19 +185,11 @@ Files and directories in the UMFPACK distribution: UserGuide.stex User Guide (LaTeX) UserGuide.pdf User Guide (PDF) - ---------------------------------------------------------------------------- - Make directory: for compiling the UMFPACK library (Lib/libumfpack.a) - ---------------------------------------------------------------------------- - - This is a symbolic link to the ../AMD/Make directory. Refer to the - ../AMD/README file for a list of its contents. - ---------------------------------------------------------------------------- Source directory: ---------------------------------------------------------------------------- - GNUmakefile a nice Makefile, for GNU make - Makefile an ugly Unix Makefile (for older make's) + cholmod_blas.h an exact copy of CHOLMOD/Include/cholmod_blas.h umfpack_col_to_triplet.c convert col form to triplet umfpack_defaults.c set Control defaults @@ -215,7 +224,7 @@ Files and directories in the UMFPACK distribution: umf_config.h configuration file (BLAS, memory, timer) umf_internal.h definitions internal to UMFPACK - umf_version.h version definitions (int/long, real/complex) + umf_version.h version definitions (int/UF_long, real/complex) umf_2by2.[ch] umf_analyze.[ch] symbolic factorization of A'*A @@ -325,17 +334,17 @@ Files and directories in the UMFPACK distribution: umfpack_zl_demo.sed for creating umfpack_zl_demo.c umfpack_di_demo.c a full demo (real/int version) - umfpack_dl_demo.c a full demo (real/long version) + umfpack_dl_demo.c a full demo (real/UF_long version) umfpack_zi_demo.c a full demo (complex/int version) - umfpack_zl_demo.c a full demo (complex/long version) + umfpack_zl_demo.c a full demo (complex/UF_long version) - umfpack_di_demo.out umfpack_di_demo output, unmodified Make.include - umfpack_dl_demo.out umfpack_dl_demo output, unmodified Make.include - umfpack_zi_demo.out umfpack_zi_demo output, unmodified Make.include - umfpack_zl_demo.out umfpack_zl_demo output, unmodified Make.include + umfpack_di_demo.out umfpack_di_demo output + umfpack_dl_demo.out umfpack_dl_demo output + umfpack_zi_demo.out umfpack_zi_demo output + umfpack_zl_demo.out umfpack_zl_demo output umf4.c a demo (real/int) for Harwell/Boeing matrices - umf4.out output of "make hb", unmodified Make.include + umf4.out output of "make hb" HB directory of sample Harwell/Boeing matrices readhb.f reads HB matrices, keeps zero entries readhb_nozeros.f reads HB matrices, removes zero entries @@ -391,4 +400,6 @@ Files and directories in the UMFPACK distribution: Lib directory: libumfpack.a library placed here ---------------------------------------------------------------------------- + GNUmakefile a nice Makefile, for GNU make + Makefile an ugly Unix Makefile (for older make's) libumfpack.def UMPFACK definitions for Windows diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/Makefile b/deal.II/contrib/umfpack/UMFPACK/Source/Makefile index 67451d81c7..8cb88397f4 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/Makefile +++ b/deal.II/contrib/umfpack/UMFPACK/Source/Makefile @@ -66,7 +66,7 @@ INC = ../Include/umfpack.h \ $(addsuffix .h,$(UMFINT)) \ $(addprefix ../Include/, $(addsuffix .h,$(USER))) \ $(addprefix ../Include/, $(addsuffix .h,$(GENERIC))) \ - ../../AMD/Source/amd_internal.h ../../AMD/Include/amd.h + ../../AMD/Include/amd_internal.h ../../AMD/Include/amd.h #------------------------------------------------------------------------------- # object files for each version diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/cholmod_blas.h b/deal.II/contrib/umfpack/UMFPACK/Source/cholmod_blas.h new file mode 100644 index 0000000000..709f2d0132 --- /dev/null +++ b/deal.II/contrib/umfpack/UMFPACK/Source/cholmod_blas.h @@ -0,0 +1,451 @@ +/* ========================================================================== */ +/* === Include/cholmod_blas.h =============================================== */ +/* ========================================================================== */ + +/* ----------------------------------------------------------------------------- + * CHOLMOD/Include/cholmod_blas.h. + * Copyright (C) Univ. of Florida. Author: Timothy A. Davis + * CHOLMOD/Include/cholmod_blas.h is licensed under Version 2.1 of the GNU + * Lesser General Public License. See lesser.txt for a text of the license. + * CHOLMOD is also available under other licenses; contact authors for details. + * http://www.cise.ufl.edu/research/sparse + * -------------------------------------------------------------------------- */ + +/* This does not need to be included in the user's program. */ + +#ifndef CHOLMOD_BLAS_H +#define CHOLMOD_BLAS_H + +/* ========================================================================== */ +/* === Architecture ========================================================= */ +/* ========================================================================== */ + +#if defined (__sun) || defined (MSOL2) || defined (ARCH_SOL2) +#define CHOLMOD_SOL2 +#define CHOLMOD_ARCHITECTURE "Sun Solaris" + +#elif defined (__sgi) || defined (MSGI) || defined (ARCH_SGI) +#define CHOLMOD_SGI +#define CHOLMOD_ARCHITECTURE "SGI Irix" + +#elif defined (__linux) || defined (MGLNX86) || defined (ARCH_GLNX86) +#define CHOLMOD_LINUX +#define CHOLMOD_ARCHITECTURE "Linux" + +#elif defined (_AIX) || defined (MIBM_RS) || defined (ARCH_IBM_RS) +#define CHOLMOD_AIX +#define CHOLMOD_ARCHITECTURE "IBM AIX" +#define BLAS_NO_UNDERSCORE + +#elif defined (__alpha) || defined (MALPHA) || defined (ARCH_ALPHA) +#define CHOLMOD_ALPHA +#define CHOLMOD_ARCHITECTURE "Compaq Alpha" + +#elif defined (_WIN32) || defined (WIN32) || defined (_WIN64) || defined (WIN64) +#if defined (__MINGW32__) || defined (__MINGW32__) +#define CHOLMOD_MINGW +#elif defined (__CYGWIN32__) || defined (__CYGWIN32__) +#define CHOLMOD_CYGWIN +#else +#define CHOLMOD_WINDOWS +#define BLAS_NO_UNDERSCORE +#endif +#define CHOLMOD_ARCHITECTURE "Microsoft Windows" + +#elif defined (__hppa) || defined (__hpux) || defined (MHPUX) || defined (ARCH_HPUX) +#define CHOLMOD_HP +#define CHOLMOD_ARCHITECTURE "HP Unix" +#define BLAS_NO_UNDERSCORE + +#elif defined (__hp700) || defined (MHP700) || defined (ARCH_HP700) +#define CHOLMOD_HP +#define CHOLMOD_ARCHITECTURE "HP 700 Unix" +#define BLAS_NO_UNDERSCORE + +#else +/* If the architecture is unknown, and you call the BLAS, you may need to */ +/* define BLAS_BY_VALUE, BLAS_NO_UNDERSCORE, and/or BLAS_CHAR_ARG yourself. */ +#define CHOLMOD_ARCHITECTURE "unknown" +#endif + + +/* ========================================================================== */ +/* === BLAS and LAPACK names ================================================ */ +/* ========================================================================== */ + +/* Prototypes for the various versions of the BLAS. */ + +/* Determine if the 64-bit Sun Performance BLAS is to be used */ +#if defined(CHOLMOD_SOL2) && !defined(NSUNPERF) && defined(LONG) && defined(LONGBLAS) +#define SUN64 +#endif + +#ifdef SUN64 + +#define BLAS_DTRSV dtrsv_64_ +#define BLAS_DGEMV dgemv_64_ +#define BLAS_DTRSM dtrsm_64_ +#define BLAS_DGEMM dgemm_64_ +#define BLAS_DSYRK dsyrk_64_ +#define BLAS_DGER dger_64_ +#define BLAS_DSCAL dscal_64_ +#define LAPACK_DPOTRF dpotrf_64_ + +#define BLAS_ZTRSV ztrsv_64_ +#define BLAS_ZGEMV zgemv_64_ +#define BLAS_ZTRSM ztrsm_64_ +#define BLAS_ZGEMM zgemm_64_ +#define BLAS_ZHERK zherk_64_ +#define BLAS_ZGER zgeru_64_ +#define BLAS_ZSCAL zscal_64_ +#define LAPACK_ZPOTRF zpotrf_64_ + +#elif defined (BLAS_NO_UNDERSCORE) + +#define BLAS_DTRSV dtrsv +#define BLAS_DGEMV dgemv +#define BLAS_DTRSM dtrsm +#define BLAS_DGEMM dgemm +#define BLAS_DSYRK dsyrk +#define BLAS_DGER dger +#define BLAS_DSCAL dscal +#define LAPACK_DPOTRF dpotrf + +#define BLAS_ZTRSV ztrsv +#define BLAS_ZGEMV zgemv +#define BLAS_ZTRSM ztrsm +#define BLAS_ZGEMM zgemm +#define BLAS_ZHERK zherk +#define BLAS_ZGER zgeru +#define BLAS_ZSCAL zscal +#define LAPACK_ZPOTRF zpotrf + +#else + +#define BLAS_DTRSV dtrsv_ +#define BLAS_DGEMV dgemv_ +#define BLAS_DTRSM dtrsm_ +#define BLAS_DGEMM dgemm_ +#define BLAS_DSYRK dsyrk_ +#define BLAS_DGER dger_ +#define BLAS_DSCAL dscal_ +#define LAPACK_DPOTRF dpotrf_ + +#define BLAS_ZTRSV ztrsv_ +#define BLAS_ZGEMV zgemv_ +#define BLAS_ZTRSM ztrsm_ +#define BLAS_ZGEMM zgemm_ +#define BLAS_ZHERK zherk_ +#define BLAS_ZGER zgeru_ +#define BLAS_ZSCAL zscal_ +#define LAPACK_ZPOTRF zpotrf_ + +#endif + +/* ========================================================================== */ +/* === BLAS and LAPACK integer arguments ==================================== */ +/* ========================================================================== */ + +/* CHOLMOD can be compiled with -D'LONGBLAS=long' for the Sun Performance + * Library, or -D'LONGBLAS=long long' for SGI's SCSL BLAS. This defines the + * integer used in the BLAS for the cholmod_l_* routines. + * + * The "int" version of CHOLMOD always uses the "int" version of the BLAS. + */ + +#if defined (LONGBLAS) && defined (LONG) +#define BLAS_INT LONGBLAS +#else +#define BLAS_INT int +#endif + +/* If the BLAS integer is smaller than the basic CHOLMOD integer, then we need + * to check for integer overflow when converting from one to the other. If + * any integer overflows, the externally-defined blas_ok variable is set to + * FALSE. blas_ok should be set to TRUE before calling any BLAS_* macro. + */ + +#define CHECK_BLAS_INT (sizeof (BLAS_INT) < sizeof (Int)) +#define EQ(K,k) (((BLAS_INT) K) == ((Int) k)) + +/* ========================================================================== */ +/* === BLAS and LAPACK prototypes and macros ================================ */ +/* ========================================================================== */ + +void BLAS_DGEMV (char *trans, BLAS_INT *m, BLAS_INT *n, double *alpha, + double *A, BLAS_INT *lda, double *X, BLAS_INT *incx, double *beta, + double *Y, BLAS_INT *incy) ; + +#define BLAS_dgemv(trans,m,n,alpha,A,lda,X,incx,beta,Y,incy) \ +{ \ + BLAS_INT M = m, N = n, LDA = lda, INCX = incx, INCY = incy ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (M,m) && EQ (N,n) && EQ (LDA,lda) && EQ (INCX,incx) \ + && EQ (INCY,incy) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_DGEMV (trans, &M, &N, alpha, A, &LDA, X, &INCX, beta, Y, &INCY) ; \ + } \ +} + +void BLAS_ZGEMV (char *trans, BLAS_INT *m, BLAS_INT *n, double *alpha, + double *A, BLAS_INT *lda, double *X, BLAS_INT *incx, double *beta, + double *Y, BLAS_INT *incy) ; + +#define BLAS_zgemv(trans,m,n,alpha,A,lda,X,incx,beta,Y,incy) \ +{ \ + BLAS_INT M = m, N = n, LDA = lda, INCX = incx, INCY = incy ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (M,m) && EQ (N,n) && EQ (LDA,lda) && EQ (INCX,incx) \ + && EQ (INCY,incy) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_ZGEMV (trans, &M, &N, alpha, A, &LDA, X, &INCX, beta, Y, &INCY) ; \ + } \ +} + +void BLAS_DTRSV (char *uplo, char *trans, char *diag, BLAS_INT *n, double *A, + BLAS_INT *lda, double *X, BLAS_INT *incx) ; + +#define BLAS_dtrsv(uplo,trans,diag,n,A,lda,X,incx) \ +{ \ + BLAS_INT N = n, LDA = lda, INCX = incx ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (N,n) && EQ (LDA,lda) && EQ (INCX,incx) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_DTRSV (uplo, trans, diag, &N, A, &LDA, X, &INCX) ; \ + } \ +} + +void BLAS_ZTRSV (char *uplo, char *trans, char *diag, BLAS_INT *n, double *A, + BLAS_INT *lda, double *X, BLAS_INT *incx) ; + +#define BLAS_ztrsv(uplo,trans,diag,n,A,lda,X,incx) \ +{ \ + BLAS_INT N = n, LDA = lda, INCX = incx ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (N,n) && EQ (LDA,lda) && EQ (INCX,incx) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_ZTRSV (uplo, trans, diag, &N, A, &LDA, X, &INCX) ; \ + } \ +} + +void BLAS_DTRSM (char *side, char *uplo, char *transa, char *diag, BLAS_INT *m, + BLAS_INT *n, double *alpha, double *A, BLAS_INT *lda, double *B, + BLAS_INT *ldb) ; + +#define BLAS_dtrsm(side,uplo,transa,diag,m,n,alpha,A,lda,B,ldb) \ +{ \ + BLAS_INT M = m, N = n, LDA = lda, LDB = ldb ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (M,m) && EQ (N,n) && EQ (LDA,lda) && EQ (LDB,ldb) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_DTRSM (side, uplo, transa, diag, &M, &N, alpha, A, &LDA, B, &LDB);\ + } \ +} + +void BLAS_ZTRSM (char *side, char *uplo, char *transa, char *diag, BLAS_INT *m, + BLAS_INT *n, double *alpha, double *A, BLAS_INT *lda, double *B, + BLAS_INT *ldb) ; + +#define BLAS_ztrsm(side,uplo,transa,diag,m,n,alpha,A,lda,B,ldb) \ +{ \ + BLAS_INT M = m, N = n, LDA = lda, LDB = ldb ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (M,m) && EQ (N,n) && EQ (LDA,lda) && EQ (LDB,ldb) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_ZTRSM (side, uplo, transa, diag, &M, &N, alpha, A, &LDA, B, &LDB);\ + } \ +} + +void BLAS_DGEMM (char *transa, char *transb, BLAS_INT *m, BLAS_INT *n, + BLAS_INT *k, double *alpha, double *A, BLAS_INT *lda, double *B, + BLAS_INT *ldb, double *beta, double *C, BLAS_INT *ldc) ; + +#define BLAS_dgemm(transa,transb,m,n,k,alpha,A,lda,B,ldb,beta,C,ldc) \ +{ \ + BLAS_INT M = m, N = n, K = k, LDA = lda, LDB = ldb, LDC = ldc ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (M,m) && EQ (N,n) && EQ (K,k) && EQ (LDA,lda) \ + && EQ (LDB,ldb) && EQ (LDC,ldc) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_DGEMM (transa, transb, &M, &N, &K, alpha, A, &LDA, B, &LDB, beta, \ + C, &LDC) ; \ + } \ +} + +void BLAS_ZGEMM (char *transa, char *transb, BLAS_INT *m, BLAS_INT *n, + BLAS_INT *k, double *alpha, double *A, BLAS_INT *lda, double *B, + BLAS_INT *ldb, double *beta, double *C, BLAS_INT *ldc) ; + +#define BLAS_zgemm(transa,transb,m,n,k,alpha,A,lda,B,ldb,beta,C,ldc) \ +{ \ + BLAS_INT M = m, N = n, K = k, LDA = lda, LDB = ldb, LDC = ldc ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (M,m) && EQ (N,n) && EQ (K,k) && EQ (LDA,lda) \ + && EQ (LDB,ldb) && EQ (LDC,ldc) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_ZGEMM (transa, transb, &M, &N, &K, alpha, A, &LDA, B, &LDB, beta, \ + C, &LDC) ; \ + } \ +} + +void BLAS_DSYRK (char *uplo, char *trans, BLAS_INT *n, BLAS_INT *k, + double *alpha, double *A, BLAS_INT *lda, double *beta, double *C, + BLAS_INT *ldc) ; + +#define BLAS_dsyrk(uplo,trans,n,k,alpha,A,lda,beta,C,ldc) \ +{ \ + BLAS_INT N = n, K = k, LDA = lda, LDC = ldc ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (N,n) && EQ (K,k) && EQ (LDA,lda) && EQ (LDC,ldc) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_DSYRK (uplo, trans, &N, &K, alpha, A, &LDA, beta, C, &LDC) ; \ + } \ +} \ + +void BLAS_ZHERK (char *uplo, char *trans, BLAS_INT *n, BLAS_INT *k, + double *alpha, double *A, BLAS_INT *lda, double *beta, double *C, + BLAS_INT *ldc) ; + +#define BLAS_zherk(uplo,trans,n,k,alpha,A,lda,beta,C,ldc) \ +{ \ + BLAS_INT N = n, K = k, LDA = lda, LDC = ldc ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (N,n) && EQ (K,k) && EQ (LDA,lda) && EQ (LDC,ldc) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_ZHERK (uplo, trans, &N, &K, alpha, A, &LDA, beta, C, &LDC) ; \ + } \ +} \ + +void LAPACK_DPOTRF (char *uplo, BLAS_INT *n, double *A, BLAS_INT *lda, + BLAS_INT *info) ; + +#define LAPACK_dpotrf(uplo,n,A,lda,info) \ +{ \ + BLAS_INT N = n, LDA = lda, INFO = 1 ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (N,n) && EQ (LDA,lda) ; \ + } \ + if (blas_ok) \ + { \ + LAPACK_DPOTRF (uplo, &N, A, &LDA, &INFO) ; \ + } \ + info = INFO ; \ +} + +void LAPACK_ZPOTRF (char *uplo, BLAS_INT *n, double *A, BLAS_INT *lda, + BLAS_INT *info) ; + +#define LAPACK_zpotrf(uplo,n,A,lda,info) \ +{ \ + BLAS_INT N = n, LDA = lda, INFO = 1 ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (N,n) && EQ (LDA,lda) ; \ + } \ + if (blas_ok) \ + { \ + LAPACK_ZPOTRF (uplo, &N, A, &LDA, &INFO) ; \ + } \ + info = INFO ; \ +} + +/* ========================================================================== */ + +void BLAS_DSCAL (BLAS_INT *n, double *alpha, double *Y, BLAS_INT *incy) ; + +#define BLAS_dscal(n,alpha,Y,incy) \ +{ \ + BLAS_INT N = n, INCY = incy ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (N,n) && EQ (INCY,incy) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_DSCAL (&N, alpha, Y, &INCY) ; \ + } \ +} + +void BLAS_ZSCAL (BLAS_INT *n, double *alpha, double *Y, BLAS_INT *incy) ; + +#define BLAS_zscal(n,alpha,Y,incy) \ +{ \ + BLAS_INT N = n, INCY = incy ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (N,n) && EQ (INCY,incy) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_ZSCAL (&N, alpha, Y, &INCY) ; \ + } \ +} + +void BLAS_DGER (BLAS_INT *m, BLAS_INT *n, double *alpha, + double *X, BLAS_INT *incx, double *Y, BLAS_INT *incy, + double *A, BLAS_INT *lda) ; + +#define BLAS_dger(m,n,alpha,X,incx,Y,incy,A,lda) \ +{ \ + BLAS_INT M = m, N = n, LDA = lda, INCX = incx, INCY = incy ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (M,m) && EQ (N,n) && EQ (LDA,lda) && EQ (INCX,incx) \ + && EQ (INCY,incy) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_DGER (&M, &N, alpha, X, &INCX, Y, &INCY, A, &LDA) ; \ + } \ +} + +void BLAS_ZGERU (BLAS_INT *m, BLAS_INT *n, double *alpha, + double *X, BLAS_INT *incx, double *Y, BLAS_INT *incy, + double *A, BLAS_INT *lda) ; + +#define BLAS_zgeru(m,n,alpha,X,incx,Y,incy,A,lda) \ +{ \ + BLAS_INT M = m, N = n, LDA = lda, INCX = incx, INCY = incy ; \ + if (CHECK_BLAS_INT) \ + { \ + blas_ok &= EQ (M,m) && EQ (N,n) && EQ (LDA,lda) && EQ (INCX,incx) \ + && EQ (INCY,incy) ; \ + } \ + if (blas_ok) \ + { \ + BLAS_ZGER (&M, &N, alpha, X, &INCX, Y, &INCY, A, &LDA) ; \ + } \ +} + +#endif diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.c index 0e0b8a311d..42616dcf4a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -162,7 +162,7 @@ PRIVATE Int two_by_two /* returns # unmatched weak diagonals */ #endif Ri, Rp, n2, n2, Rp [n2]) ; #endif - ASSERT (AMD_valid (n2, n2, Rp, Ri)) ; + ASSERT (AMD_valid (n2, n2, Rp, Ri) == AMD_OK) ; /* ---------------------------------------------------------------------- */ /* for each weak diagonal, find a pair of strong off-diagonal entries */ @@ -435,7 +435,7 @@ GLOBAL void UMF_2by2 #ifndef NDEBUG /* UMF_debug += 99 ; */ DEBUGm3 (("\n ==================================UMF_2by2: tol %g\n", tol)) ; - ASSERT (AMD_valid (n, n, Ap, Ai)) ; + ASSERT (AMD_valid (n, n, Ap, Ai) == AMD_OK) ; for (k = n1 ; k < n - nempty ; k++) { ASSERT (Cperm1 [k] == Rperm1 [k]) ; @@ -806,7 +806,7 @@ GLOBAL void UMF_2by2 } } Cp [n2] = pp ; - ASSERT (AMD_valid (n2, n2, Cp, Ci)) ; + ASSERT (AMD_valid (n2, n2, Cp, Ci) == AMD_OK) ; if (nweak == 0) { diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.h index 4e88d1dced..3cb8b4541c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.c index 34d6b80129..7744635bf6 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.h index a1e0540082..733ba03e1c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_apply_order.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_apply_order.c index 10b6c4b8c8..8e90d3a532 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_apply_order.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_apply_order.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_apply_order.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_apply_order.h index b8e2ca4921..dd7e682e58 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_apply_order.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_apply_order.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.c index 335c89048a..8618be41f1 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.c @@ -3,13 +3,13 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ /* Degree update and numerical assembly. This is compiled twice (with and - * without FIXQ) for each real/complex int/long version, for a total of 8 + * without FIXQ) for each real/complex int/UF_long version, for a total of 8 * versions.*/ #include "umf_internal.h" diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.h index 860194aedf..e976b48541 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.c index 5aab565e2d..8ff3bc4faf 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -20,7 +20,13 @@ GLOBAL void UMF_blas3_update /* ---------------------------------------------------------------------- */ Entry *L, *U, *C, *LU ; - Int k, m, n, d, nb, dc ; + Int i, j, s, k, m, n, d, nb, dc ; + +#ifndef NBLAS + Int blas_ok = TRUE ; +#else +#define blas_ok FALSE +#endif DEBUG5 (("In UMF_blas3_update "ID" "ID" "ID"\n", Work->fnpiv, Work->fnrows, Work->fncols)) ; @@ -56,63 +62,65 @@ GLOBAL void UMF_blas3_update if (k == 1) { -#ifdef USE_NO_BLAS - - /* no BLAS available - use plain C code instead */ - Int i, j ; +#ifndef NBLAS + BLAS_GER (m, n, L, U, C, d) ; +#endif - /* rank-1 outer product to update the C block */ - for (j = 0 ; j < n ; j++) + if (!blas_ok) { - Entry u_j = U [j] ; - if (IS_NONZERO (u_j)) + /* rank-1 outer product to update the C block */ + for (j = 0 ; j < n ; j++) { - Entry *c_ij, *l_is ; - c_ij = & C [j*d] ; - l_is = & L [0] ; -#pragma ivdep - for (i = 0 ; i < m ; i++) + Entry u_j = U [j] ; + if (IS_NONZERO (u_j)) { - /* C [i+j*d]-= L [i] * U [j] */ - MULT_SUB (*c_ij, *l_is, u_j) ; - c_ij++ ; - l_is++ ; + Entry *c_ij, *l_is ; + c_ij = & C [j*d] ; + l_is = & L [0] ; +#pragma ivdep + for (i = 0 ; i < m ; i++) + { + /* C [i+j*d]-= L [i] * U [j] */ + MULT_SUB (*c_ij, *l_is, u_j) ; + c_ij++ ; + l_is++ ; + } } } } -#else - BLAS_GER (m, n, L, U, C, d) ; - -#endif /* USE_NO_BLAS */ - } else { -#ifdef USE_NO_BLAS + /* triangular solve to update the U block */ - /* no BLAS available - use plain C code instead */ - Int i, j, s ; +#ifndef NBLAS + BLAS_TRSM_RIGHT (n, k, LU, nb, U, dc) ; +#endif - /* triangular solve to update the U block */ - for (s = 0 ; s < k ; s++) + if (!blas_ok) { - for (i = s+1 ; i < k ; i++) + /* use plain C code if no BLAS at compile time, or if integer + * overflow has occurred */ + for (s = 0 ; s < k ; s++) { - Entry l_is = LU [i+s*nb] ; - if (IS_NONZERO (l_is)) + for (i = s+1 ; i < k ; i++) { - Entry *u_ij, *u_sj ; - u_ij = & U [i*dc] ; - u_sj = & U [s*dc] ; -#pragma ivdep - for (j = 0 ; j < n ; j++) + Entry l_is = LU [i+s*nb] ; + if (IS_NONZERO (l_is)) { - /* U [i*dc+j] -= LU [i+s*nb] * U [s*dc+j] ; */ - MULT_SUB (*u_ij, l_is, *u_sj) ; - u_ij++ ; - u_sj++ ; + Entry *u_ij, *u_sj ; + u_ij = & U [i*dc] ; + u_sj = & U [s*dc] ; +#pragma ivdep + for (j = 0 ; j < n ; j++) + { + /* U [i*dc+j] -= LU [i+s*nb] * U [s*dc+j] ; */ + MULT_SUB (*u_ij, l_is, *u_sj) ; + u_ij++ ; + u_sj++ ; + } } } } @@ -120,35 +128,38 @@ GLOBAL void UMF_blas3_update /* rank-k outer product to update the C block */ /* C = C - L*U' (U is stored by rows, not columns) */ - for (s = 0 ; s < k ; s++) + +#ifndef NBLAS + BLAS_GEMM (m, n, k, L, U, dc, C, d) ; +#endif + + if (!blas_ok) { - for (j = 0 ; j < n ; j++) + /* use plain C code if no BLAS at compile time, or if integer + * overflow has occurred */ + + for (s = 0 ; s < k ; s++) { - Entry u_sj = U [j+s*dc] ; - if (IS_NONZERO (u_sj)) + for (j = 0 ; j < n ; j++) { - Entry *c_ij, *l_is ; - c_ij = & C [j*d] ; - l_is = & L [s*d] ; -#pragma ivdep - for (i = 0 ; i < m ; i++) + Entry u_sj = U [j+s*dc] ; + if (IS_NONZERO (u_sj)) { - /* C [i+j*d]-= L [i+s*d] * U [s*dc+j] */ - MULT_SUB (*c_ij, *l_is, u_sj) ; - c_ij++ ; - l_is++ ; + Entry *c_ij, *l_is ; + c_ij = & C [j*d] ; + l_is = & L [s*d] ; +#pragma ivdep + for (i = 0 ; i < m ; i++) + { + /* C [i+j*d]-= L [i+s*d] * U [s*dc+j] */ + MULT_SUB (*c_ij, *l_is, u_sj) ; + c_ij++ ; + l_is++ ; + } } } } } - -#else - - BLAS_TRSM_RIGHT (n, k, LU, nb, U, dc) ; - BLAS_GEMM (m, n, k, L, U, dc, C, d) ; - -#endif /* USE_NO_BLAS */ - } #ifndef NDEBUG diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.h index 86bb8102a2..c77b9ac622 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_build_tuples.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_build_tuples.c index a570da1065..36feed66ea 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_build_tuples.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_build_tuples.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_build_tuples.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_build_tuples.h index f17e601b30..0b0410c9ee 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_build_tuples.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_build_tuples.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_colamd.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_colamd.c index 252fbfb23f..5a9b168406 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_colamd.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_colamd.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_colamd.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_colamd.h index e40f9c2e8a..51675a572d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_colamd.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_colamd.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_config.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_config.h index d73762c434..79e9f5d923 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_config.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_config.h @@ -3,63 +3,20 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ /* This file controls the compile-time configuration of UMFPACK. Modify the - Makefile, the architecture-dependent Make.* file, and this file if - necessary, to control these options. The following flags may be given - as options to your C compiler (as in "cc -DNBLAS", for example). These - flags are normally placed in your CONFIG string, defined in your Make.*. + UFconfig/UFconfig.mk file and this file if necessary, to control these + options. The following flags may be given as options to your C compiler + (as in "cc -DNSUNPERF", for example). These flags are normally placed in + your UMFPACK_CONFIG string, defined in the UFconfig/UFconfig.mk file. All of these options, except for the timer, are for accessing the BLAS. - -DNBLAS - - BLAS mode. If -DNBLAS is set, then no BLAS will be used. Vanilla - C code will be used instead. This is portable, and easier to - install, but you won't get the best performance. - - If -DNBLAS is not set, then externally-available BLAS routines - (dgemm, dger, and dgemv or the equivalent C-BLAS routines) will be - used. This will give you the best performance, but perhaps at the - expense of portability. - - The default is to use the BLAS, for both the C-callable libumfpack.a - library and the MATLAB mexFunction. If you have trouble installing - UMFPACK, set -DNBLAS (but then UMFPACK will be slow). - - -DCBLAS - - If -DCBLAS is set, then the C-BLAS interface to the BLAS is - used. If your vendor-supplied BLAS library does not have a C-BLAS - interface, you can obtain the ATLAS BLAS, available at - http://www.netlib.org/atlas. - - This flag is ignored if -DNBLAS is set. - - -DLP64 - - This should be defined if you are compiling in the LP64 model - (32 bit int's, 64 bit long's, and 64 bit pointers). In Solaris, - this is obtained with the flags -xtarget=ultra -xarch=v9 for - the cc compiler (for example). - - -DLONGBLAS - - If not defined, then the BLAS are not called in the long integer - version of UMFPACK (the umfpack_*l_* routines). The most common - definitions of the BLAS, unfortunately, use int arguments, and - are thus not suitable for use in the LP64 model. Only the Sun - Performance Library, as far as I can tell, has a version of the - BLAS that allows long integer (64-bit) input arguments. This - flag is set automatically in Sun Solaris if you are using the - Sun Performance BLAS. You can set it yourself, too, if your BLAS - routines can take long integer input arguments. - -DNSUNPERF Applies only to Sun Solaris. If -DNSUNPERF is set, then the Sun @@ -68,17 +25,7 @@ The Sun Performance Library BLAS is used by default when compiling the C-callable libumfpack.a library on Sun Solaris. - This flag is ignored if -DNBLAS is set. - - -DNSCSL - - Applies only to SGI IRIX. If -DSCSL is set, then the SGI SCSL - Scientific Library BLAS will not be used. - - The SGI SCSL Scientific Library BLAS is used by default when - compiling the C-callable libumfpack.a library on SGI IRIX. - - This flag is ignored if -DNBLAS is set. + -DLONGBLAS -DNPOSIX @@ -103,15 +50,6 @@ If -DNO_TIMER is set, then no timing routines are used at all. - -DNUTIL - - If -DNUTIL is set, then the internal MATLAB utMalloc, utFree, and - utRealloc routines are not used in the UMFPACK mexFunction. The - regular mxMalloc, mxFree, and mxRealloc routines are used instead. - These routines are not documented, but are available for use. For - Windows, -DNUTIL is defined below, because access to the ut* - routines is not available by default. - -DNRECIPROCAL This option controls a tradeoff between speed and accuracy. Using @@ -152,43 +90,19 @@ If the pivot is zero, and this flag is set, then no divide-by-zero occurs. - You should normally not set these flags yourself: - - -DBLAS_BY_VALUE if scalars are passed by value, not reference - -DBLAS_NO_UNDERSCORE if no underscore should be appended - -DBLAS_CHAR_ARG if BLAS options are single char's, not strings - - The BLAS options are normally set automatically. If your - architecture cannot be determined (see UMFPACK_ARCHITECTURE, below) - then you may need to set these flags yourself. - The following options are controlled by amd_internal.h: -DMATLAB_MEX_FILE This flag is turned on when compiling the umfpack mexFunction for - use in MATLAB. When compiling the MATLAB mexFunction, the MATLAB - BLAS are used (unless -DNBLAS is set). The -DCBLAS, -DNSCSL, and - -DNSUNPERF flags are all ignored. The -DNRECIPROCAL flag is - forced on. Otherwise, [L,U,P,Q,R] = umfpack (A) would return - either L*U = P*(R\A)*Q or L*U = P*R*A*Q. Rather than returning a - flag stating how the scale factors R are to be applied, the umfpack - mexFunction always takes the more accurate route and returns + use in MATLAB. The -DNRECIPROCAL flag is forced on (more accurate, + slightly slower). The umfpack mexFunction always returns L*U = P*(R\A)*Q. -DMATHWORKS This flag is turned on when compiling umfpack as a built-in routine - in MATLAB. The MATLAB BLAS are used for all architectures (-DNBLAS, - -DCBLAS, -DNSCSL, and -DNSUNPERF flags are all ignored). Internal - routines utMalloc, utFree, utRealloc, utPrintf, utDivideComplex, - and utFdlibm_hypot are used, and the "util.h" file is included. - This avoids the problem discussed in the User Guide regarding memory - allocation in MATLAB. utMalloc returns NULL on failure, instead of - terminating the mexFunction (which is what mxMalloc does). However, - the ut* routines are not documented by The MathWorks, Inc., so I - cannot guarantee that you will always be able to use them. - The -DNRECIPROCAL flag is turned on. + in MATLAB. The -DNRECIPROCAL flag is forced on. -DNDEBUG @@ -222,9 +136,8 @@ /* === Microsoft Windows configuration ====================================== */ /* ========================================================================== */ -#ifdef UMF_WINDOWS -/* Windows can't access the ut* routines, and it isn't Unix. */ -#define NUTIL +#if defined (UMF_WINDOWS) || defined (UMF_MINGW) +/* Windows isn't Unix. Profound. */ #define NPOSIX #endif @@ -263,7 +176,7 @@ /* Sun Solaris, SGI Irix, Linux, Compaq Alpha, and IBM RS 6000 all have */ /* getrusage. It's in BSD unix, so perhaps all unix systems have it. */ #if defined (UMF_SOL2) || defined (UMF_SGI) || defined (UMF_LINUX) \ -|| defined (UMF_ALPHA) || defined (UMF_AIX) +|| defined (UMF_ALPHA) || defined (UMF_AIX) || defined (UMF_CYGWIN) #define GETRUSAGE #endif @@ -272,648 +185,140 @@ /* === BLAS ================================================================= */ /* ========================================================================== */ -/* - The adventure begins. Figure out how to call the BLAS ... - - This works, but it is incredibly ugly. The C-BLAS was supposed to solve - this problem, and make it easier to interface a C program to the BLAS. - Unfortunately, the C-BLAS does not have a "long" integer (64 bit) version. - Various vendors have done their own 64-bit BLAS. Sun has dgemm_64 routines - with "long" integers, SGI has a 64-bit dgemm in their scsl_blas_i8 library - with "long long" integers, and so on. - - Different vendors also have different ways of defining a complex number, - some using struct's. That's a bad idea. See umf_version.h for the better - way to do it (the method that was also chosen for the complex C-BLAS, - which is compatible and guaranteed to be portable with ANSI C). - - To make matters worse, SGI's SCSL BLAS has a C-BLAS interface which - differs from the ATLAS C-BLAS interface (see immediately below); - although a more recent version of SGI's C-BLAS interface is correct - if SCSL_VOID_ARGS is defined. -*/ - - -/* -------------------------------------------------------------------------- */ -/* Determine which BLAS to use. */ -/* -------------------------------------------------------------------------- */ - -#if defined (MATHWORKS) -#define USE_MATLAB_BLAS - -#elif defined (NBLAS) -#define USE_NO_BLAS - -#elif defined (MATLAB_MEX_FILE) -#define USE_MATLAB_BLAS - -#elif defined (CBLAS) -#define USE_C_BLAS - -#elif defined (UMF_SOL2) && !defined (NSUNPERF) -#define USE_SUNPERF_BLAS - -#elif defined (UMF_SGI) && !defined (NSCSL) -#define USE_SCSL_BLAS - -#else -#define USE_FORTRAN_BLAS -#endif - -/* -------------------------------------------------------------------------- */ -/* int vs. long integer arguments */ -/* -------------------------------------------------------------------------- */ - -/* - Determine if the BLAS exists for the long integer version. It exists if - LONGBLAS is defined in the Makefile, or if using the BLAS from the - Sun Performance Library, or SGI's SCSL Scientific Library. -*/ - -#if defined (USE_SUNPERF_BLAS) || defined (USE_SCSL_BLAS) -#ifndef LONGBLAS -#define LONGBLAS -#endif -#endif - -/* do not use the BLAS if Int's are long and LONGBLAS is not defined */ -#if defined (LONG_INTEGER) && !defined (LONGBLAS) && !defined (USE_NO_BLAS) -#define USE_NO_BLAS -#endif +#include "cholmod_blas.h" /* -------------------------------------------------------------------------- */ -/* Use (void *) arguments for the SGI */ +/* DGEMM */ /* -------------------------------------------------------------------------- */ -#if defined (UMF_SGI) -/* - Use (void *) pointers for complex types in SCSL. - The ATLAS C-BLAS, and the SGI C-BLAS differ. The former uses (void *) - arguments, the latter uses SCSL_ZOMPLEX_T, which are either scsl_zomplex - or (void *). Using (void *) is simpler, and is selected by defining - SCSL_VOID_ARGS, below. The cc compiler doesn't complain, but gcc is - more picky, and generates a warning without this next statement. - With gcc and the 07/09/98 version of SGI's cblas.h, spurious warnings - about complex BLAS arguments will be reported anyway. This is because this - older version of SGI's cblas.h does not make use of the SCSL_VOID_ARGS - parameter, which is present in the 12/6/01 version of SGI's cblas.h. You - can safely ignore these warnings. -*/ -#define SCSL_VOID_ARGS -#endif - - -/* -------------------------------------------------------------------------- */ -/* The BLAS exists, construct appropriate macros */ -/* -------------------------------------------------------------------------- */ - -#if !defined (USE_NO_BLAS) /* { */ - -/* - If the compile-time flag -DNBLAS is defined, then the BLAS are not used, - portable vanilla C code is used instead, and the remainder of this file - is ignored. - - Using the BLAS is much faster, but how C calls the Fortran BLAS is - machine-dependent and thus can cause portability problems. Thus, use - -DNBLAS to ensure portability (at the expense of speed). - - Preferences: - - *** The best interface to use, regardless of the option you select - below, is the standard C-BLAS interface. Not all BLAS libraries - use this interface. The only problem with this interface is that - it does not extend to the LP64 model. The C-BLAS does not provide - for a 64-bit integer. In addition, SGI's older cblas.h can cause - spurious warnings when using the C-BLAS interface. - - 1) often the most preferred (but see option (3)): use the - optimized vendor-supplied library (such as the Sun Performance - Library, or IBM's ESSL). This is often the fastest, but might not - be portable and might not always be available. When compiling a - MATLAB mexFunction it might be difficult get the mex compiler - script to recognize the vendor- supplied BLAS. Note that the - freely-available BLAS (option 3) can be faster than the vendor- - specific BLAS. You are encourage to try both option (1) and (3). - - 2) When compiling the UMFPACK mexFunction to use UMFPACK in MATLAB, use - the BLAS provided by The Mathworks, Inc. This assumes you are using - MATLAB V6 or higher, since the BLAS are not incorporated in V5 or - earlier versions. On my Sun workstation, the MATLAB BLAS gave - slightly worse performance than the Sun Perf. BLAS. The advantage - of using the MATLAB BLAS is that it's available on any computer that - has MATLAB V6 or higher. I have not tried using MATLAB BLAS outside - of a mexFunction in a stand-alone C code, but MATLAB (V6) allows for - this. This is well worth trying if you have MATLAB and don't want - to bother installing the ATLAS BLAS (option 3a, below). The only - glitch to this is that MATLAB does not provide a portable interface - to the BLAS (an underscore is required for some but not all - architectures). For Windows and MATLAB 6.0 or 6.1, you also need - to copy the libmwlapack.dll file into your MATLAB installation - directory; see the User Guide for details. - - In the current distribution, the only BLAS that the UMFPACK - mexFunction will use is the internal MATLAB BLAS. It's possible to - use other BLAS, but handling the porting of using the mex compiler - with different BLAS libraries is not trivial. - - As of MATLAB 6.5, the BLAS used internally in MATLAB is the ATLAS - BLAS. - - 3) Use a freely-available high-performance BLAS library: - - (a) The BLAS by Kazashige Goto and Robert van de Geijn, at - http://www.cs.utexas.edu/users/flame/goto. This BLAS increased - the performance of UMFPACK by almost 50% as compared to the - ATLAS BLAS (v3.2). - - (b) The ATLAS BLAS, available at http://www.netlib.org/atlas, - by R. Clint Whaley, Antoine Petitet, and Jack Dongarra. - This has a standard C interface, and thus the interface to it is - fully portable. Its performance rivals, and sometimes exceeds, - the vendor-supplied BLAS on many computers. - - (b) The Fortran RISC BLAS by Michel Dayde', Iain Duff, Antoine - Petitet, and Abderrahim Qrichi Aniba, available via anonymous - ftp to ftp.enseeiht.fr in the pub/numerique/BLAS/RISC directory, - See M. J. Dayde' and I. S. Duff, "The RISC BLAS: A blocked - implementation of level 3 BLAS for RISC processors, ACM Trans. - Math. Software, vol. 25, no. 3., Sept. 1999. This will give - you good performance, but with the same C-to-Fortran portability - problems as option (1). - - 4) Use UMFPACK's built-in vanilla C code by setting -DNBLAS at compile - time. The key advantage is portability, which is guaranteed if you - have an ANSI C compliant compiler. You also don't need to download - any other package - UMFPACK is stand-alone. No Fortran is used - anywhere in UMFPACK. UMFPACK will be much slower than when using - options (1) through (3), however. - - 5) least preferred: use the standard Fortran implementation of the - BLAS, also available at Netlib (http://www.netlib.org/blas). This - will be no faster than option (4), and not portable because of - C-to-Fortran calling conventions. Don't bother trying option (5). - - The mechanics of how C calls the BLAS on various computers are as follows: - - * C-BLAS (from the ATLAS library, for example): - The same interface is used on all computers. - - * Defaults for calling the Fortran BLAS: - add underscore, pass scalars by reference, use string arguments. - - * The Fortran BLAS on Sun Solaris (when compiling the MATLAB mexFunction - or when using the Fortran RISC BLAS), SGI IRIX, Linux, and Compaq - Alpha: use defaults. - - * Sun Solaris (when using the C-callable Sun Performance library): - no underscore, pass scalars by value, use character arguments. - - * The Fortran BLAS (ESSL Library) on the IBM RS 6000, and HP Unix: - no underscore, pass scalars by reference, use string arguments. - - * The Fortran BLAS on Windows: - no underscore, pass scalars by reference, use string arguments. - If you compile the umfpack mexFunction using umfpack_make, and are - using the lcc compiler bundled with MATLAB, then you must first - copy the umfpack\lcc_lib\libmwlapack.lib file into the - \extern\lib\win32\lcc\ directory, where is the - directory in which MATLAB is installed. Next, type mex -setup - at the MATLAB prompt, and ask MATLAB to select the lcc compiler. - MATLAB has built-in BLAS, but it cannot be accessed by a program - compiled by lcc without first copying this file. -*/ - - - -/* -------------------------------------------------------------------------- */ -#ifdef USE_C_BLAS /* { */ -/* -------------------------------------------------------------------------- */ - - -/* -------------------------------------------------------------------------- */ -/* use the C-BLAS (any computer) */ -/* -------------------------------------------------------------------------- */ - -/* - C-BLAS is the default interface, with the following exceptions. Solaris - uses the Sun Performance BLAS for libumfpack.a (the C-callable library). - SGI IRIX uses the SCSL BLAS for libumfpack.a. All architectures use - MATLAB's internal BLAS for the mexFunction on any architecture. These - options are set in the Make.* files. The Make.generic file uses no BLAS - at all. - - If you use the ATLAS C-BLAS, then be sure to set the -I flag to - -I/path/ATLAS/include, where /path/ATLAS is the ATLAS installation - directory. See Make.solaris for an example. You do not need to do this - for the SGI, which has a /usr/include/cblas.h. -*/ - -#include "cblas.h" - -#ifdef COMPLEX -#define BLAS_GEMM_ROUTINE cblas_zgemm -#define BLAS_TRSM_ROUTINE cblas_ztrsm -#define BLAS_TRSV_ROUTINE cblas_ztrsv -#define BLAS_GEMV_ROUTINE cblas_zgemv -#define BLAS_GER_ROUTINE cblas_zgeru -#define BLAS_SCAL_ROUTINE cblas_zscal -#define BLAS_COPY_ROUTINE cblas_zcopy -#define BLAS_DECLARE_SCALAR(x) double x [2] -#define BLAS_ASSIGN(x,xr,xi) { x [0] = xr ; x [1] = xi ; } -#else -#define BLAS_GEMM_ROUTINE cblas_dgemm -#define BLAS_TRSM_ROUTINE cblas_dtrsm -#define BLAS_TRSV_ROUTINE cblas_dtrsv -#define BLAS_GEMV_ROUTINE cblas_dgemv -#define BLAS_GER_ROUTINE cblas_dger -#define BLAS_SCAL_ROUTINE cblas_dscal -#define BLAS_COPY_ROUTINE cblas_dcopy -#define BLAS_DECLARE_SCALAR(x) double x -#define BLAS_ASSIGN(x,xr,xi) { x = xr ; } -#endif - -#define BLAS_LOWER CblasLower -#define BLAS_UNIT_DIAGONAL CblasUnit -#define BLAS_RIGHT CblasRight -#define BLAS_NO_TRANSPOSE CblasNoTrans -#define BLAS_TRANSPOSE CblasTrans -#define BLAS_COLUMN_MAJOR_ORDER CblasColMajor, -#define BLAS_SCALAR(x) x -#define BLAS_INT_SCALAR(n) n -#define BLAS_ARRAY(a) a - - - -/* -------------------------------------------------------------------------- */ -#else /* } USE_C_BLAS { */ -/* -------------------------------------------------------------------------- */ - -/* -------------------------------------------------------------------------- */ -/* use Fortran (or other architecture-specific) BLAS */ -/* -------------------------------------------------------------------------- */ - -/* No such argument when not using the C-BLAS */ -#define BLAS_COLUMN_MAJOR_ORDER - -/* Determine which architecture we're on and set options accordingly. */ -/* The default, if nothing is defined is to add an underscore, */ -/* pass scalars by reference, and use string arguments. */ - -/* ---------------------------------- */ -/* Sun Performance BLAS */ -/* ---------------------------------- */ - -#ifdef USE_SUNPERF_BLAS -#ifdef _SUNPERF_H -/* has been included somehow anyway, outside of umf_config.h */ -#error "sunperf.h must NOT be #include'd. See umf_config.h for details." -#endif -#define BLAS_BY_VALUE -#define BLAS_NO_UNDERSCORE -#define BLAS_CHAR_ARG -#endif /* USE_SUNPERF_BLAS */ - -/* ---------------------------------- */ -/* SGI SCSL BLAS */ -/* ---------------------------------- */ - -#ifdef USE_SCSL_BLAS -#if defined (LP64) -#include -#else -#include -#endif -#define BLAS_BY_VALUE -#define BLAS_NO_UNDERSCORE -#endif /* USE_SCSL_BLAS */ - -/* ---------------------------------- */ -/* IBM AIX, Windows, and HP Fortran BLAS */ -/* ---------------------------------- */ - -#if defined (UMF_AIX) || defined (UMF_WINDOWS) || defined (UMF_HP) -#define BLAS_NO_UNDERSCORE -#endif - - -/* -------------------------------------------------------------------------- */ -/* BLAS names */ -/* -------------------------------------------------------------------------- */ - -#if defined (LP64) && defined (USE_SUNPERF_BLAS) && defined (LONG_INTEGER) - -/* 64-bit sunperf BLAS, for Sun Solaris only */ -#ifdef COMPLEX -#define BLAS_GEMM_ROUTINE zgemm_64 -#define BLAS_TRSM_ROUTINE ztrsm_64 -#define BLAS_TRSV_ROUTINE ztrsv_64 -#define BLAS_GEMV_ROUTINE zgemv_64 -#define BLAS_GER_ROUTINE zgeru_64 -#define BLAS_SCAL_ROUTINE zscal_64 -#define BLAS_COPY_ROUTINE zcopy_64 -#else -#define BLAS_GEMM_ROUTINE dgemm_64 -#define BLAS_TRSM_ROUTINE dtrsm_64 -#define BLAS_TRSV_ROUTINE dtrsv_64 -#define BLAS_GEMV_ROUTINE dgemv_64 -#define BLAS_GER_ROUTINE dger_64 -#define BLAS_SCAL_ROUTINE dscal_64 -#define BLAS_COPY_ROUTINE dcopy_64 -#endif /* COMPLEX */ - -#else - +/* C = C - A*B', where: + * A is m-by-k with leading dimension ldac + * B is k-by-n with leading dimension ldb + * C is m-by-n with leading dimension ldac */ #ifdef COMPLEX - -/* naming convention (use underscore, or not) */ -#ifdef BLAS_NO_UNDERSCORE -#define BLAS_GEMM_ROUTINE zgemm -#define BLAS_TRSM_ROUTINE ztrsm -#define BLAS_TRSV_ROUTINE ztrsv -#define BLAS_GEMV_ROUTINE zgemv -#define BLAS_GER_ROUTINE zgeru -#define BLAS_SCAL_ROUTINE zscal -#define BLAS_COPY_ROUTINE zcopy -#else -/* default: add underscore */ -#define BLAS_GEMM_ROUTINE zgemm_ -#define BLAS_TRSM_ROUTINE ztrsm_ -#define BLAS_TRSV_ROUTINE ztrsv_ -#define BLAS_GEMV_ROUTINE zgemv_ -#define BLAS_GER_ROUTINE zgeru_ -#define BLAS_SCAL_ROUTINE zscal_ -#define BLAS_COPY_ROUTINE zcopy_ -#endif - -#else - -/* naming convention (use underscore, or not) */ -#ifdef BLAS_NO_UNDERSCORE -#define BLAS_GEMM_ROUTINE dgemm -#define BLAS_TRSM_ROUTINE dtrsm -#define BLAS_TRSV_ROUTINE dtrsv -#define BLAS_GEMV_ROUTINE dgemv -#define BLAS_GER_ROUTINE dger -#define BLAS_SCAL_ROUTINE dscal -#define BLAS_COPY_ROUTINE dcopy +#define BLAS_GEMM(m,n,k,A,B,ldb,C,ldac) \ +{ \ + double alpha [2] = {-1,0}, beta [2] = {1,0} ; \ + BLAS_zgemm ("N", "T", m, n, k, alpha, (double *) A, ldac, \ + (double *) B, ldb, beta, (double *) C, ldac) ; \ +} #else -/* default: add underscore */ -#define BLAS_GEMM_ROUTINE dgemm_ -#define BLAS_TRSM_ROUTINE dtrsm_ -#define BLAS_TRSV_ROUTINE dtrsv_ -#define BLAS_GEMV_ROUTINE dgemv_ -#define BLAS_GER_ROUTINE dger_ -#define BLAS_SCAL_ROUTINE dscal_ -#define BLAS_COPY_ROUTINE dcopy_ +#define BLAS_GEMM(m,n,k,A,B,ldb,C,ldac) \ +{ \ + double alpha = -1, beta = 1 ; \ + BLAS_dgemm ("N", "T", m, n, k, &alpha, A, ldac, B, ldb, &beta, C, ldac) ; \ +} #endif -#endif /* COMPLEX */ - -#endif /* LP64 && USE_SUNPERF_BLAS */ - /* -------------------------------------------------------------------------- */ -/* BLAS real or complex floating-point scalars */ +/* GER */ /* -------------------------------------------------------------------------- */ +/* A = A - x*y', where: + * A is m-by-n with leading dimension d + x is a column vector with stride 1 + y is a column vector with stride 1 */ #ifdef COMPLEX - -/* - The SunPerf BLAS expects to see a doublecomplex scalar, but it - also will accept an array of size 2. See the manual, normally at - file:///opt/SUNWspro/WS6U1/lib/locale/C/html/manuals/perflib/user_guide - /plug_using_perflib.html . This manual is inconsistent with the man pages - for zgemm, zgemv, and zgeru and also inconsistent with the - include file. Use this instead, for SunPerf (only works if you do NOT - include sunperf.h). Fortunately, this file (umf_config.h) is not included - in any user code that calls UMFPACK. Thus, the caller may include - sunperf.h in his or her own code, and that is safely ignored here. - SGI's SCSL BLAS has yet a different kind of struct, but we can use a - double array of size 2 instead (since SCSL_VOID_ARGS is defined). - Most BLAS expect complex scalars as pointers to double arrays of size 2. -*/ - -#define BLAS_DECLARE_SCALAR(x) double x [2] -#define BLAS_ASSIGN(x,xr,xi) { x [0] = xr ; x [1] = xi ; } -#define BLAS_SCALAR(x) x - -#else - -#define BLAS_DECLARE_SCALAR(x) double x -#define BLAS_ASSIGN(x,xr,xi) { x = xr ; } -#ifdef BLAS_BY_VALUE -#define BLAS_SCALAR(x) x -#else -#define BLAS_SCALAR(x) &(x) -#endif - -#endif /* COMPLEX */ - - -/* -------------------------------------------------------------------------- */ -/* BLAS integer scalars */ -/* -------------------------------------------------------------------------- */ - -/* - Fortran requires integers to be passed by reference. - The SCSL BLAS requires long long arguments in LP64 mode. -*/ - -#if defined (USE_SCSL_BLAS) && defined (LP64) -#define BLAS_INT_SCALAR(n) ((long long) n) -#else -#ifdef BLAS_BY_VALUE -#define BLAS_INT_SCALAR(n) n -#else -#define BLAS_INT_SCALAR(n) &(n) -#endif -#endif - - -/* -------------------------------------------------------------------------- */ -/* BLAS strings */ -/* -------------------------------------------------------------------------- */ - -/* - The Sun Performance BLAS wants a character instead of a string. -*/ - -#ifdef BLAS_CHAR_ARG -#define BLAS_NO_TRANSPOSE 'N' -#define BLAS_TRANSPOSE 'T' -#define BLAS_LEFT 'L' -#define BLAS_RIGHT 'R' -#define BLAS_LOWER 'L' -#define BLAS_UNIT_DIAGONAL 'U' +#define BLAS_GER(m,n,x,y,A,d) \ +{ \ + double alpha [2] = {-1,0} ; \ + BLAS_zgeru (m, n, alpha, (double *) x, 1, (double *) y, 1, \ + (double *) A, d) ; \ +} #else -#define BLAS_NO_TRANSPOSE "N" -#define BLAS_TRANSPOSE "T" -#define BLAS_LEFT "L" -#define BLAS_RIGHT "R" -#define BLAS_LOWER "L" -#define BLAS_UNIT_DIAGONAL "U" +#define BLAS_GER(m,n,x,y,A,d) \ +{ \ + double alpha = -1 ; \ + BLAS_dger (m, n, &alpha, x, 1, y, 1, A, d) ; \ +} #endif /* -------------------------------------------------------------------------- */ -/* BLAS arrays */ +/* GEMV */ /* -------------------------------------------------------------------------- */ -/* - The complex SunPerf BLAS expects to see a doublecomplex array of size s. - This is broken (see above, regarding complex scalars in sunperf.h). - For SunPerf BLAS, just pass a pointer to the array, and ignore sunperf.h. - With sunperf.h, you would need: - - #define BLAS_ARRAY(a) ((doublecomplex *)(a)) - - SGI's SCSL BLAS has yet a different kind of struct, but we can use a - double array of size 2 instead (since SCSL_VOID_ARGS is defined). - - The real versions all use just a (double *) pointer. - - In all cases, no typecast is required. This will break if is - included. - - If you have read this far, I hope you see now why (void *) a much better - choice for complex BLAS prototypes, and why double x [2] is better than - an architecture dependent struct { double real ; double imag ; } - type definition. - -*/ - -#define BLAS_ARRAY(a) (a) - - -/* -------------------------------------------------------------------------- */ -#endif /* USE_C_BLAS } */ -/* -------------------------------------------------------------------------- */ - - - - - -/* -------------------------------------------------------------------------- */ -/* BLAS macros, for all interfaces */ -/* -------------------------------------------------------------------------- */ - -/* - All architecture dependent issues have now been taken into consideration, - and folded into the macros BLAS_DECLARE_SCALAR, BLAS_ASSIGN, BLAS_*_ROUTINE, - BLAS_COLUMN_MAJOR_ORDER, BLAS_NO_TRANSPOSE, BLAS_TRANSPOSE, BLAS_SCALAR, - BLAS_INT_SCALAR, BLAS_ARRAY, and Int. - - You will note that there is not a *** single *** name, declaration, or - argument to the BLAS which is not somehow different in one or more versions - of the BLAS! -*/ - - -/* C = C - A*B', where: - * A is m-by-k with leading dimension ldac - * B is k-by-n with leading dimension ldb - * C is m-by-n with leading dimension ldac */ -#define BLAS_GEMM(m,n,k,A,B,ldb,C,ldac) \ -{ \ - BLAS_DECLARE_SCALAR (alpha) ; \ - BLAS_DECLARE_SCALAR (beta) ; \ - BLAS_ASSIGN (alpha, -1.0, 0.0) ; \ - BLAS_ASSIGN (beta, 1.0, 0.0) ; \ - (void) BLAS_GEMM_ROUTINE (BLAS_COLUMN_MAJOR_ORDER \ - BLAS_NO_TRANSPOSE, BLAS_TRANSPOSE, \ - BLAS_INT_SCALAR (m), BLAS_INT_SCALAR (n), BLAS_INT_SCALAR (k), \ - BLAS_SCALAR (alpha), \ - BLAS_ARRAY (A), BLAS_INT_SCALAR (ldac), \ - BLAS_ARRAY (B), BLAS_INT_SCALAR (ldb), BLAS_SCALAR (beta), \ - BLAS_ARRAY (C), BLAS_INT_SCALAR (ldac)) ; \ -} - -/* A = A - x*y', where: - * A is m-by-n with leading dimension d +/* y = y - A*x, where A is m-by-n with leading dimension d, x is a column vector with stride 1 y is a column vector with stride 1 */ -#define BLAS_GER(m,n,x,y,A,d) \ +#ifdef COMPLEX +#define BLAS_GEMV(m,n,A,x,y,d) \ { \ - Int one = 1 ; \ - BLAS_DECLARE_SCALAR (alpha) ; \ - BLAS_ASSIGN (alpha, -1.0, 0.0) ; \ - (void) BLAS_GER_ROUTINE (BLAS_COLUMN_MAJOR_ORDER \ - BLAS_INT_SCALAR (m), BLAS_INT_SCALAR (n), \ - BLAS_SCALAR (alpha), \ - BLAS_ARRAY (x), BLAS_INT_SCALAR (one), \ - BLAS_ARRAY (y), BLAS_INT_SCALAR (one), \ - BLAS_ARRAY (A), BLAS_INT_SCALAR (d)) ; \ + double alpha [2] = {-1,0}, beta [2] = {1,0} ; \ + BLAS_zgemv ("N", m, n, alpha, (double *) A, d, (double *) x, 1, beta, \ + (double *) y, 1) ; \ } - -/* y = y - A*x, where A is m-by-n with leading dimension d, - x is a column vector with stride 1 - y is a column vector with stride 1 */ +#else #define BLAS_GEMV(m,n,A,x,y,d) \ { \ - Int one = 1 ; \ - BLAS_DECLARE_SCALAR (alpha) ; \ - BLAS_DECLARE_SCALAR (beta) ; \ - BLAS_ASSIGN (alpha, -1.0, 0.0) ; \ - BLAS_ASSIGN (beta, 1.0, 0.0) ; \ - (void) BLAS_GEMV_ROUTINE (BLAS_COLUMN_MAJOR_ORDER \ - BLAS_NO_TRANSPOSE, \ - BLAS_INT_SCALAR (m), BLAS_INT_SCALAR (n), \ - BLAS_SCALAR (alpha), \ - BLAS_ARRAY (A), BLAS_INT_SCALAR (d), \ - BLAS_ARRAY (x), BLAS_INT_SCALAR (one), BLAS_SCALAR (beta), \ - BLAS_ARRAY (y), BLAS_INT_SCALAR (one)) ; \ + double alpha = -1, beta = 1 ; \ + BLAS_dgemv ("N", m, n, &alpha, A, d, x, 1, &beta, y, 1) ; \ } +#endif +/* -------------------------------------------------------------------------- */ +/* TRSV */ +/* -------------------------------------------------------------------------- */ + /* solve Lx=b, where: * B is a column vector (m-by-1) with leading dimension d * A is m-by-m with leading dimension d */ +#ifdef COMPLEX +#define BLAS_TRSV(m,A,b,d) \ +{ \ + BLAS_ztrsv ("L", "N", "U", m, (double *) A, d, (double *) b, 1) ; \ +} +#else #define BLAS_TRSV(m,A,b,d) \ { \ - Int one = 1 ; \ - (void) BLAS_TRSV_ROUTINE (BLAS_COLUMN_MAJOR_ORDER \ - BLAS_LOWER, BLAS_NO_TRANSPOSE, BLAS_UNIT_DIAGONAL, \ - BLAS_INT_SCALAR (m), \ - BLAS_ARRAY (A), BLAS_INT_SCALAR (d), \ - BLAS_ARRAY (b), BLAS_INT_SCALAR (one)) ; \ + BLAS_dtrsv ("L", "N", "U", m, A, d, b, 1) ; \ } +#endif + + +/* -------------------------------------------------------------------------- */ +/* TRSM */ +/* -------------------------------------------------------------------------- */ /* solve XL'=B where: * B is m-by-n with leading dimension ldb * A is n-by-n with leading dimension lda */ +#ifdef COMPLEX #define BLAS_TRSM_RIGHT(m,n,A,lda,B,ldb) \ { \ - BLAS_DECLARE_SCALAR (alpha) ; \ - BLAS_ASSIGN (alpha, 1.0, 0.0) ; \ - (void) BLAS_TRSM_ROUTINE (BLAS_COLUMN_MAJOR_ORDER \ - BLAS_RIGHT, BLAS_LOWER, BLAS_TRANSPOSE, BLAS_UNIT_DIAGONAL, \ - BLAS_INT_SCALAR (m), BLAS_INT_SCALAR (n), \ - BLAS_SCALAR (alpha), \ - BLAS_ARRAY (A), BLAS_INT_SCALAR (lda), \ - BLAS_ARRAY (B), BLAS_INT_SCALAR (ldb)) ; \ + double alpha [2] = {1,0} ; \ + BLAS_ztrsm ("R", "L", "T", "U", m, n, alpha, (double *) A, lda, \ + (double *) B, ldb) ; \ } +#else +#define BLAS_TRSM_RIGHT(m,n,A,lda,B,ldb) \ +{ \ + double alpha = 1 ; \ + BLAS_dtrsm ("R", "L", "T", "U", m, n, &alpha, A, lda, B, ldb) ; \ +} +#endif + + +/* -------------------------------------------------------------------------- */ +/* SCAL */ +/* -------------------------------------------------------------------------- */ /* x = s*x, where x is a stride-1 vector of length n */ +#ifdef COMPLEX #define BLAS_SCAL(n,s,x) \ { \ - Int one = 1 ; \ - BLAS_DECLARE_SCALAR (alpha) ; \ - BLAS_ASSIGN (alpha, REAL_COMPONENT (s), IMAG_COMPONENT (s)) ; \ - (void) BLAS_SCAL_ROUTINE ( \ - BLAS_INT_SCALAR (n), BLAS_SCALAR (alpha), \ - BLAS_ARRAY (x), BLAS_INT_SCALAR (one)) ; \ + double alpha [2] ; \ + alpha [0] = REAL_COMPONENT (s) ; \ + alpha [1] = IMAG_COMPONENT (s) ; \ + BLAS_zscal (n, alpha, (double *) x, 1) ; \ } - -/* x = y, where x and y are a stride-1 vectors of length n */ -#define BLAS_COPY(n,x,y) \ +#else +#define BLAS_SCAL(n,s,x) \ { \ - Int one = 1 ; \ - (void) BLAS_COPY_ROUTINE ( \ - BLAS_INT_SCALAR (n), \ - BLAS_ARRAY (x), BLAS_INT_SCALAR (one), \ - BLAS_ARRAY (y), BLAS_INT_SCALAR (one)) ; \ + double alpha = REAL_COMPONENT (s) ; \ + BLAS_dscal (n, &alpha, (double *) x, 1) ; \ } - -#endif /* !defined (USE_NO_BLAS) } */ +#endif diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.c index d6eb1157c8..581ba62d9b 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -300,18 +300,6 @@ GLOBAL Int UMF_create_element for (j = 0 ; j < fncols ; j++) { copy_column (fnrows, Fcol, C) ; -#if 0 -#ifdef USE_NO_BLAS - copy_column (fnrows, Fcol, C) ; -#else - could also use BLAS-COPY (fnrows, Fcol, C) here, but it is typically - not as fast as the inlined copy_column subroutine, above. -#endif - for (i = 0 ; i < fnrows ; i++) - { - C [i] = Fcol [i] ; - } -#endif Fcol += fnr_curr ; C += fnrows ; } diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.h index c407f1c067..b6025bb02c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.c index 4f197b9bbd..888a31661d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -1061,28 +1061,12 @@ GLOBAL void UMF_dump_start DEBUG0 (("umfpack: debug version (SLOW!) ")) ; - DEBUG0 ((" BLAS: ")) ; - -#if defined (USE_NO_BLAS) - DEBUG0 (("none.")) ; -#elif defined (USE_C_BLAS) - DEBUG0 (("C-BLAS.")) ; -#elif defined (USE_MATLAB_BLAS) - DEBUG0 (("built-in MATLAB BLAS.")) ; -#elif defined (USE_SUNPERF_BLAS) - DEBUG0 (("Sun Performance Library BLAS.")) ; -#elif defined (USE_SCSL_BLAS) - DEBUG0 (("SGI SCSL BLAS.")) ; -#elif defined (USE_FORTRAN_BLAS) - DEBUG0 (("Fortran BLAS.")) ; -#endif - DEBUG0 ((" MATLAB: ")) ; #ifdef MATLAB_MEX_FILE DEBUG0 (("mexFunction.\n")) ; #else #ifdef MATHWORKS - DEBUG0 (("yes (uses MathWorks internal ut* routines).\n")) ; + DEBUG0 (("yes.\n")) ; #else DEBUG0 (("no.\n")) ; #endif @@ -1107,8 +1091,8 @@ GLOBAL void UMF_dump_start sizeof (int), sizeof (int) / sizeof (int), UNITS (int, 1) )) ; DEBUG2 (("sizeof (size_t) %u %u %u\n", sizeof (size_t), sizeof (size_t) / sizeof (size_t), UNITS (size_t, 1) )) ; - DEBUG2 (("sizeof (long) %u %u %u\n", - sizeof (long), sizeof (long) / sizeof (long), UNITS (long, 1) )) ; + DEBUG2 (("sizeof (UF_long) %u %u %u\n", + sizeof (UF_long), sizeof (UF_long) / sizeof (UF_long), UNITS (UF_long, 1))); DEBUG2 (("sizeof (double) %u %u %u\n", sizeof (double), sizeof (double) / sizeof (int), UNITS (double, 1) )) ; DEBUG2 (("sizeof (Unit) %u %u %u\n", diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.h index 71f11128fe..71ec7450fa 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -109,9 +109,14 @@ GLOBAL void UMF_dump_diagonal_map ) ; #define UMF_DBMAX 50000 -GLOBAL extern Int UMF_debug ; -GLOBAL extern Int UMF_allocfail ; -GLOBAL extern double UMF_gprob ; + +#ifndef EXTERN +#define EXTERN extern +#endif + +GLOBAL EXTERN Int UMF_debug ; +GLOBAL EXTERN Int UMF_allocfail ; +GLOBAL EXTERN double UMF_gprob ; #define DEBUGk(k,params) { if (UMF_debug >= (k)) { PRINTF (params) ; } } diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.c index 9a61fcc324..08cdc38906 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.h index afccb8444f..6c51986cb8 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.c index c1e02beca4..b5321f7281 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -29,8 +29,8 @@ GLOBAL void *UMF_free if (p) { - /* see umf_config.h for the memory allocator selection */ - FREE (p) ; + /* see AMD/Source/amd_global.c for the memory allocator selection */ + amd_free (p) ; #if defined (UMF_MALLOC_COUNT) || !defined (NDEBUG) /* One more object has been free'd. Keep track of the count. */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.h index f5987312f7..cacf3317ab 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_fsize.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_fsize.c index c7f6056f65..d464071b72 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_fsize.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_fsize.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_fsize.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_fsize.h index 757cbf38db..1bd83d42fb 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_fsize.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_fsize.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_garbage_collection.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_garbage_collection.c index b4188823ea..73c40f1064 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_garbage_collection.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_garbage_collection.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_garbage_collection.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_garbage_collection.h index 6445bfdd8c..9d2d8b7bf7 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_garbage_collection.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_garbage_collection.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_get_memory.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_get_memory.c index abe201613c..01bc940d78 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_get_memory.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_get_memory.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_get_memory.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_get_memory.h index 4b5bb3e710..317d97aa68 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_get_memory.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_get_memory.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_grow_front.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_grow_front.c index 8a7a01e777..566b2b748a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_grow_front.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_grow_front.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_grow_front.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_grow_front.h index b95be62e1e..8078897915 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_grow_front.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_grow_front.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_init_front.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_init_front.c index e9fab62236..c8344db53f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_init_front.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_init_front.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_init_front.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_init_front.h index 67039cb2de..9801b7280c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_init_front.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_init_front.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_internal.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_internal.h index 5a0e3014d9..cd46b03298 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_internal.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_internal.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -54,8 +54,14 @@ #define UMF_ALPHA #define UMFPACK_ARCHITECTURE "Compaq Alpha" -#elif defined (__WIN32) || defined (_WIN32) || defined (_win32) || defined (__win32) || defined (WIN32) +#elif defined (_WIN32) || defined (WIN32) +#if defined (__MINGW32__) +#define UMF_MINGW +#elif defined (__CYGWIN32__) +#define UMF_CYGWIN +#else #define UMF_WINDOWS +#endif #define UMFPACK_ARCHITECTURE "Microsoft Windows" #elif defined (__hppa) || defined (__hpux) || defined (MHPUX) || defined (ARCH_HPUX) @@ -83,12 +89,21 @@ /* AMD include file */ /* -------------------------------------------------------------------------- */ -/* stdio.h, stdlib.h, limits.h, and math.h, NDEBUG definition, - * assert.h, and MATLAB include files */ +/* stdio.h, stdlib.h, limits.h, and math.h, NDEBUG definition, assert.h */ #include "amd_internal.h" /* -------------------------------------------------------------------------- */ -/* Real/complex and int/long definitions, double relops */ +/* MATLAB include files */ +/* -------------------------------------------------------------------------- */ + +/* only used when compiling the UMFPACK mexFunction */ +#ifdef MATLAB_MEX_FILE +#include "matrix.h" +#include "mex.h" +#endif + +/* -------------------------------------------------------------------------- */ +/* Real/complex and int/UF_long definitions, double relops */ /* -------------------------------------------------------------------------- */ #include "umf_version.h" @@ -185,61 +200,15 @@ /* Memory allocator */ /* -------------------------------------------------------------------------- */ -/* The MATLAB mexFunction uses MATLAB's memory manager, while the C-callable - * AMD library uses the ANSI C malloc, free, and realloc routines. To use - * the mx* memory allocation routines, use -DNUTIL when compiling. - */ - -#undef ALLOCATE -#undef FREE -#undef REALLOC - -#ifdef MATLAB_MEX_FILE - -#ifdef NUTIL - -/* These functions simply terminate the mexFunction if they fail to allocate - * memory. That's too restrictive for UMFPACK. */ -#define ALLOCATE mxMalloc -#define FREE mxFree -#define REALLOCATE mxRealloc - -#else - -/* Use internal MATLAB memory allocation routines, used by built-in MATLAB - * functions. These are not documented, but are available for use. Their - * prototypes are in util.h, but that file is not provided to the MATLAB user. - * The advantage of using these routines is that they return NULL if out of - * memory, instead of terminating the mexFunction. UMFPACK attempts to allocate - * extra space for "elbow room", and then reduces its request if the memory is - * not available. That strategy doesn't work with the mx* routines. +/* See AMD/Source/amd_global.c and AMD/Source/amd.h for the + * definition of the memory allocator used by UMFPACK. Versions 4.4 and + * earlier had their memory allocator definitions here. Other global + * function pointers for UMFPACK are located in umf_global.c. + * + * The MATLAB mexFunction uses MATLAB's memory manager and mexPrintf, while the + * C-callable AMD library uses the ANSI C malloc, free, realloc, and printf + * routines. */ -void *utMalloc (size_t size) ; -void utFree (void *p) ; -void *utRealloc (void *p, size_t size) ; -#define ALLOCATE utMalloc -#define FREE utFree -#define REALLOCATE utRealloc - -#endif -#else -#ifdef MATHWORKS - -/* Compiling as a built-in routine. Since out-of-memory conditions are checked - * after every allocation, we can use ut* routines here. */ -#define ALLOCATE utMalloc -#define FREE utFree -#define REALLOCATE utRealloc - -#else - -/* use the ANSI C memory allocation routines */ -#define ALLOCATE malloc -#define FREE free -#define REALLOCATE realloc - -#endif -#endif /* -------------------------------------------------------------------------- */ /* Memory space definitions */ @@ -749,8 +718,13 @@ typedef struct /* SymbolicType */ /* for testing out-of-memory conditions: */ #define UMF_TCOV_TEST -GLOBAL extern int umf_fail, umf_fail_lo, umf_fail_hi ; -GLOBAL extern int umf_realloc_fail, umf_realloc_lo, umf_realloc_hi ; + +#ifndef EXTERN +#define EXTERN extern +#endif + +GLOBAL EXTERN int umf_fail, umf_fail_lo, umf_fail_hi ; +GLOBAL EXTERN int umf_realloc_fail, umf_realloc_lo, umf_realloc_hi ; /* for testing malloc count: */ #define UMF_MALLOC_COUNT diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_is_permutation.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_is_permutation.c index 77ae6ccbe5..71207366b3 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_is_permutation.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_is_permutation.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_is_permutation.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_is_permutation.h index a9ed1dc58a..2468545eee 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_is_permutation.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_is_permutation.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel.c index cd1fa5bdad..54e756fd90 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel.h index 912e7f3567..0f5d70d617 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_init.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_init.c index fec1650d6d..7ec3ed6476 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_init.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_init.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -448,7 +448,7 @@ GLOBAL Int UMF_kernel_init do_recip = FALSE ; #endif /* check the input matrix */ - if (!AMD_valid (n_row, n_col, Ap, Ai)) + if (AMD_valid (n_row, n_col, Ap, Ai) != AMD_OK) { /* matrix is invalid */ return (FALSE) ; @@ -702,8 +702,8 @@ GLOBAL Int UMF_kernel_init k, newrow)) ; if (--(Wp [newrow]) < 0) { - /* :: pattern change (singleton row too long) :: */ - DEBUGm4 (("bad U singleton row (too long)\n")) ; + /* :: pattern change (singleton row too lengthy) :: */ + DEBUGm4 (("bad U singleton row (too lengthy)\n")) ; return (FALSE) ; /* pattern changed */ } *(Rpi [newrow]++) = k ; @@ -716,7 +716,7 @@ GLOBAL Int UMF_kernel_init k, newrow)) ; if (llen >= lilen) { - DEBUGm4 (("bad L singleton col (too long)\n")) ; + DEBUGm4 (("bad L singleton col (too lengthy)\n")) ; return (FALSE) ; /* pattern changed */ } Li [llen] = newrow ; @@ -727,7 +727,7 @@ GLOBAL Int UMF_kernel_init if (llen != lilen) { - /* :: pattern change (singleton column too long) :: */ + /* :: pattern change (singleton column too lengthy) :: */ DEBUGm4 (("bad L singleton col (too short)\n")) ; return (FALSE) ; /* pattern changed */ } @@ -820,7 +820,7 @@ GLOBAL Int UMF_kernel_init k, newrow)) ; if (--(Wp [newrow]) < 0) { - DEBUGm4 (("bad row of U or A (too long)\n")) ; + DEBUGm4 (("bad row of U or A (too lengthy)\n")) ; return (FALSE) ; /* pattern changed */ } *(Rpi [newrow]++) = k ; @@ -833,7 +833,7 @@ GLOBAL Int UMF_kernel_init k, e, newrow)) ; if (clen >= esize) { - DEBUGm4 (("bad A column (too long)\n")) ; + DEBUGm4 (("bad A column (too lengthy)\n")) ; return (FALSE) ; /* pattern changed */ } ASSERT (E [e]) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_init.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_init.h index e3d22cf99b..dc86d0477f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_init.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_init.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_wrapup.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_wrapup.c index 91b00204d4..1609c2cf7a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_wrapup.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_wrapup.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_wrapup.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_wrapup.h index 2a62d99079..e3e8fbdfb5 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_wrapup.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_wrapup.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_local_search.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_local_search.c index b8a444c536..d81491bd62 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_local_search.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_local_search.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -133,6 +133,12 @@ GLOBAL Int UMF_local_search Tuple *tp, *tpend, *tp1, *tp2 ; Element *ep ; +#ifndef NBLAS + Int blas_ok = TRUE ; +#else +#define blas_ok FALSE +#endif + #ifndef NDEBUG Int debug_ok, n_row, n_col, *Row_degree ; Row_degree = Numeric->Rperm ; /* for NON_PIVOTAL_ROW macro only */ @@ -468,26 +474,25 @@ GLOBAL Int UMF_local_search { /* solve Lx=b, where b = U (:,k), stored in the LU block */ -#ifdef USE_NO_BLAS - - /* no BLAS available - use plain C code instead */ - Entry *Flub = Flublock ; - for (j = 0 ; j < fnpiv ; j++) +#ifndef NBLAS + BLAS_TRSV (fnpiv, Flublock, Flu, nb) ; +#endif + if (!blas_ok) { - Entry Fuj = Flu [j] ; -#pragma ivdep - for (i = j+1 ; i < fnpiv ; i++) + /* use plain C code if no BLAS, or on integer overflow */ + Entry *Flub = Flublock ; + for (j = 0 ; j < fnpiv ; j++) { - /* Flu [i] -= Flublock [i + j*nb] * Flu [j] ; */ - MULT_SUB (Flu [i], Flub [i], Fuj) ; + Entry Fuj = Flu [j] ; +#pragma ivdep + for (i = j+1 ; i < fnpiv ; i++) + { + /* Flu [i] -= Flublock [i + j*nb] * Flu [j] ; */ + MULT_SUB (Flu [i], Flub [i], Fuj) ; + } + Flub += nb ; } - Flub += nb ; } - -#else - BLAS_TRSV (fnpiv, Flublock, Flu, nb) ; -#endif - } /* ------------------------------------------------------------------ */ @@ -505,7 +510,7 @@ GLOBAL Int UMF_local_search /* this work will be discarded if the pivcol [OUT] is chosen instead */ -#ifdef USE_NO_BLAS +#ifdef NBLAS /* no BLAS available - use plain C code instead */ for (j = 0 ; j < fnpiv ; j++) { diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_local_search.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_local_search.h index f5fe61f99e..434d66f7fa 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_local_search.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_local_search.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.c index 8c58c388de..cf3bf9f759 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.h index 05d630fd73..211adffe9c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.c index a4b44c9429..b259d27a1f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.h index 22f4352757..02f77340ed 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.c index 411e08d282..09ef770f6c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -72,8 +72,8 @@ GLOBAL void *UMF_malloc } size *= size_of_object ; - /* see umf_config.h for the memory allocator selection */ - p = ALLOCATE (size) ; + /* see AMD/Source/amd_global.c for the memory allocator selection */ + p = amd_malloc (size) ; DEBUG0 ((ID"\n", (Int) p)) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.h index edd44ed013..8ee993407d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -8,7 +8,12 @@ #define _UMF_MALLOC #if defined (UMF_MALLOC_COUNT) || !defined (NDEBUG) -GLOBAL extern Int UMF_malloc_count ; + +#ifndef EXTERN +#define EXTERN extern +#endif + +GLOBAL EXTERN Int UMF_malloc_count ; #endif GLOBAL void *UMF_malloc diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_element.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_element.c index 74d6ba03ec..cef3ba7178 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_element.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_element.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_element.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_element.h index 5482f0b1bf..e0b259f5df 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_element.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_element.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_head_block.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_head_block.c index 6db2caaf23..26001822fa 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_head_block.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_head_block.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_head_block.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_head_block.h index be882b5c7a..510a6fa036 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_head_block.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_head_block.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_tail_block.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_tail_block.c index 56473675c8..8499644026 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_tail_block.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_tail_block.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_tail_block.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_tail_block.h index 1062d2404f..d072a73ac9 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_tail_block.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_alloc_tail_block.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_free_tail_block.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_free_tail_block.c index 5fac99129f..05a631338e 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_free_tail_block.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_free_tail_block.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_free_tail_block.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_free_tail_block.h index 43d136ed21..14c7324de8 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_free_tail_block.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_free_tail_block.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_init_memoryspace.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_init_memoryspace.c index 37fcc455ff..8981dd2f50 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_init_memoryspace.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_init_memoryspace.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_init_memoryspace.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_init_memoryspace.h index 1095fdddb6..45d552fb81 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_init_memoryspace.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_mem_init_memoryspace.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_multicompile.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_multicompile.c index f1f3d64edf..06035609cf 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_multicompile.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_multicompile.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.c index dc3d33c5d4..ee0f70d695 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -56,8 +56,8 @@ GLOBAL void *UMF_realloc DEBUG0 (("UMF_realloc: "ID" n_objects "ID" size_of_object "ID"\n", (Int) p, n_objects, (Int) size_of_object)) ; - /* see umf_config.h for the memory allocator selection */ - p2 = REALLOCATE (p, size) ; + /* see AMD/Source/amd_global.c for the memory allocator selection */ + p2 = amd_realloc (p, size) ; #if defined (UMF_MALLOC_COUNT) || !defined (NDEBUG) /* If p didn't exist on input, and p2 exists, then a new object has been diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.h index 88cd8a69f1..5b2f1c2576 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_perm.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_perm.c index 659f8bedd5..c97052cc45 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_perm.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_perm.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_perm.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_perm.h index b513301fbd..6b18d85b7b 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_perm.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_perm.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_vector.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_vector.c index 38475b5fc5..4b602d1626 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_vector.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_vector.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_vector.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_vector.h index 8d0cba1c1d..6a758d7355 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_vector.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_vector.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_row_search.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_row_search.c index 14757fb2b7..f20ca0ca51 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_row_search.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_row_search.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_row_search.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_row_search.h index 61b64d252e..e0171ee893 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_row_search.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_row_search.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.c index 42966db7dd..98fb3baaaf 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -63,65 +63,19 @@ GLOBAL void UMF_scale { /* ------------------------------------------------------------------ */ - /* normal case. select the x/pivot or x * (1/pivot) method */ + /* normal case */ /* ------------------------------------------------------------------ */ /* The pivot is not tiny, and is not NaN. Don't bother to check for - * zeros in the pivot column, X. */ - -#if !defined (NRECIPROCAL) && !(defined (__GNUC__) && defined (COMPLEX)) - - /* -------------------------------------------------------------- */ - /* multiply x by (1/pivot) */ - /* -------------------------------------------------------------- */ - - /* Slightly less accurate, but faster. It allows the use of - * the level-1 BLAS dscal or zscal routine. This not used when - * UMFPACK is used in MATLAB (either as a built-in routine, or as - * a mexFunction). - * - * Using gcc version 3.2 can cause the following code to fail for - * some complex matrices (not all), with or without the BLAS. This - * was found in Red Hat Linux 7.3 on a Dell Latitude C840 with a - * Pentium 4M. Thus, this code is not used when gcc is used, for - * the complex case. - * - * It works just fine with Intel's icc compiler, version 7.0. - */ - - /* pivot = 1 / pivot */ - RECIPROCAL (pivot) ; - -#if defined (USE_NO_BLAS) - for (i = 0 ; i < n ; i++) - { - /* X [i] *= pivot ; */ - x = X [i] ; - MULT (X [i], x, pivot) ; - } -#else - BLAS_SCAL (n, pivot, X) ; -#endif - -#else - - /* -------------------------------------------------------------- */ - /* divide x by the pivot */ - /* -------------------------------------------------------------- */ - - /* This is slightly more accurate, particularly if the pivot column - * consists of only IEEE subnormals. Always do this if UMFPACK is - * being compiled as a built-in routine or mexFunction in MATLAB, - * or if gcc is being used with complex matrices. */ - - for (i = 0 ; i < n ; i++) - { - /* X [i] /= pivot ; */ - x = X [i] ; - DIV (X [i], x, pivot) ; - } - -#endif + * zeros in the pivot column, X. This is slightly more accurate than + * multiplying by 1/pivot (but slightly slower), particularly if the + * pivot column consists of only IEEE subnormals. */ + for (i = 0 ; i < n ; i++) + { + /* X [i] /= pivot ; */ + x = X [i] ; + DIV (X [i], x, pivot) ; + } } } diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.h index 1ffd45beec..99799f52ae 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale_column.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale_column.c index 8404f3126f..782b716161 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale_column.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale_column.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale_column.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale_column.h index c949ec9f1b..2306787832 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale_column.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale_column.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_set_stats.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_set_stats.c index eb0d2dc518..8dfe2ca2eb 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_set_stats.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_set_stats.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_set_stats.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_set_stats.h index 7fadbcb61e..f4342ce58a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_set_stats.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_set_stats.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.c index b63a560768..9d1617dc62 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -13,27 +13,28 @@ * that the matrix is in the following form: * * x x x x x x x x x - * 0 x x x x x x x x - * 0 0 x x x x x x x - * 0 0 0 x 0 0 0 0 0 - * 0 0 0 x x 0 0 0 0 - * 0 0 0 x x s s s s - * 0 0 0 x x s s s s - * 0 0 0 x x s s s s - * 0 0 0 x x s s s s + * . x x x x x x x x + * . . x x x x x x x + * . . . x . . . . . + * . . . x x . . . . + * . . . x x s s s s + * . . . x x s s s s + * . . . x x s s s s + * . . . x x s s s s * * The above example has 3 column singletons (the first three columns and * their corresponding pivot rows) and 2 row singletons. The singletons are * ordered first, because they have zero Markowitz cost. The LU factorization * for these first five rows and columns is free - there is no work to do * (except to scale the pivot columns for the 2 row singletons), and no - * fill-in occurs. * The remaining * submatrix (4-by-4 in the above example) + * fill-in occurs. The remaining submatrix (4-by-4 in the above example) * has no rows or columns with degree one. It may have empty rows or columns. * * This algorithm does not perform a full permutation to block triangular * form. If there are one or more singletons, then the matrix can be * permuted to block triangular form, but UMFPACK does not perform the full - * BTF permutation (see also "dmperm" in MATLAB). + * BTF permutation (see also "dmperm" in MATLAB, CSparse cs_dmperm, + * and SuiteSparse/BTF). */ #include "umf_internal.h" diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.h index d2d420cc4f..5b2e49837d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.c index f670f0ca64..fc785865e6 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -21,6 +21,9 @@ Uses the sparse backward error method of Arioli, Demmel, and Duff (Solving sparse linear systems with sparse backward error, SIAM J. Matrix Analysis and Applic., vol 10, pp. 165-190). + + Added on option that allows the complex A and X to be split differently + than B, Oct 10, 2005. Contributed by David Bateman. */ #include "umf_internal.h" @@ -79,7 +82,8 @@ GLOBAL Int UMF_solve double *Z2, *Y, *B2, *Rs ; Int *Rperm, *Cperm, i, n, p, step, j, nz, status, p2, do_scale ; #ifdef COMPLEX - Int split ; + Int AXsplit ; + Int Bsplit ; #endif #ifndef NRECIPROCAL Int do_recip = Numeric->do_recip ; @@ -141,7 +145,7 @@ GLOBAL Int UMF_solve return (UMFPACK_ERROR_argument_missing) ; } /* A, B, and X in split format if Az, Bz, and Xz present */ - split = SPLIT (Az) && SPLIT (Bz) && SPLIT (Xz) ; + AXsplit = SPLIT (Az) || SPLIT(Xz); Z = (Entry *) (SolveWork + 4*n) ; /* Entry Z [0..n-1] */ S = (Entry *) (SolveWork + 6*n) ; /* Entry S [0..n-1] */ Y = (double *) (SolveWork + 8*n) ; /* double Y [0..n-1] */ @@ -150,10 +154,12 @@ GLOBAL Int UMF_solve } else { - /* A is ignored, only look at X and B for split/packed cases */ - split = SPLIT (Bz) && SPLIT (Xz) ; + /* A is ignored, only look at X for split/packed cases */ + AXsplit = SPLIT(Xz); } - if (split) + Bsplit = SPLIT (Bz); + + if (AXsplit) { X = (Entry *) (SolveWork + 2*n) ; /* Entry X [0..n-1] */ } @@ -209,7 +215,7 @@ GLOBAL Int UMF_solve for (p = 0 ; p < p2 ; p++) { /* Y [Ai [p]] += ABS (Ax [p]) ; */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, AXsplit) ; ABS (d, aij) ; Y [Ai [p]] += d ; } @@ -219,7 +225,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* B2 [i] = ABS (B [i]) ; */ - ASSIGN (bi, Bx, Bz, i, split) ; + ASSIGN (bi, Bx, Bz, i, Bsplit) ; ABS (B2 [i], bi) ; } @@ -276,7 +282,7 @@ GLOBAL Int UMF_solve /* multiply by the scale factors */ for (i = 0 ; i < n ; i++) { - ASSIGN (X [i], Bx, Bz, i, split) ; + ASSIGN (X [i], Bx, Bz, i, Bsplit) ; SCALE (X [i], Rs [i]) ; } } @@ -286,7 +292,7 @@ GLOBAL Int UMF_solve /* divide by the scale factors */ for (i = 0 ; i < n ; i++) { - ASSIGN (X [i], Bx, Bz, i, split) ; + ASSIGN (X [i], Bx, Bz, i, Bsplit) ; SCALE_DIV (X [i], Rs [i]) ; } } @@ -302,7 +308,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [Rperm [i]] ; */ - ASSIGN (W [i], Bx, Bz, Rperm [i], split) ; + ASSIGN (W [i], Bx, Bz, Rperm [i], Bsplit) ; } } } @@ -311,7 +317,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* Z [i] = B [i] ; */ - ASSIGN (Z [i], Bx, Bz, i, split) ; + ASSIGN (Z [i], Bx, Bz, i, Bsplit) ; } flops += MULTSUB_FLOPS * nz ; for (i = 0 ; i < n ; i++) @@ -321,7 +327,7 @@ GLOBAL Int UMF_solve for (p = Ap [i] ; p < p2 ; p++) { /* Z [Ai [p]] -= Ax [p] * xi ; */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, AXsplit) ; MULT_SUB (Z [Ai [p]], aij, xi) ; } } @@ -390,7 +396,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [i] ; */ - ASSIGN (W [i], Bx, Bz, i, split) ; + ASSIGN (W [i], Bx, Bz, i, Bsplit) ; Z2 [i] = 0. ; } flops += (MULT_FLOPS + DECREMENT_FLOPS + ABS_FLOPS + 1) * nz ; @@ -403,7 +409,7 @@ GLOBAL Int UMF_solve i = Ai [p] ; /* axx = Ax [p] * xj ; */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, AXsplit) ; MULT (axx, aij, xj) ; /* W [i] -= axx ; */ @@ -493,7 +499,7 @@ GLOBAL Int UMF_solve /* yi += ABS (Ax [p]) * Rs [Ai [p]] ; */ /* note that abs (aij) is the same as * abs (conj (aij)) */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, AXsplit) ; ABS (d, aij) ; yi += (d * Rs [Ai [p]]) ; } @@ -513,7 +519,7 @@ GLOBAL Int UMF_solve /* yi += ABS (Ax [p]) / Rs [Ai [p]] ; */ /* note that abs (aij) is the same as * abs (conj (aij)) */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, AXsplit) ; ABS (d, aij) ; yi += (d / Rs [Ai [p]]) ; } @@ -534,7 +540,7 @@ GLOBAL Int UMF_solve /* yi += ABS (Ax [p]) ; */ /* note that abs (aij) is the same as * abs (conj (aij)) */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, AXsplit) ; ABS (d, aij) ; yi += d ; } @@ -546,7 +552,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* B2 [i] = ABS (B [i]) ; */ - ASSIGN (bi, Bx, Bz, i, split) ; + ASSIGN (bi, Bx, Bz, i, Bsplit) ; ABS (B2 [i], bi) ; } @@ -568,7 +574,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [Cperm [i]] ; */ - ASSIGN (W [i], Bx, Bz, Cperm [i], split) ; + ASSIGN (W [i], Bx, Bz, Cperm [i], Bsplit) ; } } else @@ -577,7 +583,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* Z [i] = B [i] ; */ - ASSIGN (Z [i], Bx, Bz, i, split) ; + ASSIGN (Z [i], Bx, Bz, i, Bsplit) ; } flops += MULTSUB_FLOPS * nz ; for (i = 0 ; i < n ; i++) @@ -587,7 +593,7 @@ GLOBAL Int UMF_solve for (p = Ap [i] ; p < p2 ; p++) { /* zi -= conjugate (Ax [p]) * X [Ai [p]] ; */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, Bsplit) ; MULT_SUB_CONJ (zi, X [Ai [p]], aij) ; } Z [i] = zi ; @@ -696,13 +702,13 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* wi = B [i] ; */ - ASSIGN (wi, Bx, Bz, i, split) ; + ASSIGN (wi, Bx, Bz, i, Bsplit) ; z2i = 0. ; p2 = Ap [i+1] ; for (p = Ap [i] ; p < p2 ; p++) { /* axx = conjugate (Ax [p]) * X [Ai [p]] ; */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, AXsplit) ; MULT_CONJ (axx, X [Ai [p]], aij) ; /* wi -= axx ; */ @@ -766,7 +772,7 @@ GLOBAL Int UMF_solve /* yi += ABS (Ax [p]) * Rs [Ai [p]] ; */ /* note that A.' is the array transpose, * so no conjugate */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, AXsplit) ; ABS (d, aij) ; yi += (d * Rs [Ai [p]]) ; } @@ -786,7 +792,7 @@ GLOBAL Int UMF_solve /* yi += ABS (Ax [p]) / Rs [Ai [p]] ; */ /* note that A.' is the array transpose, * so no conjugate */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, AXsplit) ; ABS (d, aij) ; yi += (d / Rs [Ai [p]]) ; } @@ -807,7 +813,7 @@ GLOBAL Int UMF_solve /* yi += ABS (Ax [p]) */ /* note that A.' is the array transpose, * so no conjugate */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, AXsplit) ; ABS (d, aij) ; yi += d ; } @@ -819,7 +825,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* B2 [i] = ABS (B [i]) ; */ - ASSIGN (bi, Bx, Bz, i, split) ; + ASSIGN (bi, Bx, Bz, i, Bsplit) ; ABS (B2 [i], bi) ; } @@ -841,7 +847,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [Cperm [i]] ; */ - ASSIGN (W [i], Bx, Bz, Cperm [i], split) ; + ASSIGN (W [i], Bx, Bz, Cperm [i], Bsplit) ; } } else @@ -850,7 +856,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* Z [i] = B [i] ; */ - ASSIGN (Z [i], Bx, Bz, i, split) ; + ASSIGN (Z [i], Bx, Bz, i, Bsplit) ; } flops += MULTSUB_FLOPS * nz ; for (i = 0 ; i < n ; i++) @@ -860,7 +866,7 @@ GLOBAL Int UMF_solve for (p = Ap [i] ; p < p2 ; p++) { /* zi -= Ax [p] * X [Ai [p]] ; */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, AXsplit) ; MULT_SUB (zi, aij, X [Ai [p]]) ; } Z [i] = zi ; @@ -969,13 +975,13 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* wi = B [i] ; */ - ASSIGN (wi, Bx, Bz, i, split) ; + ASSIGN (wi, Bx, Bz, i, Bsplit) ; z2i = 0. ; p2 = Ap [i+1] ; for (p = Ap [i] ; p < p2 ; p++) { /* axx = Ax [p] * X [Ai [p]] ; */ - ASSIGN (aij, Ax, Az, p, split) ; + ASSIGN (aij, Ax, Az, p, AXsplit) ; MULT (axx, aij, X [Ai [p]]) ; /* wi -= axx ; */ @@ -1011,7 +1017,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [Rperm [i]] ; */ - ASSIGN (X [i], Bx, Bz, Rperm [i], split) ; + ASSIGN (X [i], Bx, Bz, Rperm [i], Bsplit) ; } flops = UMF_lsolve (Numeric, X, Pattern) ; status = UMFPACK_OK ; @@ -1027,7 +1033,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [i] ; */ - ASSIGN (X [i], Bx, Bz, i, split) ; + ASSIGN (X [i], Bx, Bz, i, Bsplit) ; } flops = UMF_lsolve (Numeric, X, Pattern) ; status = UMFPACK_OK ; @@ -1043,7 +1049,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [i] ; */ - ASSIGN (W [i], Bx, Bz, i, split) ; + ASSIGN (W [i], Bx, Bz, i, Bsplit) ; } flops = UMF_lhsolve (Numeric, W, Pattern) ; for (i = 0 ; i < n ; i++) @@ -1063,7 +1069,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [i] ; */ - ASSIGN (W [i], Bx, Bz, i, split) ; + ASSIGN (W [i], Bx, Bz, i, Bsplit) ; } flops = UMF_ltsolve (Numeric, W, Pattern) ; for (i = 0 ; i < n ; i++) @@ -1083,7 +1089,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [i] ; */ - ASSIGN (X [i], Bx, Bz, i, split) ; + ASSIGN (X [i], Bx, Bz, i, Bsplit) ; } flops = UMF_lhsolve (Numeric, X, Pattern) ; status = UMFPACK_OK ; @@ -1099,7 +1105,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [i] ; */ - ASSIGN (X [i], Bx, Bz, i, split) ; + ASSIGN (X [i], Bx, Bz, i, Bsplit) ; } flops = UMF_ltsolve (Numeric, X, Pattern) ; status = UMFPACK_OK ; @@ -1115,7 +1121,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [i] ; */ - ASSIGN (W [i], Bx, Bz, i, split) ; + ASSIGN (W [i], Bx, Bz, i, Bsplit) ; } flops = UMF_usolve (Numeric, W, Pattern) ; for (i = 0 ; i < n ; i++) @@ -1134,7 +1140,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [i] ; */ - ASSIGN (X [i], Bx, Bz, i, split) ; + ASSIGN (X [i], Bx, Bz, i, Bsplit) ; } flops = UMF_usolve (Numeric, X, Pattern) ; @@ -1149,7 +1155,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [Cperm [i]] ; */ - ASSIGN (X [i], Bx, Bz, Cperm [i], split) ; + ASSIGN (X [i], Bx, Bz, Cperm [i], Bsplit) ; } flops = UMF_uhsolve (Numeric, X, Pattern) ; @@ -1164,7 +1170,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [Cperm [i]] ; */ - ASSIGN (X [i], Bx, Bz, Cperm [i], split) ; + ASSIGN (X [i], Bx, Bz, Cperm [i], Bsplit) ; } flops = UMF_utsolve (Numeric, X, Pattern) ; @@ -1179,7 +1185,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [i] ; */ - ASSIGN (X [i], Bx, Bz, i, split) ; + ASSIGN (X [i], Bx, Bz, i, Bsplit) ; } flops = UMF_uhsolve (Numeric, X, Pattern) ; @@ -1194,7 +1200,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [i] ; */ - ASSIGN (X [i], Bx, Bz, i, split) ; + ASSIGN (X [i], Bx, Bz, i, Bsplit) ; } flops = UMF_utsolve (Numeric, X, Pattern) ; @@ -1206,7 +1212,7 @@ GLOBAL Int UMF_solve #ifdef COMPLEX /* copy the solution back, from Entry X [ ] to double Xx [ ] and Xz [ ] */ - if (split) + if (AXsplit) { for (i = 0 ; i < n ; i++) { diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.h index d818eb266f..80a796ca2c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_start_front.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_start_front.c index a994fb605f..aa581d4607 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_start_front.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_start_front.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_start_front.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_start_front.h index fa4b7f188f..1a1c4f224c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_start_front.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_start_front.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_store_lu.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_store_lu.c index fcc6c7ec79..0d0ea092c8 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_store_lu.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_store_lu.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_store_lu.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_store_lu.h index 2541b83c2c..82627ada6d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_store_lu.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_store_lu.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_symbolic_usage.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_symbolic_usage.c index cce83651da..8c417cd1d3 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_symbolic_usage.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_symbolic_usage.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_symbolic_usage.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_symbolic_usage.h index ab8bbe1680..3fad24a53b 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_symbolic_usage.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_symbolic_usage.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.c index 47331e9c21..061c97b9a7 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -92,7 +92,7 @@ GLOBAL Int UMF_transpose { return (UMFPACK_ERROR_invalid_permutation) ; } - if (!AMD_valid (n_row, n_col, Ap, Ai)) + if (AMD_valid (n_row, n_col, Ap, Ai) != AMD_OK) { return (UMFPACK_ERROR_invalid_matrix) ; } @@ -393,7 +393,7 @@ GLOBAL Int UMF_transpose Rz, #endif Ri, Rp, n_col, n_row, Rp [n_row]) ; - ASSERT (AMD_valid (n_col, n_row, Rp, Ri)) ; + ASSERT (AMD_valid (n_col, n_row, Rp, Ri) == AMD_OK) ; #endif return (UMFPACK_OK) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.h index 354e678283..4c4dee911c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.c index 8e74bff23f..b1f0b306f6 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.h index 18947d39db..62f9729994 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_tuple_lengths.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_tuple_lengths.c index e31e04cf24..c0680de185 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_tuple_lengths.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_tuple_lengths.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_tuple_lengths.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_tuple_lengths.h index 8931c47f37..a31ccb94ad 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_tuple_lengths.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_tuple_lengths.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.c index b536d4e93d..ca2e4ad6da 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.h index d1854b9b72..3b950d33c6 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.c index 8672084a8e..ba7836430c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.h index 4dfdd4a863..dae3143182 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_numeric.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_numeric.c index a0dc93329f..ea3bb07b22 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_numeric.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_numeric.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_numeric.h index dd71f633ea..0b258e4fe1 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_numeric.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_symbolic.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_symbolic.c index 7115175468..2f65a0c98f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_symbolic.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_symbolic.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_symbolic.h index 0653491515..741a799446 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_symbolic.h @@ -1,5 +1,5 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_version.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_version.h index 7eb6d6a31b..98d765f0ca 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_version.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_version.h @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -12,8 +12,8 @@ Define routine names, depending on version being compiled. DINT: double precision, int's as integers - DLONG: double precision, long's as integers - ZLONG: complex double precision, long's as integers + DLONG: double precision, UF_long's as integers + ZLONG: complex double precision, UF_long's as integers ZINT: complex double precision, int's as integers */ @@ -28,7 +28,7 @@ #endif /* -------------------------------------------------------------------------- */ -/* integer type (Int is int or long) now defined in amd_internal.h */ +/* integer type (Int is int or UF_long) now defined in amd_internal.h */ /* -------------------------------------------------------------------------- */ #if defined (DLONG) || defined (ZLONG) @@ -60,15 +60,7 @@ SCALAR_IS_LTZERO(x): This is (x < 0) if the compiler is IEEE 754 compliant. */ -#if defined (MATHWORKS) - -/* The MathWorks has their own macros in util.h that handle NaN's properly. */ -#define SCALAR_IS_NAN(x) (utIsNaN (x)) -#define SCALAR_IS_ZERO(x) (utEQZero (x)) -#define SCALAR_IS_NONZERO(x) (utNEZero (x)) -#define SCALAR_IS_LTZERO(x) (utLTZero (x)) - -#elif defined (UMF_WINDOWS) +#if defined (UMF_WINDOWS) && !defined (MATHWORKS) /* Yes, this is exceedingly ugly. Blame Microsoft, which hopelessly */ /* violates the IEEE 754 floating-point standard in a bizarre way. */ @@ -138,7 +130,6 @@ SCALAR_IS_LTZERO(x): #define MULT_SUB(c,a,b) { (c) -= (a) * (b) ; } #define MULT_SUB_CONJ(c,a,b) { (c) -= (a) * (b) ; } #define DIV(c,a,b) { (c) = (a) / (b) ; } -#define RECIPROCAL(c) { (c) = 1.0 / (c) ; } #define DIV_CONJ(c,a,b) { (c) = (a) / (b) ; } #define APPROX_ABS(s,a) { (s) = SCALAR_ABS (a) ; } #define ABS(s,a) { (s) = SCALAR_ABS (a) ; } @@ -359,105 +350,21 @@ typedef struct /* -------------------------------------------------------------------------- */ -/* c = a/b, be careful to avoid underflow and overflow */ -#ifdef MATHWORKS +/* c = a/b, using function pointer */ #define DIV(c,a,b) \ { \ - (void) utDivideComplex ((a).Real, (a).Imag, (b).Real, (b).Imag, \ + (void) umfpack_divcomplex ((a).Real, (a).Imag, (b).Real, (b).Imag, \ &((c).Real), &((c).Imag)) ; \ } -#else -/* This uses ACM Algo 116, by R. L. Smith, 1962. */ -/* c can be the same variable as a or b. */ -/* Ignore NaN case for double relop br>=bi. */ -#define DIV(c,a,b) \ -{ \ - double r, den, ar, ai, br, bi ; \ - br = (b).Real ; \ - bi = (b).Imag ; \ - ar = (a).Real ; \ - ai = (a).Imag ; \ - if (SCALAR_ABS (br) >= SCALAR_ABS (bi)) \ - { \ - r = bi / br ; \ - den = br + r * bi ; \ - (c).Real = (ar + ai * r) / den ; \ - (c).Imag = (ai - ar * r) / den ; \ - } \ - else \ - { \ - r = br / bi ; \ - den = r * br + bi ; \ - (c).Real = (ar * r + ai) / den ; \ - (c).Imag = (ai * r - ar) / den ; \ - } \ -} -#endif /* -------------------------------------------------------------------------- */ -/* c = 1/c, be careful to avoid underflow and overflow */ -/* Not used if MATHWORKS is defined. */ -/* This uses ACM Algo 116, by R. L. Smith, 1962. */ -/* Ignore NaN case for double relop cr>=ci. */ -#define RECIPROCAL(c) \ -{ \ - double r, den, cr, ci ; \ - cr = (c).Real ; \ - ci = (c).Imag ; \ - if (SCALAR_ABS (cr) >= SCALAR_ABS (ci)) \ - { \ - r = ci / cr ; \ - den = cr + r * ci ; \ - (c).Real = 1.0 / den ; \ - (c).Imag = - r / den ; \ - } \ - else \ - { \ - r = cr / ci ; \ - den = r * cr + ci ; \ - (c).Real = r / den ; \ - (c).Imag = - 1.0 / den ; \ - } \ -} - - -/* -------------------------------------------------------------------------- */ - -/* c = a/conjugate(b), be careful to avoid underflow and overflow */ -#ifdef MATHWORKS +/* c = a/conjugate(b), using function pointer */ #define DIV_CONJ(c,a,b) \ { \ - (void) utDivideComplex ((a).Real, (a).Imag, (b).Real, (-(b).Imag), \ + (void) umfpack_divcomplex ((a).Real, (a).Imag, (b).Real, (-(b).Imag), \ &((c).Real), &((c).Imag)) ; \ } -#else -/* This uses ACM Algo 116, by R. L. Smith, 1962. */ -/* c can be the same variable as a or b. */ -/* Ignore NaN case for double relop br>=bi. */ -#define DIV_CONJ(c,a,b) \ -{ \ - double r, den, ar, ai, br, bi ; \ - br = (b).Real ; \ - bi = (b).Imag ; \ - ar = (a).Real ; \ - ai = (a).Imag ; \ - if (SCALAR_ABS (br) >= SCALAR_ABS (bi)) \ - { \ - r = (-bi) / br ; \ - den = br - r * bi ; \ - (c).Real = (ar + ai * r) / den ; \ - (c).Imag = (ai - ar * r) / den ; \ - } \ - else \ - { \ - r = br / (-bi) ; \ - den = r * br - bi; \ - (c).Real = (ar * r + ai) / den ; \ - (c).Imag = (ai * r - ar) / den ; \ - } \ -} -#endif /* -------------------------------------------------------------------------- */ @@ -469,45 +376,11 @@ typedef struct /* -------------------------------------------------------------------------- */ -/* exact absolute value, s = sqrt (a.real^2 + amag^2) */ -#ifdef MATHWORKS +/* exact absolute value, s = sqrt (a.real^2 + a.imag^2) */ #define ABS(s,a) \ { \ - (s) = utFdlibm_hypot ((a).Real, (a).Imag) ; \ + (s) = umfpack_hypot ((a).Real, (a).Imag) ; \ } -#else -/* Ignore NaN case for the double relops ar>=ai and ar+ai==ar. */ -#define ABS(s,a) \ -{ \ - double r, ar, ai ; \ - ar = SCALAR_ABS ((a).Real) ; \ - ai = SCALAR_ABS ((a).Imag) ; \ - if (ar >= ai) \ - { \ - if (ar + ai == ar) \ - { \ - (s) = ar ; \ - } \ - else \ - { \ - r = ai / ar ; \ - (s) = ar * sqrt (1.0 + r*r) ; \ - } \ - } \ - else \ - { \ - if (ai + ar == ai) \ - { \ - (s) = ai ; \ - } \ - else \ - { \ - r = ar / ai ; \ - (s) = ai * sqrt (1.0 + r*r) ; \ - } \ - } \ -} -#endif /* -------------------------------------------------------------------------- */ @@ -656,7 +529,7 @@ typedef struct #endif /* -------------------------------------------------------------------------- */ -/* Double precision, with long's as integers */ +/* Double precision, with UF_long's as integers */ /* -------------------------------------------------------------------------- */ #ifdef DLONG @@ -886,7 +759,7 @@ typedef struct #endif /* -------------------------------------------------------------------------- */ -/* Complex double precision, with long's as integers */ +/* Complex double precision, with UF_long's as integers */ /* -------------------------------------------------------------------------- */ #ifdef ZLONG diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_col_to_triplet.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_col_to_triplet.c index 44d3a3e1bc..f49a13d790 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_col_to_triplet.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_col_to_triplet.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_defaults.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_defaults.c index 36cf91a819..761ecd1e37 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_defaults.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_defaults.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -63,7 +63,7 @@ GLOBAL void UMFPACK_defaults /* compile-time settings: cannot be modified at run-time */ /* ---------------------------------------------------------------------- */ -#ifdef USE_NO_BLAS +#ifdef NBLAS /* do not use the BLAS - use in-line C code instead */ Control [UMFPACK_COMPILED_WITH_BLAS] = 0 ; #else @@ -72,18 +72,14 @@ GLOBAL void UMFPACK_defaults #endif #ifdef MATLAB_MEX_FILE - /* use mxMalloc, mxFree, mxRealloc, and mexPrintf */ - /* use mxAssert if debugging is enabled */ + /* compiled as a MATLAB mexFunction */ Control [UMFPACK_COMPILED_FOR_MATLAB] = 1 ; #else #ifdef MATHWORKS - /* use internal utMalloc, utFree, utRealloc, and utPrintf routines. */ - /* use utDivideComplex and utFdlibm_hypot for complex version. */ - /* use utAssert if debugging is enabled. */ + /* compiled for internal use in MATLAB */ Control [UMFPACK_COMPILED_FOR_MATLAB] = 2 ; #else - /* use ANSI C malloc, free, realloc, and print */ - /* use ANSI C assert if debugging is enabled */ + /* use ANSI C malloc, free, realloc, and printf */ Control [UMFPACK_COMPILED_FOR_MATLAB] = 0 ; #endif #endif diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_numeric.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_numeric.c index 76f4eb5bcb..7e4e531823 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_numeric.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_symbolic.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_symbolic.c index 618ec49178..b865c43441 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_symbolic.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_determinant.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_determinant.c index bdfd751fef..bfeacaadad 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_determinant.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_determinant.c @@ -3,9 +3,10 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ +/* UMFPACK_get_determinant contributed by David Bateman, Motorola, Paris. */ /* -------------------------------------------------------------------------- */ /* diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_lunz.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_lunz.c index d1d2d3108a..21752d3af1 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_lunz.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_lunz.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_numeric.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_numeric.c index d429c97567..9dd22080c3 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_numeric.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_symbolic.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_symbolic.c index 5d69579d22..560d38c526 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_symbolic.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_global.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_global.c new file mode 100644 index 0000000000..b227573ba1 --- /dev/null +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_global.c @@ -0,0 +1,130 @@ +/* ========================================================================== */ +/* === UMFPACK_global ======================================================= */ +/* ========================================================================== */ + +/* -------------------------------------------------------------------------- */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ +/* web: http://www.cise.ufl.edu/research/sparse/umfpack */ +/* -------------------------------------------------------------------------- */ + +/* + Global variables. UMFPACK uses these function pointers for several + user-redefinable functions. The amd_* functions are defined in + AMD/Source/amd_global.c. + + Function pointer default for mexFunction + (see MATLAB/umfpackmex.c) + ---------------- ------- --------------- + amd_malloc malloc mxMalloc + amd_free free mxFree + amd_realloc realloc mxRealloc + amd_calloc calloc mxCalloc + amd_printf printf mexPrintf + + umfpack_hypot umf_hypot umf_hypot + umfpack_divcomplex umf_divcomplex umf_divcomplex + + This routine is compiled just once for all four versions of UMFPACK + (int/UF_long, double/complex). +*/ + +#include "umf_internal.h" + +double (*umfpack_hypot) (double, double) = umf_hypot ; +int (*umfpack_divcomplex) (double, double, double, double, double *, double *) + = umf_divcomplex ; + + +/* ========================================================================== */ +/* === umf_hypot ============================================================ */ +/* ========================================================================== */ + +/* There is an equivalent routine called hypot in , which conforms + * to ANSI C99. However, UMFPACK does not assume that ANSI C99 is available. + * You can use the ANSI C99 hypot routine with: + * + * #include + * umfpack_hypot = hypot ; + * + * prior to calling any UMFPACK routine. + * + * s = hypot (x,y) computes s = sqrt (x*x + y*y) but does so more accurately. + * + * The NaN case for the double relops x >= y and x+y == x is safely ignored. + */ + +double umf_hypot (double x, double y) +{ + double s, r ; + x = SCALAR_ABS (x) ; + y = SCALAR_ABS (y) ; + if (x >= y) + { + if (x + y == x) + { + s = x ; + } + else + { + r = y / x ; + s = x * sqrt (1.0 + r*r) ; + } + } + else + { + if (y + x == y) + { + s = y ; + } + else + { + r = x / y ; + s = y * sqrt (1.0 + r*r) ; + } + } + return (s) ; +} + + +/* ========================================================================== */ +/* === umf_divcomplex ======================================================= */ +/* ========================================================================== */ + +/* c = a/b where c, a, and b are complex. The real and imaginary parts are + * passed as separate arguments to this routine. The NaN case is ignored + * for the double relop br >= bi. Returns TRUE (1) if the denominator is + * zero, FALSE (0) otherwise. + * + * This uses ACM Algo 116, by R. L. Smith, 1962, which tries to avoid + * underflow and overflow. + * + * c can be the same variable as a or b. + */ + +int umf_divcomplex +( + double ar, double ai, /* real and imaginary parts of a */ + double br, double bi, /* real and imaginary parts of b */ + double *cr, double *ci /* real and imaginary parts of c */ +) +{ + double tr, ti, r, den ; + if (SCALAR_ABS (br) >= SCALAR_ABS (bi)) + { + r = bi / br ; + den = br + r * bi ; + tr = (ar + ai * r) / den ; + ti = (ai - ar * r) / den ; + } + else + { + r = br / bi ; + den = r * br + bi ; + tr = (ar * r + ai) / den ; + ti = (ai * r - ar) / den ; + } + *cr = tr ; + *ci = ti ; + return (SCALAR_IS_ZERO (den)) ; +} diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_numeric.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_numeric.c index f8fbd1fcbe..ddd644755e 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_numeric.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_symbolic.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_symbolic.c index 4fc21884cf..ac3076db66 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_symbolic.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_numeric.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_numeric.c index 61444cc80c..a96a9fd53e 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_numeric.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_qsymbolic.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_qsymbolic.c index 0aba148fa3..3e2674f083 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_qsymbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_qsymbolic.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -408,7 +408,7 @@ GLOBAL Int UMFPACK_qsymbolic Info [UMFPACK_NCOL] = n_col ; Info [UMFPACK_SIZE_OF_UNIT] = (double) (sizeof (Unit)) ; Info [UMFPACK_SIZE_OF_INT] = (double) (sizeof (int)) ; - Info [UMFPACK_SIZE_OF_LONG] = (double) (sizeof (long)) ; + Info [UMFPACK_SIZE_OF_LONG] = (double) (sizeof (UF_long)) ; Info [UMFPACK_SIZE_OF_POINTER] = (double) (sizeof (void *)) ; Info [UMFPACK_SIZE_OF_ENTRY] = (double) (sizeof (Entry)) ; Info [UMFPACK_SYMBOLIC_DEFRAG] = 0 ; @@ -508,7 +508,7 @@ GLOBAL Int UMFPACK_qsymbolic /* :: int overflow, Clen too large :: */ /* Problem is too large for array indexing (Ci [i]) with an Int i. */ /* Cannot even analyze the problem to determine upper bounds on */ - /* memory usage. Need to use the long integer version, umfpack_*l_*. */ + /* memory usage. Need to use the UF_long version, umfpack_*l_*. */ DEBUGm4 (("out of memory: symbolic int overflow\n")) ; Info [UMFPACK_STATUS] = UMFPACK_ERROR_out_of_memory ; return (UMFPACK_ERROR_out_of_memory) ; @@ -710,7 +710,7 @@ GLOBAL Int UMFPACK_qsymbolic Symbolic->nempty_col = nempty_col ; /* UMF_singletons has verified that the user's input matrix is valid */ - ASSERT (AMD_valid (n_row, n_col, Ap, Ai)) ; + ASSERT (AMD_valid (n_row, n_col, Ap, Ai) == AMD_OK) ; Symbolic->n1 = n1 ; Symbolic->nempty = nempty ; @@ -791,7 +791,7 @@ GLOBAL Int UMFPACK_qsymbolic Rp = Sp ; Ri = Si ; } - ASSERT (AMD_valid (n2, n2, Rp, Ri)) ; + ASSERT (AMD_valid (n2, n2, Rp, Ri) == AMD_OK) ; nzaat = AMD_aat (n2, Rp, Ri, Sdeg, Wq, amd_Info) ; sym = amd_Info [AMD_SYMMETRY] ; @@ -942,7 +942,7 @@ GLOBAL Int UMFPACK_qsymbolic , (double *) NULL, (double *) NULL, FALSE #endif ) ; - ASSERT (AMD_valid (n2, n2, Rp, Ri)) ; + ASSERT (AMD_valid (n2, n2, Rp, Ri) == AMD_OK) ; /* contents of Si and Sp no longer needed, but the space is * still needed */ @@ -1705,11 +1705,6 @@ GLOBAL Int UMFPACK_qsymbolic DEBUG1 ((" Row "ID" in Front "ID"\n", row, nfr)) ; } } - for (i = 0 ; i <= nfr ; i++) - { - DEBUG1 (("Front "ID" has 1strows: "ID" pivcols "ID"\n", - i, f1rows, fpivcol)) ; - } #endif /* ---------------------------------------------------------------------- */ @@ -1859,6 +1854,7 @@ GLOBAL Int UMFPACK_qsymbolic for (p = Ap [oldcol] ; p < Ap [oldcol+1] ; p++) { Entry aij ; + CLEAR (aij) ; oldrow = Ai [p] ; newrow = Ci [oldrow] ; if (Ax != (double *) NULL) diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_control.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_control.c index 94b12e07ce..30a51b97f4 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_control.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_control.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -32,7 +32,8 @@ GLOBAL void UMFPACK_report_control return ; } - PRINTF (("\n%s, Control:\n\n", UMFPACK_VERSION)) ; + PRINTF (("UMFPACK V%d.%d.%d (%s), Control:\n", UMFPACK_MAIN_VERSION, + UMFPACK_SUB_VERSION, UMFPACK_SUBSUB_VERSION, UMFPACK_DATE)) ; /* ---------------------------------------------------------------------- */ /* run-time options */ @@ -47,7 +48,7 @@ GLOBAL void UMFPACK_report_control #endif #ifdef DLONG PRINTF ((" Matrix entry defined as: double\n")) ; - PRINTF ((" Int (generic integer) defined as: long\n")) ; + PRINTF ((" Int (generic integer) defined as: UF_long\n")) ; #endif #ifdef ZINT PRINTF ((" Matrix entry defined as: double complex\n")) ; @@ -55,7 +56,7 @@ GLOBAL void UMFPACK_report_control #endif #ifdef ZLONG PRINTF ((" Matrix entry defined as: double complex\n")) ; - PRINTF ((" Int (generic integer) defined as: long\n")) ; + PRINTF ((" Int (generic integer) defined as: UF_long\n")) ; #endif /* ---------------------------------------------------------------------- */ @@ -303,39 +304,22 @@ GLOBAL void UMFPACK_report_control PRINTF ((" "ID": BLAS library used: ", (Int) INDEX (UMFPACK_COMPILED_WITH_BLAS))) ; -#if defined (USE_NO_BLAS) +#ifdef NBLAS PRINTF (("none. UMFPACK will be slow.\n")) ; -#elif defined (USE_C_BLAS) - PRINTF (("C-BLAS.\n")) ; -#elif defined (USE_MATLAB_BLAS) - PRINTF (("built-in MATLAB BLAS (ATLAS).\n")) ; -#elif defined (USE_SUNPERF_BLAS) - PRINTF (("Sun Performance Library BLAS.\n")) ; -#elif defined (USE_SCSL_BLAS) - PRINTF (("SGI SCSL BLAS.\n")) ; -#elif defined (USE_FORTRAN_BLAS) - PRINTF (("Fortran BLAS.\n")) ; +#else + PRINTF (("Fortran BLAS. size of BLAS integer: "ID"\n", + (Int) (sizeof (BLAS_INT)))) ; #endif #ifdef MATLAB_MEX_FILE -#ifdef NUTIL - PRINTF ((" "ID": compiled for MATLAB" - " (uses mxMalloc, mxFree, mxRealloc, and mexPrintf)\n", + PRINTF ((" "ID": compiled for MATLAB\n", (Int) INDEX (UMFPACK_COMPILED_FOR_MATLAB))) ; -#else - PRINTF ((" "ID": compiled for MATLAB" - " (uses utMalloc, utFree, utRealloc, and mexPrintf)\n", - (Int) INDEX (UMFPACK_COMPILED_FOR_MATLAB))) ; -#endif #else #ifdef MATHWORKS - PRINTF ((" "ID": compiled for MATLAB, using internal utility routines\n" - " (uses utMalloc, utFree, utRealloc, and utPrintf)\n", + PRINTF ((" "ID": compiled for MATLAB\n", (Int) INDEX (UMFPACK_COMPILED_FOR_MATLAB))) ; - PRINTF ((" (complex version uses utDivideComplex, utFdlibm_hypot)\n")) ; #else - PRINTF ((" "ID": compiled for ANSI C" - " (uses malloc, free, realloc, and printf)\n", + PRINTF ((" "ID": compiled for ANSI C\n", (Int) INDEX (UMFPACK_COMPILED_FOR_MATLAB))) ; #endif #endif @@ -363,24 +347,15 @@ GLOBAL void UMFPACK_report_control "**** Debugging enabled (UMFPACK will be exceedingly slow!) *****************\n" " "ID": compiled with debugging enabled. ", (Int) INDEX (UMFPACK_COMPILED_IN_DEBUG_MODE))) ; -#ifdef MATLAB_MEX_FILE - PRINTF (("Uses mxAssert.\n")) ; -#else -#ifdef MATHWORKS - PRINTF (("Uses utAssert.\n")) ; -#else - PRINTF (("Uses ANSI C assert.\n")) ; -#endif -#endif #else PRINTF ((" "ID": compiled for normal operation (debugging disabled)\n", (Int) INDEX (UMFPACK_COMPILED_IN_DEBUG_MODE))) ; #endif PRINTF ((" computer/operating system: %s\n", UMFPACK_ARCHITECTURE)) ; - PRINTF ((" size of int: %g long: %g Int: %g pointer: %g" + PRINTF ((" size of int: %g UF_long: %g Int: %g pointer: %g" " double: %g Entry: %g (in bytes)\n\n", (double) sizeof (int), - (double) sizeof (long), (double) sizeof (Int), + (double) sizeof (UF_long), (double) sizeof (Int), (double) sizeof (void *), (double) sizeof (double), (double) sizeof (Entry))) ; } diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_info.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_info.c index 800b1e1953..ac55466574 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_info.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_info.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -101,7 +101,8 @@ GLOBAL void UMFPACK_report_info /* print umfpack version */ /* ---------------------------------------------------------------------- */ - PRINTF (("\n%s, Info:\n", UMFPACK_VERSION)) ; + PRINTF (("UMFPACK V%d.%d.%d (%s), Info:\n", UMFPACK_MAIN_VERSION, + UMFPACK_SUB_VERSION, UMFPACK_SUBSUB_VERSION, UMFPACK_DATE)) ; #ifndef NDEBUG PRINTF (( @@ -119,7 +120,7 @@ GLOBAL void UMFPACK_report_info #endif #ifdef DLONG PRINTF ((" matrix entry defined as: double\n")) ; - PRINTF ((" Int (generic integer) defined as: long\n")) ; + PRINTF ((" Int (generic integer) defined as: UF_long\n")) ; #endif #ifdef ZINT PRINTF ((" matrix entry defined as: double complex\n")) ; @@ -127,27 +128,20 @@ GLOBAL void UMFPACK_report_info #endif #ifdef ZLONG PRINTF ((" matrix entry defined as: double complex\n")) ; - PRINTF ((" Int (generic integer) defined as: long\n")) ; + PRINTF ((" Int (generic integer) defined as: UF_long\n")) ; #endif /* ---------------------------------------------------------------------- */ /* print compile-time options */ /* ---------------------------------------------------------------------- */ - PRINTF ((" BLAS library used: ")) ; + PRINTF ((" BLAS library used: ")) ; -#if defined (USE_NO_BLAS) +#ifdef NBLAS PRINTF (("none. UMFPACK will be slow.\n")) ; -#elif defined (USE_C_BLAS) - PRINTF (("C-BLAS.\n")) ; -#elif defined (USE_MATLAB_BLAS) - PRINTF (("built-in MATLAB BLAS.\n")) ; -#elif defined (USE_SUNPERF_BLAS) - PRINTF (("Sun Performance Library BLAS.\n")) ; -#elif defined (USE_SCSL_BLAS) - PRINTF (("SGI SCSL BLAS.\n")) ; -#elif defined (USE_FORTRAN_BLAS) - PRINTF (("Fortran BLAS.\n")) ; +#else + PRINTF (("Fortran BLAS. size of BLAS integer: "ID"\n", + (Int) (sizeof (BLAS_INT)))) ; #endif PRINTF ((" MATLAB: ")) ; @@ -155,7 +149,7 @@ GLOBAL void UMFPACK_report_info PRINTF (("yes.\n")) ; #else #ifdef MATHWORKS - PRINTF (("yes (using internal ut* routines).\n")) ; + PRINTF (("yes.\n")) ; #else PRINTF (("no.\n")) ; #endif @@ -193,7 +187,7 @@ GLOBAL void UMFPACK_report_info PRINT_INFO (" size of int: "ID" bytes\n", (Int) Info [UMFPACK_SIZE_OF_INT]) ; - PRINT_INFO (" size of long: "ID" bytes\n", + PRINT_INFO (" size of UF_long: "ID" bytes\n", (Int) Info [UMFPACK_SIZE_OF_LONG]) ; PRINT_INFO (" size of pointer: "ID" bytes\n", (Int) Info [UMFPACK_SIZE_OF_POINTER]) ; @@ -494,13 +488,15 @@ GLOBAL void UMFPACK_report_info PRINT_INFO (" numeric factorization wallclock time (sec): %.2f\n", twnum) ; - if (tnum > 0 && fnum > 0) +#define TMIN 0.001 + + if (tnum > TMIN && fnum > 0) { PRINT_INFO ( " numeric factorization mflops (CPU time): %.2f\n", 1e-6 * fnum / tnum) ; } - if (twnum > 0 && fnum > 0) + if (twnum > TMIN && fnum > 0) { PRINT_INFO ( " numeric factorization mflops (wallclock): %.2f\n", @@ -509,12 +505,12 @@ GLOBAL void UMFPACK_report_info ttot = EMPTY ; ftot = fnum ; - if (tsym >= 0 && tnum >= 0) + if (tsym >= TMIN && tnum >= 0) { ttot = tsym + tnum ; PRINT_INFO (" symbolic + numeric CPU time (sec): %.2f\n", ttot) ; - if (ftot > 0 && ttot > 0) + if (ftot > 0 && ttot > TMIN) { PRINT_INFO ( " symbolic + numeric mflops (CPU time): %.2f\n", @@ -523,12 +519,12 @@ GLOBAL void UMFPACK_report_info } twtot = EMPTY ; - if (twsym >= 0 && twnum >= 0) + if (twsym >= TMIN && twnum >= TMIN) { twtot = twsym + twnum ; PRINT_INFO (" symbolic + numeric wall clock time (sec): %.2f\n", twtot) ; - if (ftot > 0 && twtot > 0) + if (ftot > 0 && twtot > TMIN) { PRINT_INFO ( " symbolic + numeric mflops (wall clock): %.2f\n", @@ -558,13 +554,13 @@ GLOBAL void UMFPACK_report_info tsolve) ; PRINT_INFO (" solve wall clock time (sec): %.2f\n", twsolve) ; - if (fsolve > 0 && tsolve > 0) + if (fsolve > 0 && tsolve > TMIN) { PRINT_INFO ( " solve mflops (CPU time): %.2f\n", 1e-6 * fsolve / tsolve) ; } - if (fsolve > 0 && twsolve > 0) + if (fsolve > 0 && twsolve > TMIN) { PRINT_INFO ( " solve mflops (wall clock time): %.2f\n", @@ -578,15 +574,15 @@ GLOBAL void UMFPACK_report_info "\n total symbolic + numeric + solve flops: %.5e\n", ftot) ; } - if (tsolve >= 0) + if (tsolve >= TMIN) { - if (ttot >= 0 && ftot >= 0) + if (ttot >= TMIN && ftot >= 0) { ttot += tsolve ; PRINT_INFO ( " total symbolic + numeric + solve CPU time: %.2f\n", ttot) ; - if (ftot > 0 && ttot > 0) + if (ftot > 0 && ttot > TMIN) { PRINT_INFO ( " total symbolic + numeric + solve mflops (CPU): %.2f\n", @@ -595,15 +591,15 @@ GLOBAL void UMFPACK_report_info } } - if (twsolve >= 0) + if (twsolve >= TMIN) { - if (twtot >= 0 && ftot >= 0) + if (twtot >= TMIN && ftot >= 0) { twtot += tsolve ; PRINT_INFO ( " total symbolic+numeric+solve wall clock time: %.2f\n", twtot) ; - if (ftot > 0 && twtot > 0) + if (ftot > 0 && twtot > TMIN) { PRINT_INFO ( " total symbolic+numeric+solve mflops(wallclock) %.2f\n", diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_matrix.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_matrix.c index 1c2914ed25..6074ea4938 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_matrix.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_matrix.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_numeric.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_numeric.c index 670f79e60f..f70555fdea 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_numeric.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_perm.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_perm.c index f6f78bf07f..5f3baab2eb 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_perm.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_perm.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_status.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_status.c index 7be57b91f4..5e4e142322 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_status.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_status.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -51,7 +51,8 @@ GLOBAL void UMFPACK_report_status PRINTF6 (("%s", UMFPACK_LICENSE_PART1)) ; PRINTF6 (("%s", UMFPACK_LICENSE_PART2)) ; PRINTF6 (("%s", UMFPACK_LICENSE_PART3)) ; - PRINTF (("%s: ", UMFPACK_VERSION)) ; + PRINTF (("UMFPACK V%d.%d.%d (%s): ", UMFPACK_MAIN_VERSION, + UMFPACK_SUB_VERSION, UMFPACK_SUBSUB_VERSION, UMFPACK_DATE)) ; switch (status) { diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_symbolic.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_symbolic.c index ad43478dfb..57e134e01f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_symbolic.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_triplet.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_triplet.c index c7212ff404..ba11a69d6b 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_triplet.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_triplet.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_vector.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_vector.c index 204801b6e4..a88804c642 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_vector.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_vector.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_save_numeric.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_save_numeric.c index a912a6f65b..dc2ae32a79 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_save_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_save_numeric.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_save_symbolic.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_save_symbolic.c index e3144d83ac..7469e04ce4 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_save_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_save_symbolic.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_scale.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_scale.c index a2f8b78a07..49467a5a7e 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_scale.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_scale.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_solve.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_solve.c index 1db93566e7..c4e826386f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_solve.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_solve.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_symbolic.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_symbolic.c index 20b9a26da5..41be72ba5a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_symbolic.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_tictoc.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_tictoc.c index 96d34d1c51..7fc5fba04c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_tictoc.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_tictoc.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_timer.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_timer.c index 2307fedd02..f4f245c9cc 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_timer.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_timer.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_transpose.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_transpose.c index 3717fdf978..25ea2110ff 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_transpose.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_transpose.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_triplet_to_col.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_triplet_to_col.c index d72e069bb1..97750d1eff 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_triplet_to_col.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_triplet_to_col.c @@ -3,7 +3,7 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ diff --git a/deal.II/doc/news/changes.html b/deal.II/doc/news/changes.html index bc1c19cef7..3c183dd4dc 100644 --- a/deal.II/doc/news/changes.html +++ b/deal.II/doc/news/changes.html @@ -230,6 +230,12 @@ inconvenience this causes.

      General

        +
      1. Updated: The version of UMFPACK bundled with deal.II has been updated + to release 5.1.0. +
        + (WB 2007/08/15) +

        +
      2. New: The step-27 tutorial program has been added. It solves a Laplace equation with hp finite elements and shows how to set finite element degrees, assemble matrices on -- 2.39.5