Skip to content
Snippets Groups Projects
Commit 89670bb9 authored by lhausamm's avatar lhausamm
Browse files

Start wrapping struct inside python class

parent 4af23b3f
Branches
No related tags found
1 merge request!1Init
*~
\ No newline at end of file
setup.py 0 → 100644
#!/usr/bin/env python3
descr = """
Wrapper around the SPH cosmological simulation code SWIFT
"""
from setuptools import setup, find_packages, Extension
import sys
from glob import glob
import numpy
# deal with arguments
swift_path = None
swift_arg = "--with-swift"
if swift_arg in sys.argv:
i = sys.argv.find(swift_arg)
swift_path = sys.argv[i+1]
sys.argv.remove(swift_arg)
sys.argv.remove(swift_path)
# python lib dependency
install_requires=["numpy"]
# link to non pypi dependencies
dependency_links = []
# C includes
include = [".", numpy.get_include()]
# C libraries
lib = ["m"]
# src files
c_src = []
# data files
data_files = []
##############
## C ext
##############
c_src = glob("src/*.c")
ext_modules = Extension("pyswiftsim",
c_src,
include_dirs=include,
libraries=lib)
ext_modules = [ext_modules]
##############
## data
##############
data_files = []
##############
## scripts
##############
list_scripts = []
##############
## Setup
##############
setup(
name = "pyswiftsim",
version = "0.1",
author = "Hausammann Loic",
author_email = "loic.hausammann@epfl.ch",
description = descr,
license = "GPLv3",
keywords = "nbody sph simulation hpc",
url = "",
packages = find_packages(),
data_files = data_files,
scripts = list_scripts,
install_requires = install_requires,
dependency_links = dependency_links,
ext_modules = ext_modules,
)
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
#include "units.h"
#include <Python.h>
#include <math.h>
#include <numpy/arrayobject.h>
/* definition of the method table */
static PyMethodDef pyswiftsim_methods[] = {
{"test", test, METH_VARARGS,
"Test."},
{NULL, NULL, 0, NULL} /* Sentinel */
};
static struct PyModuleDef pyswiftsim_cmodule = {
PyModuleDef_HEAD_INIT,
"pyswiftsim",
"Wrapper around the SPH cosmological simulation code SWIFT",
-1,
pyswiftsim_methods
};
PyMODINIT_FUNC PyInit_pyswiftsim(void)
{
PyObject *m;
Py_Initialize();
import_array();
m = PyModule_Create(&pyswiftsim_cmodule);
if (m == NULL)
return NULL;
return m;
}
#include "units.h"
#include <Python.h>
#include <stdlib.h>
#include <string.h>
PyObject* test(PyObject *self, PyObject *args) {
size_t N = sizeof(struct unit_system);
struct unit_system *us = malloc(N);
us->UnitMass_in_cgs = 1.;
us->UnitLength_in_cgs = 1.;
us->UnitTime_in_cgs = 1.;
us->UnitCurrent_in_cgs = 1.;
us->UnitTemperature_in_cgs = 1.;
//char *tmp = malloc(N);
//memcpy(tmp, us, N);
return PyBytes_FromStringAndSize((char*) us, N);
}
#ifndef __PYSWIFTSIM_UNITS_H__
#define __PYSWIFTSIM_UNITS_H__
#include <Python.h>
struct unit_system {
/*! Conversion factor from grams to internal mass units */
double UnitMass_in_cgs;
/*! Conversion factor from centimeters to internal length unit */
double UnitLength_in_cgs;
/*! Conversion factor from seconds to internal time units */
double UnitTime_in_cgs;
/*! Conversion factor from Ampere to internal current units */
double UnitCurrent_in_cgs;
/*! Conversion factor from Kelvins to internal temperature units. */
double UnitTemperature_in_cgs;
};
PyObject* test(PyObject *self, PyObject *args);
#endif // __PYSWIFTSIM_UNITS_H__
#!/usr/bin/env python3
import pyswiftsim
print(dir(pyswiftsim))
print(pyswiftsim.__file__)
t = pyswiftsim.test()
import struct
#print(len(t), t)
print(t)
data = struct.unpack("ddddd", t)
print(data)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment