OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
openswmm::xsect_batch Namespace Reference

Functions

void area_circular (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT a_full, double *OPENSWMM_RESTRICT area, int count)
 Batch area for CIRCULAR/FORCE_MAIN — lookup table interpolation.
 
void area_rect (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT w_max, double *OPENSWMM_RESTRICT area, int count)
 Batch area for RECT_CLOSED / RECT_OPEN: area = depth * w_max.
 
void area_trapezoidal (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_bot, const double *OPENSWMM_RESTRICT s_bot, double *OPENSWMM_RESTRICT area, int count)
 Batch area for TRAPEZOIDAL: area = (y_bot + s_bot * depth) * depth.
 
void area_triangular (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT s_bot, double *OPENSWMM_RESTRICT area, int count)
 Batch area for TRIANGULAR: area = s_bot * depth^2.
 
void area_parabolic (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT r_bot, double *OPENSWMM_RESTRICT area, int count)
 Batch area for PARABOLIC: area = (4/3) * r_bot * depth^(3/2).
 
void area_powerfunc (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT s_bot, const double *OPENSWMM_RESTRICT r_bot, double *OPENSWMM_RESTRICT area, int count)
 Batch area for POWERFUNC: area = r_bot * depth^(s_bot+1).
 
void area_tabulated (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT a_full, const double *table, int table_size, double *OPENSWMM_RESTRICT area, int count)
 Batch area for any tabulated shape (egg, horseshoe, arch, ellipse, etc.).
 
void area_inv_tabulated (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT a_full, const double *table, int table_size, double *OPENSWMM_RESTRICT area, int count)
 Batch area for shapes using invLookup (gothic, catenary, semielliptical, semicircular).
 
void hydrad_circular (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT r_full, double *OPENSWMM_RESTRICT hydrad, int count)
 
void hydrad_trapezoidal (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_bot, const double *OPENSWMM_RESTRICT s_bot, const double *OPENSWMM_RESTRICT r_bot, double *OPENSWMM_RESTRICT hydrad, int count)
 
void hydrad_triangular (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT s_bot, const double *OPENSWMM_RESTRICT r_bot, double *OPENSWMM_RESTRICT hydrad, int count)
 
void hydrad_rect (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT w_max, double *OPENSWMM_RESTRICT hydrad, int count)
 
void hydrad_tabulated (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT r_full, const double *table, int table_size, double *OPENSWMM_RESTRICT hydrad, int count)
 
void width_circular (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT w_max, double *OPENSWMM_RESTRICT width, int count)
 
void width_trapezoidal (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_bot, const double *OPENSWMM_RESTRICT s_bot, double *OPENSWMM_RESTRICT width, int count)
 
void width_triangular (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT s_bot, double *OPENSWMM_RESTRICT width, int count)
 
void width_rect (const double *OPENSWMM_RESTRICT w_max, double *OPENSWMM_RESTRICT width, int count)
 
void width_tabulated (const double *OPENSWMM_RESTRICT depth, const double *OPENSWMM_RESTRICT y_full, const double *OPENSWMM_RESTRICT w_max, const double *table, int table_size, double *OPENSWMM_RESTRICT width, int count)
 

Function Documentation

◆ area_circular()

void openswmm::xsect_batch::area_circular ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  y_full,
const double *OPENSWMM_RESTRICT  a_full,
double *OPENSWMM_RESTRICT  area,
int  count 
)

Batch area for CIRCULAR/FORCE_MAIN — lookup table interpolation.

For each element i: area[i] = a_full[i] * lookup(depth[i]/y_full[i]). The inner loop is written for auto-vectorisation (no branches, no function calls except for the quadratic refinement at small depths).

Here is the caller graph for this function:

◆ area_inv_tabulated()

void openswmm::xsect_batch::area_inv_tabulated ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  y_full,
const double *OPENSWMM_RESTRICT  a_full,
const double *  table,
int  table_size,
double *OPENSWMM_RESTRICT  area,
int  count 
)

Batch area for shapes using invLookup (gothic, catenary, semielliptical, semicircular).

Here is the call graph for this function:
Here is the caller graph for this function:

◆ area_parabolic()

void openswmm::xsect_batch::area_parabolic ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  r_bot,
double *OPENSWMM_RESTRICT  area,
int  count 
)

Batch area for PARABOLIC: area = (4/3) * r_bot * depth^(3/2).

