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(int 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 *: 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# -- IS -- 82 83cdef api object PyPetscIS_New(PetscIS arg): 84 cdef IS retv = IS() 85 setref(&retv.iset, arg) 86 return retv 87 88cdef api PetscIS PyPetscIS_Get(object arg) except? NULL: 89 cdef PetscIS retv = NULL 90 cdef IS ob = <IS?> arg 91 retv = ob.iset 92 return retv 93 94# -- LGMap -- 95 96cdef api object PyPetscLGMap_New(PetscLGMap arg): 97 cdef LGMap retv = LGMap() 98 setref(&retv.lgm, arg) 99 return retv 100 101cdef api PetscLGMap PyPetscLGMap_Get(object arg) except ? NULL: 102 cdef PetscLGMap retv = NULL 103 cdef LGMap ob = <LGMap?> arg 104 retv = ob.lgm 105 return retv 106 107# -- SF -- 108 109cdef api object PyPetscSF_New(PetscSF arg): 110 cdef SF retv = SF() 111 setref(&retv.sf, arg) 112 return retv 113 114cdef api PetscSF PyPetscSF_Get(object arg) except? NULL: 115 cdef PetscSF retv = NULL 116 cdef SF ob = <SF?> arg 117 retv = ob.sf 118 return retv 119 120# -- Vec -- 121 122cdef api object PyPetscVec_New(PetscVec arg): 123 cdef Vec retv = Vec() 124 setref(&retv.vec, arg) 125 return retv 126 127cdef api PetscVec PyPetscVec_Get(object arg) except ? NULL: 128 cdef PetscVec retv = NULL 129 cdef Vec ob = <Vec?> arg 130 retv = ob.vec 131 return retv 132 133# -- Scatter -- 134 135cdef api object PyPetscScatter_New(PetscScatter arg): 136 cdef Scatter retv = Scatter() 137 setref(&retv.sct, arg) 138 return retv 139 140cdef api PetscScatter PyPetscScatter_Get(object arg) except ? NULL: 141 cdef PetscScatter retv = NULL 142 cdef Scatter ob = <Scatter?> arg 143 retv = ob.sct 144 return retv 145 146# -- Section -- 147 148cdef api object PyPetscSection_New(PetscSection arg): 149 cdef Section retv = Section() 150 setref(&retv.sec, arg) 151 return retv 152 153cdef api PetscSection PyPetscSection_Get(object arg) except ? NULL: 154 cdef PetscSection retv = NULL 155 cdef Section ob = <Section?> arg 156 retv = ob.sec 157 return retv 158 159# -- Mat -- 160 161cdef api object PyPetscMat_New(PetscMat arg): 162 cdef Mat retv = Mat() 163 setref(&retv.mat, arg) 164 return retv 165 166cdef api PetscMat PyPetscMat_Get(object arg) except ? NULL: 167 cdef PetscMat retv = NULL 168 cdef Mat ob = <Mat?> arg 169 retv = ob.mat 170 return retv 171 172# -- PC -- 173 174cdef api object PyPetscPC_New(PetscPC arg): 175 cdef PC retv = PC() 176 setref(&retv.pc, arg) 177 return retv 178 179cdef api PetscPC PyPetscPC_Get(object arg) except ? NULL: 180 cdef PetscPC retv = NULL 181 cdef PC ob = <PC?> arg 182 retv = ob.pc 183 return retv 184 185# -- KSP -- 186 187cdef api object PyPetscKSP_New(PetscKSP arg): 188 cdef KSP retv = KSP() 189 setref(&retv.ksp, arg) 190 return retv 191 192cdef api PetscKSP PyPetscKSP_Get(object arg) except ? NULL: 193 cdef PetscKSP retv = NULL 194 cdef KSP ob = <KSP?> arg 195 retv = ob.ksp 196 return retv 197 198# -- SNES -- 199 200cdef api object PyPetscSNES_New(PetscSNES arg): 201 cdef SNES retv = SNES() 202 setref(&retv.snes, arg) 203 return retv 204 205cdef api PetscSNES PyPetscSNES_Get(object arg) except ? NULL: 206 cdef PetscSNES retv = NULL 207 cdef SNES ob = <SNES?> arg 208 retv = ob.snes 209 return retv 210 211# -- TS -- 212 213cdef api object PyPetscTS_New(PetscTS arg): 214 cdef TS retv = TS() 215 setref(&retv.ts, arg) 216 return retv 217 218cdef api PetscTS PyPetscTS_Get(object arg) except ? NULL: 219 cdef PetscTS retv = NULL 220 cdef TS ob = <TS?> arg 221 retv = ob.ts 222 return retv 223 224# -- TAO -- 225 226cdef api object PyPetscTAO_New(PetscTAO arg): 227 cdef TAO retv = TAO() 228 setref(&retv.tao, arg) 229 return retv 230 231cdef api PetscTAO PyPetscTAO_Get(object arg) except ? NULL: 232 cdef PetscTAO retv = NULL 233 cdef TAO ob = <TAO?> arg 234 retv = ob.tao 235 return retv 236 237# -- AO -- 238 239cdef api object PyPetscAO_New(PetscAO arg): 240 cdef AO retv = AO() 241 setref(&retv.ao, arg) 242 return retv 243 244cdef api PetscAO PyPetscAO_Get(object arg) except ? NULL: 245 cdef PetscAO retv = NULL 246 cdef AO ob = <AO?> arg 247 retv = ob.ao 248 return retv 249 250# -- DM -- 251 252cdef api object PyPetscDM_New(PetscDM arg): 253 cdef DM retv = subtype_DM(arg)() 254 setref(&retv.dm, arg) 255 return retv 256 257cdef api PetscDM PyPetscDM_Get(object arg) except ? NULL: 258 cdef PetscDM retv = NULL 259 cdef DM ob = <DM?> arg 260 retv = ob.dm 261 return retv 262 263# -- DS -- 264 265cdef api object PyPetscDS_New(PetscDS arg): 266 cdef DS retv = DS() 267 setref(&retv.ds, arg) 268 return retv 269 270cdef api PetscDS PyPetscDS_Get(object arg) except ? NULL: 271 cdef PetscDS retv = NULL 272 cdef DS ob = <DS?> arg 273 retv = ob.ds 274 return retv 275 276# -- Partitioner -- 277 278cdef api object PyPetscPartitioner_New(PetscPartitioner arg): 279 cdef Partitioner retv = Partitioner() 280 setref(&retv.part, arg) 281 return retv 282 283cdef api PetscPartitioner PyPetscPartitioner_Get(object arg) except ? NULL: 284 cdef PetscPartitioner retv = NULL 285 cdef Partitioner ob = <Partitioner?> arg 286 retv = ob.part 287 return retv 288 289# -- FE -- 290 291cdef api object PyPetscFE_New(PetscFE arg): 292 cdef FE retv = FE() 293 setref(&retv.fe, arg) 294 return retv 295 296cdef api PetscFE PyPetscFE_Get(object arg) except ? NULL: 297 cdef PetscFE retv = NULL 298 cdef FE ob = <FE?> arg 299 retv = ob.fe 300 return retv 301 302# -- QUAD -- 303 304cdef api object PyPetscQuad_New(PetscQuadrature arg): 305 cdef Quad retv = Quad() 306 setref(&retv.quad, arg) 307 return retv 308 309cdef api PetscQuadrature PyPetscQuad_Get(object arg) except ? NULL: 310 cdef PetscQuadrature retv = NULL 311 cdef Quad ob = <Quad?> arg 312 retv = ob.quad 313 return retv 314 315# -- DMLabel -- 316 317cdef api object PyPetscDMLabel_New(PetscDMLabel arg): 318 cdef DMLabel retv = DMLabel() 319 setref(&retv.dmlabel, arg) 320 return retv 321 322cdef api PetscDMLabel PyPetscDMLabel_Get(object arg) except ? NULL: 323 cdef PetscDMLabel retv = NULL 324 cdef DMLabel ob = <DMLabel?> arg 325 retv = ob.dmlabel 326 return retv 327 328 329#--------------------------------------------------------------------- 330