Functions/Subroutines | |
| subroutine | c_matvec_user_c (trans, M, N, num_vect, Vin, Vout, ker) |
| ****** Fortran interface for the matvec function required by c_BPACK_construction_Matvec, inside which a c++ function pointer kerC_FuncHMatVec is called ******! It is assumed the kerC_FuncHMatVec interfaces with local input and output vectors, which assume an already ordered hierarchical matrix More... | |
| subroutine | c_matvec_user_c_md (Ndim, trans, M, N, num_vect, Vin, Vout, ker) |
| ****** Fortran interface for the matvec function required by c_BPACK_construction_Matvec, inside which a c++ function pointer kerC_FuncHMatVec is called ******! It is assumed the kerC_FuncHMatVec interfaces with local input and output vectors, which assume an already ordered hierarchical matrix More... | |
| subroutine | c_bmatvec_user_c (ker, block_o, trans, M, N, num_vect, Vin, ldi, Vout, ldo, a, b, ptree, stats, operand1) |
| ****** Fortran interface for the matvec function required by c_BF_randomized, inside which a c++ function pointer kerC_FuncBMatVec is called ******! It is assumed the kerC_FuncBMatVec does not need ldi and ldo! ******! It is assumed the kerC_FuncBMatVec interfaces with local input and output vectors, which assume already ordered rows/columns More... | |
| subroutine | c_c_bpack_createptree (nmpi, groupmembers, MPIcomm, ptree_Cptr) |
| **** C interface of process tree construction More... | |
| subroutine | c_c_bpack_createstats (stats_Cptr) |
| **** C interface of initializing statistics More... | |
| subroutine | c_c_bpack_getstats (stats_Cptr, nam, val_d) |
| **** C interface of getting one entry in stats More... | |
| subroutine | c_c_bpack_printstats (stats_Cptr, ptree_Cptr) |
| **** C interface of printing statistics More... | |
| subroutine | c_c_bpack_createoption (option_Cptr) |
| **** C interface of initializing option More... | |
| subroutine | c_c_bpack_copyoption (option_Cptr, option_Cptr1) |
| **** C interface of copy option More... | |
| subroutine | c_c_bpack_printoption (option_Cptr, ptree_Cptr) |
| **** C interface of printing option More... | |
| subroutine | c_c_bpack_getoption (option_Cptr, nam, val_d) |
| **** C interface of getting one entry in option, always returning double More... | |
| subroutine | c_c_bpack_setoption (option_Cptr, nam, val_Cptr) |
| **** C interface of set one entry in option More... | |
| subroutine | c_c_bpack_construct_element_compute (bmat_Cptr, option_Cptr, stats_Cptr, msh_Cptr, ker_Cptr, ptree_Cptr, C_FuncZmn, C_FuncZmnBlock, C_QuantApp) |
| **** C interface of matrix construction More... | |
| subroutine | c_c_bpack_md_construct_element_compute (Ndim, bmat_Cptr, option_Cptr, stats_Cptr, msh_Cptr, ker_Cptr, ptree_Cptr, C_FuncZmn_MD, C_QuantApp) |
| **** C interface of tensor construction More... | |
| subroutine | c_c_bpack_construct_init (N, Ndim, Locations, nns, nlevel, tree, Permutation, N_loc, bmat_Cptr, option_Cptr, stats_Cptr, msh_Cptr, ker_Cptr, ptree_Cptr, C_FuncDistmn, C_FuncNearFar, C_QuantApp) |
| **** C interface of matrix construction via entry evaluation More... | |
| subroutine | c_c_bpack_md_construct_init (Ns, Nmax, Ndim, Locations, Permutation, N_loc, bmat_Cptr, option_Cptr, stats_Cptr, msh_Cptr, ker_Cptr, ptree_Cptr, C_FuncNearFar_MD, C_QuantApp) |
| **** C interface of multi-dimensional BF construction via entry evaluation More... | |
| subroutine | c_c_bpack_new2old (msh_Cptr, newidx_loc, oldidx) |
| **** C interface of converting from new,local index to old, global index, the indexs start from 1 More... | |
| subroutine | c_c_bpack_md_new2old (Ndim, msh_Cptr, newidx_loc, oldidx) |
| **** C interface of converting from new,local index to old, global index, the indexs start from 1. Both newidx_loc and oldidx are Ndim dimensional. More... | |
| subroutine | c_c_singleindextomultiindex (Ndim, dims, single_index_in, multi_index) |
| **** C interface of Fortran subroutine c_SingleIndexToMultiIndex for converting single index to multi-index More... | |
| subroutine | c_c_multiindextosingleindex (Ndim, dims, single_index_in, multi_index) |
| **** C interface of Fortran subroutine c_MultiIndexToSingleIndex for converting multi-index to single index More... | |
| subroutine | c_c_bf_new2old_row (mshr_Cptr, newidx_loc, oldidx) |
| **** C interface of converting from new,local index to old, global index, the indexs start from 1 More... | |
| subroutine | c_c_bf_new2old_col (mshc_Cptr, newidx_loc, oldidx) |
| **** C interface of converting from new,local index to old, global index, the indexs start from 1 More... | |
| subroutine | c_c_bpack_construct_init_gram (N, Ndim, Locations, nns, nlevel, tree, Permutation, N_loc, bmat_Cptr, option_Cptr, stats_Cptr, msh_Cptr, ker_Cptr, ptree_Cptr, C_FuncZmn, C_FuncZmnBlock, C_QuantApp) |
| **** C interface of matrix construction via entry evaluation and using it for gram distance More... | |
| subroutine | c_c_bpack_construct_matvec_compute (bmat_Cptr, option_Cptr, stats_Cptr, msh_Cptr, ker_Cptr, ptree_Cptr, C_FuncHMatVec, C_QuantApp) |
| **** C interface of matrix construction via blackbox matvec More... | |
| subroutine | c_c_bf_construct_init (M, N, M_loc, N_loc, nnsr, nnsc, mshr_Cptr, mshc_Cptr, bf_Cptr, option_Cptr, stats_Cptr, msh_Cptr, ker_Cptr, ptree_Cptr, C_FuncDistmn, C_FuncNearFar, C_QuantApp) |
| **** C interface of BF construction via blackbox matvec or entry extraction More... | |
| subroutine | c_c_bf_construct_matvec_compute (bf_Cptr, option_Cptr, stats_Cptr, msh_Cptr, ker_Cptr, ptree_Cptr, C_FuncBMatVec, C_QuantApp) |
| **** C interface of BF construction via blackbox matvec More... | |
| subroutine | c_c_bf_construct_element_compute (bf_Cptr, option_Cptr, stats_Cptr, msh_Cptr, ker_Cptr, ptree_Cptr, C_FuncZmn, C_FuncZmnBlock, C_QuantApp) |
| **** C interface of BF construction via entry extraction More... | |
| subroutine | c_c_bpack_factor (bmat_Cptr, option_Cptr, stats_Cptr, ptree_Cptr, msh_Cptr) |
| **** C interface of BPACK factorization More... | |
| subroutine | c_c_bpack_solve (x, b, Nloc, Nrhs, bmat_Cptr, option_Cptr, stats_Cptr, ptree_Cptr) |
| **** C interface of BPACK solve More... | |
| subroutine | c_c_bpack_md_solve (Ndim, x, b, Nloc, Nrhs, bmat_Cptr, option_Cptr, stats_Cptr, ptree_Cptr, msh_Cptr) |
| **** C interface of H-tensor solve More... | |
| subroutine | c_c_bpack_tfqmr_noprecon (x, b, Nloc, Nrhs, option_Cptr, stats_Cptr, ptree_Cptr, ker_Cptr, C_FuncHMatVec, C_QuantApp) |
| **** C interface of a blackbox tfqmr without preconditioner, or assuming preconditioner is applied in the blackbox matvec More... | |
| subroutine | c_c_bpack_md_tfqmr_noprecon (Ndim, x, b, Nloc, Nrhs, option_Cptr, stats_Cptr, ptree_Cptr, ker_Cptr, C_FuncHMatVec_MD, C_QuantApp) |
| **** C interface of a blackbox tfqmr without preconditioner, or assuming preconditioner is applied in the blackbox matvec (tensor) More... | |
| subroutine | c_c_bf_mult (trans, xin, xout, Ninloc, Noutloc, Ncol, bf_for_Cptr, option_Cptr, stats_Cptr, ptree_Cptr) |
| **** C interface of butterfly-vector multiplication More... | |
| subroutine | c_c_bf_extractelement (block_Cptr, option_Cptr, msh_Cptr, stats_Cptr, ptree_Cptr, Ninter, Nallrows, Nallcols, Nalldat_loc, allrows, allcols, alldat_loc, rowidx, colidx, pgidx, Npmap, pmaps) |
| **** C interface of parallel extraction of a c_list of intersections from a block More... | |
| subroutine | c_c_bpack_extractelement (bmat_Cptr, option_Cptr, msh_Cptr, stats_Cptr, ptree_Cptr, Ninter, Nallrows, Nallcols, Nalldat_loc, allrows, allcols, alldat_loc, rowidx, colidx, pgidx, Npmap, pmaps) |
| **** C interface of parallel extraction of a c_list of intersections from a Bmat matrix More... | |
| subroutine | c_c_bpack_mult (trans, xin, xout, Ninloc, Noutloc, Ncol, bmat_Cptr, option_Cptr, stats_Cptr, ptree_Cptr) |
| **** C interface of BPACK-vector multiplication More... | |
| subroutine | c_c_bpack_md_mult (Ndim, trans, xin, xout, Ninloc, Noutloc, Ncol, bmat_Cptr, option_Cptr, stats_Cptr, ptree_Cptr, msh_Cptr) |
| **** C interface of c_BPACK_MD_Mult for BPACK_MD-vector multiply More... | |
| subroutine | c_c_bpack_inv_mult (trans, xin, xout, Ninloc, Noutloc, Ncol, bmat_Cptr, option_Cptr, stats_Cptr, ptree_Cptr) |
| **** C interface of BPACK(inverse)-vector multiplication More... | |
| subroutine | c_c_bpack_deletestats (stats_Cptr) |
| **** C interface of deleting statistics More... | |
| subroutine | c_c_bpack_deleteproctree (ptree_Cptr) |
| **** C interface of deleting process tree More... | |
| subroutine | c_c_bpack_deletemesh (msh_Cptr) |
| **** C interface of deleting c_mesh More... | |
| subroutine | c_c_bpack_deletekernelquant (ker_Cptr) |
| **** C interface of deleting c_kernelquant More... | |
| subroutine | c_c_bpack_delete (bmat_Cptr) |
| **** C interface of deleting HOBF More... | |
| subroutine | c_c_bf_deletebf (bf_Cptr) |
| **** C interface of deleting a BF More... | |
| subroutine | c_c_bpack_deleteoption (option_Cptr) |
| **** C interface of deleting c_Hoption More... | |
| subroutine | c_c_bpack_getversionnumber (v_major, v_minor, v_bugfix) |
| **** C interface of getting the version number of ButterflyPACK More... | |
| subroutine | c_c_bpack_treeindex_merged2child (idx_merge, idx_child) |
| **** C interface of converting the tree index to the index in one of its two child trees More... | |
| subroutine c_bpack_wrapper::c_bmatvec_user_c | ( | class(*) | ker, |
| type(c_matrixblock) | block_o, | ||
| character | trans, | ||
| integer | M, | ||
| integer | N, | ||
| integer | num_vect, | ||
| complex(kind=4), dimension(ldi, *) | Vin, | ||
| integer | ldi, | ||
| complex(kind=4), dimension(ldo, *) | Vout, | ||
| integer | ldo, | ||
| complex(kind=4) | a, | ||
| complex(kind=4) | b, | ||
| type(c_proctree) | ptree, | ||
| type(c_hstat) | stats, | ||
| class(*), optional | operand1 | ||
| ) |
****** Fortran interface for the matvec function required by c_BF_randomized, inside which a c++ function pointer kerC_FuncBMatVec is called
******! It is assumed the kerC_FuncBMatVec does not need ldi and ldo!
******! It is assumed the kerC_FuncBMatVec interfaces with local input and output vectors, which assume already ordered rows/columns
| ker | the structure containing kernel quantities |
| block_o | not referenced |
| trans | 'N', 'C' or 'T' |
| M | (local) row dimension of the block |
| N | (local) column dimension of the block |
| num_vect | number of vectors |
| Vin | input vector |
| ldi | leading dimension of Vin, needs to be M or N depending on trans |
| Vout | output vector |
| ldo | leading dimension of Vout, needs to be M or N depending on trans |
| a | Vout = a*A*Vin + b*Vout |
| b | Vout = a*A*Vin + b*Vout |
| ptree | the structure containing process tree |
| stats | the structure containing statistics |
| operand1 | not referenced |
| subroutine c_bpack_wrapper::c_c_bf_construct_element_compute | ( | type(c_ptr) | bf_Cptr, |
| type(c_ptr) | option_Cptr, | ||
| type(c_ptr) | stats_Cptr, | ||
| type(c_ptr) | msh_Cptr, | ||
| type(c_ptr) | ker_Cptr, | ||
| type(c_ptr) | ptree_Cptr, | ||
| type(c_funptr), intent(in), target, value | C_FuncZmn, | ||
| type(c_funptr), intent(in), target, value | C_FuncZmnBlock, | ||
| type(c_ptr), intent(in), target | C_QuantApp | ||
| ) |
**** C interface of BF construction via entry extraction
| bf_Cptr | the structure containing the block (inout) |
| option_Cptr | the structure containing option (in) |
| stats_Cptr | the structure containing statistics (inout) |
| msh_Cptr | the structure containing points and ordering information (in) |
| ker_Cptr | the structure containing kernel quantities (inout) |
| ptree_Cptr | the structure containing process tree (in) |
| C_FuncZmn | the C_pointer to user-provided function to sample mn^th entry of a block (in) |
| C_FuncZmnBlock | the C_pointer to user-provided function to extract a c_list of intersections from a block (in) |
| C_QuantApp | the C_pointer to user-defined quantities required to for entry evaluation,sampling,distance and compressibility test (in) |
**** allocate BPACK solver structures
**** delete neighours in msh
**** return the C address of BPACK structures to C caller

| subroutine c_bpack_wrapper::c_c_bf_construct_init | ( | integer | M, |
| integer | N, | ||
| integer | M_loc, | ||
| integer | N_loc, | ||
| integer, dimension(*) | nnsr, | ||
| integer, dimension(*) | nnsc, | ||
| type(c_ptr) | mshr_Cptr, | ||
| type(c_ptr) | mshc_Cptr, | ||
| type(c_ptr) | bf_Cptr, | ||
| type(c_ptr) | option_Cptr, | ||
| type(c_ptr) | stats_Cptr, | ||
| type(c_ptr) | msh_Cptr, | ||
| type(c_ptr) | ker_Cptr, | ||
| type(c_ptr) | ptree_Cptr, | ||
| type(c_funptr), intent(in), target, value | C_FuncDistmn, | ||
| type(c_funptr), intent(in), target, value | C_FuncNearFar, | ||
| type(c_ptr), intent(in), target | C_QuantApp | ||
| ) |
**** C interface of BF construction via blackbox matvec or entry extraction
| M,N | matrix size (in) |
| M_loc,N_loc | number of local row/column indices (out) |
| nnsr | (DIM knn*M) nearest neighbours(indexed from 1 to N) for each row (from 1 to M) provided by user (referenced if nogeo=3 or 4) |
| nnsc | (DIM knn*N) nearest neighbours(indexed from 1 to M) for each column (from 1 to N) provided by user (referenced if nogeo=3 or 4) |
| bf_Cptr | the structure containing the block (out) |
| option_Cptr | the structure containing option (in) |
| stats_Cptr | the structure containing statistics (inout) |
| msh_Cptr | the structure containing points and ordering information combined from mshr_Cptr and mshc_Cptr (out) |
| mshr_Cptr | the structure containing points and ordering information for the row dimension (in) |
| mshc_Cptr | the structure containing points and ordering information for the column dimension (in) |
| ker_Cptr | the structure containing kernel quantities (out) |
| ptree_Cptr | the structure containing process tree (in) |
| C_FuncDistmn | the C_pointer to user-provided function to compute distance between any row and column of the matrix |
| C_FuncNearFar | the C_pointer to user-provided function to determine whether a block (in permuted order) is compressible or not |
| C_QuantApp | the C_pointer to user-defined quantities required to for entry evaluation,sampling,distance and compressibility test (in) |
**** allocate BPACK solver structures
**** create a random seed
**** register the user-defined function and type in ker
**** generate mshxyz(1:Dimn,-N:M), needed in KNN
**** construct a c_list of k-nearest neighbours for each point
**** return the C address of BPACK structures to C caller