Here is the caller graph for this function:

◆ area_powerfunc()

void openswmm::xsect_batch::area_powerfunc ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  s_bot,
const double *OPENSWMM_RESTRICT  r_bot,
double *OPENSWMM_RESTRICT  area,
int  count 
)

Batch area for POWERFUNC: area = r_bot * depth^(s_bot+1).

Here is the caller graph for this function:

◆ area_rect()

void openswmm::xsect_batch::area_rect ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  w_max,
double *OPENSWMM_RESTRICT  area,
int  count 
)

Batch area for RECT_CLOSED / RECT_OPEN: area = depth * w_max.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ area_tabulated()

void openswmm::xsect_batch::area_tabulated ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  y_full,
const double *OPENSWMM_RESTRICT  a_full,
const double *  table,
int  table_size,
double *OPENSWMM_RESTRICT  area,
int  count 
)

Batch area for any tabulated shape (egg, horseshoe, arch, ellipse, etc.).

Here is the caller graph for this function:

◆ area_trapezoidal()

void openswmm::xsect_batch::area_trapezoidal ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  y_bot,
const double *OPENSWMM_RESTRICT  s_bot,
double *OPENSWMM_RESTRICT  area,
int  count 
)

Batch area for TRAPEZOIDAL: area = (y_bot + s_bot * depth) * depth.

Here is the caller graph for this function:

◆ area_triangular()

void openswmm::xsect_batch::area_triangular ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  s_bot,
double *OPENSWMM_RESTRICT  area,
int  count 
)

Batch area for TRIANGULAR: area = s_bot * depth^2.

Here is the caller graph for this function:

◆ hydrad_circular()

void openswmm::xsect_batch::hydrad_circular ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  y_full,
const double *OPENSWMM_RESTRICT  r_full,
double *OPENSWMM_RESTRICT  hydrad,
int  count 
)
Here is the caller graph for this function:

◆ hydrad_rect()

void openswmm::xsect_batch::hydrad_rect ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  w_max,
double *OPENSWMM_RESTRICT  hydrad,
int  count 
)
Here is the caller graph for this function:

◆ hydrad_tabulated()

void openswmm::xsect_batch::hydrad_tabulated ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  y_full,
const double *OPENSWMM_RESTRICT  r_full,
const double *  table,
int  table_size,
double *OPENSWMM_RESTRICT  hydrad,
int  count 
)
Here is the caller graph for this function:

◆ hydrad_trapezoidal()

void openswmm::xsect_batch::hydrad_trapezoidal ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  y_bot,
const double *OPENSWMM_RESTRICT  s_bot,
const double *OPENSWMM_RESTRICT  r_bot,
double *OPENSWMM_RESTRICT  hydrad,
int  count 
)
Here is the caller graph for this function:

◆ hydrad_triangular()

void openswmm::xsect_batch::hydrad_triangular ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  s_bot,
const double *OPENSWMM_RESTRICT  r_bot,
double *OPENSWMM_RESTRICT  hydrad,
int  count 
)
Here is the caller graph for this function:

◆ width_circular()

void openswmm::xsect_batch::width_circular ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  y_full,
const double *OPENSWMM_RESTRICT  w_max,
double *OPENSWMM_RESTRICT  width,
int  count 
)
Here is the caller graph for this function:

◆ width_rect()

void openswmm::xsect_batch::width_rect ( const double *OPENSWMM_RESTRICT  w_max,
double *OPENSWMM_RESTRICT  width,
int  count 
)
Here is the caller graph for this function:

◆ width_tabulated()

void openswmm::xsect_batch::width_tabulated ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  y_full,
const double *OPENSWMM_RESTRICT  w_max,
const double *  table,
int  table_size,
double *OPENSWMM_RESTRICT  width,
int  count 
)
Here is the caller graph for this function:

◆ width_trapezoidal()

void openswmm::xsect_batch::width_trapezoidal ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  y_bot,
const double *OPENSWMM_RESTRICT  s_bot,
double *OPENSWMM_RESTRICT  width,
int  count 
)
Here is the caller graph for this function:

◆ width_triangular()

void openswmm::xsect_batch::width_triangular ( const double *OPENSWMM_RESTRICT  depth,
const double *OPENSWMM_RESTRICT  s_bot,
double *OPENSWMM_RESTRICT  width,
int  count 
)
Here is the caller graph for this function: