Leixões e ponto Douro nas coordenadas offshore nativas, confirmadas em NEFIS. Forecast Iberia:29/10/2026 11UTC–01/11 11UTC.145 instantes coincidentes por ponto, sem interpolação temporal. Comparação bruta preservada; a secção G7 acrescenta uma correção empírica apenas para diagnóstico.
| Local | Média IBI−Iberia | RMS sem diferença média | Razão amplitude IBI/Iberia¹ | Atraso IBI¹ |
|---|---|---|---|---|
| LeixoesTG | -0.301 m | 0.068 m | 0.994 | 4.3 min |
| Douro | -0.307 m | 0.070 m | 0.993 | 4.4 min |
A diferença entre os níveis brutos inclui referências verticais distintas. A média da diferença não é uma correção aprovada. As anomalias retiram a média de cada série apenas para comparar forma e fase. A curva25h é uma diferença suavizada, não um resíduo meteorológico isolado.
Aplicou-se apenas à cópia de análise do IBI a constante anteriormente adotada no FM: +0,6475833399829765 m. O Iberia mantém os níveis nativos. A conversão ZH→NMM das observações da Cantareira é distinta e não foi somada ao IBI. Os dados originais, o FEWS e os forçamentos permanecem inalterados.
| Ponto offshore | IBI bruto − Iberia | IBI + G7 − Iberia |
|---|---|---|
| Leixões | -30.10 cm | +34.66 cm |
| Douro | -30.67 cm | +34.09 cm |
Na referência provisória G7, o IBI fica cerca de 34–35 cm acima do Iberia. Esta comparação é pertinente para a hipótese de nível médio em falta, mas não comprova a decomposição em 20 cm de subida secular e 14–15 cm regionais: a própria correção empírica pode incorporar diferenças de zero, nível médio e suporte espacial. Não constitui uma ligação geodésica independente.
Adicionar uma constante mantém amplitudes, fase, RMS centrado e variação lenta pico-a-pico (~9 cm). A janela de 72 h continua insuficiente para separar subida secular, sazonalidade, circulação e diferenças atmosféricas. Os gráficos brutos abaixo preservam o diagnóstico original.

A0 = 0,000 m nos 150 extremos das 75 fronteiras abertas. Auditoria integral do snapshot Iberia de 29/10 às 11 UTC; não é uma amostra. A fronteira astronómica não contém um termo médio atualizado nem uma tendência secular de subida do mar. A data Itdate=2015-08-10 é a origem do relógio, não a época do zero vertical.
O Iberia inclui maré, vento e pressão WRF. A0 nulo não obriga a média interior a ser nula: meteorologia, marés de longo período, não linearidades e restart podem produzir médias não nulas. A configuração inspecionada tem uma camada, sem transporte ativo de temperatura/salinidade; não resolve circulação baroclínica 3D nem recebe nestas fronteiras astronómicas a evolução remota da superfície livre oceânica. O IBI inclui dinâmica 3D, condições oceânicas globais e assimilação, além de maré e atmosfera. Diferenças WRF/ECMWF também entram na comparação.
Atenção ao sinal: IBI bruto − Iberia = −30,10 cm em Leixões e −30,67 cm no Douro. O IBI está abaixo, não acima. Não podemos decompor esta diferença em +20 cm de subida do NMM e +10 cm de oscilação regional. Primeiro é necessário compatibilizar referências: zos é referido ao geóide do modelo, que não equivale automaticamente ao datum histórico de Cascais. A0=0 não comprova essa equivalência.
Uma subida da ordem de 20–25 cm face ao NMM histórico de Cascais é plausível: a FCUL refere aproximadamente 23 cm, e a sua tabela de Cascais para 2026 dá NM=2,32 m para ZH=2,08 m abaixo do NMM convencional (diferença 24 cm). É contexto independente e local, não uma correção deduzida destes três dias, nem um valor automaticamente transferível para o zero nativo do Iberia. As tabelas de previsão não substituem a análise de uma série observada anual.
A diferença lenta varia aproximadamente 9 cm pico-a-pico nas duas células; pode conter condições regionais comuns, mas também diferenças atmosféricas e maré remanescente. Não identifica isoladamente NAO/oscilação do Atlântico, efeitos estéricos ou subida secular. Recomenda-se uma série mais longa, comparação IH e referências fixadas independentemente. Mantêm-se os gráficos brutos e de anomalias. A secção G7 mostra separadamente a correção empírica aplicada à análise; nenhuma alteração foi aplicada ao A0, FEWS ou forçamentos.
Fontes: DGT: datum Cascais · FCUL: níveis médios e ZH · Copernicus: SSH e referências · IBI: documentação física · Auditoria A0 e configuração · 150 valores A0.
Os pontos com nomes costeiros representam células do Iberia, não as posições dos marégrafos. A comparação usa o suporte IBI válido nessas coordenadas. O ficheiro JSON inclui distância e sensibilidade à escolha espacial.

