fitpack
Modern Fortran library for curve and surface fitting with splines
Loading...
Searching...
No Matches
fpCurve Class Reference

Standalone C++ RAII wrapper for Fortran fitpack_curve. More...

#include <fpCurve.hpp>

Inheritance diagram for fpCurve:
Collaboration diagram for fpCurve:

Public Member Functions

 fpCurve ()
 Default constructor - allocates new fitpack_curve.
 
 ~fpCurve () override
 Destructor - deallocates if owned.
 
 fpCurve (const fpCurve &other)
 Copy constructor - deep copy.
 
fpCurveoperator= (const fpCurve &other)
 Copy assignment - deep copy.
 
 fpCurve (fpCurve &&other) noexcept
 Move constructor - transfer ownership.
 
fpCurveoperator= (fpCurve &&other) noexcept
 Move assignment - transfer ownership.
 
 fpCurve (fitpack_curve_c &c_wrapper, bool move=false)
 Construct from existing C wrapper (takes ownership if move=true)
 
 fpCurve (fitpack_curve_c &c_wrapper, ViewTag)
 Non-owning view ctor: bit-copy the C handle, mark is_pointer=true. Used by parent classes' polymorphic accessors to wrap a base-class handle as the correct concrete subtype.
 
bool is_allocated () const override
 Check if object is allocated.
 
bool is_pointer () const override
 Check if this is a non-owning pointer.
 
const char * c_type_name () const override
 Return the C wrapper struct name for this class (e.g. "fitpack_curve_c").
 
const char * cpp_type_name () const override
 Return the fully-qualified C++ class name for this class. Owned by the C++ layer — does not round-trip through Fortran.
 
fitpack_curve_c & c_handle ()
 Get underlying C wrapper (for interop)
 
const fitpack_curve_c & c_handle () const
 Get underlying C wrapper (const, for interop)
 
fpFitteras_parent ()
 Upcast to parent type (reference, no copy)
 
const fpFitteras_parent () const
 
virtual void new_points (std::vector< double > &x, std::vector< double > &y, double *w=nullptr)
 new_points
 
virtual int32_t new_fit (std::vector< double > &x, std::vector< double > &y, double *w=nullptr, double *smoothing=nullptr, int32_t *order=nullptr)
 new_fit
 
virtual int32_t fit (double *smoothing=nullptr, int32_t *order=nullptr, bool *keep_knots=nullptr)
 
virtual int32_t interpolate (int32_t *order=nullptr, bool *reset_knots=nullptr)
 
virtual int32_t least_squares (double *smoothing=nullptr, bool *reset_knots=nullptr)
 
virtual double eval (double x, int32_t &ierr)
 
virtual double eval (double x) const
 
virtual std::vector< double > eval (std::vector< double > &x, int32_t &ierr)
 eval
 
virtual std::vector< double > eval (std::vector< double > &x)
 eval
 
virtual double integral (double from, double to)
 
virtual void fourier_coefficients (std::vector< double > &alpha, std::vector< double > &a, std::vector< double > &b, int32_t *ierr=nullptr)
 fourier_coefficients
 
virtual std::vector< double > zeros (int32_t max_size, int32_t *ierr=nullptr)
 zeros
 
virtual double dfdx (double x, int32_t order, int32_t *ierr=nullptr)
 
virtual std::vector< double > dfdx (std::vector< double > &x, int32_t order, int32_t *ierr=nullptr)
 dfdx
 
virtual std::vector< double > dfdx_all (double x, int32_t &ierr, int32_t n_result)
 dfdx_all
 
virtual std::vector< double > dfdx_all (double x, int32_t n_result)
 dfdx_all
 
virtual void insert_knot (double x, int32_t *ierr=nullptr)
 
virtual void insert_knot (std::vector< double > &x, int32_t *ierr=nullptr)
 insert_knot
 
int32_t comm_size () const override
 
void comm_pack (std::vector< double > &buffer) const override
 comm_pack
 
void comm_expand (std::vector< double > &buffer) override
 comm_expand
 
double mse () const override
 
int32_t core_comm_size () const override
 
void core_comm_pack (std::vector< double > &buffer) const override
 core_comm_pack
 
