{
"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",
" include | \n",
" type | \n",
" n_bounds | \n",
" bound_code | \n",
" st_dev | \n",
" perturbation_type | \n",
" propagation_type | \n",
" propagation_parameter | \n",
" initialization_type | \n",
" horizontal_discretization_type | \n",
" horizontal_corr_function | \n",
" horizontal_corr | \n",
" horizontal_grid_spacing | \n",
"
\n",
" \n",
" \n",
" \n",
" | 1 | \n",
" 1 | \n",
" wlbc | \n",
" 1 | \n",
" 2 | \n",
" 0.03 | \n",
" additive | \n",
" AR(1) | \n",
" 10800 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 70000 | \n",
" NaN | \n",
"
\n",
" \n",
" | 2 | \n",
" 1 | \n",
" wlbc | \n",
" 1 | \n",
" 3 | \n",
" 0.03 | \n",
" additive | \n",
" AR(1) | \n",
" 14400 | \n",
" 0 | \n",
" 2 | \n",
" 1 | \n",
" 120000 | \n",
" 20000 | \n",
"
\n",
" \n",
"
\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",
" include | \n",
" name | \n",
" measured_variable | \n",
" file_name | \n",
" data_offset | \n",
" item_number | \n",
" position | \n",
" coordinate_type | \n",
" type_time_interpolation | \n",
" st_dev | \n",
"
\n",
" \n",
" \n",
" \n",
" | 1 | \n",
" 1 | \n",
" Viken | \n",
" water level | \n",
" ..\\obs\\smhi_2228_viken.dfs0 | \n",
" 0.3 | \n",
" 1 | \n",
" [12.5817, 56.128] | \n",
" LONG/LAT | \n",
" 1 | \n",
" 0.02 | \n",
"
\n",
" \n",
" | 2 | \n",
" 2 | \n",
" Drogden | \n",
" water level | \n",
" ..\\obs\\dmi_30357_Drogden_Fyr_cleaned.dfs0 | \n",
" 0.25 | \n",
" 1 | \n",
" [12.7113, 55.5364] | \n",
" LONG/LAT | \n",
" 0 | \n",
" 0.02 | \n",
"
\n",
" \n",
" | 3 | \n",
" 1 | \n",
" Klagshamn | \n",
" water level | \n",
" ..\\obs\\smhi_2095_klagshamn.dfs0 | \n",
" 0.18 | \n",
" 1 | \n",
" [12.89106996, 55.5165157] | \n",
" LONG/LAT | \n",
" 0 | \n",
" 0.02 | \n",
"
\n",
" \n",
" | 4 | \n",
" 2 | \n",
" Barsebaeck | \n",
" water level | \n",
" ..\\obs\\smhi_2099_barsebaeck.dfs0 | \n",
" 0.28 | \n",
" 1 | \n",
" [12.90155524, 55.75885144] | \n",
" LONG/LAT | \n",
" 0 | \n",
" 0.02 | \n",
"
\n",
" \n",
"
\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",
" x | \n",
" y | \n",
"
\n",
" \n",
" | name | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" | Viken | \n",
" 12.581700 | \n",
" 56.128000 | \n",
"
\n",
" \n",
" | Drogden | \n",
" 12.711300 | \n",
" 55.536400 | \n",
"
\n",
" \n",
" | Klagshamn | \n",
" 12.891070 | \n",
" 55.516516 | \n",
"
\n",
" \n",
" | Barsebaeck | \n",
" 12.901555 | \n",
" 55.758851 | \n",
"
\n",
" \n",
"
\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",
" type | \n",
" measurement_id | \n",
" file_name | \n",
" position | \n",
" variable_name | \n",
" include | \n",
" coordinate_type | \n",
"
\n",
" \n",
" \n",
" \n",
" | 1 | \n",
" 1 | \n",
" 1 | \n",
" Diagnostics_Meas1_Viken.dfs0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 2 | \n",
" 1 | \n",
" 2 | \n",
" Diagnostics_Meas2_Drogden.dfs0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 3 | \n",
" 1 | \n",
" 3 | \n",
" Diagnostics_Meas3_Klagshamn.dfs0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 4 | \n",
" 1 | \n",
" 4 | \n",
" Diagnostics_Meas4_Barsebaeck.dfs0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 5 | \n",
" 2 | \n",
" NaN | \n",
" Diagnostics_wlbc_err_North.dfs0 | \n",
" [342295.53, 6219783.16] | \n",
" err01_wlbc | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 6 | \n",
" 2 | \n",
" NaN | \n",
" Diagnostics_wlbc_err_South.dfs0 | \n",
" [350230.51, 6136002.01] | \n",
" err02_wlbc | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" | 7 | \n",
" 2 | \n",
" NaN | \n",
" Diagnostics_err03_wind_v_err_at_Drogden.dfs0 | \n",
" [12.7113, 55.5364] | \n",
" err03_wind_v | \n",
" 0 | \n",
" LONG/LAT | \n",
"
\n",
" \n",
" | 8 | \n",
" 2 | \n",
" NaN | \n",
" Diagnostics_err04_bed_resis_err.dfs0 | \n",
" [12.7113, 55.5364] | \n",
" err04_hdpar | \n",
" 0 | \n",
" LONG/LAT | \n",
"
\n",
" \n",
" | 9 | \n",
" 3 | \n",
" NaN | \n",
" Diagnostics_Global_DA_statistics.dfs0 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\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",
" name | \n",
" x_old | \n",
" y_old | \n",
" inside | \n",
" dist | \n",
" elem_id | \n",
" x_cc | \n",
" y_cc | \n",
"
\n",
" \n",
" \n",
" \n",
" | 1 | \n",
" Viken | \n",
" 12.581700 | \n",
" 56.128000 | \n",
" True | \n",
" 0.001887 | \n",
" 1932 | \n",
" 12.583287 | \n",
" 56.126979 | \n",
"
\n",
" \n",
" | 2 | \n",
" Drogden | \n",
" 12.711300 | \n",
" 55.536400 | \n",
" True | \n",
" 0.004142 | \n",
" 2885 | \n",
" 12.711818 | \n",
" 55.540510 | \n",
"
\n",
" \n",
" | 3 | \n",
" Klagshamn | \n",
" 12.891070 | \n",
" 55.516516 | \n",
" True | \n",
" 0.007662 | \n",
" 1012 | \n",
" 12.898017 | \n",
" 55.513284 | \n",
"
\n",
" \n",
" | 4 | \n",
" Barsebaeck | \n",
" 12.901555 | \n",
" 55.758851 | \n",
" True | \n",
" 0.001654 | \n",
" 1494 | \n",
" 12.902781 | \n",
" 55.757742 | \n",
"
\n",
" \n",
"
\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
}