| subroutine c_bpack_wrapper::c_c_bf_construct_matvec_compute | ( | type(c_ptr) | bf_Cptr, |
| type(c_ptr) | option_Cptr, | ||
| type(c_ptr) | stats_Cptr, | ||
| type(c_ptr) | msh_Cptr, | ||
| type(c_ptr) | ker_Cptr, | ||
| type(c_ptr) | ptree_Cptr, | ||
| type(c_funptr), intent(in), target, value | C_FuncBMatVec, | ||
| type(c_ptr), intent(in), target | C_QuantApp | ||
| ) |
**** C interface of BF construction via blackbox matvec
| bf_Cptr | the structure containing the block (inout) |
| option_Cptr | the structure containing option (in) |
| stats_Cptr | the structure containing statistics (inout) |
| msh_Cptr | the structure containing points and ordering information (in) |
| ker_Cptr | the structure containing kernel quantities (inout) |
| ptree_Cptr | the structure containing process tree (in) |
| C_FuncBMatVec | the C_pointer to user-provided function to multiply A and A* with vectors (in) |
| C_QuantApp | the C_pointer to user-defined quantities required to for entry evaluation,sampling,distance and compressibility test (in) |
**** allocate BPACK solver structures
**** return the C address of BPACK structures to C caller

| subroutine c_bpack_wrapper::c_c_bf_deletebf | ( | type(c_ptr), intent(inout) | bf_Cptr | ) |
**** C interface of deleting a BF
| bf_Cptr | the structure containing BF |
| subroutine c_bpack_wrapper::c_c_bf_extractelement | ( | type(c_ptr), intent(in) | block_Cptr, |
| type(c_ptr), intent(in) | option_Cptr, | ||
| type(c_ptr), intent(in) | msh_Cptr, | ||
| type(c_ptr), intent(in) | stats_Cptr, | ||
| type(c_ptr), intent(in) | ptree_Cptr, | ||
| integer | Ninter, | ||
| integer | Nallrows, | ||
| integer | Nallcols, | ||
| integer*8 | Nalldat_loc, | ||
| integer, dimension(nallrows) | allrows, | ||
| integer, dimension(nallcols) | allcols, | ||
| complex(kind=4), dimension(nalldat_loc), target | alldat_loc, | ||
| integer, dimension(ninter) | rowidx, | ||
| integer, dimension(ninter) | colidx, | ||
| integer, dimension(ninter) | pgidx, | ||
| integer | Npmap, | ||
| integer, dimension(npmap, 3) | pmaps | ||
| ) |
**** C interface of parallel extraction of a c_list of intersections from a block
| block_Cptr | the structure containing the block |
| option_Cptr | the structure containing option |
| stats_Cptr | the structure containing statistics |
| ptree_Cptr | the structure containing process tree |
| msh_Cptr | the structure containing points and ordering information |
| pgidx | 1D array containing the process group number of each intersection, the number starts from 0 |
| Npmap | number of process groups |
| pmaps | 2D array (Npmapx3) containing number of process rows, number of process columns, and starting process ID in each intersection |
| Ninter | number of intersections |
| allrows | 1D array containing the global row indices (in original order starting from 1 to M) stacked together |
| allcols | 1D array containing the global column indices (in original order starting from 1 to N) stacked together |
| alldat_loc | 1D array containing the local entry values defined by pmaps (in column major) stacked together |
| rowidx | 1D array containing sizes of rows of each intersection |
| colidx | 1D array containing sizes of columns of each intersection |
| Nallrows | total number of rows |
| Nallcols | total number of columns |
| Nalldat_loc | total number of local entries |
| subroutine c_bpack_wrapper::c_c_bf_mult | ( | character(kind=c_char, len=1), dimension(*) | trans, |
| complex(kind=4), dimension(ninloc, ncol) | xin, | ||
| complex(kind=4), dimension(noutloc, ncol) | xout, | ||
| integer | Ninloc, | ||
| integer | Noutloc, | ||
| integer | Ncol, | ||
| type(c_ptr), intent(in) | bf_for_Cptr, | ||
| type(c_ptr), intent(in) | option_Cptr, | ||
| type(c_ptr), intent(in) | stats_Cptr, | ||
| type(c_ptr), intent(in) | ptree_Cptr | ||
| ) |
**** C interface of butterfly-vector multiplication
| xin | input vector |
| Ninloc | size of local input vectors |
| xout | output vector |
| Noutloc | size of local output vectors |
| Ncol | number of vectors |
| bf_for_Cptr | the structure containing butterfly |
| option_Cptr | the structure containing options |
| stats_Cptr | the structure containing statistics |
| ptree_Cptr | the structure containing process tree |
| trans | 'N', 'C' or 'T' |
| subroutine c_bpack_wrapper::c_c_bf_new2old_col | ( | type(c_ptr) | mshc_Cptr, |
| integer | newidx_loc, | ||
| integer | oldidx | ||
| ) |
**** C interface of converting from new,local index to old, global index, the indexs start from 1
| newidx_loc | new, local index, from 1 to Nloc (in) |
| oldidx | old, global index, from 1 to N (out) |
| mshr_Cptr | the structure containing points and ordering information for the column dimension (in) |
| subroutine c_bpack_wrapper::c_c_bf_new2old_row | ( | type(c_ptr) | mshr_Cptr, |
| integer | newidx_loc, | ||
| integer | oldidx | ||
| ) |
**** C interface of converting from new,local index to old, global index, the indexs start from 1
| newidx_loc | new, local index, from 1 to Nloc (in) |
| oldidx | old, global index, from 1 to N (out) |
| mshr_Cptr | the structure containing points and ordering information for the row dimension (in) |
| subroutine c_bpack_wrapper::c_c_bpack_construct_element_compute | ( | type(c_ptr) | bmat_Cptr, |
| type(c_ptr) | option_Cptr, | ||
| type(c_ptr) | stats_Cptr, | ||
| type(c_ptr) | msh_Cptr, | ||
| type(c_ptr) | ker_Cptr, | ||
| type(c_ptr) | ptree_Cptr, | ||
| type(c_funptr), intent(in), target, value | C_FuncZmn, | ||
| type(c_funptr), intent(in), target, value | C_FuncZmnBlock, | ||
| type(c_ptr), intent(in), target | C_QuantApp | ||
| ) |
**** C interface of matrix construction
| bmat_Cptr | the structure containing BPACK |
| option_Cptr | the structure containing option |
| stats_Cptr | the structure containing statistics |
| msh_Cptr | the structure containing points and ordering information |
| ker_Cptr | the structure containing kernel quantities |
| ptree_Cptr | the structure containing process tree |
| C_FuncZmn | the C_pointer to user-provided function to sample mn^th entry of the matrix |
| C_FuncZmnBlock | the C_pointer to user-provided function to sample a c_list of intersections of entries of the matrix |
| C_QuantApp | the C_pointer to user-defined quantities required to for entry evaluation,sampling,distance and compressibility test (in) |
**** allocate BPACK solver structures
**** register the user-defined function and type in ker
**** computation of the construction phase
**** delete neighours in msh
**** return the C address of BPACK structures to C caller