void core_comm_expand (std::vector< double > &buffer) override
 core_comm_expand
 
void destroy_base () override
 
std::vector< double > x_vector () const
 Deep copy of component 'x' as a std::vector.
 
fxArray< double > x () const
 Zero-copy fxArray view of component 'x'.
 
std::vector< double > y_vector () const
 Deep copy of component 'y' as a std::vector.
 
fxArray< double > y () const
 Zero-copy fxArray view of component 'y'.
 
std::vector< double > sp_vector () const
 Deep copy of component 'sp' as a std::vector.
 
fxArray< double > sp () const
 Zero-copy fxArray view of component 'sp'.
 
std::vector< double > w_vector () const
 Deep copy of component 'w' as a std::vector.
 
fxArray< double > w () const
 Zero-copy fxArray view of component 'w'.
 
std::vector< double > wrk_fou_vector () const
 Deep copy of component 'wrk_fou' as a std::vector.
 
std::array< int64_t, 2 > wrk_fou_shape () const
 Extents of component 'wrk_fou', leading dimension first.
 
fxArray< double > wrk_fou () const
 Zero-copy fxArray view of component 'wrk_fou'.
 
std::vector< double > t_vector () const
 Deep copy of component 't' as a std::vector.
 
fxArray< double > t () const
 Zero-copy fxArray view of component 't'.
 
int32_t & m ()
 
const int32_t & m () const
 
int32_t & order ()
 
const int32_t & order () const
 
double & xleft ()
 
const double & xleft () const
 
double & xright ()
 
const double & xright () const
 
int32_t & nest ()
 
const int32_t & nest () const
 
int32_t & bc ()
 
const int32_t & bc () const
 
int32_t & knots ()
 
const int32_t & knots () const
 
FP_SIZE degree () const
 Spline degree k of the current fit.
 
FP_FLAG new_fit (const std::vector< FP_REAL > &x, const std::vector< FP_REAL > &y, FP_REAL smoothing=1000.0)
 Fit a new curve through (x, y).
 
FP_FLAG new_fit (const std::vector< FP_REAL > &x, const std::vector< FP_REAL > &y, const std::vector< FP_REAL > &w, FP_REAL smoothing=1000.0)
 Fit a new curve through (x, y) with per-point weights w.
 
FP_FLAG fit (FP_SIZE order)
 Refit the current points with a new spline order.
 
FP_FLAG fit (FP_REAL smoothing)
 Refit the current points with a new smoothing.
 
FP_FLAG fit (FP_REAL smoothing, FP_SIZE order)
 Refit the current points with a new smoothing and spline order.
 
FP_FLAG interpolate (FP_SIZE order)
 Interpolating fit of the given spline order.
 
FP_REAL eval (FP_REAL x, FP_FLAG *ierr)
 Evaluate the curve at x, reporting the status through ierr.
 
std::vector< FP_REAL > eval (const std::vector< FP_REAL > &x, FP_FLAG *ierr)
 Evaluate the curve at every x, reporting the status through ierr.
 
std::vector< fpPoint< 2 > > eval (FP_REAL xmin, FP_REAL xmax, FP_SIZE npts, FP_FLAG *ierr=nullptr)
 Evaluate the curve at npts points evenly spaced over [xmin, xmax].
 
FP_REAL ddx (FP_REAL x, FP_SIZE order, FP_FLAG *ierr=nullptr)
 Derivative of the given order at x.
 
std::vector< FP_REAL > ddx (FP_REAL x, FP_FLAG *ierr=nullptr)
 All derivatives (orders 0..k) at x.
 
void set_bc (FP_FLAG value)
 Spline behaviour outside the support (one of the OUTSIDE_* flags).
 
FP_FLAG get_bc () const
 
FP_FLAG fourier (const std::vector< FP_REAL > &alpha, std::vector< FP_REAL > &A, std::vector< FP_REAL > &B)
 Fourier coefficients A, B of the curve at the given angular frequencies.
 
- Public Member Functions inherited from fpFitter
virtual ~fpFitter ()=default
 
const char * fortran_type_name () const
 Return the dynamic Fortran type name of the underlying object.
 
