PISM, A Parallel Ice Sheet Model  stable v2.1.1 committed by Constantine Khrulev on 2024-12-04 13:36:58 -0900

◆ compute_node_types()

void pism::compute_node_types ( const array::Scalar1 ice_thickness,
double  thickness_threshold,
array::Scalar result 
)

Identify node types of all the nodes (grid points).

Uses width=1 ghosts of ice_thickness (a "box" stencil).

A node is can be interior, boundary, or exterior.

An element is considered icy if at least three of its nodes have ice thickness above thickness_threshold.

A node is considered interior if all of the elements it belongs to are icy.

A node is considered boundary if it is not interior and at least one element it belongs to is icy.

A node is considered exterior if it is neither interior nor boundary.

Now an element "face" (side) is a part of a boundary if and only if both of its nodes are boundary nodes.

Cell layout:

(i-1,j+1) +-------N--------+ (i+1,j+1)
| | |
| NW | NE |
| | |
W-----(i,j)------E
| | |
| SW | SE |
| | |
(i-1,j-1) +-------S--------+ (i+1,j-1)
static double S(unsigned n)
Definition: test_cube.c:58

Definition at line 62 of file node_types.cc.

References pism::array::Array2D< T >::box(), pism::ParallelSection::check(), pism::ParallelSection::failed(), pism::array::Array::grid(), pism::mask::icy(), NODE_BOUNDARY, NODE_EXTERIOR, NODE_INTERIOR, and pism::array::Array::update_ghosts().

Referenced by pism::stressbalance::SSAFEM::cache_inputs().