mld2p4-2:

created a header file with symbolic constants and using them instead of the fortran constants. 
cat mld_base_prec_type.F90 | while read ; do
if [[ "$REPLY" =~ 'parameter ::'  ]]; then 
        UC=`echo "$REPLY" | sed "s/.*\(mld[a-z_0-9]*_\>\) *=.*$/\1/g" | perl -e  "while(<>){print(uc($_));};"` 
        echo "$REPLY" | sed "s/\(.*\)\(mld[a-z_0-9]*_\> *=\).*$/\1\2 $UC/g"
else echo "$REPLY" ;  fi ; done > tmpfile ; mv tmpfile mld_base_prec_type.F90 
hn=mld_const.h
echo '' > $hn 
echo '#ifdef __cplusplus' >> $hn 
echo 'extern "C" { ' >> $hn 
echo '#endif' >> $hn 
cat mld_base_prec_type.F90 | grep '\(^  *!\)\|parameter' | grep  '_\>'  | sed 's/^\s*//g;s/^.*:://g;s/\s*=\s*/ /g' | sed  's/,
/\n/g;s/^ //g'  | perl -e  "while(<>){print(uc($_));};" | grep ^MLD | sed 's/^/#define /g' >> $hn
#cat mld_base_prec_type.F90 | sed 's/\( parameter *:: *\)\(\<[a-z0-9_]*\>\) *=.*$/\1\2 = \2 UPPP/g'
echo '#ifdef __cplusplus' >> $hn 
echo '}' >> $hn 
echo '#endif' >> $hn
stopcriterion
Michele Martone 14 years ago
parent c52848be03
commit 69a7fc4208

@ -54,6 +54,7 @@
! - printing a description of the preconditioner;
! - deallocating the preconditioner data structure.
!
#include "mld_const.h"
module mld_base_prec_type
@ -81,7 +82,7 @@ module mld_base_prec_type
!
! Version numbers
!
character(len=*), parameter :: mld_version_string_ = "2.0.0"
character(len=*), parameter :: mld_version_string_ = MLD_VERSION_STRING_
integer, parameter :: mld_version_major_ = 2
integer, parameter :: mld_version_minor_ = 0
integer, parameter :: mld_patchlevel_ = 0
@ -123,153 +124,153 @@ module mld_base_prec_type
!
! These are in baseprec
!
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
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_
!! 2 ints for 64 bit versions
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
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_
!
! These are in onelev
!
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
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_
!
! Legal values for entry: mld_smoother_type_
!
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
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_
!
! 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_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_
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_
!
! Legal values for entry: mld_sub_ren_
!
integer, parameter :: mld_renum_none_=0
integer, parameter :: mld_renum_glb_=1
integer, parameter :: mld_renum_gps_=2
integer, parameter :: mld_renum_none_= MLD_RENUM_NONE_
integer, parameter :: mld_renum_glb_= MLD_RENUM_GLB_
integer, parameter :: mld_renum_gps_= MLD_RENUM_GPS_
! For the time being we are disabling GPS renumbering.
integer, parameter :: mld_max_renum_=1
integer, parameter :: mld_max_renum_= MLD_MAX_RENUM_
!
! Legal values for entry: mld_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_
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_
!
! Legal values for entry: mld_smoother_pos_
!
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_
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_
!
! Legal values for entry: mld_aggr_kind_
!
integer, parameter :: mld_no_smooth_ = 0
integer, parameter :: mld_smooth_prol_ = 1
integer, parameter :: mld_min_energy_ = 2
integer, parameter :: mld_biz_prol_ = 3
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_
! Disabling biz_prol for the time being.
integer, parameter :: mld_max_aggr_kind_=mld_min_energy_
integer, parameter :: mld_max_aggr_kind_= MLD_MAX_AGGR_KIND_
!
! Legal values for entry: mld_aggr_filter_
!
integer, parameter :: mld_no_filter_mat_=0
integer, parameter :: mld_filter_mat_=1
integer, parameter :: mld_max_filter_mat_=mld_no_filter_mat_
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_
!
! Legal values for entry: mld_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_
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_
!
! Legal values for entry: mld_aggr_omega_alg_
!
integer, parameter :: mld_eig_est_=0
integer, parameter :: mld_user_choice_=999
integer, parameter :: mld_eig_est_= MLD_EIG_EST_
integer, parameter :: mld_user_choice_= MLD_USER_CHOICE_
!
! Legal values for entry: mld_aggr_eig_
!
integer, parameter :: mld_max_norm_=0
integer, parameter :: mld_max_norm_= MLD_MAX_NORM_
!
! Legal values for entry: mld_coarse_mat_
!
integer, parameter :: mld_distr_mat_=0
integer, parameter :: mld_repl_mat_=1
integer, parameter :: mld_max_coarse_mat_=mld_repl_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_
!
! Legal values for entry: mld_prec_status_
!
integer, parameter :: mld_prec_built_=98765
integer, parameter :: mld_prec_built_= MLD_PREC_BUILT_
!
! Entries in rprcparm: ILU(k,t) threshold, smoothed aggregation omega
!
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
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_
!
! Fields for sparse matrices ensembles stored in av()
!
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_
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_
!
! Character constants used by mld_file_prec_descr

@ -0,0 +1,141 @@
/*
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.
*/
#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_
#ifdef __cplusplus
}
#endif
Loading…
Cancel
Save