{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Pfs file\n", "FMDAp can read DA pfs files and gives convenient access to the settings of several sections." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "tags": [] }, "outputs": [], "source": [ "import fmdap" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "pfs_file = '../tests/testdata/OresundHD2D_EnKF10/OresundHD2D_EnKF10.m21fm'\n", "pfs = fmdap.Pfs(pfs_file)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['TIME',\n", " 'METHOD',\n", " 'MODEL_ERROR_MODEL',\n", " 'MODEL_STATE_SPACE',\n", " 'MEASUREMENTS',\n", " 'ESTIMATOR',\n", " 'ERRCOV_IO',\n", " 'ENSEMBLE_IO',\n", " 'DIAGNOSTICS']" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pfs.sections" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "{'type': 1, 'ensemble_size': 10, 'rfactor_relative': 2}" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pfs.METHOD" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
includetypen_boundsbound_codest_devperturbation_typepropagation_typepropagation_parameterinitialization_typehorizontal_discretization_typehorizontal_corr_functionhorizontal_corrhorizontal_grid_spacing
11wlbc120.03additiveAR(1)1080001170000NaN
21wlbc130.03additiveAR(1)1440002112000020000
\n", "
" ], "text/plain": [ " include type n_bounds bound_code st_dev perturbation_type propagation_type \\\n", "1 1 wlbc 1 2 0.03 additive AR(1) \n", "2 1 wlbc 1 3 0.03 additive AR(1) \n", "\n", " propagation_parameter initialization_type horizontal_discretization_type \\\n", "1 10800 0 1 \n", "2 14400 0 2 \n", "\n", " horizontal_corr_function horizontal_corr horizontal_grid_spacing \n", "1 1 70000 NaN \n", "2 1 120000 20000 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pfs.model_errors" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
includenamemeasured_variablefile_namedata_offsetitem_numberpositioncoordinate_typetype_time_interpolationst_dev
11Vikenwater level..\\obs\\smhi_2228_viken.dfs00.31[12.5817, 56.128]LONG/LAT10.02
22Drogdenwater level..\\obs\\dmi_30357_Drogden_Fyr_cleaned.dfs00.251[12.7113, 55.5364]LONG/LAT00.02
31Klagshamnwater level..\\obs\\smhi_2095_klagshamn.dfs00.181[12.89106996, 55.5165157]LONG/LAT00.02
42Barsebaeckwater level..\\obs\\smhi_2099_barsebaeck.dfs00.281[12.90155524, 55.75885144]LONG/LAT00.02
\n", "
" ], "text/plain": [ " include name measured_variable \\\n", "1 1 Viken water level \n", "2 2 Drogden water level \n", "3 1 Klagshamn water level \n", "4 2 Barsebaeck water level \n", "\n", " file_name data_offset item_number \\\n", "1 ..\\obs\\smhi_2228_viken.dfs0 0.3 1 \n", "2 ..\\obs\\dmi_30357_Drogden_Fyr_cleaned.dfs0 0.25 1 \n", "3 ..\\obs\\smhi_2095_klagshamn.dfs0 0.18 1 \n", "4 ..\\obs\\smhi_2099_barsebaeck.dfs0 0.28 1 \n", "\n", " position coordinate_type type_time_interpolation st_dev \n", "1 [12.5817, 56.128] LONG/LAT 1 0.02 \n", "2 [12.7113, 55.5364] LONG/LAT 0 0.02 \n", "3 [12.89106996, 55.5165157] LONG/LAT 0 0.02 \n", "4 [12.90155524, 55.75885144] LONG/LAT 0 0.02 " ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pfs.measurements" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xy
name
Viken12.58170056.128000
Drogden12.71130055.536400
Klagshamn12.89107055.516516
Barsebaeck12.90155555.758851
\n", "
" ], "text/plain": [ " x y\n", "name \n", "Viken 12.581700 56.128000\n", "Drogden 12.711300 55.536400\n", "Klagshamn 12.891070 55.516516\n", "Barsebaeck 12.901555 55.758851" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pfs.measurement_positions.set_index(\"name\")" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
typemeasurement_idfile_namepositionvariable_nameincludecoordinate_type
111Diagnostics_Meas1_Viken.dfs0NaNNaNNaNNaN
212Diagnostics_Meas2_Drogden.dfs0NaNNaNNaNNaN
313Diagnostics_Meas3_Klagshamn.dfs0NaNNaNNaNNaN
414Diagnostics_Meas4_Barsebaeck.dfs0NaNNaNNaNNaN
52NaNDiagnostics_wlbc_err_North.dfs0[342295.53, 6219783.16]err01_wlbcNaNNaN
62NaNDiagnostics_wlbc_err_South.dfs0[350230.51, 6136002.01]err02_wlbcNaNNaN
72NaNDiagnostics_err03_wind_v_err_at_Drogden.dfs0[12.7113, 55.5364]err03_wind_v0LONG/LAT
82NaNDiagnostics_err04_bed_resis_err.dfs0[12.7113, 55.5364]err04_hdpar0LONG/LAT
93NaNDiagnostics_Global_DA_statistics.dfs0NaNNaNNaNNaN
\n", "
" ], "text/plain": [ " type measurement_id file_name \\\n", "1 1 1 Diagnostics_Meas1_Viken.dfs0 \n", "2 1 2 Diagnostics_Meas2_Drogden.dfs0 \n", "3 1 3 Diagnostics_Meas3_Klagshamn.dfs0 \n", "4 1 4 Diagnostics_Meas4_Barsebaeck.dfs0 \n", "5 2 NaN Diagnostics_wlbc_err_North.dfs0 \n", "6 2 NaN Diagnostics_wlbc_err_South.dfs0 \n", "7 2 NaN Diagnostics_err03_wind_v_err_at_Drogden.dfs0 \n", "8 2 NaN Diagnostics_err04_bed_resis_err.dfs0 \n", "9 3 NaN Diagnostics_Global_DA_statistics.dfs0 \n", "\n", " position variable_name include coordinate_type \n", "1 NaN NaN NaN NaN \n", "2 NaN NaN NaN NaN \n", "3 NaN NaN NaN NaN \n", "4 NaN NaN NaN NaN \n", "5 [342295.53, 6219783.16] err01_wlbc NaN NaN \n", "6 [350230.51, 6136002.01] err02_wlbc NaN NaN \n", "7 [12.7113, 55.5364] err03_wind_v 0 LONG/LAT \n", "8 [12.7113, 55.5364] err04_hdpar 0 LONG/LAT \n", "9 NaN NaN NaN NaN " ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pfs.diagnostics" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Check if positions are inside domain " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import mikeio \n", "mesh = mikeio.open('../tests/testdata/Oresund_mesh_GEO.mesh')" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
namex_oldy_oldinsidedistelem_idx_ccy_cc
1Viken12.58170056.128000True0.001887193212.58328756.126979
2Drogden12.71130055.536400True0.004142288512.71181855.540510
3Klagshamn12.89107055.516516True0.007662101212.89801755.513284
4Barsebaeck12.90155555.758851True0.001654149412.90278155.757742
\n", "
" ], "text/plain": [ " name x_old y_old inside dist elem_id x_cc \\\n", "1 Viken 12.581700 56.128000 True 0.001887 1932 12.583287 \n", "2 Drogden 12.711300 55.536400 True 0.004142 2885 12.711818 \n", "3 Klagshamn 12.891070 55.516516 True 0.007662 1012 12.898017 \n", "4 Barsebaeck 12.901555 55.758851 True 0.001654 1494 12.902781 \n", "\n", " y_cc \n", "1 56.126979 \n", "2 55.540510 \n", "3 55.513284 \n", "4 55.757742 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "pfs.validate_positions(mesh, pfs.measurements)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": ".venv", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.0" } }, "nbformat": 4, "nbformat_minor": 4 }