xref: /petsc/interfaces/lua/src/luasrc.c (revision 970231d20df44f79b27787157e39d441e79f434b)
19895aa37SBarry Smith #include <petsc.h>
29895aa37SBarry Smith #include <lua.h>
39895aa37SBarry Smith 
lua_VecCreate(lua_State * L)4d71ae5a4SJacob Faibussowitsch int lua_VecCreate(lua_State *L)
5d71ae5a4SJacob Faibussowitsch {
69895aa37SBarry Smith   PetscErrorCode ierr;
79895aa37SBarry Smith   Vec            vec;
89895aa37SBarry Smith 
99895aa37SBarry Smith   ierr = VecCreate(PETSC_COMM_SELF, &vec);
109895aa37SBarry Smith   lua_pushlightuserdata(L, vec);
119895aa37SBarry Smith   return 1;
129895aa37SBarry Smith }
139895aa37SBarry Smith 
lua_VecSetSize(lua_State * L)14d71ae5a4SJacob Faibussowitsch int lua_VecSetSize(lua_State *L)
15d71ae5a4SJacob Faibussowitsch {
169895aa37SBarry Smith   PetscErrorCode ierr;
179895aa37SBarry Smith   Vec            vec;
189895aa37SBarry Smith   PetscInt       n;
199895aa37SBarry Smith   int            isnum;
209895aa37SBarry Smith 
219895aa37SBarry Smith   vec  = (Vec)lua_touserdata(L, 1);
229895aa37SBarry Smith   n    = (PetscInt)lua_tointegerx(L, 2, &isnum);
239895aa37SBarry Smith   ierr = VecSetSizes(vec, n, n);
249895aa37SBarry Smith   return 0;
259895aa37SBarry Smith }
269895aa37SBarry Smith 
luaopen_libpetsc(lua_State * L)27d71ae5a4SJacob Faibussowitsch int luaopen_libpetsc(lua_State *L)
28d71ae5a4SJacob Faibussowitsch {
299895aa37SBarry Smith   PetscInitializeNoArguments();
309895aa37SBarry Smith   lua_register(L, "VecCreate", (lua_CFunction)lua_VecCreate);
319895aa37SBarry Smith   lua_register(L, "VecSetSize", (lua_CFunction)lua_VecSetSize);
32*4ad8454bSPierre Jolivet   return 0;
339895aa37SBarry Smith }
34