#ifndef SOLVER_INTERNAL_H #define SOLVER_INTERNAL_H #include "solver.h" double solver_clamp(double v, double lo, double hi); double solver_signum(double v); void solver_add_warning(SolverOutputs *outputs, const char *msg); void solver_init_output_ranges(SolverOutputs *outputs); void solver_update_output_ranges(SolverOutputs *outputs, double polished, double downhole); double solver_input_or_default(double value, double fallback); double solver_compute_side_load_node(const SolverInputs *inputs, double tension_n, int node_idx, double ds); double solver_compute_friction_node(const SolverInputs *inputs, double side_load_n, double velocity_m_s, int node_idx); void solver_fill_profiles(const SolverInputs *inputs, SolverOutputs *outputs, int node_count, double rod_length_m, const double *side_load_nodes, const double *friction_nodes); void solver_valve_state_step(const SolverInputs *inputs, SolverOutputs *outputs, int step_idx, double pump_position_m, double pump_velocity_m_s, double downhole_load_n); #endif