#ifndef NATIVE_KERNELS_H #define NATIVE_KERNELS_H typedef struct { double p, T, rho, u, h; } NativeGas; typedef struct { int velocity_index; double lower, upper; double lower_restitution, upper_restitution, lower_threshold, upper_threshold; } NativeStop; /* Constants are emitted per medium instance by the model compiler. */ typedef struct { int real_helium; double R, cp, Tref, slope, mu, muT, S; } NativeMedium; int native_medium_init(const NativeMedium *, double p, double T, double V, int legacy_ideal_initial, double *mU); double native_density(const NativeMedium *, double p, double T); double native_temperature_ph(const NativeMedium *, double p, double h); double native_viscosity(const NativeMedium *, double T, int diagnostic); int native_medium_gas(const NativeMedium *, double m, double U, double V, NativeGas *); int native_medium_orifice(const NativeMedium *, double p1, double p2, double h1, double h2, double cq_area, double opening, double *q, double *cm, double *v); double native_pipe_flow(const NativeMedium *, double p1, double p2, double T, double diameter, double length, double roughness, int kind); void native_pipe_diagnostics(const NativeMedium *, double q, double p, double T, double diameter, double length, double roughness, int diagnostic, double *result); double native_limit_force(double penetration, double velocity, double stiffness, double damping, double depth, int signed_force); int native_gas_init(double p, double T, double volume, double *mU); int native_gas(double m, double U, double volume, NativeGas *gas); int native_orifice(double p1, double p2, double h1, double h2, double cq_area, double opening, double *flow, double *cm, double *velocity); double native_contact(double penetration, double velocity, double stiffness, double damping, double pdis, int signed_force); void native_stop_motion(double x, double v, double lower, double upper, double *acceleration, double *velocity); double native_signal(double t, double start, int stages, int cyclic, const double *data); double native_signal_break(double t, double end, double start, int stages, int cyclic, const double *data); #endif