/[escript]/trunk/paso/src/solve.c
ViewVC logotype

Contents of /trunk/paso/src/solve.c

Parent Directory Parent Directory | Revision Log Revision Log


Revision 971 - (show annotations)
Wed Feb 14 04:40:49 2007 UTC (12 years, 8 months ago) by ksteube
File MIME type: text/plain
File size: 3677 byte(s)
Had to undo commit to new MPI branch. The changes went into the original and
not the branch. The files committed here are exactly the same as revision 969.


1 /* $Id$ */
2
3
4 /*
5 ********************************************************************************
6 * Copyright 2006 by ACcESS MNRF *
7 * *
8 * http://www.access.edu.au *
9 * Primary Business: Queensland, Australia *
10 * Licensed under the Open Software License version 3.0 *
11 * http://www.opensource.org/licenses/osl-3.0.php *
12 ********************************************************************************
13 */
14
15 /**************************************************************/
16
17 /* Paso: interface to the direct solvers */
18
19 /**************************************************************/
20
21 /* Copyrights by ACcESS Australia 2003 */
22 /* Author: gross@access.edu.au */
23
24 /**************************************************************/
25
26 #include "Paso.h"
27 #include "performance.h"
28 #include "Solver.h"
29
30 #ifdef SCSL
31 #include "SCSL.h"
32 #endif
33
34 #ifdef MKL
35 #include "MKL.h"
36 #endif
37
38 #ifdef UMFPACK
39 #include "UMFPACK.h"
40 #endif
41
42 /**************************************************************/
43
44 void Paso_solve(Paso_SystemMatrix* A,
45 double* out,
46 double* in,
47 Paso_Options* options) {
48 Paso_Performance pp;
49 Paso_resetError();
50 if (A->num_rows!=A->num_cols || A->col_block_size!=A->row_block_size) {
51 Paso_setError(VALUE_ERROR,"Paso_solve: matrix has to be a square matrix.");
52 return;
53 }
54 Performance_open(&pp,options->verbose);
55 index_t package=Paso_Options_getPackage(options->method,options->package,options->symmetric);
56 if (Paso_noError()) {
57 switch(package) {
58
59 case PASO_PASO:
60 Paso_Solver(A,out,in,options,&pp);
61 A->solver_package=PASO_PASO;
62 break;
63
64 #ifdef SCSL
65 case PASO_SCSL:
66 Paso_SCSL(A,out,in,options,&pp);
67 A->solver_package=PASO_SCSL;
68 break;
69 #endif
70
71
72 #ifdef MKL
73 case PASO_MKL:
74 Paso_MKL(A,out,in,options,&pp);
75 A->solver_package=PASO_MKL;
76 break;
77 #endif
78
79 #ifdef UMFPACK
80 case PASO_UMFPACK:
81 Paso_UMFPACK(A,out,in,options,&pp);
82 A->solver_package=PASO_UMFPACK;
83 break;
84 #endif
85
86 default:
87 Paso_setError(VALUE_ERROR,"Paso_solve: unknown package code");
88 break;
89 }
90 }
91 Performance_close(&pp,options->verbose);
92 return;
93 }
94
95 /* free memory possibly resereved for a recall */
96
97 void Paso_solve_free(Paso_SystemMatrix* in) {
98
99 switch(in->solver_package) {
100
101 case PASO_PASO:
102 Paso_Solver_free(in);
103 break;
104
105 #ifdef SCSL
106 case PASO_SCSL:
107 Paso_SCSL_free(in);
108 break;
109 #endif
110
111
112 #ifdef MKL
113 case PASO_MKL:
114 Paso_MKL_free(in);
115 break;
116 #endif
117
118 #ifdef UMFPACK
119 case PASO_UMFPACK:
120 Paso_UMFPACK_free(in);
121 break;
122 #endif
123 }
124 }
125 /*
126 * $Log$
127 * Revision 1.2 2005/09/15 03:44:39 jgs
128 * Merge of development branch dev-02 back to main trunk on 2005-09-15
129 *
130 * Revision 1.1.2.2 2005/09/07 00:59:08 gross
131 * some inconsistent renaming fixed to make the linking work.
132 *
133 * Revision 1.1.2.1 2005/09/05 06:29:49 gross
134 * These files have been extracted from finley to define a stand alone libray for iterative
135 * linear solvers on the ALTIX. main entry through Paso_solve. this version compiles but
136 * has not been tested yet.
137 *
138 *
139 */

Properties

Name Value
svn:eol-style native
svn:keywords Author Date Id Revision

  ViewVC Help
Powered by ViewVC 1.1.26