.. _svp: === SVP === This utility converts **Surface Velocity Program (SVP)** drifter data (SST + surface currents) into a DART observation sequence (``obs_seq``) file. .. contents:: :depth: 2 :local: Overview -------- SVP drifters measure near-surface ocean temperature and currents. For the InaCAWO project, BMKG/Baron provide ASCII (CSV-like) files with: - Header line of field names - One row per surface observation time The converter reads: - ``dat`` – timestamp - ``lat`` – latitude (degrees) - ``lon`` – longitude (degrees) - ``sea_temperature`` – SST (Kelvin; converted to C) - ``u`` / ``v`` – eastward / northward surface velocity (m/s) Each valid row becomes up to three DART observations at the surface (``VERTISSURFACE``): ``DRIFTER_TEMPERATURE``, ``DRIFTER_U_CURRENT_COMPONENT``, ``DRIFTER_V_CURRENT_COMPONENT`` .. note:: **Time handling:** The converter reads the ``dat`` column, parses the timestamp, and constructs a DART ``time_type`` in the Gregorian calendar. Expected format: ``YYYY-MM-DDThh:mm:ssZ`` Build & run ----------- Build like other DART converters, then run with an ``input.nml`` that includes ``svp_to_obs_nml``: .. code-block:: bash ./svp_to_obs The program writes a single output sequence defined by ``file_out``. Namelist ******** This namelist is added to ``input.nml``: .. code-block:: fortran &svp_to_obs_nml file_in = '' ! single ASCII file (or '') file_list = '' ! text file of paths (or '') file_out = 'obs_seq.svp', ! output obs_seq file obs_error_sst = 0.20_r8, ! SST error (C) obs_error_vel = 0.10_r8, ! U/V error (m/s) avg_obs_per_file = 500000, ! pre-allocation limit debug = .true. / .. list-table:: :header-rows: 1 :widths: 22 12 23 43 * - **Namelist item** - **Type** - **Default** - **Description** * - ``file_in`` - character(len=256) - ``''`` (empty) - Path to a single SVP ASCII input file. Mutually exclusive with ``file_list``. * - ``file_list`` - character(len=256) - ``''`` (empty) - Text file listing SVP ASCII files, one per line. Use instead of ``file_in`` for batches. * - ``file_out`` - character(len=256) - ``'obs_seq.svp'`` - Name of the DART output observation sequence file. Overwritten if it exists. * - ``obs_error_sst`` - real(r8) - ``0.20_r8`` - Observation error standard deviation for SST (in °C). * - ``obs_error_vel`` - real(r8) - ``0.10_r8`` - Observation error standard deviation for U and V (in m/s). * - ``avg_obs_per_file`` - integer - ``500000`` - Estimated number of valid observations per input file. Used only for pre-allocation. Number of files times this number must be larger than the total number of output observations. * - ``debug`` - logical - ``.true.`` - If true, prints detailed information for each file and observation. Output ------ A new observation sequence file named according to `file_out`. Each observation record includes location (lat, lon), time, and one of the three kinds (SST, U, or V), with error variance set to the square of `obs_error_sst` or `obs_error_vel`. With ``debug = .true.``, the converter prints a summary of accepted/filtered observations for each input file. .. code-block:: text Output file: obs_seq.svp exists. Replacing it ... Input file: #1 T_HCSV00_C_BMKG_20251006000000_SVP_300534064005670.csv * lat: 0.4730, lon: 43.3212, SST: 26.1200, U: -0.0062, V: -0.0061, date: 2025 Oct 06 00:00:00 Input file: #2 T_HCSV00_C_BMKG_20251006010000_SVP_300534064005670.csv * lat: 0.4732, lon: 43.3212, SST: 26.0100, U: 0.0000, V: 0.0061, date: 2025 Oct 06 01:00:00 Input file: #3 T_HCSV00_C_BMKG_20251006020000_SVP_300534064005670.csv * lat: 0.4730, lon: 43.3214, SST: 26.0400, U: 0.0062, V: -0.0061, date: 2025 Oct 06 02:00:00 Input file: #4 T_HCSV00_C_BMKG_20251006030000_SVP_300534064005670.csv * lat: 0.4732, lon: 43.3214, SST: 26.1400, U: 0.0000, V: 0.0061, date: 2025 Oct 06 03:00:00 Input file: #5 T_HCSV00_C_BMKG_20251006040000_SVP_300534064005670.csv * lat: 0.4730, lon: 43.3214, SST: 26.3300, U: 0.0000, V: -0.0061, date: 2025 Oct 06 04:00:00 ... > Ready to write 72 observations: write_obs_seq opening formatted observation sequence file "obs_seq.svp" write_obs_seq closed observation sequence file "obs_seq.svp" svp_to_obs Finished successfully. Further reading --------------- For background on the observing platform supported by this converter: * `Global Drifter Program (GDP): `_ *"SVP drifter overview"* -- NOAA and Scripps-maintained description of the standard SVP and SVP-B drifters used globally. * `Lumpkin & Pazos (2007): `_ *"Measuring surface currents with Surface Velocity Program drifters"* -- Classic technical paper detailing instrument design, calibration, and data characteristics. * `Ocean Observers: `_ *"Drifting buoys (DBCP)"* -- General introduction to the international drifter network and its coordination under WMO/IOC.