| subroutine c_bpack_wrapper::c_c_bpack_construct_init | ( | integer | N, |
| integer | Ndim, | ||
| real(kind=8), dimension(*) | Locations, | ||
| integer, dimension(*) | nns, | ||
| integer | nlevel, | ||
| integer, dimension(*) | tree, | ||
| integer, dimension(n) | Permutation, | ||
| integer | N_loc, | ||
| type(c_ptr) | bmat_Cptr, | ||
| type(c_ptr) | option_Cptr, | ||
| type(c_ptr) | stats_Cptr, | ||
| type(c_ptr) | msh_Cptr, | ||
| type(c_ptr) | ker_Cptr, | ||
| type(c_ptr) | ptree_Cptr, | ||
| type(c_funptr), intent(in), target, value | C_FuncDistmn, | ||
| type(c_funptr), intent(in), target, value | C_FuncNearFar, | ||
| type(c_ptr), intent(in), target | C_QuantApp | ||
| ) |
**** C interface of matrix construction via entry evaluation
| N | matrix size (in) |
| Ndim | data set dimensionality (not used if nogeo=1) |
| Locations | coordinates used for clustering (not used if nogeo=1) |
| nns | nearest neighbours provided by user (referenced if nogeo=3 or 4) |
| nlevel | the number of top levels that have been ordered (in) |
| tree | the order tree provided by the caller, if incomplete, the init routine will make it complete (inout) |
| Permutation | return the permutation vector new2old (indexed from 1) (out) |
| N_loc | number of local row/column indices (out) |
| bmat_Cptr | the structure containing BPACK (out) |
| option_Cptr | the structure containing option (in) |
| stats_Cptr | the structure containing statistics (inout) |
| msh_Cptr | the structure containing points and ordering information (out) |
| ker_Cptr | the structure containing kernel quantities (out) |
| ptree_Cptr | the structure containing process tree (in) |
| C_FuncDistmn | the C_pointer to user-provided function to compute distance between any row and column of the matrix |
| C_FuncNearFar | the C_pointer to user-provided function to determine whether a block (in permuted order) is compressible or not |
| C_QuantApp | the C_pointer to user-defined quantities required to for entry evaluation,sampling,distance and compressibility test (in) |
**** allocate BPACK solver structures
**** create a random seed
**** register the user-defined function and type in ker
**** make 0-element node a 1-element node
**** the geometry points are provided by user
**** return the permutation vector
**** return the C address of BPACK structures to C caller

