1 #include <petsc.h> 2 #include <lua.h> 3 4 int lua_VecCreate(lua_State *L) { 5 PetscErrorCode ierr; 6 Vec vec; 7 8 ierr = VecCreate(PETSC_COMM_SELF, &vec); 9 lua_pushlightuserdata(L, vec); 10 return 1; 11 } 12 13 int lua_VecSetSize(lua_State *L) { 14 PetscErrorCode ierr; 15 Vec vec; 16 PetscInt n; 17 int isnum; 18 19 vec = (Vec)lua_touserdata(L, 1); 20 n = (PetscInt)lua_tointegerx(L, 2, &isnum); 21 ierr = VecSetSizes(vec, n, n); 22 return 0; 23 } 24 25 int luaopen_libpetsc(lua_State *L) { 26 PetscInitializeNoArguments(); 27 lua_register(L, "VecCreate", (lua_CFunction)lua_VecCreate); 28 lua_register(L, "VecSetSize", (lua_CFunction)lua_VecSetSize); 29 return (0); 30 } 31