/[ascend]/trunk/base/generic/solver/slv_stdcalls.h
ViewVC logotype

Contents of /trunk/base/generic/solver/slv_stdcalls.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1271 - (show annotations) (download) (as text)
Sun Feb 4 02:00:01 2007 UTC (15 years, 5 months ago) by johnpye
File MIME type: text/x-chdr
File size: 5248 byte(s)
Added bounds checking to IDA.
Suppressed some debug output.
TestSteam.testpeturbida is broken now.
1 /* ASCEND modelling environment
2 Copyright (C) 1998, 2006 Carnegie Mellon University
3 Copyright (C) 1996 Benjamin Andrew Allan
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2, or (at your option)
8 any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330,
18 Boston, MA 02111-1307, USA.
19 *//*
20 @file
21 'Standard clients' module. This appears to include stuff relating
22 matrix generation, bounds checking, registration of solver engines.
23 *//*
24 by Benjamin Andrew Allan
25 5/19/96
26 Last in CVS: $Revision: 1.8 $ $Date: 1998/06/16 16:53:07 $ $Author: mthomas $
27 */
28
29 #ifndef ASC_SLV_STDCLIENTS_H
30 #define ASC_SLV_STDCLIENTS_H
31
32 #include <utilities/ascConfig.h>
33 #include <linear/mtx.h>
34
35 #include "slv_client.h"
36
37 /** @addtogroup system System
38 @{
39 */
40
41 /*------------------------------------------------------------------------------
42 MATRIX GENERATION AND REORDERING
43 */
44
45 extern int slv_make_incidence_mtx(slv_system_t sys,
46 mtx_matrix_t mtx, var_filter_t *vf, rel_filter_t *rf);
47 /**<
48 Populates a matrix according to the sys solvers_vars, solvers_rels
49 lists and the filters given. The filter should have at least
50 SVAR = 1 bit on. mtx given must be created (not null) and with
51 order >= max( slv_get_num_solvers_rels(sys),slv_get_num_solvers_vars(sys));
52 Vars and rels on solvers lists should be sindexed 0 -> len-1.
53
54 @return 0 on success
55 */
56
57 /* -- moved block partitioning stuff to block.h -- JP */
58
59 extern void slv_sort_rels_and_vars(slv_system_t sys,
60 int32 *rel_count, int32 *var_count);
61 /**<
62 * Reindexes systems rel and var lists such that rel list is in order:
63 * rel_list = |included and active rels|unincluded|inactive|
64 * and the var list is in the order:
65 * var_list = |incident free solver vars|unincluded|inactive|<br><br>
66 *
67 * Upon return rel_count will be the number of included and active rels
68 * and var_count will be the number of incident free solver vars.
69 * If either rel_count or var_count is -1 then a memory allocation
70 * failed and this function bailed out without doing any work.
71 */
72
73 /*------------------------------------------------------------------------------
74 BOUNDS CHECKING
75 */
76
77 extern int slv_ensure_bounds(slv_system_t sys, int32 lo, int32 hi, FILE *fp);
78 /**<
79 Takes a system and a range of vars (lo,hi) and makes sure all the
80 variables are within bounds and bounds are reasonable. makes
81 repairs in all cases where they are not.
82
83 If fp is not NULL, prints notices to the file given.
84
85 @return number of repairs made or -1 if something weird found.
86 */
87
88 extern int slv_check_bounds(const slv_system_t sys, int32 lo, int32 hi,
89 const char *label
90 );
91 /**<
92 Takes a system and a range of vars (lo,hi) from the solver's var list
93 and makes sure all the variables are within bounds and bounds are
94 make sense (lower < upper). Reports errors in all cases where they are not.
95 Does not change anything.
96
97 You can express lo,hi as negative numbers, which means you count back from
98 the last var (-1), second last (-2), etc. So lo=0,hi=-1 means the full range.
99
100 @return 0 if bounds are ok and variable lies in range, non-zero otherwise
101 */
102
103 /*------------------------------------------------------------------------------
104 SOLVER REGISTRATION
105 */
106
107 ASC_DLLSPEC int SlvRegisterStandardClients(void);
108 /**<
109 Attempts to register solvers slv0 through (as of 6/96) slv7.
110
111 The solvers registered here are those linked at build time of the
112 ascend binary. See slv_client.h for registering dynamically loaded
113 solvers.
114
115 @return number of solvers registered successfully
116 */
117
118 /*------------------------------------------------------------------------------
119 OUTPUT ASSIGNMENT AND PARTITIONING IN LOGICAL RELATIONS
120 */
121
122 extern int slv_make_log_incidence_mtx(slv_system_t sys,
123 mtx_matrix_t mtx,
124 dis_filter_t *dvf,
125 logrel_filter_t *lrf);
126 /**<
127 Populates a matrix according to the sys solvers_dvars, solvers_logrels
128 lists and the filters given. mtx given must be created (not null) and with
129 order >= max( slv_get_num_solvers_logrels(sys),
130 slv_get_num_solvers_dvars(sys));
131 Dvars and logrels on solvers lists should be sindexed 0 -> len-1.
132
133 @return 0 on success
134 */
135
136 extern int slv_log_block_partition(slv_system_t sys);
137 /**<
138 Takes a system and reorders its solvers_dvars and solvers_logrels
139 list so that they fall into a block lower triangular form and
140 the system's block list is set to match.
141 Only included and active logrelations and free, incident boolean_var
142 are so ordered.
143 The blocks derived are put in the slv_system_t block list.<br><br>
144
145 @return 0 on success, 2 on out-of-memory, 1 on any other failure
146 */
147
148 /* @} */
149
150 #endif /** ASC_SLV_STDCLIENTS_H */

john.pye@anu.edu.au
ViewVC Help
Powered by ViewVC 1.1.22