brown/c/interaction/interaction.h

61 lines
1.2 KiB
C

#ifndef interaction_h
#define interaction_h
#include <Python.h>
#include "structmember.h"
// XXX
#define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
#include <numpy/ndarraytypes.h>
#include <numpy/ufuncobject.h>
#include <stddef.h>
static void
interaction_ufunc_float2D
( char ** args
, npy_intp * dimensions
, npy_intp * steps
, void * data);
static void
interaction_ufunc_force
( char ** args
, npy_intp * dimensions
, npy_intp * steps
, void * data);
/*
* This is a quite generic force function mapping a
* distance to the magnitude of a force. The coefficients
* are an array of length 19 and the force function
* is given as:
*
* (c0 + c1*r + c2*r^2 + ... + c6*r^6) * c7 * exp(c8*(r - c9))
* + c10 * exp(c11 * (r - c12))
* + c13 * exp(c14 * (r - c15)^2)
* + c16 * exp(c17 * (r - c18)^2)
* */
static float
interaction_force_function
( float r
, float * coefficients);
static float
interaction_potential_function
( float r
, float * coefficients);
static void
interaction_ufunc_force
( char ** args
, npy_intp * dimensions
, npy_intp * steps
, void * data);
static void
interaction_ufunc_potential
( char ** args
, npy_intp * dimensions
, npy_intp * steps
, void * data);
#endif