@@ -34,27 +34,25 @@ int main(int argc, char **argv) {
34
34
// ---------------------------------------------------------------------------
35
35
// Initialize PETSc
36
36
// ---------------------------------------------------------------------------
37
- PetscInt ierr ;
38
- ierr = PetscInitialize (& argc , & argv , NULL , help );
39
- if (ierr ) return ierr ;
37
+ PetscCall ( PetscInitialize (& argc , & argv , NULL , help ) );
40
38
41
39
// ---------------------------------------------------------------------------
42
40
// Create structs
43
41
// ---------------------------------------------------------------------------
44
42
AppCtx app_ctx ;
45
- ierr = PetscCalloc1 (1 , & app_ctx ); CHKERRQ ( ierr );
43
+ PetscCall ( PetscCalloc1 (1 , & app_ctx ) );
46
44
47
45
ProblemData * problem_data = NULL ;
48
- ierr = PetscCalloc1 (1 , & problem_data ); CHKERRQ ( ierr );
46
+ PetscCall ( PetscCalloc1 (1 , & problem_data ) );
49
47
50
48
User user ;
51
- ierr = PetscCalloc1 (1 , & user ); CHKERRQ ( ierr );
49
+ PetscCall ( PetscCalloc1 (1 , & user ) );
52
50
53
51
CeedData ceed_data ;
54
- ierr = PetscCalloc1 (1 , & ceed_data ); CHKERRQ ( ierr );
52
+ PetscCall ( PetscCalloc1 (1 , & ceed_data ) );
55
53
56
54
Physics phys_ctx ;
57
- ierr = PetscCalloc1 (1 , & phys_ctx ); CHKERRQ ( ierr );
55
+ PetscCall ( PetscCalloc1 (1 , & phys_ctx ) );
58
56
59
57
user -> app_ctx = app_ctx ;
60
58
user -> phys = phys_ctx ;
@@ -63,22 +61,21 @@ int main(int argc, char **argv) {
63
61
// Process command line options
64
62
// ---------------------------------------------------------------------------
65
63
// -- Register problems to be available on the command line
66
- ierr = RegisterProblems_Hdiv (app_ctx ); CHKERRQ ( ierr );
64
+ PetscCall ( RegisterProblems_Hdiv (app_ctx ) );
67
65
68
66
// -- Process general command line options
69
67
MPI_Comm comm = PETSC_COMM_WORLD ;
70
- ierr = ProcessCommandLineOptions (comm , app_ctx ); CHKERRQ ( ierr );
68
+ PetscCall ( ProcessCommandLineOptions (comm , app_ctx ) );
71
69
72
70
// ---------------------------------------------------------------------------
73
71
// Choose the problem from the list of registered problems
74
72
// ---------------------------------------------------------------------------
75
73
{
76
74
PetscErrorCode (* p )(ProblemData * , void * );
77
- ierr = PetscFunctionListFind (app_ctx -> problems , app_ctx -> problem_name , & p );
78
- CHKERRQ (ierr );
75
+ PetscCall ( PetscFunctionListFind (app_ctx -> problems , app_ctx -> problem_name , & p ) );
79
76
if (!p ) SETERRQ (PETSC_COMM_SELF , 1 , "Problem '%s' not found" ,
80
77
app_ctx -> problem_name );
81
- ierr = (* p )(problem_data , & user ); CHKERRQ ( ierr );
78
+ PetscCall ( (* p )(problem_data , & user ) );
82
79
}
83
80
84
81
// ---------------------------------------------------------------------------
@@ -95,8 +92,8 @@ int main(int argc, char **argv) {
95
92
// PETSc objects
96
93
DM dm ;
97
94
VecType vec_type ;
98
- ierr = CreateDistributedDM (comm , problem_data , & dm ); CHKERRQ ( ierr );
99
- ierr = DMGetVecType (dm , & vec_type ); CHKERRQ ( ierr );
95
+ PetscCall ( CreateDistributedDM (comm , problem_data , & dm ) );
96
+ PetscCall ( DMGetVecType (dm , & vec_type ) );
100
97
if (!vec_type ) { // Not yet set by user -dm_vec_type
101
98
switch (mem_type_backend ) {
102
99
case CEED_MEM_HOST : vec_type = VECSTANDARD ; break ;
@@ -110,57 +107,57 @@ int main(int argc, char **argv) {
110
107
else vec_type = VECSTANDARD ;
111
108
}
112
109
}
113
- ierr = DMSetVecType (dm , vec_type ); CHKERRQ ( ierr );
110
+ PetscCall ( DMSetVecType (dm , vec_type ) );
114
111
}
115
112
// ---------------------------------------------------------------------------
116
113
// Create global, local solution, local rhs vector
117
114
// ---------------------------------------------------------------------------
118
115
Vec U_g , U_loc ;
119
116
PetscInt U_l_size , U_g_size , U_loc_size ;
120
117
// Create global and local solution vectors
121
- ierr = DMCreateGlobalVector (dm , & U_g ); CHKERRQ ( ierr );
122
- ierr = VecGetSize (U_g , & U_g_size ); CHKERRQ ( ierr );
118
+ PetscCall ( DMCreateGlobalVector (dm , & U_g ) );
119
+ PetscCall ( VecGetSize (U_g , & U_g_size ) );
123
120
// Local size for matShell
124
- ierr = VecGetLocalSize (U_g , & U_l_size ); CHKERRQ ( ierr );
121
+ PetscCall ( VecGetLocalSize (U_g , & U_l_size ) );
125
122
// Create local unknown vector U_loc
126
- ierr = DMCreateLocalVector (dm , & U_loc ); CHKERRQ ( ierr );
123
+ PetscCall ( DMCreateLocalVector (dm , & U_loc ) );
127
124
// Local size for libCEED
128
- ierr = VecGetSize (U_loc , & U_loc_size ); CHKERRQ ( ierr );
125
+ PetscCall ( VecGetSize (U_loc , & U_loc_size ) );
129
126
130
127
// Get RHS vector
131
128
Vec rhs_loc ;
132
129
PetscScalar * r ;
133
130
CeedVector rhs_ceed , target ;
134
131
PetscMemType mem_type ;
135
- ierr = VecDuplicate (U_loc , & rhs_loc ); CHKERRQ ( ierr );
136
- ierr = VecZeroEntries (rhs_loc ); CHKERRQ ( ierr );
137
- ierr = VecGetArrayAndMemType (rhs_loc , & r , & mem_type ); CHKERRQ ( ierr );
132
+ PetscCall ( VecDuplicate (U_loc , & rhs_loc ) );
133
+ PetscCall ( VecZeroEntries (rhs_loc ) );
134
+ PetscCall ( VecGetArrayAndMemType (rhs_loc , & r , & mem_type ) );
138
135
CeedVectorCreate (ceed , U_l_size , & rhs_ceed );
139
136
CeedVectorSetArray (rhs_ceed , MemTypeP2C (mem_type ), CEED_USE_POINTER , r );
140
137
141
138
// ---------------------------------------------------------------------------
142
139
// Setup libCEED
143
140
// ---------------------------------------------------------------------------
144
141
// -- Set up libCEED objects
145
- ierr = SetupLibceed (dm , ceed , app_ctx , problem_data , U_g_size ,
146
- U_loc_size , ceed_data , rhs_ceed , & target ); CHKERRQ ( ierr );
142
+ PetscCall ( SetupLibceed (dm , ceed , app_ctx , problem_data , U_g_size ,
143
+ U_loc_size , ceed_data , rhs_ceed , & target ) );
147
144
//CeedVectorView(rhs_ceed, "%12.8f", stdout);
148
145
// ---------------------------------------------------------------------------
149
146
// Gather RHS
150
147
// ---------------------------------------------------------------------------
151
148
Vec rhs ;
152
149
CeedVectorTakeArray (rhs_ceed , MemTypeP2C (mem_type ), NULL );
153
- ierr = VecRestoreArrayAndMemType (rhs_loc , & r ); CHKERRQ ( ierr );
154
- ierr = VecDuplicate (U_g , & rhs ); CHKERRQ ( ierr );
155
- ierr = VecZeroEntries (rhs ); CHKERRQ ( ierr );
156
- ierr = DMLocalToGlobal (dm , rhs_loc , ADD_VALUES , rhs ); CHKERRQ ( ierr );
150
+ PetscCall ( VecRestoreArrayAndMemType (rhs_loc , & r ) );
151
+ PetscCall ( VecDuplicate (U_g , & rhs ) );
152
+ PetscCall ( VecZeroEntries (rhs ) );
153
+ PetscCall ( DMLocalToGlobal (dm , rhs_loc , ADD_VALUES , rhs ) );
157
154
// ---------------------------------------------------------------------------
158
155
// Setup Mat, KSP
159
156
// ---------------------------------------------------------------------------
160
157
user -> comm = comm ;
161
158
user -> dm = dm ;
162
159
user -> X_loc = U_loc ;
163
- ierr = VecDuplicate (U_loc , & user -> Y_loc ); CHKERRQ ( ierr );
160
+ PetscCall ( VecDuplicate (U_loc , & user -> Y_loc ) );
164
161
user -> x_ceed = ceed_data -> x_ceed ;
165
162
user -> y_ceed = ceed_data -> y_ceed ;
166
163
user -> op_apply = ceed_data -> op_residual ;
@@ -169,25 +166,25 @@ int main(int argc, char **argv) {
169
166
user -> ceed = ceed ;
170
167
// Operator
171
168
Mat mat ;
172
- ierr = MatCreateShell (comm , U_l_size , U_l_size , U_g_size , U_g_size ,
173
- user , & mat ); CHKERRQ ( ierr );
174
- ierr = MatShellSetOperation (mat , MATOP_MULT ,
175
- (void (* )(void ))MatMult_Ceed ); CHKERRQ ( ierr );
176
- ierr = MatShellSetVecType (mat , vec_type ); CHKERRQ ( ierr );
169
+ PetscCall ( MatCreateShell (comm , U_l_size , U_l_size , U_g_size , U_g_size ,
170
+ user , & mat ) );
171
+ PetscCall ( MatShellSetOperation (mat , MATOP_MULT ,
172
+ (void (* )(void ))MatMult_Ceed ) );
173
+ PetscCall ( MatShellSetVecType (mat , vec_type ) );
177
174
178
175
KSP ksp ;
179
- ierr = KSPCreate (comm , & ksp ); CHKERRQ ( ierr );
180
- ierr = KSPSetOperators (ksp , mat , mat ); CHKERRQ ( ierr );
181
- ierr = KSPSetFromOptions (ksp ); CHKERRQ ( ierr );
182
- ierr = KSPSetUp (ksp ); CHKERRQ ( ierr );
183
- ierr = KSPSolve (ksp , rhs , U_g ); CHKERRQ ( ierr );
176
+ PetscCall ( KSPCreate (comm , & ksp ) );
177
+ PetscCall ( KSPSetOperators (ksp , mat , mat ) );
178
+ PetscCall ( KSPSetFromOptions (ksp ) );
179
+ PetscCall ( KSPSetUp (ksp ) );
180
+ PetscCall ( KSPSolve (ksp , rhs , U_g ) );
184
181
//VecView(U_g, PETSC_VIEWER_STDOUT_WORLD);
185
182
// ---------------------------------------------------------------------------
186
183
// Compute pointwise L2 error
187
184
// ---------------------------------------------------------------------------
188
185
CeedScalar l2_error_u , l2_error_p ;
189
- ierr = ComputeError (user , U_g , target ,
190
- & l2_error_u , & l2_error_p ); CHKERRQ ( ierr );
186
+ PetscCall ( ComputeError (user , U_g , target ,
187
+ & l2_error_u , & l2_error_p ) );
191
188
192
189
// ---------------------------------------------------------------------------
193
190
// Output results
@@ -196,11 +193,11 @@ int main(int argc, char **argv) {
196
193
KSPConvergedReason reason ;
197
194
PetscReal rnorm ;
198
195
PetscInt its ;
199
- ierr = KSPGetType (ksp , & ksp_type ); CHKERRQ ( ierr );
200
- ierr = KSPGetConvergedReason (ksp , & reason ); CHKERRQ ( ierr );
201
- ierr = KSPGetIterationNumber (ksp , & its ); CHKERRQ ( ierr );
202
- ierr = KSPGetResidualNorm (ksp , & rnorm ); CHKERRQ ( ierr );
203
- ierr = PetscPrintf (comm ,
196
+ PetscCall ( KSPGetType (ksp , & ksp_type ) );
197
+ PetscCall ( KSPGetConvergedReason (ksp , & reason ) );
198
+ PetscCall ( KSPGetIterationNumber (ksp , & its ) );
199
+ PetscCall ( KSPGetResidualNorm (ksp , & rnorm ) );
200
+ PetscCall ( PetscPrintf (comm ,
204
201
" KSP:\n"
205
202
" KSP Type : %s\n"
206
203
" KSP Convergence : %s\n"
@@ -209,47 +206,46 @@ int main(int argc, char **argv) {
209
206
" L2 Error of u and p : %e, %e\n" ,
210
207
ksp_type , KSPConvergedReasons [reason ], its ,
211
208
(double )rnorm , (double )l2_error_u ,
212
- (double )l2_error_p ); CHKERRQ ( ierr );
209
+ (double )l2_error_p ) );
213
210
214
211
// ---------------------------------------------------------------------------
215
212
// Save solution (paraview)
216
213
// ---------------------------------------------------------------------------
217
214
PetscViewer viewer ;
218
215
219
- ierr = PetscViewerVTKOpen (comm ,"solution.vtu" ,FILE_MODE_WRITE ,& viewer );
220
- CHKERRQ (ierr );
221
- ierr = VecView (U_g , viewer ); CHKERRQ (ierr );
222
- ierr = PetscViewerDestroy (& viewer ); CHKERRQ (ierr );
216
+ PetscCall ( PetscViewerVTKOpen (comm ,"solution.vtu" ,FILE_MODE_WRITE ,& viewer ) );
217
+ PetscCall ( VecView (U_g , viewer ) );
218
+ PetscCall ( PetscViewerDestroy (& viewer ) );
223
219
224
220
// ---------------------------------------------------------------------------
225
221
// Free objects
226
222
// ---------------------------------------------------------------------------
227
223
228
224
// Free PETSc objects
229
- ierr = DMDestroy (& dm ); CHKERRQ ( ierr );
230
- ierr = VecDestroy (& U_g ); CHKERRQ ( ierr );
231
- ierr = VecDestroy (& U_loc ); CHKERRQ ( ierr );
232
- ierr = VecDestroy (& rhs ); CHKERRQ ( ierr );
233
- ierr = VecDestroy (& rhs_loc ); CHKERRQ ( ierr );
234
- ierr = VecDestroy (& user -> Y_loc ); CHKERRQ ( ierr );
235
- ierr = MatDestroy (& mat ); CHKERRQ ( ierr );
236
- ierr = KSPDestroy (& ksp ); CHKERRQ ( ierr );
225
+ PetscCall ( DMDestroy (& dm ) );
226
+ PetscCall ( VecDestroy (& U_g ) );
227
+ PetscCall ( VecDestroy (& U_loc ) );
228
+ PetscCall ( VecDestroy (& rhs ) );
229
+ PetscCall ( VecDestroy (& rhs_loc ) );
230
+ PetscCall ( VecDestroy (& user -> Y_loc ) );
231
+ PetscCall ( MatDestroy (& mat ) );
232
+ PetscCall ( KSPDestroy (& ksp ) );
237
233
238
234
// -- Function list
239
- ierr = PetscFunctionListDestroy (& app_ctx -> problems ); CHKERRQ ( ierr );
235
+ PetscCall ( PetscFunctionListDestroy (& app_ctx -> problems ) );
240
236
241
237
// -- Structs
242
- ierr = PetscFree (app_ctx ); CHKERRQ ( ierr );
243
- ierr = PetscFree (problem_data ); CHKERRQ ( ierr );
244
- ierr = PetscFree (user ); CHKERRQ ( ierr );
245
- ierr = PetscFree (phys_ctx -> darcy2d_ctx ); CHKERRQ ( ierr );
246
- ierr = PetscFree (phys_ctx -> darcy3d_ctx ); CHKERRQ ( ierr );
247
- ierr = PetscFree (phys_ctx ); CHKERRQ ( ierr );
238
+ PetscCall ( PetscFree (app_ctx ) );
239
+ PetscCall ( PetscFree (problem_data ) );
240
+ PetscCall ( PetscFree (user ) );
241
+ PetscCall ( PetscFree (phys_ctx -> darcy2d_ctx ) );
242
+ PetscCall ( PetscFree (phys_ctx -> darcy3d_ctx ) );
243
+ PetscCall ( PetscFree (phys_ctx ) );
248
244
249
245
// Free libCEED objects
250
246
CeedVectorDestroy (& rhs_ceed );
251
247
CeedVectorDestroy (& target );
252
- ierr = CeedDataDestroy (ceed_data ); CHKERRQ ( ierr );
248
+ PetscCall ( CeedDataDestroy (ceed_data ) );
253
249
CeedDestroy (& ceed );
254
250
255
251
return PetscFinalize ();
0 commit comments