Changelog

All notable changes to Cocoa will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

[Unreleased]

Added

  • N/A

Changed

  • Asynchronous I/O is now always on. Output is delivered on a background writer thread and meteorological input is pre-read ahead of need, overlapping file access with computation in every run. MPI is initialized with MPI_THREAD_FUNNELED to support this; a run aborts at startup if the MPI build cannot provide it.

Deprecated

  • N/A

Removed

  • The --asyncio command-line flag and its modes. Asynchronous output is now unconditional, so there is no mode to select. The dedicated-MPI-I/O-rank mode (--asyncio=mpi) has been removed; all ranks now participate in computation.

Fixed

  • N/A

Security

  • N/A

Migration Guide

Migrating from ADCIRC

Converting Mesh Files

Cocoa uses NetCDF format for mesh files instead of ADCIRC’s fort.14/fort.13 format. A conversion script is provided in the utils directory:

python utils/convert_adcirc_format.py \
    --mesh fort.14 \
    --attributes fort.13 \
    --output mesh.nc

Arguments:

  • --mesh: ADCIRC mesh file (fort.14) - required

  • --attributes: ADCIRC nodal attributes file (fort.13) - optional

  • --output: Output NetCDF file path - required

Configuration Files

Cocoa uses YAML configuration files instead of ADCIRC’s fort.15 format. Key differences:

ADCIRC Parameter

Cocoa Equivalent

DT

simulation.time_step

TAU0

physics.tau0

STATIM

simulation.start_time

RNDAY

simulation.end_time

Note

In ADCIRC, a negative TAU0 value triggers spatially-varying computation. In Cocoa, tau0 must always be a positive constant value.

Example conversion:

ADCIRC fort.15:

DT = 2.0
TAU0 = 0.005
RNDAY = 1.0

Cocoa YAML:

simulation:
  time_step: 2s
  start_time: 2025-01-01
  end_time: 2025-01-02

physics:
  tau0: 0.005