1 /* 2 * 3 * This file is part of MUMPS 4.10.0, built on Tue May 10 12:56:32 UTC 2011 4 * 5 * 6 * This version of MUMPS is provided to you free of charge. It is public 7 * domain, based on public domain software developed during the Esprit IV 8 * European project PARASOL (1996-1999). Since this first public domain 9 * version in 1999, research and developments have been supported by the 10 * following institutions: CERFACS, CNRS, ENS Lyon, INPT(ENSEEIHT)-IRIT, 11 * INRIA, and University of Bordeaux. 12 * 13 * The MUMPS team at the moment of releasing this version includes 14 * Patrick Amestoy, Maurice Bremond, Alfredo Buttari, Abdou Guermouche, 15 * Guillaume Joslin, Jean-Yves L'Excellent, Francois-Henry Rouet, Bora 16 * Ucar and Clement Weisbecker. 17 * 18 * We are also grateful to Emmanuel Agullo, Caroline Bousquet, Indranil 19 * Chowdhury, Philippe Combes, Christophe Daniel, Iain Duff, Vincent Espirat, 20 * Aurelia Fevre, Jacko Koster, Stephane Pralet, Chiara Puglisi, Gregoire 21 * Richard, Tzvetomila Slavova, Miroslav Tuma and Christophe Voemel who 22 * have been contributing to this project. 23 * 24 * Up-to-date copies of the MUMPS package can be obtained 25 * from the Web pages: 26 * http://mumps.enseeiht.fr/ or http://graal.ens-lyon.fr/MUMPS 27 * 28 * 29 * THIS MATERIAL IS PROVIDED AS IS, WITH ABSOLUTELY NO WARRANTY 30 * EXPRESSED OR IMPLIED. ANY USE IS AT YOUR OWN RISK. 31 * 32 * 33 * User documentation of any code that uses this software can 34 * include this complete notice. You can acknowledge (using 35 * references [1] and [2]) the contribution of this package 36 * in any scientific publication dependent upon the use of the 37 * package. You shall use reasonable endeavours to notify 38 * the authors of the package of this publication. 39 * 40 * [1] P. R. Amestoy, I. S. Duff, J. Koster and J.-Y. L'Excellent, 41 * A fully asynchronous multifrontal solver using distributed dynamic 42 * scheduling, SIAM Journal of Matrix Analysis and Applications, 43 * Vol 23, No 1, pp 15-41 (2001). 44 * 45 * [2] P. R. Amestoy and A. Guermouche and J.-Y. L'Excellent and 46 * S. Pralet, Hybrid scheduling for the parallel solution of linear 47 * systems. Parallel Computing Vol 32 (2), pp 136-156 (2006). 48 * 49 */ 50 51 /* Mostly written in march 2002 (JYL) */ 52 53 #ifndef DMUMPS_C_H 54 #define DMUMPS_C_H 55 56 #ifdef __cplusplus 57 extern "C" { 58 #endif 59 60 #include "mumps_compat.h" 61 /* Next line defines MUMPS_INT, DMUMPS_COMPLEX and DMUMPS_REAL */ 62 #include "mumps_c_types.h" 63 64 #ifndef MUMPS_VERSION 65 /* Protected in case headers of other arithmetics are included */ 66 #define MUMPS_VERSION "4.10.0" 67 #endif 68 #ifndef MUMPS_VERSION_MAX_LEN 69 #define MUMPS_VERSION_MAX_LEN 14 70 #endif 71 72 /* 73 * Definition of the (simplified) MUMPS C structure. 74 * NB: DMUMPS_COMPLEX are REAL types in s and d arithmetics. 75 */ 76 typedef struct { 77 78 MUMPS_INT sym, par, job; 79 MUMPS_INT comm_fortran; /* Fortran communicator */ 80 MUMPS_INT icntl[40]; 81 DMUMPS_REAL cntl[15]; 82 MUMPS_INT n; 83 84 MUMPS_INT nz_alloc; /* used in matlab interface to decide if we 85 free + malloc when we have large variation */ 86 87 /* Assembled entry */ 88 MUMPS_INT nz; 89 MUMPS_INT *irn; 90 MUMPS_INT *jcn; 91 DMUMPS_COMPLEX *a; 92 93 /* Distributed entry */ 94 MUMPS_INT nz_loc; 95 MUMPS_INT *irn_loc; 96 MUMPS_INT *jcn_loc; 97 DMUMPS_COMPLEX *a_loc; 98 99 /* Element entry */ 100 MUMPS_INT nelt; 101 MUMPS_INT *eltptr; 102 MUMPS_INT *eltvar; 103 DMUMPS_COMPLEX *a_elt; 104 105 /* Ordering, if given by user */ 106 MUMPS_INT *perm_in; 107 108 /* Orderings returned to user */ 109 MUMPS_INT *sym_perm; /* symmetric permutation */ 110 MUMPS_INT *uns_perm; /* column permutation */ 111 112 /* Scaling (input only in this version) */ 113 DMUMPS_REAL *colsca; 114 DMUMPS_REAL *rowsca; 115 116 /* RHS, solution, ouptput data and statistics */ 117 DMUMPS_COMPLEX *rhs, *redrhs, *rhs_sparse, *sol_loc; 118 MUMPS_INT *irhs_sparse, *irhs_ptr, *isol_loc; 119 MUMPS_INT nrhs, lrhs, lredrhs, nz_rhs, lsol_loc; 120 MUMPS_INT schur_mloc, schur_nloc, schur_lld; 121 MUMPS_INT mblock, nblock, nprow, npcol; 122 MUMPS_INT info[40],infog[40]; 123 DMUMPS_REAL rinfo[40], rinfog[40]; 124 125 /* Null space */ 126 MUMPS_INT deficiency; 127 MUMPS_INT *pivnul_list; 128 MUMPS_INT *mapping; 129 130 /* Schur */ 131 MUMPS_INT size_schur; 132 MUMPS_INT *listvar_schur; 133 DMUMPS_COMPLEX *schur; 134 135 /* Internal parameters */ 136 MUMPS_INT instance_number; 137 DMUMPS_COMPLEX *wk_user; 138 139 /* Version number: length=14 in FORTRAN + 1 for final \0 + 1 for alignment */ 140 char version_number[MUMPS_VERSION_MAX_LEN + 1 + 1]; 141 /* For out-of-core */ 142 char ooc_tmpdir[256]; 143 char ooc_prefix[64]; 144 /* To save the matrix in matrix market format */ 145 char write_problem[256]; 146 MUMPS_INT lwk_user; 147 148 } DMUMPS_STRUC_C; 149 150 151 void MUMPS_CALL 152 dmumps_c( DMUMPS_STRUC_C * dmumps_par ); 153 154 #ifdef __cplusplus 155 } 156 #endif 157 158 #endif /* DMUMPS_C_H */ 159 160