fitpack_fitter_c & c_handle ()
 Get underlying C wrapper (for interop)
 
const fitpack_fitter_c & c_handle () const
 Get underlying C wrapper (const, for interop)
 
std::vector< double > c_vector () const
 Deep copy of component 'c' as a std::vector.
 
fxArray< double > c () const
 Zero-copy fxArray view of component 'c'.
 
std::vector< double > wrk_vector () const
 Deep copy of component 'wrk' as a std::vector.
 
fxArray< double > wrk () const
 Zero-copy fxArray view of component 'wrk'.
 
std::vector< int32_t > iwrk_vector () const
 Deep copy of component 'iwrk' as a std::vector.
 
fxArray< int32_t > iwrk () const
 Zero-copy fxArray view of component 'iwrk'.
 
int32_t & iopt ()
 
const int32_t & iopt () const
 
double & smoothing ()
 
const double & smoothing () const
 
double & fp ()
 
const double & fp () const
 
int32_t & lwrk ()
 
const int32_t & lwrk () const
 
int32_t & liwrk ()
 
const int32_t & liwrk () const
 

Static Public Member Functions

static fpCurve make_view ()
 Construct an empty (non-owning) wrapper, for use as a view target.
 

Protected Member Functions

 fpCurve (NoAlloc tag)
 
- Protected Member Functions inherited from fpFitter
 fpFitter (NoAlloc)
 Protected constructor for derived classes (does not allocate)
 
template<typename T>
T * as ()
 
template<typename T>
const T * as () const
 

Additional Inherited Members

- Protected Attributes inherited from fpFitter
fitpack_fitter_c cobj = fitpack_fitter_c_null
 

Detailed Description

Standalone C++ RAII wrapper for Fortran fitpack_curve.

This class provides automatic memory management (RAII) and a natural C++ API for the underlying Fortran fitpack_curve, without requiring the fortran-arrays library. Array arguments use std::vector<T> for standalone operation. Extends fpFitter (Fortran: extends(fitpack_fitter))

Constructor & Destructor Documentation

◆ fpCurve() [1/6]

fpCurve::fpCurve ( )
inline

Default constructor - allocates new fitpack_curve.

Here is the call graph for this function:

◆ ~fpCurve()

fpCurve::~fpCurve ( )
inlineoverride

Destructor - deallocates if owned.

Here is the call graph for this function:

◆ fpCurve() [2/6]

fpCurve::fpCurve ( const fpCurve & other)
inline

Copy constructor - deep copy.

Here is the call graph for this function:

◆ fpCurve() [3/6]

fpCurve::fpCurve ( fpCurve && other)
inlinenoexcept

Move constructor - transfer ownership.

Here is the call graph for this function:

◆ fpCurve() [4/6]

fpCurve::fpCurve ( fitpack_curve_c & c_wrapper,
bool move = false )
inlineexplicit

Construct from existing C wrapper (takes ownership if move=true)

Here is the call graph for this function:

◆ fpCurve() [5/6]

fpCurve::fpCurve ( fitpack_curve_c & c_wrapper,
ViewTag  )
inlineexplicit

Non-owning view ctor: bit-copy the C handle, mark is_pointer=true. Used by parent classes' polymorphic accessors to wrap a base-class handle as the correct concrete subtype.

Here is the call graph for this function:

◆ fpCurve() [6/6]

fpCurve::fpCurve ( NoAlloc tag)
inlineexplicitprotected
Here is the call graph for this function:

Member Function Documentation

◆ as_parent() [1/2]

fpFitter & fpCurve::as_parent ( )
inline

Upcast to parent type (reference, no copy)

Here is the call graph for this function:

◆ as_parent() [2/2]

const fpFitter & fpCurve::as_parent ( ) const
inline
Here is the call graph for this function:

◆ bc() [1/2]

int32_t & fpCurve::bc ( )
inline
Here is the call graph for this function:

◆ bc() [2/2]

const int32_t & fpCurve::bc ( ) const
inline
Here is the call graph for this function:

◆ c_handle() [1/2]

fitpack_curve_c & fpCurve::c_handle ( )
inline

Get underlying C wrapper (for interop)

