https://github.com/teuben/nemo
Tip revision: 363f7192a7473d771fe960f867c9161ecb379607 authored by Peter Teuben on 22 July 2021, 02:40:56 UTC
testing another readthedocs
testing another readthedocs
Tip revision: 363f719
acceleration.h
/*
******************************************************************************
*
* acceleration.h
*
* definition of pointer-to-functions for computing body accelerations
*
* Notes:
* 1 the 4th argument to get_acceleration() is boolean and returns whether
* masses are required as input for acceleration(). If they are not
* required a NULL pointer may be given.
* 2 the 5th argument to get_acceleration() is boolean and returns whether
* velocities are required as input for acceleration(). If they are not
* required a NULL pointer may be given.
* Velocities may be used to compute friction forces, such as the drag
* a gaseous disk is generating on stars crossing it.
* 3 arrays are passed as pointer to void. They must be either all of type
* float or all of type double as indicated by the last argument being 'f'
* or 'd', respectively.
* 4 arrays of vector quantities are in the order x0,y0,z0, x1,y1,z1, ...
* 5 if the pointer to flags is NULL, all bodies are supposed to be active,
* otherwise only those for which (f[i] & 1) is true.
* 6 the argument "indicator" of acceleration() indicates whether the
* accelerations and potential shall be assigned or added.
* If bit 0 is set, the potential is added, otherwise assigned,
* If bit 1 is set, the acceleration is added, otherwise assigned.
* So, 0 means both are assigned.
*
******************************************************************************
* version 0.0 17/06/2004 WD
* version 0.1 22/06/2004 WD allow for up to 10 fallbacks, no last_...
*
*/
#ifndef _acceleration_h
#define _acceleration_h
#ifdef __cplusplus
extern "C" {
#endif
/*
* declaration of pointer to acceleration()
*/
typedef void(*acc_pter) /* return: void */
(int, /* input: number of dimensions */
double, /* input: simulation time */
int, /* input: number bodies = size of arrays */
const void*, /* input: masses: m[i] */
const void*, /* input: positions (x,y,z)[i] */
const void*, /* input: velocities (u,v,w)[i] */
const int *, /* input: flags f[i] */
void*, /* output: potentials p[i] */
void*, /* output: accelerations (ax,ay,az)[i] */
int, /* input: indicator */
char); /* input: type: 'f' or 'd' */
/*
* declaration of routine for obtaining a pointer defined above
*/
extern
acc_pter get_acceleration( /* return: acceleration() */
const char*, /* input: acc_name */
const char*, /* input: acc_pars */
const char*, /* input: acc_file */
bool *, /* output: need masses? */
bool *); /* output: need velocities? */
#ifdef __cplusplus
}
#endif
#endif // _acceleration_h