File size: 3,018 Bytes
9613b5e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
project:
  name: AtmosphericDA-DModel
  format_version: "2.0"
  seed: 7
  independent_code_license: Apache-2.0

paper_specification:
  title: Using machine learning to correct model error in data assimilation and forecast applications
  authors: [Alban Farchi, Patrick Laloyaux, Massimo Bonavita, Marc Bocquet]
  arxiv: "2010.12605"
  doi: 10.1002/qj.4116
  journal: Quarterly Journal of the Royal Meteorological Society
  publication_year: 2021
  verified_facts:
    state: two-layer streamfunction psi
    grid: {nx: 40, ny: 20, state_size: 1600}
    boundary: x periodic and y fixed
    time_steps_minutes: {reference: 10, perturbed_model: 20}
    observations: {interval_hours: 2, random_locations: 50, batches_per_window: 12, window_start_utc: "01:00", covariance: "0.1 I"}
    trajectories: {cycles: 1032, discarded_cycles: 8, usable_samples: 1024}
    splits: {training_samples: 1024, validation_samples: 1024, test_sets: 16, samples_per_test_set: 1024}
    supervised_input: x_a_k
    supervised_target: "x_a_{k+1} - M_o(x_a_k)"
    final_correction_model: "D model, one hidden Dense layer with 8 linear nodes"
    optimizer: TensorFlow Adam with MSE
    schedule: [{epochs: 1000, learning_rate: 0.001}, {epochs: 1000, learning_rate: 0.0001}]

engineering_implementation:
  dynamics: stable finite-difference two-layer channel surrogate with perturbed advection, coupling, and damping
  analysis: sequential bilinear innovation spreading, an executable simplification of variational analysis
  framework_note: PyTorch implements the same Adam/MSE objective and D-model topology for local DDP support

paths:
  data: data/qg_analysis_windows.npz
  checkpoint: result/checkpoints/d_model.pt
  training_metrics: result/training/metrics.json
  predictions: result/output/predictions.npz
  evaluation_metrics: result/evaluation/metrics.json
  comparison_figure: result/evaluation/comparison.png

qg:
  nx: 40
  ny: 20
  reference_dt_minutes: 10
  model_dt_minutes: 20
  observation_interval_minutes: 120
  window_batches: 12
  diffusion: 0.002
  truth_advection: 0.18
  model_advection: 0.15
  truth_coupling: 0.025
  model_coupling: 0.018
  truth_damping: 0.006
  model_damping: 0.009

data:
  dataset: structured synthetic two-layer streamfunction analysis windows
  protocol: hybrid_qg_analysis_increment_npz_v2
  format: NPZ
  format_version: "2.0"
  state_layout: NCYX
  state_shape: [2, 20, 40]
  samples: 4
  observation_batches: 12
  observations_per_batch: 50
  observation_variance: 0.1
  analysis_gain: 0.35
  seed: 7

model:
  architecture: DModel
  hidden_size: 8
  activation: linear

training:
  stage_epochs: [2, 2]
  stage_learning_rates: [0.001, 0.0001]
  batch_size: 2
  seed: 19

paper_model:
  hidden_size: 8
  activation: linear
  loss: MSE
  optimizer: Adam
  stage_epochs: [1000, 1000]
  stage_learning_rates: [0.001, 0.0001]
  training_samples: 1024
  validation_samples: 1024
  test_sets: 16
  samples_per_test_set: 1024
  state_shape: [2, 20, 40]
  observation_shape_per_window: [12, 50]