Here is the call graph for this function:

◆ c_handle() [2/2]

const fitpack_curve_c & fpCurve::c_handle ( ) const
inline

Get underlying C wrapper (const, for interop)

Here is the call graph for this function:

◆ c_type_name()

const char * fpCurve::c_type_name ( ) const
inlineoverridevirtual

Return the C wrapper struct name for this class (e.g. "fitpack_curve_c").

Reimplemented from fpFitter.

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ comm_expand()

void fpCurve::comm_expand ( std::vector< double > & buffer)
inlineoverridevirtual

comm_expand

Implements fpFitter.

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ comm_pack()

void fpCurve::comm_pack ( std::vector< double > & buffer) const
inlineoverridevirtual

comm_pack

Implements fpFitter.

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ comm_size()

int32_t fpCurve::comm_size ( ) const
inlineoverridevirtual

Implements fpFitter.

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ core_comm_expand()

void fpCurve::core_comm_expand ( std::vector< double > & buffer)
inlineoverridevirtual

core_comm_expand

Reimplemented from fpFitter.

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ core_comm_pack()

void fpCurve::core_comm_pack ( std::vector< double > & buffer) const
inlineoverridevirtual

core_comm_pack

Reimplemented from fpFitter.

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ core_comm_size()

int32_t fpCurve::core_comm_size ( ) const
inlineoverridevirtual

Reimplemented from fpFitter.

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ cpp_type_name()

const char * fpCurve::cpp_type_name ( ) const
inlineoverridevirtual

Return the fully-qualified C++ class name for this class. Owned by the C++ layer — does not round-trip through Fortran.

Reimplemented from fpFitter.

Reimplemented in fpPeriodicCurve.

◆ ddx() [1/2]

std::vector< FP_REAL > fpCurve::ddx ( FP_REAL x,
FP_FLAG * ierr = nullptr )
inline

All derivatives (orders 0..k) at x.

Here is the call graph for this function:

◆ ddx() [2/2]

FP_REAL fpCurve::ddx ( FP_REAL x,
FP_SIZE order,
FP_FLAG * ierr = nullptr )
inline

Derivative of the given order at x.

Note
Not const: the Fortran receiver of curve_derivative is intent(inout).
Here is the call graph for this function:

◆ degree()

FP_SIZE fpCurve::degree ( ) const
inline

Spline degree k of the current fit.

Here is the call graph for this function:

◆ destroy_base()

void fpCurve::destroy_base ( )
inlineoverridevirtual

Reimplemented from fpFitter.

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ dfdx() [1/2]

virtual double fpCurve::dfdx ( double x,
int32_t order,
int32_t * ierr = nullptr )
inlinevirtual

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ dfdx() [2/2]

virtual std::vector< double > fpCurve::dfdx ( std::vector< double > & x,
int32_t order,
int32_t * ierr = nullptr )
inlinevirtual

dfdx

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ dfdx_all() [1/2]

virtual std::vector< double > fpCurve::dfdx_all ( double x,
int32_t & ierr,
int32_t n_result )
inlinevirtual

dfdx_all

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ dfdx_all() [2/2]

virtual std::vector< double > fpCurve::dfdx_all ( double x,
int32_t n_result )
inlinevirtual

dfdx_all

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ eval() [1/7]

std::vector< FP_REAL > fpCurve::eval ( const std::vector< FP_REAL > & x,
FP_FLAG * ierr )
inline

Evaluate the curve at every x, reporting the status through ierr.

Here is the call graph for this function:

◆ eval() [2/7]

virtual double fpCurve::eval ( double x) const
inlinevirtual

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ eval() [3/7]

virtual double fpCurve::eval ( double x,
int32_t & ierr )
inlinevirtual

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ eval() [4/7]

FP_REAL fpCurve::eval ( FP_REAL x,
FP_FLAG * ierr )
inline

Evaluate the curve at x, reporting the status through ierr.

Here is the call graph for this function:

◆ eval() [5/7]

std::vector< fpPoint< 2 > > fpCurve::eval ( FP_REAL xmin,
FP_REAL xmax,
FP_SIZE npts,
FP_FLAG * ierr = nullptr )
inline