Ambos os modelos incluem maré e efeitos atmosféricos. A diferença pode refletir a formulação da maré, meteorologia, resolução, batimetria e atrito, além de condições oceânicas de grande escala, circulação e assimilação do IBI. Não atribuir automaticamente o resultado a um único processo em falta. Os ciclos de emissão não estão comprovadamente emparelhados: é um diagnóstico entre modelos, não validação operacional independente.
As imagens usam apenas modelos, sem observações IH/SNIRH. A janela de72h é insuficiente para separar os constituintes próximos e certificar uma componente não-mareal. Não foram alterados os modelos, o FEWS ou as referências da calibração FM.
Pares de valores CSV · Metodologia e resultados completos JSON · Voltar aos níveis Iberia
{
"state": "COMPLETE_INTERMODEL_DIAGNOSTIC_NO_CALIBRATION_CHANGE",
"Iberia": {
"model": "Iberia Delft3D classic / operational FEWS",
"T0_utc": "2026-10-29T11:00:00Z",
"valid_end_utc": "2026-11-01T11:00:00Z",
"step_minutes": 10,
"points": 11,
"slot": 4,
"source": "[ficheiro local]
"source_sha256": "159695f7f430f906e3799f496c535b31a7e34632a9b5107a75134fb938d5b778",
"source_unchanged_during_read": true,
"snapshot_utc": "2026-10-29T11:14:22.188304+00:00",
"access": "Immutable copy of FSS export; Iberia filter currently not exposed by PI REST",
"vertical_reference": "Native classical levels; no IBI/G7/gauge correction applied",
"not_observations": true,
"harmonic_boundary_types": [
"A"
],
"harmonics": [
"A0",
"K1",
"K2",
"M2",
"M4",
"MF",
"MM",
"MN4",
"MS4",
"N2",
"O1",
"P1",
"Q1",
"S2"
],
"wind_pressure_files": {
"Fwndgu": "x_wind.dat",
"Fwndgv": "y_wind.dat",
"Fwndgp": "air_pressure.dat"
}
},
"IBI_fetch": {
"request": {
"dataset_id": "cmems_mod_ibi_phy_anfc_0.027deg-2D_PT15M-i",
"variables": [
"zos"
],
"minimum_longitude": -8.85,
"maximum_longitude": -8.65,
"minimum_latitude": 41.08,
"maximum_latitude": 41.22,
"start_datetime": "2026-10-29T11:00:00",
"end_datetime": "2026-11-01T11:00:00",
"output_filename": "ibi_zos_raw_20261029T11_20261101T11.nc",
"output_directory": "[ficheiro local]
"skip_existing": true,
"disable_progress_bar": true
},
"retrieval_utc": "2026-10-29T11:42:43.938423+00:00",
"raw_offset_applied_m": 0,
"not_archived_forecast_vintage_at_Iberia_T0": true,
"state": "ACQUIRED",
"sha256": "415685e9b7867bef6a20a87bfac6ee30edd3fbabe05bfd9be4b514ba0aa1e569",
"bytes": 43164
},
"IBI_variable_attributes": {
"_FillValue": -32767,
"easting": "longitude",
"latitude_max": "56.08294177f",
"latitude_min": "26.16535726f",
"long_name": "Sea surface height",
"longitude_max": "5.084567f",
"longitude_min": "-19.0828411f",
"northing": "latitude",
"standard_name": "sea_surface_height_above_geoid",
"unit_long": "Meters",
"units": "m",
"valid_max": 10000,
"valid_min": -10000,
"add_offset": 0.0,
"scale_factor": 0.0010000000474974513
},
"IBI_global_attributes": {
"institution": "NOW Systems (Spain)",
"references": "http://marine.copernicus.eu/",
"source": "NEMO3.6",
"title": "Ocean surface 15-minutes instantaneous fields for the Iberia-Biscay-Ireland (IBI) region"
},
"forecast_vintages_matched": false,
"vintage_note": "Iberia fixedT0 29Oct11UTC; IBI latest snapshot retrieved29Oct. Exact IBI issue time not established by subset. Same valid times, not proof of equal information available at T0.",
"stations": [
{
"station": "LeixoesTG",
"native_lonlat": [
-8.753203289318032,
41.167571810849175
],
"native_MN": [
122,
101
],
"geolocation_QA": "Direct NEFIS XYSTAT and NAMST; matches4nativeGRDcorners and same grid/obs SHA as Iberia snapshot",
"IBI_spatial_method": "Bilinear at native Iberia XYSTAT station centre; four wet corners",
"spatial_support": [
{
"lon": -8.77696937,
"lat": 41.16581746,
"weight": 0.1353248161542164,
"distance_m": 2004.0108672615645
},
{
"lon": -8.749190740000001,
"lat": 41.16581746,
"weight": 0.801520490861446,
"distance_m": 389.04613146375493
},
{
"lon": -8.77696937,
"lat": 41.19359609,
"weight": 0.009122527650382491,
"distance_m": 3511.3545036156534
},
{
"lon": -8.749190740000001,
"lat": 41.19359609,
"weight": 0.05403216533395502,
"distance_m": 2909.7319842392726
}
],
"nearest_wet_distance_m": 389.04613146375493,
"IBI_centres_inside_Iberia_cell": 2,
"common_samples": 145,
"start_utc": "2026-10-29T11:00:00Z",
"end_utc": "2026-11-01T11:00:00Z",
"time_pairing": "Exact matching timestamps UTC every30minutes; no temporal interpolation",
"Iberia_native_levels": {
"mean_m": 0.004109089310344828,
"std_m": 0.8477731624196843,
"min_m": -1.4260235,
"max_m": 1.4357702
},
"IBI_raw_zos": {
"mean_m": -0.2969134934211938,
"std_m": 0.8470576994473846,
"min_m": -1.8441610457237778,
"max_m": 1.0967545469697744
},
"IBI_minus_Iberia_raw": {
"mean_m": -0.30102258273153865,
"std_m": 0.06809390488937414,
"min_m": -0.4988254881037035,
"max_m": -0.17104683430425538
},
"raw_RMS_difference_m": 0.30862821516745537,
"centred_RMS_difference_m": 0.06809390488937414,
"correlation": 0.9967719081910507,
"representative_semidiurnal_fit": {
"period_hours": 12.4206,
"IBI_amplitude_over_Iberia": 0.9941895124928064,
"IBI_lag_minutes_relative_Iberia": 4.308697873370067,
"caution": "One representative oscillation, not resolved M2/S2 and not a correction applied"
},
"spatial_sampling_sensitivity": {
"nearest_minus_primary_rms_m": 0.0004899550391752594,
"nearest_minus_primary_centred_rms_m": 0.0004889909805363708,
"footprint_average_minus_primary_rms_m": 0.0009604221338538792,
"footprint_average_minus_primary_centred_rms_m": 0.0006854547673005398
},
"slow_difference_25h": {
"start_utc": "2026-10-29T23:30:00Z",
"end_utc": "2026-10-31T22:30:00Z",
"mean_m": -0.29895121695517485,
"std_m": 0.02433358814876911,
"min_m": -0.3448411729596174,
"max_m": -0.2553800821255333,
"amplitude_response_to_tidal_components": {
"12.4206h_proxy": 0.006316400704975371,
"S2_12h": 0.039318516525781284,
"K1_23.934h": 0.04243995732150386,
"O1_25.819h": 0.032665442282703995
},
"caution": "Smoothed inter-model difference, includes unknown constant reference and residual tides/long-period tides; not isolated meteorological residual"
},
"vertical_offsets_applied_m": 0,
"not_independent_model_validation": true,
"empirical_G7_overlay": {
"offset_m": 0.6475833399829765,
"mean_IBI_corrected_minus_Iberia_m": 0.34656075725143787,
"slow_difference_min_m": 0.30274216702335904,
"slow_difference_max_m": 0.39220325785744314,
"centred_RMS_difference_m": 0.06809390488937414,
"status": "Provisional empirical reference; not independently certified geodetic conversion",
"applies_to": "IBI only, for this diagnostic overlay; no model/forcing edits; no additional Cantareira observation correction"
}
},
{
"station": "Douro",
"native_lonlat": [
-8.753203289318032,
41.11757181084917
],
"native_MN": [
122,
100
],
"geolocation_QA": "Direct NEFIS XYSTAT and NAMST; matches4nativeGRDcorners and same grid/obs SHA as Iberia snapshot",
"IBI_spatial_method": "Bilinear at native Iberia XYSTAT station centre; four wet corners",
"spatial_support": [
{
"lon": -8.77696937,
"lat": 41.1102602,
"weight": 0.10642737067792782,
"distance_m": 2154.9536685964636
},
{
"lon": -8.749190740000001,
"lat": 41.1102602,
"weight": 0.6303627140320923,
"distance_m": 879.1594623830232
},
{
"lon": -8.77696937,
"lat": 41.13803883,
"weight": 0.03801997312667106,
"distance_m": 3024.7810493325196
},
{
"lon": -8.749190740000001,
"lat": 41.13803883,
"weight": 0.22518994216330873,
"distance_m": 2297.83122743538
}
],
"nearest_wet_distance_m": 879.1594623830232,
"IBI_centres_inside_Iberia_cell": 4,
"common_samples": 145,
"start_utc": "2026-10-29T11:00:00Z",
"end_utc": "2026-11-01T11:00:00Z",
"time_pairing": "Exact matching timestamps UTC every30minutes; no temporal interpolation",
"Iberia_native_levels": {
"mean_m": 0.004037008510344833,
"std_m": 0.8480098289531823,
"min_m": -1.4277835,
"max_m": 1.4366466
},
"IBI_raw_zos": {
"mean_m": -0.30264755047336805,
"std_m": 0.8468138745358267,
"min_m": -1.851184773408365,
"max_m": 1.0920294249223321
},
"IBI_minus_Iberia_raw": {
"mean_m": -0.30668455898371294,
"std_m": 0.06977581556677367,
"min_m": -0.5201894491684069,
"max_m": -0.17796413124445823
},
"raw_RMS_difference_m": 0.314521991531662,
"centred_RMS_difference_m": 0.06977581556677366,
"correlation": 0.9966110638141614,
"representative_semidiurnal_fit": {
"period_hours": 12.4206,
"IBI_amplitude_over_Iberia": 0.9934123304534364,
"IBI_lag_minutes_relative_Iberia": 4.420830518647068,
"caution": "One representative oscillation, not resolved M2/S2 and not a correction applied"
},
"spatial_sampling_sensitivity": {
"nearest_minus_primary_rms_m": 0.0010370235288826258,
"nearest_minus_primary_centred_rms_m": 0.0008088241322847682,
"footprint_average_minus_primary_rms_m": 0.0011299562347918193,
"footprint_average_minus_primary_centred_rms_m": 0.0010741470254896693
},
"slow_difference_25h": {
"start_utc": "2026-10-29T23:30:00Z",
"end_utc": "2026-10-31T22:30:00Z",
"mean_m": -0.3049054838737233,
"std_m": 0.024520318427962765,
"min_m": -0.3500475565754887,
"max_m": -0.2606226099868208,
"amplitude_response_to_tidal_components": {
"12.4206h_proxy": 0.006316400704975371,
"S2_12h": 0.039318516525781284,
"K1_23.934h": 0.04243995732150386,
"O1_25.819h": 0.032665442282703995
},
"caution": "Smoothed inter-model difference, includes unknown constant reference and residual tides/long-period tides; not isolated meteorological residual"
},
"vertical_offsets_applied_m": 0,
"not_independent_model_validation": true,
"empirical_G7_overlay": {
"offset_m": 0.6475833399829765,
"mean_IBI_corrected_minus_Iberia_m": 0.3408987809992636,
"slow_difference_min_m": 0.29753578340748776,
"slow_difference_max_m": 0.38696072999615566,
"centred_RMS_difference_m": 0.06977581556677366,
"status": "Provisional empirical reference; not independently certified geodetic conversion",
"applies_to": "IBI only, for this diagnostic overlay; no model/forcing edits; no additional Cantareira observation correction"
}
}
],
"conclusion_limits": [
"A constant difference is not automatically a geodetic offset or physical model error",
"Demeaning removes a constant only for plotting/diagnostic; no heights or forcing changed",
"Differences may include tidal propagation, resolution, bathymetry, friction, WRF/ECMWF forcing, remote ocean conditions and circulation",
"25h smoothing is not full tidal separation;72h cannot resolve M2/S2 independently",
"No observations used here; this is an inter-model comparison"
],
"shared_spatial_pattern": {
"difference_series_correlation": 0.9985621162003934,
"Douro_difference_minus_Leixoes_difference": {
"mean_m": -0.00566197625217428,
"std_m": 0.004061093498626359,
"min_m": -0.02150900718456006,
"max_m": 0.006237780522745595
},
"interpretation": "Common pattern across two nearby offshore cells; cannot identify whether datum or regional physics causes its mean"
},
"A0_and_physics_audit": {
"snapshot": "[ficheiro local]
"boundaries": 75,
"endpoints": 150,
"all_A0_zero": true,
"settings": {
"MNKmax": "186 148 1",
"Itdate": "#2015-08-10#",
"Sub1": "# W #",
"Sub2": "# #",
"Tempw": "1.5000000e+001",
"Salw": "3.1000000e+001",
"Filana": "#Iberia10.bca#",
"Restid": "#Iberia.rst#",
"Fwndgu": "#x_wind.dat#",
"Fwndgv": "#y_wind.dat#",
"Fwndgp": "#air_pressure.dat#"
},
"source_sha256": {
"Iberia.mdf": "005f9b301abd6117ce8ce93f38c2bf5d665170ce7ee4e051e270b5baf0386a34",
"Iberia10.bca": "9def085d84b772ad81d41121baacf5f4fd5b4d14f00e329aeeed36f708bd6e60",
"Iberia10.bnd": "5e4ae549902584eaeb0dea4cc8d7d52666c83f841fd5f1d67a53fa5b86c65b4f"
},
"interpretation": [
"No imposed mean-level offset or secular sea-level trend in A0 of the astronomical boundaries.",
"Wind and atmospheric pressure are included. A0 zero does not force every interior temporal mean to zero.",
"One computational layer; no active transported temperature/salinity in the inspected setup: no resolved 3D baroclinic ocean circulation.",
"No evolving remote ocean SSH prescribed by these astronomical boundaries. Long-period tides and internally generated atmospheric/nonlinear effects remain.",
"Itdate is a model clock origin, not evidence of a vertical-datum epoch.",
"The geodetic zero of the native Iberia harmonics is not established by A0=0.",
"Raw IBI minus Iberia is negative about 0.30m. Cannot identify this as positive 0.20m rise plus 0.10m regional signal."
]
},
"G7_overlay": {
"offset_m": 0.6475833399829765,
"inherited_from": "Previously adopted FM G7 empirical correction",
"original_data_preserved": true,
"source_models_and_forcing_unchanged": true,
"no_causal_decomposition": "Not evidence of 20cm secular rise plus remaining regional oscillation",
"invariants": "Constant offset leaves amplitudes, phase, centred RMS and peak-to-peak variability unchanged"
}
}