17758a8cdSBarry Smith 27758a8cdSBarry Smith #if !defined(__TFS_H) 37758a8cdSBarry Smith #define __TFS_H 47758a8cdSBarry Smith 57758a8cdSBarry Smith /**********************************const.h************************************* 67758a8cdSBarry Smith 77758a8cdSBarry Smith Author: Henry M. Tufo III 87758a8cdSBarry Smith 97758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 107758a8cdSBarry Smith 117758a8cdSBarry Smith snail-mail: 127758a8cdSBarry Smith Division of Applied Mathematics 137758a8cdSBarry Smith Brown University 147758a8cdSBarry Smith Providence, RI 02912 157758a8cdSBarry Smith 167758a8cdSBarry Smith Last Modification: 177758a8cdSBarry Smith 6.21.97 187758a8cdSBarry Smith ***********************************const.h************************************/ 197758a8cdSBarry Smith 207758a8cdSBarry Smith /**********************************const.h************************************* 217758a8cdSBarry Smith File Description: 227758a8cdSBarry Smith ----------------- 237758a8cdSBarry Smith 247758a8cdSBarry Smith ***********************************const.h************************************/ 257758a8cdSBarry Smith #include "petsc.h" 26330ea6edSBarry Smith #include "petscsys.h" 27330ea6edSBarry Smith #if defined(PETSC_HAVE_STDLIB_H) 28330ea6edSBarry Smith #include <stdlib.h> 29330ea6edSBarry Smith #endif 309e8a9152SBarry Smith #if defined(PETSC_HAVE_MALLOC_H) 319e8a9152SBarry Smith #include <malloc.h> 329e8a9152SBarry Smith #endif 33330ea6edSBarry Smith #include "petscblaslapack.h" 34330ea6edSBarry Smith #include <limits.h> 35330ea6edSBarry Smith #include <float.h> 367758a8cdSBarry Smith 377758a8cdSBarry Smith #define X 0 387758a8cdSBarry Smith #define Y 1 397758a8cdSBarry Smith #define Z 2 407758a8cdSBarry Smith #define XY 3 417758a8cdSBarry Smith #define XZ 4 427758a8cdSBarry Smith #define YZ 5 437758a8cdSBarry Smith 447758a8cdSBarry Smith 457758a8cdSBarry Smith #define THRESH 0.2 467758a8cdSBarry Smith #define N_HALF 4096 477758a8cdSBarry Smith #define PRIV_BUF_SZ 45 487758a8cdSBarry Smith 497758a8cdSBarry Smith /*4096 8192 32768 65536 1048576 */ 507758a8cdSBarry Smith #define MAX_MSG_BUF 32768 517758a8cdSBarry Smith 527758a8cdSBarry Smith #define FULL 2 537758a8cdSBarry Smith #define PARTIAL 1 547758a8cdSBarry Smith #define NONE 0 557758a8cdSBarry Smith 567758a8cdSBarry Smith #define BYTE 8 577758a8cdSBarry Smith #define BIT_0 0x1 587758a8cdSBarry Smith #define BIT_1 0x2 597758a8cdSBarry Smith #define BIT_2 0x4 607758a8cdSBarry Smith #define BIT_3 0x8 617758a8cdSBarry Smith #define BIT_4 0x10 627758a8cdSBarry Smith #define BIT_5 0x20 637758a8cdSBarry Smith #define BIT_6 0x40 647758a8cdSBarry Smith #define BIT_7 0x80 657758a8cdSBarry Smith #define TOP_BIT INT_MIN 667758a8cdSBarry Smith #define ALL_ONES -1 677758a8cdSBarry Smith 687758a8cdSBarry Smith #define FALSE 0 697758a8cdSBarry Smith #define TRUE 1 707758a8cdSBarry Smith 717758a8cdSBarry Smith #define C 0 727758a8cdSBarry Smith 737758a8cdSBarry Smith 747758a8cdSBarry Smith #define MAX_VEC 1674 757758a8cdSBarry Smith #define FORMAT 30 767758a8cdSBarry Smith #define MAX_COL_LEN 100 777758a8cdSBarry Smith #define MAX_LINE FORMAT*MAX_COL_LEN 787758a8cdSBarry Smith #define DELIM " \n \t" 797758a8cdSBarry Smith #define LINE 12 807758a8cdSBarry Smith #define C_LINE 80 817758a8cdSBarry Smith 827758a8cdSBarry Smith #define REAL_MAX DBL_MAX 837758a8cdSBarry Smith #define REAL_MIN DBL_MIN 847758a8cdSBarry Smith 857758a8cdSBarry Smith #define UT 5 /* dump upper 1/2 */ 867758a8cdSBarry Smith #define LT 6 /* dump lower 1/2 */ 877758a8cdSBarry Smith #define SYMM 8 /* we assume symm and dump upper 1/2 */ 887758a8cdSBarry Smith #define NON_SYMM 9 897758a8cdSBarry Smith 907758a8cdSBarry Smith #define ROW 10 917758a8cdSBarry Smith #define COL 11 927758a8cdSBarry Smith 937758a8cdSBarry Smith #define EPS 1.0e-14 947758a8cdSBarry Smith #define EPS2 1.0e-07 957758a8cdSBarry Smith 967758a8cdSBarry Smith 977758a8cdSBarry Smith #define MPI 1 987758a8cdSBarry Smith #define NX 2 997758a8cdSBarry Smith 1007758a8cdSBarry Smith #define LOG2(x) (PetscScalar)log((double)x)/log(2) 1017758a8cdSBarry Smith #define SWAP(a,b) temp=(a); (a)=(b); (b)=temp; 1027758a8cdSBarry Smith #define P_SWAP(a,b) ptr=(a); (a)=(b); (b)=ptr; 1037758a8cdSBarry Smith 1047758a8cdSBarry Smith #define MAX_FABS(x,y) ((double)fabs(x)>(double)fabs(y)) ? ((PetscScalar)x) : ((PetscScalar)y) 1057758a8cdSBarry Smith #define MIN_FABS(x,y) ((double)fabs(x)<(double)fabs(y)) ? ((PetscScalar)x) : ((PetscScalar)y) 1067758a8cdSBarry Smith 1077758a8cdSBarry Smith /* specer's existence ... can be done w/MAX_ABS */ 1087758a8cdSBarry Smith #define EXISTS(x,y) ((x)==0.0) ? (y) : (x) 1097758a8cdSBarry Smith 1107758a8cdSBarry Smith #define MULT_NEG_ONE(a) (a) *= -1; 1117758a8cdSBarry Smith #define NEG(a) (a) |= BIT_31; 1127758a8cdSBarry Smith #define POS(a) (a) &= INT_MAX; 1137758a8cdSBarry Smith 1147758a8cdSBarry Smith 1157758a8cdSBarry Smith 1167758a8cdSBarry Smith 1177758a8cdSBarry Smith /**********************************types.h************************************* 1187758a8cdSBarry Smith 1197758a8cdSBarry Smith Author: Henry M. Tufo III 1207758a8cdSBarry Smith 1217758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 1227758a8cdSBarry Smith 1237758a8cdSBarry Smith snail-mail: 1247758a8cdSBarry Smith Division of Applied Mathematics 1257758a8cdSBarry Smith Brown University 1267758a8cdSBarry Smith Providence, RI 02912 1277758a8cdSBarry Smith 1287758a8cdSBarry Smith Last Modification: 1297758a8cdSBarry Smith 6.21.97 1307758a8cdSBarry Smith ***********************************types.h************************************/ 1317758a8cdSBarry Smith 132*6e4f4d19SBarry Smith typedef PetscErrorCode (*vfp)(void*,void*,PetscInt,...); 13352f87cdaSBarry Smith typedef PetscErrorCode (*rbfp)(PetscScalar *, PetscScalar *, PetscInt len); 1347758a8cdSBarry Smith #define vbfp MPI_User_function * 13552f87cdaSBarry Smith typedef PetscInt (*bfp)(void*, void *, PetscInt *len, MPI_Datatype *dt); 1367758a8cdSBarry Smith 1377758a8cdSBarry Smith /***********************************comm.h************************************* 1387758a8cdSBarry Smith 1397758a8cdSBarry Smith Author: Henry M. Tufo III 1407758a8cdSBarry Smith 1417758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 1427758a8cdSBarry Smith 1437758a8cdSBarry Smith snail-mail: 1447758a8cdSBarry Smith Division of Applied Mathematics 1457758a8cdSBarry Smith Brown University 1467758a8cdSBarry Smith Providence, RI 02912 1477758a8cdSBarry Smith 1487758a8cdSBarry Smith Last Modification: 1497758a8cdSBarry Smith 6.21.97 1507758a8cdSBarry Smith ***********************************comm.h*************************************/ 1513fdc5746SBarry Smith extern PetscMPIInt my_id; 1523fdc5746SBarry Smith extern PetscMPIInt num_nodes; 1533fdc5746SBarry Smith extern PetscMPIInt floor_num_nodes; 1543fdc5746SBarry Smith extern PetscMPIInt i_log2_num_nodes; 1557758a8cdSBarry Smith 15652f87cdaSBarry Smith extern PetscErrorCode giop(PetscInt *vals, PetscInt *work, PetscInt n, PetscInt *oprs); 15752f87cdaSBarry Smith extern PetscErrorCode grop(PetscScalar *vals, PetscScalar *work, PetscInt n, PetscInt *oprs); 158*6e4f4d19SBarry Smith extern PetscErrorCode gfop(void *vals, void *wk, PetscInt n, vbfp fp, MPI_Datatype dt); 1593fdc5746SBarry Smith extern PetscErrorCode comm_init(void); 16052f87cdaSBarry Smith extern PetscErrorCode giop_hc(PetscInt *vals, PetscInt *work, PetscInt n, PetscInt *oprs, PetscInt dim); 16152f87cdaSBarry Smith extern PetscErrorCode grop_hc(PetscScalar *vals, PetscScalar *work, PetscInt n, PetscInt *oprs, PetscInt dim); 16252f87cdaSBarry Smith extern PetscErrorCode ssgl_radd(PetscScalar *vals, PetscScalar *work, PetscInt level, PetscInt *segs); 1637758a8cdSBarry Smith 1647758a8cdSBarry Smith #define MSGTAG0 101 1657758a8cdSBarry Smith #define MSGTAG1 1001 1667758a8cdSBarry Smith #define MSGTAG2 76207 1677758a8cdSBarry Smith #define MSGTAG3 100001 1687758a8cdSBarry Smith #define MSGTAG4 163841 1697758a8cdSBarry Smith #define MSGTAG5 249439 1707758a8cdSBarry Smith #define MSGTAG6 10000001 1717758a8cdSBarry Smith 1727758a8cdSBarry Smith #define NON_UNIFORM 0 1737758a8cdSBarry Smith #define GL_MAX 1 1747758a8cdSBarry Smith #define GL_MIN 2 1757758a8cdSBarry Smith #define GL_MULT 3 1767758a8cdSBarry Smith #define GL_ADD 4 1777758a8cdSBarry Smith #define GL_B_XOR 5 1787758a8cdSBarry Smith #define GL_B_OR 6 1797758a8cdSBarry Smith #define GL_B_AND 7 1807758a8cdSBarry Smith #define GL_L_XOR 8 1817758a8cdSBarry Smith #define GL_L_OR 9 1827758a8cdSBarry Smith #define GL_L_AND 10 1837758a8cdSBarry Smith #define GL_MAX_ABS 11 1847758a8cdSBarry Smith #define GL_MIN_ABS 12 1857758a8cdSBarry Smith #define GL_EXISTS 13 1867758a8cdSBarry Smith 18752f87cdaSBarry Smith extern PetscInt *ivec_copy(PetscInt *arg1, PetscInt *arg2, PetscInt n); 1887758a8cdSBarry Smith 18952f87cdaSBarry Smith extern PetscErrorCode ivec_zero(PetscInt *arg1, PetscInt n); 19052f87cdaSBarry Smith extern PetscErrorCode ivec_set(PetscInt *arg1, PetscInt arg2, PetscInt n); 1917758a8cdSBarry Smith 19252f87cdaSBarry Smith extern PetscInt ivec_lb(PetscInt *work, PetscInt n); 19352f87cdaSBarry Smith extern PetscInt ivec_ub(PetscInt *work, PetscInt n); 19452f87cdaSBarry Smith extern PetscInt ivec_sum(PetscInt *arg1, PetscInt n); 1957758a8cdSBarry Smith 19652f87cdaSBarry Smith extern vfp ivec_fct_addr(PetscInt type); 1977758a8cdSBarry Smith 19852f87cdaSBarry Smith extern PetscErrorCode ivec_non_uniform(PetscInt *arg1, PetscInt *arg2, PetscInt n, PetscInt *arg3); 19952f87cdaSBarry Smith extern PetscErrorCode ivec_max(PetscInt *arg1, PetscInt *arg2, PetscInt n); 20052f87cdaSBarry Smith extern PetscErrorCode ivec_min(PetscInt *arg1, PetscInt *arg2, PetscInt n); 20152f87cdaSBarry Smith extern PetscErrorCode ivec_mult(PetscInt *arg1, PetscInt *arg2, PetscInt n); 20252f87cdaSBarry Smith extern PetscErrorCode ivec_add(PetscInt *arg1, PetscInt *arg2, PetscInt n); 20352f87cdaSBarry Smith extern PetscErrorCode ivec_xor(PetscInt *arg1, PetscInt *arg2, PetscInt n); 20452f87cdaSBarry Smith extern PetscErrorCode ivec_or(PetscInt *arg1, PetscInt *arg2, PetscInt len); 20552f87cdaSBarry Smith extern PetscErrorCode ivec_and(PetscInt *arg1, PetscInt *arg2, PetscInt len); 20652f87cdaSBarry Smith extern PetscErrorCode ivec_lxor(PetscInt *arg1, PetscInt *arg2, PetscInt n); 20752f87cdaSBarry Smith extern PetscErrorCode ivec_lor(PetscInt *arg1, PetscInt *arg2, PetscInt len); 20852f87cdaSBarry Smith extern PetscErrorCode ivec_land(PetscInt *arg1, PetscInt *arg2, PetscInt len); 20952f87cdaSBarry Smith extern PetscErrorCode ivec_and3( PetscInt *arg1, PetscInt *arg2, PetscInt *arg3, PetscInt n); 2107758a8cdSBarry Smith 21152f87cdaSBarry Smith extern PetscErrorCode ivec_sort_companion(PetscInt *ar, PetscInt *ar2, PetscInt size); 21252f87cdaSBarry Smith extern PetscErrorCode ivec_sort(PetscInt *ar, PetscInt size); 21352f87cdaSBarry Smith extern PetscErrorCode SMI_sort(void *ar1, void *ar2, PetscInt size, PetscInt type); 21452f87cdaSBarry Smith extern PetscInt ivec_binary_search(PetscInt item, PetscInt *list, PetscInt n); 21552f87cdaSBarry Smith extern PetscInt ivec_linear_search(PetscInt item, PetscInt *list, PetscInt n); 2167758a8cdSBarry Smith 21752f87cdaSBarry Smith extern PetscErrorCode ivec_sort_companion_hack(PetscInt *ar, PetscInt **ar2, PetscInt size); 2187758a8cdSBarry Smith 219*6e4f4d19SBarry Smith #define SORT_INTEGER 1 220*6e4f4d19SBarry Smith #define SORT_INT_PTR 2 2217758a8cdSBarry Smith 22252f87cdaSBarry Smith extern PetscErrorCode rvec_zero(PetscScalar *arg1, PetscInt n); 22352f87cdaSBarry Smith extern PetscErrorCode rvec_one(PetscScalar *arg1, PetscInt n); 22452f87cdaSBarry Smith extern PetscErrorCode rvec_set(PetscScalar *arg1, PetscScalar arg2, PetscInt n); 22552f87cdaSBarry Smith extern PetscErrorCode rvec_copy(PetscScalar *arg1, PetscScalar *arg2, PetscInt n); 22652f87cdaSBarry Smith extern PetscErrorCode rvec_scale(PetscScalar *arg1, PetscScalar arg2, PetscInt n); 2277758a8cdSBarry Smith 22852f87cdaSBarry Smith extern vfp rvec_fct_addr(PetscInt type); 22952f87cdaSBarry Smith extern PetscErrorCode rvec_add(PetscScalar *arg1, PetscScalar *arg2, PetscInt n); 23052f87cdaSBarry Smith extern PetscErrorCode rvec_mult(PetscScalar *arg1, PetscScalar *arg2, PetscInt n); 23152f87cdaSBarry Smith extern PetscErrorCode rvec_max(PetscScalar *arg1, PetscScalar *arg2, PetscInt n); 23252f87cdaSBarry Smith extern PetscErrorCode rvec_max_abs(PetscScalar *arg1, PetscScalar *arg2, PetscInt n); 23352f87cdaSBarry Smith extern PetscErrorCode rvec_min(PetscScalar *arg1, PetscScalar *arg2, PetscInt n); 23452f87cdaSBarry Smith extern PetscErrorCode rvec_min_abs(PetscScalar *arg1, PetscScalar *arg2, PetscInt n); 23552f87cdaSBarry Smith extern PetscErrorCode vec_exists(PetscScalar *arg1, PetscScalar *arg2, PetscInt n); 2367758a8cdSBarry Smith 2377758a8cdSBarry Smith /***********************************gs.h*************************************** 2387758a8cdSBarry Smith 2397758a8cdSBarry Smith Author: Henry M. Tufo III 2407758a8cdSBarry Smith 2417758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 2427758a8cdSBarry Smith 2437758a8cdSBarry Smith snail-mail: 2447758a8cdSBarry Smith Division of Applied Mathematics 2457758a8cdSBarry Smith Brown University 2467758a8cdSBarry Smith Providence, RI 02912 2477758a8cdSBarry Smith 2487758a8cdSBarry Smith Last Modification: 2497758a8cdSBarry Smith 6.21.97 2507758a8cdSBarry Smith ************************************gs.h**************************************/ 2517758a8cdSBarry Smith 2527758a8cdSBarry Smith typedef struct gather_scatter_id *gs_ADT; 25352f87cdaSBarry Smith typedef PetscErrorCode (*Rbfp)(PetscScalar *, PetscScalar *, PetscInt len); 2547758a8cdSBarry Smith 25552f87cdaSBarry Smith extern gs_ADT gs_init(PetscInt *elms, PetscInt nel, PetscInt level); 2563fdc5746SBarry Smith extern PetscErrorCode gs_gop(gs_ADT gs_handle, PetscScalar *vals, const char *op); 25752f87cdaSBarry Smith extern PetscErrorCode gs_gop_vec(gs_ADT gs_handle, PetscScalar *vals, const char *op, PetscInt step); 2583fdc5746SBarry Smith extern PetscErrorCode gs_gop_binary(gs_ADT gs, PetscScalar *vals, Rbfp fct); 25952f87cdaSBarry Smith extern PetscErrorCode gs_gop_hc(gs_ADT gs_handle, PetscScalar *vals, const char *op, PetscInt dim); 2603fdc5746SBarry Smith extern PetscErrorCode gs_free(gs_ADT gs_handle); 26152f87cdaSBarry Smith extern PetscErrorCode gs_init_msg_buf_sz(PetscInt buf_size); 26252f87cdaSBarry Smith extern PetscErrorCode gs_init_vec_sz(PetscInt size); 2637758a8cdSBarry Smith 2647758a8cdSBarry Smith /*************************************xxt.h************************************ 2657758a8cdSBarry Smith Module Name: xxt 2667758a8cdSBarry Smith Module Info: need xxt.{c,h} gs.{c,h} comm.{c,h} ivec.{c,h} error.{c,h} 2677758a8cdSBarry Smith 2687758a8cdSBarry Smith author: Henry M. Tufo III 2697758a8cdSBarry Smith e-mail: hmt@asci.uchicago.edu 2707758a8cdSBarry Smith contact: 2717758a8cdSBarry Smith +--------------------------------+--------------------------------+ 2727758a8cdSBarry Smith |MCS Division - Building 221 |Department of Computer Science | 2737758a8cdSBarry Smith |Argonne National Laboratory |Ryerson 152 | 2747758a8cdSBarry Smith |9700 S. Cass Avenue |The University of Chicago | 2757758a8cdSBarry Smith |Argonne, IL 60439 |Chicago, IL 60637 | 2767758a8cdSBarry Smith |(630) 252-5354/5986 ph/fx |(773) 702-6019/8487 ph/fx | 2777758a8cdSBarry Smith +--------------------------------+--------------------------------+ 2787758a8cdSBarry Smith 2797758a8cdSBarry Smith Last Modification: 3.20.01 2807758a8cdSBarry Smith **************************************xxt.h***********************************/ 2817758a8cdSBarry Smith 2827758a8cdSBarry Smith typedef struct xxt_CDT *xxt_ADT; 2837758a8cdSBarry Smith 2847758a8cdSBarry Smith 2857758a8cdSBarry Smith /*************************************xxt.h************************************ 2867758a8cdSBarry Smith Function: XXT_new() 2877758a8cdSBarry Smith 2887758a8cdSBarry Smith Return: ADT ptr or NULL upon failure. 2897758a8cdSBarry Smith Description: This function allocates and returns an xxt handle 2907758a8cdSBarry Smith Usage: xxt_handle = xxt_new(); 2917758a8cdSBarry Smith **************************************xxt.h***********************************/ 2927758a8cdSBarry Smith extern xxt_ADT XXT_new(void); 2937758a8cdSBarry Smith 2947758a8cdSBarry Smith 2957758a8cdSBarry Smith /*************************************xxt.h************************************ 2967758a8cdSBarry Smith Function: XXT_free() 2977758a8cdSBarry Smith 2987758a8cdSBarry Smith Input : pointer to ADT. 299*6e4f4d19SBarry Smith 3007758a8cdSBarry Smith Description: This function frees the storage associated with an xxt handle 3017758a8cdSBarry Smith Usage: XXT_free(xxt_handle); 3027758a8cdSBarry Smith **************************************xxt.h***********************************/ 30352f87cdaSBarry Smith EXTERN PetscInt XXT_free(xxt_ADT xxt_handle); 3047758a8cdSBarry Smith 3057758a8cdSBarry Smith 3067758a8cdSBarry Smith /*************************************xxt.h************************************ 3077758a8cdSBarry Smith Function: XXT_factor 3087758a8cdSBarry Smith 3097758a8cdSBarry Smith Input : ADT ptr, and pointer to object 3107758a8cdSBarry Smith Return: 0 on failure, 1 on success 3117758a8cdSBarry Smith Description: This function sets the xxt solver 3127758a8cdSBarry Smith 3137758a8cdSBarry Smith xxt assumptions: given n rows of global coarse matrix (E_loc) where 3147758a8cdSBarry Smith o global dofs N = sum_p(n), p=0,P-1 3157758a8cdSBarry Smith (i.e. row dist. with no dof replication) 3167758a8cdSBarry Smith (5.21.00 will handle dif replication case) 3177758a8cdSBarry Smith o m is the number of columns in E_loc (m>=n) 3187758a8cdSBarry Smith o local2global holds global number of column i (i=0,...,m-1) 3197758a8cdSBarry Smith o local2global holds global number of row i (i=0,...,n-1) 3207758a8cdSBarry Smith o mylocmatvec performs E_loc . x_loc where x_loc is an vector of 3217758a8cdSBarry Smith length m in 1-1 correspondence with local2global 3227758a8cdSBarry Smith (note that gs package takes care of communication). 3237758a8cdSBarry Smith (note do not zero out upper m-n entries!) 3247758a8cdSBarry Smith o mylocmatvec(void *grid_data, double *in, double *out) 3257758a8cdSBarry Smith 3267758a8cdSBarry Smith ML beliefs/usage: move this to to ML_XXT_factor routine 3277758a8cdSBarry Smith o my_ml holds address of ML struct associated w/E_loc, grid_data, grid_tag 3287758a8cdSBarry Smith o grid_tag, grid_data, my_ml used in 3297758a8cdSBarry Smith ML_Set_CSolve(my_ml, grid_tag, grid_data, ML_Do_CoarseDirect); 3307758a8cdSBarry Smith o grid_data used in 3317758a8cdSBarry Smith A_matvec(grid_data,v,u); 3327758a8cdSBarry Smith 3337758a8cdSBarry Smith Usage: 3347758a8cdSBarry Smith **************************************xxt.h***********************************/ 33552f87cdaSBarry Smith extern PetscInt XXT_factor(xxt_ADT xxt_handle, /* prev. allocated xxt handle */ 33652f87cdaSBarry Smith PetscInt *local2global, /* global column mapping */ 33752f87cdaSBarry Smith PetscInt n, /* local num rows */ 33852f87cdaSBarry Smith PetscInt m, /* local num cols */ 3397758a8cdSBarry Smith void *mylocmatvec, /* b_loc=A_local.x_loc */ 3407758a8cdSBarry Smith void *grid_data /* grid data for matvec */ 3417758a8cdSBarry Smith ); 3427758a8cdSBarry Smith 3437758a8cdSBarry Smith 3447758a8cdSBarry Smith /*************************************xxt.h************************************ 3457758a8cdSBarry Smith Function: XXT_solve 3467758a8cdSBarry Smith 3477758a8cdSBarry Smith Input : ADT ptr, b (rhs) 3487758a8cdSBarry Smith Output: x (soln) 3497758a8cdSBarry Smith Return: 3507758a8cdSBarry Smith Description: This function performs x = E^-1.b 3517758a8cdSBarry Smith Usage: 3527758a8cdSBarry Smith XXT_solve(xxt_handle, double *x, double *b) 3537758a8cdSBarry Smith XXT_solve(xxt_handle, double *x, NULL) 3547758a8cdSBarry Smith assumes x has been initialized to be b 3557758a8cdSBarry Smith **************************************xxt.h***********************************/ 35652f87cdaSBarry Smith extern PetscInt XXT_solve(xxt_ADT xxt_handle, double *x, double *b); 3577758a8cdSBarry Smith 3587758a8cdSBarry Smith /*************************************xxt.h************************************ 3597758a8cdSBarry Smith Function: XXT_stats 3607758a8cdSBarry Smith 3617758a8cdSBarry Smith Input : handle 3627758a8cdSBarry Smith **************************************xxt.h***********************************/ 36352f87cdaSBarry Smith extern PetscInt XXT_stats(xxt_ADT xxt_handle); 3647758a8cdSBarry Smith 3657758a8cdSBarry Smith 3667758a8cdSBarry Smith /*************************************xxt.h************************************ 3677758a8cdSBarry Smith Function: XXT_sp_1() 3687758a8cdSBarry Smith 3697758a8cdSBarry Smith Input : pointer to ADT 3707758a8cdSBarry Smith Output: 3717758a8cdSBarry Smith Return: 3727758a8cdSBarry Smith Description: sets xxt parameter 1 in xxt_handle 3737758a8cdSBarry Smith Usage: implement later 3747758a8cdSBarry Smith 3757758a8cdSBarry Smith void XXT_sp_1(xxt_handle,parameter 1 value) 3767758a8cdSBarry Smith **************************************xxt.h***********************************/ 3777758a8cdSBarry Smith 3787758a8cdSBarry Smith 3797758a8cdSBarry Smith /*************************************xyt.h************************************ 3807758a8cdSBarry Smith Module Name: xyt 3817758a8cdSBarry Smith Module Info: need xyt.{c,h} gs.{c,h} comm.{c,h} ivec.{c,h} error.{c,h} 3827758a8cdSBarry Smith 3837758a8cdSBarry Smith author: Henry M. Tufo III 3847758a8cdSBarry Smith e-mail: hmt@asci.uchicago.edu 3857758a8cdSBarry Smith contact: 3867758a8cdSBarry Smith +--------------------------------+--------------------------------+ 3877758a8cdSBarry Smith |MCS Division - Building 221 |Department of Computer Science | 3887758a8cdSBarry Smith |Argonne National Laboratory |Ryerson 152 | 3897758a8cdSBarry Smith |9700 S. Cass Avenue |The University of Chicago | 3907758a8cdSBarry Smith |Argonne, IL 60439 |Chicago, IL 60637 | 3917758a8cdSBarry Smith |(630) 252-5354/5986 ph/fx |(773) 702-6019/8487 ph/fx | 3927758a8cdSBarry Smith +--------------------------------+--------------------------------+ 3937758a8cdSBarry Smith 3947758a8cdSBarry Smith Last Modification: 3.20.01 3957758a8cdSBarry Smith **************************************xyt.h***********************************/ 3967758a8cdSBarry Smith 3977758a8cdSBarry Smith typedef struct xyt_CDT *xyt_ADT; 3987758a8cdSBarry Smith 3997758a8cdSBarry Smith 4007758a8cdSBarry Smith /*************************************xyt.h************************************ 4017758a8cdSBarry Smith Function: XYT_new() 4027758a8cdSBarry Smith 4037758a8cdSBarry Smith Return: ADT ptr or NULL upon failure. 4047758a8cdSBarry Smith Description: This function allocates and returns an xyt handle 4057758a8cdSBarry Smith Usage: xyt_handle = xyt_new(); 4067758a8cdSBarry Smith **************************************xyt.h***********************************/ 4077758a8cdSBarry Smith extern xyt_ADT XYT_new(void); 4087758a8cdSBarry Smith 4097758a8cdSBarry Smith 4107758a8cdSBarry Smith /*************************************xyt.h************************************ 4117758a8cdSBarry Smith Function: XYT_free() 4127758a8cdSBarry Smith 4137758a8cdSBarry Smith Input : pointer to ADT. 4147758a8cdSBarry Smith Description: This function frees the storage associated with an xyt handle 4157758a8cdSBarry Smith Usage: XYT_free(xyt_handle); 4167758a8cdSBarry Smith **************************************xyt.h***********************************/ 41752f87cdaSBarry Smith EXTERN PetscInt XYT_free(xyt_ADT xyt_handle); 4187758a8cdSBarry Smith 4197758a8cdSBarry Smith 4207758a8cdSBarry Smith /*************************************xyt.h************************************ 4217758a8cdSBarry Smith Function: XYT_factor 4227758a8cdSBarry Smith 4237758a8cdSBarry Smith Input : ADT ptr, and pointer to object 4247758a8cdSBarry Smith Output: 4257758a8cdSBarry Smith Return: 0 on failure, 1 on success 4267758a8cdSBarry Smith Description: This function sets the xyt solver 4277758a8cdSBarry Smith 4287758a8cdSBarry Smith xyt assumptions: given n rows of global coarse matrix (E_loc) where 4297758a8cdSBarry Smith o global dofs N = sum_p(n), p=0,P-1 4307758a8cdSBarry Smith (i.e. row dist. with no dof replication) 4317758a8cdSBarry Smith (5.21.00 will handle dif replication case) 4327758a8cdSBarry Smith o m is the number of columns in E_loc (m>=n) 4337758a8cdSBarry Smith o local2global holds global number of column i (i=0,...,m-1) 4347758a8cdSBarry Smith o local2global holds global number of row i (i=0,...,n-1) 4357758a8cdSBarry Smith o mylocmatvec performs E_loc . x_loc where x_loc is an vector of 4367758a8cdSBarry Smith length m in 1-1 correspondence with local2global 4377758a8cdSBarry Smith (note that gs package takes care of communication). 4387758a8cdSBarry Smith (note do not zero out upper m-n entries!) 4397758a8cdSBarry Smith o mylocmatvec(void *grid_data, double *in, double *out) 4407758a8cdSBarry Smith 4417758a8cdSBarry Smith ML beliefs/usage: move this to to ML_XYT_factor routine 4427758a8cdSBarry Smith o my_ml holds address of ML struct associated w/E_loc, grid_data, grid_tag 4437758a8cdSBarry Smith o grid_tag, grid_data, my_ml used in 4447758a8cdSBarry Smith ML_Set_CSolve(my_ml, grid_tag, grid_data, ML_Do_CoarseDirect); 4457758a8cdSBarry Smith o grid_data used in 4467758a8cdSBarry Smith A_matvec(grid_data,v,u); 4477758a8cdSBarry Smith 4487758a8cdSBarry Smith Usage: 4497758a8cdSBarry Smith **************************************xyt.h***********************************/ 45052f87cdaSBarry Smith extern PetscInt XYT_factor(xyt_ADT xyt_handle, /* prev. allocated xyt handle */ 45152f87cdaSBarry Smith PetscInt *local2global, /* global column mapping */ 45252f87cdaSBarry Smith PetscInt n, /* local num rows */ 45352f87cdaSBarry Smith PetscInt m, /* local num cols */ 4547758a8cdSBarry Smith void *mylocmatvec, /* b_loc=A_local.x_loc */ 4557758a8cdSBarry Smith void *grid_data /* grid data for matvec */ 4567758a8cdSBarry Smith ); 4577758a8cdSBarry Smith 4587758a8cdSBarry Smith 4597758a8cdSBarry Smith /*************************************xyt.h************************************ 4607758a8cdSBarry Smith Function: XYT_solve 4617758a8cdSBarry Smith 4627758a8cdSBarry Smith Input : ADT ptr, b (rhs) 4637758a8cdSBarry Smith Output: x (soln) 4647758a8cdSBarry Smith Return: 4657758a8cdSBarry Smith Description: This function performs x = E^-1.b 4667758a8cdSBarry Smith Usage: XYT_solve(xyt_handle, double *x, double *b) 4677758a8cdSBarry Smith **************************************xyt.h***********************************/ 46852f87cdaSBarry Smith extern PetscInt XYT_solve(xyt_ADT xyt_handle, double *x, double *b); 4697758a8cdSBarry Smith 4707758a8cdSBarry Smith 4717758a8cdSBarry Smith /*************************************xyt.h************************************ 4727758a8cdSBarry Smith Function: XYT_stats 4737758a8cdSBarry Smith 4747758a8cdSBarry Smith Input : handle 4757758a8cdSBarry Smith **************************************xyt.h***********************************/ 47652f87cdaSBarry Smith extern PetscInt XYT_stats(xyt_ADT xyt_handle); 4777758a8cdSBarry Smith 4787758a8cdSBarry Smith 4797758a8cdSBarry Smith /********************************bit_mask.h************************************ 4807758a8cdSBarry Smith 4817758a8cdSBarry Smith Author: Henry M. Tufo III 4827758a8cdSBarry Smith 4837758a8cdSBarry Smith e-mail: hmt@cs.brown.edu 4847758a8cdSBarry Smith 4857758a8cdSBarry Smith snail-mail: 4867758a8cdSBarry Smith Division of Applied Mathematics 4877758a8cdSBarry Smith Brown University 4887758a8cdSBarry Smith Providence, RI 02912 4897758a8cdSBarry Smith 4907758a8cdSBarry Smith Last Modification: 4917758a8cdSBarry Smith 11.21.97 4927758a8cdSBarry Smith *********************************bit_mask.h***********************************/ 49352f87cdaSBarry Smith extern PetscInt div_ceil(PetscInt numin, PetscInt denom); 49452f87cdaSBarry Smith extern PetscErrorCode set_bit_mask(PetscInt *bm, PetscInt len, PetscInt val); 49552f87cdaSBarry Smith extern PetscInt len_bit_mask(PetscInt num_items); 49652f87cdaSBarry Smith extern PetscInt ct_bits(char *ptr, PetscInt n); 49752f87cdaSBarry Smith extern PetscErrorCode bm_to_proc(char *ptr, PetscInt p_mask, PetscInt *msg_list); 49852f87cdaSBarry Smith extern PetscInt len_buf(PetscInt item_size, PetscInt num_items); 4997758a8cdSBarry Smith 5007758a8cdSBarry Smith #endif 5017758a8cdSBarry Smith 502