Evaluate the curve at npts points evenly spaced over [xmin, xmax].

Returns
The (x, y) pairs, so the result plots without a second array.
Note
npts has no default: eval(x, ierr) with an integer ierr would otherwise be ambiguous against the scalar eval under ISO C++ (gcc accepts it, clang does not).
Here is the call graph for this function:

◆ eval() [6/7]

virtual std::vector< double > fpCurve::eval ( std::vector< double > & x)
inlinevirtual

eval

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ eval() [7/7]

virtual std::vector< double > fpCurve::eval ( std::vector< double > & x,
int32_t & ierr )
inlinevirtual

eval

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ fit() [1/4]

virtual int32_t fpCurve::fit ( double * smoothing = nullptr,
int32_t * order = nullptr,
bool * keep_knots = nullptr )
inlinevirtual

Reimplemented in fpConvexCurve, and fpPeriodicCurve.

Here is the call graph for this function:

◆ fit() [2/4]

FP_FLAG fpCurve::fit ( FP_REAL smoothing)
inline

Refit the current points with a new smoothing.

Here is the call graph for this function:

◆ fit() [3/4]

FP_FLAG fpCurve::fit ( FP_REAL smoothing,
FP_SIZE order )
inline

Refit the current points with a new smoothing and spline order.

Here is the call graph for this function:

◆ fit() [4/4]

FP_FLAG fpCurve::fit ( FP_SIZE order)
inline

Refit the current points with a new spline order.

Here is the call graph for this function:

◆ fourier()

FP_FLAG fpCurve::fourier ( const std::vector< FP_REAL > & alpha,
std::vector< FP_REAL > & A,
std::vector< FP_REAL > & B )
inline

Fourier coefficients A, B of the curve at the given angular frequencies.

Returns
The FITPACK status flag; A and B are resized to match alpha.
Here is the call graph for this function:

◆ fourier_coefficients()

virtual void fpCurve::fourier_coefficients ( std::vector< double > & alpha,
std::vector< double > & a,
std::vector< double > & b,
int32_t * ierr = nullptr )
inlinevirtual

fourier_coefficients

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ get_bc()

FP_FLAG fpCurve::get_bc ( ) const
inline
Here is the call graph for this function:

◆ insert_knot() [1/2]

virtual void fpCurve::insert_knot ( double x,
int32_t * ierr = nullptr )
inlinevirtual

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ insert_knot() [2/2]

virtual void fpCurve::insert_knot ( std::vector< double > & x,
int32_t * ierr = nullptr )
inlinevirtual

insert_knot

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ integral()

virtual double fpCurve::integral ( double from,
double to )
inlinevirtual

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ interpolate() [1/2]

FP_FLAG fpCurve::interpolate ( FP_SIZE order)
inline

Interpolating fit of the given spline order.

Here is the call graph for this function:

◆ interpolate() [2/2]

virtual int32_t fpCurve::interpolate ( int32_t * order = nullptr,
bool * reset_knots = nullptr )
inlinevirtual

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ is_allocated()

bool fpCurve::is_allocated ( ) const
inlineoverridevirtual

Check if object is allocated.

Reimplemented from fpFitter.

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ is_pointer()

bool fpCurve::is_pointer ( ) const
inlineoverridevirtual

Check if this is a non-owning pointer.

Reimplemented from fpFitter.

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ knots() [1/2]

int32_t & fpCurve::knots ( )
inline
Here is the call graph for this function:

◆ knots() [2/2]

const int32_t & fpCurve::knots ( ) const
inline
Here is the call graph for this function:

◆ least_squares()

virtual int32_t fpCurve::least_squares ( double * smoothing = nullptr,
bool * reset_knots = nullptr )
inlinevirtual

Reimplemented in fpConvexCurve, and fpPeriodicCurve.

Here is the call graph for this function:

◆ m() [1/2]

int32_t & fpCurve::m ( )
inline
Here is the call graph for this function:

◆ m() [2/2]

const int32_t & fpCurve::m ( ) const
inline
Here is the call graph for this function:

◆ make_view()

static fpCurve fpCurve::make_view ( )
inlinestatic

Construct an empty (non-owning) wrapper, for use as a view target.

