Contour plotting algorithms module
This module implements the marching squares algorithm and related functions for contour line extraction and rendering.
Calculate marching squares configuration for a cell
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | z1 | |||
| real(kind=wp), | intent(in) | :: | z2 | |||
| real(kind=wp), | intent(in) | :: | z3 | |||
| real(kind=wp), | intent(in) | :: | z4 | |||
| real(kind=wp), | intent(in) | :: | level | |||
| integer, | intent(out) | :: | config | 
Extract contour lines from a cell using marching squares
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | config | |||
| real(kind=wp), | intent(in) | :: | x1 | |||
| real(kind=wp), | intent(in) | :: | y1 | |||
| real(kind=wp), | intent(in) | :: | x2 | |||
| real(kind=wp), | intent(in) | :: | y2 | |||
| real(kind=wp), | intent(in) | :: | x3 | |||
| real(kind=wp), | intent(in) | :: | y3 | |||
| real(kind=wp), | intent(in) | :: | x4 | |||
| real(kind=wp), | intent(in) | :: | y4 | |||
| real(kind=wp), | intent(in) | :: | z1 | |||
| real(kind=wp), | intent(in) | :: | z2 | |||
| real(kind=wp), | intent(in) | :: | z3 | |||
| real(kind=wp), | intent(in) | :: | z4 | |||
| real(kind=wp), | intent(in) | :: | level | |||
| real(kind=wp), | intent(out) | :: | line_points(8) | |||
| integer, | intent(out) | :: | num_lines | 
Interpolate the positions where contour crosses cell edges
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(in) | :: | x1 | |||
| real(kind=wp), | intent(in) | :: | y1 | |||
| real(kind=wp), | intent(in) | :: | x2 | |||
| real(kind=wp), | intent(in) | :: | y2 | |||
| real(kind=wp), | intent(in) | :: | x3 | |||
| real(kind=wp), | intent(in) | :: | y3 | |||
| real(kind=wp), | intent(in) | :: | x4 | |||
| real(kind=wp), | intent(in) | :: | y4 | |||
| real(kind=wp), | intent(in) | :: | z1 | |||
| real(kind=wp), | intent(in) | :: | z2 | |||
| real(kind=wp), | intent(in) | :: | z3 | |||
| real(kind=wp), | intent(in) | :: | z4 | |||
| real(kind=wp), | intent(in) | :: | level | |||
| real(kind=wp), | intent(out) | :: | xa | |||
| real(kind=wp), | intent(out) | :: | ya | |||
| real(kind=wp), | intent(out) | :: | xb | |||
| real(kind=wp), | intent(out) | :: | yb | |||
| real(kind=wp), | intent(out) | :: | xc | |||
| real(kind=wp), | intent(out) | :: | yc | |||
| real(kind=wp), | intent(out) | :: | xd | |||
| real(kind=wp), | intent(out) | :: | yd | 
Apply marching squares lookup table to get line segments
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | config | |||
| real(kind=wp), | intent(in) | :: | xa | |||
| real(kind=wp), | intent(in) | :: | ya | |||
| real(kind=wp), | intent(in) | :: | xb | |||
| real(kind=wp), | intent(in) | :: | yb | |||
| real(kind=wp), | intent(in) | :: | xc | |||
| real(kind=wp), | intent(in) | :: | yc | |||
| real(kind=wp), | intent(in) | :: | xd | |||
| real(kind=wp), | intent(in) | :: | yd | |||
| real(kind=wp), | intent(out) | :: | line_points(8) | |||
| integer, | intent(out) | :: | num_lines |