| subroutine c_bpack_wrapper::c_c_bpack_construct_init_gram | ( | integer | N, |
| integer | Ndim, | ||
| real(kind=8), dimension(*) | Locations, | ||
| integer, dimension(*) | nns, | ||
| integer | nlevel, | ||
| integer, dimension(*) | tree, | ||
| integer, dimension(n) | Permutation, | ||
| integer | N_loc, | ||
| type(c_ptr) | bmat_Cptr, | ||
| type(c_ptr) | option_Cptr, | ||
| type(c_ptr) | stats_Cptr, | ||
| type(c_ptr) | msh_Cptr, | ||
| type(c_ptr) | ker_Cptr, | ||
| type(c_ptr) | ptree_Cptr, | ||
| type(c_funptr), intent(in), target, value | C_FuncZmn, | ||
| type(c_funptr), intent(in), target, value | C_FuncZmnBlock, | ||
| type(c_ptr), intent(in), target | C_QuantApp | ||
| ) |
**** C interface of matrix construction via entry evaluation and using it for gram distance
| N | matrix size (in) |
| Ndim | data set dimensionality (not used if nogeo=1) |
| Locations | coordinates used for clustering (not used if nogeo=1) |
| nns | nearest neighbours provided by user (referenced if nogeo=3 or 4) |
| nlevel | the number of top levels that have been ordered (in) |
| tree | the order tree provided by the caller, if incomplete, the init routine will make it complete (inout) |
| Permutation | return the permutation vector new2old (indexed from 1) (out) |
| N_loc | number of local row/column indices (out) |
| bmat_Cptr | the structure containing BPACK (out) |
| option_Cptr | the structure containing option (in) |
| stats_Cptr | the structure containing statistics (inout) |
| msh_Cptr | the structure containing points and ordering information (out) |
| ker_Cptr | the structure containing kernel quantities (out) |
| ptree_Cptr | the structure containing process tree (in) |
| C_FuncZmn | the C_pointer to user-provided function to sample mn^th entry of the matrix |
| C_FuncZmnBlock | the C_pointer to user-provided function to sample a c_list of intersections of entries of the matrix |
| C_QuantApp | the C_pointer to user-defined quantities required to for entry evaluation,sampling,distance and compressibility test (in) |
**** allocate BPACK solver structures
**** create a random seed
**** register the user-defined function and type in ker
**** make 0-element node a 1-element node
**** the geometry points are provided by user
**** return the permutation vector
**** return the C address of BPACK structures to C caller

| subroutine c_bpack_wrapper::c_c_bpack_construct_matvec_compute | ( | type(c_ptr) | bmat_Cptr, |
| type(c_ptr) | option_Cptr, | ||
| type(c_ptr) | stats_Cptr, | ||
| type(c_ptr) | msh_Cptr, | ||
| type(c_ptr) | ker_Cptr, | ||
| type(c_ptr) | ptree_Cptr, | ||
| type(c_funptr), intent(in), target, value | C_FuncHMatVec, | ||
| type(c_ptr), intent(in), target | C_QuantApp | ||
| ) |
**** C interface of matrix construction via blackbox matvec
| bmat_Cptr | the structure containing BPACK (inout) |
| option_Cptr | the structure containing option (in) |
| stats_Cptr | the structure containing statistics (inout) |
| msh_Cptr | the structure containing points and ordering information (in) |
| ker_Cptr | the structure containing kernel quantities (inout) |
| ptree_Cptr | the structure containing process tree (in) |
| C_FuncHMatVec | the C_pointer to user-provided function to multiply A and A* with vectors (in) |
| C_QuantApp | the C_pointer to user-defined quantities required to for entry evaluation,sampling,distance and compressibility test (in) |
**** register the user-defined function and type in ker
**** computation of the construction phase
**** return the C address of BPACK structures to C caller

| subroutine c_bpack_wrapper::c_c_bpack_copyoption | ( | type(c_ptr) | option_Cptr, |
| type(c_ptr) | option_Cptr1 | ||
| ) |
**** C interface of copy option
| option_Cptr | the structure containing option |
| option_Cptr1 | the structure containing option |
****copy BPACK options
| subroutine c_bpack_wrapper::c_c_bpack_createoption | ( | type(c_ptr) | option_Cptr | ) |
**** C interface of initializing option
| option_Cptr | the structure containing option |
**** set default BPACK options
| subroutine c_bpack_wrapper::c_c_bpack_createptree | ( | integer | nmpi, |
| integer, dimension(*) | groupmembers, | ||
| integer | MPIcomm, | ||
| type(c_ptr) | ptree_Cptr | ||
| ) |
**** C interface of process tree construction
| nmpi | number of MPIs for one BPACK |
| MPIcomm | MPI communicator from C caller |
| groupmembers | MPI ranks in MPIcomm for one BPACK |
| ptree_Cptr | the structure containing process tree |

| subroutine c_bpack_wrapper::c_c_bpack_createstats | ( | type(c_ptr), intent(out) | stats_Cptr | ) |
**** C interface of initializing statistics
| stats_Cptr | the structure containing statistics |
**** initialize statistics variables
| subroutine c_bpack_wrapper::c_c_bpack_delete | ( | type(c_ptr), intent(inout) | bmat_Cptr | ) |
**** C interface of deleting HOBF
| bmat_Cptr | the structure containing HOBF |
| subroutine c_bpack_wrapper::c_c_bpack_deletekernelquant | ( | type(c_ptr), intent(inout) | ker_Cptr | ) |
**** C interface of deleting c_kernelquant
| ker_Cptr | the structure containing c_kernelquant |
| subroutine c_bpack_wrapper::c_c_bpack_deletemesh | ( | type(c_ptr), intent(inout) | msh_Cptr | ) |
**** C interface of deleting c_mesh
| msh_Cptr | the structure containing c_mesh |
| subroutine c_bpack_wrapper::c_c_bpack_deleteoption | ( | type(c_ptr), intent(inout) | option_Cptr | ) |
**** C interface of deleting c_Hoption
| option_Cptr | the structure containing c_Hoption |
| subroutine c_bpack_wrapper::c_c_bpack_deleteproctree | ( | type(c_ptr), intent(inout) | ptree_Cptr | ) |
**** C interface of deleting process tree
| ptree_Cptr | the structure containing process tree |
| subroutine c_bpack_wrapper::c_c_bpack_deletestats | ( | type(c_ptr), intent(inout) | stats_Cptr | ) |
**** C interface of deleting statistics
| stats_Cptr | the structure containing statistics |
| subroutine c_bpack_wrapper::c_c_bpack_extractelement | ( | type(c_ptr), intent(in) | bmat_Cptr, |
| type(c_ptr), intent(in) | option_Cptr, | ||
| type(c_ptr), intent(in) | msh_Cptr, | ||
| type(c_ptr), intent(in) | stats_Cptr, | ||
| type(c_ptr), intent(in) | ptree_Cptr, | ||
| integer | Ninter, | ||
| integer | Nallrows, | ||
| integer | Nallcols, | ||
| integer*8 | Nalldat_loc, | ||
| integer, dimension(nallrows) | allrows, | ||
| integer, dimension(nallcols) | allcols, | ||
| complex(kind=4), dimension(nalldat_loc), target | alldat_loc, | ||
| integer, dimension(ninter) | rowidx, | ||
| integer, dimension(ninter) | colidx, | ||
| integer, dimension(ninter) | pgidx, | ||
| integer | Npmap, | ||
| integer, dimension(npmap, 3) | pmaps | ||
| ) |
**** C interface of parallel extraction of a c_list of intersections from a Bmat matrix
| Ninter | number of intersections |
| allrows | 1D array containing the global row indices (in original order starting from 0) stacked together |
| allcols | 1D array containing the global column indices (in original order starting from 0) stacked together |
| alldat_loc | 1D array containing the local entry values defined by pmaps (in column major) stacked together |
| rowidx | 1D array containing sizes of rows of each intersection |
| colidx | 1D array containing sizes of columns of each intersection |
| pgidx | 1D array containing the process group number of each intersection, the number starts from 0 |
| Npmap | number of process groups |
| pmaps | 2D array (Npmapx3) containing number of process rows, number of process columns, and starting process ID in each intersection |
| bmat_Cptr | the structure containing BPACK |
| option_Cptr | the structure containing option |
| stats_Cptr | the structure containing statistics |
| ptree_Cptr | the structure containing process tree |
| msh_Cptr | the structure containing points and ordering information |
| Nallrows | total number of rows |
| Nallcols | total number of columns |
| Nalldat_loc | total number of local entries |
| subroutine c_bpack_wrapper::c_c_bpack_factor | ( | type(c_ptr), intent(inout) | bmat_Cptr, |
| type(c_ptr) | option_Cptr, | ||
| type(c_ptr), intent(inout) | stats_Cptr, | ||
| type(c_ptr), intent(in) | ptree_Cptr, | ||
| type(c_ptr), intent(in) | msh_Cptr | ||
| ) |
**** C interface of BPACK factorization
| bmat_Cptr | the structure containing BPACK |
| option_Cptr | the structure containing option |
| stats_Cptr | the structure containing statistics |
| ptree_Cptr | the structure containing process tree |
| msh_Cptr | the structure containing points and ordering information (in) |

