23 #include "_hypre_utilities.h"
24 #include "HYPRE_sstruct_ls.h"
25 #include "HYPRE_parcsr_ls.h"
26 #include "HYPRE_krylov.h"
39 HYPRE_SStructMatrix
A;
40 HYPRE_SStructVector
b;
41 HYPRE_SStructVector
x;
66 HYPRE_SStructVariable
tempVartypes[1] = { HYPRE_SSTRUCT_VARIABLE_NODE };
73 if (coord == 0 && boundary == -1) {
81 if (coord == 0 && boundary == 1) {
89 if (coord == 1 && boundary == -1) {
97 if (coord == 1 && boundary == 1) {
105 if (coord == 2 && boundary == -1) {
113 if (coord == 2 && boundary == 1) {
131 long long offsets[7][3] =
132 { {0, 0, 0}, {-1, 0, 0}, {1, 0, 0}, {0, -1, 0}, {0, 1, 0}, {0, 0,
165 HYPRE_SStructGridAssemble(
tempGrid);
169 for (entry = 0; entry < 7; entry++)
170 HYPRE_SStructStencilSetEntry(
tempStencil, entry, offsets[entry], 0);
180 long long nentries = 7;
183 long long stencil_indices[7];
190 HYPRE_SStructMatrixInitialize(
A);
192 values = calloc(nvalues,
sizeof(
double));
194 for (j = 0; j < nentries; j++)
195 stencil_indices[j] = j;
201 for (i = 0; i < nvalues; i += nentries) {
202 values[i] = 1 + 6.0 * z;
203 for (j = 1; j < nentries; j++)
208 stencil_indices, values);
225 double *values, *bvalues;
234 values = calloc(nvalues,
sizeof(
double));
245 HYPRE_SStructVectorInitialize(
b);
246 HYPRE_SStructVectorInitialize(
x);
275 long long stencilRindices[3];
281 values = calloc(nentries * Nmax * Nmax,
sizeof(
double));
282 bvalues = calloc(Nmax * Nmax,
sizeof(
double));
284 for (i = 0; i < Nmax * Nmax; i++)
289 for (i = 0; i < nvalues; i += nentries) {
297 stencilRindices[0] = 0;
298 stencilRindices[1] = 2;
299 stencilRindices[2] = 1;
302 stencilRindices, values);
310 for (i = 0; i < nvalues; i += nentries) {
318 stencilRindices[0] = 0;
319 stencilRindices[1] = 3;
320 stencilRindices[2] = 4;
323 stencilRindices, values);
331 for (i = 0; i < nvalues; i += nentries) {
339 stencilRindices[0] = 0;
340 stencilRindices[1] = 4;
341 stencilRindices[2] = 3;
344 stencilRindices, values);
352 for (i = 0; i < nvalues; i += nentries) {
360 stencilRindices[0] = 0;
361 stencilRindices[1] = 5;
362 stencilRindices[2] = 6;
365 stencilRindices, values);
373 for (i = 0; i < nvalues; i += nentries) {
381 stencilRindices[0] = 0;
382 stencilRindices[1] = 6;
383 stencilRindices[2] = 5;
386 stencilRindices, values);
399 long long stencilDindices[1];
401 values = calloc(nvalues,
sizeof(
double));
402 bvalues = calloc(nvalues,
sizeof(
double));
403 for (i = 0; i < nvalues; i++)
408 stencilDindices[0] = 1;
411 stencilDindices, values);
413 for (i = 0; i < nvalues; i++)
433 HYPRE_SStructMatrixAssemble(
A);
436 HYPRE_SStructVectorAssemble(
b);
437 HYPRE_SStructVectorAssemble(
x);
439 HYPRE_SStructMatrixGetObject(
A, (
void **) &
parA);
440 HYPRE_SStructVectorGetObject(
b, (
void **) &
parb);
441 HYPRE_SStructVectorGetObject(
x, (
void **) &
parx);
456 HYPRE_ParCSRPCGSetPrecond(
tempSolver, HYPRE_BoomerAMGSolve,
483 values = calloc(nvalues,
sizeof(
double));
488 for (i = 0; i < nvalues; i++)
517 for (i = 0; i < nvalues; i++)
526 HYPRE_SStructVectorAssemble(
b);
527 HYPRE_SStructVectorAssemble(
x);
534 HYPRE_SStructVectorGather(
x);
535 values = calloc(nvalues,
sizeof(
double));
HYPRE_SStructGraph tempGraph
struct int64Vector3d * gridEndIdx
HYPRE_SStructStencil tempStencil
contains the most important global variables, arrays and defines
void switchStdOut(const char *newStream)
HYPRE_SStructGrid tempGrid
struct int64Vector3d gridSize
void tempSetBoundary(int coord, int boundary)
HYPRE_SStructVariable tempVartypes[1]
struct int64Vector3d * gridStartIdx
double fieldICMean[NFIELDS]
contains variables and arrays for global fields