1# --------------------------------------------------------------------- 2 3cdef inline int setref(void *d, void *s) except -1: 4 cdef PetscObject *dest = <PetscObject*> d 5 cdef PetscObject source = <PetscObject> s 6 CHKERR(PetscINCREF(&source)) 7 dest[0] = source 8 return 0 9 10# --------------------------------------------------------------------- 11 12# -- Error -- 13 14cdef api int PyPetscError_Set(PetscErrorCode ierr): 15 return SETERR(ierr) 16 17# -- Comm -- 18 19cdef api object PyPetscComm_New(MPI_Comm arg): 20 cdef Comm retv = Comm() 21 retv.comm = arg 22 return retv 23 24cdef api MPI_Comm PyPetscComm_Get(object arg) except? MPI_COMM_NULL: 25 cdef MPI_Comm retv = MPI_COMM_NULL 26 cdef Comm ob = <Comm?> arg 27 retv = ob.comm 28 return retv 29 30cdef api MPI_Comm* PyPetscComm_GetPtr(object arg) except NULL: 31 cdef MPI_Comm *retv = NULL 32 cdef Comm ob = <Comm?> arg 33 retv = &ob.comm 34 return retv 35 36# -- Object -- 37 38cdef api object PyPetscObject_New(PetscObject arg): 39 cdef Object retv = subtype_Object(arg)() 40 setref(&retv.obj[0], arg) 41 return retv 42 43cdef api PetscObject PyPetscObject_Get(object arg) except ? NULL: 44 cdef PetscObject retv = NULL 45 cdef Object ob = <Object?> arg 46 retv = ob.obj[0] 47 return retv 48 49cdef api PetscObject* PyPetscObject_GetPtr(object arg) except NULL: 50 cdef PetscObject *retv = NULL 51 cdef Object ob = <Object?> arg 52 retv = ob.obj 53 return retv 54 55# -- Viewer -- 56 57cdef api object PyPetscViewer_New(PetscViewer arg): 58 cdef Viewer retv = Viewer() 59 setref(&retv.vwr, arg) 60 return retv 61 62cdef api PetscViewer PyPetscViewer_Get(object arg) except ? NULL: 63 cdef PetscViewer retv = NULL 64 cdef Viewer ob = <Viewer?> arg 65 retv = ob.vwr 66 return retv 67 68# -- Random -- 69 70cdef api object PyPetscRandom_New(PetscRandom arg): 71 cdef Random retv = Random() 72 setref(&retv.rnd, arg) 73 return retv 74 75cdef api PetscRandom PyPetscRandom_Get(object arg) except ? NULL: 76 cdef PetscRandom retv = NULL 77 cdef Random ob = <Random?> arg 78 retv = ob.rnd 79 return retv 80 81# -- Device -- 82 83cdef api Device PyPetscDevice_New(PetscDevice arg): 84 cdef Device ret = Device() 85 CHKERR(PetscDeviceReference(arg)) 86 ret.device = arg 87 return ret 88 89cdef api PetscDevice PyPetscDevice_Get(object arg) except ? NULL: 90 cdef Device obj = <Device?>arg 91 cdef PetscDevice ret = obj.device 92 return ret 93 94# -- DeviceContext -- 95 96cdef api DeviceContext PyPetscDeviceContext_New(PetscDeviceContext arg): 97 cdef DeviceContext retv = DeviceContext() 98 setref(&retv.dctx, arg) 99 return retv 100 101cdef api PetscDeviceContext PyPetscDeviceContext_Get(object arg) except ? NULL: 102 cdef DeviceContext obj = <DeviceContext?>arg 103 cdef PetscDeviceContext ret = obj.dctx 104 return ret 105 106# -- IS -- 107 108cdef api object PyPetscIS_New(PetscIS arg): 109 cdef IS retv = IS() 110 setref(&retv.iset, arg) 111 return retv 112 113cdef api PetscIS PyPetscIS_Get(object arg) except? NULL: 114 cdef PetscIS retv = NULL 115 cdef IS ob = <IS?> arg 116 retv = ob.iset 117 return retv 118 119# -- LGMap -- 120 121cdef api object PyPetscLGMap_New(PetscLGMap arg): 122 cdef LGMap retv = LGMap() 123 setref(&retv.lgm, arg) 124 return retv 125 126cdef api PetscLGMap PyPetscLGMap_Get(object arg) except ? NULL: 127 cdef PetscLGMap retv = NULL 128 cdef LGMap ob = <LGMap?> arg 129 retv = ob.lgm 130 return retv 131 132# -- SF -- 133 134cdef api object PyPetscSF_New(PetscSF arg): 135 cdef SF retv = SF() 136 setref(&retv.sf, arg) 137 return retv 138 139cdef api PetscSF PyPetscSF_Get(object arg) except? NULL: 140 cdef PetscSF retv = NULL 141 cdef SF ob = <SF?> arg 142 retv = ob.sf 143 return retv 144 145# -- Vec -- 146 147cdef api object PyPetscVec_New(PetscVec arg): 148 cdef Vec retv = Vec() 149 setref(&retv.vec, arg) 150 return retv 151 152cdef api PetscVec PyPetscVec_Get(object arg) except ? NULL: 153 cdef PetscVec retv = NULL 154 cdef Vec ob = <Vec?> arg 155 retv = ob.vec 156 return retv 157 158# -- Scatter -- 159 160cdef api object PyPetscScatter_New(PetscScatter arg): 161 cdef Scatter retv = Scatter() 162 setref(&retv.sct, arg) 163 return retv 164 165cdef api PetscScatter PyPetscScatter_Get(object arg) except ? NULL: 166 cdef PetscScatter retv = NULL 167 cdef Scatter ob = <Scatter?> arg 168 retv = ob.sct 169 return retv 170 171# -- Section -- 172 173cdef api object PyPetscSection_New(PetscSection arg): 174 cdef Section retv = Section() 175 setref(&retv.sec, arg) 176 return retv 177 178cdef api PetscSection PyPetscSection_Get(object arg) except ? NULL: 179 cdef PetscSection retv = NULL 180 cdef Section ob = <Section?> arg 181 retv = ob.sec 182 return retv 183 184# -- Mat -- 185 186cdef api object PyPetscMat_New(PetscMat arg): 187 cdef Mat retv = Mat() 188 setref(&retv.mat, arg) 189 return retv 190 191cdef api PetscMat PyPetscMat_Get(object arg) except ? NULL: 192 cdef PetscMat retv = NULL 193 cdef Mat ob = <Mat?> arg 194 retv = ob.mat 195 return retv 196 197# -- MatPartitioning -- 198 199cdef api object PyPetscMatPartitioning_New(PetscMatPartitioning arg): 200 cdef MatPartitioning retv = MatPartitioning() 201 setref(&retv.part, arg) 202 return retv 203 204cdef api PetscMatPartitioning PyPetscMatPartitioning_Get(object arg) except ? NULL: 205 cdef PetscMatPartitioning retv = NULL 206 cdef MatPartitioning ob = <MatPartitioning?> arg 207 retv = ob.part 208 return retv 209 210# -- PC -- 211 212cdef api object PyPetscPC_New(PetscPC arg): 213 cdef PC retv = PC() 214 setref(&retv.pc, arg) 215 return retv 216 217cdef api PetscPC PyPetscPC_Get(object arg) except ? NULL: 218 cdef PetscPC retv = NULL 219 cdef PC ob = <PC?> arg 220 retv = ob.pc 221 return retv 222 223# -- KSP -- 224 225cdef api object PyPetscKSP_New(PetscKSP arg): 226 cdef KSP retv = KSP() 227 setref(&retv.ksp, arg) 228 return retv 229 230cdef api PetscKSP PyPetscKSP_Get(object arg) except ? NULL: 231 cdef PetscKSP retv = NULL 232 cdef KSP ob = <KSP?> arg 233 retv = ob.ksp 234 return retv 235 236# -- SNES -- 237 238cdef api object PyPetscSNES_New(PetscSNES arg): 239 cdef SNES retv = SNES() 240 setref(&retv.snes, arg) 241 return retv 242 243cdef api PetscSNES PyPetscSNES_Get(object arg) except ? NULL: 244 cdef PetscSNES retv = NULL 245 cdef SNES ob = <SNES?> arg 246 retv = ob.snes 247 return retv 248 249cdef api object PyPetscSNESLineSearch_New(PetscSNESLineSearch arg): 250 cdef SNESLineSearch retv = SNESLineSearch() 251 setref(&retv.snesls, arg) 252 return retv 253 254cdef api PetscSNESLineSearch PyPetscSNESLineSearch_Get(object arg) except ? NULL: 255 cdef PetscSNESLineSearch retv = NULL 256 cdef SNESLineSearch ob = <SNESLineSearch?> arg 257 retv = ob.snesls 258 return retv 259 260# -- TS -- 261 262cdef api object PyPetscTS_New(PetscTS arg): 263 cdef TS retv = TS() 264 setref(&retv.ts, arg) 265 return retv 266 267cdef api PetscTS PyPetscTS_Get(object arg) except ? NULL: 268 cdef PetscTS retv = NULL 269 cdef TS ob = <TS?> arg 270 retv = ob.ts 271 return retv 272 273# -- TAO -- 274 275cdef api object PyPetscTAO_New(PetscTAO arg): 276 cdef TAO retv = TAO() 277 setref(&retv.tao, arg) 278 return retv 279 280cdef api PetscTAO PyPetscTAO_Get(object arg) except ? NULL: 281 cdef PetscTAO retv = NULL 282 cdef TAO ob = <TAO?> arg 283 retv = ob.tao 284 return retv 285 286cdef api object PyPetscTAOLineSearch_New(PetscTAOLineSearch arg): 287 cdef TAOLineSearch retv = TAOLineSearch() 288 setref(&retv.taols, arg) 289 return retv 290 291cdef api PetscTAOLineSearch PyPetscTAOLineSearch_Get(object arg) except ? NULL: 292 cdef PetscTAOLineSearch retv = NULL 293 cdef TAOLineSearch ob = <TAOLineSearch?> arg 294 retv = ob.taols 295 return retv 296 297 298# -- AO -- 299 300cdef api object PyPetscAO_New(PetscAO arg): 301 cdef AO retv = AO() 302 setref(&retv.ao, arg) 303 return retv 304 305cdef api PetscAO PyPetscAO_Get(object arg) except ? NULL: 306 cdef PetscAO retv = NULL 307 cdef AO ob = <AO?> arg 308 retv = ob.ao 309 return retv 310 311# -- DM -- 312 313cdef api object PyPetscDM_New(PetscDM arg): 314 cdef DM retv = subtype_DM(arg)() 315 setref(&retv.dm, arg) 316 return retv 317 318cdef api PetscDM PyPetscDM_Get(object arg) except ? NULL: 319 cdef PetscDM retv = NULL 320 cdef DM ob = <DM?> arg 321 retv = ob.dm 322 return retv 323 324# -- DS -- 325 326cdef api object PyPetscDS_New(PetscDS arg): 327 cdef DS retv = DS() 328 setref(&retv.ds, arg) 329 return retv 330 331cdef api PetscDS PyPetscDS_Get(object arg) except ? NULL: 332 cdef PetscDS retv = NULL 333 cdef DS ob = <DS?> arg 334 retv = ob.ds 335 return retv 336 337# -- Partitioner -- 338 339cdef api object PyPetscPartitioner_New(PetscPartitioner arg): 340 cdef Partitioner retv = Partitioner() 341 setref(&retv.part, arg) 342 return retv 343 344cdef api PetscPartitioner PyPetscPartitioner_Get(object arg) except ? NULL: 345 cdef PetscPartitioner retv = NULL 346 cdef Partitioner ob = <Partitioner?> arg 347 retv = ob.part 348 return retv 349 350# -- FE -- 351 352cdef api object PyPetscFE_New(PetscFE arg): 353 cdef FE retv = FE() 354 setref(&retv.fe, arg) 355 return retv 356 357cdef api PetscFE PyPetscFE_Get(object arg) except ? NULL: 358 cdef PetscFE retv = NULL 359 cdef FE ob = <FE?> arg 360 retv = ob.fe 361 return retv 362 363# -- QUAD -- 364 365cdef api object PyPetscQuad_New(PetscQuadrature arg): 366 cdef Quad retv = Quad() 367 setref(&retv.quad, arg) 368 return retv 369 370cdef api PetscQuadrature PyPetscQuad_Get(object arg) except ? NULL: 371 cdef PetscQuadrature retv = NULL 372 cdef Quad ob = <Quad?> arg 373 retv = ob.quad 374 return retv 375 376# -- DMLabel -- 377 378cdef api object PyPetscDMLabel_New(PetscDMLabel arg): 379 cdef DMLabel retv = DMLabel() 380 setref(&retv.dmlabel, arg) 381 return retv 382 383cdef api PetscDMLabel PyPetscDMLabel_Get(object arg) except ? NULL: 384 cdef PetscDMLabel retv = NULL 385 cdef DMLabel ob = <DMLabel?> arg 386 retv = ob.dmlabel 387 return retv 388 389 390# -- SPACE -- 391 392cdef api object PyPetscSpace_New(PetscSpace arg): 393 cdef Space retv = Space() 394 setref(&retv.space, arg) 395 return retv 396 397cdef api PetscSpace PyPetscSpace_Get(object arg) except ? NULL: 398 cdef PetscSpace retv = NULL 399 cdef Space ob = <Space?> arg 400 retv = ob.space 401 return retv 402 403# -- DUALSPACE -- 404 405cdef api object PyPetscDualSpace_New(PetscDualSpace arg): 406 cdef DualSpace retv = DualSpace() 407 setref(&retv.dualspace, arg) 408 return retv 409 410cdef api PetscDualSpace PyPetscDualSpace_Get(object arg) except ? NULL: 411 cdef PetscDualSpace retv = NULL 412 cdef DualSpace ob = <DualSpace?> arg 413 retv = ob.dualspace 414 return retv 415 416# -- DMSwarmCellDM -- 417 418cdef api object PyPetscDMSwarmCellDM_New(PetscDMSwarmCellDM arg): 419 cdef CellDM retv = CellDM() 420 setref(&retv.cdm, arg) 421 return retv 422 423cdef api PetscDMSwarmCellDM PyPetscDMSwarmCellDM_Get(object arg) except ? NULL: 424 cdef PetscDMSwarmCellDM retv = NULL 425 cdef CellDM ob = <CellDM?> arg 426 retv = ob.cdm 427 return retv 428 429# -- PetscRegressor -- 430 431cdef api object PyPetscRegressor_New(PetscRegressor arg): 432 cdef Regressor retv = Regressor() 433 setref(&retv.regressor, arg) 434 return retv 435 436cdef api PetscRegressor PyPetscRegressor_Get(object arg) except ? NULL: 437 cdef PetscRegressor retv = NULL 438 cdef Regressor ob = <Regressor?> arg 439 retv = ob.regressor 440 return retv 441 442# --------------------------------------------------------------------- 443