This file is indexed.

/usr/include/trilinos/ml_aztec_utils.h is in libtrilinos-ml-dev 12.12.1-5.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
/********************************************************************* */
/* See the file COPYRIGHT for a complete copyright notice, contact      */
/* person and disclaimer.                                               */
/* ******************************************************************** */

/********************************************************************* */
/*          Utilities for Aztec/ML users                               */
/********************************************************************* */

#ifndef __MLAZUTILS__
#define __MLAZUTILS__


#ifndef ML_CPP
#ifdef __cplusplus
extern "C" {
#endif
#endif

#ifdef AZTEC
#if defined(ML_MPI) && !defined(AZ_MPI)
#define AZ_MPI
#endif

#define AZ_ONLY_PRECONDITIONER  -7778

#include "ml_common.h"
#include "az_aztec.h"

/******************************************************************************/
/* structure/function to wrap Aztec subblocks into a large Aztec matrix.      */
/******************************************************************************/
struct AZ_MAT_blockmat_data {
  int N, Nghost;
  AZ_MATRIX *Ke;
  AZ_MATRIX *M;
};



struct aztec_context {
   AZ_MATRIX *Amat;
   AZ_PRECOND *Prec;
   int    *proc_config;
   int    *options;
   double *params;
   double *status;
   void   *getrowstuff;
   int    prec_or_solver;
   ML_Comm *comm;
   int     offset;
   int    matrix_type;
#ifdef AZ_ver2_1_0_3
   struct AZ_SCALING *scaling;
#endif
};
#ifndef AZTEC2_0
extern void ML_Gen_SmootherAztec(ML *ml_handle, int level, int options[],
        double params[], int proc_config[], double status[], int N_iter,
	int pre_or_post, void (*prec_function)(
        double *, int *, int *, double *, struct AZ_MATRIX_STRUCT  *,
        struct AZ_PREC_STRUCT *));

extern int az_wrap_solvers(ML_Smoother *, int in, double x[], int out,
	double rhs[]);

extern void AZ_ML_SmootherClean(void *data);

#else
#ifdef ML_MPI
#include <mpi.h>
#define MPI_AZRequest MPI_Request
#define MPI_AZComm    MPI_Comm
#else
#define MPI_AZRequest int
#define MPI_AZComm    int
#endif

#define AZ_fixed_pt 33
extern struct AZ_MATRIX_STRUCT *AZ_matrix_create(int local);
extern struct AZ_PREC_STRUCT   *AZ_precond_create(struct AZ_MATRIX_STRUCT *Pmat,
                void (*prec_fun)( double *, int *, int *, double *,
                      struct AZ_MATRIX_STRUCT  *, struct AZ_PREC_STRUCT *) );

extern void AZ_matrix_destroy( struct AZ_MATRIX_STRUCT **Amat);
extern void AZ_precond_destroy(struct AZ_PREC_STRUCT **precond);
extern void AZ_set_MSR(AZ_MATRIX *Amat, int bindx[], double val[],
        int data_org[]);

extern void AZ_set_VBR(AZ_MATRIX *Amat, int rpntr[], int cpntr[], int bpntr[],
        int indx[], int bindx[], double val[], int data_org[]);

extern int AZ_block_MSR(int **param_bindx, double **param_val,
                 int N_update, int num_PDE_eqns, int *update);

#define mdwrap_wait(a,b,c,x,y,z)   md_wrap_wait(a,b,c,(x),(y),(z))
#define mdwrap_iwrite(a,b,c,x,y,z) md_wrap_iwrite(a,b,c,(x),(y),(z))
#define mdwrap_iread(a,b,c,x,y)   md_wrap_iread((a),(b),(c),(x),(y))
#define mdwrap_write(a,b,c,x,y)   md_wrap_write((a),(b),(c),(x),(y))

#if   defined(caps)
#   define az_set_proc_config_        AZ_SET_PROC_CONFIG
#else
#if defined(matched)
#   define az_set_proc_config_        az_set_proc_config
#endif
#endif

extern void AZ_set_proc_config(int proc_config[], MPI_AZComm );


#endif
extern void AZ_mlcomm2data_org(ML_CommInfoOP *comm_info,int *data_org[]);

extern void AZ_set_ML_preconditioner(AZ_PRECOND **Precond, AZ_MATRIX *Amat,
				ML *ml_handle, int options[]);


extern int az_comm_wrapper(double vector[], void *data);
extern int az_wrap_ml_comm(double vector[], AZ_MATRIX *Amat);

extern int az_msrgetrow_wrapper(ML_Operator *data, int N_requested_rows,
   int requested_rows[], int allocated_space, int columns[], double values[],
   int row_lengths[]);

extern int az_vbrgetrow_wrapper(ML_Operator *data, int N_requested_rows,
   int requested_rows[], int allocated_space, int columns[], double values[],
   int row_lengths[]);
extern int az_wrap_ml_getrow(int columns[], double values[], int row_lengths[],
		      struct AZ_MATRIX_STRUCT *Amat, int N_requested_rows,
			     int requested_rows[], int allocated_space);


extern int az_usergetrow_wrapper(ML_Operator *data, int N_requested_rows,
   int requested_rows[], int allocated_space, int columns[], double values[],
   int row_lengths[]);

extern int az_matvec_wrapper(ML_Operator *data, int, double p[], int, double ap[]);

extern void az_wrap_ml_matvec(double invec[], double outvec[], AZ_MATRIX *Amat,
			      int proc_config[]);
extern int AZ_convert_aztec_matrix_2ml_matrix(AZ_MATRIX *AZmat, ML_Operator *MLmat,
					      int *proc_config);
extern int AZ_ML_Set_Amat(ML *ml_handle, int level, int isize, int osize,
	AZ_MATRIX *Amat, int *proc_config);

extern void AZ_ML_set_vbrdiagonal(ML *ml, int level, AZ_MATRIX *matrix);

extern void AZ_ML_set_userdiagonal(ML *ml, int level, AZ_MATRIX *matrix);

extern void ML_precondition(double ff[], int options[], int proc_config[],
                     double params[], AZ_MATRIX *mat, AZ_PRECOND *prec);
extern void MLsmoother_precondition(double ff[], int options[],
				    int proc_config[], double params[],
				    AZ_MATRIX *mat, AZ_PRECOND *prec);

extern void AZ_ML_Clean(void *data);

extern int ML_MSR_sym_diagonal_scaling(AZ_MATRIX *Amat,
				       int proc_config[], double **);

extern int ML_MSR_scalesol(double *x, double *scale_vect,int length);
extern int ML_MSR_scalerhs(double *x, double *scale_vect,int length);
extern int AZ_block_MSR(int **param_bindx, double **param_val,
			int N_update, int num_PDE_eqns, int *update);


extern int  wrapper_DCSR_getrow(int columns[], double values[], int row_lengths[],
        	     struct AZ_MATRIX_STRUCT *Amat, int N_requested_rows,
                     int requested_rows[], int allocated_space);
extern void wrapper_DCSR_matvec(double *b, double *c,AZ_MATRIX *Amat,
                     int proc_config[]);
extern void AZ_transform_norowreordering(int proc_config[], int *external[],
    int bindx[], double val[], int update[], int *update_index[],
	int *extern_index[], int *data_org[], int N_update, int indx[], int bnptr[],
	int rnptr[], int *cnptr[], int mat_type);
extern void AZ_input_msr_matrix_nodiag(char datafile[], int update[],
	double **val, int **bindx,
	int N_update, int proc_config[]);
extern void AZ_add_new_row_nodiag(int therow, int *nz_ptr, int *current,
	double **val, int **bindx, char *input, FILE *dfp, int *msr_len,
	int *column0);
extern void ML_find_local_indices(int N_update, int bindx[], int update[],
	int *sorted_ext, int N_external, int map[], int start, int end);

extern void AZ_Tmat_transform2ml(int Nexterns, int global_node_externs[], int *reordered_node_externs,
			    int Tmat_bindx[], double Tmat_val[], int rowptr[], int Nlocal_nodes,
				 int global_node_inds[], ML_Comm *comm, int Nlocal_edges,
				 ML_Operator **Tmat);

extern void AZ_zeroDirichletcolumns(AZ_MATRIX *Amat, double rhs[],
				    int proc_config[] );
extern int ML_Tmat_applyDirichletBC(ML_Operator **Tmat, int *dirichlet_rows,
                             int num_dirichlet_rows);
extern void AZ_block_matvec(double *, double *, AZ_MATRIX *, int *);

extern int ML_Aggregate_AztecRead(ML_Aggregate *ag);
extern void new_norm(AZ_PRECOND *prec, double res[], double *result);
/* mgee */
extern void ML_AZ_Reader_ReadVariableBlocks(char *cmd_file_name, int *nblocks, int **blocks,
                                     int **block_pde, int *N_update, int **update,
                                     int proc_config[]);


/* The following definition and function declaration as used by
   MLAZ_iterate, which is supposed to replace AZ_iterate in code
   currently developed for Aztec (one-level prec), to test ML
   preconditioners (based on aggregation). Only a small part
   of ML's functionalities is currently supported. */

#define MLAZ_MAX_LEVELS 30
#define MLAZ_COARSE_LEVEL (MLAZ_MAX_LEVELS-1)
#define MLAZ_ALL -1
#define MLAZ_yes 1
#define MLAZ_no 0

/* options */
#define MLAZ_smoother                       1
#define MLAZ_max_levels                     2
#define MLAZ_num_smoother_steps             3
#define MLAZ_output                         7
#define MLAZ_coarsen_scheme                 8
#define MLAZ_metis_aggregation_property     9
#define MLAZ_metis_aggregation_value       10
#define MLAZ_max_coarse_size               11
#define MLAZ_is_problem_symmetric          12
#define MLAZ_pre_or_post_smoother          13
#define MLAZ_num_pde_eqns                  14
#define MLAZ_smoother_damping              15
#define MLAZ_amesos_solver                 16
#define MLAZ_max_procs                     17
#define MLAZ_req_aggre_per_proc            18
#define MLAZ_MLS_poly_order                19
#define MLAZ_MLS_alpha                     20
#define MLAZ_timing_detailed               21
#define MLAZ_prec_type                     22

/*  MLAZ_smoother */
#define MLAZ_Jacobi                 0 /* ML's Jacobi smoother */
#define MLAZ_GaussSeidel            1 /* ML's GS smoother */
#define MLAZ_SymGaussSeidel         2
#define MLAZ_MLS                    3
#define MLAZ_Aztec                  4
#define MLAZ_BlockGaussSeidel       5
#define MLAZ_IFPACK                 7
#define MLAZ_SuperLU                -1
#define MLAZ_Amesos                 -2

/* MLAZ_aggregates */
#define MLAZ_METIS                  0
#define MLAZ_ParMETIS               1
#define MLAZ_Uncoupled              2
#define MLAZ_MIS                    3
/* MLAZ_metis_aggregate_property */
#define MLAZ_NumLocalAggregates        0
#define MLAZ_NumGlobalAggregates       1
#define MLAZ_NumNodesPerAggregate 2

/* params */
#define MLAZ_smoothP_damping_factor 1
#define MLAZ_omega                  2
#define MLAZ_threshold              3
#define MLAZ_dumping_factor         4

extern void MLAZ_Defaults(void);
extern void MLAZ_Iterate( double delta_x[], double resid_vector[],
			  int options[], double params[],
			  double status[], int proc_config[],
			  AZ_MATRIX *Amat, struct AZ_SCALING *scaling );
extern void MLAZ_Set_Option(int, int);
extern void MLAZ_Set_Param( int,double);
extern void MLAZ_Set_LevelOption( int level,int option, int value);
extern void MLAZ_Set_LevelParam( int level, int option, double value);
extern void MLAZ_Set_LevelAztecSmoother( int level, int options[], double value[]);
extern int MLAZ_Setup_MLandAggregate( int N_update, int num_PDE_eqns,
			       int proc_config[AZ_PROC_SIZE],
				      ML *ml, ML_Aggregate *ag);
void MLAZ_Direct_Solve_Amesos( double delta_x[], double resid_vector[],
			       AZ_MATRIX * Amat, int proc_config[],
			       int choice, int max_procs );
void AZ_ML_Build_NodalCoordinates( int N, int N_update, int N_external,
				   int update[], int external[],
				   int update_index[], int extern_index[],
				   double x[], double y[], double z[],
				   int option );
#endif

#ifndef ML_CPP
#ifdef __cplusplus
}
#endif
#endif

#ifdef AZTEC_RAY_WILL_FIX

#include "az_aztec.h"
/*********************************************************************/
/*********************************************************************/
/*********************************************************************/
#endif
#endif