dmumps_c.h 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  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. /* Mostly written in march 2002 (JYL) */
  51. #ifndef DMUMPS_C_H
  52. #define DMUMPS_C_H
  53. #ifdef __cplusplus
  54. extern "C" {
  55. #endif
  56. #include "mumps_compat.h"
  57. /* Next line defines MUMPS_INT, DMUMPS_COMPLEX and DMUMPS_REAL */
  58. #include "mumps_c_types.h"
  59. #ifndef MUMPS_VERSION
  60. /* Protected in case headers of other arithmetics are included */
  61. #define MUMPS_VERSION "4.10.0"
  62. #endif
  63. #ifndef MUMPS_VERSION_MAX_LEN
  64. #define MUMPS_VERSION_MAX_LEN 14
  65. #endif
  66. /*
  67. * Definition of the (simplified) MUMPS C structure.
  68. * NB: DMUMPS_COMPLEX are REAL types in s and d arithmetics.
  69. */
  70. typedef struct {
  71. MUMPS_INT sym, par, job;
  72. MUMPS_INT comm_fortran; /* Fortran communicator */
  73. MUMPS_INT icntl[40];
  74. DMUMPS_REAL cntl[15];
  75. MUMPS_INT n;
  76. MUMPS_INT nz_alloc; /* used in matlab interface to decide if we
  77. free + malloc when we have large variation */
  78. /* Assembled entry */
  79. MUMPS_INT nz;
  80. MUMPS_INT *irn;
  81. MUMPS_INT *jcn;
  82. DMUMPS_COMPLEX *a;
  83. /* Distributed entry */
  84. MUMPS_INT nz_loc;
  85. MUMPS_INT *irn_loc;
  86. MUMPS_INT *jcn_loc;
  87. DMUMPS_COMPLEX *a_loc;
  88. /* Element entry */
  89. MUMPS_INT nelt;
  90. MUMPS_INT *eltptr;
  91. MUMPS_INT *eltvar;
  92. DMUMPS_COMPLEX *a_elt;
  93. /* Ordering, if given by user */
  94. MUMPS_INT *perm_in;
  95. /* Orderings returned to user */
  96. MUMPS_INT *sym_perm; /* symmetric permutation */
  97. MUMPS_INT *uns_perm; /* column permutation */
  98. /* Scaling (input only in this version) */
  99. DMUMPS_REAL *colsca;
  100. DMUMPS_REAL *rowsca;
  101. /* RHS, solution, ouptput data and statistics */
  102. DMUMPS_COMPLEX *rhs, *redrhs, *rhs_sparse, *sol_loc;
  103. MUMPS_INT *irhs_sparse, *irhs_ptr, *isol_loc;
  104. MUMPS_INT nrhs, lrhs, lredrhs, nz_rhs, lsol_loc;
  105. MUMPS_INT schur_mloc, schur_nloc, schur_lld;
  106. MUMPS_INT mblock, nblock, nprow, npcol;
  107. MUMPS_INT info[40],infog[40];
  108. DMUMPS_REAL rinfo[40], rinfog[40];
  109. /* Null space */
  110. MUMPS_INT deficiency;
  111. MUMPS_INT *pivnul_list;
  112. MUMPS_INT *mapping;
  113. /* Schur */
  114. MUMPS_INT size_schur;
  115. MUMPS_INT *listvar_schur;
  116. DMUMPS_COMPLEX *schur;
  117. /* Internal parameters */
  118. MUMPS_INT instance_number;
  119. DMUMPS_COMPLEX *wk_user;
  120. /* Version number: length=14 in FORTRAN + 1 for final \0 + 1 for alignment */
  121. char version_number[MUMPS_VERSION_MAX_LEN + 1 + 1];
  122. /* For out-of-core */
  123. char ooc_tmpdir[256];
  124. char ooc_prefix[64];
  125. /* To save the matrix in matrix market format */
  126. char write_problem[256];
  127. MUMPS_INT lwk_user;
  128. } DMUMPS_STRUC_C;
  129. void MUMPS_CALL
  130. dmumps_c( DMUMPS_STRUC_C * dmumps_par );
  131. #ifdef __cplusplus
  132. }
  133. #endif
  134. #endif /* DMUMPS_C_H */