t503-operator.c (7509a596beda7c1d002d2274a17375b09541fdb6) t503-operator.c (15910d16b955338d1102d4e730fc58bca8f202b9)
1/// @file
2/// Test creation, action, and destruction for mass matrix operator with passive inputs and outputs
3/// \test Test creation, action, and destruction for mass matrix operator with passive inputs and outputs
4#include <ceed.h>
5#include <stdlib.h>
6#include <math.h>
7
8#include "t500-operator.h"
9
10int main(int argc, char **argv) {
11 Ceed ceed;
12 CeedInterlaceMode imode = CEED_NONINTERLACED;
1/// @file
2/// Test creation, action, and destruction for mass matrix operator with passive inputs and outputs
3/// \test Test creation, action, and destruction for mass matrix operator with passive inputs and outputs
4#include <ceed.h>
5#include <stdlib.h>
6#include <math.h>
7
8#include "t500-operator.h"
9
10int main(int argc, char **argv) {
11 Ceed ceed;
12 CeedInterlaceMode imode = CEED_NONINTERLACED;
13 CeedElemRestriction Erestrictx, Erestrictu, Erestrictxi, Erestrictui;
13 CeedElemRestriction Erestrictx, Erestrictu, Erestrictui;
14 CeedBasis bx, bu;
15 CeedQFunction qf_setup, qf_mass;
16 CeedOperator op_setup, op_mass;
17 CeedVector qdata, X, U, V;
18 const CeedScalar *hv;
19 CeedInt nelem = 15, P = 5, Q = 8;
20 CeedInt Nx = nelem+1, Nu = nelem*(P-1)+1;
21 CeedInt indx[nelem*2], indu[nelem*P];

--- 17 unchanged lines hidden (view full) ---

39
40 // Restrictions
41 for (CeedInt i=0; i<nelem; i++) {
42 indx[2*i+0] = i;
43 indx[2*i+1] = i+1;
44 }
45 CeedElemRestrictionCreate(ceed, imode, nelem, 2, Nx, 1, CEED_MEM_HOST,
46 CEED_USE_POINTER, indx, &Erestrictx);
14 CeedBasis bx, bu;
15 CeedQFunction qf_setup, qf_mass;
16 CeedOperator op_setup, op_mass;
17 CeedVector qdata, X, U, V;
18 const CeedScalar *hv;
19 CeedInt nelem = 15, P = 5, Q = 8;
20 CeedInt Nx = nelem+1, Nu = nelem*(P-1)+1;
21 CeedInt indx[nelem*2], indu[nelem*P];

--- 17 unchanged lines hidden (view full) ---

39
40 // Restrictions
41 for (CeedInt i=0; i<nelem; i++) {
42 indx[2*i+0] = i;
43 indx[2*i+1] = i+1;
44 }
45 CeedElemRestrictionCreate(ceed, imode, nelem, 2, Nx, 1, CEED_MEM_HOST,
46 CEED_USE_POINTER, indx, &Erestrictx);
47 CeedInt stridesx[3] = {1, 2, 2};
48 CeedElemRestrictionCreateStrided(ceed, nelem, 2, nelem*2, 1, stridesx,
49 &Erestrictxi);
50
51 for (CeedInt i=0; i<nelem; i++) {
52 for (CeedInt j=0; j<P; j++) {
53 indu[P*i+j] = i*(P-1) + j;
54 }
55 }
56 CeedElemRestrictionCreate(ceed, imode, nelem, P, Nu, 1, CEED_MEM_HOST,
57 CEED_USE_POINTER, indu, &Erestrictu);

--- 18 unchanged lines hidden (view full) ---

76
77 // Operators
78 CeedOperatorCreate(ceed, qf_setup, CEED_QFUNCTION_NONE, CEED_QFUNCTION_NONE,
79 &op_setup);
80
81 CeedOperatorCreate(ceed, qf_mass, CEED_QFUNCTION_NONE, CEED_QFUNCTION_NONE,
82 &op_mass);
83
47
48 for (CeedInt i=0; i<nelem; i++) {
49 for (CeedInt j=0; j<P; j++) {
50 indu[P*i+j] = i*(P-1) + j;
51 }
52 }
53 CeedElemRestrictionCreate(ceed, imode, nelem, P, Nu, 1, CEED_MEM_HOST,
54 CEED_USE_POINTER, indu, &Erestrictu);

--- 18 unchanged lines hidden (view full) ---

73
74 // Operators
75 CeedOperatorCreate(ceed, qf_setup, CEED_QFUNCTION_NONE, CEED_QFUNCTION_NONE,
76 &op_setup);
77
78 CeedOperatorCreate(ceed, qf_mass, CEED_QFUNCTION_NONE, CEED_QFUNCTION_NONE,
79 &op_mass);
80
84 CeedOperatorSetField(op_setup, "_weight", Erestrictxi, bx, CEED_VECTOR_NONE);
81 CeedOperatorSetField(op_setup, "_weight", CEED_ELEMRESTRICTION_NONE, bx,
82 CEED_VECTOR_NONE);
85 CeedOperatorSetField(op_setup, "dx", Erestrictx, bx, X);
86 CeedOperatorSetField(op_setup, "rho", Erestrictui, CEED_BASIS_COLLOCATED,
87 qdata);
88
89 CeedOperatorSetField(op_mass, "rho", Erestrictui, CEED_BASIS_COLLOCATED,
90 qdata);
91 CeedOperatorSetField(op_mass, "u", Erestrictu, bu, U);
92 CeedOperatorSetField(op_mass, "v", Erestrictu, bu, V);

--- 15 unchanged lines hidden (view full) ---

108
109 CeedQFunctionDestroy(&qf_setup);
110 CeedQFunctionDestroy(&qf_mass);
111 CeedOperatorDestroy(&op_setup);
112 CeedOperatorDestroy(&op_mass);
113 CeedElemRestrictionDestroy(&Erestrictu);
114 CeedElemRestrictionDestroy(&Erestrictx);
115 CeedElemRestrictionDestroy(&Erestrictui);
83 CeedOperatorSetField(op_setup, "dx", Erestrictx, bx, X);
84 CeedOperatorSetField(op_setup, "rho", Erestrictui, CEED_BASIS_COLLOCATED,
85 qdata);
86
87 CeedOperatorSetField(op_mass, "rho", Erestrictui, CEED_BASIS_COLLOCATED,
88 qdata);
89 CeedOperatorSetField(op_mass, "u", Erestrictu, bu, U);
90 CeedOperatorSetField(op_mass, "v", Erestrictu, bu, V);

--- 15 unchanged lines hidden (view full) ---

106
107 CeedQFunctionDestroy(&qf_setup);
108 CeedQFunctionDestroy(&qf_mass);
109 CeedOperatorDestroy(&op_setup);
110 CeedOperatorDestroy(&op_mass);
111 CeedElemRestrictionDestroy(&Erestrictu);
112 CeedElemRestrictionDestroy(&Erestrictx);
113 CeedElemRestrictionDestroy(&Erestrictui);
116 CeedElemRestrictionDestroy(&Erestrictxi);
117 CeedBasisDestroy(&bu);
118 CeedBasisDestroy(&bx);
119 CeedVectorDestroy(&X);
120 CeedVectorDestroy(&U);
121 CeedVectorDestroy(&V);
122 CeedVectorDestroy(&qdata);
123 CeedDestroy(&ceed);
124 return 0;
125}
114 CeedBasisDestroy(&bu);
115 CeedBasisDestroy(&bx);
116 CeedVectorDestroy(&X);
117 CeedVectorDestroy(&U);
118 CeedVectorDestroy(&V);
119 CeedVectorDestroy(&qdata);
120 CeedDestroy(&ceed);
121 return 0;
122}