From e922dce38bcfc21826358341665c8cf83f4c829d Mon Sep 17 00:00:00 2001 From: Michele Martone Date: Mon, 28 Mar 2011 11:27:25 +0000 Subject: [PATCH] mld2p4-2: MLD's constants are back authoritative in the .F90 file. the .h file is a slave one: built from the .F90. in a script for the (by hand, no Makefile rule for now) conversion. --- mlprec/mlc2mlh.sh | 13 ++ mlprec/mld_base_prec_type.F90 | 189 ++++++++++++++------------- mlprec/mld_const.h | 233 ++++++++++++++-------------------- 3 files changed, 205 insertions(+), 230 deletions(-) create mode 100755 mlprec/mlc2mlh.sh diff --git a/mlprec/mlc2mlh.sh b/mlprec/mlc2mlh.sh new file mode 100755 index 00000000..4687657d --- /dev/null +++ b/mlprec/mlc2mlh.sh @@ -0,0 +1,13 @@ +#!/bin/bash +hn=mld_const.h +fn=mld_base_prec_type.F90 +echo "/* This file was generated by a script using the $fn file as a basis. */" > $hn +echo '#ifdef __cplusplus' >> $hn +echo 'extern "C" { ' >> $hn +echo '#endif' >> $hn +cat $fn | sed 's/=/= (/g;s/$/ )/g' | grep '\(^ *!\)\|parameter' | grep '_\>' | sed 's/^\s*//g;s/^.*:://g;s/\s*=\s*/ /g' | sed 's/,/\n/g;s/^ //g' | tr '[:lower:]' '[:upper:]' | grep ^MLD | sed 's/^/#define /g' >> $hn +echo '#ifdef __cplusplus' >> $hn +echo '}' >> $hn +echo '#endif' >> $hn +exit + diff --git a/mlprec/mld_base_prec_type.F90 b/mlprec/mld_base_prec_type.F90 index 31127295..543966bd 100644 --- a/mlprec/mld_base_prec_type.F90 +++ b/mlprec/mld_base_prec_type.F90 @@ -54,7 +54,6 @@ ! - printing a description of the preconditioner; ! - deallocating the preconditioner data structure. ! -#include "mld_const.h" module mld_base_prec_type @@ -82,7 +81,7 @@ module mld_base_prec_type ! ! Version numbers ! - character(len=*), parameter :: mld_version_string_ = MLD_VERSION_STRING_ + character(len=*), parameter :: mld_version_string_ = "2.0.0" integer, parameter :: mld_version_major_ = 2 integer, parameter :: mld_version_minor_ = 0 integer, parameter :: mld_patchlevel_ = 0 @@ -124,153 +123,153 @@ module mld_base_prec_type ! ! These are in baseprec ! - integer, parameter :: mld_smoother_type_ = MLD_SMOOTHER_TYPE_ - integer, parameter :: mld_sub_solve_ = MLD_SUB_SOLVE_ - integer, parameter :: mld_sub_restr_ = MLD_SUB_RESTR_ - integer, parameter :: mld_sub_prol_ = MLD_SUB_PROL_ - integer, parameter :: mld_sub_ren_ = MLD_SUB_REN_ - integer, parameter :: mld_sub_ovr_ = MLD_SUB_OVR_ - integer, parameter :: mld_sub_fillin_ = MLD_SUB_FILLIN_ + integer, parameter :: mld_smoother_type_ = 1 + integer, parameter :: mld_sub_solve_ = 2 + integer, parameter :: mld_sub_restr_ = 3 + integer, parameter :: mld_sub_prol_ = 4 + integer, parameter :: mld_sub_ren_ = 5 + integer, parameter :: mld_sub_ovr_ = 6 + integer, parameter :: mld_sub_fillin_ = 8 !! 2 ints for 64 bit versions - integer, parameter :: mld_slu_ptr_ = MLD_SLU_PTR_ - integer, parameter :: mld_umf_symptr_ = MLD_UMF_SYMPTR_ - integer, parameter :: mld_umf_numptr_ = MLD_UMF_NUMPTR_ - integer, parameter :: mld_slud_ptr_ = MLD_SLUD_PTR_ - integer, parameter :: mld_prec_status_ = MLD_PREC_STATUS_ + integer, parameter :: mld_slu_ptr_ = 10 + integer, parameter :: mld_umf_symptr_ = 12 + integer, parameter :: mld_umf_numptr_ = 14 + integer, parameter :: mld_slud_ptr_ = 16 + integer, parameter :: mld_prec_status_ = 18 ! ! These are in onelev ! - integer, parameter :: mld_ml_type_ = MLD_ML_TYPE_ - integer, parameter :: mld_smoother_sweeps_pre_ = MLD_SMOOTHER_SWEEPS_PRE_ - integer, parameter :: mld_smoother_sweeps_post_ = MLD_SMOOTHER_SWEEPS_POST_ - integer, parameter :: mld_smoother_pos_ = MLD_SMOOTHER_POS_ - integer, parameter :: mld_aggr_kind_ = MLD_AGGR_KIND_ - integer, parameter :: mld_aggr_alg_ = MLD_AGGR_ALG_ - integer, parameter :: mld_aggr_omega_alg_ = MLD_AGGR_OMEGA_ALG_ - integer, parameter :: mld_aggr_eig_ = MLD_AGGR_EIG_ - integer, parameter :: mld_aggr_filter_ = MLD_AGGR_FILTER_ - integer, parameter :: mld_coarse_mat_ = MLD_COARSE_MAT_ - integer, parameter :: mld_coarse_solve_ = MLD_COARSE_SOLVE_ - integer, parameter :: mld_coarse_sweeps_ = MLD_COARSE_SWEEPS_ - integer, parameter :: mld_coarse_fillin_ = MLD_COARSE_FILLIN_ - integer, parameter :: mld_coarse_subsolve_ = MLD_COARSE_SUBSOLVE_ - integer, parameter :: mld_smoother_sweeps_ = MLD_SMOOTHER_SWEEPS_ - integer, parameter :: mld_ifpsz_ = MLD_IFPSZ_ + integer, parameter :: mld_ml_type_ = 20 + integer, parameter :: mld_smoother_sweeps_pre_ = 21 + integer, parameter :: mld_smoother_sweeps_post_ = 22 + integer, parameter :: mld_smoother_pos_ = 23 + integer, parameter :: mld_aggr_kind_ = 24 + integer, parameter :: mld_aggr_alg_ = 25 + integer, parameter :: mld_aggr_omega_alg_ = 26 + integer, parameter :: mld_aggr_eig_ = 27 + integer, parameter :: mld_aggr_filter_ = 28 + integer, parameter :: mld_coarse_mat_ = 29 + integer, parameter :: mld_coarse_solve_ = 30 + integer, parameter :: mld_coarse_sweeps_ = 31 + integer, parameter :: mld_coarse_fillin_ = 32 + integer, parameter :: mld_coarse_subsolve_ = 33 + integer, parameter :: mld_smoother_sweeps_ = 34 + integer, parameter :: mld_ifpsz_ = 36 ! ! Legal values for entry: mld_smoother_type_ ! - integer, parameter :: mld_min_prec_ = MLD_MIN_PREC_ - integer, parameter :: mld_noprec_ = MLD_NOPREC_ - integer, parameter :: mld_jac_ = MLD_JAC_ - integer, parameter :: mld_bjac_ = MLD_BJAC_ - integer, parameter :: mld_as_ = MLD_AS_ - integer, parameter :: mld_max_prec_ = MLD_MAX_PREC_ + integer, parameter :: mld_min_prec_ = 0 + integer, parameter :: mld_noprec_ = 0 + integer, parameter :: mld_jac_ = 1 + integer, parameter :: mld_bjac_ = 2 + integer, parameter :: mld_as_ = 3 + integer, parameter :: mld_max_prec_ = 3 ! ! This is a quick&dirty fix, but I have nothing better now... ! ! Legal values for entry: mld_sub_solve_ ! - integer, parameter :: mld_slv_delta_ = MLD_SLV_DELTA_ - integer, parameter :: mld_f_none_ = MLD_F_NONE_ - integer, parameter :: mld_diag_scale_ = MLD_DIAG_SCALE_ - integer, parameter :: mld_ilu_n_ = MLD_ILU_N_ - integer, parameter :: mld_milu_n_ = MLD_MILU_N_ - integer, parameter :: mld_ilu_t_ = MLD_ILU_T_ - integer, parameter :: mld_slu_ = MLD_SLU_ - integer, parameter :: mld_umf_ = MLD_UMF_ - integer, parameter :: mld_sludist_ = MLD_SLUDIST_ - integer, parameter :: mld_max_sub_solve_= MLD_MAX_SUB_SOLVE_ - integer, parameter :: mld_min_sub_solve_= MLD_MIN_SUB_SOLVE_ + integer, parameter :: mld_slv_delta_ = mld_max_prec_+1 + integer, parameter :: mld_f_none_ = mld_slv_delta_+0 + integer, parameter :: mld_diag_scale_ = mld_slv_delta_+1 + integer, parameter :: mld_ilu_n_ = mld_slv_delta_+2 + integer, parameter :: mld_milu_n_ = mld_slv_delta_+3 + integer, parameter :: mld_ilu_t_ = mld_slv_delta_+4 + integer, parameter :: mld_slu_ = mld_slv_delta_+5 + integer, parameter :: mld_umf_ = mld_slv_delta_+6 + integer, parameter :: mld_sludist_ = mld_slv_delta_+7 + integer, parameter :: mld_max_sub_solve_= mld_slv_delta_+7 + integer, parameter :: mld_min_sub_solve_= mld_diag_scale_ ! ! Legal values for entry: mld_sub_ren_ ! - integer, parameter :: mld_renum_none_= MLD_RENUM_NONE_ - integer, parameter :: mld_renum_glb_= MLD_RENUM_GLB_ - integer, parameter :: mld_renum_gps_= MLD_RENUM_GPS_ + integer, parameter :: mld_renum_none_=0 + integer, parameter :: mld_renum_glb_=1 + integer, parameter :: mld_renum_gps_=2 ! For the time being we are disabling GPS renumbering. - integer, parameter :: mld_max_renum_= MLD_MAX_RENUM_ + integer, parameter :: mld_max_renum_=1 ! ! Legal values for entry: mld_ml_type_ ! - integer, parameter :: mld_no_ml_ = MLD_NO_ML_ - integer, parameter :: mld_add_ml_ = MLD_ADD_ML_ - integer, parameter :: mld_mult_ml_ = MLD_MULT_ML_ - integer, parameter :: mld_new_ml_prec_ = MLD_NEW_ML_PREC_ - integer, parameter :: mld_max_ml_type_ = MLD_MAX_ML_TYPE_ + integer, parameter :: mld_no_ml_ = 0 + integer, parameter :: mld_add_ml_ = 1 + integer, parameter :: mld_mult_ml_ = 2 + integer, parameter :: mld_new_ml_prec_ = 3 + integer, parameter :: mld_max_ml_type_ = mld_mult_ml_ ! ! Legal values for entry: mld_smoother_pos_ ! - integer, parameter :: mld_pre_smooth_= MLD_PRE_SMOOTH_ - integer, parameter :: mld_post_smooth_= MLD_POST_SMOOTH_ - integer, parameter :: mld_twoside_smooth_= MLD_TWOSIDE_SMOOTH_ - integer, parameter :: mld_max_smooth_= MLD_MAX_SMOOTH_ + integer, parameter :: mld_pre_smooth_=1 + integer, parameter :: mld_post_smooth_=2 + integer, parameter :: mld_twoside_smooth_=3 + integer, parameter :: mld_max_smooth_=mld_twoside_smooth_ ! ! Legal values for entry: mld_aggr_kind_ ! - integer, parameter :: mld_no_smooth_ = MLD_NO_SMOOTH_ - integer, parameter :: mld_smooth_prol_ = MLD_SMOOTH_PROL_ - integer, parameter :: mld_min_energy_ = MLD_MIN_ENERGY_ - integer, parameter :: mld_biz_prol_ = MLD_BIZ_PROL_ + integer, parameter :: mld_no_smooth_ = 0 + integer, parameter :: mld_smooth_prol_ = 1 + integer, parameter :: mld_min_energy_ = 2 + integer, parameter :: mld_biz_prol_ = 3 ! Disabling biz_prol for the time being. - integer, parameter :: mld_max_aggr_kind_= MLD_MAX_AGGR_KIND_ + integer, parameter :: mld_max_aggr_kind_=mld_min_energy_ ! ! Legal values for entry: mld_aggr_filter_ ! - integer, parameter :: mld_no_filter_mat_= MLD_NO_FILTER_MAT_ - integer, parameter :: mld_filter_mat_= MLD_FILTER_MAT_ - integer, parameter :: mld_max_filter_mat_= MLD_MAX_FILTER_MAT_ + integer, parameter :: mld_no_filter_mat_=0 + integer, parameter :: mld_filter_mat_=1 + integer, parameter :: mld_max_filter_mat_=mld_no_filter_mat_ ! ! Legal values for entry: mld_aggr_alg_ ! - integer, parameter :: mld_dec_aggr_= MLD_DEC_AGGR_ - integer, parameter :: mld_sym_dec_aggr_= MLD_SYM_DEC_AGGR_ - integer, parameter :: mld_glb_aggr_= MLD_GLB_AGGR_ - integer, parameter :: mld_new_dec_aggr_= MLD_NEW_DEC_AGGR_ - integer, parameter :: mld_new_glb_aggr_= MLD_NEW_GLB_AGGR_ - integer, parameter :: mld_max_aggr_alg_= MLD_MAX_AGGR_ALG_ + integer, parameter :: mld_dec_aggr_=0 + integer, parameter :: mld_sym_dec_aggr_=1 + integer, parameter :: mld_glb_aggr_=2 + integer, parameter :: mld_new_dec_aggr_=3 + integer, parameter :: mld_new_glb_aggr_=4 + integer, parameter :: mld_max_aggr_alg_=mld_dec_aggr_ ! ! Legal values for entry: mld_aggr_omega_alg_ ! - integer, parameter :: mld_eig_est_= MLD_EIG_EST_ - integer, parameter :: mld_user_choice_= MLD_USER_CHOICE_ + integer, parameter :: mld_eig_est_=0 + integer, parameter :: mld_user_choice_=999 ! ! Legal values for entry: mld_aggr_eig_ ! - integer, parameter :: mld_max_norm_= MLD_MAX_NORM_ + integer, parameter :: mld_max_norm_=0 ! ! Legal values for entry: mld_coarse_mat_ ! - integer, parameter :: mld_distr_mat_= MLD_DISTR_MAT_ - integer, parameter :: mld_repl_mat_= MLD_REPL_MAT_ - integer, parameter :: mld_max_coarse_mat_= MLD_MAX_COARSE_MAT_ + integer, parameter :: mld_distr_mat_=0 + integer, parameter :: mld_repl_mat_=1 + integer, parameter :: mld_max_coarse_mat_=mld_repl_mat_ ! ! Legal values for entry: mld_prec_status_ ! - integer, parameter :: mld_prec_built_= MLD_PREC_BUILT_ + integer, parameter :: mld_prec_built_=98765 ! ! Entries in rprcparm: ILU(k,t) threshold, smoothed aggregation omega ! - integer, parameter :: mld_sub_iluthrs_ = MLD_SUB_ILUTHRS_ - integer, parameter :: mld_aggr_omega_val_ = MLD_AGGR_OMEGA_VAL_ - integer, parameter :: mld_aggr_thresh_ = MLD_AGGR_THRESH_ - integer, parameter :: mld_coarse_iluthrs_ = MLD_COARSE_ILUTHRS_ - integer, parameter :: mld_rfpsz_ = MLD_RFPSZ_ + integer, parameter :: mld_sub_iluthrs_ = 1 + integer, parameter :: mld_aggr_omega_val_ = 2 + integer, parameter :: mld_aggr_thresh_ = 3 + integer, parameter :: mld_coarse_iluthrs_ = 4 + integer, parameter :: mld_rfpsz_ = 8 ! ! Fields for sparse matrices ensembles stored in av() ! - integer, parameter :: mld_l_pr_= MLD_L_PR_ - integer, parameter :: mld_u_pr_= MLD_U_PR_ - integer, parameter :: mld_bp_ilu_avsz_= MLD_BP_ILU_AVSZ_ - integer, parameter :: mld_ap_nd_= MLD_AP_ND_ - integer, parameter :: mld_ac_= MLD_AC_ - integer, parameter :: mld_sm_pr_t_= MLD_SM_PR_T_ - integer, parameter :: mld_sm_pr_= MLD_SM_PR_ - integer, parameter :: mld_smth_avsz_= MLD_SMTH_AVSZ_ - integer, parameter :: mld_max_avsz_= MLD_MAX_AVSZ_ + integer, parameter :: mld_l_pr_=1 + integer, parameter :: mld_u_pr_=2 + integer, parameter :: mld_bp_ilu_avsz_=2 + integer, parameter :: mld_ap_nd_=3 + integer, parameter :: mld_ac_=4 + integer, parameter :: mld_sm_pr_t_=5 + integer, parameter :: mld_sm_pr_=6 + integer, parameter :: mld_smth_avsz_=6 + integer, parameter :: mld_max_avsz_=mld_smth_avsz_ ! ! Character constants used by mld_file_prec_descr diff --git a/mlprec/mld_const.h b/mlprec/mld_const.h index c160a37e..2192a170 100644 --- a/mlprec/mld_const.h +++ b/mlprec/mld_const.h @@ -1,141 +1,104 @@ -/* - - MLD2P4 version 2.0 - MultiLevel Domain Decomposition Parallel Preconditioners Package - based on PSBLAS (Parallel Sparse BLAS version 3.0) - - (C) Copyright 2008,2009,2010 - - Salvatore Filippone University of Rome Tor Vergata - Alfredo Buttari CNRS-IRIT, Toulouse - Pasqua D'Ambra ICAR-CNR, Naples - Daniela di Serafino Second University of Naples - - Redistribution and use in source and binary forms, with or without - modification, are permitted provided that the following conditions - are met: - 1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - 2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions, and the following disclaimer in the - documentation and/or other materials provided with the distribution. - 3. The name of the MLD2P4 group or the names of its contributors may - not be used to endorse or promote products derived from this - software without specific written permission. - - THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS - ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED - TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR - PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE MLD2P4 GROUP OR ITS CONTRIBUTORS - BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - POSSIBILITY OF SUCH DAMAGE. -*/ - +/* This file was generated by a script using the mld_base_prec_type.F90 file as a basis. */ #ifdef __cplusplus extern "C" { #endif -#define MLD_VERSION_STRING_ "2.0.0" -#define MLD_VERSION_MAJOR_ 2 -#define MLD_VERSION_MINOR_ 0 -#define MLD_PATCHLEVEL_ 0 -#define MLD_SMOOTHER_TYPE_ 1 -#define MLD_SUB_SOLVE_ 2 -#define MLD_SUB_RESTR_ 3 -#define MLD_SUB_PROL_ 4 -#define MLD_SUB_REN_ 5 -#define MLD_SUB_OVR_ 6 -#define MLD_SUB_FILLIN_ 8 -#define MLD_SLU_PTR_ 10 -#define MLD_UMF_SYMPTR_ 12 -#define MLD_UMF_NUMPTR_ 14 -#define MLD_SLUD_PTR_ 16 -#define MLD_PREC_STATUS_ 18 -#define MLD_ML_TYPE_ 20 -#define MLD_SMOOTHER_SWEEPS_PRE_ 21 -#define MLD_SMOOTHER_SWEEPS_POST_ 22 -#define MLD_SMOOTHER_POS_ 23 -#define MLD_AGGR_KIND_ 24 -#define MLD_AGGR_ALG_ 25 -#define MLD_AGGR_OMEGA_ALG_ 26 -#define MLD_AGGR_EIG_ 27 -#define MLD_AGGR_FILTER_ 28 -#define MLD_COARSE_MAT_ 29 -#define MLD_COARSE_SOLVE_ 30 -#define MLD_COARSE_SWEEPS_ 31 -#define MLD_COARSE_FILLIN_ 32 -#define MLD_COARSE_SUBSOLVE_ 33 -#define MLD_SMOOTHER_SWEEPS_ 34 -#define MLD_IFPSZ_ 36 -#define MLD_MIN_PREC_ 0 -#define MLD_NOPREC_ 0 -#define MLD_JAC_ 1 -#define MLD_BJAC_ 2 -#define MLD_AS_ 3 -#define MLD_MAX_PREC_ 3 -#define MLD_SLV_DELTA_ MLD_MAX_PREC_+1 -#define MLD_F_NONE_ MLD_SLV_DELTA_+0 -#define MLD_DIAG_SCALE_ MLD_SLV_DELTA_+1 -#define MLD_ILU_N_ MLD_SLV_DELTA_+2 -#define MLD_MILU_N_ MLD_SLV_DELTA_+3 -#define MLD_ILU_T_ MLD_SLV_DELTA_+4 -#define MLD_SLU_ MLD_SLV_DELTA_+5 -#define MLD_UMF_ MLD_SLV_DELTA_+6 -#define MLD_SLUDIST_ MLD_SLV_DELTA_+7 -#define MLD_MAX_SUB_SOLVE_ MLD_SLV_DELTA_+7 -#define MLD_MIN_SUB_SOLVE_ MLD_DIAG_SCALE_ -#define MLD_RENUM_NONE_ 0 -#define MLD_RENUM_GLB_ 1 -#define MLD_RENUM_GPS_ 2 -#define MLD_MAX_RENUM_ 1 -#define MLD_NO_ML_ 0 -#define MLD_ADD_ML_ 1 -#define MLD_MULT_ML_ 2 -#define MLD_NEW_ML_PREC_ 3 -#define MLD_MAX_ML_TYPE_ MLD_MULT_ML_ -#define MLD_PRE_SMOOTH_ 1 -#define MLD_POST_SMOOTH_ 2 -#define MLD_TWOSIDE_SMOOTH_ 3 -#define MLD_MAX_SMOOTH_ MLD_TWOSIDE_SMOOTH_ -#define MLD_NO_SMOOTH_ 0 -#define MLD_SMOOTH_PROL_ 1 -#define MLD_MIN_ENERGY_ 2 -#define MLD_BIZ_PROL_ 3 -#define MLD_MAX_AGGR_KIND_ MLD_MIN_ENERGY_ -#define MLD_NO_FILTER_MAT_ 0 -#define MLD_FILTER_MAT_ 1 -#define MLD_MAX_FILTER_MAT_ MLD_NO_FILTER_MAT_ -#define MLD_DEC_AGGR_ 0 -#define MLD_SYM_DEC_AGGR_ 1 -#define MLD_GLB_AGGR_ 2 -#define MLD_NEW_DEC_AGGR_ 3 -#define MLD_NEW_GLB_AGGR_ 4 -#define MLD_MAX_AGGR_ALG_ MLD_DEC_AGGR_ -#define MLD_EIG_EST_ 0 -#define MLD_USER_CHOICE_ 999 -#define MLD_MAX_NORM_ 0 -#define MLD_DISTR_MAT_ 0 -#define MLD_REPL_MAT_ 1 -#define MLD_MAX_COARSE_MAT_ MLD_REPL_MAT_ -#define MLD_PREC_BUILT_ 98765 -#define MLD_SUB_ILUTHRS_ 1 -#define MLD_AGGR_OMEGA_VAL_ 2 -#define MLD_AGGR_THRESH_ 3 -#define MLD_COARSE_ILUTHRS_ 4 -#define MLD_RFPSZ_ 8 -#define MLD_L_PR_ 1 -#define MLD_U_PR_ 2 -#define MLD_BP_ILU_AVSZ_ 2 -#define MLD_AP_ND_ 3 -#define MLD_AC_ 4 -#define MLD_SM_PR_T_ 5 -#define MLD_SM_PR_ 6 -#define MLD_SMTH_AVSZ_ 6 -#define MLD_MAX_AVSZ_ MLD_SMTH_AVSZ_ +#define MLD_VERSION_STRING_ ( "2.0.0" ) +#define MLD_VERSION_MAJOR_ ( 2 ) +#define MLD_VERSION_MINOR_ ( 0 ) +#define MLD_PATCHLEVEL_ ( 0 ) +#define MLD_SMOOTHER_TYPE_ ( 1 ) +#define MLD_SUB_SOLVE_ ( 2 ) +#define MLD_SUB_RESTR_ ( 3 ) +#define MLD_SUB_PROL_ ( 4 ) +#define MLD_SUB_REN_ ( 5 ) +#define MLD_SUB_OVR_ ( 6 ) +#define MLD_SUB_FILLIN_ ( 8 ) +#define MLD_SLU_PTR_ ( 10 ) +#define MLD_UMF_SYMPTR_ ( 12 ) +#define MLD_UMF_NUMPTR_ ( 14 ) +#define MLD_SLUD_PTR_ ( 16 ) +#define MLD_PREC_STATUS_ ( 18 ) +#define MLD_ML_TYPE_ ( 20 ) +#define MLD_SMOOTHER_SWEEPS_PRE_ ( 21 ) +#define MLD_SMOOTHER_SWEEPS_POST_ ( 22 ) +#define MLD_SMOOTHER_POS_ ( 23 ) +#define MLD_AGGR_KIND_ ( 24 ) +#define MLD_AGGR_ALG_ ( 25 ) +#define MLD_AGGR_OMEGA_ALG_ ( 26 ) +#define MLD_AGGR_EIG_ ( 27 ) +#define MLD_AGGR_FILTER_ ( 28 ) +#define MLD_COARSE_MAT_ ( 29 ) +#define MLD_COARSE_SOLVE_ ( 30 ) +#define MLD_COARSE_SWEEPS_ ( 31 ) +#define MLD_COARSE_FILLIN_ ( 32 ) +#define MLD_COARSE_SUBSOLVE_ ( 33 ) +#define MLD_SMOOTHER_SWEEPS_ ( 34 ) +#define MLD_IFPSZ_ ( 36 ) +#define MLD_MIN_PREC_ ( 0 ) +#define MLD_NOPREC_ ( 0 ) +#define MLD_JAC_ ( 1 ) +#define MLD_BJAC_ ( 2 ) +#define MLD_AS_ ( 3 ) +#define MLD_MAX_PREC_ ( 3 ) +#define MLD_SLV_DELTA_ ( MLD_MAX_PREC_+1 ) +#define MLD_F_NONE_ ( MLD_SLV_DELTA_+0 ) +#define MLD_DIAG_SCALE_ ( MLD_SLV_DELTA_+1 ) +#define MLD_ILU_N_ ( MLD_SLV_DELTA_+2 ) +#define MLD_MILU_N_ ( MLD_SLV_DELTA_+3 ) +#define MLD_ILU_T_ ( MLD_SLV_DELTA_+4 ) +#define MLD_SLU_ ( MLD_SLV_DELTA_+5 ) +#define MLD_UMF_ ( MLD_SLV_DELTA_+6 ) +#define MLD_SLUDIST_ ( MLD_SLV_DELTA_+7 ) +#define MLD_MAX_SUB_SOLVE_ ( MLD_SLV_DELTA_+7 ) +#define MLD_MIN_SUB_SOLVE_ ( MLD_DIAG_SCALE_ ) +#define MLD_RENUM_NONE_ (0 ) +#define MLD_RENUM_GLB_ (1 ) +#define MLD_RENUM_GPS_ (2 ) +#define MLD_MAX_RENUM_ (1 ) +#define MLD_NO_ML_ ( 0 ) +#define MLD_ADD_ML_ ( 1 ) +#define MLD_MULT_ML_ ( 2 ) +#define MLD_NEW_ML_PREC_ ( 3 ) +#define MLD_MAX_ML_TYPE_ ( MLD_MULT_ML_ ) +#define MLD_PRE_SMOOTH_ (1 ) +#define MLD_POST_SMOOTH_ (2 ) +#define MLD_TWOSIDE_SMOOTH_ (3 ) +#define MLD_MAX_SMOOTH_ (MLD_TWOSIDE_SMOOTH_ ) +#define MLD_NO_SMOOTH_ ( 0 ) +#define MLD_SMOOTH_PROL_ ( 1 ) +#define MLD_MIN_ENERGY_ ( 2 ) +#define MLD_BIZ_PROL_ ( 3 ) +#define MLD_MAX_AGGR_KIND_ (MLD_MIN_ENERGY_ ) +#define MLD_NO_FILTER_MAT_ (0 ) +#define MLD_FILTER_MAT_ (1 ) +#define MLD_MAX_FILTER_MAT_ (MLD_NO_FILTER_MAT_ ) +#define MLD_DEC_AGGR_ (0 ) +#define MLD_SYM_DEC_AGGR_ (1 ) +#define MLD_GLB_AGGR_ (2 ) +#define MLD_NEW_DEC_AGGR_ (3 ) +#define MLD_NEW_GLB_AGGR_ (4 ) +#define MLD_MAX_AGGR_ALG_ (MLD_DEC_AGGR_ ) +#define MLD_EIG_EST_ (0 ) +#define MLD_USER_CHOICE_ (999 ) +#define MLD_MAX_NORM_ (0 ) +#define MLD_DISTR_MAT_ (0 ) +#define MLD_REPL_MAT_ (1 ) +#define MLD_MAX_COARSE_MAT_ (MLD_REPL_MAT_ ) +#define MLD_PREC_BUILT_ (98765 ) +#define MLD_SUB_ILUTHRS_ ( 1 ) +#define MLD_AGGR_OMEGA_VAL_ ( 2 ) +#define MLD_AGGR_THRESH_ ( 3 ) +#define MLD_COARSE_ILUTHRS_ ( 4 ) +#define MLD_RFPSZ_ ( 8 ) +#define MLD_L_PR_ (1 ) +#define MLD_U_PR_ (2 ) +#define MLD_BP_ILU_AVSZ_ (2 ) +#define MLD_AP_ND_ (3 ) +#define MLD_AC_ (4 ) +#define MLD_SM_PR_T_ (5 ) +#define MLD_SM_PR_ (6 ) +#define MLD_SMTH_AVSZ_ (6 ) +#define MLD_MAX_AVSZ_ (MLD_SMTH_AVSZ_ ) #ifdef __cplusplus } #endif