The returned object has a null handle (cptr==nullptr, is_pointer==false) and does NOT allocate a Fortran object. Intended as a fill target for member-view accessors emitted on parent types — the parent populates the handle with c_loc() into its own storage and sets is_pointer=true.

Here is the call graph for this function:

◆ mse()

double fpCurve::mse ( ) const
inlineoverridevirtual

Reimplemented from fpFitter.

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ nest() [1/2]

int32_t & fpCurve::nest ( )
inline
Here is the call graph for this function:

◆ nest() [2/2]

const int32_t & fpCurve::nest ( ) const
inline
Here is the call graph for this function:

◆ new_fit() [1/3]

FP_FLAG fpCurve::new_fit ( const std::vector< FP_REAL > & x,
const std::vector< FP_REAL > & y,
const std::vector< FP_REAL > & w,
FP_REAL smoothing = 1000.0 )
inline

Fit a new curve through (x, y) with per-point weights w.

Here is the call graph for this function:

◆ new_fit() [2/3]

FP_FLAG fpCurve::new_fit ( const std::vector< FP_REAL > & x,
const std::vector< FP_REAL > & y,
FP_REAL smoothing = 1000.0 )
inline

Fit a new curve through (x, y).

Here is the call graph for this function:

◆ new_fit() [3/3]

virtual int32_t fpCurve::new_fit ( std::vector< double > & x,
std::vector< double > & y,
double * w = nullptr,
double * smoothing = nullptr,
int32_t * order = nullptr )
inlinevirtual

new_fit

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

◆ new_points()

virtual void fpCurve::new_points ( std::vector< double > & x,
std::vector< double > & y,
double * w = nullptr )
inlinevirtual

new_points

Reimplemented in fpConvexCurve, and fpPeriodicCurve.

Here is the call graph for this function:

◆ operator=() [1/2]

fpCurve & fpCurve::operator= ( const fpCurve & other)
inline

Copy assignment - deep copy.

Here is the call graph for this function:

◆ operator=() [2/2]

fpCurve & fpCurve::operator= ( fpCurve && other)
inlinenoexcept

Move assignment - transfer ownership.

Here is the call graph for this function:

◆ order() [1/2]

int32_t & fpCurve::order ( )
inline
Here is the call graph for this function:

◆ order() [2/2]

const int32_t & fpCurve::order ( ) const
inline
Here is the call graph for this function:

◆ set_bc()

void fpCurve::set_bc ( FP_FLAG value)
inline

Spline behaviour outside the support (one of the OUTSIDE_* flags).

Here is the call graph for this function:

◆ sp()

fxArray< double > fpCurve::sp ( ) const
inline

Zero-copy fxArray view of component 'sp'.

array_c_from_ptr builds the descriptor from the borrowed pointer and bounds, so the view aliases the Fortran storage directly — nothing is copied and writes through sp()(i) land in the object.

Note
Only available when the Fortran-Arrays library is present and enabled (HAVE_FXARRAY).
Warning
The view is invalidated by any refit, assignment or destroy call on this object; re-read it rather than retaining it.
Here is the call graph for this function:

◆ sp_vector()

std::vector< double > fpCurve::sp_vector ( ) const
inline

Deep copy of component 'sp' as a std::vector.

Returns
An owning copy, empty when the component is unallocated.
Here is the call graph for this function:

◆ t()

fxArray< double > fpCurve::t ( ) const
inline

Zero-copy fxArray view of component 't'.

array_c_from_ptr builds the descriptor from the borrowed pointer and bounds, so the view aliases the Fortran storage directly — nothing is copied and writes through t()(i) land in the object.

Note
Only available when the Fortran-Arrays library is present and enabled (HAVE_FXARRAY).
Warning
The view is invalidated by any refit, assignment or destroy call on this object; re-read it rather than retaining it.
Here is the call graph for this function:

◆ t_vector()

std::vector< double > fpCurve::t_vector ( ) const
inline

Deep copy of component 't' as a std::vector.

Returns
An owning copy, empty when the component is unallocated.
Here is the call graph for this function:

◆ w()

fxArray< double > fpCurve::w ( ) const
inline

