1*7758a8cdSBarry Smith 2*7758a8cdSBarry Smith #if !defined(__TFS_H) 3*7758a8cdSBarry Smith #define __TFS_H 4*7758a8cdSBarry Smith 5*7758a8cdSBarry Smith /**********************************const.h************************************* 6*7758a8cdSBarry Smith 7*7758a8cdSBarry Smith Author: Henry M. Tufo III 8*7758a8cdSBarry Smith 9*7758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 10*7758a8cdSBarry Smith 11*7758a8cdSBarry Smith snail-mail: 12*7758a8cdSBarry Smith Division of Applied Mathematics 13*7758a8cdSBarry Smith Brown University 14*7758a8cdSBarry Smith Providence, RI 02912 15*7758a8cdSBarry Smith 16*7758a8cdSBarry Smith Last Modification: 17*7758a8cdSBarry Smith 6.21.97 18*7758a8cdSBarry Smith ***********************************const.h************************************/ 19*7758a8cdSBarry Smith 20*7758a8cdSBarry Smith /**********************************const.h************************************* 21*7758a8cdSBarry Smith File Description: 22*7758a8cdSBarry Smith ----------------- 23*7758a8cdSBarry Smith 24*7758a8cdSBarry Smith ***********************************const.h************************************/ 25*7758a8cdSBarry Smith #include "petsc.h" 26*7758a8cdSBarry Smith #include <limits.h> 27*7758a8cdSBarry Smith #include <float.h> 28*7758a8cdSBarry Smith 29*7758a8cdSBarry Smith #define X 0 30*7758a8cdSBarry Smith #define Y 1 31*7758a8cdSBarry Smith #define Z 2 32*7758a8cdSBarry Smith #define XY 3 33*7758a8cdSBarry Smith #define XZ 4 34*7758a8cdSBarry Smith #define YZ 5 35*7758a8cdSBarry Smith 36*7758a8cdSBarry Smith 37*7758a8cdSBarry Smith #define THRESH 0.2 38*7758a8cdSBarry Smith #define N_HALF 4096 39*7758a8cdSBarry Smith #define PRIV_BUF_SZ 45 40*7758a8cdSBarry Smith 41*7758a8cdSBarry Smith /*4096 8192 32768 65536 1048576 */ 42*7758a8cdSBarry Smith #define MAX_MSG_BUF 32768 43*7758a8cdSBarry Smith 44*7758a8cdSBarry Smith /* fortran gs limit */ 45*7758a8cdSBarry Smith #define MAX_GS_IDS 100 46*7758a8cdSBarry Smith 47*7758a8cdSBarry Smith #define FULL 2 48*7758a8cdSBarry Smith #define PARTIAL 1 49*7758a8cdSBarry Smith #define NONE 0 50*7758a8cdSBarry Smith 51*7758a8cdSBarry Smith #define BYTE 8 52*7758a8cdSBarry Smith #define BIT_0 0x1 53*7758a8cdSBarry Smith #define BIT_1 0x2 54*7758a8cdSBarry Smith #define BIT_2 0x4 55*7758a8cdSBarry Smith #define BIT_3 0x8 56*7758a8cdSBarry Smith #define BIT_4 0x10 57*7758a8cdSBarry Smith #define BIT_5 0x20 58*7758a8cdSBarry Smith #define BIT_6 0x40 59*7758a8cdSBarry Smith #define BIT_7 0x80 60*7758a8cdSBarry Smith #define TOP_BIT INT_MIN 61*7758a8cdSBarry Smith #define ALL_ONES -1 62*7758a8cdSBarry Smith 63*7758a8cdSBarry Smith #define FALSE 0 64*7758a8cdSBarry Smith #define TRUE 1 65*7758a8cdSBarry Smith 66*7758a8cdSBarry Smith #define C 0 67*7758a8cdSBarry Smith #define FORTRAN 1 68*7758a8cdSBarry Smith 69*7758a8cdSBarry Smith 70*7758a8cdSBarry Smith #define MAX_VEC 1674 71*7758a8cdSBarry Smith #define FORMAT 30 72*7758a8cdSBarry Smith #define MAX_COL_LEN 100 73*7758a8cdSBarry Smith #define MAX_LINE FORMAT*MAX_COL_LEN 74*7758a8cdSBarry Smith #define DELIM " \n \t" 75*7758a8cdSBarry Smith #define LINE 12 76*7758a8cdSBarry Smith #define C_LINE 80 77*7758a8cdSBarry Smith 78*7758a8cdSBarry Smith #define REAL_MAX DBL_MAX 79*7758a8cdSBarry Smith #define REAL_MIN DBL_MIN 80*7758a8cdSBarry Smith 81*7758a8cdSBarry Smith #define UT 5 /* dump upper 1/2 */ 82*7758a8cdSBarry Smith #define LT 6 /* dump lower 1/2 */ 83*7758a8cdSBarry Smith #define SYMM 8 /* we assume symm and dump upper 1/2 */ 84*7758a8cdSBarry Smith #define NON_SYMM 9 85*7758a8cdSBarry Smith 86*7758a8cdSBarry Smith #define ROW 10 87*7758a8cdSBarry Smith #define COL 11 88*7758a8cdSBarry Smith 89*7758a8cdSBarry Smith #define EPS 1.0e-14 90*7758a8cdSBarry Smith #define EPS2 1.0e-07 91*7758a8cdSBarry Smith 92*7758a8cdSBarry Smith 93*7758a8cdSBarry Smith #define MPI 1 94*7758a8cdSBarry Smith #define NX 2 95*7758a8cdSBarry Smith 96*7758a8cdSBarry Smith 97*7758a8cdSBarry Smith #define LOG2(x) (PetscScalar)log((double)x)/log(2) 98*7758a8cdSBarry Smith #define SWAP(a,b) temp=(a); (a)=(b); (b)=temp; 99*7758a8cdSBarry Smith #define P_SWAP(a,b) ptr=(a); (a)=(b); (b)=ptr; 100*7758a8cdSBarry Smith 101*7758a8cdSBarry Smith #define MAX_FABS(x,y) ((double)fabs(x)>(double)fabs(y)) ? ((PetscScalar)x) : ((PetscScalar)y) 102*7758a8cdSBarry Smith #define MIN_FABS(x,y) ((double)fabs(x)<(double)fabs(y)) ? ((PetscScalar)x) : ((PetscScalar)y) 103*7758a8cdSBarry Smith 104*7758a8cdSBarry Smith /* specer's existence ... can be done w/MAX_ABS */ 105*7758a8cdSBarry Smith #define EXISTS(x,y) ((x)==0.0) ? (y) : (x) 106*7758a8cdSBarry Smith 107*7758a8cdSBarry Smith #define MULT_NEG_ONE(a) (a) *= -1; 108*7758a8cdSBarry Smith #define NEG(a) (a) |= BIT_31; 109*7758a8cdSBarry Smith #define POS(a) (a) &= INT_MAX; 110*7758a8cdSBarry Smith 111*7758a8cdSBarry Smith 112*7758a8cdSBarry Smith 113*7758a8cdSBarry Smith 114*7758a8cdSBarry Smith /**********************************types.h************************************* 115*7758a8cdSBarry Smith 116*7758a8cdSBarry Smith Author: Henry M. Tufo III 117*7758a8cdSBarry Smith 118*7758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 119*7758a8cdSBarry Smith 120*7758a8cdSBarry Smith snail-mail: 121*7758a8cdSBarry Smith Division of Applied Mathematics 122*7758a8cdSBarry Smith Brown University 123*7758a8cdSBarry Smith Providence, RI 02912 124*7758a8cdSBarry Smith 125*7758a8cdSBarry Smith Last Modification: 126*7758a8cdSBarry Smith 6.21.97 127*7758a8cdSBarry Smith ***********************************types.h************************************/ 128*7758a8cdSBarry Smith 129*7758a8cdSBarry Smith /**********************************types.h************************************* 130*7758a8cdSBarry Smith File Description: 131*7758a8cdSBarry Smith ----------------- 132*7758a8cdSBarry Smith 133*7758a8cdSBarry Smith ***********************************types.h************************************/ 134*7758a8cdSBarry Smith typedef void (*vfp)(void*,void*,int,...); 135*7758a8cdSBarry Smith typedef void (*rbfp)(PetscScalar *, PetscScalar *, int len); 136*7758a8cdSBarry Smith #define vbfp MPI_User_function * 137*7758a8cdSBarry Smith typedef int (*bfp)(void*, void *, int *len, MPI_Datatype *dt); 138*7758a8cdSBarry Smith 139*7758a8cdSBarry Smith /***********************************comm.h************************************* 140*7758a8cdSBarry Smith 141*7758a8cdSBarry Smith Author: Henry M. Tufo III 142*7758a8cdSBarry Smith 143*7758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 144*7758a8cdSBarry Smith 145*7758a8cdSBarry Smith snail-mail: 146*7758a8cdSBarry Smith Division of Applied Mathematics 147*7758a8cdSBarry Smith Brown University 148*7758a8cdSBarry Smith Providence, RI 02912 149*7758a8cdSBarry Smith 150*7758a8cdSBarry Smith Last Modification: 151*7758a8cdSBarry Smith 6.21.97 152*7758a8cdSBarry Smith ***********************************comm.h*************************************/ 153*7758a8cdSBarry Smith 154*7758a8cdSBarry Smith /***********************************comm.h************************************* 155*7758a8cdSBarry Smith File Description: 156*7758a8cdSBarry Smith ----------------- 157*7758a8cdSBarry Smith 158*7758a8cdSBarry Smith ***********************************comm.h*************************************/ 159*7758a8cdSBarry Smith 160*7758a8cdSBarry Smith /***********************************comm.h************************************* 161*7758a8cdSBarry Smith Function: 162*7758a8cdSBarry Smith 163*7758a8cdSBarry Smith Input : 164*7758a8cdSBarry Smith Output: 165*7758a8cdSBarry Smith Return: 166*7758a8cdSBarry Smith Description: 167*7758a8cdSBarry Smith Usage: 168*7758a8cdSBarry Smith ***********************************comm.h*************************************/ 169*7758a8cdSBarry Smith extern int my_id; 170*7758a8cdSBarry Smith extern int num_nodes; 171*7758a8cdSBarry Smith extern int floor_num_nodes; 172*7758a8cdSBarry Smith extern int i_log2_num_nodes; 173*7758a8cdSBarry Smith 174*7758a8cdSBarry Smith extern void giop(int *vals, int *work, int n, int *oprs); 175*7758a8cdSBarry Smith extern void grop(PetscScalar *vals, PetscScalar *work, int n, int *oprs); 176*7758a8cdSBarry Smith extern void gfop(void *vals, void *wk, int n, vbfp fp, MPI_Datatype dt, int comm_type); 177*7758a8cdSBarry Smith extern void comm_init(void); 178*7758a8cdSBarry Smith extern void giop_hc(int *vals, int *work, int n, int *oprs, int dim); 179*7758a8cdSBarry Smith extern void grop_hc(PetscScalar *vals, PetscScalar *work, int n, int *oprs, int dim); 180*7758a8cdSBarry Smith extern void grop_hc_vvl(PetscScalar *vals, PetscScalar *work, int *n, int *oprs, int dim); 181*7758a8cdSBarry Smith extern void ssgl_radd(PetscScalar *vals, PetscScalar *work, int level, int *segs); 182*7758a8cdSBarry Smith 183*7758a8cdSBarry Smith #define MSGTAG0 101 184*7758a8cdSBarry Smith #define MSGTAG1 1001 185*7758a8cdSBarry Smith #define MSGTAG2 76207 186*7758a8cdSBarry Smith #define MSGTAG3 100001 187*7758a8cdSBarry Smith #define MSGTAG4 163841 188*7758a8cdSBarry Smith #define MSGTAG5 249439 189*7758a8cdSBarry Smith #define MSGTAG6 10000001 190*7758a8cdSBarry Smith 191*7758a8cdSBarry Smith 192*7758a8cdSBarry Smith /**********************************error.h************************************* 193*7758a8cdSBarry Smith 194*7758a8cdSBarry Smith Author: Henry M. Tufo III 195*7758a8cdSBarry Smith 196*7758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 197*7758a8cdSBarry Smith 198*7758a8cdSBarry Smith snail-mail: 199*7758a8cdSBarry Smith Division of Applied Mathematics 200*7758a8cdSBarry Smith Brown University 201*7758a8cdSBarry Smith Providence, RI 02912 202*7758a8cdSBarry Smith 203*7758a8cdSBarry Smith Last Modification: 204*7758a8cdSBarry Smith 6.21.97 205*7758a8cdSBarry Smith **********************************error.h*************************************/ 206*7758a8cdSBarry Smith 207*7758a8cdSBarry Smith /**********************************error.h************************************* 208*7758a8cdSBarry Smith File Description: 209*7758a8cdSBarry Smith ----------------- 210*7758a8cdSBarry Smith 211*7758a8cdSBarry Smith **********************************error.h*************************************/ 212*7758a8cdSBarry Smith 213*7758a8cdSBarry Smith /**********************************error.h************************************* 214*7758a8cdSBarry Smith Function: error_msg_fatal() 215*7758a8cdSBarry Smith 216*7758a8cdSBarry Smith Input : formatted string and arguments. 217*7758a8cdSBarry Smith Output: conversion printed to stdout. 218*7758a8cdSBarry Smith Return: na. 219*7758a8cdSBarry Smith Description: prints error message and terminates program. 220*7758a8cdSBarry Smith Usage: error_msg_fatal("this is my %d'st test",test_num) 221*7758a8cdSBarry Smith **********************************error.h*************************************/ 222*7758a8cdSBarry Smith extern void error_msg_fatal(const char msg[], ...); 223*7758a8cdSBarry Smith 224*7758a8cdSBarry Smith 225*7758a8cdSBarry Smith 226*7758a8cdSBarry Smith /**********************************error.h************************************* 227*7758a8cdSBarry Smith Function: error_msg_warning() 228*7758a8cdSBarry Smith 229*7758a8cdSBarry Smith Input : formatted string and arguments. 230*7758a8cdSBarry Smith Output: conversion printed to stdout. 231*7758a8cdSBarry Smith Return: na. 232*7758a8cdSBarry Smith Description: prints error message. 233*7758a8cdSBarry Smith Usage: error_msg_warning("this is my %d'st test",test_num) 234*7758a8cdSBarry Smith **********************************error.h*************************************/ 235*7758a8cdSBarry Smith extern void error_msg_warning(const char msg[], ...); 236*7758a8cdSBarry Smith 237*7758a8cdSBarry Smith /*$Id: vector.c,v 1.228 2001/03/23 23:21:22 balay Exp $*/ 238*7758a8cdSBarry Smith /**********************************ivec.h************************************** 239*7758a8cdSBarry Smith 240*7758a8cdSBarry Smith Author: Henry M. Tufo III 241*7758a8cdSBarry Smith 242*7758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 243*7758a8cdSBarry Smith 244*7758a8cdSBarry Smith snail-mail: 245*7758a8cdSBarry Smith Division of Applied Mathematics 246*7758a8cdSBarry Smith Brown University 247*7758a8cdSBarry Smith Providence, RI 02912 248*7758a8cdSBarry Smith 249*7758a8cdSBarry Smith Last Modification: 250*7758a8cdSBarry Smith 6.21.97 251*7758a8cdSBarry Smith ***********************************ivec.h*************************************/ 252*7758a8cdSBarry Smith 253*7758a8cdSBarry Smith /**********************************ivec.h************************************** 254*7758a8cdSBarry Smith File Description: 255*7758a8cdSBarry Smith ----------------- 256*7758a8cdSBarry Smith 257*7758a8cdSBarry Smith ***********************************ivec.h*************************************/ 258*7758a8cdSBarry Smith 259*7758a8cdSBarry Smith #define SORT_REAL 1 260*7758a8cdSBarry Smith #define SORT_INTEGER 0 261*7758a8cdSBarry Smith #define SORT_INT_PTR 2 262*7758a8cdSBarry Smith 263*7758a8cdSBarry Smith 264*7758a8cdSBarry Smith #define NON_UNIFORM 0 265*7758a8cdSBarry Smith #define GL_MAX 1 266*7758a8cdSBarry Smith #define GL_MIN 2 267*7758a8cdSBarry Smith #define GL_MULT 3 268*7758a8cdSBarry Smith #define GL_ADD 4 269*7758a8cdSBarry Smith #define GL_B_XOR 5 270*7758a8cdSBarry Smith #define GL_B_OR 6 271*7758a8cdSBarry Smith #define GL_B_AND 7 272*7758a8cdSBarry Smith #define GL_L_XOR 8 273*7758a8cdSBarry Smith #define GL_L_OR 9 274*7758a8cdSBarry Smith #define GL_L_AND 10 275*7758a8cdSBarry Smith #define GL_MAX_ABS 11 276*7758a8cdSBarry Smith #define GL_MIN_ABS 12 277*7758a8cdSBarry Smith #define GL_EXISTS 13 278*7758a8cdSBarry Smith 279*7758a8cdSBarry Smith 280*7758a8cdSBarry Smith 281*7758a8cdSBarry Smith /**********************************ivec.h************************************** 282*7758a8cdSBarry Smith Function: 283*7758a8cdSBarry Smith 284*7758a8cdSBarry Smith Input : 285*7758a8cdSBarry Smith Output: 286*7758a8cdSBarry Smith Return: 287*7758a8cdSBarry Smith Description: 288*7758a8cdSBarry Smith Usage: 289*7758a8cdSBarry Smith ***********************************ivec.h*************************************/ 290*7758a8cdSBarry Smith extern void ivec_dump(int *v, int n, int tag, int tag2, char * s); 291*7758a8cdSBarry Smith extern void ivec_lb_ub(int *arg1, int n, int *lb, int *ub); 292*7758a8cdSBarry Smith extern int *ivec_copy(int *arg1, int *arg2, int n); 293*7758a8cdSBarry Smith /*void ivec_copy(int *arg1, int *arg2, int n); */ 294*7758a8cdSBarry Smith 295*7758a8cdSBarry Smith extern void ivec_comp(int *arg1, int n); 296*7758a8cdSBarry Smith 297*7758a8cdSBarry Smith extern int ivec_reduce_and(int *arg1, int n); 298*7758a8cdSBarry Smith extern int ivec_reduce_or(int *arg1, int n); 299*7758a8cdSBarry Smith 300*7758a8cdSBarry Smith extern void ivec_zero(int *arg1, int n); 301*7758a8cdSBarry Smith extern void ivec_pos_one(int *arg1, int n); 302*7758a8cdSBarry Smith extern void ivec_neg_one(int *arg1, int n); 303*7758a8cdSBarry Smith extern void ivec_set(int *arg1, int arg2, int n); 304*7758a8cdSBarry Smith extern int ivec_cmp(int *arg1, int *arg2, int n); 305*7758a8cdSBarry Smith 306*7758a8cdSBarry Smith extern int ivec_lb(int *work, int n); 307*7758a8cdSBarry Smith extern int ivec_ub(int *work, int n); 308*7758a8cdSBarry Smith extern int ivec_sum(int *arg1, int n); 309*7758a8cdSBarry Smith extern int ivec_u_sum(unsigned *arg1, int n); 310*7758a8cdSBarry Smith extern int ivec_prod(int *arg1, int n); 311*7758a8cdSBarry Smith 312*7758a8cdSBarry Smith extern vfp ivec_fct_addr(int type); 313*7758a8cdSBarry Smith 314*7758a8cdSBarry Smith extern void ivec_non_uniform(int *arg1, int *arg2, int n, int *arg3); 315*7758a8cdSBarry Smith extern void ivec_max(int *arg1, int *arg2, int n); 316*7758a8cdSBarry Smith extern void ivec_min(int *arg1, int *arg2, int n); 317*7758a8cdSBarry Smith extern void ivec_mult(int *arg1, int *arg2, int n); 318*7758a8cdSBarry Smith extern void ivec_add(int *arg1, int *arg2, int n); 319*7758a8cdSBarry Smith extern void ivec_xor(int *arg1, int *arg2, int n); 320*7758a8cdSBarry Smith extern void ivec_or(int *arg1, int *arg2, int len); 321*7758a8cdSBarry Smith extern void ivec_and(int *arg1, int *arg2, int len); 322*7758a8cdSBarry Smith extern void ivec_lxor(int *arg1, int *arg2, int n); 323*7758a8cdSBarry Smith extern void ivec_lor(int *arg1, int *arg2, int len); 324*7758a8cdSBarry Smith extern void ivec_land(int *arg1, int *arg2, int len); 325*7758a8cdSBarry Smith 326*7758a8cdSBarry Smith extern void ivec_or3 (int *arg1, int *arg2, int *arg3, int len); 327*7758a8cdSBarry Smith extern void ivec_and3(int *arg1, int *arg2, int *arg3, int n); 328*7758a8cdSBarry Smith 329*7758a8cdSBarry Smith extern int ivec_split_buf(int *buf1, int **buf2, int size); 330*7758a8cdSBarry Smith 331*7758a8cdSBarry Smith 332*7758a8cdSBarry Smith extern void ivec_sort_companion(int *ar, int *ar2, int size); 333*7758a8cdSBarry Smith extern void ivec_sort(int *ar, int size); 334*7758a8cdSBarry Smith extern void SMI_sort(void *ar1, void *ar2, int size, int type); 335*7758a8cdSBarry Smith extern int ivec_binary_search(int item, int *list, int n); 336*7758a8cdSBarry Smith extern int ivec_linear_search(int item, int *list, int n); 337*7758a8cdSBarry Smith 338*7758a8cdSBarry Smith extern void ivec_c_index(int *arg1, int n); 339*7758a8cdSBarry Smith extern void ivec_fortran_index(int *arg1, int n); 340*7758a8cdSBarry Smith extern void ivec_sort_companion_hack(int *ar, int **ar2, int size); 341*7758a8cdSBarry Smith 342*7758a8cdSBarry Smith 343*7758a8cdSBarry Smith extern void rvec_dump(PetscScalar *v, int n, int tag, int tag2, char * s); 344*7758a8cdSBarry Smith extern void rvec_zero(PetscScalar *arg1, int n); 345*7758a8cdSBarry Smith extern void rvec_one(PetscScalar *arg1, int n); 346*7758a8cdSBarry Smith extern void rvec_neg_one(PetscScalar *arg1, int n); 347*7758a8cdSBarry Smith extern void rvec_set(PetscScalar *arg1, PetscScalar arg2, int n); 348*7758a8cdSBarry Smith extern void rvec_copy(PetscScalar *arg1, PetscScalar *arg2, int n); 349*7758a8cdSBarry Smith extern void rvec_lb_ub(PetscScalar *arg1, int n, PetscScalar *lb, PetscScalar *ub); 350*7758a8cdSBarry Smith extern void rvec_scale(PetscScalar *arg1, PetscScalar arg2, int n); 351*7758a8cdSBarry Smith 352*7758a8cdSBarry Smith extern vfp rvec_fct_addr(int type); 353*7758a8cdSBarry Smith extern void rvec_add(PetscScalar *arg1, PetscScalar *arg2, int n); 354*7758a8cdSBarry Smith extern void rvec_mult(PetscScalar *arg1, PetscScalar *arg2, int n); 355*7758a8cdSBarry Smith extern void rvec_max(PetscScalar *arg1, PetscScalar *arg2, int n); 356*7758a8cdSBarry Smith extern void rvec_max_abs(PetscScalar *arg1, PetscScalar *arg2, int n); 357*7758a8cdSBarry Smith extern void rvec_min(PetscScalar *arg1, PetscScalar *arg2, int n); 358*7758a8cdSBarry Smith extern void rvec_min_abs(PetscScalar *arg1, PetscScalar *arg2, int n); 359*7758a8cdSBarry Smith extern void vec_exists(PetscScalar *arg1, PetscScalar *arg2, int n); 360*7758a8cdSBarry Smith 361*7758a8cdSBarry Smith 362*7758a8cdSBarry Smith extern void rvec_sort(PetscScalar *ar, int size); 363*7758a8cdSBarry Smith extern void rvec_sort_companion(PetscScalar *ar, int *ar2, int size); 364*7758a8cdSBarry Smith 365*7758a8cdSBarry Smith extern PetscScalar rvec_dot(PetscScalar *arg1, PetscScalar *arg2, int n); 366*7758a8cdSBarry Smith 367*7758a8cdSBarry Smith extern void rvec_axpy(PetscScalar *arg1, PetscScalar *arg2, PetscScalar scale, int n); 368*7758a8cdSBarry Smith 369*7758a8cdSBarry Smith extern int rvec_binary_search(PetscScalar item, PetscScalar *list, int rh); 370*7758a8cdSBarry Smith 371*7758a8cdSBarry Smith 372*7758a8cdSBarry Smith /**********************************queue.h************************************* 373*7758a8cdSBarry Smith 374*7758a8cdSBarry Smith Author: Henry M. Tufo III 375*7758a8cdSBarry Smith 376*7758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 377*7758a8cdSBarry Smith 378*7758a8cdSBarry Smith snail-mail: 379*7758a8cdSBarry Smith Division of Applied Mathematics 380*7758a8cdSBarry Smith Brown University 381*7758a8cdSBarry Smith Providence, RI 02912 382*7758a8cdSBarry Smith 383*7758a8cdSBarry Smith Last Modification: 384*7758a8cdSBarry Smith 6.21.97 385*7758a8cdSBarry Smith **********************************queue.h*************************************/ 386*7758a8cdSBarry Smith 387*7758a8cdSBarry Smith /**********************************queue.h************************************* 388*7758a8cdSBarry Smith File Description: 389*7758a8cdSBarry Smith ----------------- 390*7758a8cdSBarry Smith This file provides an interface to a simple queue abstraction. 391*7758a8cdSBarry Smith **********************************queue.h*************************************/ 392*7758a8cdSBarry Smith 393*7758a8cdSBarry Smith /**********************************queue.h************************************* 394*7758a8cdSBarry Smith Type: queue_ADT 395*7758a8cdSBarry Smith --------------- 396*7758a8cdSBarry Smith This line defines the abstract queue type as a pointer to 397*7758a8cdSBarry Smith its concrete counterpart. Clients have no access to the 398*7758a8cdSBarry Smith underlying representation. 399*7758a8cdSBarry Smith **********************************queue.h*************************************/ 400*7758a8cdSBarry Smith typedef struct queue_CDT *queue_ADT; 401*7758a8cdSBarry Smith 402*7758a8cdSBarry Smith 403*7758a8cdSBarry Smith 404*7758a8cdSBarry Smith /**********************************queue.h************************************* 405*7758a8cdSBarry Smith Function: new_queue() 406*7758a8cdSBarry Smith 407*7758a8cdSBarry Smith Input : na 408*7758a8cdSBarry Smith Output: na 409*7758a8cdSBarry Smith Return: pointer to ADT. 410*7758a8cdSBarry Smith Description: This function allocates and returns an empty queue. 411*7758a8cdSBarry Smith Usage: queue = new_queue(); 412*7758a8cdSBarry Smith **********************************queue.h*************************************/ 413*7758a8cdSBarry Smith extern queue_ADT new_queue(void); 414*7758a8cdSBarry Smith 415*7758a8cdSBarry Smith 416*7758a8cdSBarry Smith 417*7758a8cdSBarry Smith /**********************************queue.h************************************* 418*7758a8cdSBarry Smith Function: free_queue() 419*7758a8cdSBarry Smith 420*7758a8cdSBarry Smith Input : pointer to ADT. 421*7758a8cdSBarry Smith Output: na 422*7758a8cdSBarry Smith Return: na 423*7758a8cdSBarry Smith Description: This function frees the storage associated with queue but not any 424*7758a8cdSBarry Smith pointer contained w/in. 425*7758a8cdSBarry Smith Usage: free_queue(queue); 426*7758a8cdSBarry Smith **********************************queue.h*************************************/ 427*7758a8cdSBarry Smith extern void free_queue(queue_ADT queue); 428*7758a8cdSBarry Smith 429*7758a8cdSBarry Smith 430*7758a8cdSBarry Smith 431*7758a8cdSBarry Smith /**********************************queue.h************************************* 432*7758a8cdSBarry Smith Function: enqueue() 433*7758a8cdSBarry Smith 434*7758a8cdSBarry Smith Input : pointer to ADT and pointer to object 435*7758a8cdSBarry Smith Output: na 436*7758a8cdSBarry Smith Return: na 437*7758a8cdSBarry Smith Description: This function adds obj to the end of the queue. 438*7758a8cdSBarry Smith Usage: enqueue(queue, obj); 439*7758a8cdSBarry Smith **********************************queue.h*************************************/ 440*7758a8cdSBarry Smith extern void enqueue(queue_ADT queue, void *obj); 441*7758a8cdSBarry Smith 442*7758a8cdSBarry Smith 443*7758a8cdSBarry Smith 444*7758a8cdSBarry Smith /**********************************queue.h************************************* 445*7758a8cdSBarry Smith Function: dequeue() 446*7758a8cdSBarry Smith 447*7758a8cdSBarry Smith Input : pointer to ADT 448*7758a8cdSBarry Smith Output: na 449*7758a8cdSBarry Smith Return: void * to element 450*7758a8cdSBarry Smith Description: This function removes the data value at the head of the queue 451*7758a8cdSBarry Smith and returns it to the client. dequeueing an empty queue is an error 452*7758a8cdSBarry Smith Usage: obj = dequeue(queue); 453*7758a8cdSBarry Smith **********************************queue.h*************************************/ 454*7758a8cdSBarry Smith extern void *dequeue(queue_ADT queue); 455*7758a8cdSBarry Smith 456*7758a8cdSBarry Smith 457*7758a8cdSBarry Smith 458*7758a8cdSBarry Smith /**********************************queue.h************************************* 459*7758a8cdSBarry Smith Function: len_queue() 460*7758a8cdSBarry Smith 461*7758a8cdSBarry Smith Input : pointer to ADT 462*7758a8cdSBarry Smith Output: na 463*7758a8cdSBarry Smith Return: integer number of elements 464*7758a8cdSBarry Smith Description: This function returns the number of elements in the queue. 465*7758a8cdSBarry Smith Usage: n = len_queue(queue); 466*7758a8cdSBarry Smith **********************************queue.h*************************************/ 467*7758a8cdSBarry Smith EXTERN int len_queue(queue_ADT queue); 468*7758a8cdSBarry Smith 469*7758a8cdSBarry Smith 470*7758a8cdSBarry Smith 471*7758a8cdSBarry Smith /*$Id: vector.c,v 1.228 2001/03/23 23:21:22 balay Exp $*/ 472*7758a8cdSBarry Smith /***********************************gs.h*************************************** 473*7758a8cdSBarry Smith 474*7758a8cdSBarry Smith Author: Henry M. Tufo III 475*7758a8cdSBarry Smith 476*7758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 477*7758a8cdSBarry Smith 478*7758a8cdSBarry Smith snail-mail: 479*7758a8cdSBarry Smith Division of Applied Mathematics 480*7758a8cdSBarry Smith Brown University 481*7758a8cdSBarry Smith Providence, RI 02912 482*7758a8cdSBarry Smith 483*7758a8cdSBarry Smith Last Modification: 484*7758a8cdSBarry Smith 6.21.97 485*7758a8cdSBarry Smith ************************************gs.h**************************************/ 486*7758a8cdSBarry Smith 487*7758a8cdSBarry Smith /***********************************gs.h*************************************** 488*7758a8cdSBarry Smith File Description: 489*7758a8cdSBarry Smith ----------------- 490*7758a8cdSBarry Smith 491*7758a8cdSBarry Smith ************************************gs.h**************************************/ 492*7758a8cdSBarry Smith 493*7758a8cdSBarry Smith /***********************************gs.h*************************************** 494*7758a8cdSBarry Smith Type: gs_ADT 495*7758a8cdSBarry Smith ------------ 496*7758a8cdSBarry Smith 497*7758a8cdSBarry Smith ************************************gs.h**************************************/ 498*7758a8cdSBarry Smith 499*7758a8cdSBarry Smith typedef struct gather_scatter_id *gs_ADT; 500*7758a8cdSBarry Smith typedef void (*Rbfp)(PetscScalar *, PetscScalar *, int len); 501*7758a8cdSBarry Smith 502*7758a8cdSBarry Smith /***********************************gs.h*************************************** 503*7758a8cdSBarry Smith Function: 504*7758a8cdSBarry Smith 505*7758a8cdSBarry Smith Input : 506*7758a8cdSBarry Smith Output: 507*7758a8cdSBarry Smith Return: 508*7758a8cdSBarry Smith Description: 509*7758a8cdSBarry Smith Usage: 510*7758a8cdSBarry Smith ************************************gs.h**************************************/ 511*7758a8cdSBarry Smith extern gs_ADT gs_init(int *elms, int nel, int level); 512*7758a8cdSBarry Smith extern void gs_gop(gs_ADT gs_handle, PetscScalar *vals, const char *op); 513*7758a8cdSBarry Smith extern void gs_gop_vec(gs_ADT gs_handle, PetscScalar *vals, const char *op, int step); 514*7758a8cdSBarry Smith extern void gs_gop_binary(gs_ADT gs, PetscScalar *vals, Rbfp fct); 515*7758a8cdSBarry Smith extern void gs_gop_hc(gs_ADT gs_handle, PetscScalar *vals, const char *op, int dim); 516*7758a8cdSBarry Smith extern void gs_free(gs_ADT gs_handle); 517*7758a8cdSBarry Smith extern void gs_init_msg_buf_sz(int buf_size); 518*7758a8cdSBarry Smith extern void gs_init_vec_sz(int size); 519*7758a8cdSBarry Smith 520*7758a8cdSBarry Smith 521*7758a8cdSBarry Smith 522*7758a8cdSBarry Smith /*************************************xxt.h************************************ 523*7758a8cdSBarry Smith Module Name: xxt 524*7758a8cdSBarry Smith Module Info: need xxt.{c,h} gs.{c,h} comm.{c,h} ivec.{c,h} error.{c,h} 525*7758a8cdSBarry Smith 526*7758a8cdSBarry Smith author: Henry M. Tufo III 527*7758a8cdSBarry Smith e-mail: hmt@asci.uchicago.edu 528*7758a8cdSBarry Smith contact: 529*7758a8cdSBarry Smith +--------------------------------+--------------------------------+ 530*7758a8cdSBarry Smith |MCS Division - Building 221 |Department of Computer Science | 531*7758a8cdSBarry Smith |Argonne National Laboratory |Ryerson 152 | 532*7758a8cdSBarry Smith |9700 S. Cass Avenue |The University of Chicago | 533*7758a8cdSBarry Smith |Argonne, IL 60439 |Chicago, IL 60637 | 534*7758a8cdSBarry Smith |(630) 252-5354/5986 ph/fx |(773) 702-6019/8487 ph/fx | 535*7758a8cdSBarry Smith +--------------------------------+--------------------------------+ 536*7758a8cdSBarry Smith 537*7758a8cdSBarry Smith Last Modification: 3.20.01 538*7758a8cdSBarry Smith **************************************xxt.h***********************************/ 539*7758a8cdSBarry Smith 540*7758a8cdSBarry Smith /*************************************xxt.h************************************ 541*7758a8cdSBarry Smith File Description: 542*7758a8cdSBarry Smith **************************************xxt.h***********************************/ 543*7758a8cdSBarry Smith 544*7758a8cdSBarry Smith /*************************************xxt.h************************************ 545*7758a8cdSBarry Smith Notes on Usage: 546*7758a8cdSBarry Smith **************************************xxt.h***********************************/ 547*7758a8cdSBarry Smith 548*7758a8cdSBarry Smith 549*7758a8cdSBarry Smith typedef struct xxt_CDT *xxt_ADT; 550*7758a8cdSBarry Smith 551*7758a8cdSBarry Smith 552*7758a8cdSBarry Smith /*************************************xxt.h************************************ 553*7758a8cdSBarry Smith Function: XXT_new() 554*7758a8cdSBarry Smith 555*7758a8cdSBarry Smith Input : 556*7758a8cdSBarry Smith Output: 557*7758a8cdSBarry Smith Return: ADT ptr or NULL upon failure. 558*7758a8cdSBarry Smith Description: This function allocates and returns an xxt handle 559*7758a8cdSBarry Smith Usage: xxt_handle = xxt_new(); 560*7758a8cdSBarry Smith **************************************xxt.h***********************************/ 561*7758a8cdSBarry Smith extern xxt_ADT XXT_new(void); 562*7758a8cdSBarry Smith 563*7758a8cdSBarry Smith 564*7758a8cdSBarry Smith /*************************************xxt.h************************************ 565*7758a8cdSBarry Smith Function: XXT_free() 566*7758a8cdSBarry Smith 567*7758a8cdSBarry Smith Input : pointer to ADT. 568*7758a8cdSBarry Smith Output: 569*7758a8cdSBarry Smith Return: 570*7758a8cdSBarry Smith Description: This function frees the storage associated with an xxt handle 571*7758a8cdSBarry Smith Usage: XXT_free(xxt_handle); 572*7758a8cdSBarry Smith **************************************xxt.h***********************************/ 573*7758a8cdSBarry Smith EXTERN int XXT_free(xxt_ADT xxt_handle); 574*7758a8cdSBarry Smith 575*7758a8cdSBarry Smith 576*7758a8cdSBarry Smith /*************************************xxt.h************************************ 577*7758a8cdSBarry Smith Function: XXT_factor 578*7758a8cdSBarry Smith 579*7758a8cdSBarry Smith Input : ADT ptr, and pointer to object 580*7758a8cdSBarry Smith Output: 581*7758a8cdSBarry Smith Return: 0 on failure, 1 on success 582*7758a8cdSBarry Smith Description: This function sets the xxt solver 583*7758a8cdSBarry Smith 584*7758a8cdSBarry Smith xxt assumptions: given n rows of global coarse matrix (E_loc) where 585*7758a8cdSBarry Smith o global dofs N = sum_p(n), p=0,P-1 586*7758a8cdSBarry Smith (i.e. row dist. with no dof replication) 587*7758a8cdSBarry Smith (5.21.00 will handle dif replication case) 588*7758a8cdSBarry Smith o m is the number of columns in E_loc (m>=n) 589*7758a8cdSBarry Smith o local2global holds global number of column i (i=0,...,m-1) 590*7758a8cdSBarry Smith o local2global holds global number of row i (i=0,...,n-1) 591*7758a8cdSBarry Smith o mylocmatvec performs E_loc . x_loc where x_loc is an vector of 592*7758a8cdSBarry Smith length m in 1-1 correspondence with local2global 593*7758a8cdSBarry Smith (note that gs package takes care of communication). 594*7758a8cdSBarry Smith (note do not zero out upper m-n entries!) 595*7758a8cdSBarry Smith o mylocmatvec(void *grid_data, double *in, double *out) 596*7758a8cdSBarry Smith 597*7758a8cdSBarry Smith ML beliefs/usage: move this to to ML_XXT_factor routine 598*7758a8cdSBarry Smith o my_ml holds address of ML struct associated w/E_loc, grid_data, grid_tag 599*7758a8cdSBarry Smith o grid_tag, grid_data, my_ml used in 600*7758a8cdSBarry Smith ML_Set_CSolve(my_ml, grid_tag, grid_data, ML_Do_CoarseDirect); 601*7758a8cdSBarry Smith o grid_data used in 602*7758a8cdSBarry Smith A_matvec(grid_data,v,u); 603*7758a8cdSBarry Smith 604*7758a8cdSBarry Smith Usage: 605*7758a8cdSBarry Smith **************************************xxt.h***********************************/ 606*7758a8cdSBarry Smith extern int XXT_factor(xxt_ADT xxt_handle, /* prev. allocated xxt handle */ 607*7758a8cdSBarry Smith int *local2global, /* global column mapping */ 608*7758a8cdSBarry Smith int n, /* local num rows */ 609*7758a8cdSBarry Smith int m, /* local num cols */ 610*7758a8cdSBarry Smith void *mylocmatvec, /* b_loc=A_local.x_loc */ 611*7758a8cdSBarry Smith void *grid_data /* grid data for matvec */ 612*7758a8cdSBarry Smith ); 613*7758a8cdSBarry Smith 614*7758a8cdSBarry Smith 615*7758a8cdSBarry Smith /*************************************xxt.h************************************ 616*7758a8cdSBarry Smith Function: XXT_solve 617*7758a8cdSBarry Smith 618*7758a8cdSBarry Smith Input : ADT ptr, b (rhs) 619*7758a8cdSBarry Smith Output: x (soln) 620*7758a8cdSBarry Smith Return: 621*7758a8cdSBarry Smith Description: This function performs x = E^-1.b 622*7758a8cdSBarry Smith Usage: 623*7758a8cdSBarry Smith XXT_solve(xxt_handle, double *x, double *b) 624*7758a8cdSBarry Smith XXT_solve(xxt_handle, double *x, NULL) 625*7758a8cdSBarry Smith assumes x has been initialized to be b 626*7758a8cdSBarry Smith impl. issue for FORTRAN interface ... punt for now and disallow NULL opt. 627*7758a8cdSBarry Smith **************************************xxt.h***********************************/ 628*7758a8cdSBarry Smith extern int XXT_solve(xxt_ADT xxt_handle, double *x, double *b); 629*7758a8cdSBarry Smith 630*7758a8cdSBarry Smith 631*7758a8cdSBarry Smith /*************************************xxt.h************************************ 632*7758a8cdSBarry Smith Function: XXT_stats 633*7758a8cdSBarry Smith 634*7758a8cdSBarry Smith Input : handle 635*7758a8cdSBarry Smith Output: 636*7758a8cdSBarry Smith Return: 637*7758a8cdSBarry Smith Description: 638*7758a8cdSBarry Smith factor stats 639*7758a8cdSBarry Smith **************************************xxt.h***********************************/ 640*7758a8cdSBarry Smith extern int XXT_stats(xxt_ADT xxt_handle); 641*7758a8cdSBarry Smith 642*7758a8cdSBarry Smith 643*7758a8cdSBarry Smith /*************************************xxt.h************************************ 644*7758a8cdSBarry Smith Function: XXT_sp_1() 645*7758a8cdSBarry Smith 646*7758a8cdSBarry Smith Input : pointer to ADT 647*7758a8cdSBarry Smith Output: 648*7758a8cdSBarry Smith Return: 649*7758a8cdSBarry Smith Description: sets xxt parameter 1 in xxt_handle 650*7758a8cdSBarry Smith Usage: implement later 651*7758a8cdSBarry Smith 652*7758a8cdSBarry Smith void XXT_sp_1(xxt_handle,parameter 1 value) 653*7758a8cdSBarry Smith **************************************xxt.h***********************************/ 654*7758a8cdSBarry Smith 655*7758a8cdSBarry Smith 656*7758a8cdSBarry Smith /*************************************xyt.h************************************ 657*7758a8cdSBarry Smith Module Name: xyt 658*7758a8cdSBarry Smith Module Info: need xyt.{c,h} gs.{c,h} comm.{c,h} ivec.{c,h} error.{c,h} 659*7758a8cdSBarry Smith 660*7758a8cdSBarry Smith author: Henry M. Tufo III 661*7758a8cdSBarry Smith e-mail: hmt@asci.uchicago.edu 662*7758a8cdSBarry Smith contact: 663*7758a8cdSBarry Smith +--------------------------------+--------------------------------+ 664*7758a8cdSBarry Smith |MCS Division - Building 221 |Department of Computer Science | 665*7758a8cdSBarry Smith |Argonne National Laboratory |Ryerson 152 | 666*7758a8cdSBarry Smith |9700 S. Cass Avenue |The University of Chicago | 667*7758a8cdSBarry Smith |Argonne, IL 60439 |Chicago, IL 60637 | 668*7758a8cdSBarry Smith |(630) 252-5354/5986 ph/fx |(773) 702-6019/8487 ph/fx | 669*7758a8cdSBarry Smith +--------------------------------+--------------------------------+ 670*7758a8cdSBarry Smith 671*7758a8cdSBarry Smith Last Modification: 3.20.01 672*7758a8cdSBarry Smith **************************************xyt.h***********************************/ 673*7758a8cdSBarry Smith 674*7758a8cdSBarry Smith /*************************************xyt.h************************************ 675*7758a8cdSBarry Smith File Description: 676*7758a8cdSBarry Smith **************************************xyt.h***********************************/ 677*7758a8cdSBarry Smith 678*7758a8cdSBarry Smith /*************************************xyt.h************************************ 679*7758a8cdSBarry Smith Notes on Usage: 680*7758a8cdSBarry Smith **************************************xyt.h***********************************/ 681*7758a8cdSBarry Smith 682*7758a8cdSBarry Smith 683*7758a8cdSBarry Smith 684*7758a8cdSBarry Smith typedef struct xyt_CDT *xyt_ADT; 685*7758a8cdSBarry Smith 686*7758a8cdSBarry Smith 687*7758a8cdSBarry Smith /*************************************xyt.h************************************ 688*7758a8cdSBarry Smith Function: XYT_new() 689*7758a8cdSBarry Smith 690*7758a8cdSBarry Smith Input : 691*7758a8cdSBarry Smith Output: 692*7758a8cdSBarry Smith Return: ADT ptr or NULL upon failure. 693*7758a8cdSBarry Smith Description: This function allocates and returns an xyt handle 694*7758a8cdSBarry Smith Usage: xyt_handle = xyt_new(); 695*7758a8cdSBarry Smith **************************************xyt.h***********************************/ 696*7758a8cdSBarry Smith extern xyt_ADT XYT_new(void); 697*7758a8cdSBarry Smith 698*7758a8cdSBarry Smith 699*7758a8cdSBarry Smith /*************************************xyt.h************************************ 700*7758a8cdSBarry Smith Function: XYT_free() 701*7758a8cdSBarry Smith 702*7758a8cdSBarry Smith Input : pointer to ADT. 703*7758a8cdSBarry Smith Output: 704*7758a8cdSBarry Smith Return: 705*7758a8cdSBarry Smith Description: This function frees the storage associated with an xyt handle 706*7758a8cdSBarry Smith Usage: XYT_free(xyt_handle); 707*7758a8cdSBarry Smith **************************************xyt.h***********************************/ 708*7758a8cdSBarry Smith EXTERN int XYT_free(xyt_ADT xyt_handle); 709*7758a8cdSBarry Smith 710*7758a8cdSBarry Smith 711*7758a8cdSBarry Smith /*************************************xyt.h************************************ 712*7758a8cdSBarry Smith Function: XYT_factor 713*7758a8cdSBarry Smith 714*7758a8cdSBarry Smith Input : ADT ptr, and pointer to object 715*7758a8cdSBarry Smith Output: 716*7758a8cdSBarry Smith Return: 0 on failure, 1 on success 717*7758a8cdSBarry Smith Description: This function sets the xyt solver 718*7758a8cdSBarry Smith 719*7758a8cdSBarry Smith xyt assumptions: given n rows of global coarse matrix (E_loc) where 720*7758a8cdSBarry Smith o global dofs N = sum_p(n), p=0,P-1 721*7758a8cdSBarry Smith (i.e. row dist. with no dof replication) 722*7758a8cdSBarry Smith (5.21.00 will handle dif replication case) 723*7758a8cdSBarry Smith o m is the number of columns in E_loc (m>=n) 724*7758a8cdSBarry Smith o local2global holds global number of column i (i=0,...,m-1) 725*7758a8cdSBarry Smith o local2global holds global number of row i (i=0,...,n-1) 726*7758a8cdSBarry Smith o mylocmatvec performs E_loc . x_loc where x_loc is an vector of 727*7758a8cdSBarry Smith length m in 1-1 correspondence with local2global 728*7758a8cdSBarry Smith (note that gs package takes care of communication). 729*7758a8cdSBarry Smith (note do not zero out upper m-n entries!) 730*7758a8cdSBarry Smith o mylocmatvec(void *grid_data, double *in, double *out) 731*7758a8cdSBarry Smith 732*7758a8cdSBarry Smith ML beliefs/usage: move this to to ML_XYT_factor routine 733*7758a8cdSBarry Smith o my_ml holds address of ML struct associated w/E_loc, grid_data, grid_tag 734*7758a8cdSBarry Smith o grid_tag, grid_data, my_ml used in 735*7758a8cdSBarry Smith ML_Set_CSolve(my_ml, grid_tag, grid_data, ML_Do_CoarseDirect); 736*7758a8cdSBarry Smith o grid_data used in 737*7758a8cdSBarry Smith A_matvec(grid_data,v,u); 738*7758a8cdSBarry Smith 739*7758a8cdSBarry Smith Usage: 740*7758a8cdSBarry Smith **************************************xyt.h***********************************/ 741*7758a8cdSBarry Smith extern int XYT_factor(xyt_ADT xyt_handle, /* prev. allocated xyt handle */ 742*7758a8cdSBarry Smith int *local2global, /* global column mapping */ 743*7758a8cdSBarry Smith int n, /* local num rows */ 744*7758a8cdSBarry Smith int m, /* local num cols */ 745*7758a8cdSBarry Smith void *mylocmatvec, /* b_loc=A_local.x_loc */ 746*7758a8cdSBarry Smith void *grid_data /* grid data for matvec */ 747*7758a8cdSBarry Smith ); 748*7758a8cdSBarry Smith 749*7758a8cdSBarry Smith 750*7758a8cdSBarry Smith /*************************************xyt.h************************************ 751*7758a8cdSBarry Smith Function: XYT_solve 752*7758a8cdSBarry Smith 753*7758a8cdSBarry Smith Input : ADT ptr, b (rhs) 754*7758a8cdSBarry Smith Output: x (soln) 755*7758a8cdSBarry Smith Return: 756*7758a8cdSBarry Smith Description: This function performs x = E^-1.b 757*7758a8cdSBarry Smith Usage: XYT_solve(xyt_handle, double *x, double *b) 758*7758a8cdSBarry Smith **************************************xyt.h***********************************/ 759*7758a8cdSBarry Smith extern int XYT_solve(xyt_ADT xyt_handle, double *x, double *b); 760*7758a8cdSBarry Smith 761*7758a8cdSBarry Smith 762*7758a8cdSBarry Smith /*************************************xyt.h************************************ 763*7758a8cdSBarry Smith Function: XYT_stats 764*7758a8cdSBarry Smith 765*7758a8cdSBarry Smith Input : handle 766*7758a8cdSBarry Smith Output: 767*7758a8cdSBarry Smith Return: 768*7758a8cdSBarry Smith Description: 769*7758a8cdSBarry Smith factor stats 770*7758a8cdSBarry Smith **************************************xyt.h***********************************/ 771*7758a8cdSBarry Smith extern int XYT_stats(xyt_ADT xyt_handle); 772*7758a8cdSBarry Smith 773*7758a8cdSBarry Smith 774*7758a8cdSBarry Smith /*************************************xyt.h************************************ 775*7758a8cdSBarry Smith Function: XYT_sp_1() 776*7758a8cdSBarry Smith 777*7758a8cdSBarry Smith Input : pointer to ADT 778*7758a8cdSBarry Smith Output: 779*7758a8cdSBarry Smith Return: 780*7758a8cdSBarry Smith Description: sets xyt parameter 1 in xyt_handle 781*7758a8cdSBarry Smith Usage: implement later 782*7758a8cdSBarry Smith 783*7758a8cdSBarry Smith void XYT_sp_1(xyt_handle,parameter 1 value) 784*7758a8cdSBarry Smith **************************************xyt.h***********************************/ 785*7758a8cdSBarry Smith 786*7758a8cdSBarry Smith /********************************bit_mask.h************************************ 787*7758a8cdSBarry Smith 788*7758a8cdSBarry Smith Author: Henry M. Tufo III 789*7758a8cdSBarry Smith 790*7758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 791*7758a8cdSBarry Smith 792*7758a8cdSBarry Smith snail-mail: 793*7758a8cdSBarry Smith Division of Applied Mathematics 794*7758a8cdSBarry Smith Brown University 795*7758a8cdSBarry Smith Providence, RI 02912 796*7758a8cdSBarry Smith 797*7758a8cdSBarry Smith Last Modification: 798*7758a8cdSBarry Smith 11.21.97 799*7758a8cdSBarry Smith *********************************bit_mask.h***********************************/ 800*7758a8cdSBarry Smith 801*7758a8cdSBarry Smith /********************************bit_mask.h************************************ 802*7758a8cdSBarry Smith File Description: 803*7758a8cdSBarry Smith ----------------- 804*7758a8cdSBarry Smith 805*7758a8cdSBarry Smith *********************************bit_mask.h***********************************/ 806*7758a8cdSBarry Smith 807*7758a8cdSBarry Smith 808*7758a8cdSBarry Smith /********************************bit_mask.h************************************ 809*7758a8cdSBarry Smith Function: 810*7758a8cdSBarry Smith 811*7758a8cdSBarry Smith Input : 812*7758a8cdSBarry Smith Output: 813*7758a8cdSBarry Smith Return: 814*7758a8cdSBarry Smith Description: 815*7758a8cdSBarry Smith Usage: 816*7758a8cdSBarry Smith *********************************bit_mask.h***********************************/ 817*7758a8cdSBarry Smith extern int div_ceil(int numin, int denom); 818*7758a8cdSBarry Smith extern void set_bit_mask(int *bm, int len, int val); 819*7758a8cdSBarry Smith extern int len_bit_mask(int num_items); 820*7758a8cdSBarry Smith extern int ct_bits(char *ptr, int n); 821*7758a8cdSBarry Smith extern void bm_to_proc(char *ptr, int p_mask, int *msg_list); 822*7758a8cdSBarry Smith extern int len_buf(int item_size, int num_items); 823*7758a8cdSBarry Smith 824*7758a8cdSBarry Smith #endif 825*7758a8cdSBarry Smith 826