| subroutine c_bpack_wrapper::c_c_bpack_getoption | ( | type(c_ptr) | option_Cptr, |
| character(kind=c_char, len=1), dimension(*) | nam, | ||
| real(kind=8) | val_d | ||
| ) |
**** C interface of getting one entry in option, always returning double
| option_Cptr | the structure containing option |
| nam | name of the option |
| val_d | value of the option |
| subroutine c_bpack_wrapper::c_c_bpack_getstats | ( | type(c_ptr) | stats_Cptr, |
| character(kind=c_char, len=1), dimension(*) | nam, | ||
| real(kind=8) | val_d | ||
| ) |
**** C interface of getting one entry in stats
| stats_Cptr | the structure containing stats |
| nam | name of the stats |
| val_d | value of the stats |
| subroutine c_bpack_wrapper::c_c_bpack_getversionnumber | ( | integer | v_major, |
| integer | v_minor, | ||
| integer | v_bugfix | ||
| ) |
**** C interface of getting the version number of ButterflyPACK
| v_major | major version number |
| v_minor | minor version number |
| v_bugfix | bugfix version number |
| subroutine c_bpack_wrapper::c_c_bpack_inv_mult | ( | character(kind=c_char, len=1), dimension(*) | trans, |
| complex(kind=4), dimension(ninloc, ncol) | xin, | ||
| complex(kind=4), dimension(noutloc, ncol) | xout, | ||
| integer | Ninloc, | ||
| integer | Noutloc, | ||
| integer | Ncol, | ||
| type(c_ptr), intent(in) | bmat_Cptr, | ||
| type(c_ptr), intent(in) | option_Cptr, | ||
| type(c_ptr), intent(in) | stats_Cptr, | ||
| type(c_ptr), intent(in) | ptree_Cptr | ||
| ) |
**** C interface of BPACK(inverse)-vector multiplication
| xin | input vector |
| Ninloc | size of local input vectors |
| xout | output vector |
| Noutloc | size of local output vectors |
| Ncol | number of vectors |
| bmat_Cptr | the structure containing BPACK |
| option_Cptr | the structure containing option |
| stats_Cptr | the structure containing statistics |
| ptree_Cptr | the structure containing process tree |
| trans | 'C', 'T' or 'N' |

| subroutine c_bpack_wrapper::c_c_bpack_md_construct_element_compute | ( | integer | Ndim, |
| type(c_ptr) | bmat_Cptr, | ||
| type(c_ptr) | option_Cptr, | ||
| type(c_ptr) | stats_Cptr, | ||
| type(c_ptr) | msh_Cptr, | ||
| type(c_ptr) | ker_Cptr, | ||
| type(c_ptr) | ptree_Cptr, | ||
| type(c_funptr), intent(in), target, value | C_FuncZmn_MD, | ||
| type(c_ptr), intent(in), target | C_QuantApp | ||
| ) |
**** C interface of tensor construction
| Ndim | data dimensionality (in) |
| bmat_Cptr | the structure containing the hierarchical tensors |
| option_Cptr | the structure containing option |
| stats_Cptr | the structure containing statistics |
| msh_Cptr | the structure containing points and ordering information |
| ker_Cptr | the structure containing kernel quantities |
| ptree_Cptr | the structure containing process tree |
| C_FuncZmn_MD | the C_pointer to user-provided function to sample mn^th entry of the tensor |
| C_QuantApp | the C_pointer to user-defined quantities required to for entry evaluation,sampling,distance and compressibility test (in) |
**** allocate BPACK solver structures
**** register the user-defined function and type in ker
**** computation of the construction phase
**** delete neighours in msh
**** return the C address of BPACK structures to C caller

| subroutine c_bpack_wrapper::c_c_bpack_md_construct_init | ( | integer, dimension(ndim) | Ns, |
| integer | Nmax, | ||
| integer | Ndim, | ||
| real(kind=8), dimension(*) | Locations, | ||
| integer, dimension(nmax*ndim) | Permutation, | ||
| integer, dimension(ndim) | N_loc, | ||
| type(c_ptr) | bmat_Cptr, | ||
| type(c_ptr) | option_Cptr, | ||
| type(c_ptr) | stats_Cptr, | ||
| type(c_ptr) | msh_Cptr, | ||
| type(c_ptr) | ker_Cptr, | ||
| type(c_ptr) | ptree_Cptr, | ||
| type(c_funptr), intent(in), target, value | C_FuncNearFar_MD, | ||
| type(c_ptr), intent(in), target | C_QuantApp | ||
| ) |
**** C interface of multi-dimensional BF construction via entry evaluation
| Ns | size for each dimension (in) |
| Nmax | maximum size among all dimensions (in) |
| Ndim | data set dimensionality (in) |
| Locations | coordinates (1D coordinates per dimension) used for clustering (in) |
| Permutation | return the permutation vector (per dimension) new2old (indexed from 1) (out) |
| N_loc | number of local row/column indices (per dimension) (out) |
| bmat_Cptr | the structure containing the compressed operator (out) |
| option_Cptr | the structure containing option (in) |
| stats_Cptr | the structure containing statistics (inout) |
| msh_Cptr | the structure containing points and ordering information per dimension (out) |
| ker_Cptr | the structure containing kernel quantities (out) |
| ptree_Cptr | the structure containing process tree (in) |
| C_FuncNearFar_MD | the C_pointer to user-provided function to determine whether a block (in permuted order) is compressible or not |
| C_QuantApp | the C_pointer to user-defined quantities required to for entry evaluation,sampling,distance and compressibility test (in) |
**** allocate BPACK solver structures
**** create a random seed
**** register the user-defined function and type in ker
**** the geometry points are provided by user
**** return the permutation vector
**** return the C address of BPACK structures to C caller

