.. _arvor: ARVOR (Profiling Floats) ======================== This utility converts in-situ profiling float (T/S profile) ASCII files into a DART observation sequence (`obs_seq`) file. .. contents:: :depth: 2 :local: Overview -------- Profiling floats such as ARVOR-C and ARVOR-I (ice-capable) record seawater temperature and salinity at multiple depths during dives and ascents. This converter ingests ASCII (.csv format) files of these profiles and writes them into a DART obs_seq format for assimilation with DART. The csv files are expected to have on the first line a header with different fields names followed by data entries. The converter reads the following from the raw data: * ``dat`` -- timestamp * ``lat`` -- latitude in degrees * ``lon`` -- longitude in degrees * ``pres`` -- pressure in dbar converted to depth in meters * ``sea_water_temperature`` -- temperature in Kelvin, converted to C. * ``salinity`` -- salinity in psu .. note:: **Time handling:** The converter reads the ``dat`` column, parses the timestamp, and constructs a DART ``time_type`` using the Gregorian calendar. The expected time format is ``YYYY-MM-DDThh:mm:ssZ`` Build & Run ----------- Build as usual with DART converters. Then run, ``./arvor_to_hf``, with an `input.nml` that includes a namelist section that looks like: .. code-block:: fortran &arvor_to_obs_nml file_in = 'ARVOR_20251006_300534063313500.csv', file_list = '', ! path to list of files (or '') file_out = 'obs_seq.arvor', obs_error_temp = 0.02, ! temperature error standard deviation (C) obs_error_sal = 0.02, ! salinity error standard deviation (PSU) avg_obs_per_file = 500000, ! pre-allocation limit debug = .true. / * Exactly one of `file_in` or `file_list` must be non-empty. * Temperature values in the raw file are in Kelvin and are converted to degrees Celsius. * Pressure values (dbar) are converted to depth in meters (+ down). * Any missing values or bad rows (`lat`, `lon`, `pres`, `temp`, or `saln` = missing) are skipped. * Observation kinds: `FLOAT_TEMPERATURE` and `FLOAT_SALINITY`. Namelist Summary **************** .. list-table:: :header-rows: 1 :widths: 20 10 25 45 * - **Namelist item** - **Type** - **Default / Allowed values** - **Description** * - ``file_in`` - character(len=256) - ``''`` (empty) - Path to single ASCII profile file. * - ``file_list`` - character(len=256) - ``''`` (empty) - Text file listing profile files. * - ``file_out`` - character(len=256) - ``'obs_seq.arvor'`` - Output obs_seq file name. * - ``obs_error_temp`` - real(r8) - ``0.02`` - Standard deviation error for temperature. * - ``obs_error_sal`` - real(r8) - ``0.02`` - Standard deviation error for salinity. * - ``avg_obs_per_file`` - integer - ``500000`` - Estimate of valid obs per file. Used 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 conversion log. Output ------ A new observation sequence file named according to `file_out`. Each observation record includes location (lat, lon, depth), time, and one of the two kinds (temperature or salinity), with error variance set to the square of `obs_error_temp` or `obs_error_sal`. If ``debug = .true.``, a summary will be printed (similar to the one below): .. code-block:: text Input file: #2 T_HCSV00_C_BMKG_20251006061000_ARVORC_300534063012970.csv >> Total number of obs: 25 >> Valid observations count: 24 * obs # 1, lat: -5.7368, lon: 113.8890, dep: 65.0270, T: 28.6840, S: 33.9690, date: 2025 Oct 06 06:10:00 * obs # 2, lat: -5.7368, lon: 113.8890, dep: 62.2036, T: 28.6840, S: 33.9680, date: 2025 Oct 06 06:11:05 * obs # 3, lat: -5.7368, lon: 113.8890, dep: 59.3703, T: 28.6840, S: 33.9680, date: 2025 Oct 06 06:12:10 * obs # 4, lat: -5.7368, lon: 113.8890, dep: 56.5468, T: 28.6840, S: 33.9680, date: 2025 Oct 06 06:13:15 * obs # 5, lat: -5.7368, lon: 113.8890, dep: 53.7233, T: 28.6840, S: 33.9680, date: 2025 Oct 06 06:14:20 * obs # 6, lat: -5.7368, lon: 113.8890, dep: 50.8898, T: 28.6840, S: 33.9680, date: 2025 Oct 06 06:15:25 * obs # 7, lat: -5.7368, lon: 113.8890, dep: 48.0663, T: 28.6840, S: 33.9680, date: 2025 Oct 06 06:16:30 ... > Ready to write 286 observations: write_obs_seq opening formatted observation sequence file "obs_seq.arvor" write_obs_seq closed observation sequence file "obs_seq.arvor" arvor_to_obs Finished successfully. Further reading --------------- For background on the observing platform supported by this converter: * `Argo Program: `_ *"Float types"* -- Official overview of the various Argo float families, including ARVOR, PROVOR, and DEEP-Arvor. * `Le Reste et al. (2016): `_ *"Deep-Arvor: A new profiling float to extend the Argo observations to 4000 m"* -- Detailed design and performance study of the deep variant of the ARVOR float. * `NKE Instrumentation: `_ *"Profiling floats"* -- Manufacturer specifications for the ARVOR and PROVOR families (pressure range, sensors, telemetry).