From 70494d0ae3277f97e06b143dab8d6851377029ed Mon Sep 17 00:00:00 2001 From: wolf Date: Thu, 30 Jun 2005 16:04:46 +0000 Subject: [PATCH] Import latest version 4.4. git-svn-id: https://svn.dealii.org/trunk@10997 0785d39b-7218-0410-832d-ea1e28bc413d --- .../umfpack/AMD/{README => README.txt} | 0 deal.II/contrib/umfpack/AMD/Source/amd_2.c | 2 +- deal.II/contrib/umfpack/README.deal.II | 2 +- deal.II/contrib/umfpack/UMFPACK/Doc/ChangeLog | 79 ++++- deal.II/contrib/umfpack/UMFPACK/Doc/License | 2 +- deal.II/contrib/umfpack/UMFPACK/Doc/Makefile | 4 + .../umfpack/UMFPACK/Doc/QuickStart.pdf | Bin 125745 -> 137498 bytes .../umfpack/UMFPACK/Doc/QuickStart.tex | 39 ++- .../contrib/umfpack/UMFPACK/Doc/UserGuide.bib | 60 ++-- .../contrib/umfpack/UMFPACK/Doc/UserGuide.pdf | Bin 391768 -> 401941 bytes .../umfpack/UMFPACK/Doc/UserGuide.sed1 | 1 + .../umfpack/UMFPACK/Doc/UserGuide.stex | 247 ++++++++++---- .../contrib/umfpack/UMFPACK/Include/umfpack.h | 73 ++--- .../UMFPACK/Include/umfpack_col_to_triplet.h | 5 +- .../UMFPACK/Include/umfpack_defaults.h | 10 +- .../UMFPACK/Include/umfpack_free_numeric.h | 5 +- .../UMFPACK/Include/umfpack_free_symbolic.h | 5 +- .../UMFPACK/Include/umfpack_get_determinant.h | 192 +++++++++++ .../UMFPACK/Include/umfpack_get_lunz.h | 5 +- .../UMFPACK/Include/umfpack_get_numeric.h | 59 ++-- .../UMFPACK/Include/umfpack_get_symbolic.h | 17 +- .../UMFPACK/Include/umfpack_load_numeric.h | 5 +- .../UMFPACK/Include/umfpack_load_symbolic.h | 5 +- .../umfpack/UMFPACK/Include/umfpack_numeric.h | 40 +-- .../UMFPACK/Include/umfpack_qsymbolic.h | 16 +- .../UMFPACK/Include/umfpack_report_control.h | 5 +- .../UMFPACK/Include/umfpack_report_info.h | 5 +- .../UMFPACK/Include/umfpack_report_matrix.h | 23 +- .../UMFPACK/Include/umfpack_report_numeric.h | 5 +- .../UMFPACK/Include/umfpack_report_perm.h | 5 +- .../UMFPACK/Include/umfpack_report_status.h | 7 +- .../UMFPACK/Include/umfpack_report_symbolic.h | 5 +- .../UMFPACK/Include/umfpack_report_triplet.h | 18 +- .../UMFPACK/Include/umfpack_report_vector.h | 15 +- .../UMFPACK/Include/umfpack_save_numeric.h | 9 +- .../UMFPACK/Include/umfpack_save_symbolic.h | 9 +- .../umfpack/UMFPACK/Include/umfpack_scale.h | 19 +- .../umfpack/UMFPACK/Include/umfpack_solve.h | 39 ++- .../UMFPACK/Include/umfpack_symbolic.h | 40 +-- .../umfpack/UMFPACK/Include/umfpack_tictoc.h | 5 +- .../umfpack/UMFPACK/Include/umfpack_timer.h | 10 +- .../UMFPACK/Include/umfpack_transpose.h | 33 +- .../UMFPACK/Include/umfpack_triplet_to_col.h | 40 +-- .../umfpack/UMFPACK/Include/umfpack_wsolve.h | 14 +- .../contrib/umfpack/UMFPACK/MATLAB/Contents.m | 8 +- .../umfpack/UMFPACK/MATLAB/GNUmakefile | 13 +- .../contrib/umfpack/UMFPACK/MATLAB/Makefile | 13 +- .../umfpack/UMFPACK/MATLAB/lu_normest.m | 4 +- .../contrib/umfpack/UMFPACK/MATLAB/luflop.m | 6 +- .../umfpack/UMFPACK/MATLAB/luflopmex.c | 8 +- .../contrib/umfpack/UMFPACK/MATLAB/umfpack.m | 10 +- .../umfpack/UMFPACK/MATLAB/umfpack_btf.m | 4 +- .../umfpack/UMFPACK/MATLAB/umfpack_demo.m | 11 +- .../umfpack/UMFPACK/MATLAB/umfpack_demo.m.out | 24 +- .../umfpack/UMFPACK/MATLAB/umfpack_details.m | 25 +- .../umfpack/UMFPACK/MATLAB/umfpack_make.m | 12 +- .../umfpack/UMFPACK/MATLAB/umfpack_report.m | 6 +- .../umfpack/UMFPACK/MATLAB/umfpack_simple.m | 14 +- .../UMFPACK/MATLAB/umfpack_simple.m.out | 17 +- .../umfpack/UMFPACK/MATLAB/umfpack_solve.m | 6 +- .../umfpack/UMFPACK/MATLAB/umfpack_test.m | 152 +++++++++ .../umfpack/UMFPACK/MATLAB/umfpackmex.c | 110 ++++++- .../umfpack/UMFPACK/{README => README.txt} | 40 ++- .../contrib/umfpack/UMFPACK/Source/umf_2by2.c | 35 +- .../contrib/umfpack/UMFPACK/Source/umf_2by2.h | 5 +- .../umfpack/UMFPACK/Source/umf_analyze.c | 7 +- .../umfpack/UMFPACK/Source/umf_analyze.h | 5 +- .../umfpack/UMFPACK/Source/umf_apply_order.c | 5 +- .../umfpack/UMFPACK/Source/umf_apply_order.h | 5 +- .../umfpack/UMFPACK/Source/umf_assemble.c | 9 +- .../umfpack/UMFPACK/Source/umf_assemble.h | 5 +- .../umfpack/UMFPACK/Source/umf_blas3_update.c | 5 +- .../umfpack/UMFPACK/Source/umf_blas3_update.h | 5 +- .../umfpack/UMFPACK/Source/umf_build_tuples.c | 5 +- .../umfpack/UMFPACK/Source/umf_build_tuples.h | 5 +- .../umfpack/UMFPACK/Source/umf_colamd.c | 5 +- .../umfpack/UMFPACK/Source/umf_colamd.h | 5 +- .../umfpack/UMFPACK/Source/umf_config.h | 7 +- .../UMFPACK/Source/umf_create_element.c | 5 +- .../UMFPACK/Source/umf_create_element.h | 5 +- .../contrib/umfpack/UMFPACK/Source/umf_dump.c | 19 +- .../contrib/umfpack/UMFPACK/Source/umf_dump.h | 5 +- .../umfpack/UMFPACK/Source/umf_extend_front.c | 9 +- .../umfpack/UMFPACK/Source/umf_extend_front.h | 5 +- .../contrib/umfpack/UMFPACK/Source/umf_free.c | 5 +- .../contrib/umfpack/UMFPACK/Source/umf_free.h | 5 +- .../umfpack/UMFPACK/Source/umf_fsize.c | 5 +- .../umfpack/UMFPACK/Source/umf_fsize.h | 5 +- .../UMFPACK/Source/umf_garbage_collection.c | 5 +- .../UMFPACK/Source/umf_garbage_collection.h | 5 +- .../umfpack/UMFPACK/Source/umf_get_memory.c | 7 +- .../umfpack/UMFPACK/Source/umf_get_memory.h | 5 +- .../umfpack/UMFPACK/Source/umf_grow_front.c | 16 +- .../umfpack/UMFPACK/Source/umf_grow_front.h | 5 +- .../umfpack/UMFPACK/Source/umf_init_front.c | 9 +- .../umfpack/UMFPACK/Source/umf_init_front.h | 5 +- .../umfpack/UMFPACK/Source/umf_internal.h | 14 +- .../UMFPACK/Source/umf_is_permutation.c | 5 +- .../UMFPACK/Source/umf_is_permutation.h | 5 +- .../umfpack/UMFPACK/Source/umf_kernel.c | 5 +- .../umfpack/UMFPACK/Source/umf_kernel.h | 5 +- .../umfpack/UMFPACK/Source/umf_kernel_init.c | 41 +-- .../umfpack/UMFPACK/Source/umf_kernel_init.h | 5 +- .../UMFPACK/Source/umf_kernel_wrapup.c | 10 +- .../UMFPACK/Source/umf_kernel_wrapup.h | 5 +- .../umfpack/UMFPACK/Source/umf_local_search.c | 18 +- .../umfpack/UMFPACK/Source/umf_local_search.h | 5 +- .../umfpack/UMFPACK/Source/umf_lsolve.c | 8 +- .../umfpack/UMFPACK/Source/umf_lsolve.h | 5 +- .../umfpack/UMFPACK/Source/umf_ltsolve.c | 8 +- .../umfpack/UMFPACK/Source/umf_ltsolve.h | 5 +- .../umfpack/UMFPACK/Source/umf_malloc.c | 9 +- .../umfpack/UMFPACK/Source/umf_malloc.h | 10 +- .../UMFPACK/Source/umf_mem_alloc_element.c | 5 +- .../UMFPACK/Source/umf_mem_alloc_element.h | 5 +- .../UMFPACK/Source/umf_mem_alloc_head_block.c | 5 +- .../UMFPACK/Source/umf_mem_alloc_head_block.h | 5 +- .../UMFPACK/Source/umf_mem_alloc_tail_block.c | 5 +- .../UMFPACK/Source/umf_mem_alloc_tail_block.h | 5 +- .../UMFPACK/Source/umf_mem_free_tail_block.c | 5 +- .../UMFPACK/Source/umf_mem_free_tail_block.h | 5 +- .../UMFPACK/Source/umf_mem_init_memoryspace.c | 5 +- .../UMFPACK/Source/umf_mem_init_memoryspace.h | 5 +- .../umfpack/UMFPACK/Source/umf_multicompile.c | 58 ++++ .../umfpack/UMFPACK/Source/umf_realloc.c | 5 +- .../umfpack/UMFPACK/Source/umf_realloc.h | 5 +- .../umfpack/UMFPACK/Source/umf_report_perm.c | 5 +- .../umfpack/UMFPACK/Source/umf_report_perm.h | 5 +- .../UMFPACK/Source/umf_report_vector.c | 19 +- .../UMFPACK/Source/umf_report_vector.h | 5 +- .../umfpack/UMFPACK/Source/umf_row_search.c | 5 +- .../umfpack/UMFPACK/Source/umf_row_search.h | 5 +- .../umfpack/UMFPACK/Source/umf_scale.c | 7 +- .../umfpack/UMFPACK/Source/umf_scale.h | 5 +- .../umfpack/UMFPACK/Source/umf_scale_column.c | 9 +- .../umfpack/UMFPACK/Source/umf_scale_column.h | 5 +- .../umfpack/UMFPACK/Source/umf_set_stats.c | 5 +- .../umfpack/UMFPACK/Source/umf_set_stats.h | 5 +- .../umfpack/UMFPACK/Source/umf_singletons.c | 40 ++- .../umfpack/UMFPACK/Source/umf_singletons.h | 6 +- .../umfpack/UMFPACK/Source/umf_solve.c | 145 +++++---- .../umfpack/UMFPACK/Source/umf_solve.h | 5 +- .../umfpack/UMFPACK/Source/umf_start_front.c | 11 +- .../umfpack/UMFPACK/Source/umf_start_front.h | 5 +- .../umfpack/UMFPACK/Source/umf_store_lu.c | 77 +++-- .../umfpack/UMFPACK/Source/umf_store_lu.h | 5 +- .../UMFPACK/Source/umf_symbolic_usage.c | 5 +- .../UMFPACK/Source/umf_symbolic_usage.h | 5 +- .../umfpack/UMFPACK/Source/umf_transpose.c | 138 ++++++-- .../umfpack/UMFPACK/Source/umf_transpose.h | 5 +- .../umfpack/UMFPACK/Source/umf_triplet.c | 72 +++- .../umfpack/UMFPACK/Source/umf_triplet.h | 5 +- .../UMFPACK/Source/umf_tuple_lengths.c | 7 +- .../UMFPACK/Source/umf_tuple_lengths.h | 5 +- .../umfpack/UMFPACK/Source/umf_usolve.c | 8 +- .../umfpack/UMFPACK/Source/umf_usolve.h | 5 +- .../umfpack/UMFPACK/Source/umf_utsolve.c | 8 +- .../umfpack/UMFPACK/Source/umf_utsolve.h | 5 +- .../UMFPACK/Source/umf_valid_numeric.c | 5 +- .../UMFPACK/Source/umf_valid_numeric.h | 5 +- .../UMFPACK/Source/umf_valid_symbolic.c | 5 +- .../UMFPACK/Source/umf_valid_symbolic.h | 5 +- .../umfpack/UMFPACK/Source/umf_version.h | 48 ++- .../UMFPACK/Source/umfpack_col_to_triplet.c | 5 +- .../umfpack/UMFPACK/Source/umfpack_defaults.c | 5 +- .../UMFPACK/Source/umfpack_free_numeric.c | 5 +- .../UMFPACK/Source/umfpack_free_symbolic.c | 5 +- .../UMFPACK/Source/umfpack_get_determinant.c | 307 ++++++++++++++++++ .../umfpack/UMFPACK/Source/umfpack_get_lunz.c | 5 +- .../UMFPACK/Source/umfpack_get_numeric.c | 149 +++++++-- .../UMFPACK/Source/umfpack_get_symbolic.c | 5 +- .../UMFPACK/Source/umfpack_load_numeric.c | 5 +- .../UMFPACK/Source/umfpack_load_symbolic.c | 5 +- .../umfpack/UMFPACK/Source/umfpack_numeric.c | 22 +- .../UMFPACK/Source/umfpack_qsymbolic.c | 127 +++++--- .../UMFPACK/Source/umfpack_report_control.c | 21 +- .../UMFPACK/Source/umfpack_report_info.c | 9 +- .../UMFPACK/Source/umfpack_report_matrix.c | 20 +- .../UMFPACK/Source/umfpack_report_numeric.c | 7 +- .../UMFPACK/Source/umfpack_report_perm.c | 7 +- .../UMFPACK/Source/umfpack_report_status.c | 9 +- .../UMFPACK/Source/umfpack_report_symbolic.c | 7 +- .../UMFPACK/Source/umfpack_report_triplet.c | 18 +- .../UMFPACK/Source/umfpack_report_vector.c | 7 +- .../UMFPACK/Source/umfpack_save_numeric.c | 5 +- .../UMFPACK/Source/umfpack_save_symbolic.c | 5 +- .../umfpack/UMFPACK/Source/umfpack_scale.c | 80 ++++- .../umfpack/UMFPACK/Source/umfpack_solve.c | 16 +- .../umfpack/UMFPACK/Source/umfpack_symbolic.c | 5 +- .../umfpack/UMFPACK/Source/umfpack_tictoc.c | 7 +- .../umfpack/UMFPACK/Source/umfpack_timer.c | 8 +- .../UMFPACK/Source/umfpack_transpose.c | 5 +- .../UMFPACK/Source/umfpack_triplet_to_col.c | 48 ++- 193 files changed, 2511 insertions(+), 1309 deletions(-) rename deal.II/contrib/umfpack/AMD/{README => README.txt} (100%) create mode 100644 deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_determinant.h create mode 100644 deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_test.m rename deal.II/contrib/umfpack/UMFPACK/{README => README.txt} (93%) create mode 100644 deal.II/contrib/umfpack/UMFPACK/Source/umf_multicompile.c create mode 100644 deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_determinant.c diff --git a/deal.II/contrib/umfpack/AMD/README b/deal.II/contrib/umfpack/AMD/README.txt similarity index 100% rename from deal.II/contrib/umfpack/AMD/README rename to deal.II/contrib/umfpack/AMD/README.txt diff --git a/deal.II/contrib/umfpack/AMD/Source/amd_2.c b/deal.II/contrib/umfpack/AMD/Source/amd_2.c index 6de3ec507f..ca1141e265 100644 --- a/deal.II/contrib/umfpack/AMD/Source/amd_2.c +++ b/deal.II/contrib/umfpack/AMD/Source/amd_2.c @@ -584,7 +584,7 @@ GLOBAL void AMD_2 } else { - dense = (Int) (alpha * sqrt ((double) n)) ; + dense = alpha * sqrt ((double) n) ; } dense = MAX (16, dense) ; dense = MIN (n, dense) ; diff --git a/deal.II/contrib/umfpack/README.deal.II b/deal.II/contrib/umfpack/README.deal.II index 56c3c4133e..b2d3beade0 100644 --- a/deal.II/contrib/umfpack/README.deal.II +++ b/deal.II/contrib/umfpack/README.deal.II @@ -1,4 +1,4 @@ -This directory is an almost identical copy of the UMFPACK 4.3 +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 diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/ChangeLog b/deal.II/contrib/umfpack/UMFPACK/Doc/ChangeLog index 165d5efa72..1dd8c66b8c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Doc/ChangeLog +++ b/deal.II/contrib/umfpack/UMFPACK/Doc/ChangeLog @@ -1,3 +1,54 @@ +Jan. 28, 2005: v4.4 released + + * bug fix: when Qinit is provided to umfpack_*_qsymbolic, + only the symmetric and unsymmetric strategies are now permitted. + The auto and 2-by-2 strategies are not allowed. In v4.3 and + earlier, providing Qinit and requesting the symmetric strategy + did not always work (you got the unsymmetric strategy instead). + This does not affect umfpack_*_symbolic, which computes its own + ordering and can use all 4 strategies (auto, symmetric, unsymmetric, + and 2-by-2). + + * umfpack_get_determinant added. + + * packed complex case added for all routines (previously only used in + umfpack_report_vector). This allows arrays of ANSI C/C++ complex + type to be passed directly to UMFPACK. + + * added umf_multicomple.c to assist in the compilation of UMFPACK + in Microsoft Visual Studio, which does not have the required + flexibility of the Unix "make" command. + + * local variable declarations reordered to encourage double-word + alignment of double's and Entry's, for better performance. + + * note that with the exception of the behavior when a user-provided + ordering is passed to umfpack_*_qsymbolic, versions 4.1 through 4.4 + have comparable performance (ordering quality, memory usage, + and run time). v4.1 is much better than v4.0 in performance. + +Jan. 11, 2005: v4.3.1 released + + * bug fix in umf_solve. This bug is only the 4th one found in the C + versions of UMFPACK to date (Version 3.0 to 4.3.1, from March 2001 to + Jan. 2005, excluding workarounds for quirky compilers). No bugs have + been reported in the last Fortran version of UMFPACK (MA38, or UMFPACK + V2.2.1) since its release in Jan. 1998. + + In Version 4.3, a bug in umf_solve caused iterative refinement + to be disabled when solving A'x=b or A.'x=b after factorizing A. + Modified the umfpack mexFunction to factorize A and then solve A'x=b + when performing the operation x=b/A (as "umfpack(b,'/',A). Note that + this has no effect on the use of UMFPACK in MATLAB itself, since MATLAB + does not use the umfpack mexFunction for x=b/A. When computing x=b/A, + MATLAB factorizes A' and computes x=(A'\b')' instead. The following + source code files changed: + + UMFPACK/MATLAB/umfpackmex.c (see above) + UMFPACK/Source/umf_solve.c (see source code: 2 lines changed) + UMFPACK/Include/umfpack.h (version and date changed) + UMFPACK/MATLAB/umfpack_test.m (new file) + Jan. 16, 2004: v4.3 released. * user interface of v4.3 is upwardly-compatible with v4.2 and v4.1. @@ -267,24 +318,24 @@ August-October, 2001: * added umfpack_btf M-file. * modified the BLAS update in the frontal matrix. If there are only - a few pivots in remaining in the current front, then the BLAS3 update - is delayed to include pivots in the next front. + a few pivots in remaining in the current front, then the BLAS3 update + is delayed to include pivots in the next front. * Removed the special-case handling of dense columns from the numerical - factorization (kept it in the colamd preordering). This improves the - performance of UMFPACK on dense matrices by a factor of 5 or so, and - simplifies the code. + factorization (kept it in the colamd preordering). This improves the + performance of UMFPACK on dense matrices by a factor of 5 or so, and + simplifies the code. * Added a symmetric-preference pivoting option. The option slightly - (but uniformly) improves the ordering when factorizing matrices with - symmetric nonzero pattern. That class of matrix is better handled by - the symmetric-pattern multifrontal method (MA41 in the Harwell - Subroutine Library), however. + (but uniformly) improves the ordering when factorizing matrices with + symmetric nonzero pattern. That class of matrix is better handled by + the symmetric-pattern multifrontal method (MA41 in the Harwell + Subroutine Library), however. * Fixed the detection of integer overflow. The 32-bit version cannot - make use of more than 2GB of main memory (use the 64-bit version - in that case, instead). The 32-bit version did not correctly detect - when it was trying to factorize too large of a matrix. + make use of more than 2GB of main memory (use the 64-bit version + in that case, instead). The 32-bit version did not correctly detect + when it was trying to factorize too large of a matrix. May 4, 2001: @@ -296,8 +347,8 @@ April 30, 2001: UMFPACK Version 3.0 released. Changes since 3.0Beta release: * 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, and 4n for the permanent LU factors which was allocated + 12n integers (8n temporary workspace used during numerical factorization, + and 4n for the permanent LU factors which was allocated at the beginning of factorization). * Ported to the IBM RS 6000 and Compaq Alpha, with help from Anshul Gupta diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/License b/deal.II/contrib/umfpack/UMFPACK/Doc/License index 20fdc97a62..2347e22ff6 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Doc/License +++ b/deal.II/contrib/umfpack/UMFPACK/Doc/License @@ -1,4 +1,4 @@ -UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. +UMFPACK Version 4.4 (Jan. 28, 2005), Copyright (c) 2005 by Timothy A. Davis. All Rights Reserved. UMFPACK License: diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/Makefile b/deal.II/contrib/umfpack/UMFPACK/Doc/Makefile index a7458bbcf6..f4d62abbee 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Doc/Makefile +++ b/deal.II/contrib/umfpack/UMFPACK/Doc/Makefile @@ -2,6 +2,9 @@ # UMFPACK Makefile for compiling on Unix systems (for GNU or original make) #------------------------------------------------------------------------------- +# UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. +# All Rights Reserved. See ../Doc/License for License. + all: dist include ../Make/Make.include @@ -22,6 +25,7 @@ purge: clean UMFPACK = umfpack_col_to_triplet umfpack_defaults umfpack_free_numeric \ umfpack_free_symbolic umfpack_get_numeric umfpack_get_lunz \ + umfpack_get_determinant \ umfpack_get_symbolic umfpack_numeric umfpack_qsymbolic \ umfpack_report_control umfpack_report_info umfpack_report_matrix \ umfpack_report_numeric umfpack_report_perm umfpack_report_status \ diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/QuickStart.pdf b/deal.II/contrib/umfpack/UMFPACK/Doc/QuickStart.pdf index 43c785cfdcbf8812d11c12207d35470573685f98..db89a759ad9db3b97f37c99ff737ea9bb779c66e 100644 GIT binary patch delta 80210 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 T49? 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 delta 68825 zcmZU(V{j&6*R>sIV%xTD+nQJtXJY$`?JKr1;l#FW+qU`6{h+?5>igBJy1S}>bk#nO zz1GU8`|)=P8iqnyT#|u>kqs7j>w^Zt#>~nL%txRG#As_f@3)}%O3J}6`SkJj07;m#By$Q%Jkx?3Q`2o%UJv4TCNEJ= zRPsizsA~Azw`r}@`}^iJGx7hThOCuLZPX?)?^J3Z4L=14Ghq-@1&*U=l=<)6~1|8cx) zu_EqNl9Vga0E0oj-GeByv@AOtN*JlX+3Q~_k>*oDC`<=Ui9 zd$Ug*82Q8ooVy{q>;ktcB&*rFIjQh!zUEs8+-Mq9wL0nAo|%WWU%oiZxOLOoH1;X1 zYt9L2tQXWZ(fnax$O-n#no9jr$JjPt@YP>JpjWQEceZPB#0?zPsRZu_ro@8=$rPWfTPC7jPk+mkuuWiHugz*)vlE3td&x?JClN;d%pX7nc=et z_-n%($*7U_Y84F~>FZ9&jL;CRUT9Xdg^?D*@)!E7ly#W&R%hK263JHnfWvhgfodQY z!6$&w5}BZl@pL6m*7|(6(Av=}w(uP1WrF)P~8{!phRyuM(Vq zA`gOW$?w(2#VPrf7q4R7{!{b&IbSQY;V?E2dzw!=}?JMKeIfN%t4^|QK`}8hR!p&5i-Mv#w zbUI_*Sx@BbcUInCx|E_4w_GkexVqAIrHv4*)Oz~$+h_c3*cBtw26sBN5odUF0JI=G zDG%39In!+ml6&fPYx$1Yy7@*{ z2m*y{P_O7b2X-Y&(BPDzN8eBiBIoOr`ThQwh zQ7d#EvXyvu?L7>&d9pyGsmW&nfZyfmP?JK}@4wpKxk1!g?KFQ*5rmH!ucddV`3Dhu zk#l8MF|KP8KIhj^5nLL0%TjM_>ExL z6Wb;-`%a-*nB+R*T=2Eeu04n6+->l=zqBFjw+nZmF*`awmtVQBCmELQg%Bt2)MMi! z1F8(t%IMcvcm+k=;y#xt*&^tM%*Xoy02 z8U_fJ;d4TS-co#TTToAx0CAzwwwiS?b3RZEV<91 zMA^j%LK+S3qBvtg@b+LTj;E(eOBgi;+dec2BP$d)`U^uz%h1_Fhic17rs_t zj#)f&zc2|q)QMRQ7C2*hnm;LMDi*f7kZ(cQ_Wr?-JcYl$r2cu?fZ&8DF@%?k^LY1q z)Zpn7*cm?%KPU7z{IU}*B~_EkVS*b*B2TL|-h|ZBd=iSIKmu^*e4wzmw$rdwv*9i~ zNjzshyJCRNd6n%8=-=IWUCH_Vtr&1rmaJ;G6yw1}!7LETGt1I_yO~M!^VuxUDRk&u z$Qbv*v7c2z1{;H&fJUn79HpgQ=hySW!CeOPY^kO_tM=01UI0Xz6 zqvZCNykqy};-$u6BZfnSK$N`cOtv>w5f>Csqnht&Ir2lyxLDq@`X$;r)Nfh%(Q`sJ z#o;L{+$QQP-bM*FrW8oF#PKxjmjYi2$BE$`Mx~p*CU=l&ln0=43k2D9Qyp2I?b4yM zVT1rnpD-i`XveAyolD&{p}j3K&(+t*%)|SDtHNVUo>aDY*+^;{^5@QpWV}T9nVb(H zCGoA%)_Al@u^MLJwGeD1b&!3Kqaw2Q&+E8)N^C*vUGPX@Mh}|e__prI4YSzUXzZt_ z(o1GFFY0vbK`0=dj{n1SkaCuSLhsmG3#;iQMw;#fLI^PIf|! zw2(#n{uoly<1SQzD zetJU;U_Dp_;npdmIF&*>m)sj8iknb^1dxzcW$wKXH0INYkY|uEq&r8D8Nu%(p9W)E zk0RW#w*)HTj^o2AbY$J3m^IUjWA16lf~o%um42_-0S_DYbBSI4I15x+n+2)lD-9Ck zMCT!x;hJSbar8pvw{y_9O>b68T;mq>?sSI&3>DEpXOldEM(jLeK-d{SDXR5Lo3uP> z!53aA1z_nOKV#s6C_7aWf34!{Q65N3&oitIo~zeKB-Sji8zKPXti zdyYj4m)j+IFc3Bn1ux@yqf-L{3dqLIt4&YU22x#dA^Z}9or~?DydK7CDLJvHLz!~` zQUUIbrtgfWDEui&1tW?#`j+%jQf>7|A>BBmP}eNMT>9gmS#qQNRUTEd8yWKzQ$R-M zK;NVQ?&`$PImlTf{B^j|enKO|l7_E=hdml`{`f~&Xi_$dm*!~G6Aza$-K9}%jq?j~ zG!boK-vnyzrGCi*D&PM4XgzmK;%F5>UPPD=Xm|}AcTiId#JnXazm={JR$i{{oEb_} zkb-f|cv2n&i*)5pR^GLVpB!nvpwll(_8jIl-s5@uRC)hWb`hILYRItE|`P%+W2PIcI zXqM6VW=CPjN+Mgf7)V&pvY?b4;OD|bi<4+KFU+TrGAoqB>si#dOXVr`Q}2Vg-AG^~ z>cb9htQ(BB(x)`Vuvg}l0=J?{EAtGCe5$}K(3F4+sCsXg5|)5J!G8)!+az*aO z`AA#Af!bx3|G;eJB;f`C?xC6ylab6{F@|Vi~L}O!0Vp z9VrW@wh)0N4xN+SBdl*Z`;(&^d8tBy$*}j-Ci#{H(ejbE=Ue=4x7+X|P2x)Ww#qwz zUX1h@|7KC7M>GQ*@*PYx@sf9;dNuv-E=~cJvqSXnm z%V4V9{G{Ds);FK~jPXe#r}AB%OgpBdeQplJres@JrW2AUenDUpQcxS67nyF)CEWVN zVx_O;GqW>wc5yN@wuSwt?0;FqvJx{B|GN_N^TRT!1LNVp z-ptOz#gdqnhZCrrKnu{>wBO)F1w0!XKNuXe)6@CMp6MewAR%~lvP+{Kk4^?%B-tPEZhgasinm1ZBqi!3bDn8}RW5G7j-7Jz(0(=(NG!Jl8TUTmnQ1Rj zVx7SkkMA7_39zKWu`5%lmq@ADEe$34nlakW;YsIj_upk?Q;<9p6~5S;sXk2vPiM>qe{v!bydb zjwfP@!>Ho?L4?RNO~~>z>;FYYl@c{!MYKhom|vNh;}tea_j4&dnM1y-E)Xg)B5zZ$ z*5oue1Aq~YCxG^+7&x|;sv*-@sl1#=I>*u&mN_;Lse$^JsG=M0Jht8t$YVA%_I4h08fNjPW1h#MFlCcCdL#+wnv;4e-2KzURIV(0|_NHG}}27Dqk?%^U{x0Kh~2PNqn&W^Ok#r~t^3cGGGmQdspSdXEZKCzLAJ3U%%#fZ?Bg!GA zqrzVCAx+hOfV<)28kt1OoL+D$MEs}=pb8wcF&76T)E55>Z(tZKgXoCx)$8l;{1+lS z60qW)(0is+ytDc1=pZvzI>4#*QIJnOEuq$AAAGs+IDtMfpw+zaB6xR{Vaknd(n7<= z8XQy~isO2EB0b)KF3p~_BvDbCloV`P&bj8h4%{tRmGKK|%VtHK1RgnscmOP>2pta7 zS}ld*l1Lm_36{0b_BqcDJ@if(`qMP82moEO($-;z2cH6zU;z)bSYedDOj&v-h0&ny zJa%6i{KemAPQjg&h0{}5))BLZ_S4KfQ6nnUHR?O7Cr_7(Jgu%(vb9Qf*;_Ygb#)0- zOhRBLu6VOZLF`1YHT@t@AOsUl(}xg}A$`m}O`MXGtx7UoJTIXb(Xyj&s;y!J9Y6vU zU6*wdXT;%!l@~r4^h%14e<>!7P>oyzb#Qf#c?t2(8*oQuA*PZ&J&)lK2y3N3gfw4h z{_B$p12y~b6+GN%iYodhdMuwQbn6~y4ILm@6?*xD9;G+20Y%(y7`YLgnVhX0i8v1F zNOMrN94uU~rIwC;eidI2B~Pp&3{b0D&JIhLY~1?u8j=pQI|LiIHyOv~#s)RUQ6i3^ zv(+p1iG=b=Co2qr?>DzEvT9yJ#T}|BGHDx5i}SnqyC!S%ROGn5Z{?p9amSerES{og z_Dq-?=COVGz{LOv5Y&Tio~5@y<{Ep=nu;IzBk2j0D?Sif;77n6ja+oC3IOvak=`Dn z<}r^NY3}Zs#na9^Z;>({0G5{&OQxGf?5Vo!cgWYgI%fsx;Cjwne}><8;u$-XggVr* zXKuIBwz!i;Z{38{pnahwR6&Fi6V^K#Hm8W!dkr`$eEI4k-oX!VxDpUtaMam@Q45t8 z#v5f;)Im4UG$#BDAup`>8vq;c{1o}6i+KLRpV%ZV6R_5j-c*vrL4USX8tL_SWqdoU zeVm9~PULg+u)oT^(MS2}rLF6eO;R_z@!ep~SyD6pE+-c`RE!m?u`p#t;DKUn?ufYi z314;k@ADgOH^l*PSu~N_PVy>y1ZfoD+XFM?JZhoeIU?iU1apPEx&Yx1#-tC^Tiqg_ z{h<#Ouon$YjrJ%whloC(*o#|ZvtKkj*qk*J{QRRDa~k>8q>BeW-Ejm`i`%-->N*6K z-UXTN8a#w@BZK?g2u2z73w-?eitji?MM!y$jSilL%0<2(E7`P{+P;%I}pc6N@K@JOOtp^GExRdG=PEL96q%8ve zu0|z%HNpX?>-1wbh_FCa@NV$#8{%v_gI%w^CXyCugrxlMTr_Mcx8>(8OiPbOeLhw9 z=CH+0emOgPqjTo{n9OMg{jfKzWaKjkq+oTAZp&OmUsyv6JOC49hp;rR%Ny4qe7oBs z72O=lva+8@DN}ZT5$YSK|1=#q6njG}O1i%>1(8M!Ty}9@^Q&lHu*-E+xI* zES=eMvfJ4gC`OXqaAY%CJ|8PVli7NsKDm>zHZ^5%bIxN|AID4m@^heDV>p;yEt}Hv zKxujoApRbA7VxDIP18F!foJU8EVM3a)xpog#=#SHe)i`()Bv=3LL1ZwEpAfyWDL0j z`ReUg9_sRGXwLEE_6wZ#*QSn`>~r9i7Wdq8&es*;omqRQmc~^K*DRNt8)O&P{mMMX zmW8QU@m>@BCmCFlNrg$j?XwVrdY8U`EUJA6nt!sX-_?lMdA zi{RIS+k5?z{By_4MfDFp9cs@(wu?CyFOB za9{mJ5CB#J3e>$B(ZeP6prl+hwKA8`uwvG8Gchf&C$-_$j>Q1y&?I&36zo;5Thqzz z;Wy)&S`Cu^b9gXBvOJF$R^~xW7k%aXc0_m^ee><_K@Lar4PGRM*?((iZ^s%(0#2PU z7e;~o2uiB^5|G{d^HxeB@P0Xw8uucHCwy=41VGH)mTu7wUEO9^F};!c*O5YZc}4eP z4zKI7{|%30Jd`=%(@}pK))PVDl8vINU%#LNZt?{`+lr9!y{V8lvhHHVV%6~H7hUdb zXsy>a!)X)>Ghq~2(cag4Ry9$$Wg>1nb`Ba1KJ=W=f*r03{eWM&{D>4EUccGU4@jYt zH9+@o0edxQm6I)SU$i}YR7yiAjqLUHWD_CG_zs7SZ1Ee|szvz>l4Z<9#vgES#kXY1 zT5FRak}xdh+?l9dkE8wr|nqX7&R6m8D)6MmeWnJ@r|{xhe-dpVqQcR@T~0?ZCJ*D<(Ta|lYO*Qk0KCE_S(yk zW8a2{Dw@3hsFgC|U)HEy8m#2E4MMQdP6f^Off|`Lt_7VUnx>{N?#2Me zC05t(SlOF>JukhgbapR~g#=uli~B4=KJJ-5a(4c{plf_Gp&tT_beiI*LGO+V(n!X- z7bXv_+g{kd8R+QrpRcqD?(Yi=J z;jHbckt+;^kTayTF(+h1uQ)KXc-(GNf3?R*5-rKavmfZ z8gyI-8VJ7Kj7k`33)6JG8MlsIp!bEPe1i{HHM*t75`&Thg?y0E|BK{RVVP9Tob6qm zOw62#Svi6E*7Rts9RCns6;@D?_<#3-fA@VbfEm0bTuhRzoWv~uSrAl-|7mt&HkSX< zEZoFw?EjgxWrTM+V;m~CzF z;O73h)AC57knw;EeL}(l=2_erVqIKS6tj>1yd8({)R3sz1mp|@nZ1Ay6LT5~!`GSe zeW5yzVEUCjK~@}0M0vkx{&ZmTbXlHouSIUmEu^d4SAP+sslNFOr>tkaNJ65p*>9)2 zCJMd_;Nb?3ufw1(P|ze}WiGE};%Ra6sDLqQ(d6s%SMzA*FOJ64m$-#S_4Y}x%xXXHRE%q# zqo(D2FZqI>K0UWf2(Vl)Jwf(%qk)__@XyeGfF`X)Wtt*Wnm!mBJD6Jpyo2cx_IRVs zgV$i!%CV^82ZuK%>XoI#cc1B}N2O9BqFmx_i|be-&W?A3n`gK`K1QB(RFO~dedlef z_H>fHyY2d7Qr}eL+y>qcmVmLQzr7@#k2$xq(74^NynIC2w~vRqK9>m1<0H}*g#D&pPlmb*(U{$U;=ksWPW6e_PS^?)BfCgoGrP6hM3{>VM!W&Xxz z9^NA|vc_Qj5OGx8!KCnH!+9R@y{f-2i#0eY0Zu?Sh2F5TeCz;B8T^S<&-jM4EQ$vNlZ;yQJD zayXQ8^B*C^GDRhE0dYW`sGj(C1nSG>Xt!WAKA$Eh)-E}+?Cp+6-*4p=t+bVNfYz5Q zX2yZK*klTn41e6Ls&o zEP_JaIi8~RxHN7(!}8>mBbCus=on{3KnRW#=p;f7io7`Dt>%4(U;};+XwYB7u+^-L zr@*ET`2%`Wx8>Rp+ow%oTs6eTD&78*6T+Igmsj7_Rn15KQb9JZlx0}w%VE-In1rH| zMk`E|CmP=-cR?fUiMs{TB$((o^wm5JnDXM_`@FS25vvMGw0bUy6DqI~>OtrLW;pco zZ_r)(45%vV90Gz*dy$|zU?5Cxl`SdIgNDJ>D73|~Eqpb}5nfOfRBiP<4y~rb${1L% z8&&mK(=cwuQ9RhRVl$qlZFD%xkmTW7q@zs-}{3QfZH{?{8MdWzj6FH zYr^mwVlV3}8cJX&a_0aCrK5!T(DqxDA!=e(vX*b8m0c9i@2^M)sPrGfMH$`A{+vHs zO^}+nDm#mCx+r@Na>+CqJo+p1MKQu!yaC(e8ajI+MNitH^$3#07d_*GwNT-C!ok9i zX6tilJ9hV>T{FCGfc3VrEVm<9ZvIG6f1lOio}+j%Vp5FzySu)TH`ht~N4Ya@) ztZ>kPeTIfiOkP+g3od0Zxf6Fmovtu%m)?iKs9V)&iiAbsh%5U0Et0Awid;x58HfS56MGC zR%ga%`|%*1Z>AA>)H#~zpe@Rcb##I6_jVymNb+W|kSGCu=#`Flnv*%AfXgNCqz)@@ z>I!GLt4&@3lB5d1d@|)Nm0Gb3epeBmC<|8I5AK%8zmne889VZvj*}{2S2aWvg35BZ z9FGkk(kNP^fDru12yZPH^uAR3Iar4^YlysoLb$QxhOYdJ*b}vm$Kug?6qH_eJVj6t z@hOKS`X;OOK4Y?td1|Y(yH9k+B~z>+pNIXD00lb9?a}WjQuv8`XD3~D7?|Ac zDMYK6F?g*_vqPU>E6r>#BnJ6LaR;8;n-2Fx)7N(X|F*^{pe0_TVooQY=j+}@YU=cK z0$+Vo$XMFhY1Dk`=P1z=)%`+^-H-zRDb>{#zK@$TVr02^qJin43eo=7)yC1Z`|*km z`1-~+0J+t$foVDaz0PUVx{_xY{opAL6pfSoKMl}@EA~jYdTtJoGW|*5?&FeNuwQSfGw_?EiCYQ*9UhN4jF1#YsgP&V!K}% zRtCOCMyM`1xuWEHYBUKgw|`DczQOY90#Wu-Rj6=T{AvJ_lzL7N+(U zU~Fkg-)`tZIc!g0H`lCz$m!_eHNj*YX&561=*u)KwOXrpYPK&LuyyE1?jvwTyQ-^p zGZqHB;ivXt34!`hV3VHWnmmsx{$p#wK8pBZZanKpRoc!xIHlJ%)(b&Rr=_x)UiVG` z$gmos!!X$7x@>4mt+B@T{ECgOX^X!yz#N%r69XeGjG)eV`w=ElNXRdwdncTr+59!4 z^#m@SVNn91Q*0Nb;}_I&2m(9tsv-ZAvkK&fy{)?hI)w&r6ZNaJ;*kP{CNot^DJjP!pAjGg5_1O~>+ z0Tf)p2UhyP{rC?({pT%U8w(zA6AzC1-wn?HK`T}s;(yfj-zdh$O3cplzxqG;1;nJ} z!u-EZ?*E##9NfS>1X_Uhy8U_w2H@H-p?OreGMtn`7Vl}NNFmi%Mwk3*#&|vG7fr0P z_E@Rh{6)=nYkZyQcq=+lC}dS8cr;sxwGMYZ7`sfozBAVprO81eN0>9 zuv;MC$ZvD;M#$>^kIjp|ss;au+()vaw-Wnz{m1(#&rRcDA68$oh^dFRUZ+s2Y*%K8 zn4QK2RK9*n(kVHO=3Bn@-Q(HE_})b`_(H=qZPnx)JM`9>jRb9(a#EJK-Nvfk>CEdf zy{h6OPB{>DlmIYUjA@4rCFM-ADLg1nBj>ChE9_YstdT?4@UKu|VP{Ys$(VhlOic%W z)>11e>bCwQpWp~M!GpcGy>%9*Ztl*#-hy1#94iV$>76A~Dca-DuzDbyvd0~tpqzyY zf4rOi8l@<#u9z)@MFP2)$1HXZ&h%~s^9)Ewi2`6`B!|NZl4`y^%rwN~T@X%`O55Tm z=Remb-v(RJ38bd2qR z4>O#15OfVAP|R~@u~HoLSz3lYy`jemtxMKcK@H%rDRP&x*h zOtdL-P6~q;NfAXNZsUQ^vkeEKhlFOX;p0*-nXi~3B(}p+ zoF5DLIFs7LIV3Jf>Ynt%R^*lEL3-$BQFBkp-wK=9V}TM$$v@IEguN?73{99bEmsEQ z2UEl~;lc&w4-sFK^1r63Wx*|mi}^LDGK&^U@b-^DIa_Tta6krEOW3MYP!sz%eD9V< z7|~^>i>WF0FiyRPiuVb*|GbeB!>NL^8QIEw3rv)@D`YWB7$WElWV@!SvjCG*=O1{-l*!ox9lP9y^~N3m`V{g(HQ3S~WLskL6mf7RFhnebLUD6*$9TcJ8W+=J5WaY4-slx{%Th=Ga@2HrSc0$LE8-yqp-XF9!$?FODYD_p#gzd5pw?m947)b zg<>NiZLJCgQ}d>3Vq4Q(hye&D(yHifQe@NKZoi%2Q0r)-2F+wLLNzhleqLBsKMg9<~O!60C!5hPK^>ZVYWv05u z*4A-?T!DQ{;qBYVmC*e!AwpW+&;+_3 zqN6ewrB!{eIuAnhI|~bd%}e){GjTrSY)X&;ZQ`v>UaE?11T2fAJr`i^;NSndBp6ys z)vSo1#hbx}@V#as>7L1lgZBUE!UL%_r2Br{n?D>p6(NAIWM(N3IvPa}&Jed7Jba-ZuEP_8`C(+J~ zx#+UN`=iFeC%QUM#BxLfpeGR&f|~wXe7*X&E;=7Q30%T{Pc8|*f1G~o?HkXEX~MO; zaUB(Q$c~GdVYBzR{LO!8%Fy7=qf0T#Axt*B$wHTqK=Cqbu#W3lie0O*kNFhXS*8(54rTzN9QGEr$P_^%!t6DUoc+M{9r1^OenF1(-NnCky3jWyqwVl$KfqT& z+oi@(bFeZaO!rz7YW*}6LX0cHMHlB=7%o)EV9@Ckr+*=fRy}-hy>CA*iZsTc?e0{M ziLb?scGgWNTKzPwQt<5*`$L*(n$AeKkjdct7$+3J&r1iOx&8thu35fa470Bp|6TLT zbE7dvizxMjzxmQJY5oyms>nlDwbr*nWUBG&J6y^axACuScA9^8r$Frz9RCPf7FuH9 zb`$`5c&Nj2|1fNWt;1d)E+neN#n}pao_?nkQP~k|Y^xeY zlJU*3Q)&sq6*J$)T%xHrmjC;yB;3;DDf-bBt@YjMJQ&xf%Z}mA+#-=*Lx8VUC>IMi z>#{0yfs%Tf86ksh{{&6@4Z``4>;8Sm^Eocetg0wLuSLdbhF)-z`Br4?>$_5EXdHo_ zwB~!0Y}4aznUajfNB)oVp)q#WLOM7%+cW)~7Y>5K#*9^vM1?>BWxH@9@vW1t`)7-8 zT14NN)x)g@*Tie8qYub)3b*Z|&&-b}+srGECN-dCg*9a-PxFkDVc zOP6p{_wBs2ly|uK<;h>Si(~ZBZA2IX?iP0L=BrN4Ai|&HOk`ho_oZ?3c>qjN7u}}m zi?N|M&eyGN{;SR7o|&WQg1wxbbXkV$np7Beq2HM>_jks5Z$%|nVdpqoy#xa)JE4Ri zP*J8z$Pyv<*MjuhpGYE4f|>sx!vc{b(1HAT80Z}T z&FC08rU5rGC52*>ur@)3ul{)M;nctU!ufY1YJ%c&H+P+O5VsNaC<`4tpc}?L&=Kkb zOkoG+*Ug#nJ^-^nSomVt_;j=^2z@-fII*JXZqZ`DoPE4p8}Ou2SPgZaJFXn_hLesv zPXvX)&|Z|7cR%(3_gjmvyR$Bwt!Ym!GjM4?OxHvD69OC1_;F)fOmiY1er7Sfqb9Kp z8oJ#`kA;`VbIpAfHug4GW`79gT%p6@6MRPF;wWuD>;M#cJgDKJ*YRYOxShdaHp)@; z5)}33VCRyz$|E?oNJTNU^-7~W>OJ!oF#?rj9^TOn?kJ2^9&xe2p+(Fx$tJV4|IY5s z!yZ~gZKrnzB%>ud1fFN?Z(S%h!pe>PxS}0u-5w3!Hd#=TJ!W4Nj?g)aGqzGSec=%O z{gIq9gb5I}pS{y!qm`}@;1A|j{36{0p0_^olEeao*mSa|PEOma;qbE(3i(=uSjj=? z?uEDQkWR!a=OHA+>|>ASD^_0=lpqX_Zn(bKA`2nghoNBc zElJKP%g1dow#fxtPerC2`kO_!kKis;g&%Mk^#JsycJ$9({deG&zWd&pR|B)$kKm^;9c--v6l6e@_f&(0>5 zGk@D##_>9^JaEmUX)&BS!ZB1xIdU7z$x86#y%U-)&0B@fwYKmRuWwAhUuvj?liuvv z0wi&;U>KAT&hw_P0hwjF5hi|9321R3JPrs>!|AekD=@XA##0$KOMFPtvRtHrL%3^m zDWfxTDxaC9!*B(!#}I4tWQ0$k^YKy;j^DE8FCNpesUIl95o!H`JwM0Q6;m)&*OeVD zl8-_K{+*u2H=;w=|JYss;gJVj}ssX~N zGysnwjM%&1!c;un9cdy|>yNO}A~{~=G4!V;0j36NM{QT9bmod6Z+Bpp+%dE@BX(Te zFazk1f*OVXG{(tggtRROm0s$Dzol-RLY=Wu82Xm1Qq%OR<2CNH35mz<|cG)>RA-5r7&Yr@hCIw)4Sp)1pq8VcE5=rN^WNm*xInvzP}B zy6Iqj#imveM=4q-GkKS09Uj7YK`_kWqN0t3)Da?Gf8K{F4qPBd!n*N?4UKs zR{5V^>Kh9sKNG!u-JE_qo!Vs|hzmrOb)YS0N+@Z-(nr@inzf50krN>FUH~?9PGnOi zCK7V|$J@89tgka=xUbV$-FTH}*sBt^94hGT#<&Zgy<&oBRO5~{*-O}~;7&$?c8}Z> z!u^4%a_|_BmG0z<%S*21$AkpZ^WS`LoTpW6Br{b>^3U4jK~L1kOpZ5?M4# z;6Id+Y~JW?Pzl%1Jnrni*#Vtf+eORkHm-O~U9~M1*s2b4YTJLzr<+xXatUT2%->;yfPzYTIl2@sqA~t7!o;Ju&)YiaJ7)c=jCaFwjvt z@mPHeC2)-|qT^O}O$@)l##tF`gE3uIN-&#qddQ2);d4FS$PI0p#sN7)sFGDJ`~VfZ z8)$-$O6DI<2b@6w70wceH)9wy455W35KiieZShi`exIT!qGBUMx__xaYu|axijGH` z>EM_42ZgqA)g@)3vOGsGIbWx8&wU1wJsKR{4kM4)6w)s+o9s$u<5gh@y zgvsPrkJ9>5v$|U6tR|=>1PI#+$QSq~#8c$<~qMdJilh}bq#`fJ*zNzzC4`w)Ffb(DpesRhjO8gbr!ETd`-@q zqk?KFa^m?aD4^3QQO>u>0)m+SXlkGa^nrR%7r^LbF~ z!h9j@*!3vazrRroT_yFA^1sUJS9YqoxN%*Z;I~|)v0UfkFBjTt0LP_Uab)g@lmPM7GpZNfG(XkSw%mmJ?(wo|?(1ZnFDl^?{ zEQX>@Zp4pK2g~B#Wc#WLvzb_3k#`fi8))GE6Zi(SV21pf)$bGNpaefzo%Igfy)}Huf7J%16MsTx0X)HaA*_=o@h?{Mv>(Y*TQ?~le2{*h1{Ew**>&vgSwae zuBA&sq6P#JFlq4t-X*Uw*WBry}I*25J+q^b2n zatW>V0?C2`7TXYyfR5-5yZHJ zi&T4D@{bb6UW4~4YBoN^(h=?b7nSgCQMqw(l>6MFfh7e2?6W_e=?70lS`X2&U1Aj=P2 z%u2Lgc2&O>#HaF`QU&p{1|HQy1i;7q{!kOTSKFnUjX(N!U$k&8H6vRfjp~m(;jagQ z27zar^z;PSEw9UE^r(AhWUA$*+c^z90LF|86+5WBE7UHRo8RF$;pD1Vi@g6Pf>*=b zH%-MKCWkygEyE6HMMe(X+5EyFSd!ihld(fYk8AwWtI0GIQ2hlIN(Ydl8ULE5p#y$X zc9JhbIG0kHJVz{K3k^{Pbz&A%R^o+<1=!N0;c^7`-%jLlZj2HGlz=RrvP9!w09I_G zPlwXW*7knq+1uRg;IQeBItQC`3U9~F&?{yaJn?J}SbBzt5q+;F zLRg!F!kt`mXpqrwfqbVTs|QFP`C^sP*7_lNe{g#YC;V|?e8C59p}q=^St-!yrmC#> zk_Dq4ndnDaPjj$tK><6tz`%$Pv!b}SFXb;C_LKLZ(L7;RPN9r7T`C}e@4Fx zFD39g7y;tHdJ~SC9Kao33~){^uK%u0XxaXo_sCy4hQ zGZyR;_$g72YKfEN(8dlV#OG<%rU9vj;;*A}V-EDy!?giUVI$Y}eM=3>T-#WaQzFRh zTkLdOp;02#KN%1Yl&IqbVsQcTq+{4ekdVXoi=5Js)=)nOYR{jgUu^Ms%46hn0X#p_ zlWPIPjT9NBc%F?L+^+)o^jtw=m-u272B#DYK_by4#WHvjrS~h^6-#^V{0t$$b zSUi<08s)J5V7n-?zXn?n3i+dfhyd{x^oAOAO2&%06liO%8JRSylzaDTkxnAJk>rJ2 z%@0aIJxyN7Hh+6VI|yUnA`YbRa1qnget}gXk7tgni`aWAVh~bISiXI;hB8s!yrXuQqm>z!d9;fAT&F497xOI zD5g70)HvW6!xtFOJz(@Q3LE5LmjX|=@kXnjqaGF_ zl^b>@J}unxY7^Q>h=hhY%US9_!nOOC{LSO{=y&~P zb5Zv0n#YDEr2v7fsp?~{`tcC>{X)#}4h6rF^8jFe^bk48TFda0#9Z&UgthSwmF#pd z;$BN3J|$fbhB~0wtX~wx3`-q_zvsnP zYA@ybd4?o-!L$bW&|Q6@GO?}J&Xr)avL0#gbBB~C#$H^x95Sphe?A}Q>)2!yOPVgy z)kcd()>PW>oRjSQbbM>FS*qM&QM*Qo`{k_{T5iqXLF8Vhc4scK8g&}e!(@?a8`KIo zL@gyqFu4E~3KGs)fq7?8VEL|{r_r}C3i%801Q?4we6~kWRI18D`T}7hs#cT7kpnB~ za|!P92PkA5#%mhJM%LzynCCL{G2+mL@m?&QR-Fm?%|#!UTxi$T_SZGlQ%77_r9>I6 zD+Dlim_)dx?7XG*-9WEB09Jk`nFJ{u8O*q%a#x?TWtZ zQ{~~pV;mxl#+1*32e?h1l!lLHsG;gshM3#0v)%E*<<$>k!FK-kbc5WSh#5>pIy*7B zpFCy?YPoMi{0aQWJ5{tZ6GnIK?Bd#oMV0KjHiO@v%~-?x19i2Mg}i1<#BA_==AyJR z=BHH_In_w~Ueq`E#q#)x*-WW8Ql_Dwe5-&={lE9)@@To6^`E{|wtG*#g}doAdfd75 zD*{0aXF4F=xyHZf9vj4+5+lH~E;8w6pbagoVmKb@!Yh;%prZY-BxLn?vbwUn-VB4M z=nrHmfVlu3wj*MIiRdv{MiM-M;@dD%WVbv-?u5 zsN6ifmNpN@|I)=LbPDskKf*(RAXXCF$YTQ!KcrX1L!Ix&fPS4X^ZFBfLseuI_$2HM z#>oo&EkX(T-;KY2Cl?qe2ax4A+P^am^n@0WthH{p&W-Flt%>dF1g6_~F_3!E)uLTG zaGoGgKnhQhVmPbNVuA~AZhfSOp2{CHv_ovr^RJK*Ek{i8mD>y9dW z)ZqkSs9rIR&=)aQP(S-MyPOLzj!#6d629Pi^IFMW6X||D^RfSN*{l{Zr8#Q&_45$0 z_gVxH(?TCiP#-dd3~!L{wv10M>r~0Z2d81;RP(#0QzD25)>mzs4GU{f_td~5M)RjghHn( zx0rw{qyAxH(vwi->W zygaP@E%Z9#4IlY~VWSg(2>3yq7YIHKON7obZ9F-@EBRpm-cwMagb8JO((E6l$kfyb z0HgrsU~)Q=XpX*@#Scki-1TBt^=@iy46CJa-qpWw!Su|vZ(3=~Ue|mWGGxY!;_y91 zB|_aoMfKvuqmm9*E}{a99ST1}{$hiaP=dhGzNm``;VFNV3U$oR?(~e!zG8}kOzA8p z5hXg7)0;Twz>>)H;)r;*1y(=Zvmp{yB=Bf8}%g-!+{xsN!fy6U7V@?XQ5G(*a!X0cYwJB?lp zXM?X7t%!*w%6VznB8JAGROfTt#&S#gEL)@-nTc1-W|CW5%Y(HD2jiY;dh^hBkW@c4 zq*FvLf}Ze-Tb#oOAcxVX@RgIAHYY6xGH4%=ixcnc&9+7QMw5j;flX7N0C;Got;%B6 znUQieX0Q(1cm@@AEm0nA_EaUXClZpR7#@P%)3B0Ob7QMzwc~#7@8)@}Y3rWf;0ud>$dn}dKN*Ig?v~jaVo= zmMbl`qh*b4sAedLIp9+M>=Rjox7*@|H^sH2O}`oWATx?DPFku6bRTGNg{*3T@tb2P za=MigIea+v(E+NW!1iqt7Fr>dtEk>4%uqnHf!V`ot+>xm-LLA(sQSnE>zT$M}*uCBswy)zsd=y%-&FUN}_X`$?_$A7J_@b{z|M*Ec|Ivj5 zH-usS<&HT2M_&G4x^qspFYbr|_J25~FWEV;KnndI@zZ}=AUo-=7KoYq-xg@-KP?bC z_L)bjB~KGU3wABJD^!g~($G?PBOSaZ;@p63fkHXTlqOmj*7_%|v7NJ-Zm{JON<8Er&uCKEUK24j@CSfV1Y-~o7kKyM*_tc z)4C3h##hzdx<=L#-PEh=-`WOxdAWeC$|FOItcvJZR~|zE;5EH~$PKNH3cJ|)#Kb(^ zJ_RcrA{elEJySq_Y7TM%{1~g-J;1yU=Qcy0O8%KsKZur$oQtez|7R~?lg@F`A%l&o zYI=ilrW*6^ZtCIU{?39&S4Obf!J)}ioLw{(%y~x*CnbjY2c`ZVYb}Gr(BJLk!Ic?J zEQR7-PLVCZQ>-HA8*)26ac-en-y=CMrUa;hlOgD$*S>W?h_~=rbindmu~P(4(ym?A zw~4iq?TH9}jN+|7P^|7x8U7ZUqv6$XTRR4lB;Xkbh^8ih z0G%kd=9?(ZaqpE)$Okk~!$C!pZ=;;tp8rc6KW%WYDq0R*+d)!2^`t_tH=Ek&PRwwrP~yX0kgjKCqd{1 ze5{N!on0<`c^fe&-;1vKGYw222FgdkfRW;&joHg&?pvt^-BqRpvXzfktlosSlb7<9 z3aah4DauyiSK>w6SORaA>_vbW9s1eCx1tW6&^mV(KQC#x(*$=={bxrTueRSQiOX-T zO-EO-5X~&M;FC>fOK{+~Jq2_v-L6`C{$-B`fp%CPY2Ed%VAs-6d!1$*7#cPTBol3Pb}Som=p4Wqwb3vIfHzDc z>#1Z}$_%kQ+n~uRbypX)k^~ zwjuMK(SF=<`LHFG{!uNIOemXI4ga2I&lK-Y{ab(6p`9O_U^o|Pt&k3#k)B3cB;wZW ze0dhqj6-6{!dQh1ga~cgR?RJ53KVKIlj+{`~~CB{_KivDy&&yxZQ!0PqfdRm{whaF^i1K zNReWY9&-2hla5Lj%b1=M*Ch`?bP3y@^mQHW{WeH+9S6M!*ntLSV43F_rsd37itd2! z%nX}4W|Znrd=>GJKKb8I9zd~UI>adnllWr12ZW!#bO~?s&-Py=gw7%RwdK#mRt&fv z&r8ifEKjg2S*q*shO!onr$8hNHm38KHzV#PMQh8swlcSqlx3EoQa^U&)PNg+6Z<8C z@F^6v@BA<7Bqf2o*pTNBJJv*>S7H!<=Jd#{G9m~viU{VbhmrB{`M_;Llly>ZcpC(f zE@ZTlsm05hK5nHNKxkOmyjqPo1Y1>w3h&Isxu2Id0goH+;cWPUiAtqvsraY2?tMmn ztKLWBin(o4;YqB09;0mD%6f4PC=W%tYLX4RCm>gUM)C6pcURI)o8FdzK6e2JNA`Y5 z7W&UD_HHX~>5V?N&wVpmfnc%^|ZFQnrJ2RXVSmm0_oGBuDVBsaPq)4-WBFl~MUx z8E(%|gyfChiqd^3OIa>b6jB-j(yM+DI=qVoa{UqC*bGJDV7^4pGmZ+3m+V33>o3+D z6l#u%ZLY5v0C-7PoZ{iQKTs+N$L)uec<*xhtq_luJ8%+YVknElqj%JkG-j-%tbCMU zmGzscfUtR1%3W)#7T#HePb(q^f`IgEl>T^~$Np3X=Dqi1yMo8?0NlM1kv$pFHH$HQ zS?(EK7m;DC`u^cd7t`h@7`6G#{wv5rjKKT|F1w5YfJe;0+zQ&RU6ENdHunW*HS8_D0|SkYbwcfyPt z%MR}a_Jmxi3l=@1pIA+1r_FbbBgo#9$Qd~uP?m+1=>L|^k0shb^azzBO^QyF3=NBZ zOFlfE2B_hyqwC=G)Y`yl3&IMV`vhK=f*z1PYGxPJG7lk3Q(dRlXxB0F_t``Lts$}u z%?gEOml#f<0~cDJ{ce4u;Uo2GMs^EU&uIh2!&ZYY)X!H!j>R+7q##wsLQTqY|Hop% z3acdn3!P2!JCDZs1Z{^{ER9yxyn=oC;$mcN001F~hj+(>$8d{5Lz1#VOqwUgS%E0j zlf@D`YwLNdG>Aw{@D;XFj*P)L$5fbGHTIXv@2l3Zz{p6RNadg+4(REMXmySBvc4jZ z92|{3_1)YFHdpYVuh@k{MHL_3OFh*I*>+Ifrn* z(L}M^>kZeLF0~E3sGe3Vq~kd=zH@oWpH|!%Pf2fk@rOfq%S`)Q^qGp3U5D*nt{MJk zfFM%@p&zKcN)Bt&$>U;h6C9dCx+q*yhx*9-KJd{QQhbh0l1d8TmHY6~xB&x)`@nWhSXj*C<*#^Nkb zk!Y*a-_!5z={W1PW#Z{6S`y&pGyf@nVaiAFbY&Jp!iQIP1IEoIJZ>$s1c8ZE>9?%j zjzHDwP6bBW3iOXGhbyVt^F966me0Fig?z}^F;~TmwYII6dnUH0B{LDXbwFV&l0{aW zmmE=m|1IG|45y5H$yt9lhOinWL|ld&=IT;li%F2_3ajO+W_xQC(h)#Z!%i8-HaJGO zlfVxVumI1dM*cFULp>Q6(&XBW@j(XczX(7})<(kxa3eEnZU^b&6CV!w0~u&JTfwR? z-LRDkB3EGL_HG>##;qX{V>AVWkDv1ofj^rc~5NKnhvTqd3xOJTGSbkt4!T1Fn{c`z*#QaJe{B&ugmB z`K73pg!F1!RK&a$bjf$hLn?vBQ&xn%x5@`x1-P#hR#sU3f`F85y|VBD>Nv2-kA!ct z_J1&)!El`u+kMTkc|0lKWkQOB`l6AH-eF5B=O?Rs^I}DCDWoSsZ=Rdv+#s+|pDTV| zSLvyO?)*ATN0-9HOXTbA7dhju6=V}{s9MlMPDZ&_)aqT2g*}i-0o1@3Tm;0W zs9T}T>S{Lq$^sxW6iI~;sg>x^D)30X3azForR3zYJcI+bv}H1-M4K*2&`q99kTQ!58~9?{#e<M4B#hA*Q7#>H!RbZl zDN@#6L+&STQ5YcF6xWN@n1P!naI4A8Wd@kPOy_t7=HaaZu zZ!uj6v-zfKAgZl(8s5{R^21-ks2v6pwYp5o;3JPgM7}U*JSvYtj7si9h!rh%+^xQ_ zIejq9dI=nZKk}$ETXs_H37AEQ0sxBlXSRL&DU3CWg%elp+q5p{+t%1;_F+7{*x^A& zy_h1x(+JS?JRe*9Qyksf*e#~(E_;h^Rs*Vvxzm;R6TM@V5?7LufH&cM96pYi8rZ%V zv0uO_3-{<)*NhWqFJSKyhsk(Mjp0NZ^Tp|RGk-ky3;LDeD zg)uNLTWU%p4<6JRvlFy)qy1dnKNy-g^4)It#EA0iMCQ#ao;lY#mPscRB@HX5SWQ}< z?PCDs6n}P?I7WyUdG}{bEoV>2nft6MJ*MJ0vkSth8Fj&i8%B5exRv{|)MQ^t`x449 zyE1nzq+Y(hQtO3iehYhCk?-NjA|X0Gy*ur4@;z2Mc$!|G1qX|Tm%ie>pcg{t!xE}3 z+-!2%v~uMS(P#ymfduZN-#tan2O02ns9ww+tlV<~pmJ{+*bgwO->%%NeJV2Tb2y2T z?5BGF+_DbbeoN4F6SwZQ16-ajL^dBDdC&a`qWWz3rt$OLG&AJ(?V*w?18@3Ja_xse zj73A)4sD#lAQP^h^WDwWo`=^B5z3d$2Z*fy&!14J{(n$zPT;LRIyfua|Jd56G<6mC zCD8qkHN`s7HFjdbLqY_8p_jXfswC#?TSr$$@+%ZKS=PJ4ngRTdFXil*)cneRM3_<@ z`yPMaZj;+M9q(yHdxDxfG@5O@d?<7PtVmD%G{lr7x?JRZ$YU8(n@ZfXD_EE}z`J8l!+B` zH7F@R?8zzfF!gHTWcVMPDI-L&zJY-x3&3mtghkbqId zI2(Zg`^0f2*}sS#cO}r4m_cs#c1pJ<`_o8;LgPOg2qj43;H_~d(+(BDBcbQ=x!@u8 z8Q7GY|3b)0!1Yxez>OjT;%L<_xd&0v?$;0~s!gMDLprXx8_&*mt3baeJH|2ZX^?0M zCuE2Bn(Uu#KyGD*h0mpZO5(~~N6Dl`d6pQ}xW4JWAmEw$?$j|Ldn{gwhuErTcV=vQsalUOoq(hQ@I-ieJD1Wb&rO?E zQBvv|l#>Z{6}Tbst1DyEnqt}sWx{%+{#LgO>-O6UfgIOvIQ=HF8)y&;aM5AjQy#ZC zayhND&%a~@DXHxP$XASjHR!t%%l|pmT%dBC9Mfs2Pd3z(e6L8jjfwb$=Vh9`j@`}s zZU6NBVzu-2`TngQupFys5%h|hWP|!^(E(j8f)h|RwT(In+V8;W+>5eL?HC{9 zoS7_PzQH-Aq7YJebz1_lY#|Sx1{eo_HTFwjGP&dS%apU@jUX(7Rs~@$-ng0}xzGqn zMcyF)mGCV}|E7R4QT>fJ!uQWcyJAmRs|75LJFX(^^!>d$fW9;UAFUhmxQKc*TGJkF zmbWN5nKi?wbSi-14ngWufi-!D7Q+vrV@-?ZZzn-!XJYOrJM7x|kflK*7ARG{_{q?an~iru7MxX6htQF2zL#yf zpAB7tb;Y7RpvMI~Ig&jz=1_zS56ermcuR)0w92OyCpa~Wwyh=X=6G)3jqjboSjAUF zA$>3|S7$W%6SbaU%)H99v(4bUo*?nmQu={({9sF4xeqKU4@3u9KU6r}cQcIyXaza1 zimrhgf|tARMF-IG=1kaa_I7^q8_UIHWokKRi9;I+03DH4p6PxGEVD@Z&mbDd>q{Hr zU&ud})Uy5}ziknyey*a9n9rtTCc=X@X6LxDQZcP%mvD!0cZH!|Z<% z3=W{0IR-cj4-Zf|kp`f(t+>yP?0;NS`Up#ooB3y+=xIq*{EVR%MkUALN$HT%VV|sy zY@MbS@V-_@C5RjTt3)?491Y1GZ=LOK>S+r8#s~c2_~}j2)bS+V$8`J2w+E|OvIkny zGA-|IYcMNLqRU9t4!+QFL^wwA<(OzDo{gO1XwmoC$4MaF+yW45j@IsncjqK6QjgO*@Ddh*$p4EcibH~zvE@2yB0bgBrI z<;KsCDT#_^5^}I5o~S+in|ZjHY3YU(69vIAYfpTx*N;Og!xg1CUNn$rAIDvYx<87# zl=O4wyePV+M*EkV6$Ukbyl4%<-UcB&YF0@ z{+IvzYf7h?<5Hm*-mhhnQq}5Fd9Iu@O~rPZnHev2t>+dsm(u=>DpFC$ef7GPBix-R z1*zq*8e&xl_q2BY-R<5#SUCK8X_}-Rvk80M4!L`zjclQ%Ny-b!`O*lamds>l5vU$%}OE8 zcJKfc9Z_3so}$`TGrS^RU7}re7)|4$pWbcUHR|5S#AZ8&`vc{$deyy?Hr7^cjZYgd z&y~lp7dAj5wPyBbLA4R_g-6dx9C%FWIN`IyY2_5UJM!`8kCVb%X^-h1SPObGNo zjp^iY*kr~(;i!5r0y51*wBG&^ATh7cUPeP>nUi@V#D;?I#4jF%_Tae(J;6{O3uPMlZSwx zag?+8HsF?u9*4$lncEPa(a-PTT54))CN0Ynyxto1ES1t#2Q?pprS|ZG=eg44vrU9i zVMvP@4OE*v70!CPZa0UU3cJ9rvX-*KfpJ66zewSuw$Bv@O}MOsFP z$u`laSF?c>menwaU_v_;LO&)L95@e3BCS<;& zTT(*Tg<|#cmy}wt9q-uoJbD3)^Z+2XJh_{|pxt}Cv>>7RmRjv=f4bJ2P0eIiW!uZ1 zQp>S;A4swlv{c?SY8sKVp6;tAkDx`-`>0yMUa&l2}K1V*Nf=Wrj-gQal>+Js4Q^R~OFqM*eGkbT;mDIS2$##MlOhs2&`2^1~P6o8iEU&s=d7}fleQun7$WWulTx_{$-$oU&|BNZIi$9-h z#>_iDH+T%}qVG0V5e=BiN!{)?Ah3EA^XfUCA^K{8>q?2W{q} z*6ebXObEqI+8>u1Uc4z?uh5XpG!QkaHvc4Rc%G#+2Pbs!m(&rl(+r?LJX?A;5n7Zv zLUCgo0jzHm7B!VEq&wyTd#vg&k27qgvMZDp!~x}L5E`=HUZs+o6qvT@XhCao6XYOIND>btW0=sx)_R)jI5n->MUa0|=p%e0mLcg)&y&O0j z$Z7cCM=+FEX=#ASuU7Ho${aZUit1EBJ@|>9ow-EyO{arn=^&@@c7~Mc<&e&~z zpqCMJBUBU)=y!>J!W`6r;}!fJ!u@*)68o%$=#hqGR;$pm+}bsHo*ZBkQ`qw0y)QOR z6=8=zI5(#|=o10eo)?dA9+;QD$DMxbPF?y+C~jR=^%&gCEmN55 zP4I16T%pO_Okrp4K6p@h$43KHJqGi1wU1GW<0+cH)dXcyT&Rpc3>S9vYJBi(2gZw! zM?A%zw|}XN4mJMZu%up%LSH00-kIKgx>w(WO!8jFZRIeWYyI^oYKhaM-w^*jS&t=v4QDrrYv+%Ey4 z-7e|NTKCRN>vw$k^#=Qow{ZacnT{*yqc2@>D!v{Rca2gfB$_CpP?ZgeFl+lcfpz4?i?Q&XgT$k@RxRLWs$r-0oA4sw=8`ro?lJ;OoGLWM30{o%`cs%Nu(Xet~uxlnycm(av?$bZzQ(Fq}8R-%&x2rH_`?yAC@H?(~U))-VuA;^72R$dq z@AK(W*DSTOCkTgxNIMOM5hdjDOA<-6u_e0aC;|N9yOTQ0QYPCFB}?O})S*s& zVMnLd^;=2T>#QcSh;7OA7og)Hc0Pd~cK`~gS3B*nfT>6+4syCr3RJb<+{g}Af2*$R zy}V&ogYz#0>O5?}iNOyTi9_$U^f}_|tKt3xC7m-TG-t0*Y~YA$3})?5>xxI8Mohv+ zD-S=+I35TrGVvA{->;+$9W|etF=G_Nj;*2JJ6puG-o#5)SU;p@#Fa+(Vsr z=+rZv{Wcl*CN)b1r$01fz{ye|UoQZB9J5n~Lh=f`NSxk^k|SetP~;ZmwC?=EUl;JK z5*5CdhI|@?{P$dJFdv5cSP53ELbXuX6jA+r%)Co(`{g>D{rb%bWae}0*@juxqi1e2 z_D)eaa%S6ueGyE$x!#%jZ^$jB)-8Pr#CFCdF?XbFR}oyAi6SG5e2l!j5Cz}_dhS9> zfNj+@c3s36S-P2J(-eE&Og_U~S&d_P9;pQ>{yM68e_A&GzQKM&s3B_%p;wKOtKJ`O zKyH|&-sP|++k8bEqm3_*6WT_$s8B!OEfal|Je;QmZ8Fo3jmZ;sXWfc*RFW4hqWZBP zFx3)uV^Tdz>&Ib+Hx@T|vI^MX{#sh30RZLto_-BMzWcJj?}>=LO(ybb^mJp>-P+yW zIRSYytx`@hsTtr_S1n|;sN``hKX+R{tW6v-6|qV}e3fvRQKM5~#7feuTe40+PFaTj zn>g-u*zBiFgU{HzG z$KltC#BFow+0+I+bW=4k&D_JhWom)*r~%O1sK@v__u`!&c*sq)KbBLBw?(E^`#e5_ zlP|R*8e#KFqPtp5<mMGwVUNRlg81+SDuo6?QTn>Aura;*no)eL9f2$LWQR1 zXZ1NIMd8DA_&NX?voU_)T(1CR3jw?h#jJ|+Hp^)lJgu!sJEaflk!mC^^zry| zIbU9ILtROk8zbT%aZaWi?Q>vi5SBm0O6wO>ZKn{$?JlG3W;}p=0)Ps&Id(@_WbX>< zCY1E^Y;vg@v2OAAq{*JP03{S$s&7uAC%L_Wj4-jNeja{iQv}rA&0bls=x%In)SS~K>)of};m>oCxzLH? z6ks6eCV!dha1Y&W7B2=mqrk{&iNH?>{~a9hPWT$=&H6>uogXQ?Os4e0^YBp-eAU zFOg#5eB?jg^10+tSjH4AIghbi8qILG94IhX>~hHVWDJ^KHMwxppU6_^5Z3tvpCmsc zNFWymGzcRbgH@mvvs_9c9^PUqO{2%F#l4{{{iX1A?w#o~ z5D>GO_%^CEZCV8;2ri2?-hj4B}5t0d|9bs&e%P2qV$)1 zR`A?prh?vKmM+e_e^=`bQ%~sK`uc;t6dYj^`=qhL$=1#scl}_clqxz|M4L>+2GgAc zB1u@4nnmeB2+8dH8XKakY|{52vn23)K*1=aMLOB=_(j)%V=P8CW)5+Q2DL9^f>K+y zb+DXbfm~>P4J3xu3ziL$#xVew7q~NG9~FLqagi}50v^#%voE4^#3b&loYVww+#f&M zVL!i3`|GvT{P%Vf{P<4_Py(#v=5PB}($7>6K7*47lC>m3McYYzj(yC5G}NpHfc~hm za?C*zNPO5${5xiG?4zb5C9-s-QK_GcaZ64-rE6H?`ep(C8j&!X1XRf{ zev08u4lB7CLAGc+v7Ad>O}gSIJ7drW)MOWJ$Yt+_iW)&!;?7cqg3L#b{FxbqWq+c| z`R)Q0zwquxAL(-PhPlDZB~8I2!0w)npR4Dm_}FR$7~?IB%3ZS*8)?YT?=Pvu1ZMSB z_xbw&(f{dh_35Oed}S5$J`^O;se z#i{GE#CvJY2N=$|63@98XHg>ZxG?~d*Aq627)aOMmBV4)5_z(kwVk=k-&f%XD;x^B ziT%bjx5Vb z1Mz(S`Ee!q{-=KfUi+d$aB^}I{|ifL$h&4SBX`}=af=jF>j)7ym9SS?W>R{raZ_>a z_d!vybG8z%o%USG7=e`mm*jI)hjWFai&`9eauFzpkkSjH4bx_Y((h7kJnZlh`Itc? zj3)7!?#rC{>agqjZtbCa%{7`tOzYx~nvZo_9)JHG{2|DhA9#=qvpqrq=FbM8)Le`~ zu*tbd$XK2Dd-$v@neO(781`){nCjc*L7Rk8}_E&fJ3%{c2x^a74c|^+s zcaDkB7`m|Kb3K%ZAfgdP#%vm(TS?-<7GkgZBGNOU4XYMlwf4r}UZlxt8wpg)M8E4S|;OQY{_Y^WQ2wzIHng zGXuf!w33n{BKhzuWoP}WB)L>w?7MK_!r)acv)NL(oqm}`(!+UapszY0%NfrZd?9Q> zQg$LU5IV%Ppo3aapw^wuF^E^X z45v4cj6HW49$5WPamGg};s#|(H-7fSJ;4a^Fnt|9X}U0ikmKa2*zKI;LQm^$kvZ2e zUX&ln9}Noky^pkLQJW3`6_ie?A;0A@((=WtHu{!WYDkfX^fzNM+jLyh@SB)Bn`Y~a zeLf)MN7L-^!L6N>zuTL$_t$U@!FUDrvYJQsHmn{+Lo@~Z$&SG#Wt6JM(y=0|63yaO z_vd8m4HlFvVaUlU4x6xo@4pU6B>Ar!?Z{5z_nO5Z)=}&DVZ*`k9m;Q&3ff^HD6(BA zW0-0ygzo~J7H)e$Tn+DafL}$x*OzxP;QvxIZ~##fF@W@uI)DU?ARQDP;Ua-SY7|&$ zVzYt(yFQpYBPC&B95yCq){Mx35Hz?Tcg^xctH{_T(j66K$aAno$T}IPK1i;@AkrU; zw6qQwdM5$id_#GEYI3Jv@48<%J-2gS`I~K%=h^QwVcq=KW`+qFyy%}lAB)Vlx*_nW?Ej2z&KXV&?K*ZdMS;l?e1Gj~7w zMERghG-veVPPKJ$J`_5Pvn?<)A=UkYk^uH+mG-} z*vS6-FDXj=#QqHqX~WhP>WdzxM5z=ySyF(|$v5OEk$LS&G80;o(H-y@p#nl7{{59` z*#vf12s6C<7e}cJj6027!;n9V3;z-BSjTTrd){$vYJA#00L-tHCk| zPDSX$0-;f~=+2>j1GQg2sikJS6eD0y{i=r3^+*7Vq8Jmtk!sHjxg8GM^Lv%Gg$)!- z*^4N{_R)$2I`tzbBVEfET=!t=&XiF8&npg*n|gMy$f7=jh)ik>ox6=p)Cl? z^nM4B(@}JMgsnbGF8)akOiAbwWJOZwaOHn8TYh({k6?E!!^7*7W?wbCI+FjJVuERd)7OS z%-Wp;(Jp~0+cBM6U*Mt5Rk}|}y^igYsCx)dMno^j`cnr@Xp!EQF5ZBf{nuM%?&=P!dmd${@9LYSXPoMTsCrmM=)S_lDd8SMp!Fr;6L-lEg{9-PEWQ1N zgQk|#{NBi^W;7QYjuLQP)(Qh^p~{0juyENPdQY}*TAsghGTpO==`4P{=~(Na5f!%p z5(Wtj&vJrx`>k~4jBB4zfeHK$L`Ss9k4BIOKL1ikGbh!FF0d{r>gh#kW zg8f%_B*HiLEW}<-ZNqk#hJ8gEzj*{+S@t@+4Y$| zf);vVe*=FPM9dG~H|))C7VjIz=!Xvj%)BLPWLFLFl{?jdTO@U3bcxA=d%E`He1F+X zZ_|16#v#owQC4S$oo!Yd6q7w>MO}UxU{bo2wf2JlmV}A2T3`LzP{MuvU{_%1JD(L6 zV6V#QIQCcI)p*35C=H`QTV*|USR)e1d4VUY@w9gwyUVNFQ9G{6HZ}MM)pX$ofR|q6 zKG!$p!OQizLSPD3o->a4Wqc=DQ#C4y8{64+CZv09a;uvw7m+Um$8)!;_$HCGF%?G{ z`u@cz#)Xv0WHqQsG_-VY>6@h=rTkvvHjb~MBX}-UlA#_MecIipr_Xxn`C;N@=Of|Q zaq}iNwkc?B3Bn6CYKr{e?=DOHEz1k`j?MxNmRz zY8sg6E;fF9>7>V{uD!|TpD|tXtSAi5oBWY2yHkxfVwn}4WV^K0`lN~p=vY5Xw=?Wu znMGdhu29K{oLo3-5T9V;-!i6&J9(1!us!ZS?NJ}Pe5xRtp9#aT@H#}h3FvFmd`NWv zRroS6oehqrf24C&>aN#p7Nct?-}DVrd8+1=x?uv}|E0f3#Y9ov`2Mn>5Bf_f5p-q{Xp@6DG6#M?ElV*{Vybm=b!ib$DENSUZ{#bMOEYw$Z`ZIe=)1{9iZ|4d9Q851*PBk%CH0 z%lz4G+&PXXhQ+WPV+v`DbA|;9Wrg)*b_UPnq;Ym%QE9{+X`+;@j*J;9t%yvenIS_8 zby{Nw$;0?B^hkcU)vEV9zfW($E1u8ntEVpq_SG~0_RsjAUYRTPyCAbDn52{tszDsJ zQ=5Hh0njkTKlmiR91vMBW~9jUjh3YO9747Aq+pCD0z&N25fHYdbD3t5bI{FweW)md zha>@WocnDg-+DDbqKGk7VOrTx2&siQwB!VKU>k^$6Vt((eFb({MqnWMdX<#Wq3Y#X zAi#RVv|x}yTu4ZU?WR%1M*~5lk?fnf|DvHoMTsb@2Fzv4ngT!`M#DmVVSAx?u-Ry1 z2%!o!KJco$F+I`mp4Ezt6#NBBdUoYN2h)7B10efMAkaZCneotJdk7yu1=C%jR}-|Z zIb?*>eIv~24sL}(J_{g2c|}l&v!F=m344uiMf;uwsLcTOVDb)IK{%TWUoc4f<-WqP zFfJM@sX@}t44~e1;f`Z>26svlLL9{Z2fHB{Z$x)q_gfF|r0{6aYC^&{^f#Tqs?7Sh#JQn%ll4Zyn#VOhS6F}+D#ZH728YwI@iH^OHqqGPI z1AWA6clHKJh{z!E5MdV{p`)>I=2iV5DGIgN(WjZ4X`T&Y$R!p8nGojDE_iwq3n%lw zjGl3_sDW)_zYfoL2XVNjx8W|^ah4p(!@rhU`l3sZsm}^IGb;K^HM2DY0#$_Gtrk}; z3~@|IA%G&Y=9&BOKbJFWuIihf^b`8G>{`e2lXr)|H7|R-g;Ur4Tb_>lP4D0G>LqdW z@``a*eGuqRhZ#!mzICX1vU&uE)|g@fB;N{H!CkY%Wh|r$lF_%(s$J;am1me(lml;~ zQqJ2Yc5!dGRK23wtl74^s_h);OS?A8(H`A~>;PkHR9Y!p6t#rHcUtFLd)}KjoAXvx z3upY0Wpn#t-W#vc$3$Ed9S#Jea=lG}SCPcm&ee~wmKmuh0g=OP7{Yv`gZ1GvQc)GlAAG1=_QQ-h{Y@hF6lW0q8Cs_ z@6k!@R;@grM7ch4XJR#D#%{Ks|%<&1rRmR%bc2M9_12ig#J9dr`gC5%T*U8zPlF6-zOS#V#q$X*g`dS%B(gF|)sR#7%; zxE)Ne>w#qI%B-LHc6nqXrzojDFul8*y2`I`oK&FDf=?9u+kHqWm(KKbzR&nx-Iz2GLW$S*eUcE`+jZ78R5!Z9|+grz2bes<=NinSU0@mQhyRC;y5dvu2yz*2_ z(#vkjHO<*NJ=z#gr#TK%a^)0vO}?C6wVMe~m#@u|N@ouvVYxBYK`nShF&mXZ7uG#` zo-K85C2`D%{B``1f9@=w{w$R;`8Jws^oVn0cdN5uRvbbnSz2c&jSRnzp2tTxGUW8x zn^dlCPD<6tulc;$d5hz7`T*1Xnl~?k{YfTCl4cPrE)&L zQ%rYF;fpFKbe>#Cd}7)utPn7sdZuMY9xYv^uJOMyl&J8k*%7GO{kv)co+0r;-Ln|~QdcrUN>4f{UoKRz!Z#`YAkV@--x2k15FI@nN|HK){oIq}c&e&!aek=F{ac3+GxS^hh3Q zqLjA9oF1*RGc?Qwr~u?`n6PHky#n<{|2`K}lsvxtq^24>=v^3=oZyrng8I9~P--`= zkSP_%*O>CQK*k?#Ud`BeOS!q8tBHho4jyv0SoRhdlG3X8@J9i%3+MY#1BEWSEW1Hg z<$a{%J*Q*#PE1;uZI^}Nn({Ah%rfV-^X;g?*ypUnC#Egln|RfaVDE`B>j%+rJxIxu zWiT{+daUpx3)$~pWxGJfmJ0ZB+R65)_M6Y$;OCy+&k&GkBvx@4dZVZyW&lVT1>5ic zhlpb5Oe-J;Wd{3Njm`7#@*X&*|0*<8CFJE4fHfI7U!_O}1wQaFgZZ2GzrnBS zLtHD3LKX+b%Gvv2f3>8u~XqHT3XtbW6pV)(xW7z8$n)Ed_~;F~nuK3Sbt2 zxVjqVdWj}5013G+t6>%ag;}dNO^Q7soi!KCZre+gnB{s&2o+es4I^CkqqKm>tQ1!a znH63Iit$>bLin#zIA(|_139oDdqN1Ac*G1nB3K6A@;VFxau*IPLUP_kfA3s{mAt8u zy0=(-8oW`AC$IuR2oVF`fLeGP5@1d78CE)X0Lt6Mi~bva4k_ba0_V4p%>WUI2(a`g zF{}s-5Bbg9thtkzE=;m1@6?G6a%eeA23NJ3XfKhp@fwI6(xEXnMKm;=T2<)4|3}wb zMa8vkTc9Dh1$VdL6z=Zs?(XhhKp+HnD!97`w;}`!?!n#N-5&d#d(PhX-S=9nkJV-| zYt34G^y;JcF}lyUVX3Ix0D{z?h)BqHcgQ(HmpMI+%$Pl8(qfxAm164~xDWKjD`YGJ z-`+#v{X=1ZQ%^Uvo-+ooEz$92+ybcNI6;Y&w#E}lB2wh>kspviVgf*` zt(B&NLrC$&)>?((yc5J|`!kfzFUYRT2yxKX;l$ag*CamlGD$zK18a#)wGvZF4S2|GkD;sp$?R&E0So|xjV)zsPa70vLVq&@NQwE_1e4pvNBlF7Ntef z9OJ7`Xxaj@eq*S&at#>uQu383o*Hh}8$!rO$$Z+LE6xruvG4l*wB@vz#@Csv@=U7s5iJz&XTdn2-9g+EymoA>zqw*l}zEt^9&rI*rZ=+c%6c$;)BuR ze>nJ|740$cxQ)ZNS$g7~Kq_$Zb?=9GRuB42ziiqW*;vCq7D#)c9GeqG-{WjPl}P_! zQT-U#dcnzBzx6_S;{k7AWBTj*I$jk^&bYumFgYO9ze|H-)Z8rj%yMXVi-&jG>Vb=R_J{q^&(qDKFK)s~T~TSgJ=tP5jVN&0AwoEBx~YtiWVgYd!ButVKw z*{`1V+qBS&)MVF&Aq&^lRq~8rf&2h45a|aCy1}*utA;(c3|@?vmf2&89}11#+Qykk zfg3(+)65>gGsRoblx>iYZYaWj&;>8-5y2Ea<{*PCiMNazT?Q4%5RBbUi{+GQgh=ob@ht z>zH^oJntn5LA*4dRXHlTK<^0oenh^Eveun!KxiXxf4mg%*oHowTvz1A=>ZD&)lQSR z<7Tj^%VYy5Gw*xZ9J)3+5l2*{(xVp{+3sdk4rkv>$+mv!QZu)xPWC?(6v;vs2 z-Y2JK;`>dyJE5rFN7vRL5w;vb5w{!R0G7c`;#LId?VEzxhISsd4QWkgxg!4F|)Prm}zV^6_Ki^ry_hQ# zLzZRJp*7BV5*@7hHF)VadC55*)%>c(_WDwlHu@)oMbFapK5zio`YZH~kTKC-8z<(( zK}oy3M((LO*1+4CH2f;kDeONaAsf5|^^URqIALQFO3=Pqs%;u(7q(jFnq|12@> zIne(rc;+8P1QzDMKHy(f1g`g7K!g7Th_f&={{{Cb|3O%8c7Qr5H^;v~%jFg;X-~ zSyHNeI_S8cPmmH2&)-JI57$^yxngy-cWU%>{P4=twe}QvcK7~bW4XPpUq`rL-j6gZ zgpTTV{os#c#P`#b`QYiK$yo3_g$Bz<}rQEwHgdpi1O3ENurcfx(RQwM@I#)rW>P&c1ZAss7 zv7GCiS)fLg7}a+p>GCEBsG!k=L%&%#H=wX=Xk)0`7hp3Oq_#iZ!=}Z6cWJg`a&cSf zBp*xm;k+6wUo_MfP)pIF*zn{(N0F-@T^arUUZ4+ThF}tBu_d%$_&^3n`BiZgT4N!E z8(Wx#O#NeN;j=C)b7o=F2f9Qk(qHh8zs(lsA>|0aP$)ctyw)$AEi%J62(+~qRLkW* zVL02T!2_uu&8(9N+xQ^$J|_*g%xndCb=4i+6cJQ}-VN+J0tb zJP|K!n`OWPJxtX6_~nPz7)_kHK?A1W zmn=42|${ z_?@ty#X)fJ>e`{7@z@@p4u2ov0k+U(sqFAv92cWN4`ARv$Y25Fi9Ye<$ac(RS#k@e zdJ6jn4X&xz-+o*AFj_&wmAW=R8kJ@+c%v%(=lbTTI*7TEA$XuKczSbd^0&Fw(ppIUxx-rZ?eBiDgZs2L{ucwrNF53NLR2W)+6h{IiS zVEp8J!`yj(yV8>~%NOtWwIfCOX!m&3>DL%j>u%~}h|qD%cN`L18qj`5roEd!aSkQm zV8ZvckX%=}3%DG5K#mV3(gS0SoF+HpE7`3?G>02#AyfeMq$4>e@VZGAy&auX-#_Ks+zm z-qKMMH=5gr+kOrk%uLNpl|ZN^s8(u*JV>K2f0s)GhzeSJLc z=4k9N&Yni8!zn208^lGrF6?!=Fy|$1^tmqBktR`lu`4{VX9-RkL`SC6H!%}j*w=TL zh;LJTI@L(B?jEbSeNqh5HpaG>MjQ5jfc3v%h@GXqofo_T&T~*vzmbW?w?L8onFhjs zk~L9C5_*z&Z_BGcr6c&CNVUJ2tAwnKiiYkxZ&XbheB%16LJsrqr6iLx$E2cXbiBW| z{0qZ4-otGFfnltFVHnzfFpQlC;N)mQ`kr&~PQ4(Q>s@b?Az-CiA6sC9{{UHbym=OS4Hsl5?;F z+-$r7ZWf*vj-(ua^Jz{NfQ5^Pi9IRj-~61D<9~B^fb{>HuLI-&@__e*pOJ^K?!}H&pvam7(ya7G{-}g!Y+h6}j zP>VW*@V|ah(KeH7Kv+Y-Qae?aQ#KL<-IgbSh49^S)}Yh=9%7cyLaAV5?DA)OsP{! z;QCv(^#?citI$$9QrOrWBX#lTv(hT+j}XB=&jC_oaa&yrV`x6!WT+(H7*BsOENfnd zslCf#67i-N;#4ry<(UC)`IxKCDu8JYOt%`Dc)ewhh2j4RS+q?bP z4_PWjTd2*wBWdjpfTI)pE=}95vxRi9UUf8%32f+z!n6<=zQ7h}h*vGmL3=RDcfd#E z-(Q{E^`)^l=yG!8Xk{Q1hdjSuc0u{e@AKx$5TrKoG)F8I(S+eu@v=db)PZ+@U?zE; zUJJI;22nPpR^L1{t(WHhx{BBl;!T0O(KGUNMQ;LP;^Q9n&LlxLbh^&x3l1($OS$V- zVYdCd`AnN8Hb<1J%Eh~CBioWIIeDPXd!l=}dSKb-$TQrPKRUmRgH&_02k`k#>=9t;(f1^mfOIQ1`@ zb`6}dv;0g2x~r2^Z48oEV9EQfM%eVw_{-^IuGYRzV{iZRb&<&CO{Q$4#YNBJU#RU@ zp^Wu>olq|OE?OAY5&LL5n+$N-4PggAMTKT^WocCO(?=@5=@!(m89xDASvI4_-+mby zM5aJ8g)s>`I2w1`+he}ChQnHGE%Q-ND{G8%GTou>Uk=k;+64Cxk`LRN#3f=GIuIjP zdGq_ozg!rT(H%D%I_rO~4sdG3E9yY&dP~j9{fu{NN3G@N^>+ zpQ-vv@clB3hZgccL_GuOSaW}I8hxT@*`B+Q!fuo9~E-v3Ue5-DLT@n zHK#9ICayR_Q$OYl)c}GJN zKZ#=;P147&SD}ZT-xp#xe3Im<5Q>5iNUTVvwi6gz_K(xP=GE?(h*}xdt}8n!%n(woPQ_7!%(|Y&E>68AKzqSeg&TYAbvBkR`?W58GjemF z8TI@G8#B!_j+p|JxB=?5E&13HfZ-@#GkJ9|}UrujF~+YGY&D{X#z-+sPFm;v`f+X0E9(tfHo9@aX*Z z)Qq4@Th})fUCJT9z~2N2$gK$Fqg!U_IXK$7D6U?AGNalD@;P*sx+hMRv`;kNN0&Dc zTy5FWvK1*FEAvgBuet|ttXBqd3oL9~P~M%-8nkqIs>@!6|JJm;lfHZ5d+WGGmk>FU zJHTPKZ!!A`WL%jYty%Q9P$5W!(9Ak}V7H*mKEQ3Wl=&6K;kEW8GoPs}0+Y&vGLh6L zP5aPvUU%ivKfspX-LzbUT=$b5DSLnOZaB4}l)e5r=??#E6Kg9%7VNA}bz#DuNoCoR zQ}z^CKEO8N+;P}^UvjmGj_4*8>Z#y7f-9ZHPlmS@sB&$?-W~y=gS72qKF~Z~jEBj( zA*<+1e0v%eP*a`UBzTtJYivMhh8=FEKRO4;Rn35uKIV>aqYfjxsE0((Sdw1+&CgeWx-!7?D{^|-WhtxhMIbCgfzSMB!?xX6Rfs4 zzp6X|O-Ypl2X0i)JZpSfC+J4`^5}Gs?rpm=c13i;!{Ex(8?gfaD9}W*r7X`0J{>f` zmwO-cMXAriOi6w|Zrt5Pqw7y%fU!j)%(riI!V4Xw%=a=iaB~;qBLA55gRLr$?r>%! zqjF6MoPA2KTfTWY^w^NR<;I6~Q$?X=j^6MCh!^{oUKNny^HNY^g)9dt5^MA8S0t37 z1P>U5A&BaiU!M0T_ENTPbI}uJXe>#BU!=1;he{FG$ffe2kTiZGk?`wggS4i_z8bs(h zU^x!tam4C$KCWwJfFr{AHqvK6xUo%jE}fhFq&34M4DEvXO51NA21D6|oE1Hp!l5h5 zfWk*sP9#!PjO9{$cqNv6S#H=xmXeerQR@W_(fu_`4krh}UJ`dK8@mo8{t&@ch(zUE zoQ}aj%nBU2@k3)QZ#>+U&!;>;WK9`VfFmW1opBzO@fnptT5?wcyp;1KBCJQ_?TCpjN@0<3$b4TVzIqV3m!yalKs8E#rJ-r_#I`y zvEAFUYFsNkQN(>hmPFwwCd2V)hZInVgfv~UH!i`H==dqB79!jSGT{89+F)Q&1q^Os zTR_Q6Ju@`%u#a^_kQn73I-vP_&Rg(#>syAxgbwSkUT^Zs<+ZtKI!A@}BO|dLxm!Ps z9%LI|MV@N-A4D5FjC7fjyJEyOCc#)HFOBwF>nTh=Cai`7#sqzb#?{h`mWV^~--jkY zy1DFDM1U3hUK!{W(@JR691pk4v4J;GO~WYMPD5<^k@ZTZhclzR#FtWPzRTWLcg~1= zh7wA>?c=&ViA~wWkK(k}h1-&evws%qZpP)FU?r-*yT7fggF|V`#1h+>GqvD+$1dYK zMMk*>xfBh36C!ly8O`|C3P}pFQzy@$Mok`|9H2I@TIC$<1P|E2c}S@wEkG<}sidXf zaMOoN3-Z_q(eBLDNkdqwE(w~rB3*ER9_m_xcG}`*--bnO4&o43*-Q-WKIC4+du8v6 zxe8JDwWs7=VTB*P3*h1+_8NuYdbg%K(OnkU(2hcHtxI8>6@_ppsks`%o}E|vM=kj_ z>X6}Cq4Ab5i*HwrHi+D8Gd#6RN{GO6Z>l<>GdYmNCOZ` zYlvr`jZ3oWV`gB>{eccnKcgv7OO~E{o#4zaPDYS99)&NCofoE6P!Q#p^fCn>?7f72 zGoKJ48=aGp9~+y_2+{{c1p<@f#76oM#O3lfPbe8X88~Fc?Cj*|$O|lz}?_9A{TaY z4!K#`n2%>s-WPSUm>S}OIlO>LftCI3@Y%Czxfxrf`CK=^&H4*|fBtAOlZeCbUkP%v zwsm=Q<3czU?J__?Ro5Zq`MhvX)ycrXC$Ri3h$n{+mGi9cV_dl`z)g4yy#g!s`(g?wGJocP_V_g3F{<#*KPM!G2x-5cE4*qQ0$ zG1b?=bmipH{T1W>@`8RBdYQ6tKGECM(uVNw2riS`6_>yo*r$bDl&y%|GjH;8YRJwC z2>skYU!gjvx$%ciRCtet&x)cOz-Z`fSg~4Eu!0A=r9BW!4>ZF5wH}W;Wi7^*B8WDE zB*B!LMyEb=A}T|rs`GY970S;8GsTl_geRP9I#891bNgeF`RB`OZj-x)U7zByjN`Bs zm6g)*YU$jZZJCCm(3PQB901x+P+!bAql7Jm1>^P|hlQ<8Z~ zX$hcX8%ZCc2*?E+35fb1&wNgO!HLcHJ5DuOW)5AWcby3f%p#55KK|sz=pBvH`%jV; z2pqrz`Ch;ogf?b)bXf)xpq<(;B-XExXPH|w0xKKtcREftldozk*dEW$Yl=UK?&l6+ zRZm?(3Wur3sLBRNDur*Ty8lo;+Vrj1rm35OPc__UerF>(u z?oVECRtA4x!`&neevj0`Wy^G#C>;+xg&Lr2N8n`H+T)4%sIvFs@XQpiC0UZ6ylpA> z^+*x8a&fk*UYXxp#nhj~Mbyn(tH|7{o57Bb0!NM{KHUvPFgOKbu&zFb;+HNa^)7qO zqIf%(-$FA^2V-i$@#P_BBmdkG%b1YH4z8{g&``Du>-2f>vc9^32RsP|ZJ~OE2m>{m zHt>7mE`!X{i?}^qpmNRRluuiU(sm}Owk1u`+V`Z#3?90#G(C{MJQXPjuvHCjjqz_j zC%5695=d+nJ$vYx9aoe7B1~N-t|{M<+RZ5$iA$ma=lF~#+eyZvJhfyYmCxfTP8DtT z1?3Wd#Cf)EJx#2*=gj?FRUF>>jTgA3kRVLHG?s@^ZzRMUY769y$Ym%t~$3G(gk2+;c#|OE*9MhvIA_-B7s|&9833f zg>z&lXj#b2T=BenuU0x!;Wp7&)w5ruJ#Fd!l zeopp~@P@cR4&9}PCU8`4P5LlFM8sqeM@^aF_HOm7hV6Z8a5ksaCK9>PI(>(c*vI3j7Jez5+Mt z;QKA(=%p-;oTNAP>$Le)X5a+ny=F#~0nj zeyp9(U==-*C@>#{RNmsa`r?;I^F-sggWaOgr{*xkwJZo5RYWqI(gqywqgHG^>=P=K zr3`2-;{RRuSzqzx;ry_E`$n%s;We}@x_vtcVDts~ws5py_FYFMn5vx=(&azp{+#Ai zHghm;{}f4{^Zl+(da1A9tLaI_KLm1;1J96_!7gs`D)aE6><*k2Ib%(Xw?0LeKFB*| zXi78*!nlJ9d|8*q^Gz4!6MQ~ zvM~DYESzmt3QY&Rutej9{*<-UK9~(hnxrS*x)Vs*-*Ty;M@HjizgBT(>Ub$4uY0}O ztduM)XG-|eC`aRxhey<{Y z1T<2*iae)FA-0TFD7ql7BXK6>}cr}rKHzI_oTMvLtgh)gRR0T35#Mh2kr0Z~C&$v9L<)L?i zf-iTyqPh|(Q*iYz`5Bdl;@8uoNln?N^XNVOc1wu-Z)@`a+*_)54J>vi*%#0!(d~mG zymHcu%FIeLn39WIMrTf9x0;_Mm|O_|SP|cAY?H=K7bsbR``pxCIRjtTe5R7YV2+wN!`*gL$LP%rNp(#S_`@uYQ@GA}ZQ;`U zlo0}o(xexTYwyK#=Tf?m#cIHJtb5M!lIMX4-stv4K#@R6gW;5U zf-&-6&%LKEFA=iu)#*t9H9s%EL|aDsb9q5NzAJ_*b4+VgzSin>`kS`?S?-Y<;lqktD=#E$fuZ|%8qX46DkkE*fn zL-=muLscuH5-Ip75Z}*Hd zT$uS_1^XKHktC6BPk0eJ{wfJNxXQl#_9Ji><88x>RcfY!dubAjzllI%DssD3)s9J| zKxUl5pg5XgXI6eF_$wpjW^I`&+Q^Z@dLue9GPl!{1zJX^0LOtkOwO%9!b{NONMY?} z)qFvc>jt5pA4GTX>4{wrw_(^r<4Qcy7p`2(Drz&Zp?h{Ad2)%MyPG{#B8()ZbuVzN zfB-s@eErW0YH}Ya!&1<_$GzL7Cgf5rJke<=t+63Y@aQ&@{xqQ}AR#5rsS=JFR<#aY z>Grag)xC-;z;~Ka+eSD3J2ms4pAZrXFd&sP=(z7w@N*i9nTZeebGYcdf+XQ_xmHvu z0f1MKI>mt~ey}>oteQ9sTzo=Vq1KSGyJ?w6NS$7-6{jpHH{ESPN7$7C)tEzfp5zT4O z#Jp`j>2yNF<1Ih2K0M*wd|&YWR8h#!j2VBX2Ho_L>_Kjevi}R{K0=!*fJ7CjvZl+m zp-c=WdZr}O79ec?3f+NikwJgLD$mjB>fTX~4kezpP9 z>716Kh?)wu>AgA|zrLjuUi1dGAZKlLm6Keuoc7;!v}z~9k^4pPIT5>=htN7Gq~07x z(FXW86PjhDUVbiqC5^H3c?>=}T1J+e{4P4`Xvz^N5FMf2jiwO(Gwe`g$`Y%=DU5c5 z*JCf?H4Ni`f#&EX`q7n;GWuBYivt9sW&EXlm`V*70FaxY+d={8xxE0QcDuV0@v_Y& z3@RI5#SQ)fO+)#i9fpidi#}p}RcJ6Wln4$eL@kGskYxJP~$0esq++X+spX z%_>uV3^n?(!^H&3y@>}FH=DB1u7|yjYjLcFsI;54Vc7Nr@F04Qlws#-P8p9XdTVAu zck@cge4KD2g{l8~I1Sqvt~2G01f|e+|HE96gkA7%K2Tr>X$SY1rNUM9N%H`}F$gS<-!8=OX6c%TeLrw~;j*dhP7@$rl&c{iDP zwI~Vwgp< z7V)H$)R-uXZ7p>GGd?j=*FRAfaWRBf-Wn6z01pdO(GiLn8?nmxF=_OCgzaZEpnY^X zi!w9ZCc~qZ!_pQ@d#frWj^{cZ9OYE^N~|mH6X8Fy))rQx<;)D;c7C8B^M@xhmQl3H zwUD#N84pm{!uM&VX}p-j_CG||C`z&nnJ&W#t{Wf_N8z~#()oJne^WC5Neeh#(}zvE z-=Us~|7zVi4U0&M%Z$PN%r#$hJsnB&o&wh+ISu?%`PF2LR}1!2#Us;-f(KXaL1f;! zDaUWWA0vr`ilcAZJaa?-F+?nW$}a7Dhs4v<^u*zM>#<}jY_wY0lpPJA!Bb|3AhE?B zaRcY|8ohL0U{zP{9lSSvPtby6pk)dxJm<-rE}U!EbF#pJ%ZHY)$Bj>6ok*xr0Zb?_ zzxos6QdK|>uvY2d2b!CpR$_`VXU^@{5Z}IN|Q+w%{~HK+jW8-)x1& zRGI!BP)~7_sACCEz!4BaLDyT1b`rqVgQAA~>BsYNExU7rU68rE)*-@gny#`xb4vkc zpdWkS=+{h$?ZzbTCX&(%pXI&i$f?b5lwt;*eYsqH!Q6Q_=~C-xU0cf^v=L75yu!LE z4Dve@W^^cgFCN1g%#16n0Z}^)CYwcp-9`y%-6|-D*Ay1~oO zbb@${evl0LV}fxyY^kCGvWsGTum*HA!~gDtJnuo`fk6Muaevt633lV zvx6L3omhDn3fPb=c~o*A1a09VMkcRTX4lNGXatwP+an}l_rG>fB-_{+X7@b#vK8Hw7;GdtSltwM zYKx67z_7jrS(mk5_*%nt+Rcjmv9$@ZoTGjAN#pXF^vEb>h)P#sUF|c`?dPH&m8F&R zOn4pL^8$CgPa6=(`|icdr~9cy;Zo14Fx&TfGv-lL8b|)}Vzp+MyUYaZ^{ofx^j+qE z6Nk{FfeJkjY7askYk5Nia`jn)7Tw;3>1k330T?lD85L1Akg5B-0{uVNlkO1bAYF0@ zM9_!_#ADLfGt+-<-|Xxl77qx_cY*nD?Uwz0a%C3byTJUn@B1%>n3VG$Dl!*9jFgl6 zzsf5YGeDA*>n~mS-?H%kb$kQlNV)#r&&35$Am#eUexART<^K_ufo%WQl}Wk(-p0cP zFaekX%mC&93xMUjRp1}0Ff%*A8esFj_V=H&FmnOy0QLX}fFr;O;QaruA_Khs(v9C$ znCN2Q!9b$eC#jXmCGwkSqjwQaiaTuq>MTLtw+|NW9Ah z!}k*|t58ZvFz@epZpmQf=$LR`MaY2$VTmnD^HJ0FirJ9g30N?w@W}Bpp`qWy^MgoT zuzP=TCvM6}5<;usEnWD2A(XcTZmXsvfQb3a@%pq055;?)VAQ-Ho7qD`3D{)#cAg0@o; zR)u1Ru-+t;>%|;(mHU9Bz&bI3x`{D1Nqy0Y8!}-qqa>)fpiJ03MI1J8fy_mfCr;`ysxvh z>2F{s?FfaM4kR73b1HDDnMnzg0`tV9*WO)r-%)9frw=(b>t$=}X8lN^Ow^bnLSx&U zPkdc5&{&9h4z+BTXwd>Qy3Gs9rM3DS$DPD!;I+$wcB?^uqH4eH*LSzt}gs=s>7keu8@QA>eD$^|I|UwPbjRiDww*}Gw07W=M~l1H4$7s!c z)tdF5fwf{u$~w#(pAOtJyi1!GUzdk6qUh--8bAT5pPp2+Q%&KQVt08S)(q;)D?MM6 z`kpJzUCtB8Z(b4?C6AgG<5ZTQ8BYRv#yxdu$CZYhkvTMxvD62w))LPBUfqS(Jbg@L z?tE852XB{>$Ww`SEW%8J0iP{6uH794i=^hBf$B{(vpY58*<~l}U)r1KhLIn>+`<$0 z9c9i07Xm;R1$y``E}W*t;OHv-xp~~a#E3cN@`O>>cb_c8Tc#N5 z>$fBb3-fpwUhdwDtB&AZxfE~gLE&7?#-=>5C1(_NmQYcYM@z}JDsPpWaVJB$D=oQG z1g->h%=^(aNimfo@-h48z?=cSrCZvrJ)Oh4wT=v~!hNZI_Y(6_Lek+%rBZ znxi(Rbw-8Qe&v7~wp0Y#`|M{?s>Cp#9@Fpn^D#bEPEe_4*{+5#d+JbNS#1&3dQ&b# zmmcN!`P8l1zcsb$MbUtA1!|nBG2+(<9=mpx|Ht?<2w9P{ZJq3L6Gu?Yh(+VeJ z2P2=eW(-V&@@kM}=-tsjz#^kDq2Zz|c)VQGlH#~?rmvQe$+CO`&Ih77yseAsxDSJm z;`EH|Rwo0fhrh<&Jpt!8G3^lIA6ZyI)9n!a2r`ngVmfMn8R1d`ATU9U9T3X@ zSo^Dii=(-t1LEo9yOZwyL<0Z8I2IOwr6s`924HFb&r|%v)AesV6WiY~%Eps~wnF+2 zw*SSMcVpLI0F0Gnv_PHYm_i^rTl~k3*`ssf=t3Xwq5TD=I{(ct!YMWw* z`mYhHu?s@zJ#Y4XA~lHkCj=JIVr`Js5~hHq2RGWl(*|JyRGGlBAR1vGW}hcc<45NA z=URT{?&U1-^=^32=f*$#sLe2QZHs?w?cwP;RxW=0x4J%Zgqx_%RxOkZF79U(>-`G7 z?%WSZNMYq)prARgG5Tp?XA_3CE2+5ssm+a%zqYMF{zQ6V)2C8wIJ%3o@I4*)(6vfs|VdK5Y1-{^`0aVnp6=e{V9m_l^jHySW{qiiXIy99T?F8f%gR7=KZ(ex^AmL^nM4m0t6SeW*X)Ga;sx>(DZxlklVBr& zjiS(^vVo0xcQRoXM0qc-Smcx1D=n$?m@O+?m`w6K z7sriY1gG(e}CS{ZsSi?s@D$l<5cF2$lxlP`RB-+nquytATH1@t2crKF=oJov`$TN|4F5G#Ig*VGm6U@K~U6yrJ4yc+XzC+k2A_uQc7 za>mNGuz@rFA|%r&2c9Ea6Lv68Ydnz%%;@y!7Tn#KUbaik;N2_ovIUT$lFV_I#9OVS?%6hdUn`YZjT@|psUi73*l)%<3)S-1(8TP)~1uxDYCgmJr;hiPcHI>k8dRU(5F z94f}H=Lkui`(lCU;>XLAs*|?BFBd!RTVIadKSHTYpcy3ewJxlpV;2+^2OvMC9_TGl zt$DjJwVoXpTEfnuiq5U`hpbBPaUmRprwX*#Hx5m_&&_tl@o*VXQ>A5yJd(eZInJRE zEojw7;T~=fGgy?EVT=8$s3yp?wNfPX$)x@Ob1U%bRYMaO!}?5eo7?RtP-T6)8xDEv zAcN(+@gQcGEev1Lhaqz?=UcQbdF&~Am7$IEL?h9n!Ivm9Kd^g_KIMW?hCt1qOuBGEIlrMWu@2p`8kS)VJp6O%wNROkF z=kH~n+-r&*A2JD8kE$^tx+g~$%0I0SGmcTi>%J2E<)hTJrG3el21aLIso*@Hmbk*x z2rLY(1gd{Rbo0Jyv`;e-ws=d|dgwpR?YuZ@)Oxqvd~$Pa2%#z*P$_w#`mz7joxrF1 zE05n^G0hCkq6EK6(hk>buFD8bZ-4RHvSA=TneTY{SsDBqg4ck&r0KNyI3bZFRsU$%;>&~kvp~v&fsnR{O+p^zUUwdK^6Mnpki2#E;D}3yugAY5X(9dtp zO1w#pp?zv*J1OPvKZ3vPJyDAp$gzd=PvWE^PlRqX59WDnAexHZ53f?{Y_c4rJ?nKg z%}+=aI2`I$_uoPI5Ab$BG%2=vecqUW$H&m?a40%k#`6kzxH2HIv(fX6?^`bs8xR>} zPj^dMW0(coB?Hqr9^gFTp~34X>Un~Ga#e?&j7HMlRK-%FEHT&edFq7YnFKU$vWZ;u zB0LYzv`x}$EiQO5?4hf^S0<6-OFsJeK#we1dJnxt5IWu;8rts@i6F?gkOnJB{np8R z2^IBnL@Veo?)CJiYz7_>`wSiC>rh-K?mzoUa#$~v)qvABF7>sq#p48uyS7yrcU*p+ zxE*U2m>oLRMYN9gyTr7gFc6z6N|O)SfRcn{D=tY`Lu}a#NZ`=6r3z%Qq^&+A0r(O= zTACfhe9Ds$vnctjsK^cWIVjz2~{6qcFCEk1et}!s@(KjsO7fH;gVAG_o zpe`%ql2ll*`n%NH8m!ATmgdehs2v{uy3!S%fAkA*S|x}uG93vyzH9ms z6n0EltO@L;>r8La<<=Le`esKd4c+YZF`P4sO#;)w*M7rNzeVo~Afn#8IX)Nk*9H&RR;eKgAVste>`j%$|(8#Og!|u>^oy4pw*{Jw~}F3PvosFILXJ_K7i5vvR z82B9IW^Y@o{D!7_0x%|MlIxVMPkf4~UJ}SyNi*#;w&=+bJ8hPkCdKX|c}X3E#`uLi zCC1-at;fH&@AH@#*{Onq$26)L(ZFT$0`NBEkHAjJZc7tZ8V>ekz%A!e)iT3*sWG%6 zJuKNQTWSS6+gWu}^Hm**aArk)j!GIcj$~FKDfSSz6rYGtC-Y3HxK|L_il>HR;isJ> z63xjoQ|pT6z=-q7n8ik8Fd6qP6ML2l2QM(}VpWb!HmrawvUrs>n66|Xj5pFT()(9~x+LpkzYIYLR}t9G_Sjp1ih zZ7<6zk|m3g|7qE-YulMz-)6Tc*7vZ$CJId@?+=I!B&^f$wY#1zM`A?}`>41#P-UfQ z6mY%%CmJ&geVoEm&(QQkO1ifqH&7AMYhv$vmHp7w82>yRT%^558pyLwVaTepjO{X) zS!+~mpj_hjPy4G+F#%?baZe`q2G~3iaI|;p77+ zhw(LxE-5sE>3{4C+>ly$n{i~5oqSfy_*0oNTauKm<+mtIYYBt{=IarzvVm{@J^E&K z+C82VTr0Rhy=gv5%&l7o280ryUBU;uum8;OT0$V^VMIX?)Xhz zTQT80IQf$H5G%8N2U)1`1s`(768D2bUv#o;xE5*=?6gW zB8_dWkm`Y&(fz1rt!8V5`KWn(*7&{eWHRGBL^b*}{?Qx^$0^uORf6;_8{)kGHBOJV2?(`0+IopTMXE zCgjhBz)TV$d+DhTSe^M|o+a{EEZ6=)s0Eb|e}Kd7nx0#GgBfFD6somnshz8b1Vox-I^WU>Nn|=;QQ{V7EsF?T+ zAM6&)Z3P!+4VG_yAplaAXV=lH@WtM1&p?*bx!-&ct%bW}u5%Zvh`%p%D>ILoxey4? zt`KKZViVXdY`i2R3M}>x74$QozT6*{#2#;D+6g3vB@j}SQO!h8n#?1+9q3Oz=V{ZW#*Rr&Y;vOWyCAfz$$S}A|u;9Vnf@^RX+}%BRa7l0t1cJK-4<6ht z*gs^SefADH-+k`zFs!N7UDaJ(-K*)Eddtf?!%~BilZb}q)uhc+T&27$r8wlqC#;{$ zb-d)%`^?W$myQmljXjP4RC!!oA{ahjpW>9L3Vj1h-x+>vPTXm2zPa%FTDrKGiMze% zhG#hJM#9`e10b?1ZJAlhRxIFl=;^~kFjO^tyHap48%m__m?3r6>TVzfkUS_H?fC4q z5LOqwPivNOz<%iUnQJu1)v=HwlF3?W^@;@7=ToVZO3$>5aiid^Y`BQtk7b_xh~m8s~D;#!YXbgGXalCOgvK%83Z#T3bWc!j6Q|`=ViTSEP9*5`u$n_e7`h~ zOz`*A9Fc~sRJWUev8I?3R6Y27;^D<8tcIW>|9E(4@|Wbabw7xOWW^1>n|#v7mK%}~ z+=hVQ=hwoB=Q`i6#cJ{l?lk5K%NcgtHIhw$smpDpvh|0*SP!jC6@~SXh>&Tq)@Oto z5Wg0fwmqL2|C*tHI&)~EbNxc9eBIBt zN-Q;LCoM8T-(O(nT&G(g3eGYTW@f09cs`kG(YDg!G5G30sev=jB2cVv8hzifZ||l- zj|uqtp1H!KkIyyA%3Df^P+2H+&BZ(N)zD$O@31Q+9{fUg+6k_Ee$*SBna$uP|JAL% z(X|XMTrVfHf^n7wYf|MTC+h6`FNml2F!!`@nE2Sla-SQ%9D#)H;kRX}ij$5;AC9=# zlR#t8j7f0E&{(K4DoStOJYXUUtNl9YiXDTN|2Od$R8bPbIJ5`ae=!g_Ik+B<ePrx2~g&+@%V;5fhtp^`AFVaueZz^hr-VwX+wQSP+HPU?Wr|uwT2=i{T z^=iSkr80@ClY?~e;$YWy3xZ%p5`!y90HiuTr=6M@bG2j~rb1Yi{Aa}RWN zAn3tYIS1a61a&aokHfiHgEgVH%^0`(7(U)x2;2`9iRgiC@tEYg!Hst+Hy}SSn;ZA5 zWW>*yo$xR|qX9pb+LpraMWhj|eJcIiM-hFaNTGx%$TR(a#QD(hdxP+y{4|C6pyV;C z^~vyvmwoTxyfZ_XKco0i-B|Frx!a!-ygEz10p#>TJ8IPTzm{!AeM%z-}V?f1U%ECZpP1p#RNZ!*_#}5cl zdE>_3%IZPM?}Lt@yiwYa%L*^kM#2>Dg5X9IQrnQVi_X$UhN|z$Ph;Tko=0HLhII+R zA!HA#-TAx)jX(lI32uDe%I*kYGMS$s=BVg{$=twj=U_68>1B}bXyc&(W?9%J>}X>o zgoJd3m=lnGFLN6C%kdQYN zY0t%d`FP-$bggWZu^+22Fvv(pcO*5oVvwxLNp1JKBcQD%OL&nb9=Zuwb0JPpL?tG2 zEm*b)mFXz1mz1%~HIUp)oAiUm0?VirHak(2zAk6s+Nouc)WP)i={403=T6i@#gBAK zO%EOP{yUF#>?H1YpY}~^GxsN7eQ-`LUuoFralx$?nbiWhHunc*2WtG(iY?R~Nvm0^ ziz^voD68?Q`)vDRe59;^jWStRP>y3khX?#3FEk}c$nV8u5mh?Kax~+`(UbF)x6$vd z@V#KKlVC-|c3O0=F1e6F;@z5bb|S?C^j?OSJrm)B)qX8cs2DUdGcN2Ly=24<$0sX3 z%4B`Rmm_h|V(>T?Gl6`ss9?D_t*9MG<9+H2f%4A*z0t#5ef#rTDm!B8L#XVZG=0w`qCK=xF+ZPm8K_lpEY4w-;_5ixp=FVS;AIRbVK4gEXd0^BQLI$e$N<+i`@X zh-3zBt~V-~5=6A*(zt&uYK-V@CFuQG|Rg=%-Te77skR%~&oxf11I%5AAC)tmJB=j_T&f z?dgCfQ#*sH!t1DD&o%5-c9G?jJ zDCE^6_E?w0ck$1wHVYLr1{Fu~OkYQqct}1C3#DxgJ?&OROixbNWeH14Sl>>M{Axcb z^y-%53wDZt4VseF7s9BE`HsELZC;xsbGB`_CqsuVs5x3-s1j`kwm>SgI59B2jjfY3 zvlkkvDpyh5I&4op=BVFQY+Da7B_pul)UiSIbzw@`t*-Ufaf;Xbh5jy9X+YKf>6Tpr z>0J(1Yb*IttZL8hZc;pA8oa)DgmKw+5}Dc^S$VZYigGQN>Wyk%PFTWS=4|ye{I;ai zj~w?vr5D|5<2h8rZ>uJqmE6Hlt=D2lV`JzxiOIglk}rcR*9P%h(5exY?DMm!VDWfc zTa7)mxk&LCdQ#r%Fh^5H4xX*Yb&CkOGL4rUIXM%F>FUHprva9e%AWofW~WGvFd8n8q&1p92&D8Z}teS9hSJUUFh=< zRIShTEcO{`d3C12cHlrpQkLQaQZ6p$tO;agVn@Ru*hFo-Hx=S>2BuU+!cLe4Z^FA#Lp^tR1cY_au6 zpzgcBF?*LZQeYE-a0x3|RCfn&X0Fb&CieD4=zBLC6rLaiu?E?mn9V=1BXn2WQ*bN$@FutO?md=)nL zIYGkdbp)+8z@^;{{5+E2+9<_+?Tv9Ay)hFgbMMC&m+kyesew2v=6;P8>snYFw*AF7 zZpKFy9MaP$ALZH@z9Cj3M}I3OkVJhgvQH;EjD)dxY%l8RPPQp5N?&g@PH1E>h-aKF zsd;x&9u&NBdmi@k6XJ_f<=`JubOg60UO&G_M1MOc<(fYowgD?54D8v>5-(<1zO4+C zHa%|Vb({K}_hwuC#g((a?5x?dlXqGgB5W`xczU$knI279?qz-z9H@gG-eYJ5O!^Ya ztCCbqMo*2y(D*5syy%Kgct``&NN7KP8rnBo^!kRZLTz#LgIm@4EC1M=&+5#h&!5c+ zIjKv2Fg{YV{i68^%wft-0<`)-75lbUHUO#|WEP(&5cfv+*@jJuoBBMZ`cS69hq%Hm zp3!rQ_t4)}xoskQ?ddG!+dH_lI1xI&wX}f3G~4y1^Lk4^&+tT(39>3*hsd)Zu9Cki z`%Z#<&S}Tp7_3c5FVoz@c!ithw913Pkx9StO&eyqQI^xN0$eu!xj9djc-T|Gtt0?| zXS<~F*?6a-E~-rxxs_>Y%K$q`dg{CCG)C~D3^r20ADYR+(CKjG4tbEU92+?@#Hg2 ziURLB=8o$mIw?4+)vI!ry-&MPU1hOzVT2;bZQc9|haG{cjc0?*d3KFD3;3z|e*LOW zF(oT!%6+YXNZ%$R-^N6OQq{5(DMTpGE$P*9s(npSL$vZIHrDub%jDNA(n%kp+{wfN z7qZwJg)KrlRr^v3hT^z#=W}%5@xq*_J=Ts+OQ$yRmny-?VIQLM@>*SBFw~p;N=6i<-pqD9wa+k1Z5V|* zoTd#Vt|Bn#%iS)LqF02iuJC}9My4m6sA`Uu#i4Orj*q@f1nQ0T*=6V*^>D(mvM8s1#^N>x(jxYfwKbe#dSd|>ky#^T!<(S6N1xlfPvXW*_mr>(1 zU!w5Q8{&|L)eQOhDeb+(40aM}1>ftg(lt$Q#73bBJfCH_oFovIieLBFmDU>0oR-w# zjP0d}anoY5SAABpZ%cHV;Mgcb-ZLP4rN!JlKXC!$rf{Biz;C9-R{H5kyLy%Fn3Pdv z{rI9|OgfH)-=wZht^J%ccqoUzSt(VLS!roNY&{MzeVouZ+#zGJZjk_vo>n@F&GIFT zVStj+T(@?pe}boqymnK~uFLaNa?q{kn?XXqb~az($2z<^1ZJW!M%(TeKu2*#YCGdS7ExIN%PMWLo{sY?TFsSpjL|mkXAjIZwt1ij;(Bln8zoz4UB)4GwS@fUQ3fdu zXU_^0ELS9kg>5&C;Cpmxm1#Yan52N>+)>+LN0rnKv4rS~1p&+OeiY8ol&GxU@DgU0 zpr>8QzPUeD!kC8hcu=>TFL?R*qJqn8j3E6Vn!cVrad6?NRy}*h&4?@ch`@z(_-=Nk zjHiz3$xq&t9;IvYy^rY+%I~4g+)%CAg&>1>=}pbA5OnKYNF)+B2mh=V*Q5h_S9u1$ zm6O+$#V?U}3$3ZMVOIXYS<-P%v6P7c?UAxLy4tk0wCy8+{(sHl9iB`uq zw;NRQm*I+Rxy!El*DGJ%MNQ1F0l<-Q4FuhvqQWaMc5(Q|wJ`RESL=7*FuhmM%otB& z^6~>+Y61hsYDah*r%>E52!=8<9WgK55mx&x1ItLBNbtpcPT8*HJjU(8oHZEE958s6 zbJ$E={nAyedmVX+s1{J*G<8<#dIE>gl~%2?KH=7A=Xj~{zCt*JTr59affzh)(QR|G zi9q3*A1}-w=CwAU&DLmSIqvM=c+b6NK3G$gFOM63NcEJ}!=v}p%(Ifo`}$#7!?zax z#kRLuF|w-*u3E32QFpvIW*%Eq)5R5BiJOXcE%ZMfth_<;pXUI=W4&0Y}u zX#SK;!{u#)OrcwQ&utqUu`dMC+d-%h?iZ{-Gwm z$y#&uC)wLW$eJoQUPt5L;R5(v7p@7QXzAI!z?GFVk2wuD*?m_2?%U6Ls~Jp(viD zSNvkKzC<}qIs42xmt2-Q*vnyhtr5#07#pFEPym`QTj4uc#CA$>BoZsNN$8F2VAV}PP z;`t(5=%m#^-Ozq;S5*1F9@&X&m45Zr!sqrXpR?C55g6eKR?EIrJHt6iHyH89vNw@s zgwn8(yt&dUQV)l(-RnsX8Ajyfaq`sYtk$Q0^1^TYRrhowi>mV226vZfXQw|FY51*S z*e%`91*_thN*KyS#C^UBk^(~ZuKKCh7k;6N;b*N%?qqWj*e4gQc&4b1?8;xKGXejP;yPttYINNIS}UkP*koQEH~&9I+_U zoRp`KxS6!v3db0Q&<h z@3!`QcT$G`3>>hOWbb%^U721mRE9*lf@3tGG zomR|?+sP4!oExFd;k*1rBZ-rbY2yCEVoMPBAt-76M!YKZ$T?@h*1 z`Jj7H3ZE~X>$9o$(@Gpgetg#2*PLkui3+Pj``tWVR`aFGwf!V7@+yoI12op8*aik#V@<*=zr^)oF^cA-tF26 zh||c`UYNwpr>WWmxg}_fe4?tjwL0*@mK;CSsAj;Mu1QC-c|jKpf32+(dVJfWMd-AL z>fSLhYeiM|EeOv2CbyU_iipWTSN%sW|Ash)CqTr0MtQ^(h^ftOEozU(H? z;mdy%y!$A~bGmRVo{KR_8rS=h*ZPKz{xZtgvbF5TIx+Ebua_1L$+V-`k!LH0LN3L( zyl58^7bDyjp1G&xMzqUnL=hIuY3I3QDDwt3)Zk&yJo|!|geYvGQ;OYB6nJD&mK{Ea z;9l%8574hPZ1Ni7jpB2z_t?Nih33IoQC@D_q`bpK@1(-%ze|6gBfg>OI;Oy8S`l$P z@4KV?Wcc}x^^A669Bk0>>!((S7n00oI=I9ylaDjg7hRy!3Xf~HwFrR;77^bjH+lCd zGf%)JNL;a|O!a&+Bl0BLN40XQhU2*;TuS=&jr=XoX!M`g-e!C^*WT!aaK z^Ik=mcQ-*a4Vz;3=YTMyFQvTLk~S)SKPjRd zyV@-Ie3f`x9Z@FVld4ASy3c(6RmtC=VowAyC4Q@P+6(8#c9-#;w%|U8oCN)xC%FL@ zxV9dnW#ZenQ2u;qBGW>TS#dwYxs+oxXQ9wm69Q+7_p}?Yy+l)Zd%c}s@FNVwk+uZz z0Qt8X^M_;iZh2qrDXiC7~x*m(@A1^VKyG>0H5m2pJS+941t2V``P?%cT}z0 zO>BR%)WHVTL@%(ZZdogpcgIYGfV5S#9Gp-z)>%}Sew}kqOn27rE8Iw!HDa+HZvEqU z9n~TX`OvY*Wb4qmKgfMJck@#i8eUHOa$??kU^Ws#N&3|Kkm8E}<| zor%W#d~^|5CL)}v(vJgzOd}Zjb`wiVr)0XKT-RHSVxxWWN1h_ z*M+4)W7qUGqa;)A)}#fk*X_F$&r!{n`xmZKW4#Q%88XWy3H|2f(0Z2UOO%COW;7Ss zb{3fhL+QzkiG3vv`8l8AoeJ(`CD$|*`QHD;PT=iGW;2mC^;nv~6Ycp&9E-mYA2A8^9Tk7%)Wr6cMA%>wT z5vgYx%W^wgubUYUjEd1U7PGv-#oRbjqWFL}ItQv3nujK`*hb2EP5gEo&7H<>qa5Fd z?(8V@q6XdQ*FLJvcG1NQYJU8_Y|m-dlJR}@Sk=ECw(x-3MT7jTnTRoM*;S;PwC|SB zbmLTM#sDma7^c%xyXZ%olK)9tefjBCW@l_ijaWM24=!S?Pk{OlW0--6U}NPmp)9EN zY6Uq7sj9Gq4hz4EuiM(+(2;jT&{q@r%J?#tH)o)}sGM6plUQfySDLutYuMX&Q{2Y< zdF5Vv2;=-Q*w~Uw6=o&Aae-WUou8CNOgwMW6F%lejmLce{6V!XipB@LP<^aAauPfG zIgsqO^9K$F%}{^sJ}(?i9dJ>L0fFVU9ct|qeF+<*?ZUdiiQ`u2;NG%n@j#?{qqSUR zva)?6@E&>DYK`8W=WAAR;06_qM{4*9xptQn|`qI;)btQ$X zZ+p>wSTV+;+^>0BByU@SaE$O&U>(LPsjVB6BRkyvEioMN&M7H;R>9$@2QRpzy55rc zEn2e_xLYMMpMta@Nu?8OGn9lY^TbXF>-oNKbToYPJa59r*RQ5WB<~5_iLp8lIuNf{ zp+EFx_B4FqEEDk#K@+9zx%V9@X~(_Qp+JsL03WumqY$THw3Gime6ss7%pZWi4=}w+ zMMuytVOThl$Q+>=@%{kMRa22x6_-jPI)*ku`|J84DgzRy@sPkKDeo9s2@?V}%+g6;X4C%>A<4t}|0h855zH>jU%`^U z-0=VTuE6hZcotT!f86ju0FWyQdHgCJRqAR#E=I9J~IgQo7i>(pJNXit*xs-WJ) z1$heA0X=-S@T$07o|#X^%tjw}mHj_bkz2%g4k`xQ7IxyWWcCA1Ca6DIQeDhWmHBLx+lO@N68B_*YVj3iizgpVE~q#Lx1DFv04 zLxGtEUS5ZbjzNH0PcXuXH(D!%gTf4NBE{WW3x`D#5%r?>fhM#@dNBqah=AW=JA?#k z4unO6_ckDoMoNEAB?ub;lYCoz2$xLGi=}1*rxlBW1ot@xozt7I139E1_NVbHjJ;rJ z?|Ym;_lA4-ULv2f&NLXLRoPIeL)>M2_C5?Kumq=~B!T{63#JS0JyF3OefeI1FhTn~ z1dWJ0@4gnzK_utqjtzQsV?RJd4>}N^6DI7=bepNOt(k!0`zz);aQXJK9$lUv!YpzC z)T?_&|I-QapA_F|UZwl7eZ~qr7QKn2961E1etth^gQ|#0xkp5kXmH;+yktQGpdvKg z2XEdbZC9)~|VS0;x!D@x_XI`v~ry}(Gk_2^V`V`K#Q?JNN`$IafU>^yX7XPy1@&FSFDY}Ep z5Gz;!i@-ac@+<1Ks^D|D=&?%?y&Lg+3UDR6pwu6ANib#LrbjAfMgG+#l2!f$ZN$YEm<==yx1z1vCKkzU7yY z6yW^_W;jvG(V4o4IXhh9T#++-HV-eZE8si zpy`+%RP8l&Mb^=92el3$Cn0K@o94dAq1c8ub{)ij?iMf6FE)4u$jgr&XhCh-d@45j zg5y(=*+rwHqKrbcn^)3&ZB}$>gHxJgI%kEyQUQ8~4sSZWJjIxv_IgnBDOia{LGluD zV~;)SbQzC?dCtAP+n=Pyk&6qvoQ-krpo43|+^r3j$fks|P@2x!i}R{@R5?9b}7C-V4%+EVF@%09Ad+~0)DUW%LuiGn!?j#aFk>Yf+F z(;sC9lMp}>j?s){Jm;M;l-S{`I3xTTwpgQ}*CpJ@EOAANsw>H0)6Pki6sBem1OEhl zDQLaMGh8KTG;AC}YH;&C?^;tOSuG*n$WR`}9Ko&NMfJXS^05?;AwB1&;vDduCV<>O@>E#Yj(SazJG@3$aOG-i{ex{`>)ps;eTntpM~p7)z&G%# zjkd!Ux{Go;g*@o7DWCBp58IYv*1ewyzd-zRDwGTk|j{)lS`ln(hDUZ7LEv$(Q80IB>vT)Dhw$#;n7Os>kFf-23aSlw$iYk zFDrxjowFTv=o>VqJQ7jc^AzRuV2fg*qvNK~VcSmTrRd1k>YI_srrnlKDUd%|RBB1Ji6c|nLqMI~*KcB2X4h;XU z;&A^n<=je}=Vx%ybz+j+RKYGXuY6**VzGc)^{{b(W&eGby3I)o?&|v{OsfR-hJ98M zan#vZQ=Sa^)ItyE)(eeU3#=$+7MtllN`5VM)+!q;3#iUY@D;<-RE|e%ZLM9SH|Jb^ z=ZERQR|@ZR1dH;8&1OnBvtbk_{oO+h&wDEMr;y>Nb7NR>d2j-ivs1<>kwpk&=RjR# zX9%h}^ZoOD8D!Z3VX|2oVZpFTAsBfW=O5q8y2FXi(|fo)AFV3YB~8hRe~nn2!n9G~ ziqAX80b z!c#lPX=b0e2v4p;iS?hYUhh?UW1mWkNHPwXbCz4uWq^y@c0(uHB^Q^FE0N{-`lFiH z`JeMvp8iPe0W!Ii74uWyT*Od+*Dg(<^iHHgIp>^b_N5Ms1dlW3=d|^PIgdFM z*T5XpvOVw{XlSwh`dUmZwvbt49er`lJ#%{8kK;}TA3Ebm%*$2VKk9WA4(k;A64?#L zFFo~QeU7<=rWXQU$0QNwkqbOIUN zDqA^Yl%qV`v@D-3I<89XG@HEWjzLBH`HU4M+FyV4XEXDj zUXD@f95xO7Q+tlV1FA*e_nN^n_Pddb5%_e5$wU=~a(Ot|W~ji3z2X7`Q%)s#V_HBl z8dWLSRsxoRK!4P}LJq3#c!Ly}tfn(nZgU~c8LW@WH*2&eaKsJM@Ngy z;=F&lS6(!(Qdw`;N_U_h+WZ}PaVK!cO-@*7JD<8p11#*&LknfquAL?G;?vbgdKFq7~Z?>Mz_l7bR4>U0_e$9=-x0*ZTgf~=Ws-s~Xkki%uth~)9>GA{788QDcWHV;wBL)zpq9s7|&L|tx@|EJk>(d4V;*ghoKk$A8BV%!|QY0V!Bp!Te z2u_UFk!a>*a-idoeOichhf7PR-a@c2&yb@d+_?QNX)I^QMf~QZ05*{FB%(`uc|jf> zYgnQsm0NtH;mPEO;dk3-fo~()JZK4>6hHK(*=at*KBVtj%f?#c?|+jjnQA>R<|r{i zzP1zd3@GA9KoLJek~V8hN7;!Znz*H4p$JZFoXGps)6vVVzsCSrDWq3ld2&0e4&*&5 zSWhqC!}6Soof7}tUml^+h*1T!Zx-o6$H`7oPhlO>{Xy&w>nwbs-}{vom}Du-0Jr5k z0|A+_j(;l5G@O>HKzvw?Pn+Ip_G6F#=()`rkv85*&ho>2|m9e%4foGjO3o7CxFO=oGVom!bP|1T4kKwW})05C9|@+E=d^N7BrSa z=~1IW-NU%6=AV+lcF$?zc>l&BArb~WKXKh%dMjSkoNxa=jGEH@z%bc6Vh6<+3%Ake zNniKf!gt2n^(`f;nH;_oC56<2f=^b+lH|&UV}9bqA+PoQ)6n47oca0O!E*vBI-RcE zY;=+xbwZ!ZX^XnN8uecou50}q`jG6Hu{(GddXn6@iov`S8lo|FYM(-~8#0{%R)0-I zU2O9#fep^H^BC?cCy`@PTXs=P&k<$5a9iaTl<#y<>vn9CC}B~2iSU{UE(e*0)sE@_ zuL=sX*^lNg{yepHW-h`&s$Cc}-IJJMqL>T34N`({!#*SpEh4L>WXswFGo<7f@Y8J1 z0~^ji1zoZA-nnErUL*Ykav4#cfmeTUtxwvgZ55MI>4yCr9WQ)S(0Q9oowP4axf>9l zQA2?WQb!7lqK_vY^WwxRSOdGdYBy1P(trZ|s$E2#Y*$xw?r(`}{E);}2UTRg6 zd(Q1Ts#st3(?cFB%KJ{iYB4RsG@yzOCPCXluA|W&{H5~w+&tjTRcoZm7mn2-ScSQb z;+Jll?R_!dYFhX6!n;O;R=^gJxQ+AamY}!UKL=kPYpbI3e@s?>;?5}qBiFC3l3QkS zxr987ab*?C-DMPpHq4Hxnkjl7+dGULXVS)$DzX)7d(GXlIeOYRF`L8#rfSA3p+Rt3 z2c@@qfEJ}zaAW2w-zFkobj+`76mvq0m{bhaUnRof=`1T}SQ5cdb;>3R2D8)}z(SmJqjWfOvB z?)!Iy0@BNo9=3~MQ-N0n&Rqs^Y<;(9>$Ga5(~_>43)QA4UrmYKU%ZLo@7?}Vda^>! z)y|3#wt}E(c&OuU-MSU)et^UX@U;NH9Fl_tz!GFWY&(N#rU^%w#DosgC1XWou(bW%$1VmVr?6WVqukl zJl>$l{d9DNlpYGxEDC>gXS->>*zcBqVfYS?~vwr_USjm~*H zau})h%JaSleNlY`*lb^*U99m|WsOC@40UQ;yULyWPOaoQyh#!e&of<7IfrnB)yY-w zg_5Nvn|}#cBqNpd`a-!y$EQLqQRaIKbbKnT+dHuBsqm$+>Lxc`w_hc%S_`r$o2EfW z7xy)Vey?L6ygv5=wr8`qa9b`~6E9b=XXva8c+ujBI0w+kMs8 zqebU(Rdf3?>~U!rUa!C90gJJh4*lK&eHUYpwS(#LoSuEFKbTyyw*kEFgGt$Hw3h#} z=_vr#)Kr!yY_Oa9D{V|AVw3gygD@j-O%Sgw7sULq!tG5E6QJQTsT zH)Fsr#3o;3w|hu%E8-Kta`3x*UgKH1G0pt;`tt3ELNcroncH zYMCfg+5uGc*n+S8X$RHL3m(5+v=Et$QNP{9GVAsObXt(K)qC|lO<@Kqz+U+t5@lIR z4HQ5+CQARrTKrSu{H``>i#P^#Sn4Z|j-#}oVhGp|{Yp~*Hwwu#lmkH$!opRq7qM@_ zOUs3=6Fp#Zu^mGCIF5eLH2X0&&}AR*Q%S#id4~gQkY&qxyf)@_y;I6D!rKgYrCf;y zUDbDcS>aiF>`XljUASjkVSCRClMVnOoV4w3t#^ab^c4X%$&DD_*SDUuL|vpBcLrC# z-NOH=Mo(#0r|yb-?F!=)oF~KIq3*ZY6|W}{6@621 z#Yg0;T!u5%P88hGXRO*%4%j}lJ(j4ljO#spPlC1We}MU#e3ocbOJ?%9RiYgGc_C24 zYTv{p;IxJoG(p!CYs`s}&O*f(t|8XlR+5(xl=6)viLpnEHDYy6oi)$X?AB@(tWBzD zIzoJ(YHOp-|XO%S!RP`g631}xNWIcm!^f5%XKYG$@}JJP9-pyH19 zN!ir8D<#7uyF}Hh{`FWv++dLw_CkQ%2FiI z{+Rk~AlgEzy_Gcl;2014p70$RhE~=g#csh&W!rOH2~_h72VFU|=v99eey}nPIcfu@ zMTpo7MM|Vr7TvjW~_7L)F1!#vjdp7 zZ@1T(4z1(D z#Eb8QCqFy;xlG4%8RAO~&KAjv7~R=6=gZgkQJ7(&;8jm~7Pf(QzHs#&_+i#sn*}(x z-rx8A0$;~U55@=!TZut$i$noD+I8=6XYO?!Cx^;E$o6@j^ebVQfp45V$CUxS`69m` zmre)z%=M4WR_bf6lA0x~(g`AAQ_H7VALSS&3RA$HDVuTMmNfQaXHW9oC~gHj3h#8k z-}`&RqCkIH0ayb{87IL|;jr&&k|I!GL||Arlg3bB81eo}NcgYh!6L84rR3F;uu)-5 z5dL%RjS6E7@A%f<*f?no6-I&hq0X;di>yEZ3C4JJ1!5gi6Q z?qwP!_b`3HU4R zGZ~Qm7ZLdDo^~9jBz_z(5y~$nc)v5@_{EZpgFUJ02@Dy!_P?@Fa~nClC|+y+cG22PDDhZ!{Km&W8c{jRpV#K#%LPuycSO%K&fy zAChi^f3M8K@i2U1JAq9V@0a&>nl>>0Hv$H~U{-_)a8zk)X-!w=$z=MMSLj(V% z5KdM$u17)uoNSyN5X<_#G7I}33_)zHT>miq4?h-G&||?6gMKjB-}rHW0W55fD}z`# zA2$YK6CA)t>IXnn$nuyWfP;NZF0pw(V$j>vx!9}FQWR39EXk9xw&`A1!L7SLn+ zU||OU|6T5v{vm4-@bNgY0J;89A*2+`ALZCt|Iii-i1Ux>$pQlXF~lq!05Bx8?{7VU z3=%}wztaFL5F>n44nhNR{LwoQ*B{dk(l^Ls`8OE=Ru*>lzlIq6kNR1-Kz~dVRyLN$ ziw}U64e+?p5QZG=kB0=ZGXOre1y**h-^)GdpOuZ3?Xkf@ru!dig(#Z+kDdTo*dA+! zl@svCBE<^gVts6ctPnc~KWZUF{hSZq%6NGF*DzTjjea~!AZy+qs~#(4Dn4!?8w=!d z@`xYg=>y^ZO9uE~LV$l0|4UD~xV`F1^*cd##{^7?4VEes+ z5dA}haQ#sb$jbS9K}b0uL}8B^g1G);NdFQ7;(B0kSyKoAn@aY94voW zHN?)@9;+Y7$;SRztq>aPW5FB%z#mf^Li?}1f&bnTfFKX7$2|tI{<)e#b_;;V>gQwu z{k59?OVyn05M4j&9OUuxSX*Eg$R39CQBNS|@yFT^!3pPl*hT$Ytq>aMu~kE?jqUL; zL1++!ibr)>A;S(J`?dc4ckCe64*>mH5V9~luFM8_yaYqGTM&Hnf66)9>zi2`+oL?d zT_~Bk89(gDP?!~MY#w%%kd8cTZ6&R#O(2`%UmL!Ml;|i9j{5eFzxHnr?6|m4sHw%| H#8LhqyexJl diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/QuickStart.tex b/deal.II/contrib/umfpack/UMFPACK/Doc/QuickStart.tex index eba0ee3b77..12974e1d7f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Doc/QuickStart.tex +++ b/deal.II/contrib/umfpack/UMFPACK/Doc/QuickStart.tex @@ -18,8 +18,8 @@ \author{Timothy A. Davis \\ Dept. of Computer and Information Science and Engineering \\ Univ. of Florida, Gainesville, FL} -\title{UMFPACK Version 4.3 Quick Start Guide} -\date{Jan. 16, 2004} +\title{UMFPACK Version 4.4 Quick Start Guide} +\date{Jan. 28, 2005} \maketitle %------------------------------------------------------------------------------- @@ -35,9 +35,7 @@ Univ. of Florida, Gainesville, FL} \end{abstract} %------------------------------------------------------------------------------- -Technical Report TR-04-003 - -UMFPACK Version 4.3 (Jan. 16, 2004), Copyright\copyright 2004 by Timothy A. +UMFPACK Version 4.4 (Jan. 28, 2005), Copyright\copyright 2005 by Timothy A. Davis. All Rights Reserved. Refer to the UMFPACK User Guide for the License. See \newline http://www.cise.ufl.edu/research/sparse/umfpack @@ -54,14 +52,15 @@ or non-singular, and real or complex (or any combination). Only square matrices $\m{A}$ can be used to solve $\m{Ax}=\m{b}$ or related systems. Rectangular matrices can only be factorized. -UMFPACK Version 4.0 is a built-in routine in MATLAB 6.5, used by the forward and -backslash operator, and the {\tt lu} routine. The following is a short +UMFPACK Version 4.3 is a built-in routine in MATLAB 7.1, used by the forward and +backslash operator, and the {\tt lu} routine. MATLAB 6.5 used Version 4.0. +The following is a short introduction to Unix users of the C interface of UMFPACK. %------------------------------------------------------------------------------- -The C-callable UMFPACK library consists of 31 user-callable routines and one -include file. Twenty-seven of the routines come in four versions, with +The C-callable UMFPACK library consists of 32 user-callable routines and one +include file. Twenty-eight of the routines come in four versions, with different sizes of integers and for real or complex floating-point numbers. This Quick Start Guide assumes you are working with real matrices (not complex) and with {\tt int}'s as integers (not {\tt long}'s). @@ -69,6 +68,13 @@ Refer to the User Guide for information about the complex and long integer versions. The include file {\tt umfpack.h} must be included in any C program that uses UMFPACK. +For more details, see: +{\em A column pre-ordering strategy for the unsymmetric-pattern multifrontal method}, +Davis, T. A., +ACM Trans. Math. Software, vol 30. no 2, 2004, pp. 165-195, and +{\em Algorithm 832: {UMFPACK}, an unsymmetric-pattern multifrontal method}, +same issue, pp. 196-199. + %------------------------------------------------------------------------------- \section{Primary routines, and a simple example} %------------------------------------------------------------------------------- @@ -79,6 +85,7 @@ is given in Section~\ref{Primary}. Additional routines are available for passing a different column ordering to UMFPACK, changing default parameters, manipulating sparse matrices, getting the LU factors, save and loading the LU factors from a file, +computing the determinant, and reporting results. See the User Guide for more information. \begin{itemize} @@ -227,15 +234,17 @@ for more details. \label{Install} %------------------------------------------------------------------------------- -You will need to install both UMFPACK v4.3 and AMD v1.1 (or AMD v1.0) to use UMFPACK. +You will need to install both UMFPACK v4.4 and AMD v1.1 (or AMD v1.0) to use UMFPACK. The {\tt UMFPACK} and {\tt AMD} subdirectories must be placed side-by-side within the same parent directory. AMD is a stand-alone package that is required by UMFPACK. UMFPACK can be compiled without the BLAS 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. You can edit the {\tt Make.include} -files in those directories to customize the compilation. The default +and {\tt UMFPACK/Make} directories +(Note that {\tt UMFPACK/Make} is a symbolic link to {\tt AMD/Make}). +You can edit the {\tt Make.include} +file in those directories to customize the compilation. 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 for Linux, Sun Solaris, SGI IRIX, IBM AIX, and the DEC/Compaq Alpha. @@ -301,8 +310,8 @@ most deal with how the BLAS are called: \item {\tt -DNPOSIX} if you do not have the POSIX-compliant {\tt sysconf} and {\tt times} routines. \item {\tt -DNRECIPROCAL} controls a trade-off between speed and accuracy. - This is normally off by default, except when the {\tt gcc} - compiler is used. + This is off by default (speed preferred over accuracy) except when + compiling for MATLAB. \end{itemize} When you compile your program that uses the C-callable UMFPACK library, @@ -916,7 +925,7 @@ Arguments: UMFPACK_WARNING_singular_matrix - A divide-by-zero occured. Your solution will contain Inf's + A divide-by-zero occurred. Your solution will contain Inf's and/or NaN's. Some parts of the solution may be valid. For example, solving Ax=b with diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.bib b/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.bib index 691ba73e45..a84b90d7b2 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.bib +++ b/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.bib @@ -17,11 +17,12 @@ @article{AmestoyDavisDuff03, author={Amestoy, P. R. and Davis, T. A. and Duff, I. S.}, - title={Algorithm 8xx: {AMD}, an approximate minimum degree ordering algorithm}, + title={Algorithm 837: {AMD}, an approximate minimum degree ordering algorithm}, journal=TOMS, - year={2003 (under submission)}, - note={Also TR-03-010 at www.cise.ufl.edu/tech-reports.} - } + year={2004} + ,volume={30} + ,number={3} + ,pages={381-388}} @techreport{AmestoyDavisDuff03_user, author={Amestoy, P. R. and Davis, T. A. and Duff, I. S.}, @@ -37,21 +38,23 @@ author={Davis, T. A.}, title={A column pre-ordering strategy for the unsymmetric-pattern multifrontal method}, journal=TOMS, - year={2003 (under submission)} - ,note={Also TR-03-006 at www.cise.ufl.edu/tech-reports.} - } + year={2004} + ,volume={30} + ,number={2} + ,pages={165-195}} @article{Davis03_algo, author={Davis, T. A.}, - title={Algorithm 8xx: {UMFPACK V4.3}, an unsymmetric-pattern multifrontal method}, + title={Algorithm 832: {UMFPACK}, an unsymmetric-pattern multifrontal method}, journal=TOMS, - year={2004 (under submission)} - ,note={Also TR-04-004 at www.cise.ufl.edu/tech-reports.} - } + year={2004} + ,volume={30} + ,number={2} + ,pages={196-199}} @techreport{Davis03_umf, author={Davis, T. A.}, - title={{UMFPACK} Version 4.3 User Guide}, + title={{UMFPACK} Version 4.4 User Guide}, institution={Univ. of Florida, CISE Dept.}, year={2004} ,number={TR-04-003} @@ -61,7 +64,7 @@ @techreport{Davis03_umfquick, author={Davis, T. A.}, - title={{UMFPACK} Version 4.3 Quick Start Guide}, + title={{UMFPACK} Version 4.4 Quick Start Guide}, institution={Univ. of Florida, CISE Dept.}, year={2004} ,number={TR-04-005} @@ -201,28 +204,23 @@ ,address={Gainesville, FL} ,note={www.cise.ufl.edu/tech-reports}} -@techreport{DavisGilbertLarimoreNg00, +@article{DavisGilbertLarimoreNg00, author={Davis, T. A. and Gilbert, J. R. and Larimore, S. I. and Ng, E. G.}, title={A column approximate minimum degree ordering algorithm}, - institution={Univ. of Florida, CISE Dept.}, - year={2000} - ,number={TR-00-005} - ,address={Gainesville, FL} - ,month={October} - ,note={(www.cise.ufl.edu/tech-reports. Submitted to ACM Trans. Math. Softw.)} - } + journal=TOMS, + year={2004} + ,volume={30} + ,number={3} + ,pages={353-376}} -@techreport{DavisGilbertLarimoreNg00_algo, +@article{DavisGilbertLarimoreNg00_algo, author={Davis, T. A. and Gilbert, J. R. and Larimore, S. I. and Ng, E. G.}, - title={Algorithm 8xx: {COLAMD}, a column approximate minimum degree ordering algorithm}, - institution={Univ. of Florida, CISE Dept.}, - year={2000} - ,number={TR-00-006} - ,address={Gainesville, FL} - ,month={October} - ,note={(www.cise.ufl.edu/tech-reports. Submitted to ACM Trans. Math. Softw.)} - } - + title={Algorithm 836: {COLAMD}, a column approximate minimum degree ordering algorithm}, + journal=TOMS, + year={2004} + ,volume={30} + ,number={3} + ,pages={377-380}} @INCOLLECTION{GilbertNg93, author = {J. R. Gilbert and E. G. Ng}, diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.pdf b/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.pdf index 3aab8d85667d85d9488222b1907b61fecca52ff3..3509a087aaa02c852019078214a7a9f8c32751f4 100644 GIT binary patch delta 298257 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 J&sWF2FQH3-HKM>zYrkE)-h8%($j990X&&_t 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

CZ%B{MIuT&?-~?mQ!pp&wPz9>s?0Z< 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

?FWZ5_zuzK*pQ#`k&1b?j_wUf~uB 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

laVPpylPPS>EtA(`oc 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
ID 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%0DM7{#$meLo=;g$1Y(NW;(%qm^Z5HZU%I= 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 A)c^nh diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.sed1 b/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.sed1 index c44a6408b1..c49e8c1504 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.sed1 +++ b/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.sed1 @@ -30,3 +30,4 @@ /INCLUDE umfpack_load_symbolic.h/r ../Include/umfpack_load_symbolic.h /INCLUDE umfpack_save_numeric.h/r ../Include/umfpack_save_numeric.h /INCLUDE umfpack_save_symbolic.h/r ../Include/umfpack_save_symbolic.h +/INCLUDE umfpack_get_determinant.h/r ../Include/umfpack_get_determinant.h diff --git a/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.stex b/deal.II/contrib/umfpack/UMFPACK/Doc/UserGuide.stex index 99dc586642..4c45880bca 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.3 User Guide} -\date{Jan. 16, 2004} +\title{UMFPACK Version 4.4 User Guide} +\date{Jan. 28, 2005} \maketitle %------------------------------------------------------------------------------- @@ -36,9 +36,9 @@ Univ. of Florida, Gainesville, FL} \end{abstract} %------------------------------------------------------------------------------- -Technical Report TR-04-003. +Technical Report TR-04-003 (revised) -UMFPACK Version 4.3 (Jan. 16, 2004), Copyright\copyright 2004 by Timothy A. +UMFPACK Version 4.4 (Jan. 28, 2005), Copyright\copyright 2005 by Timothy A. Davis. All Rights Reserved. {\bf UMFPACK License:} @@ -83,7 +83,7 @@ Davis. All Rights Reserved. %------------------------------------------------------------------------------- UMFPACK\footnote{Pronounced with two syllables: umph-pack} -Version 4.3 is a set of routines for solving systems of linear +Version 4.4 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 @@ -249,7 +249,7 @@ Row pivoting for sparsity and numerical accuracy is performed if the diagonal entry is too small. More details of the method, including experimental results, are -described in \cite{Davis03,Davis03}, available at +described in \cite{Davis03,Davis03_algo}, available at http://www.cise.ufl.edu/tech-reports. %------------------------------------------------------------------------------- @@ -257,12 +257,13 @@ http://www.cise.ufl.edu/tech-reports. %------------------------------------------------------------------------------- In addition to appearing as a Collected Algorithm of the ACM, -UMFPACK Version 4.3 is available at http://www.cise.ufl.edu/research/sparse. -An earlier version (Version 4.0) is included as a built-in routine in MATLAB -6.5. Version 4.0 does not have the symmetric or 2-by-2 strategies and it takes +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) +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.3 (and v4.2 and v4.1) tend to be much faster than Version 4.0, +Version 4.4 (and v4.3 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 @@ -278,7 +279,32 @@ MA38 (functionally equivalent to Version 2.2.1) in the Harwell Subroutine Library. %------------------------------------------------------------------------------- -\section{Primary changes since Version 4.1} +\section{Primary changes from prior versions} +%------------------------------------------------------------------------------- + +A detailed list of changes is in the {\tt ChangeLog} file. + +%------------------------------------------------------------------------------- +\subsection{Version 4.4} +%------------------------------------------------------------------------------- + +Bug fix in strategy selection in {\tt umfpack\_*\_qsymbolic}. +Added packed complex case for all complex input/output arguments. +Added {\tt umfpack\_get\_determinant}. +Added minimal support for Microsoft Visual Studio +(the {\tt umf\_multicompile.c} file). + +%------------------------------------------------------------------------------- +\subsection{Version 4.3.1} +%------------------------------------------------------------------------------- + +Minor bug fix in the forward/backsolve. This bug had the effect of turning +off iterative refinement when solving $\m{A}\tr\m{x}=\m{b}$ after factorizing +$\m{A}$. UMFPACK mexFunction now factorizes $\m{A}\tr$ in its forward-slash +operation. + +%------------------------------------------------------------------------------- +\subsection{Version 4.3} %------------------------------------------------------------------------------- No changes are visible to the C or MATLAB user, except the presence of @@ -287,11 +313,11 @@ and three new statistics in the {\tt Info} array. The primary change is the addition of an (optional) drop tolerance. %------------------------------------------------------------------------------- -\section{Primary changes in Version 4.1 (since Version 4.0)} +\subsection{Version 4.1} %------------------------------------------------------------------------------- -A detailed list of changes is in the {\tt ChangeLog} file. The following -is a summary of the main changes that are visible to the C or MATLAB user: +The following is a summary of the main changes that are visible to the C +or MATLAB user: \begin{enumerate} @@ -355,8 +381,8 @@ is a summary of the main changes that are visible to the C or MATLAB user: \section{Using UMFPACK in MATLAB} %------------------------------------------------------------------------------- -The easiest way to use UMFPACK is within MATLAB. Version 4.0 is a built-in -routine in MATLAB 6.5, and is used in {\tt x = A}$\backslash${\tt b} when +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 {\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}. @@ -379,10 +405,7 @@ of the UMFPACK mexFunction within MATLAB. An optional input argument can be used to modify the control parameters for UMFPACK, and an optional output argument provides statistics on the -factorization. UMFPACK will print these statistics if you turn -on the sparse matrix monitor flag with {\tt spparms ('spumoni', 1)}. -The UMFPACK printing level parameter described in Section~\ref{Reporting} -is set to {\tt spumoni} plus 1. Type {\tt help umfpack} for more information. +factorization. Refer to the AMD User Guide for more details about the AMD mexFunction. @@ -416,14 +439,17 @@ x = A \ b ; \hline & & \\ \begin{minipage}[t]{1.5in} -Solve $\m{Ax}=\m{b}$ using a different column pre-ordering. +Solve $\m{Ax}=\m{b}$ using a different row and column pre-ordering +(symmetric ordering). \end{minipage} & \begin{minipage}[t]{2.2in} \begin{verbatim} S = spones (A) ; Q = symamd (S+S') ; -x = umfpack (A,Q,'\',b) ; +Control = umfpack ; +Control (6) = 3 ; +x = umfpack (A,Q,'\',b,Control) ; \end{verbatim} \end{minipage} & @@ -432,7 +458,7 @@ x = umfpack (A,Q,'\',b) ; spparms ('autommd',0) ; S = spones (A) ; Q = symamd (S+S') ; -x = A (:,Q) \ b ; +x = A (Q,Q) \ b (Q) ; x (Q) = x ; spparms ('autommd',1) ; \end{verbatim} @@ -449,12 +475,14 @@ Solve $\m{A}\tr\m{x}\tr = \m{b}\tr$. \begin{verbatim} x = umfpack (b,'/',A) ; \end{verbatim} +Note: $\m{A}$ is factorized. \end{minipage} & \begin{minipage}[t]{2.2in} \begin{verbatim} x = b / A ; \end{verbatim} +Note: $\m{A}\tr$ is factorized. \end{minipage} \\ & & \\ @@ -492,7 +520,7 @@ x = Q * (U \ (L \ c)) ; } \end{table} -Note: in MATLAB 6.5, use {\tt spparms ('autoamd',0)} in addition to +Note: in MATLAB 6.5 or later, use {\tt spparms ('autoamd',0)} in addition to {\tt spparms ('autommd',0)}, in Table~\ref{matlab}, to turn off MATLAB's default reordering. @@ -502,7 +530,7 @@ This is more restrictive than what you can do with MATLAB's backslash or forward slash. See {\tt umfpack\_solve} for an M-file that removes this restriction. This restriction does not apply to the built-in backslash operator -in MATLAB 6.5, which uses UMFPACK v4.0 to factorize the matrix. +in MATLAB 6.5 or later, which uses UMFPACK to factorize the matrix. You can do this yourself in MATLAB: {\footnotesize @@ -602,13 +630,24 @@ 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. +To compute the determinant with UMFPACK: + +\begin{verbatim} + d = umfpack (A, 'det') ; + [d e] = umfpack (A, 'det') ; +\end{verbatim} + +The first case is identical to MATLAB's {\tt det}. +The second case returns the determinant in the form +$d \times 10^e$, which avoids overflow if $e$ is large. + %------------------------------------------------------------------------------- \section{Using UMFPACK in a C program} \label{C} %------------------------------------------------------------------------------- -The C-callable UMFPACK library consists of 31 user-callable routines and one -include file. Twenty-seven of the routines come in four versions, with +The C-callable UMFPACK library consists of 32 user-callable routines and one +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. @@ -616,7 +655,7 @@ different sizes of integers and for real or complex floating-point numbers: \item {\tt umfpack\_zi\_*}: complex double precision, {\tt int} integers. \item {\tt umfpack\_zl\_*}: complex double precision, {\tt long} integers. \end{enumerate} -where {\tt *} denotes the specific name of one of the 27 routines. +where {\tt *} denotes the specific name of one of the routines. Routine names beginning with {\tt umf\_} are internal to the package, and should not be called by the user. The include file {\tt umfpack.h} must be included in any C program that uses UMFPACK. @@ -630,7 +669,7 @@ for more details. Use only one version for any one problem; do not attempt to use one version to analyze the matrix and another version to factorize the matrix, for example. -The notation {\tt umfpack\_di\_*} refers to all 27 user-callable routines +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 @@ -669,7 +708,10 @@ precision arguments, and return double precision arguments. In the hold the real part of the matrices; and second double precision arrays hold the imaginary part of the input and output matrices. Internally, complex numbers are stored in arrays with their real and imaginary parts interleaved, -as required by the BLAS. +as required by the BLAS (``packed'' complex form). + +New to Version 4.4 is the option of providing input/output arguments +in packed complex form. %------------------------------------------------------------------------------- \subsection{Primary routines, and a simple example} @@ -770,13 +812,19 @@ The complex versions add another array for the imaginary part: \end{verbatim} } +Alternatively, if {\tt Az} is {\tt NULL}, +the real part of the $k$th entry is located in +{\tt Ax[2*k]} and the imaginary part is located in +{\tt Ax[2*k+1]}, and the {\tt Ax} array is of size {\tt 2*nz}. + All nonzeros are entries, but an entry may be numerically zero. The row indices of entries in column {\tt j} are stored in {\tt Ai[Ap[j]} \ldots {\tt Ap[j+1]-1]}. The corresponding numerical values are stored in {\tt Ax[Ap[j]} \ldots {\tt Ap[j+1]-1]}. The imaginary part, for the complex versions, is stored in - {\tt Az[Ap[j]} \ldots {\tt Ap[j+1]-1]}. + {\tt Az[Ap[j]} \ldots {\tt Ap[j+1]-1]} + (see above for the packed complex case). No duplicate row indices may be present, and the row indices in any given column must be sorted in ascending order. The first entry {\tt Ap[0]} must be @@ -950,7 +998,12 @@ $j =$ {\tt Tj[k]}, and $a_{ij} =$ {\tt Tx[k]}. For the complex versions, The triplets can be in any order in the {\tt Ti}, {\tt Tj}, and {\tt Tx} arrays (and {\tt Tz} for the complex versions), and duplicate entries may -exist. Any duplicate entries are summed when the triplet form is converted to +exist. +If {\tt Tz} is NULL, then the array {\tt Tx} becomes of size {\tt 2*nz}, +and the real and imaginary parts of the +{\tt k}-th triplet are located in {\tt Tx[2*k]} and {\tt Tx[2*k+1]}, +respectively. +Any duplicate entries are summed when the triplet form is converted to compressed column form. This is a convenient way to create a matrix arising in finite-element methods, for example. @@ -992,7 +1045,7 @@ Four routines are provided for manipulating sparse matrices: Applies the row scale factors to a user-provided vector. This is not required to solve the sparse linear system $\m{Ax}=\m{b}$ or $\m{A}\tr\m{x}=\m{b}$, since {\tt umfpack\_*\_solve} applies the scale - factors for those systems. This routine is new to Version 4.1. + factors for those systems. \end{itemize} @@ -1004,6 +1057,10 @@ 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 +can then be used in conjunction with UMFPACK. +Watch my web page for details. %------------------------------------------------------------------------------- \subsection{Getting the contents of opaque objects} @@ -1016,6 +1073,7 @@ except to pass them back to subsequent calls to UMFPACK. Three routines are provided for copying their contents into user-provided arrays using simpler data structures. Four routines are provided for saving and loading the {\tt Numeric} and {\tt Symbolic} objects to/from binary files. +An additional routine is provided that computes the determinant. They are fully described in Section~\ref{Get}: \begin{itemize} @@ -1045,6 +1103,12 @@ They are fully described in Section~\ref{Get}: preordering, supernodal column elimination tree, and information about each frontal matrix) into arrays provided by the user. +\item {\tt umfpack\_*\_get\_determinant}: + + Computes the determinant from the diagonal of $\m{U}$ and the permutations + $\m{P}$ and $\m{Q}$. This is mostly of theoretical interest. + It is not a good test to determine if your matrix is singular or not. + \item {\tt umfpack\_*\_save\_numeric}: Saves a copy of the {\tt Numeric} object to a file, in binary format. @@ -1068,7 +1132,8 @@ They are fully described in Section~\ref{Get}: UMFPACK itself does not make use of these routines; they are provided solely for returning the contents of the opaque {\tt Symbolic} and {\tt Numeric} objects to the user, and saving/loading -them to/from a binary file. +them to/from a binary file. None of them do any computation, except for +{\tt umfpack\_*\_get\_determinant}. %------------------------------------------------------------------------------- \subsection{Reporting routines} @@ -1128,7 +1193,10 @@ compiled into the C-callable UMFPACK library than when used in the MATLAB mexFunction. MATLAB stores its sparse matrices using the same compressed column data structure discussed above, where row and column indices of an $m$-by-$n$ -matrix are in the range 0 to $m-1$ or $n-1$, respectively. +matrix are in the range 0 to $m-1$ or $n-1$, respectively\footnote{Complex +matrices in MATLAB use the split array form, with one {\tt double} array +for the real part and another array for the imaginary part. UMFPACK +supports that format, as well as the packed complex format (new to Version 4.4).} It prints them as if they are in the range 1 to $m$ or $n$. The UMFPACK mexFunction behaves the same way. @@ -1197,11 +1265,14 @@ versions (there is no {\tt umfpack\_di\_timer} routine, for example). UMFPACK uses an optional {\tt double} array (currently of size 20) to modify its control parameters. If you pass {\tt (double *) NULL} instead -of a {\tt Control} array, then defaults are used. +of a {\tt Control} array, then defaults are used. These defaults provide +nearly optimal performance (both speed, memory usage, and numerical accuracy) +for a wide range of matrices from real applications. + This array will almost certainly grow in size in future releases, so be sure to dimension your {\tt Control} array to be of size {\tt UMFPACK\_CONTROL}. That constant is currently defined to be 20, -but will increase in future versions. +but may increase in future versions, since all 20 entries are in use. The contents of this array may be modified by the user (see {\tt umfpack\_*\_defaults}). Each @@ -1279,15 +1350,15 @@ in Sections~\ref{Primary}~through~\ref{Report}, below. Many of the routines return a {\tt status} value. This is also returned as the first entry in the {\tt Info} array, for those routines with that argument. The following list summarizes -all of the error codes in UMFPACK v4.3. Each error code is given a +all of the error codes in UMFPACK. Each error code is given a specific name in the {\tt umfpack.h} include file, so you can use those constants instead of hard-coded values in your program. Future versions may report additional error codes. A value of zero means everything was successful, and the matrix is non-singular. A value greater than zero means the routine was successful, -but a warning occurred. Currently, the only warning code is when the -matrix is singular. A negative value means the routine was not successful. +but a warning occurred. +A negative value means the routine was not successful. In this case, no {\tt Symbolic} or {\tt Numeric} object was created. \begin{itemize} @@ -1296,6 +1367,14 @@ In this case, no {\tt Symbolic} or {\tt Numeric} object was created. \item {\tt UMFPACK\_WARNING\_singular\_matrix}, (1): Matrix is singular. There are exact zeros on the diagonal of $\m{U}$. +\item {\tt UMFPACK\_WARNING\_determinant\_underflow}, (2): + The determinant is nonzero, but smaller in magnitude than + the smallest positive floating-point number. + +\item {\tt UMFPACK\_WARNING\_determinant\_overflow}, (3): + The determinant is larger in magnitude than + the largest positive floating-point number (IEEE Inf). + \item {\tt UMFPACK\_ERROR\_out\_of\_memory}, (-1): Not enough memory. The ANSI C {\tt malloc} or {\tt realloc} routine failed. @@ -1308,7 +1387,9 @@ In this case, no {\tt Symbolic} or {\tt Numeric} object was created. If you try to factorize a matrix using one version of UMFPACK and then use the factors in another version, this error code will trigger as well. You cannot factor your matrix using - version 4.0 and then solve with version 4.1. + version 4.0 and then solve with version 4.1, for example.\footnote{ + Exception: v4.3, v4.3.1, and v4.4 use identical data structures + for the {\tt Numeric} and {\tt Symbolic} objects}. You cannot use different precisions of the same version (real and complex, for example). It is possible for the {\tt Numeric} object to be corrupted by your @@ -1327,9 +1408,11 @@ In this case, no {\tt Symbolic} or {\tt Numeric} object was created. Some arguments of some are optional (you can pass a {\tt NULL} pointer instead of an array). This error code occurs if you pass a {\tt NULL} pointer when that argument is required to be present. - \item {\tt UMFPACK\_ERROR\_n\_nonpositive} (-6): + +\item {\tt UMFPACK\_ERROR\_n\_nonpositive} (-6): The number of rows or columns of the matrix must be greater than zero. - \item {\tt UMFPACK\_ERROR\_invalid\_matrix} (-8): + +\item {\tt UMFPACK\_ERROR\_invalid\_matrix} (-8): The matrix is invalid. For the column-oriented input, this error code will occur if the contents of {\tt Ap} and/or {\tt Ai} are invalid. @@ -1444,7 +1527,10 @@ The matrix $\m{A}$ is {\tt m}-by-{\tt n} with {\tt nz} entries. The {\tt sys} argument of {\tt umfpack\_*\_solve} is an integer in the range 0 to 14 which defines which linear system is -to be solved. Valid values are listed in Table~\ref{sys}. +to be solved. +\footnote{Integer values for {\tt sys} are used instead of strings (as in LINPACK +and LAPACK) to avoid C-to-Fortran portability issues.} +Valid values are listed in Table~\ref{sys}. The notation $\m{A}\he$ refers to the matrix transpose, which is the complex conjugate transpose for complex matrices ({\tt A'} in MATLAB). The array transpose is $\m{A}\tr$, which is {\tt A.'} in MATLAB. @@ -1458,23 +1544,29 @@ The array transpose is $\m{A}\tr$, which is {\tt A.'} in MATLAB. \hline Value & & system \\ \hline +& & \\ {\tt UMFPACK\_A} & (0) & $\m{Ax}=\m{b}$ \\ {\tt UMFPACK\_At} & (1) & $\m{A}\he\m{x}=\m{b}$ \\ {\tt UMFPACK\_Aat} & (2) & $\m{A}\tr\m{x}=\m{b}$ \\ +& & \\ \hline +& & \\ {\tt UMFPACK\_Pt\_L} & (3) & $\m{P}\tr\m{Lx}=\m{b}$ \\ {\tt UMFPACK\_L} & (4) & $\m{Lx}=\m{b}$ \\ {\tt UMFPACK\_Lt\_P} & (5) & $\m{L}\he\m{Px}=\m{b}$ \\ {\tt UMFPACK\_Lat\_P} & (6) & $\m{L}\tr\m{Px}=\m{b}$ \\ {\tt UMFPACK\_Lt} & (7) & $\m{L}\he\m{x}=\m{b}$ \\ {\tt UMFPACK\_Lat} & (8) & $\m{L}\tr\m{x}=\m{b}$ \\ +& & \\ \hline +& & \\ {\tt UMFPACK\_U\_Qt} & (9) & $\m{UQ}\tr\m{x}=\m{b}$ \\ {\tt UMFPACK\_U} & (10) & $\m{Ux}=\m{b}$ \\ {\tt UMFPACK\_Q\_Ut} & (11) & $\m{QU}\he\m{x}=\m{b}$ \\ {\tt UMFPACK\_Q\_Uat} & (12) & $\m{QU}\tr\m{x}=\m{b}$ \\ {\tt UMFPACK\_Ut} & (13) & $\m{U}\he\m{x}=\m{b}$ \\ {\tt UMFPACK\_Uat} & (14) & $\m{U}\tr\m{x}=\m{b}$ \\ +& & \\ \hline \end{tabular} } @@ -1540,13 +1632,14 @@ The {\tt filename} string should be large enough to hold the name of a file. {\footnotesize \begin{verbatim} int lnz, unz, Lp [m+1], Lj [lnz], Up [n+1], Ui [unz], do_recip ; -double Lx [lnz], Ux [unz], D [min (m,n)], Rs [m] ; +double Lx [lnz], Ux [unz], D [min (m,n)], Rs [m], Mx [1], Ex [1] ; int nfr, nchains, P1 [m], Q1 [n], Front_npivcol [n+1], Front_parent [n+1], Front_1strow [n+1], Front_leftmostdesc [n+1], Chain_start [n+1], Chain_maxrows [n+1], Chain_maxcols [n+1] ; char filename [100] ; status = umfpack_di_get_lunz (&lnz, &unz, &m, &n, &nz_udiag, Numeric) ; -status = umfpack_di_get_numeric (Lp, Lj, Lx, Up, Ui, Ux, P, Q, D, &do_recip, Rs, Numeric) ; +status = umfpack_di_get_numeric (Lp, Lj, Lx, Up, Ui, Ux, P, Q, D, + &do_recip, Rs, Numeric) ; status = umfpack_di_get_symbolic (&m, &n, &n1, &nz, &nfr, &nchains, P1, Q1, Front_npivcol, Front_parent, Front_1strow, Front_leftmostdesc, Chain_start, Chain_maxrows, Chain_maxcols, Symbolic) ; @@ -1554,6 +1647,7 @@ status = umfpack_di_load_numeric (&Numeric, filename) ; status = umfpack_di_save_numeric (Numeric, filename) ; status = umfpack_di_load_symbolic (&Symbolic, filename) ; status = umfpack_di_save_symbolic (Symbolic, filename) ; +status = umfapck_di_get_determinant (Mx, Ex, Numeric, Info) ; \end{verbatim} } @@ -1599,6 +1693,9 @@ umfpack_zi_free_numeric (&Numeric) ; \end{verbatim} } +The arrays {\tt Ax}, {\tt Bx}, and {\tt Xx} double in size if +any imaginary argument ({\tt Az}, {\tt Xz}, or {\tt Bz}) is {\tt NULL}. + %------------------------------------------------------------------------------- \subsection{Alternative routines: complex/{\tt int}} %------------------------------------------------------------------------------- @@ -1629,13 +1726,16 @@ status = umfpack_zi_scale (Yx, Yz, Zx, Zz, Numeric) ; \end{verbatim} } +The arrays {\tt Tx}, {\tt Rx}, {\tt Yx}, and {\tt Zx} double in size if +any imaginary argument ({\tt Tz}, {\tt Rz}, {\tt Yz}, or {\tt Zz}) is {\tt NULL}. + %------------------------------------------------------------------------------- \subsection{Getting the contents of opaque objects: complex/{\tt int}} %------------------------------------------------------------------------------- {\footnotesize \begin{verbatim} -double Lz [lnz], Uz [unz], Dx [min (m,n)], Dz [min (m,n)] ; +double Lz [lnz], Uz [unz], Dx [min (m,n)], Dz [min (m,n)], Mz [1] ; status = umfpack_zi_get_lunz (&lnz, &unz, &m, &n, &nz_udiag, Numeric) ; status = umfpack_zi_get_numeric (Lp, Lj, Lx, Lz, Up, Ui, Ux, Uz, P, Q, Dx, Dz, @@ -1647,9 +1747,13 @@ status = umfpack_zi_load_numeric (&Numeric, filename) ; status = umfpack_zi_save_numeric (Numeric, filename) ; status = umfpack_zi_load_symbolic (&Symbolic, filename) ; status = umfpack_zi_save_symbolic (Symbolic, filename) ; +status = umfapck_zi_get_determinant (Mx, Mz, Ex, Numeric, Info) ; \end{verbatim} } +The arrays {\tt Lx}, {\tt Ux}, {\tt Dx}, and {\tt Mx} double in size if +any imaginary argument ({\tt Lz}, {\tt Uz}, {\tt Dz}, or {\tt Mz}) is {\tt NULL}. + %------------------------------------------------------------------------------- \subsection{Reporting routines: complex/{\tt int}} %------------------------------------------------------------------------------- @@ -1671,12 +1775,14 @@ status = umfpack_zi_report_vector (n, Xx, Xz, Control) ; \end{verbatim} } +The arrays {\tt Ax}, {\tt Rx}, {\tt Tx}, and {\tt Xx} double in size if +any imaginary argument ({\tt Az}, {\tt Rz}, {\tt Tz}, or {\tt Xz}) is {\tt NULL}. %------------------------------------------------------------------------------- -\section{Synopsis of utility routines} +\subsection{Utility routines} %------------------------------------------------------------------------------- These routines are the same in all four versions of UMFPACK. @@ -1693,7 +1799,7 @@ umfpack_toc (s) ; } %------------------------------------------------------------------------------- -\section{Synopsis of AMD ordering routines} +\subsection{AMD ordering routines} %------------------------------------------------------------------------------- UMFPACK makes use of the AMD ordering package for its symmetric ordering @@ -1720,7 +1826,7 @@ amd_info (amd_info) ; \section{Using UMFPACK in a Fortran program} %------------------------------------------------------------------------------- -UMFPACK v4.3 includes a basic Fortran 77 interface to some of the C-callable +UMFPACK includes a basic Fortran 77 interface to some of the C-callable UMFPACK routines. Since interfacing C and Fortran programs is not portable, this interface might not work with all C and Fortran compilers. Refer to Section~\ref{Install} for @@ -1871,17 +1977,23 @@ the matrix, solution, and right-hand-side, respectively. The \end{verbatim} } +The Fortran interface does not support the packed complex case. + %------------------------------------------------------------------------------- -\section{Installing the C library} +\section{Installation} \label{Install} %------------------------------------------------------------------------------- +%------------------------------------------------------------------------------- +\subsection{Installing the C library} +%------------------------------------------------------------------------------- + The following discussion assumes you have the {\tt make} program, either in 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.3 and AMD v1.1 (or AMD v1.0) to use UMFPACK. +You will need to install both UMFPACK v4.4 and AMD v1.1 (or AMD v1.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 @@ -2054,8 +2166,11 @@ Harwell/Boeing matrices. Note that this uses a stand-alone Fortran program to read in the Fortran-formatted Harwell/Boeing matrices and write them to a file which can be read by a C program. +The {\tt umf\_multicompile.c} file has been added to assist in the +compilation of UMFPACK in Microsoft Visual Studio, for Windows. + %------------------------------------------------------------------------------- -\section{Installing the MATLAB interface} +\subsection{Installing the MATLAB interface} %------------------------------------------------------------------------------- If all you want to do is use the UMFPACK mexFunction in MATLAB, you can skip @@ -2064,8 +2179,7 @@ the use of the {\tt make} command described above. Simply type You can also type {\tt amd\_make} in the {\tt AMD/MATLAB} directory 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. This method of creating the UMFPACK mexFunction -has been tested with MATLAB 5.3, 6.1, and 6.5. +including Windows. You will be prompted to select several configuration options, including whether or not to use the BLAS. @@ -2089,7 +2203,7 @@ this file to the location listed above. If you have MATLAB 6.5 or later, you can probably skip this step. %------------------------------------------------------------------------------- -\section{Installing the Fortran interface} +\subsection{Installing the Fortran interface} %------------------------------------------------------------------------------- Once the 32-bit C-callable UMFPACK library is compiled, you can also compile @@ -2114,7 +2228,7 @@ You may need to modify the interface routines in the file has not been tested. %------------------------------------------------------------------------------- -\section{Known Issues} +\subsection{Known Issues} %------------------------------------------------------------------------------- The Microsoft C or C++ compilers on a Pentium badly break the IEEE 754 standard, @@ -2150,7 +2264,7 @@ all of these warnings. \label{Future} %------------------------------------------------------------------------------- -Here are a few features that are not in UMFPACK Version 4.3, in no particular +Here are a few features that are not in UMFPACK Version 4.4, 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: @@ -2198,7 +2312,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. + 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 @@ -2220,11 +2335,6 @@ let me know and I could consider including them: The method used in UMFPACK exploits super-columns, however, so this bound is rarely reached. -\item The complex versions could use ANSI C99 {\tt double \_Complex} arguments, - and support the use of interleaved real/imaginary parts as input and output - arguments. The \newline - {\tt umfpack\_*\_report\_vector} routine is one example. - \item Other basic sparse matrix operations, such as sparse matrix multiplication, could be included. @@ -2433,6 +2543,15 @@ INCLUDE umfpack_load_symbolic.h via sed \end{verbatim} } +\newpage +\subsection{umfpack\_*\_get\_determinant} + +{\footnotesize +\begin{verbatim} +INCLUDE umfpack_get_determinant.h via sed +\end{verbatim} +} + %------------------------------------------------------------------------------- \newpage \section{Reporting routines} diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack.h index c1918f6e51..d41f1b34b4 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -24,7 +23,10 @@ /* size of Info and Control arrays */ /* -------------------------------------------------------------------------- */ -#define UMFPACK_INFO 90 /* these might be larger in future versions */ +/* These might be larger in future versions, since there are only 3 unused + * entries in Info, and no unused entries in Control. */ + +#define UMFPACK_INFO 90 #define UMFPACK_CONTROL 20 /* -------------------------------------------------------------------------- */ @@ -57,6 +59,7 @@ #include "umfpack_load_numeric.h" #include "umfpack_save_symbolic.h" #include "umfpack_load_symbolic.h" +#include "umfpack_get_determinant.h" /* Reporting routines (the above 14 routines print nothing): */ #include "umfpack_report_status.h" @@ -77,10 +80,10 @@ /* Version, copyright, and license */ /* -------------------------------------------------------------------------- */ -#define UMFPACK_VERSION "UMFPACK V4.3 (Jan. 16, 2004)" +#define UMFPACK_VERSION "UMFPACK V4.4 (Jan. 28, 2005)" #define UMFPACK_COPYRIGHT \ -"UMFPACK: Copyright (c) 2004 by Timothy A. Davis. All Rights Reserved.\n" +"UMFPACK: Copyright (c) 2005 by Timothy A. Davis. All Rights Reserved.\n" #define UMFPACK_LICENSE_PART1 \ "\nUMFPACK License:\n" \ @@ -111,7 +114,8 @@ /* contents of Info */ /* -------------------------------------------------------------------------- */ -/* Note that umfpack_report.m must coincide with these definitions. */ +/* Note that umfpack_report.m must coincide with these definitions. S is + * the submatrix of A after removing row/col singletons and empty rows/cols. */ /* returned by all routines that use Info: */ #define UMFPACK_STATUS 0 /* UMFPACK_OK, or other result */ @@ -158,10 +162,10 @@ #define UMFPACK_2BY2_NZDIAG 55 /* nz on diagonal of PS+(PS)' */ /* statistcs for singleton pruning */ -#define UMFPACK_COL_SINGLETONS 56 -#define UMFPACK_ROW_SINGLETONS 57 -#define UMFPACK_N2 58 -#define UMFPACK_S_SYMMETRIC 59 +#define UMFPACK_COL_SINGLETONS 56 /* # of column singletons */ +#define UMFPACK_ROW_SINGLETONS 57 /* # of row singletons */ +#define UMFPACK_N2 58 /* size of S */ +#define UMFPACK_S_SYMMETRIC 59 /* 1 if S square and symmetricly perm.*/ /* estimates computed in UMFPACK_*symbolic: */ #define UMFPACK_NUMERIC_SIZE_ESTIMATE 20 /* final size of Numeric->Memory */ @@ -267,15 +271,6 @@ #define UMFPACK_COMPILED_WITH_GETRUSAGE 10 /* uses getrusage timer, or not */ #define UMFPACK_COMPILED_IN_DEBUG_MODE 11 /* debugging enabled (very slow!) */ -#if 0 -/* No longer unused. These parameters are now used for the new symmetric and - * 2-by-2 ordering strategies. See 5, 12, 13, and 14, above. */ -#define UMFPACK_RELAXED_AMALGAMATION 5 /* unused (was in v4.0) */ -#define UMFPACK_PIVOT_OPTION 12 /* unused (was in v3.2) */ -#define UMFPACK_RELAXED2_AMALGAMATION 13 /* unused (was in v4.0) */ -#define UMFPACK_RELAXED3_AMALGAMATION 14 /* unused (was in v4.0) */ -#endif - /* -------------------------------------------------------------------------- */ /* Control [UMFPACK_STRATEGY] is one of the following: */ @@ -297,16 +292,6 @@ /* default values of Control: */ /* -------------------------------------------------------------------------- */ -/* Note that the default block sized changed for Version 3.1 and following. - * In Version 4.1, the relaxed amalgamation parameters were removed. These are - * now fixed internally (see umf_local_search.c), and cannot be changed. - * COLAMD aggressive absorption did not exist in v4.0. In v4.1, it is in - * use by default (but can be turned off). Aggressive absorption is used by - * default in AMD, also. - * - * Drop tolerance was added in V4.2. - */ - #define UMFPACK_DEFAULT_PRL 1 #define UMFPACK_DEFAULT_DENSE_ROW 0.2 #define UMFPACK_DEFAULT_DENSE_COL 0.2 @@ -324,13 +309,6 @@ #define UMFPACK_DEFAULT_AGGRESSIVE 1 #define UMFPACK_DEFAULT_DROPTOL 0 -#if 0 -/* no longer unused: for unsymmetric strategy (were used in v4.0) */ -#define UMFPACK_DEFAULT_RELAXED_AMALGAMATION 0.25 /* unused */ -#define UMFPACK_DEFAULT_RELAXED2_AMALGAMATION 0.1 /* unused */ -#define UMFPACK_DEFAULT_RELAXED3_AMALGAMATION 0.125 /* unused */ -#endif - /* default values of Control may change in future versions of UMFPACK. */ /* -------------------------------------------------------------------------- */ @@ -343,6 +321,10 @@ /* A Symbolic or Numeric object was still created. */ #define UMFPACK_WARNING_singular_matrix (1) +/* The following warnings were added in umfpack_*_get_determinant */ +#define UMFPACK_WARNING_determinant_underflow (2) +#define UMFPACK_WARNING_determinant_overflow (3) + /* status < 0 means an error, and the method was not successful. */ /* No Symbolic of Numeric object was created. */ #define UMFPACK_ERROR_out_of_memory (-1) @@ -350,26 +332,13 @@ #define UMFPACK_ERROR_invalid_Symbolic_object (-4) #define UMFPACK_ERROR_argument_missing (-5) #define UMFPACK_ERROR_n_nonpositive (-6) -#define UMFPACK_ERROR_invalid_matrix (-8) /* replaces errors -[7:10,12,14] */ +#define UMFPACK_ERROR_invalid_matrix (-8) #define UMFPACK_ERROR_different_pattern (-11) #define UMFPACK_ERROR_invalid_system (-13) #define UMFPACK_ERROR_invalid_permutation (-15) -#define UMFPACK_ERROR_internal_error (-911) +#define UMFPACK_ERROR_internal_error (-911) /* yes, call me if you get this! */ #define UMFPACK_ERROR_file_IO (-17) -/* The following error codes are no longer used. They are left in for - * historical reasons. They appeared in Version 4.0. Most of them are combined - * into the single UMFPACK_ERROR_invalid_matrix error code (-8). The last one, - * UMFPACK_ERROR_problem_too_large, has been removed. This error can no longer - * occur. */ -#define UMFPACK_ERROR_nz_negative (-7) /* unused */ -#define UMFPACK_ERROR_jumbled_matrix (-8) /* unused */ -#define UMFPACK_ERROR_Ap0_nonzero (-9) /* unused */ -#define UMFPACK_ERROR_row_index_out_of_bounds (-10) /* unused */ -#define UMFPACK_ERROR_col_length_negative (-12) /* unused */ -#define UMFPACK_ERROR_invalid_triplet (-14) /* unused */ -#define UMFPACK_ERROR_problem_too_large (-16) /* unused */ - /* -------------------------------------------------------------------------- */ /* solve codes */ /* -------------------------------------------------------------------------- */ 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 54cb72237f..fdfde6e6d1 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,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_defaults.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_defaults.h index ee6106914a..8f3ff5ee4c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_defaults.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_defaults.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -58,11 +57,6 @@ Purpose: Sets the default control parameter settings. - NOTE: new control parameters have been added to the Control array for - Version 4.1. These entries were unused in Version 4.0. The default block - size for the BLAS has increased from 24 to 32. Some rarely used control - parameters have been removed (those that controlled relaxed amalgamation). - Arguments: double Control [UMFPACK_CONTROL] ; Output argument. 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 e0b4ea7d41..e1d81163ed 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_numeric.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_free_symbolic.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_symbolic.h index 103988a7f6..c9806e528b 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_free_symbolic.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_get_determinant.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_determinant.h new file mode 100644 index 0000000000..e568674dfd --- /dev/null +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_determinant.h @@ -0,0 +1,192 @@ +/* ========================================================================== */ +/* === UMFPACK_get_determinant ============================================== */ +/* ========================================================================== */ + +/* -------------------------------------------------------------------------- */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ +/* web: http://www.cise.ufl.edu/research/sparse/umfpack */ +/* -------------------------------------------------------------------------- */ + +int umfpack_di_get_determinant +( + double *Mx, + double *Ex, + void *NumericHandle, + double User_Info [UMFPACK_INFO] +) ; + +long umfpack_dl_get_determinant +( + double *Mx, + double *Ex, + void *NumericHandle, + double User_Info [UMFPACK_INFO] +) ; + +int umfpack_zi_get_determinant +( + double *Mx, + double *Mz, + double *Ex, + void *NumericHandle, + double User_Info [UMFPACK_INFO] +) ; + +long umfpack_zl_get_determinant +( + double *Mx, + double *Mz, + double *Ex, + void *NumericHandle, + double User_Info [UMFPACK_INFO] +) ; + +/* +double int Syntax: + + #include "umfpack.h" + void *Numeric ; + int status ; + double Mx, Ex, Info [UMFPACK_INFO] ; + status = umfpack_di_get_determinant (&Mx, &Ex, Numeric, Info) ; + +double long Syntax: + + #include "umfpack.h" + void *Numeric ; + long status ; + double Mx, Ex, Info [UMFPACK_INFO] ; + status = umfpack_dl_get_determinant (&Mx, &Ex, Numeric, Info) ; + +complex int Syntax: + + #include "umfpack.h" + void *Numeric ; + int status ; + double Mx, Mz, Ex, Info [UMFPACK_INFO] ; + status = umfpack_zi_get_determinant (&Mx, &Mz, &Ex, Numeric, Info) ; + +complex int Syntax: + + #include "umfpack.h" + void *Numeric ; + long status ; + double *Mx, *Mz, *Ex, Info [UMFPACK_INFO] ; + status = umfpack_zl_get_determinant (&Mx, &Mz, &Ex, Numeric, Info) ; + +packed complex int Syntax: + + Same as above, except Mz is NULL. + +Purpose: + + Using the LU factors and the permutation vectors contained in the Numeric + object, calculate the determinant of the matrix A. + + The value of the determinant can be returned in two forms, depending on + whether Ex is NULL or not. If Ex is NULL then the value of the determinant + is returned on Mx and Mz for the real and imaginary parts. However, to + avoid over- or underflows, the determinant can be split into a mantissa + and exponent, and the parts returned separately, in which case Ex is not + NULL. The actual determinant is then given by + + double det ; + det = Mx * pow (10.0, Ex) ; + + for the double case, or + + double det [2] ; + det [0] = Mx * pow (10.0, Ex) ; // real part + det [1] = Mz * pow (10.0, Ex) ; // imaginary part + + for the complex case. Information on if the determinant will or has + over or under-flowed is given by Info [UMFPACK_STATUS]. + + In the "packed complex" syntax, Mx [0] holds the real part and Mx [1] + holds the imaginary part. Mz is not used (it is NULL). + +Returns: + + Returns UMFPACK_OK if sucessful. Returns UMFPACK_ERROR_out_of_memory if + insufficient memory is available for the n_row integer workspace that + umfpack_*_get_determinant allocates to construct pivots from the + permutation vectors. Returns UMFPACK_ERROR_invalid_Numeric_object if the + Numeric object provided as input is invalid. Returns + UMFPACK_WARNING_singular_matrix if the determinant is zero. Returns + UMFPACK_WARNING_determinant_underflow or + UMFPACK_WARNING_determinant_overflow if the determinant has underflowed + overflowed (for the case when Ex is NULL), or will overflow if Ex is not + NULL and det is computed (see above) in the user program. + +Arguments: + + double *Mx ; Output argument (array of size 1, or size 2 if Mz is NULL) + double *Mz ; Output argument (optional) + double *Ex ; Output argument (optional) + + The determinant returned in mantissa/exponent form, as discussed above. + If Mz is NULL, then both the original and imaginary parts will be + returned in Mx. If Ex is NULL then the determinant is returned directly + in Mx and Mz (or Mx [0] and Mx [1] if Mz is NULL), rather than in + mantissa/exponent form. + + void *Numeric ; Input argument, not modified. + + Numeric must point to a valid Numeric object, computed by + umfpack_*_numeric. + + double Info [UMFPACK_INFO] ; Output argument. + + Contains information about the calculation of the determinant. If a + (double *) NULL pointer is passed, then no statistics are returned in + Info (this is not an error condition). The following statistics are + computed in umfpack_*_determinant: + + Info [UMFPACK_STATUS]: status code. This is also the return value, + whether or not Info is present. + + UMFPACK_OK + + The determinant was successfully found. + + UMFPACK_ERROR_out_of_memory + + Insufficient memory to solve the linear system. + + UMFPACK_ERROR_argument_missing + + Mx is missing (NULL). + + UMFPACK_ERROR_invalid_Numeric_object + + The Numeric object is not valid. + + UMFPACK_ERROR_invalid_system + + The matrix is rectangular. Only square systems can be + handled. + + UMFPACK_WARNING_singluar_matrix + + The determinant is zero or NaN. The matrix is singular. + + UMFPACK_WARNING_determinant_underflow + + When passing from mantissa/exponent form to the determinant + an underflow has or will occur. If the mantissa/exponent from + of obtaining the determinant is used, the underflow will occur + in the user program. If the single argument method of + obtaining the determinant is used, the underflow has already + occurred. + + UMFPACK_WARNING_determinant_overflow + + When passing from mantissa/exponent form to the determinant + an overflow has or will occur. If the mantissa/exponent from + of obtaining the determinant is used, the overflow will occur + in the user program. If the single argument method of + 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 8f9d4b0fab..62381e52ed 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_lunz.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_lunz.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_get_numeric.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_numeric.h index 42001c4b83..f071f2375f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_numeric.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -110,14 +109,17 @@ complex long Syntax: 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: + + Same as above, except Lz, Uz, and Dz are all NULL. + Purpose: This routine copies the LU factors and permutation vectors from the Numeric object into user-accessible arrays. This routine is not needed to solve a linear system. Note that the output arrays Lp, Lj, Lx, Up, Ui, Ux, P, Q, Dx, and Rs are not allocated by umfpack_*_get_numeric; they must exist on - input. Similarly, Lz, Uz and Dz must exist on input for the complex - versions. + input. All output arguments are optional. If any of them are NULL on input, then that part of the LU factorization is not copied. You can @@ -141,7 +143,7 @@ Arguments: Int Lp [n_row+1] ; Output argument. Int Lj [lnz] ; Output argument. - double Lx [lnz] ; Output argument. + double Lx [lnz] ; Output argument. Size 2*lnz for packed complex case. double Lz [lnz] ; Output argument for complex versions. The n_row-by-min(n_row,n_col) matrix L is returned in compressed-row @@ -155,19 +157,19 @@ Arguments: respectively. Each row is stored in sorted order, from low column indices to higher. The last entry in each row is the diagonal, which is numerically equal to one. The sizes of Lp, Lj, Lx, and Lz are - returned by umfpack_*_get_lunz. If Lp, Lj, or Ux (or Uz for the - complex version) are not present, then the matrix L is not returned. - This is not an error condition. The L matrix can be printed if n_row, - Lp, Lj, Lx (and Lz for the complex versions) are passed to - umfpack_*_report_matrix (using the "row" form). - - Future complex version: if Lx is present and Lz is NULL, then both real - and imaginary parts will be returned in Lx[0..2*lnz-1], with Lx[2*k] + returned by umfpack_*_get_lunz. If Lp, Lj, or Lx are not present, + then the matrix L is not returned. This is not an error condition. + The L matrix can be printed if n_row, Lp, Lj, Lx (and Lz for the split + complex case) are passed to umfpack_*_report_matrix (using the + "row" form). + + If Lx is present and Lz is NULL, then both real + and imaginary parts are returned in Lx[0..2*lnz-1], with Lx[2*k] and Lx[2*k+1] being the real and imaginary part of the kth entry. Int Up [n_col+1] ; Output argument. Int Ui [unz] ; Output argument. - double Ux [unz] ; Output argument. + double Ux [unz] ; Output argument. Size 2*unz for packed complex case. double Uz [unz] ; Output argument for complex versions. The min(n_row,n_col)-by-n_col matrix U is returned in compressed-column @@ -181,14 +183,14 @@ Arguments: respectively. Each column is stored in sorted order, from low row indices to higher. The last entry in each column is the diagonal (assuming that it is nonzero). The sizes of Up, Ui, Ux, and Uz are - returned by umfpack_*_get_lunz. If Up, Ui, or Ux (or Uz for the complex - version) are not present, then the matrix U is not returned. This is - not an error condition. The U matrix can be printed if n_col, Up, Ui, - Ux (and Uz for the complex versions) are passed to - umfpack_*_report_matrix (using the "column" form). - - Future complex version: if Ux is present and Uz is NULL, then both real - and imaginary parts will be returned in Ux[0..2*unz-1], with Ux[2*k] + returned by umfpack_*_get_lunz. If Up, Ui, or Ux are not present, + then the matrix U is not returned. This is not an error condition. + The U matrix can be printed if n_col, Up, Ui, Ux (and Uz for the + split complex case) are passed to umfpack_*_report_matrix (using the + "column" form). + + If Ux is present and Uz is NULL, then both real + and imaginary parts are returned in Ux[0..2*unz-1], with Ux[2*k] and Ux[2*k+1] being the real and imaginary part of the kth entry. Int P [n_row] ; Output argument. @@ -208,7 +210,8 @@ Arguments: the description of Qtree and Front_npivcol in umfpack_*_get_symbolic for details. - double Dx [min(n_row,n_col)] ; Output argument. + double Dx [min(n_row,n_col)] ; Output argument. Size 2*n for + the packed complex case. double Dz [min(n_row,n_col)] ; Output argument for complex versions. The diagonal of U is also returned in Dx and Dz. You can extract the @@ -216,8 +219,8 @@ Arguments: Dz for the complex version) and passing Up, Ui, and Ux as NULL. Dx is the real part of the diagonal, and Dz is the imaginary part. - Future complex version: if Dx is present and Dz is NULL, then both real - and imaginary parts will be returned in Dx[0..2*min(n_row,n_col)-1], + If Dx is present and Dz is NULL, then both real + and imaginary parts are returned in Dx[0..2*min(n_row,n_col)-1], with Dx[2*k] and Dx[2*k+1] being the real and imaginary part of the kth entry. @@ -231,8 +234,6 @@ Arguments: built-in routine or as a mexFunction, then the NRECIPROCAL flag is set, and do_recip will always be zero (false). - NOTE: this argument is new to version 4.1. - double Rs [n_row] ; Output argument. The row scale factors are returned in Rs [0..n_row-1]. Row i of A is @@ -244,8 +245,6 @@ Arguments: the complex version, an approximate absolute value is used (|x_real|+|x_imag|). - NOTE: this argument is new to version 4.1. - void *Numeric ; Input argument, not modified. Numeric must point to a valid Numeric object, computed by 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 5c48418a6c..d509e1ecb8 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_get_symbolic.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -183,8 +182,6 @@ Arguments: in the pivot row, or the pivot column, or both). These appear first in the output permutations P and Q. - NOTE: this argument is new to version 4.1. - Int *nz ; Output argument. The number of nonzeros in A. @@ -281,11 +278,11 @@ Arguments: Front_1strow [k] is the row index of the first row in A (P,Q) whose leftmost entry is in a pivot column for the kth front. This is - necessary only to properly factorize singular matrices. It is new to - Version 4.0. Rows in the range Front_1strow [k] to - Front_1strow [k+1]-1 first become pivot row candidates at the kth front. - Any rows not eliminated in the kth front may be selected as pivot rows - in the parent of k (Front_parent [k]) and so on up the tree. + necessary only to properly factorize singular matrices. Rows in the + range Front_1strow [k] to Front_1strow [k+1]-1 first become pivot row + candidates at the kth front. Any rows not eliminated in the kth front + may be selected as pivot rows in the parent of k (Front_parent [k]) + and so on up the tree. Int Front_leftmostdesc [n_col+1] ; Output argument. 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 7d1f3b33dc..29d65963eb 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_numeric.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_load_symbolic.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_symbolic.h index 69ece02688..fe70ecfb3b 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_load_symbolic.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_numeric.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_numeric.h index a57fd0d012..f97d68396b 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_numeric.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -85,9 +84,13 @@ complex long Syntax: void *Symbolic, *Numeric ; long *Ap, *Ai, status ; double *Ax, *Az, Control [UMFPACK_CONTROL], Info [UMFPACK_INFO] ; - status = umfpack_zl_numeric (Ap, Ai, Ax, Symbolic, &Numeric, + status = umfpack_zl_numeric (Ap, Ai, Ax, Az, Symbolic, &Numeric, Control, Info) ; +packed complex Syntax: + + Same as above, except that Az is NULL. + Purpose: Given a sparse matrix A in column-oriented form, and a symbolic analysis @@ -119,6 +122,7 @@ Arguments: This must be identical to the Ai array passed to umfpack_*_*symbolic. double Ax [nz] ; Input argument, not modified, of size nz = Ap [n_col]. + Size 2*nz for packed complex case. The numerical values of the sparse matrix A. The nonzero pattern (row indices) for column j is stored in Ai [(Ap [j]) ... (Ap [j+1]-1)], and @@ -130,8 +134,8 @@ Arguments: For the complex versions, this holds the imaginary part of A. The imaginary part of column j is held in Az [(Ap [j]) ... (Ap [j+1]-1)]. - Future complex version: if Ax is present and Az is NULL, then both real - and imaginary parts will be contained in Ax[0..2*nz-1], with Ax[2*k] + If Az is NULL, then both real + and imaginary parts are contained in Ax[0..2*nz-1], with Ax[2*k] and Ax[2*k+1] being the real and imaginary part of the kth entry. void *Symbolic ; Input argument, not modified. @@ -162,8 +166,7 @@ Arguments: greater than or equal to Control [UMFPACK_PIVOT_TOLERANCE] times the largest absolute value in the column. A value of 1.0 gives true partial pivoting. If less than or equal to zero, then any nonzero - entry is numerically acceptable as a pivot (this is changed from - Version 4.0). Default: 0.1. + entry is numerically acceptable as a pivot. Default: 0.1. Smaller values tend to lead to sparser LU factors, but the solution to the linear system can become inaccurate. Larger values can lead @@ -175,7 +178,7 @@ Arguments: instead of the more expensive-to-compute exact absolute value sqrt (a_real^2 + a_imag^2)). - Control [UMFPACK_SYM_PIVOT_TOLERANCE]: This parameter is new to V4.1. + Control [UMFPACK_SYM_PIVOT_TOLERANCE]: If diagonal pivoting is attempted (the symmetric or symmetric-2by2 strategies are used) then this parameter is used to control when the diagonal entry is selected in a given pivot column. The absolute @@ -208,8 +211,7 @@ Arguments: In both cases, the symmetry of the Schur complement is preserved. - Control [UMFPACK_SCALE]: This parameter is new to V4.1. Version 4.0 - did not scale the matrix. Note that the user's input matrix is + Control [UMFPACK_SCALE]: Note that the user's input matrix is never modified, only an internal copy is scaled. There are three valid settings for this parameter. If any other @@ -236,7 +238,7 @@ Arguments: Default: UMFPACK_SCALE_SUM. - Control [UMFPACK_ALLOC_INIT]: This parameter has changed in V4.1. + Control [UMFPACK_ALLOC_INIT]: When umfpack_*_numeric starts, it allocates memory for the Numeric object. Part of this is of fixed size (approximately n double's + @@ -281,7 +283,7 @@ Arguments: 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 (version 4.0) in MATLAB 6.5 uses utMalloc instead, which + 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 @@ -298,7 +300,7 @@ Arguments: count. It has a small impact on run-time (the extra time required to do the garbage collection and memory reallocation). - Control [UMFPACK_FRONT_ALLOC_INIT]: This parameter is new to V4.1. + Control [UMFPACK_FRONT_ALLOC_INIT]: When UMFPACK starts the factorization of each "chain" of frontal matrices, it allocates a working array to hold the frontal matrices @@ -320,7 +322,7 @@ Arguments: Default: 0.5. - Control [UMFPACK_DROPTOL]: This parameter is new to V4.2. + Control [UMFPACK_DROPTOL]: Entries in L and U with absolute value less than or equal to the drop tolerance are removed from the data structures (unless leaving @@ -500,10 +502,6 @@ Arguments: Info [UMFPACK_MAX_FRONT_SIZE]: the size of the largest frontal matrix (number of entries). - ------------------------------------------------------------------------ - The following statistics were added to Version 4.1: - ------------------------------------------------------------------------ - Info [UMFPACK_NUMERIC_WALLTIME]: The wallclock time taken, in seconds. Info [UMFPACK_MAX_FRONT_NROWS]: the max number of @@ -532,10 +530,6 @@ Arguments: Info [UMFPACK_NOFF_DIAG]: number of off-diagonal pivots selected, if the symmetric or 2-by-2 strategies are used. - ------------------------------------------------------------------------ - The following statistics were added to Version 4.2: - ------------------------------------------------------------------------ - Info [UMFPACK_NZDROPPED]: the number of entries smaller in absolute value than Control [UMFPACK_DROPTOL] that were dropped from L and U. Note that entries on the diagonal of U are never dropped. diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_qsymbolic.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_qsymbolic.h index 23088a12de..f93de8589e 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_qsymbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_qsymbolic.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -98,6 +97,10 @@ complex long Syntax: status = umfpack_zl_qsymbolic (n_row, n_col, Ap, Ai, Ax, Az, Qinit, &Symbolic, Control, Info) ; +packed complex Syntax: + + Same as above, except Az is NULL. + Purpose: Given the nonzero pattern of a sparse matrix A in column-oriented form, and @@ -137,4 +140,11 @@ Arguments: column of the matrix A (:,Qinit) to be factorized. If Qinit is an (Int *) NULL pointer, then COLAMD or AMD are called instead. + double Control [UMFPACK_CONTROL] ; Input argument, not modified. + + If Qinit is not NULL, then only two strategies are recognized: + the unsymmetric strategy and the symmetric strategy. + If Control [UMFPACK_STRATEGY] is UMFPACK_STRATEGY_SYMMETRIC, + then the symmetric strategy is used. Otherwise the unsymmetric + strategy is used. */ 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 6aebfdf5b5..607185c1a6 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_control.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_control.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_report_info.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_info.h index ccba175018..0f7970903a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_info.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_info.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_report_matrix.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_matrix.h index b0225dae30..831d32ca34 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_matrix.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_matrix.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -94,6 +93,10 @@ or: status = umfpack_zl_report_matrix (n_row, n_col, Ap, Ai, Ax, Az, 0, Control) ; +packed complex Syntax: + + Same as above, except Az is NULL. + Purpose: Verifies and prints a row or column-oriented sparse matrix. @@ -149,6 +152,7 @@ Arguments: to n_col-1 (the matrix is 0-based). double Ax [nz] ; Input argument, not modified, of size nz = Ap [n]. + Size 2*nz for packed complex case. The numerical values of the sparse matrix A. @@ -156,23 +160,24 @@ Arguments: for column j is stored in Ai [(Ap [j]) ... (Ap [j+1]-1)], and the corresponding (real) numerical values are stored in Ax [(Ap [j]) ... (Ap [j+1]-1)]. The imaginary parts are stored in - Az [(Ap [j]) ... (Ap [j+1]-1)], for the complex versions. + Az [(Ap [j]) ... (Ap [j+1]-1)], for the complex versions + (see below if Az is NULL). Otherwise, the nonzero pattern (column indices) for row j is stored in Ai [(Ap [j]) ... (Ap [j+1]-1)], and the corresponding (real) numerical values are stored in Ax [(Ap [j]) ... (Ap [j+1]-1)]. The imaginary parts are stored in Az [(Ap [j]) ... (Ap [j+1]-1)], - for the complex versions. + for the complex versions (see below if Az is NULL). - No numerical values are printed if Ax or Az are (double *) NULL. + No numerical values are printed if Ax is NULL. double Az [nz] ; Input argument, not modified, for complex versions. The imaginary values of the sparse matrix A. See the description - of Ax, above. No numerical values are printed if Az is NULL. + of Ax, above. - Future complex version: if Ax is present and Az is NULL, then both real - and imaginary parts will be contained in Ax[0..2*nz-1], with Ax[2*k] + If Az is NULL, then both real + and imaginary parts are contained in Ax[0..2*nz-1], with Ax[2*k] and Ax[2*k+1] being the real and imaginary part of the kth entry. Int col_form ; Input argument, not modified. 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 54fd8f7ffe..28bad670bb 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_numeric.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_report_perm.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_perm.h index 17969dd6e1..cffab230e6 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_perm.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_perm.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_report_status.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_status.h index 7d826de56f..3d1e9e0d82 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_status.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_status.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -80,7 +79,7 @@ Arguments: 0 or less: no output, even when an error occurs 1: error messages only - 2 or more: print status, whether or not an error occured + 2 or more: print status, whether or not an error occurred 4 or more: also print the UMFPACK Copyright 6 or more: also print the UMFPACK License Default: 1 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 f9d9f12c03..4218dfccd1 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_symbolic.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_report_triplet.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_triplet.h index 928675400d..f3da629d7a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_triplet.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_triplet.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -84,6 +83,10 @@ complex long Syntax: status = umfpack_zl_report_triplet (n_row, n_col, nz, Ti, Tj, Tx, Tz, Control) ; +packed complex Syntax: + + Same as above, except Tz is NULL. + Purpose: Verifies and prints a matrix in triplet form. @@ -115,6 +118,7 @@ Arguments: Int Ti [nz] ; Input argument, not modified. Int Tj [nz] ; Input argument, not modified. double Tx [nz] ; Input argument, not modified. + Size 2*nz for packed complex case. double Tz [nz] ; Input argument, not modified, for complex versions. Ti, Tj, Tx (and Tz for complex versions) hold the "triplet" form of a @@ -123,12 +127,12 @@ Arguments: imaginary part of a_ij is Tz [k] (for complex versions). The row and column indices i and j must be in the range 0 to n_row-1 or 0 to n_col-1, respectively. Duplicate entries may be present. The - "triplets" may be in any order. Tx and Tz are optional; if Tx or Tz are - not present ((double *) NULL pointers), then the numerical values are + "triplets" may be in any order. Tx and Tz are optional; if Tx is + not present ((double *) NULL), then the numerical values are not printed. - Future complex version: if Tx is present and Tz is NULL, then both real - and imaginary parts will be contained in Tx[0..2*nz-1], with Tx[2*k] + If Tx is present and Tz is NULL, then both real + and imaginary parts are contained in Tx[0..2*nz-1], with Tx[2*k] and Tx[2*k+1] being the real and imaginary part of the kth entry. double Control [UMFPACK_CONTROL] ; Input argument, not modified. 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 66db99d1f8..1bae66ab7b 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_vector.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_report_vector.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -75,7 +74,7 @@ Returns: UMFPACK_OK if Control [UMFPACK_PRL] <= 2 (the input is not checked). Otherwise: - + UMFPACK_OK if the vector is valid. UMFPACK_ERROR_argument_missing if X or Xx is missing. UMFPACK_ERROR_n_nonpositive if n <= 0. @@ -108,13 +107,13 @@ Arguments: when passed to umfpack_*_report_vector (this is untested, however). This is the "merged" form of the complex vector X. - Future work: all complex routines in UMFPACK could use this same + Note that all complex routines in UMFPACK V4.4 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 merged format is compatible with the intrinsic double _Complex + The packed format is compatible with the intrinsic double _Complex type in ANSI C99, and is also compatible with SuperLU's method of - storing complex matrices. In the current version, only - umfpack_*_report_vector supports both formats. + storing complex matrices. In Version 4.3, this routine was the only + one that allowed for packed complex arguments. double Control [UMFPACK_CONTROL] ; Input argument, not modified. 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 0e3f57be87..9eeb4be6e4 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_save_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_save_numeric.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -69,9 +68,7 @@ complex long Syntax: Purpose: Saves a Numeric object to a file, which can later be read by - umfpack_*_load_numeric. The Numeric object is not modified. You need - to call umfpack_*_free_numeric if you to delete the Numeric object after - saving it to a file. + umfpack_*_load_numeric. The Numeric object is not modified. Returns: 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 a183ede9b2..26eab600b1 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_save_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_save_symbolic.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -69,9 +68,7 @@ complex long Syntax: Purpose: Saves a Symbolic object to a file, which can later be read by - umfpack_*_load_symbolic. The Symbolic object is not modified. You need - to call umfpack_*_free_symbolic if you to delete the Symbolic object after - saving it to a file. + umfpack_*_load_symbolic. The Symbolic object is not modified. Returns: diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_scale.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_scale.h index 8e254f8f2e..11138aa48d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_scale.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_scale.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -66,6 +65,10 @@ complex long Syntax: double *Bx, *Bz, *Xx, *Xz ; status = umfpack_zl_scale (Xx, Xz, Bx, Bz, Numeric) ; +packed complex Syntax: + + Same as above, except both Xz and Bz are NULL. + Purpose: Given LU factors computed by umfpack_*_numeric (PAQ=LU, PRAQ=LU, or @@ -79,23 +82,27 @@ Returns: UMFPACK_ERROR_invalid_Numeric_object is returned in the Numeric object is invalid. UMFPACK_ERROR_argument_missing is returned if any of the input vectors are missing (X and B for the real version, - and Xx, Xz, Bx, and Bz for the complex version). + and Xx and Bx for the complex version). Arguments: double X [n_row] ; Output argument. or: double Xx [n_row] ; Output argument, real part. + Size 2*n_row for packed complex case. double Xz [n_row] ; Output argument, imaginary part. - The output vector X. + The output vector X. If either Xz or Bz are NULL, the vector + X is in packed complex form, with the kth entry in Xx [2*k] and + Xx [2*k+1], and likewise for B. double B [n_row] ; Input argument, not modified. or: double Bx [n_row] ; Input argument, not modified, real part. + Size 2*n_row for packed complex case. double Bz [n_row] ; Input argument, not modified, imaginary part. - The input vector B. + The input vector B. See above if either Xz or Bz are NULL. void *Numeric ; Input argument, not modified. diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_solve.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_solve.h index d6a0a96106..6bbce1c3c6 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_solve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_solve.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -98,6 +97,10 @@ complex long Syntax: status = umfpack_zl_solve (sys, Ap, Ai, Ax, Az, Xx, Xz, Bx, Bz, Numeric, Control, Info) ; +packed complex Syntax: + + Same as above, Xz, Bz, and Az are NULL. + Purpose: Given LU factors computed by umfpack_*_numeric (PAQ=LU, PRAQ=LU, or @@ -145,12 +148,10 @@ Arguments: For the other values of the sys argument, iterative refinement is not performed (Control [UMFPACK_IRSTEP], Ap, Ai, Ax, and Az are ignored). - Earlier versions used a string argument for sys. It was changed to an - integer to make it easier for a Fortran code to call UMFPACK. - Int Ap [n+1] ; Input argument, not modified. Int Ai [nz] ; Input argument, not modified. double Ax [nz] ; Input argument, not modified. + Size 2*nz for packed complex case. double Az [nz] ; Input argument, not modified, for complex versions. If iterative refinement is requested (Control [UMFPACK_IRSTEP] >= 1, @@ -164,25 +165,27 @@ Arguments: system other than Ax=b, A'x=b, or A.'x=b is being solved, or if A is singular, since in each of these cases A is not accessed. - Future complex version: if Ax is present and Az is NULL, then both real - and imaginary parts will be contained in Ax[0..2*nz-1], with Ax[2*k] + If Az, Xz, or Bz are NULL, then both real + and imaginary parts are contained in Ax[0..2*nz-1], with Ax[2*k] and Ax[2*k+1] being the real and imaginary part of the kth entry. double X [n] ; Output argument. or: - double Xx [n] ; Output argument, real part. + double Xx [n] ; Output argument, real part + Size 2*n for packed complex case. double Xz [n] ; Output argument, imaginary part. The solution to the linear system, where n = n_row = n_col is the dimension of the matrices A, L, and U. - Future complex version: if Xx is present and Xz is NULL, then both real - and imaginary parts will be returned in Xx[0..2*n-1], with Xx[2*k] and + If Az, Xz, or Bz are NULL, then both real + and imaginary parts are returned in Xx[0..2*n-1], with Xx[2*k] and Xx[2*k+1] being the real and imaginary part of the kth entry. double B [n] ; Input argument, not modified. or: double Bx [n] ; Input argument, not modified, real part. + Size 2*n for packed complex case. double Bz [n] ; Input argument, not modified, imaginary part. The right-hand side vector, b, stored as a conventional array of size n @@ -190,8 +193,8 @@ Arguments: solve for multiple right-hand-sides, nor does it allow b to be stored in a sparse-column form. - Future complex version: if Bx is present and Bz is NULL, then both real - and imaginary parts will be contained in Bx[0..2*n-1], with Bx[2*k] + If Az, Xz, or Bz are NULL, then both real + and imaginary parts are contained in Bx[0..2*n-1], with Bx[2*k] and Bx[2*k+1] being the real and imaginary part of the kth entry. void *Numeric ; Input argument, not modified. @@ -229,7 +232,7 @@ Arguments: UMFPACK_WARNING_singular_matrix - A divide-by-zero occured. Your solution will contain Inf's + A divide-by-zero occurred. Your solution will contain Inf's and/or NaN's. Some parts of the solution may be valid. For example, solving Ax=b with @@ -243,9 +246,9 @@ Arguments: UMFPACK_ERROR_argument_missing One or more required arguments are missing. The B, X, (or - Bx, Bz, Xx and Xz for the complex versions) arguments + Bx and Xx for the complex versions) arguments are always required. Info and Control are not required. Ap, - Ai, Ax (and Az for complex versions) are required if Ax=b, + Ai, Ax are required if Ax=b, A'x=b, A.'x=b is to be solved, the (default) iterative refinement is requested, and the matrix A is nonsingular. @@ -290,10 +293,6 @@ Arguments: Info [UMFPACK_SOLVE_TIME]: The time taken, in seconds. - ------------------------------------------------------------------------ - The following statistic was added to Version 4.1: - ------------------------------------------------------------------------ - Info [UMFPACK_SOLVE_WALLTIME]: The wallclock time taken, in seconds. Only the above listed Info [...] entries are accessed. The remaining diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_symbolic.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_symbolic.h index ed09ca5d1d..3ee4ffa5f1 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_symbolic.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -94,6 +93,10 @@ complex long Syntax: status = umfpack_zl_symbolic (n_row, n_col, Ap, Ai, Ax, Az, &Symbolic, Control, Info) ; +packed complex Syntax: + + Same as above, except Az is NULL. + Purpose: Given nonzero pattern of a sparse matrix A in column-oriented form, @@ -145,6 +148,7 @@ Arguments: to print the matrix A. double Ax [nz] ; Optional input argument, not modified. + Size 2*nz for packed complex case. The numerical values of the sparse matrix A. The nonzero pattern (row indices) for column j is stored in Ai [(Ap [j]) ... (Ap [j+1]-1)], and @@ -161,8 +165,8 @@ Arguments: For the complex versions, this holds the imaginary part of A. The imaginary part of column j is held in Az [(Ap [j]) ... (Ap [j+1]-1)]. - Future complex version: if Ax is present and Az is NULL, then both real - and imaginary parts will be contained in Ax[0..2*nz-1], with Ax[2*k] + If Az is NULL, then both real + and imaginary parts are contained in Ax[0..2*nz-1], with Ax[2*k] and Ax[2*k+1] being the real and imaginary part of the kth entry. Used by the 2-by-2 strategy only. See the description of Ax, above. @@ -187,8 +191,7 @@ Arguments: Control [UMFPACK_STRATEGY]: This is the most important control parameter. It determines what kind of ordering and pivoting - strategy that UMFPACK should use. It is new to Version 4.1 - There are 4 options: + strategy that UMFPACK should use. There are 4 options: UMFPACK_STRATEGY_AUTO: This is the default. The input matrix is analyzed to determine how symmetric the nonzero pattern is, and @@ -200,8 +203,7 @@ Arguments: is used to order the columns of A, followed by a postorder of the column elimination tree. No attempt is made to perform diagonal pivoting. The column ordering is refined during - factorization. This strategy was the only one provided with - UMFPACK V4.0. + factorization. In the numerical factorization, the Control [UMFPACK_SYM_PIVOT_TOLERANCE] parameter is ignored. A @@ -209,8 +211,8 @@ Arguments: Control [UMFPACK_PIVOT_TOLERANCE] (default 0.1) times the largest entry in its column. - UMFPACK_STRATEGY_SYMMETRIC: Use the symmetric strategy (new to - Version 4.1). In this method, the approximate minimum degree + UMFPACK_STRATEGY_SYMMETRIC: Use the symmetric strategy + In this method, the approximate minimum degree ordering (AMD) is applied to A+A', followed by a postorder of the elimination tree of A+A'. UMFPACK attempts to perform diagonal pivoting during numerical factorization. No refinement @@ -251,16 +253,15 @@ Arguments: 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 - has a modest effect on performance. + has a modest effect on performance. Control [UMFPACK_2BY2_TOLERANCE]: a diagonal entry S (k,k) is considered "small" if it is < tol * max (abs (S (:,k))), where S a submatrix of the scaled input matrix, with pivots of zero Markowitz cost removed. - Control [UMFPACK_SCALE]: This parameter is new to V4.1. See - umfpack_numeric.h for a description. Only affects the 2-by-2 - strategy. Default: UMFPACK_SCALE_SUM. + Control [UMFPACK_SCALE]: See umfpack_numeric.h for a description. + Only affects the 2-by-2 strategy. Default: UMFPACK_SCALE_SUM. Control [UMFPACK_FIXQ]: If > 0, then the pre-ordering Q is not modified during numeric factorization. If < 0, then Q may be modified. If @@ -315,9 +316,6 @@ Arguments: Something very serious went wrong. This is a bug. Please contact the author (davis@cise.ufl.edu). - Note that the UMFPACK_ERROR_problem_too_large error code is no - longer returned (it was in Version 4.0). - Info [UMFPACK_NROW]: the value of the input argument n_row. Info [UMFPACK_NCOL]: the value of the input argument n_col. @@ -378,7 +376,7 @@ Arguments: Info [UMFPACK_VARIABLE_PEAK_ESTIMATE]: the estimated peak size (in Units) of the variable-sized part of the Numeric object. This is - usually an upper bound, but that is not guaranteed. + usually an upper bound, but that is not guaranteed. Info [UMFPACK_VARIABLE_FINAL_ESTIMATE]: the estimated final size (in Units) of the variable-sized part of the Numeric object. This is @@ -441,10 +439,6 @@ Arguments: Info [UMFPACK_SYMBOLIC_TIME]: The CPU time taken, in seconds. - ------------------------------------------------------------------------ - The rest of the statistics are new to Version 4.1: - ------------------------------------------------------------------------ - Info [UMFPACK_SYMBOLIC_WALLTIME]: The wallclock time taken, in seconds. Info [UMFPACK_STRATEGY_USED]: The ordering strategy used: diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_tictoc.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_tictoc.h index 550d7d5d5d..121755895a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_tictoc.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_tictoc.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 a29c2f4dac..8d8d8cf10c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_timer.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_timer.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -23,9 +22,8 @@ Purpose: Returns the CPU time used by the process. Includes both "user" and "system" time (the latter is time spent by the system on behalf of the process, and is thus charged to the process). It does not return the wall clock time. - This was the timer used internally in UMFPACK V4.0. See umfpack_tic and - umfpack_toc (the file umfpack_tictoc.h) for the timer used internally by - UMFPACK V4.1. + See umfpack_tic and umfpack_toc (the file umfpack_tictoc.h) for the timer + used internally by UMFPACK. This routine uses the Unix getrusage routine, if available. It is less subject to overflow than the ANSI C clock routine. If getrusage is not diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_transpose.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_transpose.h index f9d34cbb29..5f2fa92c7d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_transpose.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_transpose.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -98,6 +97,10 @@ complex long Syntax: status = umfpack_zl_transpose (n_row, n_col, Ap, Ai, Ax, Az, P, Q, Rp, Ri, Rx, Rz, do_conjugate) ; +packed complex Syntax: + + Same as above, except Az are Rz are NULL. + Purpose: Transposes and optionally permutes a sparse matrix in row or column-form, @@ -111,12 +114,7 @@ Purpose: A. Factorizing A' or A.' instead of A can be much better, particularly if AA' is much sparser than A'A. You can still solve Ax=b if you factorize A' or A.', by solving with the sys argument UMFPACK_At or UMFPACK_Aat, - respectively, in umfpack_*_*solve. The umfpack mexFunction (umfpackmex.c) - is one example. To compute x = A/b, it computes x = (A.'\b.').' instead, - by factorizing A.'. It then uses the regular solve, since b.' and x.' are - stored identically as b and x, respectively (both b.' and b are dense - vectors). If b and x were arrays, the umfpack mexFunction would need to - first compute b.' and then transpose the resulting solution. + respectively, in umfpack_*_*solve. Returns: @@ -155,6 +153,7 @@ Arguments: Row indices must be in the range 0 to n_row-1 (the matrix is 0-based). double Ax [nz] ; Input argument, not modified, of size nz = Ap [n_col]. + Size 2*nz if Az or Rz are NULL. double Az [nz] ; Input argument, not modified, for complex versions. If present, these are the numerical values of the sparse matrix A. @@ -162,13 +161,12 @@ Arguments: Ai [(Ap [j]) ... (Ap [j+1]-1)], and the corresponding real numerical values are stored in Ax [(Ap [j]) ... (Ap [j+1]-1)]. The imaginary values are stored in Az [(Ap [j]) ... (Ap [j+1]-1)]. The values are - transposed only if Ax and Rx are present (for the real version), and - only if all four (Ax, Az, Rx, and Rz) are present for the complex - version. These are not an error conditions; you are able to transpose + transposed only if Ax and Rx are present. + This is not an error conditions; you are able to transpose and permute just the pattern of a matrix. - Future complex version: if Ax is present and Az is NULL, then both real - and imaginary parts will be contained in Ax[0..2*nz-1], with Ax[2*k] + If Az or Rz are NULL, then both real + and imaginary parts are contained in Ax[0..2*nz-1], with Ax[2*k] and Ax[2*k+1] being the real and imaginary part of the kth entry. Int P [n_row] ; Input argument, not modified. @@ -200,18 +198,19 @@ Arguments: same form as the row indices Ai for the matrix A. double Rx [nz] ; Output argument. + Size 2*nz if Az or Rz are NULL. double Rz [nz] ; Output argument, imaginary part for complex versions. If present, these are the numerical values of the sparse matrix R, in the same form as the values Ax and Az of the matrix A. - Future complex version: if Rx is present and Rz is NULL, then both real - and imaginary parts will be contained in Rx[0..2*nz-1], with Rx[2*k] + If Az or Rz are NULL, then both real + and imaginary parts are contained in Rx[0..2*nz-1], with Rx[2*k] and Rx[2*k+1] being the real and imaginary part of the kth entry. Int do_conjugate ; Input argument for complex versions only. - If true, and if Ax, Az, Rx, and Rz are all present, then the linear + If true, and if Ax and Rx are present, then the linear algebraic transpose is computed (complex conjugate). If false, the array transpose is computed instead. */ 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 ea55157117..abeee030d8 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,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -98,10 +97,14 @@ long Syntax: status = umfpack_zl_triplet_to_col (n_row, n_col, nz, Ti, Tj, Tx, Tz, Ap, Ai, Ax, Az, Map) ; +packed complex Syntax: + + Same as above, except Tz and Az are NULL. + Purpose: Converts a sparse matrix from "triplet" form to compressed-column form. - Analogous to A = spconvert (Ti, Tj, Tx + Tx*1i) in MATLAB, except that + Analogous to A = spconvert (Ti, Tj, Tx + Tz*1i) in MATLAB, except that zero entries present in the triplet form are present in A. The triplet form of a matrix is a very simple data structure for basic @@ -174,6 +177,7 @@ Arguments: Int Ti [nz] ; Input argument, not modified. Int Tj [nz] ; Input argument, not modified. double Tx [nz] ; Input argument, not modified. + Size 2*nz if Tz or Az are NULL. double Tz [nz] ; Input argument, not modified, for complex versions. Ti, Tj, Tx, and Tz hold the "triplet" form of a sparse matrix. The kth @@ -183,14 +187,13 @@ Arguments: n_row-1 and 0 to n_col-1, respectively. Duplicate entries may be present; they are summed in the output matrix. This is not an error condition. The "triplets" may be in any order. Tx, Tz, Ax, and Az - are optional. For the real version, Ax is computed only if both Ax - and Tx are present (not (double *) NULL). For the complex version, Ax - and Az are computed only if Tx, Tz, Ax, and Az are all present. These - are not error conditions; the routine can create just the pattern of - the output matrix from the pattern of the triplets. - - Future complex version: if Tx is present and Tz is NULL, then both real - and imaginary parts will be contained in Tx[0..2*nz-1], with Tx[2*k] + are optional. Ax is computed only if both Ax and Tx are present + (not (double *) NULL). This is not error condition; the routine can + create just the pattern of the output matrix from the pattern of the + triplets. + + If Az or Tz are NULL, then both real + and imaginary parts are contained in Tx[0..2*nz-1], with Tx[2*k] and Tx[2*k+1] being the real and imaginary part of the kth entry. Int Ap [n_col+1] ; Output argument. @@ -213,7 +216,7 @@ Arguments: are in ascending order, and no duplicate row indices are present. Row indices are in the range 0 to n_col-1 (the matrix is 0-based). - double Ax [nz] ; Output argument. + double Ax [nz] ; Output argument. Size 2*nz if Tz or Az are NULL. double Az [nz] ; Output argument for complex versions. Ax and Az (for the complex versions) are double arrays of size nz on @@ -221,8 +224,7 @@ Arguments: in both arrays. Ax is optional; if Tx and/or Ax are not present (a (double *) NULL - pointer), then Ax is not computed. Az is also optional; if Tz and/or - Az are not present, then Az is not computed. If present, Ax holds the + pointer), then Ax is not computed. If present, Ax holds the numerical values of the the real part of the sparse matrix A and Az holds the imaginary parts. The nonzero pattern (row indices) for column j is stored in Ai [(Ap [j]) ... (Ap [j+1]-1)], and the @@ -230,8 +232,8 @@ Arguments: Ax [(Ap [j]) ... (Ap [j+1]-1)]. The imaginary parts are stored in Az [(Ap [j]) ... (Ap [j+1]-1)], for the complex versions. - Future complex version: if Ax is present and Az is NULL, then both real - and imaginary parts will be returned in Ax[0..2*nz2-1], with Ax[2*k] + If Az or Tz are NULL, then both real + and imaginary parts are returned in Ax[0..2*nz2-1], with Ax[2*k] and Ax[2*k+1] being the real and imaginary part of the kth entry. int Map [nz] ; Optional output argument. @@ -247,8 +249,8 @@ Arguments: first one, without calling this routine. If Ti and Tj do not change, then Ap, and Ai can be reused from the prior call to umfpack_*_triplet_to_col. You only need to recompute Ax (and Az for the - complex version). This code excerpt properly sums up all duplicate - values (for the real version): + split complex version). This code excerpt properly sums up all + duplicate values (for the real version): for (p = 0 ; p < Ap [n_col] ; p++) Ax [p] = 0 ; for (k = 0 ; k < nz ; k++) Ax [Map [k]] += Tx [k] ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_wsolve.h b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_wsolve.h index 7eda906edc..b537221cb7 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_wsolve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Include/umfpack_wsolve.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -108,6 +107,10 @@ complex long Syntax: status = umfpack_zl_wsolve (sys, Ap, Ai, Ax, Az, Xx, Xz, Bx, Bz, Numeric, Control, Info, Wi, W) ; +packed complex Syntax: + + Same as above, except Az, Xz, and Bz are NULL. + Purpose: Given LU factors computed by umfpack_*_numeric (PAQ=LU) and the @@ -128,6 +131,7 @@ Arguments: Int Ap [n+1] ; Input argument, not modified. Int Ai [nz] ; Input argument, not modified. double Ax [nz] ; Input argument, not modified. + Size 2*nz in packed complex case. double X [n] ; Output argument. double B [n] ; Input argument, not modified. void *Numeric ; Input argument, not modified. @@ -137,8 +141,10 @@ Arguments: for complex versions: double Az [nz] ; Input argument, not modified, imaginary part double Xx [n] ; Output argument, real part. + Size 2*n in packed complex case. double Xz [n] ; Output argument, imaginary part - double Bx [n] ; Input argument, not modified, real part + double Bx [n] ; Input argument, not modified, real part. + Size 2*n in packed complex case. double Bz [n] ; Input argument, not modified, imaginary part The above arguments are identical to umfpack_*_solve, except that the diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/Contents.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/Contents.m index c6657b2375..8514438b17 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/Contents.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/Contents.m @@ -7,16 +7,18 @@ % 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 +% 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) % % See also: % amd symmetric minimum degree ordering % colamd unsymmetric column approx minimum degree ordering % symamd symmetric approx minimum degree ordering, based on colamd % -% UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. -% Davis. All Rights Reserved. Type umfpack_details for License. +% UMFPACK Version 4.4, Copyright (c) 2005 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 90edfec8dd..20bdee5e60 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/GNUmakefile +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/GNUmakefile @@ -2,9 +2,6 @@ # UMFPACK GNUmakefile for the UMFPACK MATLAB mexFunction (GNU "make" only) #------------------------------------------------------------------------------- -# UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. -# Davis. All Rights Reserved. See ../README for License. - all: umfpack luflop include ../Make/Make.include @@ -38,7 +35,7 @@ UMFINT = umf_analyze umf_apply_order umf_colamd umf_free umf_fsize \ # non-user-callable and user-callable amd_*.[ch] files (int/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_order amd_control amd_info amd_valid amd_preprocess # 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: @@ -52,10 +49,10 @@ UMF = $(UMF_CREATED) $(UMFCH) # user-callable umfpack_*.[ch] files (int/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_numeric umfpack_qsymbolic \ - umfpack_report_control umfpack_report_info umfpack_report_matrix \ - umfpack_report_numeric umfpack_report_perm umfpack_report_status \ - umfpack_report_symbolic umfpack_report_triplet \ + umfpack_get_symbolic umfpack_get_determinant umfpack_numeric \ + umfpack_qsymbolic umfpack_report_control umfpack_report_info \ + umfpack_report_matrix umfpack_report_numeric umfpack_report_perm \ + umfpack_report_status umfpack_report_symbolic umfpack_report_triplet \ umfpack_report_vector umfpack_solve umfpack_symbolic \ umfpack_transpose umfpack_triplet_to_col umfpack_scale \ umfpack_load_numeric umfpack_save_numeric \ diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/Makefile b/deal.II/contrib/umfpack/UMFPACK/MATLAB/Makefile index 4501ba33a5..91b56a6960 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/Makefile +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/Makefile @@ -2,9 +2,6 @@ # UMFPACK Makefile for the UMFPACK MATLAB mexFunction (old "make" only) #------------------------------------------------------------------------------- -# UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. -# Davis. All Rights Reserved. See ../README for License. - # 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 @@ -144,6 +141,8 @@ umfpack: $(MV) -f umfpack_get_lunz.o umfpack_md_get_lunz.o $(MX) -DDINT -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 + $(MV) -f umfpack_get_determinant.o umfpack_md_get_determinant.o $(MX) -DDINT -c ../Source/umfpack_numeric.c $(MV) -f umfpack_numeric.o umfpack_md_numeric.o $(MX) -DDINT -c ../Source/umfpack_qsymbolic.c @@ -290,6 +289,8 @@ umfpack: $(MV) -f umfpack_get_lunz.o umfpack_mz_get_lunz.o $(MX) -DZINT -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 + $(MV) -f umfpack_get_determinant.o umfpack_mz_get_determinant.o $(MX) -DZINT -c ../Source/umfpack_numeric.c $(MV) -f umfpack_numeric.o umfpack_mz_numeric.o $(MX) -DZINT -c ../Source/umfpack_qsymbolic.c @@ -380,7 +381,8 @@ umfpack: umfpack_md_col_to_triplet.o umfpack_md_defaults.o \ umfpack_md_free_numeric.o umfpack_md_free_symbolic.o \ umfpack_md_get_numeric.o umfpack_md_get_lunz.o \ - umfpack_md_get_symbolic.o umfpack_md_numeric.o \ + umfpack_md_get_symbolic.o umfpack_md_get_determinant.o \ + umfpack_md_numeric.o \ umfpack_md_qsymbolic.o umfpack_md_report_control.o \ umfpack_md_report_info.o umfpack_md_report_matrix.o \ umfpack_md_report_numeric.o umfpack_md_report_perm.o \ @@ -410,7 +412,8 @@ umfpack: umfpack_mz_col_to_triplet.o umfpack_mz_defaults.o \ umfpack_mz_free_numeric.o umfpack_mz_free_symbolic.o \ umfpack_mz_get_numeric.o umfpack_mz_get_lunz.o \ - umfpack_mz_get_symbolic.o umfpack_mz_numeric.o \ + umfpack_mz_get_symbolic.o umfpack_mz_get_determinant.o \ + umfpack_mz_numeric.o \ umfpack_mz_qsymbolic.o umfpack_mz_report_control.o \ umfpack_mz_report_info.o umfpack_mz_report_matrix.o \ umfpack_mz_report_numeric.o umfpack_mz_report_perm.o \ diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/lu_normest.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/lu_normest.m index ea3490cfca..23731effee 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/lu_normest.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/lu_normest.m @@ -7,14 +7,14 @@ function rho = lu_normest (A, L, U) % % which estimates the computation of the 1-norm: % -% rho = norm (A-L*U, 1) +% rho = norm (A-L*U, 1) % % Authors: William W. Hager, Math Dept., Univ. of Florida % Timothy A. Davis, CISE Dept., Univ. of Florida % Gainesville, FL, 32611, USA. % based on normest1, contributed on November, 1997 % -% This code can be quite easily adapted to estimate the 1-norm of any +% This code can be quite easily adapted to estimate the 1-norm of any % matrix E, where E itself is dense or not explicitly represented, but the % computation of E (and E') times a vector is easy. In this case, our matrix % of interest is: diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/luflop.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/luflop.m index dcc080b55e..2abda1e341 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/luflop.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/luflop.m @@ -14,11 +14,11 @@ function f = luflop (L, U) % L and U must be sparse. % % Note: the above expression has a subtle undercount when exact numerical -% cancelation occurs. Try [L,U,P] = lu (sparse (ones (10))) and then +% cancelation occurs. Try [L,U,P] = lu (sparse (ones (10))) and then % luflop (L,U). -% UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. -% Davis. All Rights Reserved. Type umfpack_details for License. +% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. +% All Rights Reserved. Type umfpack_details for License. help luflop error ('luflop mexFunction not found! Use umfpack_make to compile luflop.') ; diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/luflopmex.c b/deal.II/contrib/umfpack/UMFPACK/MATLAB/luflopmex.c index 5342856ae8..10a26c5021 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/luflopmex.c +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/luflopmex.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -45,9 +44,10 @@ void mexFunction /* local variables */ /* ---------------------------------------------------------------------- */ + double flop_count ; + double *pflop ; int *Lp, *Li, *Up, *Ui, *Unz, n, k, row, col, p, Lnz_k, Unz_k ; mxArray *Lmatrix, *Umatrix ; - double flop_count, *pflop ; /* ---------------------------------------------------------------------- */ /* get inputs L, U */ diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack.m index 3285bb6935..a86bfbd6c7 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack.m @@ -1,7 +1,7 @@ function [out1, out2, out3, out4, out5] = umfpack (in1, in2, in3, in4, in5) -% UMFPACK v4.3 is a MATLAB mexFunction for solving sparse linear systems. +% UMFPACK v4.4 is a MATLAB mexFunction for solving sparse linear systems. % -% UMFPACK v4.3: | MATLAB approximate equivalent: +% UMFPACK v4.4: | MATLAB approximate equivalent: % --------------------------------------------------------------------- % x = umfpack (A, '\', b) ; | x = A \ b % | @@ -20,7 +20,7 @@ function [out1, out2, out3, out4, out5] = umfpack (in1, in2, in3, in4, in5) % | R = spdiags (r, 0, m, m) ; % | [L,U,P] = lu ((R\A)*Q) ; % | -% [P,Q,F,C] = umfpack (A, 'symbolic') | [m,n] = size (A) ; +% [P,Q,F,C] = umfpack (A, 'symbolic') | [m,n] = size (A) ; % | I = speye (n) ; % | Q = I (:, colamd (A)) ; % | [count,h,parent,post] = ... @@ -36,8 +36,8 @@ function [out1, out2, out3, out4, out5] = umfpack (in1, in2, in3, in4, in5) % See also: lu_normest, colamd, amd. % To use UMFPACK for an arbitrary b, see umfpack_solve. -% UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. -% Davis. All Rights Reserved. Type umfpack_details for License. +% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. +% All Rights Reserved. Type umfpack_details for License. help umfpack error ('umfpack mexFunction not found! Use umfpack_make to compile umfpack.') ; diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_btf.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_btf.m index a9da270f6b..2efb865d68 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_btf.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_btf.m @@ -11,8 +11,8 @@ function x = umfpack_btf (A, b, Control) % % See also: umfpack, umfpack_factorize, umfpack_details, dmperm -% UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. -% Davis. All Rights Reserved. Type umfpack_details for License. +% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. +% All Rights Reserved. Type umfpack_details for License. if (nargin < 2) help umfpack_btf diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_demo.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_demo.m index 422a32ffa1..8a7bd1477f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_demo.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_demo.m @@ -6,8 +6,8 @@ function umfpack_demo % See also umfpack, umfpack_make, umfpack_details, umfpack_report, % and umfpack_simple. -% UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. -% Davis. All Rights Reserved. Type umfpack_details for License. +% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. +% All Rights Reserved. Type umfpack_details for License. %------------------------------------------------------------------------------- % get default control parameters @@ -193,3 +193,10 @@ XM = B'/A ; fprintf ('Difference between UMFPACK and MATLAB solution: %g\n', ... norm (XU - XM, Inf)) ; + +%------------------------------------------------------------------------------- +% compute the determinant +%------------------------------------------------------------------------------- + +fprintf ('\n--------------------------------------------------------------\n') ; +fprintf ('det(A): %g UMFPACK determinant: %g\n', det (A), umfpack (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 10adebe433..cab2e0f0d0 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_demo.m.out +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_demo.m.out @@ -8,19 +8,19 @@ Enter the printing level for UMFPACK's output statistics: Factor and solve a small system, Ax=b, using default parameters Solving Ax=b via UMFPACK: Solving Ax=b via MATLAB: -Difference between UMFPACK and MATLAB solution: 1.24345e-14 +Difference between UMFPACK and MATLAB solution: 0 -------------------------------------------------------------- Factorizing [L, U, P, Q, R] = umfpack (A) P * (R\A) * Q - L*U should be zero: -norm (P*(R\A)*Q - L*U, 1) = 4.2068e-16 (exact) 3.74627e-16 (estimated) +norm (P*(R\A)*Q - L*U, 1) = 6.80012e-16 (exact) 6.80012e-16 (estimated) Solution to Ax=b via UMFPACK factorization: x = Q * (U \ (L \ (P * (R \ b)))) -UMFPACK flop count: 2362 +UMFPACK flop count: 2354 Factorizing [L, U, P] = lu (A (:, q)) If you are using a version of MATLAB prior to V6.0, then the @@ -31,7 +31,7 @@ q = colmmd (A) ; Solution to Ax=b via MATLAB factorization: x = U \ (L \ (P * b)) ; x (q) = x ; -Difference between UMFPACK and MATLAB solution: 1.37668e-14 +Difference between UMFPACK and MATLAB solution: 7.10543e-15 MATLAB LU flop count: 3164 @@ -39,7 +39,7 @@ MATLAB LU flop count: 3164 Solve A'x=b: Solving A'x=b via UMFPACK: Solving A'x=b via MATLAB: -Difference between UMFPACK and MATLAB solution: 3.10862e-15 +Difference between UMFPACK and MATLAB solution: 2.66454e-15 -------------------------------------------------------------- Compute C = A', and compute the LU factorization of C. @@ -48,25 +48,29 @@ 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.31839e-16 (exact) 6.41848e-17 (estimated) +norm (P*(R\C)*Q - L*U, 1) = 1.94289e-16 (exact) 5.55112e-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: 1.77636e-14 +Difference between UMFPACK and MATLAB solution: 7.10543e-15 -------------------------------------------------------------- Solve AX=B, where B is n-by-10, and sparse -Difference between UMFPACK and MATLAB solution: 2.88198e-14 +Difference between UMFPACK and MATLAB solution: 6.72949e-14 -------------------------------------------------------------- Solve AX=B, where B is n-by-10, and sparse, using umfpack_btf -Difference between UMFPACK and MATLAB solution: 9.79736e-14 +Difference between UMFPACK and MATLAB solution: 8.51541e-14 -------------------------------------------------------------- Solve A'X=B, where B is n-by-10, and sparse -Difference between UMFPACK and MATLAB solution: 1.05244e-13 +Difference between UMFPACK and MATLAB solution: 7.99291e-14 + +-------------------------------------------------------------- +det(A): -4.07453e-05 UMFPACK determinant: -4.07453e-05 +>> >> 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 315de174cc..2039abed09 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.3: details on each usage. +% UMFPACK v4.4: details on each usage. % % 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. @@ -116,23 +116,32 @@ function [out1, out2, out3, out4, out5] = umfpack (in1, in2, in3, in4, in5) % % Prints the current Control settings, and Info % +% det = umfpack (A, 'det') ; +% [det dexp] = umfpack (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. +% % 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 % or amd are used instead. If present, Control is a user-supplied 20-by-1 % array. Control and Info are optional; if Control is not present, defaults % are used. If a Control entry is NaN, then the default is used for that entry. % -% UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. -% Davis. All Rights Reserved. -% +% +% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. +% All Rights Reserved. Type umfpack_details for License. +% % 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 @@ -143,7 +152,7 @@ function [out1, out2, out3, out4, out5] = umfpack (in1, in2, in3, in4, in5) % 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_make, umfpack_report, diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_make.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_make.m index ca239a9fe3..efc34d5858 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_make.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_make.m @@ -3,11 +3,11 @@ function umfpack_make % % Compiles the UMFPACK mexFunction and then runs a simple demo. % -% UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. -% Davis. All Rights Reserved. Type umfpack_details for License. -% % See also: umfpack, umfpack_details, umfpack_report, umfpack_demo, and % umfpack_simple. +% +% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. +% All Rights Reserved. Type umfpack_details for License. help umfpack_make @@ -190,12 +190,12 @@ umfint = { 'analyze', 'apply_order', 'colamd', 'free', 'fsize', ... % 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' } ; + 'order', 'control', 'info', 'valid', 'preprocess' } ; % user-callable umfpack_*.[ch] files (real/complex): user = { 'col_to_triplet', 'defaults', 'free_numeric', ... 'free_symbolic', 'get_numeric', 'get_lunz', ... - 'get_symbolic', 'numeric', 'qsymbolic', ... + 'get_symbolic', 'get_determinant', 'numeric', 'qsymbolic', ... 'report_control', 'report_info', 'report_matrix', ... 'report_numeric', 'report_perm', 'report_status', ... 'report_symbolic', 'report_triplet', ... @@ -220,7 +220,7 @@ end rules = { [mx ' -DDINT'] , [mx ' -DZINT'] } ; kinds = { 'md', 'mz' } ; -for what = 1:2 +for what = 1:2 rule = rules {what} ; kind = kinds {what} ; diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_report.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_report.m index 10d661a1dc..16a85d9437 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_report.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_report.m @@ -20,8 +20,8 @@ function umfpack_report (Control, Info) % See also umfpack, umfpack_make, umfpack_details, % umfpack_demo, and umfpack_simple. -% UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. -% Davis. All Rights Reserved. See ../README for License. +% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. +% All Rights Reserved. Type umfpack_details for License. %------------------------------------------------------------------------------- % get inputs, use defaults if input arguments not present @@ -45,7 +45,7 @@ end % control settings %------------------------------------------------------------------------------- -fprintf ('\nUMFPACK Version 4.3: Control settings:\n\n') ; +fprintf ('\nUMFPACK Version 4.4: 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)) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m index 829b6718a4..83a636aabe 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m @@ -1,16 +1,16 @@ % umfpack_simple: a simple demo of UMFPACK % -% UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. -% Davis. All Rights Reserved. -% +% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. +% All Rights Reserved. Type umfpack_details for License. +% % 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 @@ -21,7 +21,7 @@ % 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 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 6c019147ad..90349e61b9 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m.out +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_simple.m.out @@ -1,18 +1,17 @@ >> umfpack_simple - umfpack_simple: a simple demo of UMFPACK - UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. - Davis. All Rights Reserved. - + UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. + All Rights Reserved. Type umfpack_details for License. + 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 @@ -23,11 +22,13 @@ 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 = diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_solve.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_solve.m index 1a988c5833..56bf6c4fde 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_solve.m +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_solve.m @@ -10,8 +10,8 @@ function x = umfpack_solve (arg1, op, arg2, Control) % See also umfpack, umfpack_make, umfpack_details, umfpack_report, % and umfpack_simple. -% UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. -% Davis. All Rights Reserved. Type umfpack_details for License. +% UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. +% All Rights Reserved. Type umfpack_details for License. %------------------------------------------------------------------------------- % check inputs and get default control parameters @@ -62,7 +62,7 @@ if (op == '\') else - % factorize with UMFPACK and do the forward/back solves in MATLAB + % factorize with UMFPACK and do the forward/back solves in MATLAB [L, U, P, Q, R] = umfpack (A, Control) ; x = Q * (U \ (L \ (P * (R \ b)))) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_test.m b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_test.m new file mode 100644 index 0000000000..3805a63ab8 --- /dev/null +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpack_test.m @@ -0,0 +1,152 @@ +% 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 Version 4.4, Copyright (c) 2005 by Timothy A. Davis. +% All Rights Reserved. Type umfpack_details for License. + +index = UFget ; + +f = find (index.nrows == index.ncols) ; +[ignore, i] = sort (index.nrows (f)) ; +f = f (i) ; + +Control = umfpack ; +Control (1) = 0 ; + +warning ('off', 'all') ; +figure (1) +clf + + +for i = f + + fprintf ('\nmatrix: %s %s %d\n', index.Group{i}, index.Name{i}, index.nrows(i)) ; + + Prob = UFget (i) ; + A = Prob.A ; + n = size (A,1) ; + + b = rand (1,n) ; + c = b' ; + + try + + %----------------------------------------------------------------------- + % symbolic factorization + %----------------------------------------------------------------------- + + [P1, Q1, Fr, Ch, Info] = umfpack (A, 'symbolic') ; + subplot (2,2,1) + spy (A) + title ('A') + + subplot (2,2,2) + treeplot (Fr (1:end-1,2)') ; + title ('supercolumn etree') + + %----------------------------------------------------------------------- + % P(R\A)Q = LU + %----------------------------------------------------------------------- + + [L,U,P,Q,R,Info] = umfpack (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)) ; + + subplot (2,2,3) + spy (P*A*Q) + title ('PAQ') ; + + cs = Info (57) ; + rs = Info (58) ; + + subplot (2,2,4) + hold off + spy (L|U) + hold on + if (cs > 0) + plot ([0 cs n n 0] + .5, [0 cs cs 0 0]+.5, 'c') ; + end + if (rs > 0) + plot ([0 rs rs 0 0] + cs +.5, [cs cs+rs n n cs]+.5, 'r') ; + end + + title ('LU factors') + drawnow + + %----------------------------------------------------------------------- + % PAQ = LU + %----------------------------------------------------------------------- + + [L,U,P,Q] = umfpack (A) ; + err = lu_normest (P*A*Q, L, U) ; + fprintf ('norm est PAQ-LU: %g relative: %g\n', ... + err, err / norm (A,1)) ; + + %----------------------------------------------------------------------- + % solve + %----------------------------------------------------------------------- + + x1 = b/A ; + y1 = A\c ; + m1 = norm (b-x1*A) ; + m2 = norm (A*y1-c) ; + + % factor the transpose + Control (8) = 2 ; + [x, info] = umfpack (A', '\', c, Control) ; + lunz0 = info (44) + info (45) - info (67) ; + r = norm (A'*x-c) ; + + fprintf (':: %8.2e matlab: %8.2e %8.2e\n', r, m1, m2) ; + + % factor the original matrix and solve xA=b + for ir = 0:4 + Control (8) = ir ; + [x, info] = umfpack (b, '/', A, Control) ; + r = norm (b-x*A) ; + if (ir == 0) + lunz1 = info (44) + info (45) - info (67) ; + end + fprintf ('%d: %8.2e %d %d\n', ir, r, info (81), info (82)) ; + end + + % factor the original matrix and solve Ax=b + for ir = 0:4 + Control (8) = ir ; + [x, info] = umfpack (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', ... + lunz0, lunz1, lunz0 / lunz1) ; + + %----------------------------------------------------------------------- + % get the determinant + %----------------------------------------------------------------------- + + det1 = det (A) ; + det2 = umfpack (A, 'det') ; + [det3 dexp3] = umfpack (A, 'det') ; + err = abs (det1-det2) ; + err3 = abs (det1 - (det3 * 10^dexp3)) ; + denom = det1 ; + if (denom == 0) + denom = 1 ; + 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 ('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 8e64a7e422..23dad00431 100644 --- a/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpackmex.c +++ b/deal.II/contrib/umfpack/UMFPACK/MATLAB/umfpackmex.c @@ -3,13 +3,10 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ -/* Minor revision, Aug 13, 2003 (version 4.1.1). Removed call to spparms. */ -/* -------------------------------------------------------------------------- */ /* MATLAB interface for umfpack. @@ -21,10 +18,6 @@ L is unit lower triangular, U is upper triangular, and R is diagonal. P and Q are permutation matrices (permutations of an identity matrix). - This has changed since v4.0. The outputs P and Q are returned as - permutation matrices instead of permutation vectors, and the row scale - factor r is also returned. v4.0 did not scale the matrix. - The matrix A is scaled, by default. Each row i is divided by r (i), where r (i) is the sum of the absolute values of the entries in that row. The scaled matrix has an infinity norm of 1. The scale factors r (i) are @@ -46,7 +39,7 @@ returns LU factors such that L*U = P*A*Q, with no scaling. - See umfpack.m and umfpack.h for details. + See umfpack.m, umfpack_details.m, and umfpack.h for details. Note that this mexFunction accesses only the user-callable UMFPACK routines. Thus, is also provides another example of how user C code can access @@ -64,7 +57,12 @@ factorizing A, and then solving via the transposed L and U matrices. The solution is still x = (A.'\b.').', except that A is factorized instead of A.'. + + 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. */ +#define NO_TRANSPOSE_FORWARD_SLASH /* default has changed for v4.3.1 */ #include "umfpack.h" #include "mex.h" @@ -144,6 +142,9 @@ void mexFunction /* local variables */ /* ---------------------------------------------------------------------- */ + 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 ; void *Symbolic, *Numeric ; int *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, @@ -151,10 +152,7 @@ void mexFunction nfronts, nchains, *Ltp, *Ltj, *Qinit, print_level, status2, no_scale, *Front_1strow, *Front_leftmostdesc, n_row, n_col, n_inner, sys, ignore1, ignore2, ignore3, A_is_complex, B_is_complex, X_is_complex, - *Pp, *Pi, *Qp, *Qi, do_recip ; - double *Lx, *Lz, *Ux, *Uz, *Ax, *Az, *Bx, *Bz, *Xx, *Xz, *User_Control, - *p, *q, Info [UMFPACK_INFO], Control [UMFPACK_CONTROL], *OutInfo, - *p1, *p2, *p3, *p4, *Ltx, *Ltz, *Rs, *Px, *Qx ; + *Pp, *Pi, *Qp, *Qi, do_recip, do_det ; mxArray *Amatrix, *Bmatrix, *User_Control_matrix, *User_Qinit ; char *operator, *operation ; mxComplexity Atype, Xtype ; @@ -177,6 +175,7 @@ void mexFunction do_numeric = TRUE ; transpose = FALSE ; no_scale = FALSE ; + do_det = FALSE ; /* find the operator */ op = 0 ; @@ -312,6 +311,27 @@ void mexFunction mexErrMsgTxt ("wrong number of arguments") ; } + } + else if (STRING_MATCH (operator, "det")) + { + + /* -------------------------------------------------------------- */ + /* compute the determinant */ + /* -------------------------------------------------------------- */ + + /* + * [det] = umfpack (A, 'det') ; + * [dmantissa dexp] = umfpack (A, 'det') ; + */ + + operation = "determinant" ; + do_det = TRUE ; + Amatrix = (mxArray *) pargin [0] ; + if (nargin > 2 || nargout > 2) + { + mexErrMsgTxt ("wrong number of arguments") ; + } + } else { @@ -741,7 +761,7 @@ void mexFunction } /* ------------------------------------------------------------------ */ - /* return the solution or the factorization */ + /* return the solution, determinant, or the factorization */ /* ------------------------------------------------------------------ */ if (do_solve) @@ -923,6 +943,66 @@ void mexFunction } } + } + else if (do_det) + { + + /* -------------------------------------------------------------- */ + /* get the determinant */ + /* -------------------------------------------------------------- */ + + if (nargout == 2) + { + /* [det dexp] = umfpack (A, 'det') ; + * return determinant in the form det * 10^dexp */ + p = &dexp ; + } + else + { + /* [det] = umfpack (A, 'det') ; + * return determinant as a single scalar (overflow or + * underflow is much more likely) */ + p = (double *) NULL ; + } + if (A_is_complex) + { + status = umfpack_zi_get_determinant (&dx, &dz, p, + Numeric, Info) ; + umfpack_zi_free_numeric (&Numeric) ; + } + else + { + status = umfpack_di_get_determinant (&dx, p, + Numeric, Info) ; + umfpack_di_free_numeric (&Numeric) ; + dz = 0 ; + } + if (status < 0) + { + error ("extracting LU factors failed", A_is_complex, nargout, + pargout, Control, Info, status, do_info) ; + } + if (A_is_complex) + { + pargout [0] = mxCreateDoubleMatrix (1, 1, mxCOMPLEX) ; + p = mxGetPr (pargout [0]) ; + *p = dx ; + p = mxGetPi (pargout [0]) ; + *p = dz ; + } + else + { + pargout [0] = mxCreateDoubleMatrix (1, 1, mxREAL) ; + p = mxGetPr (pargout [0]) ; + *p = dx ; + } + if (nargout == 2) + { + pargout [1] = mxCreateDoubleMatrix (1, 1, mxREAL) ; + p = mxGetPr (pargout [1]) ; + *p = dexp ; + } + } else { diff --git a/deal.II/contrib/umfpack/UMFPACK/README b/deal.II/contrib/umfpack/UMFPACK/README.txt similarity index 93% rename from deal.II/contrib/umfpack/UMFPACK/README rename to deal.II/contrib/umfpack/UMFPACK/README.txt index ff39cb6f17..e601f38e5f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/README +++ b/deal.II/contrib/umfpack/UMFPACK/README.txt @@ -1,4 +1,4 @@ -UMFPACK Version 4.3: a set of routines solving sparse linear systems via LU +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 @@ -26,7 +26,7 @@ Quick start (for MATLAB users): -------------------------------------------------------------------------------- -UMFPACK Version 4.3 (Jan. 16, 2003), Copyright (c) 2003 by Timothy A. +UMFPACK Version 4.4 (Jan. 28, 2005), Copyright (c) 2005 by Timothy A. Davis. All Rights Reserved. UMFPACK License: @@ -61,16 +61,17 @@ Availability: (http://www.mathworks.com). COLAMD V1.0 appears as a column-preordering in SuperLU (SuperLU is available at http://www.netlib.org). UMFPACK v4.0 is a built-in routine in MATLAB 6.5. + UMFPACK v4.3 is a built-in routine in MATLAB 7.1. -------------------------------------------------------------------------------- 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.3 can use either AMD v1.0 or v1.1. +UMFPACK v4.4 can use either AMD v1.0 or v1.1. -------------------------------------------------------------------------------- -This is the UMFPACK README file. It is a terse overview of UMFPACK. +This is the UMFPACK README.txt file. It is a terse overview of UMFPACK. Refer to the User Guide (Doc/UserGuide.pdf) for how to install and use UMFPACK, or to the Quick Start Guide, QuickStart.pdf. @@ -124,6 +125,9 @@ Acknowledgements: Anderson also incorporated UMFPACK v4.0 into MATLAB, for lu, backslash (\), and forward slash (/). + David Bateman (Motorola) wrote the initial version of the packed complex + input option, and umfpack_get_determinant. + -------------------------------------------------------------------------------- Files and directories in the UMFPACK distribution: -------------------------------------------------------------------------------- @@ -147,7 +151,7 @@ Files and directories in the UMFPACK 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 @@ -182,9 +186,12 @@ Files and directories in the UMFPACK distribution: umfpack_defaults.c set Control defaults umfpack_free_numeric.c free Numeric object umfpack_free_symbolic.c free Symbolic object + umfpack_get_determinant.c compute determinant from Numeric object umfpack_get_lunz.c get nz's in L and U umfpack_get_numeric.c get Numeric object umfpack_get_symbolic.c get Symbolic object + umfpack_load_numeric.c load Numeric object from file + umfpack_load_symbolic.c load Symbolic object from file umfpack_numeric.c numeric factorization umfpack_qsymbolic.c symbolic factorization, user Q umfpack_report_control.c print Control settings @@ -196,6 +203,8 @@ Files and directories in the UMFPACK distribution: umfpack_report_symbolic.c print Symbolic object umfpack_report_triplet.c print triplet matrix umfpack_report_vector.c print dense vector + umfpack_save_numeric.c save Numeric object to file + umfpack_save_symbolic.c save Symbolic object to file umfpack_scale.c scale a vector umfpack_solve.c solve a linear system umfpack_symbolic.c symbolic factorization @@ -270,9 +279,12 @@ Files and directories in the UMFPACK distribution: umfpack_defaults.h umfpack_free_numeric.h umfpack_free_symbolic.h + umfpack_get_determinant.h umfpack_get_lunz.h umfpack_get_numeric.h umfpack_get_symbolic.h + umfpack_load_numeric.h + umfpack_load_symbolic.h umfpack_numeric.h umfpack_qsymbolic.h umfpack_report_control.h @@ -284,6 +296,8 @@ Files and directories in the UMFPACK distribution: umfpack_report_symbolic.h umfpack_report_triplet.h umfpack_report_vector.h + umfpack_save_numeric.h + umfpack_save_symbolic.h umfpack_scale.h umfpack_solve.h umfpack_symbolic.h @@ -291,6 +305,7 @@ Files and directories in the UMFPACK distribution: umfpack_timer.h umfpack_transpose.h umfpack_triplet_to_col.h + umfpack_wsolve.h note that there is no umfpack_wsolve.c. The umfpack_*_wsolve routines are created from the umfpack_solve.c file. @@ -335,12 +350,14 @@ Files and directories in the UMFPACK distribution: umf4_f77zwrapper.c a simple FORTRAN interface for the complex UMFPACK routines. compile with "make fortran" umf4zhb.f a demo of the FORTRAN interface (complex) - umf4zhb.out output of umf4zhb with Bai/qc324.cua, which is - not included in this distribution, see - http://www.cise.ufl.edu/research/sparse/matrices + umf4zhb.out output of umf4zhb with HB/qc324.cua umf4hb64.f 64-bit version of umf4hb.f + simple_compile a single command that compiles the double/int + version of UMFPACK (useful prototype for + Microsoft Visual Studio project) + ---------------------------------------------------------------------------- MATLAB directory: ---------------------------------------------------------------------------- @@ -349,18 +366,19 @@ Files and directories in the UMFPACK distribution: GNUmakefile a nice Makefile, for GNU make Makefile an ugly Unix Makefile (for older make's) + lu_normest.m 1-norm estimate of A-L*U (by Hager & Davis). luflop.m for "help luflop" luflopmex.c luflop mexFunction, for computing LU flop count - lu_normest.m 1-norm estimate of A-L*U (by Hager & Davis). + umfpack.m for "help umfpack" umfpack_btf.m solve Ax=b using umfpack and dmperm umfpack_demo.m a full umfpack demo umfpack_details.m the details of how to use umfpack - umfpack.m for "help umfpack" umfpack_make.m compile the umfpack mexFunction within MATLAB - umfpackmex.c the umfpack mexFunction umfpack_report.m report statistics umfpack_simple.m a simple umfpack demo umfpack_solve.m x=A\b or b/A for arbitrary b + umfpack_test.m extensive test, requires UF sparse matrices + umfpackmex.c the umfpack mexFunction west0067.mat sparse matrix for umfpack_demo.m umfpack_demo.m.out output of umfpack_demo.m diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.c index e3111a7542..0e0b8a311d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -422,12 +421,13 @@ GLOBAL void UMF_2by2 /* local variables */ /* ---------------------------------------------------------------------- */ + Entry aij ; + double cmax, value, rs, ctol, dvalue ; Int k, p, row, col, do_values, do_sum, do_max, do_scale, nweak, weak, p1, p2, dfound, unmatched, n2, oldrow, newrow, oldcol, newcol, pp ; - - double cmax, value, rs, ctol, dvalue ; - Entry aij ; - +#ifdef COMPLEX + Int split = SPLIT (Az) ; +#endif #ifndef NRECIPROCAL Int do_recip = FALSE ; #endif @@ -448,12 +448,7 @@ GLOBAL void UMF_2by2 /* use the values, but only if they are present */ /* ignore the values if tol <= 0 */ - do_values = (tol > 0) - && (Ax != (double *) NULL) -#ifdef COMPLEX - && (Az != (double *) NULL) -#endif - ; + do_values = (tol > 0) && (Ax != (double *) NULL) ; if (do_values && (Rs != (double *) NULL)) { do_sum = (scale == UMFPACK_SCALE_SUM) ; @@ -490,7 +485,7 @@ GLOBAL void UMF_2by2 for (p = Ap [col] ; p < p2 ; p++) { row = Ai [p] ; - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; APPROX_ABS (value, aij) ; rs = Rs [row] ; if (!SCALAR_IS_NAN (rs)) @@ -601,7 +596,7 @@ GLOBAL void UMF_2by2 newrow = InvRperm1 [oldrow] - n1 ; ASSERT (newrow >= -n1 && newrow < n2) ; if (newrow < 0) continue ; - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; APPROX_ABS (value, aij) ; /* if either cmax or value is NaN, define cmax as NaN */ if (!SCALAR_IS_NAN (cmax)) @@ -635,7 +630,7 @@ GLOBAL void UMF_2by2 newrow = InvRperm1 [oldrow] - n1 ; ASSERT (newrow >= -n1 && newrow < n2) ; if (newrow < 0) continue ; - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; APPROX_ABS (value, aij) ; value *= Rs [oldrow] ; /* if either cmax or value is NaN, define cmax as NaN */ @@ -670,7 +665,7 @@ GLOBAL void UMF_2by2 newrow = InvRperm1 [oldrow] - n1 ; ASSERT (newrow >= -n1 && newrow < n2) ; if (newrow < 0) continue ; - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; APPROX_ABS (value, aij) ; value /= Rs [oldrow] ; /* if either cmax or value is NaN, define cmax as NaN */ @@ -755,7 +750,7 @@ GLOBAL void UMF_2by2 oldrow = Ai [p] ; newrow = InvRperm1 [oldrow] - n1 ; if (newrow < 0) continue ; - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; APPROX_ABS (value, aij) ; weak = WEAK (value, ctol) ; if (!weak) @@ -775,7 +770,7 @@ GLOBAL void UMF_2by2 oldrow = Ai [p] ; newrow = InvRperm1 [oldrow] - n1 ; if (newrow < 0) continue ; - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; APPROX_ABS (value, aij) ; value *= Rs [oldrow] ; weak = WEAK (value, ctol) ; @@ -796,7 +791,7 @@ GLOBAL void UMF_2by2 oldrow = Ai [p] ; newrow = InvRperm1 [oldrow] - n1 ; if (newrow < 0) continue ; - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; APPROX_ABS (value, aij) ; value /= Rs [oldrow] ; weak = WEAK (value, ctol) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.h index a7bb479af5..4e88d1dced 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_2by2.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 b4da7e291b..34d6b80129 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -29,8 +28,6 @@ #include "umf_internal.h" #include "umf_apply_order.h" -#include "umf_malloc.h" -#include "umf_free.h" #include "umf_fsize.h" /* ========================================================================== */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.h index cb3af8a9fb..a1e0540082 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_analyze.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 88e9b62d68..10b6c4b8c8 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_apply_order.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_apply_order.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 73b63a6945..b8e2ca4921 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_apply_order.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_apply_order.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 1e1b0f224e..335c89048a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -28,12 +27,12 @@ PRIVATE void row_assemble ) { + Entry *S, *Fcblock, *Frow ; Int tpi, e, *E, *Fcpos, *Frpos, *Row_degree, *Row_tuples, *Row_tlen, rdeg0, f, nrows, ncols, *Rows, *Cols, col, ncolsleft, j ; Tuple *tp, *tp1, *tp2, *tpend ; Unit *Memory, *p ; Element *ep ; - Entry *S, *Fcblock, *Frow ; #ifndef FIXQ Int *Col_degree ; @@ -180,12 +179,12 @@ PRIVATE void col_assemble ) { + Entry *S, *Fcblock, *Fcol ; Int tpi, e, *E, *Fcpos, *Frpos, *Row_degree, *Col_tuples, *Col_tlen, cdeg0, f, nrows, ncols, *Rows, *Cols, row, nrowsleft, i ; Tuple *tp, *tp1, *tp2, *tpend ; Unit *Memory, *p ; Element *ep ; - Entry *S, *Fcblock, *Fcol ; #if !defined (FIXQ) || !defined (NDEBUG) Int *Col_degree ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.h index 4cbfc57556..860194aedf 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_assemble.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 acceb5f775..5aab565e2d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.h index 2285d97fdc..86bb8102a2 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_blas3_update.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 cabb7e0239..a570da1065 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_build_tuples.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_build_tuples.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 a4b5ed1e6f..f17e601b30 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_build_tuples.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_build_tuples.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 8a574dd183..252fbfb23f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_colamd.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_colamd.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 b33ebe197d..e40f9c2e8a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_colamd.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_colamd.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 ea4b641418..d73762c434 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_config.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_config.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -256,7 +255,7 @@ about 36 minutes. BE CAREFUL: if you compare the run time of UMFPACK with other sparse matrix packages, be sure to use the same timer. See umfpack_tictoc.c for the timer used internally by UMFPACK. See also - umfpack_timer.c for the timer used in an earlier version of UMFPACK (V4.0). + umfpack_timer.c for the timer used in an earlier version of UMFPACK. That timer is still available as a user-callable routine, but it is no longer used internally by UMFPACK. */ 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 48b1d5907c..d6eb1157c8 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_create_element.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.h index 81df97f4d3..c407f1c067 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_create_element.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 9990c2c49b..4f197b9bbd 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -244,13 +243,14 @@ GLOBAL void UMF_dump_rowcol Int check_degree /* true if degree is to be checked */ ) { + Entry value ; + Entry *C ; Int f, nrows, j, jj, len, e, deg, index, n_row, n_col, *Cols, *Rows, nn, dumpdeg, ncols, preve, *E, tpi, *Pattern, approx_deg, not_in_use ; Tuple *tp, *tend ; Element *ep ; Int *Row_tuples, *Row_degree, *Row_tlen ; Int *Col_tuples, *Col_degree, *Col_tlen ; - Entry value, *C ; Unit *p ; Int is_there ; @@ -937,10 +937,13 @@ GLOBAL void UMF_dump_col_matrix ) { Int col, p, p1, p2, row ; +#ifdef COMPLEX + Int split = SPLIT (Az) ; +#endif + if (!Ai || !Ap) return ; DEBUG6 (("============================================ COLUMN FORM:\n")) ; - ASSERT (n_col >= 0) ; nz = Ap [n_col] ; DEBUG2 (("UMF_dump_col: nz "ID"\n", nz)) ; @@ -965,13 +968,13 @@ GLOBAL void UMF_dump_col_matrix if (Ax != (double *) NULL) { #ifdef COMPLEX - if (Az != (double *) NULL) + if (split) { DEBUG6 ((" (%e+%ei) ", Ax [p], Az [p])) ; } else { - DEBUG6 ((" %e", Ax [p])) ; + DEBUG6 ((" (%e+%ei) ", Ax [2*p], Ax [2*p+1])) ; } #else DEBUG6 ((" %e", Ax [p])) ; @@ -1045,6 +1048,8 @@ GLOBAL void UMF_dump_start { FILE *ff ; + AMD_debug_init ("from umfpack") ; + /* get the debug print level from the "debug.umf" file, if it exists */ UMF_debug = -999 ; ff = fopen ("debug.umf", "r") ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.h index de220f37a1..71f11128fe 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_dump.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.c index 7c14b4648a..9a61fcc324 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -127,8 +126,8 @@ GLOBAL Int UMF_extend_front if (Work->do_grow) { - fnr2 = (Int) (UMF_FRONTAL_GROWTH * Work->fnrows_new + 2) ; - fnc2 = (Int) (UMF_FRONTAL_GROWTH * Work->fncols_new + 2) ; + fnr2 = UMF_FRONTAL_GROWTH * Work->fnrows_new + 2 ; + fnc2 = UMF_FRONTAL_GROWTH * Work->fncols_new + 2 ; if (!UMF_grow_front (Numeric, fnr2, fnc2, Work, 1)) { DEBUGm4 (("out of memory: extend front\n")) ; 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 45e3d47500..afccb8444f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_extend_front.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 5f74ae97ba..c1e02beca4 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.h index b2bf660d2c..f5987312f7 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_free.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 ceaf648b2b..c7f6056f65 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_fsize.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_fsize.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 cef2ad9878..757cbf38db 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_fsize.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_fsize.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 abaf180f5d..b4188823ea 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_garbage_collection.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_garbage_collection.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 29d9186cf7..6445bfdd8c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_garbage_collection.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_garbage_collection.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 480288b2df..abe201613c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_get_memory.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_get_memory.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -34,10 +33,10 @@ GLOBAL Int UMF_get_memory Int do_Fcpos ) { + double nsize, bsize, tsize ; Int i, minsize, newsize, newmem, costly, row, col, *Row_tlen, *Col_tlen, n_row, n_col, *Row_degree, *Col_degree ; Unit *mnew, *p ; - double nsize, bsize, tsize ; /* ---------------------------------------------------------------------- */ /* get and check parameters */ 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 754f1faced..4b5bb3e710 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_get_memory.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_get_memory.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 90f1ad02e7..8a7a01e777 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_grow_front.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_grow_front.c @@ -3,16 +3,14 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ /* Current frontal matrix is too small. Make it bigger. */ #include "umf_internal.h" -#include "umf_realloc.h" #include "umf_mem_free_tail_block.h" #include "umf_mem_alloc_tail_block.h" #include "umf_get_memory.h" @@ -33,11 +31,11 @@ GLOBAL Int UMF_grow_front /* local variables */ /* ---------------------------------------------------------------------- */ + double s ; Entry *Fcold, *Fcnew ; Int j, i, col, *Fcpos, *Fcols, fnrows_max, fncols_max, fnr_curr, nb, fnrows_new, fncols_new, fnr_min, fnc_min, minsize, newsize, fnrows, fncols, *E, eloc ; - double s ; /* ---------------------------------------------------------------------- */ /* get parameters */ @@ -115,8 +113,8 @@ GLOBAL Int UMF_grow_front /* the desired front size is bigger than the integer maximum */ /* compute a such that a*a*s < Int_MAX / sizeof (Entry) */ double a = 0.9 * sqrt ((Int_MAX / sizeof (Entry)) / s) ; - fnr2 = (Int) MAX (fnr_min, a * fnr2) ; - fnc2 = (Int) MAX (fnc_min, a * fnc2) ; + fnr2 = MAX (fnr_min, a * fnr2) ; + fnc2 = MAX (fnc_min, a * fnc2) ; /* the new frontal size is a*r*a*c = a*a*s */ newsize = fnr2 * fnc2 ; ASSERT (fnr2 >= 0) ; @@ -188,8 +186,8 @@ GLOBAL Int UMF_grow_front /* try again with something smaller */ while ((fnr2 != fnr_min || fnc2 != fnc_min) && !eloc) { - fnr2 = (Int) MIN (fnr2 - 2, fnr2 * UMF_REALLOC_REDUCTION) ; - fnc2 = (Int) MIN (fnc2 - 2, fnc2 * UMF_REALLOC_REDUCTION) ; + fnr2 = MIN (fnr2 - 2, fnr2 * UMF_REALLOC_REDUCTION) ; + fnc2 = MIN (fnc2 - 2, fnc2 * UMF_REALLOC_REDUCTION) ; ASSERT (fnr_min >= 0) ; ASSERT (fnr_min % 2 == 1) ; fnr2 = MAX (fnr_min, fnr2) ; 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 2f27fe52d3..b95be62e1e 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_grow_front.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_grow_front.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 ec40ed806b..e9fab62236 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_init_front.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_init_front.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -65,8 +64,8 @@ GLOBAL Int UMF_init_front #endif if (Work->do_grow) { - fnr2 = (Int) (UMF_FRONTAL_GROWTH * Work->fnrows_new + 2) ; - fnc2 = (Int) (UMF_FRONTAL_GROWTH * Work->fncols_new + 2) ; + fnr2 = UMF_FRONTAL_GROWTH * Work->fnrows_new + 2 ; + fnc2 = UMF_FRONTAL_GROWTH * Work->fncols_new + 2 ; if (!UMF_grow_front (Numeric, fnr2, fnc2, Work, Work->pivrow_in_front ? 2 : 0)) { 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 96a77ab66d..67039cb2de 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_init_front.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_init_front.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 f4e26c2f80..5a0e3014d9 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_internal.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_internal.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -16,6 +15,9 @@ file names and routine names all start with "umf_". */ +#ifndef _UMF_INTERNAL +#define _UMF_INTERNAL + /* -------------------------------------------------------------------------- */ /* ANSI standard include files */ /* -------------------------------------------------------------------------- */ @@ -747,10 +749,12 @@ 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 ; +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 #endif + +#endif 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 845ece2ac0..77ae6ccbe5 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_is_permutation.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_is_permutation.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 386604b2f5..a9ed1dc58a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_is_permutation.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_is_permutation.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 7e433f1653..cd1fa5bdad 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 3f64436204..912e7f3567 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 a1f0b97068..fec1650d6d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_init.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_init.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -28,7 +27,6 @@ #include "umf_mem_alloc_head_block.h" #include "umf_mem_alloc_tail_block.h" #include "umf_mem_free_tail_block.h" -#include "umf_free.h" #include "umf_scale.h" /* ========================================================================== */ @@ -49,9 +47,10 @@ PRIVATE Int packsp /* returns new value of pnew */ Unit *Memory /* contains the sparse vector on input and output */ ) { - Entry x, *Bx, *Bx2 ; - Int p, i, len, len_new, *Bi, *Bi2 ; + Entry x ; double s ; + Entry *Bx, *Bx2 ; + Int p, i, len, len_new, *Bi, *Bi2 ; /* get the pointers to the sparse vector, and its length */ p = *p_p ; @@ -154,6 +153,10 @@ GLOBAL Int UMF_kernel_init /* local variables */ /* ---------------------------------------------------------------------- */ + Entry x, pivot_value ; + double unused = 0, rsmin, rsmax, rs, droptol ; + Entry *D, *C, *Lval, **Rpx ; + double *Rs ; Int row, k, oldcol, size, e, p1, p2, p, nz, *Rows, *Cols, *E, i, *Upos, *Lpos, n_row, n_col, *Wp, *Cperm_init, *Frpos, *Fcpos, *Row_degree, nn, *Row_tlen, *Col_degree, *Col_tlen, oldrow, newrow, ilast, *Wrp, @@ -162,11 +165,11 @@ GLOBAL Int UMF_kernel_init *Lip, *Uip, *Lilen, *Uilen, llen, pa, *Cdeg, *Rdeg, n1, clen, do_scale, lnz, unz, lip, uip, k1, *Rperm, *Cperm, pivcol, *Li, lilen, drop, **Rpi, nempty_row, dense_row_threshold, empty_elements, rpi, rpx ; - double unused = 0, *Rs, rsmin, rsmax, rs, droptol ; - Entry *D, *C, x, *Lval, pivot_value, **Rpx ; Element *ep ; Unit *Memory ; - +#ifdef COMPLEX + Int split = SPLIT (Az) ; +#endif #ifndef NRECIPROCAL Int do_recip = FALSE ; #endif @@ -370,8 +373,8 @@ GLOBAL Int UMF_kernel_init } for (p = p1 ; p < p2 ; p++) { - double value ; Entry aij ; + double value ; row = Ai [p] ; if (row <= ilast || row >= n_row) { @@ -379,7 +382,7 @@ GLOBAL Int UMF_kernel_init DEBUGm4 (("invalid matrix (Ai)\n")) ; return (FALSE) ; } - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; APPROX_ABS (value, aij) ; rs = Rs [row] ; if (!SCALAR_IS_NAN (rs)) @@ -669,7 +672,7 @@ GLOBAL Int UMF_kernel_init { oldrow = Ai [pa] ; newrow = Frpos [oldrow] ; - ASSIGN (x, Ax [pa], Az [pa]) ; + ASSIGN (x, Ax, Az, pa, split) ; /* scale the value using the scale factors, Rs */ if (do_scale) @@ -677,7 +680,7 @@ GLOBAL Int UMF_kernel_init #ifndef NRECIPROCAL if (do_recip) { - SCALE_RECIP (x, Rs [oldrow]) ; + SCALE (x, Rs [oldrow]) ; } else #endif @@ -790,7 +793,7 @@ GLOBAL Int UMF_kernel_init { oldrow = Ai [pa] ; newrow = Frpos [oldrow] ; - ASSIGN (x, Ax [pa], Az [pa]) ; + ASSIGN (x, Ax, Az, pa, split) ; /* scale the value using the scale factors, Rs */ if (do_scale) @@ -799,7 +802,7 @@ GLOBAL Int UMF_kernel_init if (do_recip) { /* multiply by the reciprocal */ - SCALE_RECIP (x, Rs [oldrow]) ; + SCALE (x, Rs [oldrow]) ; } else #endif @@ -910,15 +913,15 @@ GLOBAL Int UMF_kernel_init { /* :: pattern change (dense row too short) :: */ DEBUGm4 (("bad dense row (too short)\n")) ; - return (FALSE) ; + return (FALSE) ; /* pattern changed */ } } #ifndef NDEBUG if (prefer_diagonal) { - Int *InvCperm, newcol ; Entry aij ; + Int *InvCperm, newcol ; UMF_dump_diagonal_map (Diagonal_map, Diagonal_imap, n1, nn, nempty) ; InvCperm = (Int *) malloc (n_col * sizeof (Int)) ; ASSERT (InvCperm != (Int *) NULL) ; @@ -935,7 +938,7 @@ GLOBAL Int UMF_kernel_init { oldrow = Ai [p] ; newrow = Frpos [oldrow] ; - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; if (newrow == Diagonal_map [newcol]) { DEBUG0 (("old row "ID" col "ID" new row "ID" col "ID, @@ -947,7 +950,7 @@ GLOBAL Int UMF_kernel_init #ifndef NRECIPROCAL if (do_recip) { - SCALE_RECIP (aij, Rs [oldrow]) ; + SCALE (aij, Rs [oldrow]) ; } else #endif 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 67deb41e69..e3d22cf99b 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_init.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_init.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 6b32a1bce0..91b00204d4 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_wrapup.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_wrapup.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -25,12 +24,13 @@ GLOBAL void UMF_kernel_wrapup /* local variables */ /* ---------------------------------------------------------------------- */ + Entry pivot_value ; + double d ; + Entry *D ; Int i, k, col, row, llen, ulen, *ip, *Rperm, *Cperm, *Lilen, npiv, lp, *Uilen, *Lip, *Uip, *Cperm_init, up, pivrow, pivcol, *Lpos, *Upos, *Wr, *Wc, *Wp, *Frpos, *Fcpos, *Row_degree, *Col_degree, *Rperm_init, n_row, n_col, n_inner, zero_pivot, nan_pivot, n1 ; - Entry *D, pivot_value ; - double d ; #ifndef NDEBUG UMF_dump_matrix (Numeric, Work, FALSE) ; 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 4550821eba..2a62d99079 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_wrapup.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_kernel_wrapup.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 7c54cd2aa8..b8a444c536 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_local_search.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_local_search.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -22,12 +21,11 @@ #include "umf_row_search.h" #include "umf_mem_free_tail_block.h" -/* Version 4.1: relaxed amalgamation control parameters are now fixed, and - * cannot be changed via Control [..] settings, as they could in Version 4.0. */ -#define RELAX1 0.25 /* this was UMFPACK_DEFAULT_RELAXED_AMALGAMATION */ -#define SYM_RELAX1 0.0 /* this is new to Version 4.1 */ -#define RELAX2 0.1 /* this was UMFPACK_DEFAULT_RELAXED2_AMALGAMATION */ -#define RELAX3 0.125 /* this was UMFPACK_DEFAULT_RELAXED3_AMALGAMATION */ +/* relaxed amalgamation control parameters are fixed at compile time */ +#define RELAX1 0.25 +#define SYM_RELAX1 0.0 +#define RELAX2 0.1 +#define RELAX3 0.125 /* ========================================================================== */ /* === remove_candidate ===================================================== */ @@ -119,9 +117,9 @@ GLOBAL Int UMF_local_search /* local variables */ /* ---------------------------------------------------------------------- */ + double relax1 ; Entry *Flblock, *Fublock, *Fs, *Fcblock, *C, *Wx, *Wy, *Fu, *Flublock, *Flu ; - double relax1 ; Int pos, nrows, *Cols, *Rows, e, f, status, max_cdeg, fnzeros, nb, j, col, i, row, cdeg_in, rdeg [2][2], fnpiv, nothing [2], new_LUsize, pivrow [2][2], pivcol [2], *Wp, *Fcpos, *Frpos, new_fnzeros, cdeg_out, 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 51ca38bdaa..f5fe61f99e 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_local_search.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_local_search.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 03a84a31e0..8c58c388de 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -22,9 +21,10 @@ GLOBAL double UMF_lsolve Int Pattern [ ] /* a work array of size n */ ) { + Entry xk ; + Entry *xp, *Lval ; Int k, deg, *ip, j, row, *Lpos, *Lilen, *Lip, llen, lp, newLchain, pos, npiv, n1, *Li ; - Entry *xp, xk, *Lval ; /* ---------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.h index 75d6467823..05d630fd73 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_lsolve.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 6011f0c24b..a4b44c9429 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -27,9 +26,10 @@ UMF_ltsolve /* solve L.'x=b (array transpose) */ Int Pattern [ ] /* a work array of size n */ ) { + Entry xk ; + Entry *xp, *Lval ; Int k, deg, *ip, j, row, *Lpos, *Lilen, kstart, kend, *Lip, llen, lp, pos, npiv, n1, *Li ; - Entry *xp, xk, *Lval ; /* ---------------------------------------------------------------------- */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.h index 3b4ad1f53b..22f4352757 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_ltsolve.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 9416435e5e..411e08d282 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -34,8 +33,8 @@ GLOBAL Int UMF_malloc_count = 0 ; #ifdef UMF_TCOV_TEST /* For exhaustive statement coverage testing only! */ -GLOBAL Int umf_fail, umf_fail_lo, umf_fail_hi ; -GLOBAL Int umf_realloc_fail, umf_realloc_lo, umf_realloc_hi ; +GLOBAL int umf_fail, umf_fail_lo, umf_fail_hi ; +GLOBAL int umf_realloc_fail, umf_realloc_lo, umf_realloc_hi ; #endif GLOBAL void *UMF_malloc diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.h index 44529b57c9..edd44ed013 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_malloc.h @@ -1,10 +1,12 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ +#ifndef _UMF_MALLOC +#define _UMF_MALLOC + #if defined (UMF_MALLOC_COUNT) || !defined (NDEBUG) GLOBAL extern Int UMF_malloc_count ; #endif @@ -14,3 +16,5 @@ GLOBAL void *UMF_malloc Int n_objects, size_t size_of_object ) ; + +#endif 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 6eefa35504..74d6ba03ec 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,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 b3886cf396..5482f0b1bf 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,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 9f94c2c775..6db2caaf23 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,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 7217e51049..be882b5c7a 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,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 a6ca5cf7c5..56473675c8 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,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 b0502e0727..1062d2404f 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,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 842d4bca6c..5fac99129f 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,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 87b232bae1..43d136ed21 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,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 5a2310d5d2..37fcc455ff 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,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 8626eeb9ac..1095fdddb6 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,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 new file mode 100644 index 0000000000..f1f3d64edf --- /dev/null +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_multicompile.c @@ -0,0 +1,58 @@ +/* ========================================================================== */ +/* === UMF_multicompile ===================================================== */ +/* ========================================================================== */ + +/* -------------------------------------------------------------------------- */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ +/* web: http://www.cise.ufl.edu/research/sparse/umfpack */ +/* -------------------------------------------------------------------------- */ + +/* This file is not needed if you have the Unix/Linux "make" command for + * compiling UMFPACK. Microsoft Visual Studio cannot be configured to compile + * one file multiple times, with different -D flags. In this case, you can + * use this file instead. To use this file, see the Demo/simple_compile file. + * + * This file includes the following source files: + * + * umf_ltsolve.c + * umf_utsolve.c + * umf_triplet.c + * umf_assemble.c + * umf_store_lu.c + * umfpack_solve.c + * + * This file simply compiles the above files with different pre-#define'd flags, + * by defining the flags and then #include'ing the source files themselves. + * This is a rather unconventional approach, since by convention #include is + * supposed to be used with *.h files not *.c. However, it is one way of + * working around the limitations of Microsoft Visual Studio. + * + * You still need to compile all files separately as well, with none of the + * pre-#define'd terms listed below. + */ + +/* compile the complex conjugate forward/backsolves */ +#define CONJUGATE_SOLVE +#include "umf_ltsolve.c" +#include "umf_utsolve.c" + +/* compile umf_triplet with DO_MAP, DO_VALUES and DO_MAP, and just DO_VALUES */ +#define DO_MAP +#include "umf_triplet.c" +#define DO_VALUES +#include "umf_triplet.c" +#undef DO_MAP +#include "umf_triplet.c" + +/* compile the FIXQ version of umf_assemble */ +#define FIXQ +#include "umf_assemble.c" + +/* compile the DROP version of umf_store_lu */ +#define DROP +#include "umf_store_lu.c" + +/* compile umfpack_wsolve */ +#define WSOLVE +#include "umfpack_solve.c" diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.c index 339705bd61..dc3d33c5d4 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.h index 376de63a3a..88cd8a69f1 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_realloc.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 0f67f3cf4d..659f8bedd5 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_perm.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_perm.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 5fd7a7ab07..b513301fbd 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_perm.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_perm.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 d811d57421..38475b5fc5 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_vector.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_vector.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -19,14 +18,13 @@ PRIVATE void print_value ( Int i, const double Xx [ ], - const double Xz [ ], + const double Xz [ ], /* used for complex case only */ Int scalar /* if true, then print real part only */ ) { - Entry *X, xi ; + Entry xi ; /* if Xz is null, then X is in "merged" format (compatible with Entry, */ /* and ANSI C99 double _Complex type). */ - X = (Entry *) Xx ; PRINTF ((" "ID" :", INDEX (i))) ; if (scalar) { @@ -34,14 +32,7 @@ PRIVATE void print_value } else { - if (Xz != (double *) NULL) - { - ASSIGN (xi, Xx [i], Xz [i]) ; - } - else - { - xi = X [i] ; - } + ASSIGN (xi, Xx, Xz, i, SPLIT (Xz)) ; PRINT_ENTRY (xi) ; } PRINTF (("\n")) ; 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 9ca5ae8197..8d0cba1c1d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_vector.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_report_vector.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 3a73a7252c..14757fb2b7 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_row_search.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_row_search.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 9490c87532..61b64d252e 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_row_search.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_row_search.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 b07654f9db..42966db7dd 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -20,9 +19,9 @@ GLOBAL void UMF_scale Entry X [ ] ) { - Int i ; Entry x ; double s ; + Int i ; /* ---------------------------------------------------------------------- */ /* compute the approximate absolute value of the pivot, and select method */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.h index 74967a064e..1ffd45beec 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 2c47898280..8404f3126f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale_column.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale_column.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -53,11 +52,11 @@ GLOBAL void UMF_scale_column /* local variables */ /* ---------------------------------------------------------------------- */ + Entry pivot_value ; + Entry *Fcol, *Flublock, *Flblock, *Fublock, *Fcblock ; Int k, k1, fnr_curr, fnrows, fncols, *Frpos, *Fcpos, pivrow, pivcol, *Frows, *Fcols, fnc_curr, fnpiv, *Row_tuples, nb, *Col_tuples, *Rperm, *Cperm, fspos, col2, row2 ; - Entry pivot_value, *Fcol, - *Flublock, *Flblock, *Fublock, *Fcblock ; #ifndef NDEBUG Int *Col_degree, *Row_degree ; #endif 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 fe383635ed..c949ec9f1b 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale_column.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_scale_column.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 63e51a7bb9..eb0d2dc518 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_set_stats.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_set_stats.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 5b0a6c4cd2..7fadbcb61e 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_set_stats.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_set_stats.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 841edeed03..b63a560768 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -710,6 +709,7 @@ PRIVATE Int finish_permutation { /* this row/col is empty in the pruned submatrix */ ASSERT (s < nx - nempty) ; + DEBUG0 (("empty k "ID"\n", k)) ; nempty++ ; Xperm [nx - nempty] = x ; } @@ -745,6 +745,7 @@ GLOBAL Int UMF_singletons const Int Ap [ ], /* size n_col+1 */ const Int Ai [ ], /* size nz = Ap [n_col] */ const Int Quser [ ], /* size n_col if present */ + Int strategy, /* strategy requested by user */ /* output, not defined on input: */ Int Cdeg [ ], /* size n_col */ @@ -821,9 +822,21 @@ GLOBAL Int UMF_singletons if (Quser != (Int *) NULL) { - /* look for singletons, but respect the user's input permutation */ - n1 = find_user_singletons (n_row, n_col, Ap, Ai, Quser, - Cdeg, Rdeg, Cperm, Rperm, &n1r, &n1c, Rp, Ri, W) ; + /* user has provided an input column ordering */ + if (strategy == UMFPACK_STRATEGY_UNSYMMETRIC) + { + /* look for singletons, but respect the user's input permutation */ + n1 = find_user_singletons (n_row, n_col, Ap, Ai, Quser, + Cdeg, Rdeg, Cperm, Rperm, &n1r, &n1c, Rp, Ri, W) ; + } + else + { + /* do not look for singletons if Quser given and strategy is + * not unsymmetric */ + n1 = 0 ; + n1r = 0 ; + n1c = 0 ; + } } else { @@ -842,8 +855,19 @@ GLOBAL Int UMF_singletons /* eliminate empty rows and complete the row permutation */ /* ---------------------------------------------------------------------- */ - nempty_row = finish_permutation (n1, n_row, Rdeg, (Int *) NULL, Rperm, - &max_rdeg) ; + if (Quser != (Int *) NULL && strategy == UMFPACK_STRATEGY_SYMMETRIC) + { + /* rows should be symmetrically permuted according to Quser */ + ASSERT (n_row == n_col) ; + nempty_row = finish_permutation (n1, n_row, Rdeg, Quser, Rperm, + &max_rdeg) ; + } + else + { + /* rows should not be symmetrically permuted according to Quser */ + nempty_row = finish_permutation (n1, n_row, Rdeg, (Int *) NULL, Rperm, + &max_rdeg) ; + } /* ---------------------------------------------------------------------- */ /* compute the inverse of Rperm */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.h index 460defa95c..d2d420cc4f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_singletons.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -12,6 +11,7 @@ GLOBAL Int UMF_singletons const Int Ap [ ], const Int Ai [ ], const Int Quser [ ], + Int strategy, Int Cdeg [ ], Int Cperm [ ], Int Rdeg [ ], diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.c b/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.c index 8450c40ee8..f670f0ca64 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -74,10 +73,14 @@ GLOBAL Int UMF_solve /* local variables */ /* ---------------------------------------------------------------------- */ + Entry axx, wi, xj, zi, xi, aij, bi ; + double omega [3], d, z2i, yi, flops ; + Entry *W, *Z, *S, *X ; + double *Z2, *Y, *B2, *Rs ; Int *Rperm, *Cperm, i, n, p, step, j, nz, status, p2, do_scale ; - Entry axx, wi, xj, zi, xi, aij, *W, *Z, *S, *X, bi ; - double omega [3], d, *Z2, *Y, z2i, yi, *B2, *Rs, flops ; - +#ifdef COMPLEX + Int split ; +#endif #ifndef NRECIPROCAL Int do_recip = Numeric->do_recip ; #endif @@ -89,9 +92,6 @@ GLOBAL Int UMF_solve #ifndef NDEBUG UMF_dump_lu (Numeric) ; ASSERT (Numeric && Xx && Bx && Pattern && SolveWork && Info) ; -#ifdef COMPLEX - ASSERT (Xz && Bz) ; -#endif #endif nz = 0 ; @@ -134,19 +134,33 @@ GLOBAL Int UMF_solve B2 = (double *) NULL ; #ifdef COMPLEX - X = (Entry *) (SolveWork + 2*n) ; /* Entry X [0..n-1] */ if (irstep > 0) { - if (!Ap || !Ai || !Ax || !Az) + if (!Ap || !Ai || !Ax) { 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) ; 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] */ B2 = (double *) (SolveWork + 9*n) ; /* double B2 [0..n-1] */ Z2 = (double *) Z ; /* double Z2 [0..n-1], equiv. to Z */ } + else + { + /* A is ignored, only look at X and B for split/packed cases */ + split = SPLIT (Bz) && SPLIT (Xz) ; + } + if (split) + { + X = (Entry *) (SolveWork + 2*n) ; /* Entry X [0..n-1] */ + } + else + { + X = (Entry *) Xx ; /* Entry X [0..n-1] */ + } #else X = (Entry *) Xx ; /* Entry X [0..n-1] */ if (irstep > 0) @@ -195,7 +209,7 @@ GLOBAL Int UMF_solve for (p = 0 ; p < p2 ; p++) { /* Y [Ai [p]] += ABS (Ax [p]) ; */ - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; ABS (d, aij) ; Y [Ai [p]] += d ; } @@ -205,7 +219,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* B2 [i] = ABS (B [i]) ; */ - ASSIGN (bi, Bx [i], Bz [i]) ; + ASSIGN (bi, Bx, Bz, i, split) ; ABS (B2 [i], bi) ; } @@ -262,8 +276,8 @@ GLOBAL Int UMF_solve /* multiply by the scale factors */ for (i = 0 ; i < n ; i++) { - ASSIGN (X [i], Bx [i], Bz [i]) ; - SCALE_RECIP (X [i], Rs [i]) ; + ASSIGN (X [i], Bx, Bz, i, split) ; + SCALE (X [i], Rs [i]) ; } } else @@ -272,7 +286,7 @@ GLOBAL Int UMF_solve /* divide by the scale factors */ for (i = 0 ; i < n ; i++) { - ASSIGN (X [i], Bx [i], Bz [i]) ; + ASSIGN (X [i], Bx, Bz, i, split) ; SCALE_DIV (X [i], Rs [i]) ; } } @@ -288,7 +302,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [Rperm [i]] ; */ - ASSIGN (W [i], Bx [Rperm [i]], Bz [Rperm [i]]) ; + ASSIGN (W [i], Bx, Bz, Rperm [i], split) ; } } } @@ -297,7 +311,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* Z [i] = B [i] ; */ - ASSIGN (Z [i], Bx [i], Bz [i]) ; + ASSIGN (Z [i], Bx, Bz, i, split) ; } flops += MULTSUB_FLOPS * nz ; for (i = 0 ; i < n ; i++) @@ -307,7 +321,7 @@ GLOBAL Int UMF_solve for (p = Ap [i] ; p < p2 ; p++) { /* Z [Ai [p]] -= Ax [p] * xi ; */ - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; MULT_SUB (Z [Ai [p]], aij, xi) ; } } @@ -320,7 +334,7 @@ GLOBAL Int UMF_solve /* multiply by the scale factors */ for (i = 0 ; i < n ; i++) { - SCALE_RECIP (Z [i], Rs [i]) ; + SCALE (Z [i], Rs [i]) ; } } else @@ -376,7 +390,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [i] ; */ - ASSIGN (W [i], Bx [i], Bz [i]) ; + ASSIGN (W [i], Bx, Bz, i, split) ; Z2 [i] = 0. ; } flops += (MULT_FLOPS + DECREMENT_FLOPS + ABS_FLOPS + 1) * nz ; @@ -389,7 +403,7 @@ GLOBAL Int UMF_solve i = Ai [p] ; /* axx = Ax [p] * xj ; */ - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; MULT (axx, aij, xj) ; /* W [i] -= axx ; */ @@ -412,7 +426,7 @@ GLOBAL Int UMF_solve /* multiply by the scale factors */ for (i = 0 ; i < n ; i++) { - SCALE_RECIP (W [i], Rs [i]) ; + SCALE (W [i], Rs [i]) ; Z2 [i] *= Rs [i] ; } } @@ -479,7 +493,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 [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; ABS (d, aij) ; yi += (d * Rs [Ai [p]]) ; } @@ -499,7 +513,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 [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; ABS (d, aij) ; yi += (d / Rs [Ai [p]]) ; } @@ -520,7 +534,7 @@ GLOBAL Int UMF_solve /* yi += ABS (Ax [p]) ; */ /* note that abs (aij) is the same as * abs (conj (aij)) */ - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; ABS (d, aij) ; yi += d ; } @@ -532,7 +546,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* B2 [i] = ABS (B [i]) ; */ - ASSIGN (bi, Bx [i], Bz [i]) ; + ASSIGN (bi, Bx, Bz, i, split) ; ABS (B2 [i], bi) ; } @@ -554,7 +568,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [Cperm [i]] ; */ - ASSIGN (W [i], Bx [Cperm [i]], Bz [Cperm [i]]) ; + ASSIGN (W [i], Bx, Bz, Cperm [i], split) ; } } else @@ -563,7 +577,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* Z [i] = B [i] ; */ - ASSIGN (Z [i], Bx [i], Bz [i]) ; + ASSIGN (Z [i], Bx, Bz, i, split) ; } flops += MULTSUB_FLOPS * nz ; for (i = 0 ; i < n ; i++) @@ -573,7 +587,7 @@ GLOBAL Int UMF_solve for (p = Ap [i] ; p < p2 ; p++) { /* zi -= conjugate (Ax [p]) * X [Ai [p]] ; */ - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; MULT_SUB_CONJ (zi, X [Ai [p]], aij) ; } Z [i] = zi ; @@ -608,7 +622,7 @@ GLOBAL Int UMF_solve /* multiply by the scale factors */ for (i = 0 ; i < n ; i++) { - SCALE_RECIP (X [i], Rs [i]) ; + SCALE (X [i], Rs [i]) ; } } else @@ -641,7 +655,7 @@ GLOBAL Int UMF_solve /* multiply by the scale factors */ for (i = 0 ; i < n ; i++) { - SCALE_RECIP (Z [i], Rs [i]) ; + SCALE (Z [i], Rs [i]) ; } } else @@ -660,8 +674,8 @@ GLOBAL Int UMF_solve /* X += Z */ for (i = 0 ; i < n ; i++) { - /* X [i] += W [i] ; */ - ASSEMBLE (X [i], W [i]) ; + /* X [i] += Z [i] ; was +=W[i] in v4.3, which is wrong */ + ASSEMBLE (X [i], Z [i]) ; /* bug fix, v4.3.1 */ } } @@ -682,13 +696,13 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* wi = B [i] ; */ - ASSIGN (wi, Bx [i], Bz [i]) ; + ASSIGN (wi, Bx, Bz, i, split) ; z2i = 0. ; p2 = Ap [i+1] ; for (p = Ap [i] ; p < p2 ; p++) { /* axx = conjugate (Ax [p]) * X [Ai [p]] ; */ - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; MULT_CONJ (axx, X [Ai [p]], aij) ; /* wi -= axx ; */ @@ -752,7 +766,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 [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; ABS (d, aij) ; yi += (d * Rs [Ai [p]]) ; } @@ -772,7 +786,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 [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; ABS (d, aij) ; yi += (d / Rs [Ai [p]]) ; } @@ -793,7 +807,7 @@ GLOBAL Int UMF_solve /* yi += ABS (Ax [p]) */ /* note that A.' is the array transpose, * so no conjugate */ - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; ABS (d, aij) ; yi += d ; } @@ -805,7 +819,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* B2 [i] = ABS (B [i]) ; */ - ASSIGN (bi, Bx [i], Bz [i]) ; + ASSIGN (bi, Bx, Bz, i, split) ; ABS (B2 [i], bi) ; } @@ -827,7 +841,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [Cperm [i]] ; */ - ASSIGN (W [i], Bx [Cperm [i]], Bz [Cperm [i]]) ; + ASSIGN (W [i], Bx, Bz, Cperm [i], split) ; } } else @@ -836,7 +850,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* Z [i] = B [i] ; */ - ASSIGN (Z [i], Bx [i], Bz [i]) ; + ASSIGN (Z [i], Bx, Bz, i, split) ; } flops += MULTSUB_FLOPS * nz ; for (i = 0 ; i < n ; i++) @@ -846,7 +860,7 @@ GLOBAL Int UMF_solve for (p = Ap [i] ; p < p2 ; p++) { /* zi -= Ax [p] * X [Ai [p]] ; */ - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; MULT_SUB (zi, aij, X [Ai [p]]) ; } Z [i] = zi ; @@ -881,7 +895,7 @@ GLOBAL Int UMF_solve /* multiply by the scale factors */ for (i = 0 ; i < n ; i++) { - SCALE_RECIP (X [i], Rs [i]) ; + SCALE (X [i], Rs [i]) ; } } else @@ -914,7 +928,7 @@ GLOBAL Int UMF_solve /* multiply by the scale factors */ for (i = 0 ; i < n ; i++) { - SCALE_RECIP (Z [i], Rs [i]) ; + SCALE (Z [i], Rs [i]) ; } } else @@ -933,8 +947,8 @@ GLOBAL Int UMF_solve /* X += Z */ for (i = 0 ; i < n ; i++) { - /* X [i] += W [i] ; */ - ASSEMBLE (X [i], W [i]) ; + /* X [i] += Z [i] ; was +=W[i] in v4.3, which is wrong */ + ASSEMBLE (X [i], Z [i]) ; /* bug fix, v4.3.1 */ } } @@ -955,13 +969,13 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* wi = B [i] ; */ - ASSIGN (wi, Bx [i], Bz [i]) ; + ASSIGN (wi, Bx, Bz, i, split) ; z2i = 0. ; p2 = Ap [i+1] ; for (p = Ap [i] ; p < p2 ; p++) { /* axx = Ax [p] * X [Ai [p]] ; */ - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, split) ; MULT (axx, aij, X [Ai [p]]) ; /* wi -= axx ; */ @@ -997,7 +1011,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [Rperm [i]] ; */ - ASSIGN (X [i], Bx [Rperm [i]], Bz [Rperm [i]]) ; + ASSIGN (X [i], Bx, Bz, Rperm [i], split) ; } flops = UMF_lsolve (Numeric, X, Pattern) ; status = UMFPACK_OK ; @@ -1013,7 +1027,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [i] ; */ - ASSIGN (X [i], Bx [i], Bz [i]) ; + ASSIGN (X [i], Bx, Bz, i, split) ; } flops = UMF_lsolve (Numeric, X, Pattern) ; status = UMFPACK_OK ; @@ -1029,7 +1043,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [i] ; */ - ASSIGN (W [i], Bx [i], Bz [i]) ; + ASSIGN (W [i], Bx, Bz, i, split) ; } flops = UMF_lhsolve (Numeric, W, Pattern) ; for (i = 0 ; i < n ; i++) @@ -1049,7 +1063,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [i] ; */ - ASSIGN (W [i], Bx [i], Bz [i]) ; + ASSIGN (W [i], Bx, Bz, i, split) ; } flops = UMF_ltsolve (Numeric, W, Pattern) ; for (i = 0 ; i < n ; i++) @@ -1069,7 +1083,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [i] ; */ - ASSIGN (X [i], Bx [i], Bz [i]) ; + ASSIGN (X [i], Bx, Bz, i, split) ; } flops = UMF_lhsolve (Numeric, X, Pattern) ; status = UMFPACK_OK ; @@ -1085,7 +1099,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [i] ; */ - ASSIGN (X [i], Bx [i], Bz [i]) ; + ASSIGN (X [i], Bx, Bz, i, split) ; } flops = UMF_ltsolve (Numeric, X, Pattern) ; status = UMFPACK_OK ; @@ -1101,7 +1115,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* W [i] = B [i] ; */ - ASSIGN (W [i], Bx [i], Bz [i]) ; + ASSIGN (W [i], Bx, Bz, i, split) ; } flops = UMF_usolve (Numeric, W, Pattern) ; for (i = 0 ; i < n ; i++) @@ -1120,7 +1134,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [i] ; */ - ASSIGN (X [i], Bx [i], Bz [i]) ; + ASSIGN (X [i], Bx, Bz, i, split) ; } flops = UMF_usolve (Numeric, X, Pattern) ; @@ -1135,7 +1149,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [Cperm [i]] ; */ - ASSIGN (X [i], Bx [Cperm [i]], Bz [Cperm [i]]) ; + ASSIGN (X [i], Bx, Bz, Cperm [i], split) ; } flops = UMF_uhsolve (Numeric, X, Pattern) ; @@ -1150,7 +1164,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [Cperm [i]] ; */ - ASSIGN (X [i], Bx [Cperm [i]], Bz [Cperm [i]]) ; + ASSIGN (X [i], Bx, Bz, Cperm [i], split) ; } flops = UMF_utsolve (Numeric, X, Pattern) ; @@ -1165,7 +1179,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [i] ; */ - ASSIGN (X [i], Bx [i], Bz [i]) ; + ASSIGN (X [i], Bx, Bz, i, split) ; } flops = UMF_uhsolve (Numeric, X, Pattern) ; @@ -1180,7 +1194,7 @@ GLOBAL Int UMF_solve for (i = 0 ; i < n ; i++) { /* X [i] = B [i] ; */ - ASSIGN (X [i], Bx [i], Bz [i]) ; + ASSIGN (X [i], Bx, Bz, i, split) ; } flops = UMF_utsolve (Numeric, X, Pattern) ; @@ -1192,10 +1206,13 @@ GLOBAL Int UMF_solve #ifdef COMPLEX /* copy the solution back, from Entry X [ ] to double Xx [ ] and Xz [ ] */ - for (i = 0 ; i < n ; i++) + if (split) { - Xx [i] = REAL_COMPONENT (X [i]) ; - Xz [i] = IMAG_COMPONENT (X [i]) ; + for (i = 0 ; i < n ; i++) + { + Xx [i] = REAL_COMPONENT (X [i]) ; + Xz [i] = IMAG_COMPONENT (X [i]) ; + } } #endif diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.h index 35a4867594..d818eb266f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_solve.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 e4eac15091..a994fb605f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_start_front.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_start_front.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -24,9 +23,9 @@ GLOBAL Int UMF_start_front /* returns TRUE if successful, FALSE otherwise */ SymbolicType *Symbolic ) { + double maxbytes ; Int fnrows_max, fncols_max, fnr2, fnc2, fsize, fcurr_size, maxfrsize, overflow, nb, f, cdeg ; - double maxbytes ; nb = Symbolic->nb ; fnrows_max = Symbolic->Chain_maxrows [chain] ; @@ -159,7 +158,7 @@ GLOBAL Int UMF_start_front /* returns TRUE if successful, FALSE otherwise */ if (Numeric->front_alloc_init < 0) { /* allocate a front of -Numeric->front_alloc_init entries */ - fsize = (Int) -Numeric->front_alloc_init ; + fsize = -Numeric->front_alloc_init ; fsize = MAX (1, fsize) ; } else @@ -171,7 +170,7 @@ GLOBAL Int UMF_start_front /* returns TRUE if successful, FALSE otherwise */ } else { - fsize = (Int) (Numeric->front_alloc_init * maxfrsize) ; + fsize = Numeric->front_alloc_init * maxfrsize ; } if (cdeg > 0) 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 5992e73351..fa4b7f188f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_start_front.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_start_front.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 df0c63e094..fcc6c7ec79 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_store_lu.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_store_lu.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -16,7 +15,6 @@ #include "umf_internal.h" #include "umf_mem_alloc_head_block.h" -#include "umf_mem_free_tail_block.h" #include "umf_get_memory.h" /* ========================================================================== */ @@ -35,6 +33,12 @@ GLOBAL Int UMF_store_lu /* local variables */ /* ---------------------------------------------------------------------- */ + Entry pivot_value ; +#ifdef DROP + double droptol ; +#endif + Entry *D, *Lval, *Uval, *Fl1, *Fl2, *Fu1, *Fu2, + *Flublock, *Flblock, *Fublock ; Int i, k, fnr_curr, fnrows, fncols, row, col, pivrow, pivcol, *Frows, *Fcols, *Lpattern, *Upattern, *Lpos, *Upos, llen, ulen, fnc_curr, fnpiv, uilen, lnz, unz, nb, *Lilen, @@ -42,8 +46,6 @@ GLOBAL Int UMF_store_lu pivrow_position, p, size, lip, uip, lnzi, lnzx, unzx, lnz2i, lnz2x, unz2i, unz2x, zero_pivot, *Pivrow, *Pivcol, kk, Lnz [MAXNB] ; - Entry *D, pivot_value, *Lval, *Uval, *Fl1, *Fl2, *Fu1, *Fu2, - *Flublock, *Flblock, *Fublock ; #ifndef NDEBUG Int *Col_degree, *Row_degree ; @@ -51,7 +53,6 @@ GLOBAL Int UMF_store_lu #ifdef DROP Int all_lnz, all_unz ; - double droptol ; droptol = Numeric->droptol ; #endif @@ -94,7 +95,7 @@ GLOBAL Int UMF_store_lu nb = Work->nb ; #ifndef NDEBUG - DEBUG1 (("\n##################################### STORE LU: fnrows "ID + DEBUG1 (("\nSTORE LU: fnrows "ID " fncols "ID"\n", fnrows, fncols)) ; DEBUG2 (("\nFrontal matrix, including all space:\n" @@ -212,8 +213,9 @@ GLOBAL Int UMF_store_lu for (i = kk + 1 ; i < fnpiv ; i++) { + Entry x ; double s ; - Entry x = Fl1 [i] ; + x = Fl1 [i] ; if (IS_ZERO (x)) continue ; all_lnz++ ; APPROX_ABS (s, x) ; @@ -224,8 +226,9 @@ GLOBAL Int UMF_store_lu for (i = 0 ; i < fnrows ; i++) { + Entry x ; double s ; - Entry x = Fl2 [i] ; + x = Fl2 [i] ; if (IS_ZERO (x)) continue ; all_lnz++ ; APPROX_ABS (s, x) ; @@ -384,9 +387,10 @@ GLOBAL Int UMF_store_lu for (i = kk + 1 ; i < fnpiv ; i++) { + Entry x ; double s ; Int row2, pos ; - Entry x = Fl1 [i] ; + x = Fl1 [i] ; APPROX_ABS (s, x) ; if (s <= droptol) continue ; row2 = Pivrow [i] ; @@ -399,9 +403,10 @@ GLOBAL Int UMF_store_lu for (i = 0 ; i < fnrows ; i++) { + Entry x ; double s ; Int row2, pos ; - Entry x = Fl2 [i] ; + x = Fl2 [i] ; APPROX_ABS (s, x) ; if (s <= droptol) continue ; row2 = Frows [i] ; @@ -416,8 +421,9 @@ GLOBAL Int UMF_store_lu for (i = kk + 1 ; i < fnpiv ; i++) { + Entry x ; Int row2, pos ; - Entry x = Fl1 [i] ; + x = Fl1 [i] ; if (IS_ZERO (x)) continue ; row2 = Pivrow [i] ; pos = llen++ ; @@ -429,8 +435,9 @@ GLOBAL Int UMF_store_lu for (i = 0 ; i < fnrows ; i++) { + Entry x ; Int row2, pos ; - Entry x = Fl2 [i] ; + x = Fl2 [i] ; if (IS_ZERO (x)) continue ; row2 = Frows [i] ; pos = llen++ ; @@ -451,9 +458,10 @@ GLOBAL Int UMF_store_lu for (i = kk + 1 ; i < fnpiv ; i++) { + Entry x ; double s ; Int row2, pos ; - Entry x = Fl1 [i] ; + x = Fl1 [i] ; APPROX_ABS (s, x) ; if (s <= droptol) continue ; row2 = Pivrow [i] ; @@ -470,9 +478,10 @@ GLOBAL Int UMF_store_lu for (i = 0 ; i < fnrows ; i++) { + Entry x ; double s ; Int row2, pos ; - Entry x = Fl2 [i] ; + x = Fl2 [i] ; APPROX_ABS (s, x) ; if (s <= droptol) continue ; row2 = Frows [i] ; @@ -491,8 +500,9 @@ GLOBAL Int UMF_store_lu for (i = kk + 1 ; i < fnpiv ; i++) { + Entry x ; Int row2, pos ; - Entry x = Fl1 [i] ; + x = Fl1 [i] ; if (IS_ZERO (x)) continue ; row2 = Pivrow [i] ; pos = Lpos [row2] ; @@ -508,8 +518,9 @@ GLOBAL Int UMF_store_lu for (i = 0 ; i < fnrows ; i++) { + Entry x ; Int row2, pos ; - Entry x = Fl2 [i] ; + x = Fl2 [i] ; if (IS_ZERO (x)) continue ; row2 = Frows [i] ; pos = Lpos [row2] ; @@ -634,8 +645,9 @@ GLOBAL Int UMF_store_lu for (i = kk + 1 ; i < fnpiv ; i++) { + Entry x ; double s ; - Entry x = Fu1 [i*nb] ; + x = Fu1 [i*nb] ; if (IS_ZERO (x)) continue ; all_unz++ ; APPROX_ABS (s, x) ; @@ -646,8 +658,9 @@ GLOBAL Int UMF_store_lu for (i = 0 ; i < fncols ; i++) { + Entry x ; double s ; - Entry x = Fu2 [i] ; + x = Fu2 [i] ; if (IS_ZERO (x)) continue ; all_unz++ ; APPROX_ABS (s, x) ; @@ -849,9 +862,10 @@ GLOBAL Int UMF_store_lu for (i = kk + 1 ; i < fnpiv ; i++) { + Entry x ; double s ; Int col2, pos ; - Entry x = Fu1 [i*nb] ; + x = Fu1 [i*nb] ; APPROX_ABS (s, x) ; if (s <= droptol) continue ; col2 = Pivcol [i] ; @@ -863,9 +877,10 @@ GLOBAL Int UMF_store_lu for (i = 0 ; i < fncols ; i++) { + Entry x ; double s ; Int col2, pos ; - Entry x = Fu2 [i] ; + x = Fu2 [i] ; APPROX_ABS (s, x) ; if (s <= droptol) continue ; col2 = Fcols [i] ; @@ -879,8 +894,9 @@ GLOBAL Int UMF_store_lu for (i = kk + 1 ; i < fnpiv ; i++) { + Entry x ; Int col2, pos ; - Entry x = Fu1 [i*nb] ; + x = Fu1 [i*nb] ; if (IS_ZERO (x)) continue ; col2 = Pivcol [i] ; pos = ulen++ ; @@ -891,8 +907,9 @@ GLOBAL Int UMF_store_lu for (i = 0 ; i < fncols ; i++) { + Entry x ; Int col2, pos ; - Entry x = Fu2 [i] ; + x = Fu2 [i] ; if (IS_ZERO (x)) continue ; col2 = Fcols [i] ; pos = ulen++ ; @@ -915,9 +932,10 @@ GLOBAL Int UMF_store_lu for (i = kk + 1 ; i < fnpiv ; i++) { + Entry x ; double s ; Int col2, pos ; - Entry x = Fu1 [i*nb] ; + x = Fu1 [i*nb] ; APPROX_ABS (s, x) ; if (s <= droptol) continue ; col2 = Pivcol [i] ; @@ -933,9 +951,10 @@ GLOBAL Int UMF_store_lu for (i = 0 ; i < fncols ; i++) { + Entry x ; double s ; Int col2, pos ; - Entry x = Fu2 [i] ; + x = Fu2 [i] ; APPROX_ABS (s, x) ; if (s <= droptol) continue ; col2 = Fcols [i] ; @@ -953,8 +972,9 @@ GLOBAL Int UMF_store_lu for (i = kk + 1 ; i < fnpiv ; i++) { + Entry x ; Int col2, pos ; - Entry x = Fu1 [i*nb] ; + x = Fu1 [i*nb] ; if (IS_ZERO (x)) continue ; col2 = Pivcol [i] ; pos = Upos [col2] ; @@ -969,8 +989,9 @@ GLOBAL Int UMF_store_lu for (i = 0 ; i < fncols ; i++) { + Entry x ; Int col2, pos ; - Entry x = Fu2 [i] ; + x = Fu2 [i] ; if (IS_ZERO (x)) continue ; col2 = Fcols [i] ; pos = Upos [col2] ; 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 142ee5b71d..2541b83c2c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_store_lu.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_store_lu.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 cc8b94a298..cce83651da 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_symbolic_usage.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_symbolic_usage.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 1767c2ce06..ab8bbe1680 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_symbolic_usage.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_symbolic_usage.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 074911939d..47331e9c21 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -61,6 +60,9 @@ GLOBAL Int UMF_transpose /* ---------------------------------------------------------------------- */ Int i, j, k, p, bp, newj, do_values ; +#ifdef COMPLEX + Int split ; +#endif /* ---------------------------------------------------------------------- */ /* check inputs */ @@ -185,16 +187,16 @@ GLOBAL Int UMF_transpose /* ---------------------------------------------------------------------- */ do_values = Ax && Rx ; -#ifdef COMPLEX - do_values = do_values && Az && Rz ; -#endif #ifdef COMPLEX + split = SPLIT (Az) && SPLIT (Rz) ; + if (do_conjugate && do_values) { if (Q != (Int *) NULL) { - + if (split) + { /* R = A (P,Q)' */ for (newj = 0 ; newj < nq ; newj++) { @@ -208,11 +210,28 @@ GLOBAL Int UMF_transpose Rz [bp] = -Az [p] ; } } - + } + else + { + /* R = A (P,Q)' (merged complex values) */ + for (newj = 0 ; newj < nq ; newj++) + { + j = Q [newj] ; + ASSERT (j >= 0 && j < n_col) ; + for (p = Ap [j] ; p < Ap [j+1] ; p++) + { + bp = W [Ai [p]]++ ; + Ri [bp] = newj ; + Rx [2*bp] = Ax [2*p] ; + Rx [2*bp+1] = -Ax [2*p+1] ; + } + } + } } else { - + if (split) + { /* R = A (P,:)' */ for (j = 0 ; j < n_col ; j++) { @@ -224,7 +243,21 @@ GLOBAL Int UMF_transpose Rz [bp] = -Az [p] ; } } - + } + else + { + /* R = A (P,:)' (merged complex values) */ + for (j = 0 ; j < n_col ; j++) + { + for (p = Ap [j] ; p < Ap [j+1] ; p++) + { + bp = W [Ai [p]]++ ; + Ri [bp] = j ; + Rx [2*bp] = Ax [2*p] ; + Rx [2*bp+1] = -Ax [2*p+1] ; + } + } + } } } else @@ -234,27 +267,47 @@ GLOBAL Int UMF_transpose { if (do_values) { - - /* R = A (P,Q).' */ - for (newj = 0 ; newj < nq ; newj++) +#ifdef COMPLEX + if (split) +#endif { - j = Q [newj] ; - ASSERT (j >= 0 && j < n_col) ; - for (p = Ap [j] ; p < Ap [j+1] ; p++) + /* R = A (P,Q).' */ + for (newj = 0 ; newj < nq ; newj++) { - bp = W [Ai [p]]++ ; - Ri [bp] = newj ; - Rx [bp] = Ax [p] ; + j = Q [newj] ; + ASSERT (j >= 0 && j < n_col) ; + for (p = Ap [j] ; p < Ap [j+1] ; p++) + { + bp = W [Ai [p]]++ ; + Ri [bp] = newj ; + Rx [bp] = Ax [p] ; #ifdef COMPLEX - Rz [bp] = Az [p] ; + Rz [bp] = Az [p] ; #endif + } } } - +#ifdef COMPLEX + else + { + /* R = A (P,Q).' (merged complex values) */ + for (newj = 0 ; newj < nq ; newj++) + { + j = Q [newj] ; + ASSERT (j >= 0 && j < n_col) ; + for (p = Ap [j] ; p < Ap [j+1] ; p++) + { + bp = W [Ai [p]]++ ; + Ri [bp] = newj ; + Rx [2*bp] = Ax [2*p] ; + Rx [2*bp+1] = Ax [2*p+1] ; + } + } + } +#endif } else { - /* R = pattern of A (P,Q).' */ for (newj = 0 ; newj < nq ; newj++) { @@ -265,32 +318,49 @@ GLOBAL Int UMF_transpose Ri [W [Ai [p]]++] = newj ; } } - } } else { if (do_values) { - - /* R = A (P,:).' */ - for (j = 0 ; j < n_col ; j++) +#ifdef COMPLEX + if (split) +#endif { - for (p = Ap [j] ; p < Ap [j+1] ; p++) + /* R = A (P,:).' */ + for (j = 0 ; j < n_col ; j++) { - bp = W [Ai [p]]++ ; - Ri [bp] = j ; - Rx [bp] = Ax [p] ; + for (p = Ap [j] ; p < Ap [j+1] ; p++) + { + bp = W [Ai [p]]++ ; + Ri [bp] = j ; + Rx [bp] = Ax [p] ; #ifdef COMPLEX - Rz [bp] = Az [p] ; + Rz [bp] = Az [p] ; #endif + } } } - +#ifdef COMPLEX + else + { + /* R = A (P,:).' (merged complex values) */ + for (j = 0 ; j < n_col ; j++) + { + for (p = Ap [j] ; p < Ap [j+1] ; p++) + { + bp = W [Ai [p]]++ ; + Ri [bp] = j ; + Rx [2*bp] = Ax [2*p] ; + Rx [2*bp+1] = Ax [2*p+1] ; + } + } + } +#endif } else { - /* R = pattern of A (P,:).' */ for (j = 0 ; j < n_col ; j++) { @@ -299,10 +369,8 @@ GLOBAL Int UMF_transpose Ri [W [Ai [p]]++] = j ; } } - } } - } #ifndef NDEBUG diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.h index 0e1aac9c22..354e678283 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_transpose.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 8192af7f2c..8e74bff23f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -13,15 +12,13 @@ Not user callable. Converts triplet input to column-oriented form. Duplicate entries may exist (they are summed in the output). The columns of the column-oriented form are in sorted order. The input is not modified. - Returns 1 if OK, 0 if an error occured. + Returns 1 if OK, 0 if an error occurred. Compiled into four different routines for each version (di, dl, zi, zl), for a total of 16 different routines. */ #include "umf_internal.h" -#include "umf_malloc.h" -#include "umf_free.h" #ifdef DO_MAP #ifdef DO_VALUES @@ -72,6 +69,11 @@ GLOBAL Int UMF_triplet_nomap_nox Int i, j, k, p, cp, p1, p2, pdest, pj ; #ifdef DO_MAP Int duplicates ; +#endif +#ifdef DO_VALUES +#ifdef COMPLEX + Int split = SPLIT (Tz) && SPLIT (Az) && SPLIT (Rz) ; +#endif #endif /* ---------------------------------------------------------------------- */ @@ -98,7 +100,7 @@ GLOBAL Int UMF_triplet_nomap_nox #ifdef DO_VALUES { Entry tt ; - ASSIGN (tt, Tx [k], Tz [k]) ; + ASSIGN (tt, Tx, Tz, k, split) ; EDEBUG2 (tt) ; DEBUG1 (("\n")) ; } @@ -131,9 +133,19 @@ GLOBAL Int UMF_triplet_nomap_nox #endif Rj [p] = Tj [k] ; #ifdef DO_VALUES - Rx [p] = Tx [k] ; #ifdef COMPLEX - Rz [p] = Tz [k] ; + if (split) + { + Rx [p] = Tx [k] ; + Rz [p] = Tz [k] ; + } + else + { + Rx [2*p ] = Tx [2*k ] ; + Rx [2*p+1] = Tx [2*k+1] ; + } +#else + Rx [p] = Tx [k] ; #endif #endif } @@ -206,9 +218,19 @@ GLOBAL Int UMF_triplet_nomap_nox #endif #ifdef DO_VALUES /* sum the entry */ - Rx [pj] += Rx [p] ; #ifdef COMPLEX - Rz [pj] += Rz [p] ; + if (split) + { + Rx [pj] += Rx [p] ; + Rz [pj] += Rz [p] ; + } + else + { + Rx[2*pj ] += Rx[2*p ] ; + Rx[2*pj+1] += Rx[2*p+1] ; + } +#else + Rx [pj] += Rx [p] ; #endif #endif } @@ -225,9 +247,19 @@ GLOBAL Int UMF_triplet_nomap_nox { Rj [pdest] = j ; #ifdef DO_VALUES - Rx [pdest] = Rx [p] ; #ifdef COMPLEX - Rz [pdest] = Rz [p] ; + if (split) + { + Rx [pdest] = Rx [p] ; + Rz [pdest] = Rz [p] ; + } + else + { + Rx [2*pdest ] = Rx [2*p ] ; + Rx [2*pdest+1] = Rx [2*p+1] ; + } +#else + Rx [pdest] = Rx [p] ; #endif #endif } @@ -325,9 +357,19 @@ GLOBAL Int UMF_triplet_nomap_nox #endif Ai [cp] = i ; #ifdef DO_VALUES - Ax [cp] = Rx [p] ; #ifdef COMPLEX - Az [cp] = Rz [p] ; + if (split) + { + Ax [cp] = Rx [p] ; + Az [cp] = Rz [p] ; + } + else + { + Ax [2*cp ] = Rx [2*p ] ; + Ax [2*cp+1] = Rx [2*p+1] ; + } +#else + Ax [cp] = Rx [p] ; #endif #endif } diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.h index 73704e6593..18947d39db 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_triplet.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 6843428d1d..e31e04cf24 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_tuple_lengths.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_tuple_lengths.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -28,9 +27,9 @@ GLOBAL Int UMF_tuple_lengths /* return memory usage */ /* local variables */ /* ---------------------------------------------------------------------- */ + double dusage ; Int e, nrows, ncols, nel, i, *Rows, *Cols, row, col, n_row, n_col, *E, *Row_degree, *Row_tlen, *Col_degree, *Col_tlen, usage, n1 ; - double dusage ; Element *ep ; Unit *p ; 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 6d1560b9b2..8931c47f37 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_tuple_lengths.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_tuple_lengths.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 c292eb4d25..b536d4e93d 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -26,9 +25,10 @@ GLOBAL double UMF_usolve /* local variables */ /* ---------------------------------------------------------------------- */ + Entry xk ; + Entry *xp, *D, *Uval ; Int k, deg, j, *ip, col, *Upos, *Uilen, pos, *Uip, n, ulen, up, newUchain, npiv, n1, *Ui ; - Entry *xp, xk, *D, *Uval ; /* ---------------------------------------------------------------------- */ /* get parameters */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.h index c546111380..d1854b9b72 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_usolve.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 bd7d08e57d..8672084a8e 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -31,9 +30,10 @@ UMF_utsolve /* solve U.'x=b (array transpose) */ /* local variables */ /* ---------------------------------------------------------------------- */ + Entry xk ; + Entry *xp, *D, *Uval ; Int k, deg, j, *ip, col, *Upos, *Uilen, kstart, kend, up, *Uip, n, uhead, ulen, pos, npiv, n1, *Ui ; - Entry *xp, xk, *D, *Uval ; /* ---------------------------------------------------------------------- */ /* get parameters */ diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.h b/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.h index 86ccb40140..4dfdd4a863 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_utsolve.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 58da8ac94b..a0dc93329f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_numeric.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 11895fd12e..dd71f633ea 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_numeric.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_numeric.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 1acc6ac5f1..7115175468 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_symbolic.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 5cada3c146..0653491515 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_symbolic.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_valid_symbolic.h @@ -1,7 +1,6 @@ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 b3c4df09ec..7eb6d6a31b 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umf_version.h +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umf_version.h @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -120,18 +119,17 @@ SCALAR_IS_LTZERO(x): #define Entry double -#define REAL_COMPONENT(c) (c) -#define IMAG_COMPONENT(c) (0.) -#define ASSIGN(c,s1,s2) { (c) = (s1) ; } +#define SPLIT(s) (1) +#define REAL_COMPONENT(c) (c) +#define IMAG_COMPONENT(c) (0.) +#define ASSIGN(c,s1,s2,p,split) { (c) = (s1)[p] ; } #define CLEAR(c) { (c) = 0. ; } #define CLEAR_AND_INCREMENT(p) { *p++ = 0. ; } #define IS_NAN(a) SCALAR_IS_NAN (a) #define IS_ZERO(a) SCALAR_IS_ZERO (a) #define IS_NONZERO(a) SCALAR_IS_NONZERO (a) #define SCALE_DIV(c,s) { (c) /= (s) ; } -#ifndef NRECIPROCAL -#define SCALE_RECIP(c,s) { (c) *= (s) ; } -#endif +#define SCALE(c,s) { (c) *= (s) ; } #define ASSEMBLE(c,a) { (c) += (a) ; } #define ASSEMBLE_AND_INCREMENT(c,p) { (c) += *p++ ; } #define DECREMENT(c,a) { (c) -= (a) ; } @@ -216,11 +214,24 @@ typedef struct /* -------------------------------------------------------------------------- */ -/* c = (s1) + (s2)i */ -#define ASSIGN(c,s1,s2) \ +/* Return TRUE if a complex number is in split form, FALSE if in packed form */ +#define SPLIT(sz) ((sz) != (double *) NULL) + +/* -------------------------------------------------------------------------- */ + +/* c = (s1) + (s2)*i, if s2 is null, then X is in "packed" format (compatible + * with Entry and ANSI C99 double _Complex type). */ +#define ASSIGN(c,s1,s2,p,split) \ { \ - (c).Real = (s1) ; \ - (c).Imag = (s2) ; \ + if (split) \ + { \ + (c).Real = (s1)[p] ; \ + (c).Imag = (s2)[p] ; \ + } \ + else \ + { \ + (c) = ((Entry *)(s1))[p] ; \ + } \ } /* -------------------------------------------------------------------------- */ @@ -271,15 +282,12 @@ typedef struct /* -------------------------------------------------------------------------- */ -/* c *= s, where s is the reciprocal scale factor. Not used if - * NRECIPROCAL is defined at compile time. */ -#ifndef NRECIPROCAL -#define SCALE_RECIP(c,s) \ +/* c *= s */ +#define SCALE(c,s) \ { \ (c).Real *= (s) ; \ (c).Imag *= (s) ; \ } -#endif /* -------------------------------------------------------------------------- */ @@ -603,6 +611,7 @@ typedef struct #define UMFPACK_get_lunz umfpack_di_get_lunz #define UMFPACK_get_numeric umfpack_di_get_numeric #define UMFPACK_get_symbolic umfpack_di_get_symbolic +#define UMFPACK_get_determinant umfpack_di_get_determinant #define UMFPACK_numeric umfpack_di_numeric #define UMFPACK_qsymbolic umfpack_di_qsymbolic #define UMFPACK_report_control umfpack_di_report_control @@ -717,6 +726,7 @@ typedef struct #define UMFPACK_get_lunz umfpack_dl_get_lunz #define UMFPACK_get_numeric umfpack_dl_get_numeric #define UMFPACK_get_symbolic umfpack_dl_get_symbolic +#define UMFPACK_get_determinant umfpack_dl_get_determinant #define UMFPACK_numeric umfpack_dl_numeric #define UMFPACK_qsymbolic umfpack_dl_qsymbolic #define UMFPACK_report_control umfpack_dl_report_control @@ -831,6 +841,7 @@ typedef struct #define UMFPACK_get_lunz umfpack_zi_get_lunz #define UMFPACK_get_numeric umfpack_zi_get_numeric #define UMFPACK_get_symbolic umfpack_zi_get_symbolic +#define UMFPACK_get_determinant umfpack_zi_get_determinant #define UMFPACK_numeric umfpack_zi_numeric #define UMFPACK_qsymbolic umfpack_zi_qsymbolic #define UMFPACK_report_control umfpack_zi_report_control @@ -945,6 +956,7 @@ typedef struct #define UMFPACK_get_lunz umfpack_zl_get_lunz #define UMFPACK_get_numeric umfpack_zl_get_numeric #define UMFPACK_get_symbolic umfpack_zl_get_symbolic +#define UMFPACK_get_determinant umfpack_zl_get_determinant #define UMFPACK_numeric umfpack_zl_numeric #define UMFPACK_qsymbolic umfpack_zl_qsymbolic #define UMFPACK_report_control umfpack_zl_report_control 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 ef27bc2e8d..44d3a3e1bc 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,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 8de4c1b0d0..36cf91a819 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_defaults.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_defaults.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_numeric.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_numeric.c index ec19adfa9d..76f4eb5bcb 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_numeric.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 347727f85f..618ec49178 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_free_symbolic.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 new file mode 100644 index 0000000000..bdfd751fef --- /dev/null +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_determinant.c @@ -0,0 +1,307 @@ +/* ========================================================================== */ +/* === UMFPACK_get_determinant ============================================== */ +/* ========================================================================== */ + +/* -------------------------------------------------------------------------- */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ +/* web: http://www.cise.ufl.edu/research/sparse/umfpack */ +/* -------------------------------------------------------------------------- */ + +/* + User-callable. From the LU factors, scale factor, and permutation vectors + held in the Numeric object, calculates the determinant of the matrix A. + See umfpack_get_determinant.h for a more detailed description. + + Dynamic memory usage: calls UMF_malloc once, for a total space of + n integers, and then frees all of it via UMF_free when done. + + Contributed by David Bateman, Motorola, Nov. 2004. + Modified for V4.4, Jan. 2005. +*/ + +#include "umf_internal.h" +#include "umf_valid_numeric.h" +#include "umf_malloc.h" +#include "umf_free.h" + +/* ========================================================================== */ +/* === rescale_determinant ================================================== */ +/* ========================================================================== */ + +/* If the mantissa is too big or too small, rescale it and change exponent */ + +PRIVATE Int rescale_determinant +( + Entry *d_mantissa, + double *d_exponent +) +{ + double d_abs ; + + ABS (d_abs, *d_mantissa) ; + + if (SCALAR_IS_ZERO (d_abs)) + { + /* the determinant is zero */ + *d_exponent = 0 ; + return (FALSE) ; + } + + if (SCALAR_IS_NAN (d_abs)) + { + /* the determinant is NaN */ + return (FALSE) ; + } + + while (d_abs < 1.) + { + SCALE (*d_mantissa, 10.0) ; + *d_exponent = *d_exponent - 1.0 ; + ABS (d_abs, *d_mantissa) ; + } + + while (d_abs >= 10.) + { + SCALE (*d_mantissa, 0.1) ; + *d_exponent = *d_exponent + 1.0 ; + ABS (d_abs, *d_mantissa) ; + } + + return (TRUE) ; +} + +/* ========================================================================== */ +/* === UMFPACK_get_determinant ============================================== */ +/* ========================================================================== */ + +GLOBAL Int UMFPACK_get_determinant +( + double *Mx, +#ifdef COMPLEX + double *Mz, +#endif + double *Ex, + void *NumericHandle, + double User_Info [UMFPACK_INFO] +) +{ + /* ---------------------------------------------------------------------- */ + /* local variables */ + /* ---------------------------------------------------------------------- */ + + Entry d_mantissa, d_tmp ; + double d_exponent, Info2 [UMFPACK_INFO], one [2] = {1.0, 0.0}, d_sign ; + Entry *D ; + double *Info, *Rs ; + NumericType *Numeric ; + Int i, n, itmp, npiv, *Wi, *Rperm, *Cperm, do_scale ; + +#ifndef NRECIPROCAL + Int do_recip ; +#endif + + /* ---------------------------------------------------------------------- */ + /* check input parameters */ + /* ---------------------------------------------------------------------- */ + + if (User_Info != (double *) NULL) + { + /* return Info in user's array */ + Info = User_Info ; + } + else + { + /* no Info array passed - use local one instead */ + Info = Info2 ; + for (i = 0 ; i < UMFPACK_INFO ; i++) + { + Info [i] = EMPTY ; + } + } + + Info [UMFPACK_STATUS] = UMFPACK_OK ; + + Numeric = (NumericType *) NumericHandle ; + if (!UMF_valid_numeric (Numeric)) + { + Info [UMFPACK_STATUS] = UMFPACK_ERROR_invalid_Numeric_object ; + return (UMFPACK_ERROR_invalid_Numeric_object) ; + } + + if (Numeric->n_row != Numeric->n_col) + { + /* only square systems can be handled */ + Info [UMFPACK_STATUS] = UMFPACK_ERROR_invalid_system ; + return (UMFPACK_ERROR_invalid_system) ; + } + + if (Mx == (double *) NULL) + { + Info [UMFPACK_STATUS] = UMFPACK_ERROR_argument_missing ; + return (UMFPACK_ERROR_argument_missing) ; + } + + n = Numeric->n_row ; + + /* ---------------------------------------------------------------------- */ + /* allocate workspace */ + /* ---------------------------------------------------------------------- */ + + Wi = (Int *) UMF_malloc (n, sizeof (Int)) ; + + if (!Wi) + { + DEBUGm4 (("out of memory: get determinant\n")) ; + Info [UMFPACK_STATUS] = UMFPACK_ERROR_out_of_memory ; + return (UMFPACK_ERROR_out_of_memory) ; + } + + /* ---------------------------------------------------------------------- */ + /* compute the determinant */ + /* ---------------------------------------------------------------------- */ + + Rs = Numeric->Rs ; /* row scale factors */ + do_scale = (Rs != (double *) NULL) ; + +#ifndef NRECIPROCAL + do_recip = Numeric->do_recip ; +#endif + + d_mantissa = ((Entry *) one) [0] ; + d_exponent = 0.0 ; + D = Numeric->D ; + + /* compute product of diagonal entries of U */ + for (i = 0 ; i < n ; i++) + { + MULT (d_tmp, d_mantissa, D [i]) ; + d_mantissa = d_tmp ; + + if (!rescale_determinant (&d_mantissa, &d_exponent)) + { + /* the determinant is zero or NaN */ + Info [UMFPACK_STATUS] = UMFPACK_WARNING_singular_matrix ; + /* no need to compute the determinant of R */ + do_scale = FALSE ; + break ; + } + } + + /* compute product of diagonal entries of R (or its inverse) */ + if (do_scale) + { + for (i = 0 ; i < n ; i++) + { +#ifndef NRECIPROCAL + if (do_recip) + { + /* compute determinant of R inverse */ + SCALE_DIV (d_mantissa, Rs [i]) ; + } + else +#endif + { + /* compute determinant of R */ + SCALE (d_mantissa, Rs [i]) ; + } + if (!rescale_determinant (&d_mantissa, &d_exponent)) + { + /* the determinant is zero or NaN. This is very unlikey to + * occur here, since the scale factors for a tiny or zero row + * are set to 1. */ + Info [UMFPACK_STATUS] = UMFPACK_WARNING_singular_matrix ; + break ; + } + } + } + + /* ---------------------------------------------------------------------- */ + /* determine if P and Q are odd or even permutations */ + /* ---------------------------------------------------------------------- */ + + npiv = 0 ; + Rperm = Numeric->Rperm ; + + for (i = 0 ; i < n ; i++) + { + Wi [i] = Rperm [i] ; + } + + for (i = 0 ; i < n ; i++) + { + while (Wi [i] != i) + { + itmp = Wi [Wi [i]] ; + Wi [Wi [i]] = Wi [i] ; + Wi [i] = itmp ; + npiv++ ; + } + } + + Cperm = Numeric->Cperm ; + + for (i = 0 ; i < n ; i++) + { + Wi [i] = Cperm [i] ; + } + + for (i = 0 ; i < n ; i++) + { + while (Wi [i] != i) + { + itmp = Wi [Wi [i]] ; + Wi [Wi [i]] = Wi [i] ; + Wi [i] = itmp ; + npiv++ ; + } + } + + /* if npiv is odd, the sign is -1. if it is even, the sign is +1 */ + d_sign = (npiv % 2) ? -1. : 1. ; + + /* ---------------------------------------------------------------------- */ + /* free workspace */ + /* ---------------------------------------------------------------------- */ + + (void) UMF_free ((void *) Wi) ; + + /* ---------------------------------------------------------------------- */ + /* compute the magnitude and exponent of the determinant */ + /* ---------------------------------------------------------------------- */ + + if (Ex == (double *) NULL) + { + /* Ex is not provided, so return the entire determinant in d_mantissa */ + SCALE (d_mantissa, pow (10.0, d_exponent)) ; + } + else + { + Ex [0] = d_exponent ; + } + + Mx [0] = d_sign * REAL_COMPONENT (d_mantissa) ; + +#ifdef COMPLEX + if (SPLIT (Mz)) + { + Mz [0] = d_sign * IMAG_COMPONENT (d_mantissa) ; + } + else + { + Mx [1] = d_sign * IMAG_COMPONENT (d_mantissa) ; + } +#endif + + /* determine if the determinant has (or will) overflow or underflow */ + if (d_exponent + 1.0 > log10 (DBL_MAX)) + { + Info [UMFPACK_STATUS] = UMFPACK_WARNING_determinant_overflow ; + } + else if (d_exponent - 1.0 < log10 (DBL_MIN)) + { + Info [UMFPACK_STATUS] = UMFPACK_WARNING_determinant_underflow ; + } + + return (UMFPACK_OK) ; +} 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 37ac8bffe6..d1d2d3108a 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_lunz.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_lunz.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 e270b1e3a4..d429c97567 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_numeric.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -125,13 +124,8 @@ GLOBAL Int UMFPACK_get_numeric /* allocate workspace */ /* ---------------------------------------------------------------------- */ -#ifdef COMPLEX - getL = Lp && Lj && Lx && Lz ; - getU = Up && Ui && Ux && Uz ; -#else getL = Lp && Lj && Lx ; getU = Up && Ui && Ux ; -#endif if (getL || getU) { @@ -191,22 +185,33 @@ GLOBAL Int UMFPACK_get_numeric if (Dx != (double *) NULL) { D = Numeric->D ; - for (k = 0 ; k < n_inner ; k++) +#ifdef COMPLEX + if (SPLIT (Dz)) { - Dx [k] = REAL_COMPONENT (D [k]) ; + for (k = 0 ; k < n_inner ; k++) + { + Dx [k] = REAL_COMPONENT (D [k]) ; + Dz [k] = IMAG_COMPONENT (D [k]) ; + } } - } - -#ifdef COMPLEX - if (Dz != (double *) NULL) - { - D = Numeric->D ; - for (k = 0 ; k < n_inner ; k++) + else { - Dz [k] = IMAG_COMPONENT (D [k]) ; + for (k = 0 ; k < n_inner ; k++) + { + Dx [2*k ] = REAL_COMPONENT (D [k]) ; + Dx [2*k+1] = IMAG_COMPONENT (D [k]) ; + } + } +#else + { + D = Numeric->D ; + for (k = 0 ; k < n_inner ; k++) + { + Dx [k] = D [k] ; + } } - } #endif + } /* return the flag stating whether the scale factors are to be multiplied, * or divided. If do_recip is TRUE, multiply. Otherwise, divided. @@ -332,9 +337,13 @@ PRIVATE void get_L /* local variables */ /* ---------------------------------------------------------------------- */ + Entry value ; + Entry *xp, *Lval ; Int deg, *ip, j, row, n_row, n_col, n_inner, *Lpos, *Lilen, *Lip, p, llen, - lnz2, lp, newLchain, k, pos, npiv, *Li, n1 ; - Entry *xp, value, *Lval ; + lnz2, lp, newLchain, k, pos, npiv, *Li, n1 ; +#ifdef COMPLEX + Int split = SPLIT (Lz) ; +#endif /* ---------------------------------------------------------------------- */ /* get parameters */ @@ -487,9 +496,20 @@ PRIVATE void get_L { p = Wi [row]++ ; Lj [p] = k ; - Lx [p] = REAL_COMPONENT (value) ; #ifdef COMPLEX - Lz [p] = IMAG_COMPONENT (value) ; + if (split) + { + + Lx [p] = REAL_COMPONENT (value) ; + Lz [p] = IMAG_COMPONENT (value) ; + } + else + { + Lx [2*p ] = REAL_COMPONENT (value) ; + Lx [2*p+1] = IMAG_COMPONENT (value) ; + } +#else + Lx [p] = value ; #endif } } @@ -550,9 +570,19 @@ PRIVATE void get_L { p = Wi [row]++ ; Lj [p] = k ; - Lx [p] = REAL_COMPONENT (value) ; #ifdef COMPLEX - Lz [p] = IMAG_COMPONENT (value) ; + if (split) + { + Lx [p] = REAL_COMPONENT (value) ; + Lz [p] = IMAG_COMPONENT (value) ; + } + else + { + Lx [2*p ] = REAL_COMPONENT (value) ; + Lx [2*p+1] = IMAG_COMPONENT (value) ; + } +#else + Lx [p] = value ; #endif } } @@ -563,10 +593,22 @@ PRIVATE void get_L { p = Wi [row]++ ; Lj [p] = row ; - Lx [p] = 1. ; + #ifdef COMPLEX - Lz [p] = 0. ; + if (split) + { + Lx [p] = 1. ; + Lz [p] = 0. ; + } + else + { + Lx [2*p ] = 1. ; + Lx [2*p+1] = 0. ; + } +#else + Lx [p] = 1. ; #endif + ASSERT (Wi [row] == Lp [row+1]) ; } @@ -660,10 +702,13 @@ PRIVATE void get_U /* local variables */ /* ---------------------------------------------------------------------- */ + Entry value ; + Entry *xp, *D, *Uval ; Int deg, j, *ip, col, *Upos, *Uilen, *Uip, n_col, ulen, *Usi, - unz2, p, k, up, newUchain, pos, npiv, n1 ; - Entry *xp, *D, value, *Uval ; - + unz2, p, k, up, newUchain, pos, npiv, n1 ; +#ifdef COMPLEX + Int split = SPLIT (Uz) ; +#endif #ifndef NDEBUG Int nnzpiv = 0 ; #endif @@ -842,9 +887,20 @@ PRIVATE void get_U { p = --(Wi [col]) ; Ui [p] = col ; - Ux [p] = REAL_COMPONENT (D [col]) ; #ifdef COMPLEX - Uz [p] = IMAG_COMPONENT (D [col]) ; + if (split) + { + + Ux [p] = REAL_COMPONENT (D [col]) ; + Uz [p] = IMAG_COMPONENT (D [col]) ; + } + else + { + Ux [2*p ] = REAL_COMPONENT (D [col]) ; + Ux [2*p+1] = IMAG_COMPONENT (D [col]) ; + } +#else + Ux [p] = D [col] ; #endif } } @@ -895,10 +951,21 @@ PRIVATE void get_U { p = --(Wi [col]) ; Ui [p] = k ; - Ux [p] = REAL_COMPONENT (value) ; #ifdef COMPLEX - Uz [p] = IMAG_COMPONENT (value) ; + if (split) + { + Ux [p] = REAL_COMPONENT (value) ; + Uz [p] = IMAG_COMPONENT (value) ; + } + else + { + Ux [2*p ] = REAL_COMPONENT (value) ; + Ux [2*p+1] = IMAG_COMPONENT (value) ; + } +#else + Ux [p] = value ; #endif + } } @@ -959,9 +1026,19 @@ PRIVATE void get_U { p = --(Wi [col]) ; Ui [p] = k ; - Ux [p] = REAL_COMPONENT (value) ; #ifdef COMPLEX - Uz [p] = IMAG_COMPONENT (value) ; + if (split) + { + Ux [p] = REAL_COMPONENT (value) ; + Uz [p] = IMAG_COMPONENT (value) ; + } + else + { + Ux [2*p ] = REAL_COMPONENT (value) ; + Ux [2*p+1] = IMAG_COMPONENT (value) ; + } +#else + Ux [p] = value ; #endif } } 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 6a88f37b7e..5d69579d22 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_get_symbolic.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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_numeric.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_numeric.c index db98757cb7..f8fbd1fcbe 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_numeric.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 dceea052f7..4fc21884cf 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_load_symbolic.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 a79e8df3a9..61444cc80c 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_numeric.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -81,13 +80,14 @@ GLOBAL Int UMFPACK_numeric /* local variables */ /* ---------------------------------------------------------------------- */ + double Info2 [UMFPACK_INFO], alloc_init, relpt, relpt2, droptol, + front_alloc_init, stats [2] ; + double *Info ; + WorkType WorkSpace, *Work ; NumericType *Numeric ; SymbolicType *Symbolic ; - WorkType WorkSpace, *Work ; Int n_row, n_col, n_inner, newsize, i, status, *inew, npiv, ulen, scale ; Unit *mnew ; - double Info2 [UMFPACK_INFO], *Info, alloc_init, relpt, relpt2, droptol, - front_alloc_init, stats [2] ; /* ---------------------------------------------------------------------- */ /* get the amount of time used by the process so far */ @@ -116,7 +116,7 @@ GLOBAL Int UMFPACK_numeric alloc_init = GET_CONTROL (UMFPACK_ALLOC_INIT, UMFPACK_DEFAULT_ALLOC_INIT) ; front_alloc_init = GET_CONTROL (UMFPACK_FRONT_ALLOC_INIT, UMFPACK_DEFAULT_FRONT_ALLOC_INIT) ; - scale = (Int) GET_CONTROL (UMFPACK_SCALE, UMFPACK_DEFAULT_SCALE) ; + scale = GET_CONTROL (UMFPACK_SCALE, UMFPACK_DEFAULT_SCALE) ; droptol = GET_CONTROL (UMFPACK_DROPTOL, UMFPACK_DEFAULT_DROPTOL) ; relpt = MAX (0.0, MIN (relpt, 1.0)) ; @@ -189,11 +189,7 @@ GLOBAL Int UMFPACK_numeric Info [UMFPACK_NCOL] = n_col ; Info [UMFPACK_SIZE_OF_UNIT] = (double) (sizeof (Unit)) ; - if (!Ap || !Ai || !Ax || !NumericHandle -#ifdef COMPLEX - || !Az -#endif - ) + if (!Ap || !Ai || !Ax || !NumericHandle) { Info [UMFPACK_STATUS] = UMFPACK_ERROR_argument_missing ; return (UMFPACK_ERROR_argument_missing) ; @@ -540,9 +536,9 @@ PRIVATE Int numeric_alloc Int scale ) { + double nsize, bsize ; Int n_row, n_col, n_inner, min_usage, trying ; NumericType *Numeric ; - double nsize, bsize ; DEBUG0 (("numeric alloc:\n")) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_qsymbolic.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_qsymbolic.c index db1406f13d..0aba148fa3 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_qsymbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_qsymbolic.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -118,7 +117,7 @@ PRIVATE void do_amd AMD_1 (n, Ap, Ai, Q, Qinv, Sdeg, Clen, Ci, amd_Control, amd_Info) ; /* return estimates computed from AMD on PA+PA' */ - Symbolic->amd_dmax = (Int) amd_Info [AMD_DMAX] ; + Symbolic->amd_dmax = amd_Info [AMD_DMAX] ; Symbolic->amd_lunz = 2 * amd_Info [AMD_LNZ] + n ; Info [UMFPACK_SYMMETRIC_LUNZ] = Symbolic->amd_lunz ; Info [UMFPACK_SYMMETRIC_FLOPS] = DIV_FLOPS * amd_Info [AMD_NDIV] + @@ -158,13 +157,12 @@ PRIVATE Int prune_singletons ) { Int row, k, pp, p, oldcol, newcol, newrow, nzdiag, do_nzdiag ; - - nzdiag = 0 ; - do_nzdiag = (Ax != (double *) NULL) #ifdef COMPLEX - && (Az != (double *) NULL) + Int split = SPLIT (Az) ; #endif - ; + + nzdiag = 0 ; + do_nzdiag = (Ax != (double *) NULL) ; #ifndef NDEBUG DEBUGm4 (("Prune : S = A (Cperm1 (n1+1:end), Rperm1 (n1+1:end))\n")) ; @@ -204,14 +202,29 @@ PRIVATE Int prune_singletons if (newrow == newcol) { /* this is the diagonal entry */ - if (SCALAR_IS_NONZERO (Ax [p]) #ifdef COMPLEX - || SCALAR_IS_NONZERO (Az [p]) -#endif - ) + if (split) + { + if (SCALAR_IS_NONZERO (Ax [p]) || + SCALAR_IS_NONZERO (Az [p])) + { + nzdiag++ ; + } + } + else + { + if (SCALAR_IS_NONZERO (Ax [2*p ]) || + SCALAR_IS_NONZERO (Ax [2*p+1])) + { + nzdiag++ ; + } + } +#else + if (SCALAR_IS_NONZERO (Ax [p])) { nzdiag++ ; } +#endif } } } @@ -220,7 +233,6 @@ PRIVATE Int prune_singletons } Sp [n_col - n1] = pp ; - ASSERT (AMD_valid (n_row - n1, n_col - n1, Sp, Si)) ; return (nzdiag) ; } @@ -304,6 +316,12 @@ GLOBAL Int UMFPACK_qsymbolic /* local variables */ /* ---------------------------------------------------------------------- */ + double knobs [COLAMD_KNOBS], flops, f, r, c, force_fixQ, + Info2 [UMFPACK_INFO], drow, dcol, dtail_usage, dlf, duf, dmax_usage, + dhead_usage, dlnz, dunz, dmaxfrsize, dClen, dClen_analyze, sym, + amd_Info [AMD_INFO], dClen_amd, dr, dc, cr, cc, cp, + amd_Control [AMD_CONTROL], stats [2], tol ; + double *Info ; Int i, nz, j, newj, status, f1, f2, maxnrows, maxncols, nfr, col, nchains, maxrows, maxcols, p, nb, nn, *Chain_start, *Chain_maxrows, *Chain_maxcols, *Front_npivcol, *Ci, Clen, colamd_stats [COLAMD_STATS], @@ -316,12 +334,8 @@ GLOBAL Int UMFPACK_qsymbolic *Fr_cols, nempty_row, nempty_col, user_auto_strategy, fail, max_rdeg, head_usage, tail_usage, lnz, unz, esize, *Esize, rdeg, *Cdeg, *Rdeg, *Cperm1, *Rperm1, n1, oldcol, newcol, n1c, n1r, *Rperm_2by2, oldrow, - dense_row_threshold, tlen, aggressive ; - double knobs [COLAMD_KNOBS], flops, f, r, c, *Info, force_fixQ, - Info2 [UMFPACK_INFO], drow, dcol, dtail_usage, dlf, duf, dmax_usage, - dhead_usage, dlnz, dunz, dmaxfrsize, dClen, dClen_analyze, sym, - amd_Info [AMD_INFO], dClen_amd, dr, dc, cr, cc, cp, - amd_Control [AMD_CONTROL], stats [2], tol, scale ; + dense_row_threshold, tlen, aggressive, scale, *Rp, *Ri ; + SymbolicType *Symbolic ; SWType SWspace, *SW ; @@ -345,8 +359,8 @@ GLOBAL Int UMFPACK_qsymbolic drow = GET_CONTROL (UMFPACK_DENSE_ROW, UMFPACK_DEFAULT_DENSE_ROW) ; dcol = GET_CONTROL (UMFPACK_DENSE_COL, UMFPACK_DEFAULT_DENSE_COL) ; - nb = (Int) GET_CONTROL (UMFPACK_BLOCK_SIZE, UMFPACK_DEFAULT_BLOCK_SIZE) ; - strategy = (Int) GET_CONTROL (UMFPACK_STRATEGY, UMFPACK_DEFAULT_STRATEGY) ; + nb = GET_CONTROL (UMFPACK_BLOCK_SIZE, UMFPACK_DEFAULT_BLOCK_SIZE) ; + strategy = GET_CONTROL (UMFPACK_STRATEGY, UMFPACK_DEFAULT_STRATEGY) ; tol = GET_CONTROL (UMFPACK_2BY2_TOLERANCE, UMFPACK_DEFAULT_2BY2_TOLERANCE) ; scale = GET_CONTROL (UMFPACK_SCALE, UMFPACK_DEFAULT_SCALE) ; force_fixQ = GET_CONTROL (UMFPACK_FIXQ, UMFPACK_DEFAULT_FIXQ) ; @@ -441,6 +455,20 @@ GLOBAL Int UMFPACK_qsymbolic strategy = UMFPACK_STRATEGY_AUTO ; } + if (Quser != (Int *) NULL) + { + /* when the user provides Q, only symmetric and unsymmetric strategies + * are available */ + if (strategy == UMFPACK_STRATEGY_2BY2) + { + strategy = UMFPACK_STRATEGY_SYMMETRIC ; + } + if (strategy != UMFPACK_STRATEGY_SYMMETRIC) + { + strategy = UMFPACK_STRATEGY_UNSYMMETRIC ; + } + } + user_auto_strategy = (strategy == UMFPACK_STRATEGY_AUTO) ; /* ---------------------------------------------------------------------- */ @@ -490,7 +518,7 @@ GLOBAL Int UMFPACK_qsymbolic Clen = UMF_COLAMD_RECOMMENDED (nz, n_row, n_col) ; Clen_analyze = UMF_ANALYZE_CLEN (nz, n_row, n_col, nn) ; Clen = MAX (Clen, Clen_analyze) ; - Clen_amd = (Int) (2.4 * nz + 8 * n_inner) ; + Clen_amd = 2.4 * nz + 8 * n_inner ; Clen_amd += MAX (nn, nz) ; /* for Ri, in UMF_2by2 */ Clen = MAX (Clen, Clen_amd) ; @@ -653,7 +681,8 @@ GLOBAL Int UMFPACK_qsymbolic * and use Rperm_init as workspace */ ASSERT (Clen >= nz + n_row + MAX (n_row, n_col)) ; - status = UMF_singletons (n_row, n_col, Ap, Ai, Quser, Cdeg, Cperm1, Rdeg, + status = UMF_singletons (n_row, n_col, Ap, Ai, Quser, strategy, + Cdeg, Cperm1, Rdeg, Rperm1, InvRperm1, &n1, &n1c, &n1r, &nempty_col, &nempty_row, &is_sym, &max_rdeg, /* workspace: */ Rperm_init, Ci, Ci + nz, Ci + nz + n_row) ; @@ -696,9 +725,8 @@ GLOBAL Int UMFPACK_qsymbolic { /* either the pruned submatrix rectangular, or it is square and * Rperm [n1 .. n-nempty-1] is not the same as Cperm [n1 .. n-nempty-1]. - * For the auto strategy, switch to the unsymmetric strategy. - * Otherwise, if the strategy selected by the user is symmetric or - * 2-by-2, then the singletons will be discarded. */ + * Switch to the unsymmetric strategy, ignoring user-requested + * strategy. */ strategy = UMFPACK_STRATEGY_UNSYMMETRIC ; DEBUGm4 (("Strategy: Unsymmetric singletons\n")) ; } @@ -742,11 +770,36 @@ GLOBAL Int UMFPACK_qsymbolic , Rperm1, nn #endif ) ; - nzaat = AMD_aat (n2, Sp, Si, Sdeg, Wq, amd_Info) ; + + /* use Ci as workspace to sort S into R, if needed [ */ + if (Quser != (Int *) NULL) + { + /* need to sort the columns of S first */ + Rp = Ci ; + Ri = Ci + (n_row) + 1 ; + (void) UMF_transpose (n2, n2, Sp, Si, (double *) NULL, + (Int *) NULL, (Int *) NULL, 0, + Rp, Ri, (double *) NULL, Wq, FALSE +#ifdef COMPLEX + , (double *) NULL, (double *) NULL, FALSE +#endif + ) ; + } + else + { + /* S already has sorted columns */ + Rp = Sp ; + Ri = Si ; + } + ASSERT (AMD_valid (n2, n2, Rp, Ri)) ; + + nzaat = AMD_aat (n2, Rp, Ri, Sdeg, Wq, amd_Info) ; sym = amd_Info [AMD_SYMMETRY] ; Info [UMFPACK_N2] = n2 ; /* nzdiag = amd_Info [AMD_NZDIAG] counts the zero entries of S too */ + /* done using Ci as workspace to sort S into R ] */ + #ifndef NDEBUG for (k = 0 ; k < n2 ; k++) { @@ -755,6 +808,7 @@ GLOBAL Int UMFPACK_qsymbolic ASSERT (Sp [n2] - n2 <= nzaat && nzaat <= 2 * Sp [n2]) ; DEBUG0 (("Explicit zeros: "ID" %g\n", nzdiag, amd_Info [AMD_NZDIAG])) ; #endif + } /* get statistics from amd_aat, if computed */ @@ -809,9 +863,8 @@ GLOBAL Int UMFPACK_qsymbolic if (strategy == UMFPACK_STRATEGY_2BY2) { - Int *Rp, *Ri, *Blen, *W, nz_papat, nzd2, nweak, unmatched, - Clen3 ; double sym2 ; + Int *Blen, *W, nz_papat, nzd2, nweak, unmatched, Clen3 ; /* ------------------------------------------------------------------ */ /* get workspace for UMF_2by2 */ @@ -870,7 +923,7 @@ GLOBAL Int UMFPACK_qsymbolic #ifdef COMPLEX Az, #endif - tol, (Int) scale, Cperm1, + tol, scale, Cperm1, #ifndef NDEBUG Rperm1, #endif @@ -904,7 +957,7 @@ GLOBAL Int UMFPACK_qsymbolic } nz_papat = AMD_aat (n2, Rp, Ri, Sdeg, Wq, amd_Info) ; sym2 = amd_Info [AMD_SYMMETRY] ; - nzd2 = (Int) amd_Info [AMD_NZDIAG] ; + nzd2 = amd_Info [AMD_NZDIAG] ; Info [UMFPACK_2BY2_PATTERN_SYMMETRY] = sym2 ; Info [UMFPACK_2BY2_NZ_PA_PLUS_PAT] = nz_papat ; @@ -1550,7 +1603,7 @@ GLOBAL Int UMFPACK_qsymbolic /* empty rows go to dummy front nfr */ for (row = 0 ; row < n_row ; row++) { - InFront [row] = nfr ; + InFront [row] = nfr ; } /* assign the singleton pivot rows to the "empty" front */ for (k = 0 ; k < n1 ; k++) @@ -1808,13 +1861,9 @@ GLOBAL Int UMFPACK_qsymbolic Entry aij ; oldrow = Ai [p] ; newrow = Ci [oldrow] ; - if (Ax != (double *) NULL -#ifdef COMPLEX - && Az != (double *) NULL -#endif - ) + if (Ax != (double *) NULL) { - ASSIGN (aij, Ax [p], Az [p]) ; + ASSIGN (aij, Ax, Az, p, SPLIT (Az)) ; } if (oldrow == oldcol) { 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 7431a86226..94b12e07ce 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_control.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_control.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -21,11 +20,11 @@ GLOBAL void UMFPACK_report_control const double Control [UMFPACK_CONTROL] ) { - Int prl, nb, irstep, strategy, scale, s ; double drow, dcol, relpt, relpt2, alloc_init, front_alloc_init, amd_alpha, tol, force_fixQ, droptol, aggr ; + Int prl, nb, irstep, strategy, scale, s ; - prl = (Int) GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; + prl = GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; if (prl < 2) { @@ -96,7 +95,7 @@ GLOBAL void UMFPACK_report_control /* block size */ /* ---------------------------------------------------------------------- */ - nb = (Int) GET_CONTROL (UMFPACK_BLOCK_SIZE, UMFPACK_DEFAULT_BLOCK_SIZE) ; + nb = GET_CONTROL (UMFPACK_BLOCK_SIZE, UMFPACK_DEFAULT_BLOCK_SIZE) ; nb = MAX (1, nb) ; PRINTF ((" "ID": block size for dense matrix kernels: "ID"\n", (Int) INDEX (UMFPACK_BLOCK_SIZE), nb)) ; @@ -105,7 +104,7 @@ GLOBAL void UMFPACK_report_control /* strategy */ /* ---------------------------------------------------------------------- */ - strategy = (Int) GET_CONTROL (UMFPACK_STRATEGY, UMFPACK_DEFAULT_STRATEGY) ; + strategy = GET_CONTROL (UMFPACK_STRATEGY, UMFPACK_DEFAULT_STRATEGY) ; if (strategy < UMFPACK_STRATEGY_AUTO || strategy > UMFPACK_STRATEGY_SYMMETRIC) { @@ -153,7 +152,7 @@ GLOBAL void UMFPACK_report_control } else { - s =(Int) -alloc_init ; + s = -alloc_init ; s = MAX (1, s) ; PRINTF ((" "ID": initial allocation (in Units): "ID"\n", (Int) INDEX (UMFPACK_ALLOC_INIT), s)) ; @@ -163,7 +162,7 @@ GLOBAL void UMFPACK_report_control /* maximum iterative refinement steps */ /* ---------------------------------------------------------------------- */ - irstep = (Int) GET_CONTROL (UMFPACK_IRSTEP, UMFPACK_DEFAULT_IRSTEP) ; + irstep = GET_CONTROL (UMFPACK_IRSTEP, UMFPACK_DEFAULT_IRSTEP) ; irstep = MAX (0, irstep) ; PRINTF ((" "ID": max iterative refinement steps: "ID"\n", (Int) INDEX (UMFPACK_IRSTEP), irstep)) ; @@ -230,7 +229,7 @@ GLOBAL void UMFPACK_report_control /* scaling */ /* ---------------------------------------------------------------------- */ - scale = (Int) GET_CONTROL (UMFPACK_SCALE, UMFPACK_DEFAULT_SCALE) ; + scale = GET_CONTROL (UMFPACK_SCALE, UMFPACK_DEFAULT_SCALE) ; if (scale != UMFPACK_SCALE_NONE && scale != UMFPACK_SCALE_MAX) { scale = UMFPACK_DEFAULT_SCALE ; @@ -264,7 +263,7 @@ GLOBAL void UMFPACK_report_control } else { - s = (Int) -front_alloc_init ; + s = -front_alloc_init ; s = MAX (1, s) ; PRINTF ((" "ID": initial frontal matrix size (# of Entry's): "ID"\n", (Int) INDEX (UMFPACK_FRONT_ALLOC_INIT), s)) ; 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 48a66233b5..800b1e1953 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_info.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_info.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -89,7 +88,7 @@ GLOBAL void UMFPACK_report_info /* get control settings and status to determine what to print */ /* ---------------------------------------------------------------------- */ - prl = (Int) GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; + prl = GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; if (!Info || prl < 2) { @@ -264,7 +263,7 @@ GLOBAL void UMFPACK_report_info Info [UMFPACK_NEMPTY_ROW]) ; PRINT_INFO (" number of empty columns %.0f\n", Info [UMFPACK_NEMPTY_COL]) ; - is_sym = (Int) Info [UMFPACK_S_SYMMETRIC] ; + is_sym = Info [UMFPACK_S_SYMMETRIC] ; if (is_sym > 0) { PRINTF ((" submatrix S square and diagonal preserved\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 90331396e1..1c2914ed25 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_matrix.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_matrix.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -15,8 +14,6 @@ */ #include "umf_internal.h" -#include "umf_malloc.h" -#include "umf_free.h" GLOBAL Int UMFPACK_report_matrix ( @@ -32,15 +29,18 @@ GLOBAL Int UMFPACK_report_matrix const double Control [UMFPACK_CONTROL] ) { + Entry a ; Int prl, i, k, length, ilast, p, nz, prl1, p1, p2, n, n_i, do_values ; char *vector, *index ; - Entry a ; +#ifdef COMPLEX + Int split = SPLIT (Az) ; +#endif /* ---------------------------------------------------------------------- */ /* determine the form, and check if inputs exist */ /* ---------------------------------------------------------------------- */ - prl = (Int) GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; + prl = GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; if (prl <= 2) { @@ -97,11 +97,7 @@ GLOBAL Int UMFPACK_report_matrix return (UMFPACK_ERROR_argument_missing) ; } -#ifdef COMPLEX - do_values = Ax && Az ; -#else do_values = Ax != (double *) NULL ; -#endif PRINTF4 (("\n")) ; @@ -161,7 +157,7 @@ GLOBAL Int UMFPACK_report_matrix if (do_values && prl >= 4) { PRINTF ((":")) ; - ASSIGN (a, Ax [p], Az [p]) ; + ASSIGN (a, Ax, Az, p, split) ; PRINT_ENTRY (a) ; } if (i < 0 || i >= n_i) 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 ac0d6dd6bc..670f79e60f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_numeric.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -56,7 +55,7 @@ GLOBAL Int UMFPACK_report_numeric npiv ; NumericType *Numeric ; - prl = (Int) GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; + prl = GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; if (prl <= 2) { 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 11ec1bc366..f6f78bf07f 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_perm.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_perm.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -31,7 +30,7 @@ GLOBAL Int UMFPACK_report_perm { Int prl, *W, status ; - prl = (Int) GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; + prl = GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; if (prl <= 2) { 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 2ec58e9ec1..7be57b91f4 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_status.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_status.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -28,7 +27,7 @@ GLOBAL void UMFPACK_report_status /* get control settings and status to determine what to print */ /* ---------------------------------------------------------------------- */ - prl = (Int) GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; + prl = GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; if (prl < 1) { @@ -38,7 +37,7 @@ GLOBAL void UMFPACK_report_status if (status == UMFPACK_OK && prl <= 1) { - /* no output generated if prl is 1 or less and no error occured. */ + /* no output generated if prl is 1 or less and no error occurred. */ /* note that the default printing level is 1. */ return ; } 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 c89248bc4b..ad43478dfb 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_symbolic.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -37,7 +36,7 @@ GLOBAL Int UMFPACK_report_symbolic *Front_leftmostdesc, *Front_parent, done, status1, status2 ; SymbolicType *Symbolic ; - prl = (Int) GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; + prl = GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; if (prl <= 2) { 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 06ebbec9cb..c7212ff404 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_triplet.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_triplet.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -30,10 +29,13 @@ GLOBAL Int UMFPACK_report_triplet const double Control [UMFPACK_CONTROL] ) { - Int prl, prl1, k, i, j, do_values ; Entry t ; + Int prl, prl1, k, i, j, do_values ; +#ifdef COMPLEX + Int split = SPLIT (Tz) ; +#endif - prl = (Int) GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; + prl = GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; if (prl <= 2) { @@ -63,11 +65,7 @@ GLOBAL Int UMFPACK_report_triplet PRINTF4 (("\n")) ; -#ifdef COMPLEX - do_values = Tx && Tz ; -#else do_values = Tx != (double *) NULL ; -#endif prl1 = prl ; for (k = 0 ; k < nz ; k++) @@ -77,7 +75,7 @@ GLOBAL Int UMFPACK_report_triplet PRINTF4 ((" "ID" : "ID" "ID" ", INDEX (k), INDEX (i), INDEX (j))) ; if (do_values && prl >= 4) { - ASSIGN (t, Tx [k], Tz [k]) ; + ASSIGN (t, Tx, Tz, k, split) ; PRINT_ENTRY (t) ; } PRINTF4 (("\n")) ; 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 3f8a39f3ec..204801b6e4 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_vector.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_report_vector.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -33,7 +32,7 @@ GLOBAL Int UMFPACK_report_vector double *Xz = (double *) NULL ; #endif - prl = (Int) GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; + prl = GET_CONTROL (UMFPACK_PRL, UMFPACK_DEFAULT_PRL) ; if (prl <= 2) { 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 b7803b7c17..a912a6f65b 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_save_numeric.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_save_numeric.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 7908b83f23..e3144d83ac 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_save_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_save_symbolic.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 90d0221ff1..a2f8b78a07 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_scale.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_scale.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -46,6 +45,9 @@ GLOBAL Int UMFPACK_scale NumericType *Numeric ; Int n, i ; double *Rs ; +#ifdef COMPLEX + Int split = SPLIT (Xz) && SPLIT (Bz) ; +#endif Numeric = (NumericType *) NumericHandle ; if (!UMF_valid_numeric (Numeric)) @@ -56,11 +58,7 @@ GLOBAL Int UMFPACK_scale n = Numeric->n_row ; Rs = Numeric->Rs ; - if (!Xx || !Bx -#ifdef COMPLEX - || !Xz || !Bz -#endif - ) + if (!Xx || !Bx) { return (UMFPACK_ERROR_argument_missing) ; } @@ -75,37 +73,85 @@ GLOBAL Int UMFPACK_scale if (Numeric->do_recip) { /* multiply by the scale factors */ +#ifdef COMPLEX + if (split) + { + for (i = 0 ; i < n ; i++) + { + Xx [i] = Bx [i] * Rs [i] ; + Xz [i] = Bz [i] * Rs [i] ; + } + } + else + { + for (i = 0 ; i < n ; i++) + { + Xx [2*i ] = Bx [2*i ] * Rs [i] ; + Xx [2*i+1] = Bx [2*i+1] * Rs [i] ; + } + } +#else for (i = 0 ; i < n ; i++) { Xx [i] = Bx [i] * Rs [i] ; -#ifdef COMPLEX - Xz [i] = Bz [i] * Rs [i] ; -#endif } +#endif } else #endif { /* divide by the scale factors */ +#ifdef COMPLEX + if (split) + { + for (i = 0 ; i < n ; i++) + { + Xx [i] = Bx [i] / Rs [i] ; + Xz [i] = Bz [i] / Rs [i] ; + } + } + else + { + for (i = 0 ; i < n ; i++) + { + Xx [2*i ] = Bx [2*i ] / Rs [i] ; + Xx [2*i+1] = Bx [2*i+1] / Rs [i] ; + } + } +#else for (i = 0 ; i < n ; i++) { Xx [i] = Bx [i] / Rs [i] ; -#ifdef COMPLEX - Xz [i] = Bz [i] / Rs [i] ; -#endif } +#endif } } else { /* no scale factors, just copy B into X */ +#ifdef COMPLEX + if (split) + { + for (i = 0 ; i < n ; i++) + { + Xx [i] = Bx [i] ; + Xz [i] = Bz [i] ; + } + } + else + { + for (i = 0 ; i < n ; i++) + { + Xx [2*i ] = Bx [2*i ] ; + Xx [2*i+1] = Bx [2*i+1] ; + } + } +#else for (i = 0 ; i < n ; i++) { Xx [i] = Bx [i] ; -#ifdef COMPLEX - Xz [i] = Bz [i] ; -#endif } +#endif } return (UMFPACK_OK) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_solve.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_solve.c index 8d13a41fbd..1db93566e7 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_solve.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_solve.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -76,9 +75,10 @@ UMFPACK_solve /* local variables */ /* ---------------------------------------------------------------------- */ + double Info2 [UMFPACK_INFO], stats [2] ; + double *Info ; NumericType *Numeric ; Int n, i, irstep, status ; - double Info2 [UMFPACK_INFO], *Info, /* tstart, tend */ stats [2] ; #ifndef WSOLVE Int *Pattern, wsize ; double *W ; @@ -100,7 +100,7 @@ UMFPACK_solve /* get parameters */ /* ---------------------------------------------------------------------- */ - irstep = (Int) GET_CONTROL (UMFPACK_IRSTEP, UMFPACK_DEFAULT_IRSTEP) ; + irstep = GET_CONTROL (UMFPACK_IRSTEP, UMFPACK_DEFAULT_IRSTEP) ; if (User_Info != (double *) NULL) { @@ -150,11 +150,7 @@ UMFPACK_solve irstep = 0 ; } - if (!Xx || !Bx -#ifdef COMPLEX - || !Xz || !Bz -#endif - ) + if (!Xx || !Bx) { Info [UMFPACK_STATUS] = UMFPACK_ERROR_argument_missing ; return (UMFPACK_ERROR_argument_missing) ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_symbolic.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_symbolic.c index 2125695978..20b9a26da5 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_symbolic.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_symbolic.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 706f3acb85..96d34d1c51 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_tictoc.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_tictoc.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -58,8 +57,8 @@ void umfpack_tic (double stats [2]) /* stats [0]: current wallclock time, in seconds */ /* stats [1]: user + system time for the process, in seconds */ - struct tms t ; double ticks ; + struct tms t ; ticks = (double) sysconf (_SC_CLK_TCK) ; stats [0] = (double) times (&t) / ticks ; diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_timer.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_timer.c index be0e7fc647..2307fedd02 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_timer.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_timer.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -13,8 +12,7 @@ User-callable. Returns the time in seconds used by the process. BE CAREFUL: if you compare the run time of UMFPACK with other sparse matrix packages, be sure to use the same timer. See umfpack_timer.h for details. - This was the timer used internally by UMFPACK Version 4.0. See - umfpack_tictoc.h, which is the timer now used internally by UMFPACK V4.1. + See umfpack_tictoc.h, which is the timer used internally by UMFPACK. */ #ifdef NO_TIMER diff --git a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_transpose.c b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_transpose.c index 7dedecb6be..3717fdf978 100644 --- a/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_transpose.c +++ b/deal.II/contrib/umfpack/UMFPACK/Source/umfpack_transpose.c @@ -3,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* 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 a868231a81..d72e069bb1 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,9 +3,8 @@ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ -/* UMFPACK Version 4.3 (Jan. 16, 2004), Copyright (c) 2004 by Timothy A. */ -/* Davis. All Rights Reserved. See ../README for License. */ -/* email: davis@cise.ufl.edu CISE Department, Univ. of Florida. */ +/* UMFPACK Version 4.4, Copyright (c) 2005 by Timothy A. Davis. CISE Dept, */ +/* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ @@ -13,7 +12,7 @@ User callable. Converts triplet input to column-oriented form. Duplicate entries may exist (they are summed in the output). The columns of the column-oriented form are in sorted order. The input is not modified. - Returns 1 if OK, 0 if an error occured. See umfpack_triplet_to_col.h for + Returns 1 if OK, 0 if an error occurred. See umfpack_triplet_to_col.h for details. If Map is present (a non-NULL pointer to an Int array of size nz), then on @@ -72,7 +71,11 @@ GLOBAL Int UMFPACK_triplet_to_col /* ---------------------------------------------------------------------- */ Int *RowCount, *Rp, *Rj, *W, nn, do_values, do_map, *Map2, status ; - double *Rx, *Rz ; + double *Rx ; +#ifdef COMPLEX + double *Rz ; + Int split ; +#endif #ifndef NDEBUG UMF_dump_start ( ) ; @@ -105,36 +108,32 @@ GLOBAL Int UMFPACK_triplet_to_col /* ---------------------------------------------------------------------- */ Rx = (double *) NULL ; - Rz = (double *) NULL ; -#ifdef COMPLEX - do_values = Ax && Tx && Az && Tz ; + do_values = Ax && Tx ; + if (do_values) { - Rx = (double *) UMF_malloc (nz+1, sizeof (double)) ; - Rz = (double *) UMF_malloc (nz+1, sizeof (double)) ; - if (!Rx || !Rz) +#ifdef COMPLEX + Rx = (double *) UMF_malloc (2*nz+2, sizeof (double)) ; + split = SPLIT (Tz) && SPLIT (Az) ; + if (split) { - DEBUGm4 (("out of memory: triplet work (complex)\n")) ; - (void) UMF_free ((void *) Rx) ; - (void) UMF_free ((void *) Rz) ; - ASSERT (UMF_malloc_count == init_count) ; - return (UMFPACK_ERROR_out_of_memory) ; + Rz = Rx + nz ; + } + else + { + Rz = (double *) NULL ; } - } #else - do_values = Ax && Tx ; - if (do_values) - { Rx = (double *) UMF_malloc (nz+1, sizeof (double)) ; +#endif if (!Rx) { - DEBUGm4 (("out of memory: triplet work (real)\n")) ; + DEBUGm4 (("out of memory: triplet work \n")) ; ASSERT (UMF_malloc_count == init_count) ; return (UMFPACK_ERROR_out_of_memory) ; } } -#endif do_map = (Map != (Int *) NULL) ; Map2 = (Int *) NULL ; @@ -146,7 +145,6 @@ GLOBAL Int UMFPACK_triplet_to_col { DEBUGm4 (("out of memory: triplet map\n")) ; (void) UMF_free ((void *) Rx) ; - (void) UMF_free ((void *) Rz) ; ASSERT (UMF_malloc_count == init_count) ; return (UMFPACK_ERROR_out_of_memory) ; } @@ -160,7 +158,6 @@ GLOBAL Int UMFPACK_triplet_to_col { DEBUGm4 (("out of memory: triplet work (int)\n")) ; (void) UMF_free ((void *) Rx) ; - (void) UMF_free ((void *) Rz) ; (void) UMF_free ((void *) Map2) ; (void) UMF_free ((void *) Rp) ; (void) UMF_free ((void *) Rj) ; @@ -171,7 +168,7 @@ GLOBAL Int UMFPACK_triplet_to_col } ASSERT (UMF_malloc_count == init_count + 4 + - (Rx != (double *) NULL) + (Rz != (double *) NULL) + do_map) ; + (Rx != (double *) NULL) + do_map) ; /* ---------------------------------------------------------------------- */ /* convert from triplet to column form */ @@ -217,7 +214,6 @@ GLOBAL Int UMFPACK_triplet_to_col /* ---------------------------------------------------------------------- */ (void) UMF_free ((void *) Rx) ; - (void) UMF_free ((void *) Rz) ; (void) UMF_free ((void *) Map2) ; (void) UMF_free ((void *) Rp) ; (void) UMF_free ((void *) Rj) ; -- 2.39.5

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%0A3V!BEE!XfVTy|t&PU`b@JF#{f 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