| subroutine c_bpack_wrapper::c_c_bpack_md_mult | ( | integer | Ndim, |
| character(kind=c_char, len=1), dimension(*) | trans, | ||
| complex(kind=4), dimension(product(ninloc), ncol) | xin, | ||
| complex(kind=4), dimension(product(noutloc), ncol) | xout, | ||
| integer, dimension(ndim) | Ninloc, | ||
| integer, dimension(ndim) | Noutloc, | ||
| integer | Ncol, | ||
| type(c_ptr), intent(in) | bmat_Cptr, | ||
| type(c_ptr), intent(in) | option_Cptr, | ||
| type(c_ptr), intent(in) | stats_Cptr, | ||
| type(c_ptr), intent(in) | ptree_Cptr, | ||
| type(c_ptr) | msh_Cptr | ||
| ) |
**** C interface of c_BPACK_MD_Mult for BPACK_MD-vector multiply
| Ndim | dimensionality of the kernel |
| xin | input vector |
| Ninloc | size of local input vectors |
| xout | output vector |
| Noutloc | size of local output vectors |
| Ncol | number of vectors |
| bmat_Cptr | the structure containing BPACK |
| option_Cptr | the structure containing option |
| stats_Cptr | the structure containing statistics |
| ptree_Cptr | the structure containing process tree |
| msh_Cptr | the structure containing points and ordering information |
| trans | 'N', 'C' or 'T' |

| subroutine c_bpack_wrapper::c_c_bpack_md_new2old | ( | integer | Ndim, |
| type(c_ptr) | msh_Cptr, | ||
| integer, dimension(ndim) | newidx_loc, | ||
| integer, dimension(ndim) | oldidx | ||
| ) |
**** C interface of converting from new,local index to old, global index, the indexs start from 1. Both newidx_loc and oldidx are Ndim dimensional.
| newidx_loc | new, local index, from 1 to Nloc |
| oldidx | old, global index, from 1 to N (out) |
| msh_Cptr | the structure containing points and ordering information |
| subroutine c_bpack_wrapper::c_c_bpack_md_solve | ( | integer | Ndim, |
| complex(kind=4), dimension(product(nloc), nrhs) | x, | ||
| complex(kind=4), dimension(product(nloc), nrhs) | b, | ||
| integer, dimension(ndim) | Nloc, | ||
| integer | Nrhs, | ||
| type(c_ptr), intent(in) | bmat_Cptr, | ||
| type(c_ptr), intent(in) | option_Cptr, | ||
| type(c_ptr), intent(in) | stats_Cptr, | ||
| type(c_ptr), intent(in) | ptree_Cptr, | ||
| type(c_ptr), intent(in) | msh_Cptr | ||
| ) |
**** C interface of H-tensor solve
| Ndim | dimensionality |
| x | local solution vector |
| b | local RHS |
| Nloc | size of local RHS |
| Nrhs | number of RHSs |
| bmat_Cptr | the structure containing H-tensor |
| option_Cptr | the structure containing option |
| stats_Cptr | the structure containing statistics |
| ptree_Cptr | the structure containing process tree |
| msh_Cptr | the structure containing points and ordering information |

| subroutine c_bpack_wrapper::c_c_bpack_md_tfqmr_noprecon | ( | integer | Ndim, |
| complex(kind=4), dimension(product(nloc), nrhs) | x, | ||
| complex(kind=4), dimension(product(nloc), nrhs) | b, | ||
| integer, dimension(ndim) | Nloc, | ||
| integer | Nrhs, | ||
| type(c_ptr), intent(in) | option_Cptr, | ||
| type(c_ptr), intent(in) | stats_Cptr, | ||
| type(c_ptr), intent(in) | ptree_Cptr, | ||
| type(c_ptr) | ker_Cptr, | ||
| type(c_funptr), intent(in), target, value | C_FuncHMatVec_MD, | ||
| type(c_ptr), intent(in), target | C_QuantApp | ||
| ) |
**** C interface of a blackbox tfqmr without preconditioner, or assuming preconditioner is applied in the blackbox matvec (tensor)
| x | local solution vector |
| b | local RHS |
| Nloc | size of local RHS |
| Nrhs | number of RHSs |
| option_Cptr | the structure containing option |
| stats_Cptr | the structure containing statistics |
| ptree_Cptr | the structure containing process tree |
| C_QuantApp | the C_pointer to user-defined quantities required to for entry evaluation,sampling,distance and compressibility test (in) |
| ker_Cptr | the structure containing kernel quantities |
| C_FuncHMatVec_MD | the C_pointer to user-provided function to multiply A and A* with vectors (in) |
**** register the user-defined function and type in ker

| subroutine c_bpack_wrapper::c_c_bpack_mult | ( | character(kind=c_char, len=1), dimension(*) | trans, |
| complex(kind=4), dimension(ninloc, ncol) | xin, | ||
| complex(kind=4), dimension(noutloc, ncol) | xout, | ||
| integer | Ninloc, | ||
| integer | Noutloc, | ||
| integer | Ncol, | ||
| type(c_ptr), intent(in) | bmat_Cptr, | ||
| type(c_ptr), intent(in) | option_Cptr, | ||
| type(c_ptr), intent(in) | stats_Cptr, | ||
| type(c_ptr), intent(in) | ptree_Cptr | ||
| ) |
**** C interface of BPACK-vector multiplication
| xin | input vector |
| Ninloc | size of local input vectors |
| xout | output vector |
| Noutloc | size of local output vectors |
| Ncol | number of vectors |
| bmat_Cptr | the structure containing BPACK |
| option_Cptr | the structure containing option |
| stats_Cptr | the structure containing statistics |
| ptree_Cptr | the structure containing process tree |
| trans | 'N', 'C' or 'T' |

