Sentinel-NaN the exchange-covered ghost bands of all multilayer prognostic fields and the BT workstate fields. Called at the TOP of each outer step (before any exchange or kernel) so that any kernel consuming an unexchanged ghost produces a loud NaN at the offending step.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(hgrid_t), | intent(in) | :: | grid |
Horizontal grid (carries nx_total, ny_total, nx_phys, ny_phys, nghost). |
||
| type(multilayer_state_t), | intent(inout) | :: | ms |
Multilayer C-grid state whose exchange-covered ghost bands are poisoned. |
||
| type(barotropic_workstate_t), | intent(inout) | :: | bt_work |
BT workstate whose exchange-covered ghost bands are poisoned. |
||
| type(ocean_surface_stress_t), | intent(inout) | :: | ss |
Surface-stress slot. Its |
||
| logical, | intent(in) | :: | poison_w |
Poison west ghost band. |
||
| logical, | intent(in) | :: | poison_e |
Poison east ghost band. |
||
| logical, | intent(in) | :: | poison_s |
Poison south ghost band. |
||
| logical, | intent(in) | :: | poison_n |
Poison north ghost band. |
Poison centre-type 2D ghost bands.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(inout) | :: | fld(nxl+2*ng,nyl+2*ng) | |||
| integer, | intent(in) | :: | nxl | |||
| integer, | intent(in) | :: | nyl | |||
| integer, | intent(in) | :: | ng | |||
| real(kind=wp), | intent(in) | :: | qnan | |||
| logical, | intent(in) | :: | pw | |||
| logical, | intent(in) | :: | pe | |||
| logical, | intent(in) | :: | ps | |||
| logical, | intent(in) | :: | pn |
Poison centre-type 3D ghost bands.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(inout) | :: | fld(nxl+2*ng,nyl+2*ng,nz) | |||
| integer, | intent(in) | :: | nxl | |||
| integer, | intent(in) | :: | nyl | |||
| integer, | intent(in) | :: | ng | |||
| integer, | intent(in) | :: | nz | |||
| real(kind=wp), | intent(in) | :: | qnan | |||
| logical, | intent(in) | :: | pw | |||
| logical, | intent(in) | :: | pe | |||
| logical, | intent(in) | :: | ps | |||
| logical, | intent(in) | :: | pn |
Poison x-face 2D ghost bands. fld has shape (nx_total+1, ny_total) = (nxl+2ng+1, nyl+2ng). NEVER poison i = ng+1 (west seam face) or i = ng+nxl+1 (east seam face): these carry ownership/wrap-direction asymmetries that make it unsafe to overwrite them. West ghost faces: i = 1..ng. East ghost faces: i = ng+nxl+2..nx_face. Y-bands centre-type.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(inout) | :: | fld(nxl+2*ng+1,nyl+2*ng) | |||
| integer, | intent(in) | :: | nxl | |||
| integer, | intent(in) | :: | nyl | |||
| integer, | intent(in) | :: | ng | |||
| real(kind=wp), | intent(in) | :: | qnan | |||
| logical, | intent(in) | :: | pw | |||
| logical, | intent(in) | :: | pe | |||
| logical, | intent(in) | :: | ps | |||
| logical, | intent(in) | :: | pn |
Poison x-face 3D ghost bands. Seam-face exclusion: see poison_face_x_2d.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(inout) | :: | fld(nxl+2*ng+1,nyl+2*ng,nz) | |||
| integer, | intent(in) | :: | nxl | |||
| integer, | intent(in) | :: | nyl | |||
| integer, | intent(in) | :: | ng | |||
| integer, | intent(in) | :: | nz | |||
| real(kind=wp), | intent(in) | :: | qnan | |||
| logical, | intent(in) | :: | pw | |||
| logical, | intent(in) | :: | pe | |||
| logical, | intent(in) | :: | ps | |||
| logical, | intent(in) | :: | pn |
Poison y-face 2D ghost bands. fld has shape (nx_total, ny_total+1) = (nxl+2ng, nyl+2ng+1). NEVER poison j = ng+1 (south seam face) or j = ng+nyl+1 (north seam face). South ghost faces: j = 1..ng. North ghost faces: j = ng+nyl+2..ny_face. X-bands are centre-type: i = 1..ng and i = ng+nxl+1..nx_total.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(inout) | :: | fld(nxl+2*ng,nyl+2*ng+1) | |||
| integer, | intent(in) | :: | nxl | |||
| integer, | intent(in) | :: | nyl | |||
| integer, | intent(in) | :: | ng | |||
| real(kind=wp), | intent(in) | :: | qnan | |||
| logical, | intent(in) | :: | pw | |||
| logical, | intent(in) | :: | pe | |||
| logical, | intent(in) | :: | ps | |||
| logical, | intent(in) | :: | pn |
Poison y-face 3D ghost bands. Seam-face exclusion: see poison_face_y_2d.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=wp), | intent(inout) | :: | fld(nxl+2*ng,nyl+2*ng+1,nz) | |||
| integer, | intent(in) | :: | nxl | |||
| integer, | intent(in) | :: | nyl | |||
| integer, | intent(in) | :: | ng | |||
| integer, | intent(in) | :: | nz | |||
| real(kind=wp), | intent(in) | :: | qnan | |||
| logical, | intent(in) | :: | pw | |||
| logical, | intent(in) | :: | pe | |||
| logical, | intent(in) | :: | ps | |||
| logical, | intent(in) | :: | pn |