6 #include "_hypre_utilities.h"
7 #include "HYPRE_parcsr_ls.h"
8 #include "_hypre_parcsr_ls.h"
11 struct hypre_crs_data {
25 struct hypre_crs_data;
29 struct rid { uint
p,
i; };
30 #define rid_equal(a,b) ((a).p==(b).p && (a).i==(b).i)
31 #define nz_pos_equal(a,b) \
32 (rid_equal((a).i,(b).i) && rid_equal((a).j,(b).j))
43 struct gnz { ulong
i,
j;
double a; };
49 const ulong *
id, uint nz_unassembled,
const uint *Ai,
const uint *Aj,
const double *Av);
52 uint nz,
const uint *Ai,
const uint *Aj,
const double *Av,
53 const uint null_space,
const struct comm *comm,
60 static uint *assign_dofs_hypre(
struct array *
const uid,
61 struct rid *
const rid_map,
62 const ulong *
const id,
const uint n,
64 struct gs_data *gs_top, buffer *
const buf,
67 static void mat_distribute(
68 struct array *
const mat,
const enum distr d,
const enum mat_order o,
69 struct crystal *
const cr);
71 static void mat_list_nonlocal_sorted(
72 struct array *
const nonlocal_id,
73 const struct array *
const mat,
const enum distr d,
74 const ulong *uid,
struct crystal *
const cr);
void ccrs_hypre_free(struct hypre_crs_data *data)
struct hypre_crs_data * ccrs_hypre_setup(uint n, const ulong *id, uint nz, const uint *Ai, const uint *Aj, const double *Av, const uint null_space, const struct comm *comm, const double *param)
void ccrs_hypre_solve(double *x, struct hypre_crs_data *data, double *b)
void build_hypre_matrix(struct hypre_crs_data *hypre_data, uint n, const ulong *id, uint nz_unassembled, const uint *Ai, const uint *Aj, const double *Av)