| subroutine c_bpack_wrapper::c_c_bpack_new2old | ( | type(c_ptr) | msh_Cptr, |
| integer | newidx_loc, | ||
| integer | oldidx | ||
| ) |
**** C interface of converting from new,local index to old, global index, the indexs start from 1
| newidx_loc | new, local index, from 1 to Nloc |
| oldidx | old, global index, from 1 to N (out) |
| msh_Cptr | the structure containing points and ordering information |
| subroutine c_bpack_wrapper::c_c_bpack_printoption | ( | type(c_ptr) | option_Cptr, |
| type(c_ptr) | ptree_Cptr | ||
| ) |
**** C interface of printing option
| option_Cptr | the structure containing option |
| ptree_Cptr | the structure containing process tree |
| subroutine c_bpack_wrapper::c_c_bpack_printstats | ( | type(c_ptr) | stats_Cptr, |
| type(c_ptr) | ptree_Cptr | ||
| ) |
**** C interface of printing statistics
| stats_Cptr | the structure containing statistics |
| ptree_Cptr | the structure containing process tree |
**** print statistics variables
| subroutine c_bpack_wrapper::c_c_bpack_setoption | ( | type(c_ptr) | option_Cptr, |
| character(kind=c_char, len=1), dimension(*) | nam, | ||
| type(c_ptr), value | val_Cptr | ||
| ) |
**** C interface of set one entry in option
| option_Cptr | the structure containing option |
| nam | name of the option |
| val_Cptr | value of the option |
**** integer parameters
**** double parameters
| subroutine c_bpack_wrapper::c_c_bpack_solve | ( | complex(kind=4), dimension(nloc, nrhs) | x, |
| complex(kind=4), dimension(nloc, nrhs) | b, | ||
| integer | Nloc, | ||
| integer | Nrhs, | ||
| type(c_ptr), intent(in) | bmat_Cptr, | ||
| type(c_ptr), intent(in) | option_Cptr, | ||
| type(c_ptr), intent(in) | stats_Cptr, | ||
| type(c_ptr), intent(in) | ptree_Cptr | ||
| ) |
**** C interface of BPACK solve
| x | local solution vector |
| b | local RHS |
| Nloc | size of local RHS |
| Nrhs | number of RHSs |
| bmat_Cptr | the structure containing BPACK |
| option_Cptr | the structure containing option |
| stats_Cptr | the structure containing statistics |
| ptree_Cptr | the structure containing process tree |

| subroutine c_bpack_wrapper::c_c_bpack_tfqmr_noprecon | ( | complex(kind=4), dimension(nloc, nrhs) | x, |
| complex(kind=4), dimension(nloc, nrhs) | b, | ||
| integer | Nloc, | ||
| integer | Nrhs, | ||
| type(c_ptr), intent(in) | option_Cptr, | ||
| type(c_ptr), intent(in) | stats_Cptr, | ||
| type(c_ptr), intent(in) | ptree_Cptr, | ||
| type(c_ptr) | ker_Cptr, | ||
| type(c_funptr), intent(in), target, value | C_FuncHMatVec, | ||
| type(c_ptr), intent(in), target | C_QuantApp | ||
| ) |
**** C interface of a blackbox tfqmr without preconditioner, or assuming preconditioner is applied in the blackbox matvec
| x | local solution vector |
| b | local RHS |
| Nloc | size of local RHS |
| Nrhs | number of RHSs |
| option_Cptr | the structure containing option |
| stats_Cptr | the structure containing statistics |
| ptree_Cptr | the structure containing process tree |
| C_QuantApp | the C_pointer to user-defined quantities required to for entry evaluation,sampling,distance and compressibility test (in) |
| ker_Cptr | the structure containing kernel quantities |
| C_FuncHMatVec | the C_pointer to user-provided function to multiply A and A* with vectors (in) |
**** register the user-defined function and type in ker

| subroutine c_bpack_wrapper::c_c_bpack_treeindex_merged2child | ( | integer | idx_merge, |
| integer | idx_child | ||
| ) |
**** C interface of converting the tree index to the index in one of its two child trees
| idx_merge | node number in the parent tree |
| idx_child | node number in one of the two child trees |

| subroutine c_bpack_wrapper::c_c_multiindextosingleindex | ( | integer | Ndim, |
| integer, dimension(ndim) | dims, | ||
| integer | single_index_in, | ||
| integer, dimension(ndim) | multi_index | ||
| ) |
**** C interface of Fortran subroutine c_MultiIndexToSingleIndex for converting multi-index to single index
| Ndim | dimensionality |
| dims(Ndim) | size of each dimension |
| single_index_in | single index |
| multi_index(Ndim) | multi_index **** convert single index to multi-index, assuming first index is the fastest |

| subroutine c_bpack_wrapper::c_c_singleindextomultiindex | ( | integer | Ndim, |
| integer, dimension(ndim) | dims, | ||
| integer | single_index_in, | ||
| integer, dimension(ndim) | multi_index | ||
| ) |
**** C interface of Fortran subroutine c_SingleIndexToMultiIndex for converting single index to multi-index
| Ndim | dimensionality |
| dims(Ndim) | size of each dimension |
| single_index_in | single index |
| multi_index(Ndim) | multi_index **** convert single index to multi-index, assuming first index is the fastest |

| subroutine c_bpack_wrapper::c_matvec_user_c | ( | character | trans, |
| integer, intent(in) | M, | ||
| integer, intent(in) | N, | ||
| integer, intent(in) | num_vect, | ||
| complex(kind=4), dimension(:, :) | Vin, | ||
| complex(kind=4), dimension(:, :) | Vout, | ||
| type(c_kernelquant) | ker | ||
| ) |
****** Fortran interface for the matvec function required by c_BPACK_construction_Matvec, inside which a c++ function pointer kerC_FuncHMatVec is called
******! It is assumed the kerC_FuncHMatVec interfaces with local input and output vectors, which assume an already ordered hierarchical matrix
| ker | the structure containing kernel quantities |
| Vin | input vector |
| Vout | output vector |
| M | (local) row dimension of the matrix |
| N | (local) column dimension of the matrix |
| trans | 'N', 'C' or 'T' |
| num_vect | number of vectors |
| subroutine c_bpack_wrapper::c_matvec_user_c_md | ( | integer | Ndim, |
| character | trans, | ||
| integer, dimension(ndim), intent(in) | M, | ||
| integer, dimension(ndim), intent(in) | N, | ||
| integer, intent(in) | num_vect, | ||
| complex(kind=4), dimension(:, :) | Vin, | ||
| complex(kind=4), dimension(:, :) | Vout, | ||
| type(c_kernelquant) | ker | ||
| ) |
****** Fortran interface for the matvec function required by c_BPACK_construction_Matvec, inside which a c++ function pointer kerC_FuncHMatVec is called
******! It is assumed the kerC_FuncHMatVec interfaces with local input and output vectors, which assume an already ordered hierarchical matrix
| ker | the structure containing kernel quantities |
| Vin | input vector |
| Vout | output vector |
| M | (local) row dimension of the matrix |
| N | (local) column dimension of the matrix |
| trans | 'N', 'C' or 'T' |
| num_vect | number of vectors |