Amesos Package Browser (Single Doxygen Collection)  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Amesos_SCALAPACK_wrappers.h
Go to the documentation of this file.
1 
2 // @HEADER
3 // ***********************************************************************
4 //
5 // Amesos: Direct Sparse Solver Package
6 // Copyright (2004) Sandia Corporation
7 //
8 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
9 // license for use of this work by or on behalf of the U.S. Government.
10 //
11 // This library is free software; you can redistribute it and/or modify
12 // it under the terms of the GNU Lesser General Public License as
13 // published by the Free Software Foundation; either version 2.1 of the
14 // License, or (at your option) any later version.
15 //
16 // This library is distributed in the hope that it will be useful, but
17 // WITHOUT ANY WARRANTY; without even the implied warranty of
18 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
19 // Lesser General Public License for more details.
20 //
21 // You should have received a copy of the GNU Lesser General Public
22 // License along with this library; if not, write to the Free Software
23 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301
24 // USA
25 // Questions? Contact Michael A. Heroux (maherou@sandia.gov)
26 //
27 // ***********************************************************************
28 // @HEADER
29 
30 #ifndef AMESOS_SCALAPACK_WRAPPERS_H
31 #define AMESOS_SCALAPACK_WRAPPERS_H
32 
33 #if defined(Amesos_SHOW_DEPRECATED_WARNINGS)
34 #ifdef __GNUC__
35 #warning "The Amesos package is deprecated"
36 #endif
37 #endif
38 
39 #include "Epetra_ConfigDefs.h"
40 #include "Epetra_LAPACK_wrappers.h"
41 #include <stdio.h>
42 #include <string.h>
43 
44 #if defined(CRAY_T3X) || defined(INTEL_CXML) || defined(INTEL_MKL)
45 
46 /* All three of these machines use a simple uppercase mangling of Fortran names */
47 
48 /* if F77_FUNC is defined undefine it because we want to redefine */
49 
50 #if defined(CRAY_T3X)
51 
52 #define SL_INIT_F77 F77_FUNC_(sl_init,SL_INIT)
53 #define BLACS_GRIDINFO_F77 F77_FUNC_(blacs_gridinfo,BLACS_GRIDINFO)
54 #define PDGETRF_F77 F77_FUNC(psgetrf,PSGETRF)
55 #define PDGETRS_F77 F77_FUNC(psgetrs,PSGETRS)
56 #define DESCINIT_F77 F77_FUNC(descinit,DESCINIT)
57 
58 #endif
59 #if defined(INTEL_CXML)
60 
61 #define SL_INIT_F77 F77_FUNC_(sl_init,SL_INIT)
62 #define BLACS_GRIDINFO_F77 F77_FUNC_(blacs_gridinfo,BLACS_GRIDINFO)
63 #define PDGETRF_F77 F77_FUNC(pdgetrf,PDGETRF)
64 #define PDGETRS_F77 F77_FUNC(pdgetrs,PDGETRS)
65 #define DESCINIT_F77 F77_FUNC(descinit,DESCINIT)
66 
67 #endif
68 #if defined(INTEL_MKL)
69 
70 #define SL_INIT_F77 F77_FUNC_(sl_init,SL_INIT_)
71 #define BLACS_GRIDINFO_F77 F77_FUNC_(blacs_gridinfo,BLACS_GRIDINFO_)
72 #define PDGETRF_F77 F77_FUNC(pdgetrf,PDGETRF)
73 #define PDGETRS_F77 F77_FUNC(pdgetrs,PDGETRS)
74 #define DESCINIT_F77 F77_FUNC(descinit,DESCINIT)
75 
76 #endif
77 
78 #else
79 
80 /* Use autoconf's definition of F77_FUNC
81  unless using old make system */
82 
83 #define SL_INIT_F77 F77_FUNC_(sl_init,SL_INIT)
84 #define BLACS_GRIDINFO_F77 F77_FUNC_(blacs_gridinfo,BLACS_GRIDINFO)
85 
86 #define PDGETRF_F77 F77_FUNC(pdgetrf,PDGETRF)
87 #define PDGETRS_F77 F77_FUNC(pdgetrs,PDGETRS)
88 #define DESCINIT_F77 F77_FUNC(descinit,DESCINIT)
89 
90 #endif
91 
92 #ifdef __cplusplus
93 extern "C" {
94 #endif
95 
96  /* ScaLAPACK and BLACS initialization routines */
97  void PREFIX SL_INIT_F77(int* blacs_context, const int* nprow, const int* npcol);
98  void PREFIX DESCINIT_F77(int *DescA, const int* m, const int* n, const int* mblock,
99  const int* nblock, const int* rsrc, const int* csrc, const int* blacs_context,
100  const int* Lda, int* ierr);
101  void PREFIX BLACS_GRIDINFO_F77(int* blacs_context, const int* nprow, const int* npcol,
102  const int* myrow, const int* mycol);
103  /* Double precision ScaLAPACK linear solvers */
104  void PREFIX PDGETRF_F77(const int* m, const int* n, double* A, const int* Ai, const int* Aj,
105  const int* DescA, int* ipiv, int* info);
106  void PREFIX PDGETRS_F77(Epetra_fcd, const int* n, const int* nrhs,
107  const double* A, const int* Ai, const int* Aj,
108  const int* DescA, const int* ipiv, double* X, const int* Xi, const int* Xj,
109  const int* DescX, int* info);
110 
111 #ifdef __cplusplus
112 }
113 #endif
114 
115 #endif /* AMESOS_SCALAPACK_WRAPPERS_H */
#define PREFIX
#define DESCINIT_F77
#define SL_INIT_F77
#define BLACS_GRIDINFO_F77
#define Epetra_fcd
#define PDGETRS_F77
#define PDGETRF_F77
int n