Zero-copy fxArray view of component 'w'.

array_c_from_ptr builds the descriptor from the borrowed pointer and bounds, so the view aliases the Fortran storage directly — nothing is copied and writes through w()(i) land in the object.

Note
Only available when the Fortran-Arrays library is present and enabled (HAVE_FXARRAY).
Warning
The view is invalidated by any refit, assignment or destroy call on this object; re-read it rather than retaining it.
Here is the call graph for this function:

◆ w_vector()

std::vector< double > fpCurve::w_vector ( ) const
inline

Deep copy of component 'w' as a std::vector.

Returns
An owning copy, empty when the component is unallocated.
Here is the call graph for this function:

◆ wrk_fou()

fxArray< double > fpCurve::wrk_fou ( ) const
inline

Zero-copy fxArray view of component 'wrk_fou'.

array_c_from_ptr builds the descriptor from the borrowed pointer and bounds, so the view aliases the Fortran storage directly — nothing is copied and writes through wrk_fou()(i, j) land in the object.

Note
Only available when the Fortran-Arrays library is present and enabled (HAVE_FXARRAY).
Warning
The view is invalidated by any refit, assignment or destroy call on this object; re-read it rather than retaining it.
Here is the call graph for this function:

◆ wrk_fou_shape()

std::array< int64_t, 2 > fpCurve::wrk_fou_shape ( ) const
inline

Extents of component 'wrk_fou', leading dimension first.

Returns
All zeros when the component is unallocated.
Here is the call graph for this function:

◆ wrk_fou_vector()

std::vector< double > fpCurve::wrk_fou_vector ( ) const
inline

Deep copy of component 'wrk_fou' as a std::vector.

The rank-2 component is flattened COLUMN-MAJOR (Fortran order): element (i, j, ...) — zero-based — is at index i + j * extents[0] + ... Query the extents with wrk_fou_shape().

Returns
An owning copy, empty when the component is unallocated.
Here is the call graph for this function:

◆ x()

fxArray< double > fpCurve::x ( ) const
inline

Zero-copy fxArray view of component 'x'.

array_c_from_ptr builds the descriptor from the borrowed pointer and bounds, so the view aliases the Fortran storage directly — nothing is copied and writes through x()(i) land in the object.

Note
Only available when the Fortran-Arrays library is present and enabled (HAVE_FXARRAY).
Warning
The view is invalidated by any refit, assignment or destroy call on this object; re-read it rather than retaining it.
Here is the call graph for this function:

◆ x_vector()

std::vector< double > fpCurve::x_vector ( ) const
inline

Deep copy of component 'x' as a std::vector.

Returns
An owning copy, empty when the component is unallocated.
Here is the call graph for this function:

◆ xleft() [1/2]

double & fpCurve::xleft ( )
inline
Here is the call graph for this function:

◆ xleft() [2/2]

const double & fpCurve::xleft ( ) const
inline
Here is the call graph for this function:

◆ xright() [1/2]

double & fpCurve::xright ( )
inline
Here is the call graph for this function:

◆ xright() [2/2]

const double & fpCurve::xright ( ) const
inline
Here is the call graph for this function:

◆ y()

fxArray< double > fpCurve::y ( ) const
inline

Zero-copy fxArray view of component 'y'.

array_c_from_ptr builds the descriptor from the borrowed pointer and bounds, so the view aliases the Fortran storage directly — nothing is copied and writes through y()(i) land in the object.

Note
Only available when the Fortran-Arrays library is present and enabled (HAVE_FXARRAY).
Warning
The view is invalidated by any refit, assignment or destroy call on this object; re-read it rather than retaining it.
Here is the call graph for this function:

◆ y_vector()

std::vector< double > fpCurve::y_vector ( ) const
inline

Deep copy of component 'y' as a std::vector.

Returns
An owning copy, empty when the component is unallocated.
Here is the call graph for this function:

◆ zeros()

virtual std::vector< double > fpCurve::zeros ( int32_t max_size,
int32_t * ierr = nullptr )
inlinevirtual

zeros

Reimplemented in fpPeriodicCurve.

Here is the call graph for this function:

The documentation for this class was generated from the following file: