Skip to content

Commit 6614b47

Browse files
committed
Add reference data for 3dvar and dirac application tests. Turn off
creation of json schema again for 3dvar and errorcovariancetoolbox applications.
1 parent 465dfab commit 6614b47

File tree

7 files changed

+57
-4
lines changed

7 files changed

+57
-4
lines changed

src/mains/CMakeLists.txt

+4-2
Original file line numberDiff line numberDiff line change
@@ -42,5 +42,7 @@ ecbuild_add_executable( TARGET orcamodel_ErrorCovarianceToolbox.x
4242

4343
oops_output_json_schema( "orcamodel_hofx.x" )
4444
oops_output_json_schema( "orcamodel_hofx3D.x" )
45-
oops_output_json_schema( "orcamodel_3DVar.x" )
46-
oops_output_json_schema( "orcamodel_ErrorCovarianceToolbox.x" )
45+
# The applications below throw an error generating json schema.
46+
# This appears to be a generic issue see also oops/qg/mains/CMakeLists.txt
47+
#oops_output_json_schema( "orcamodel_3DVar.x" )
48+
#oops_output_json_schema( "orcamodel_ErrorCovarianceToolbox.x" )

src/orca-jedi/interpolator/Interpolator.cc

+19-2
Original file line numberDiff line numberDiff line change
@@ -208,9 +208,26 @@ void Interpolator::apply(const oops::Variables& vars, const Increment& inc,
208208
for (size_t jvar=0; jvar < nvars; ++jvar) nvals += nlocs_ * varSizes[jvar];
209209
result.resize(nvals);
210210

211-
auto res_iter = result.begin();
211+
std::size_t out_idx = 0;
212212
for (size_t jvar=0; jvar < nvars; ++jvar) {
213-
executeInterpolation<double>(vars[jvar].name(), varSizes[jvar], state, mask, res_iter);
213+
auto gv_varname = vars[jvar].name();
214+
atlas::Field tgt_field = atlasObsFuncSpace_.createField<double>(
215+
atlas::option::name(gv_varname) |
216+
atlas::option::levels(varSizes[jvar]));
217+
interpolator_.execute(inc.incrementFields()[gv_varname], tgt_field);
218+
auto field_view = atlas::array::make_view<double, 2>(tgt_field);
219+
atlas::field::MissingValue mv(inc.incrementFields()[gv_varname]);
220+
bool has_mv = static_cast<bool>(mv);
221+
for (std::size_t klev=0; klev < varSizes[jvar]; ++klev) {
222+
for (std::size_t iloc=0; iloc < nlocs_; iloc++) {
223+
if (has_mv && mv(field_view(iloc, klev))) {
224+
result[out_idx] = util::missingValue<double>();
225+
} else {
226+
result[out_idx] = field_view(iloc, klev);
227+
}
228+
++out_idx;
229+
}
230+
}
214231
}
215232
}
216233

src/tests/testinput/3dvar_ice_obs.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -101,3 +101,6 @@ output:
101101
state variables: [ ice_area_fraction ]
102102
nemo field file: testoutput/3dvar_ice2.nc
103103
output nemo field file: testoutput/analysis_3dvar_ice.nc
104+
test:
105+
reference filename: testoutput/test_3dvar_ice_obs.ref
106+
test output filename: testoutput/test_3dvar_ice_obs.out

src/tests/testinput/dirac.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -36,3 +36,6 @@ background:
3636
output dirac:
3737
date: 2021-06-30T12:00:00Z
3838
output path: testoutput/dirac_cov_%id%.nc
39+
test:
40+
reference filename: testoutput/test_dirac.ref
41+
test output filename: testoutput/test_dirac.out

src/tests/testoutput/CMakeLists.txt

+2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ list( APPEND orcajedi_test_output
1212
test_hofx3d_nc_prof_2vars.ref
1313
test_hofx3d_nc_ssh_amm1.ref
1414
test_hofx3d_nc_ssh_amm1r.ref
15+
test_3dvar_ice_obs.ref
16+
test_dirac.ref
1517
)
1618

1719
foreach(FILENAME ${orcajedi_test_output})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
CostJb : Nonlinear Jb = 0.0000000000000000e+00
2+
CostJo : Nonlinear Jo(Sea Ice) = 1.5000000000000000e+00, nobs = 48, Jo/n = 3.1250000000000000e-02, err = 2.0000000000000000e+00
3+
CostFunction: Nonlinear J = 1.5000000000000000e+00
4+
DRIPCGMinimizer: reduction in residual norm = 7.2455060481720379e-01
5+
CostFunction::addIncrement: Analysis:
6+
Model state valid at time: 2021-06-29T12:00:00Z
7+
1 variables: ice_area_fraction
8+
atlas field norms:
9+
ice_area_fraction: 3.20155e-03
10+
11+
12+
13+
14+
CostJb : Nonlinear Jb = 0.00000e+00
15+
CostJo : Nonlinear Jo(Sea Ice) = 1.13468e+00, nobs = 48, Jo/n = 2.36392e-02, err = 2.00000e+00
16+
CostFunction: Nonlinear J = 1.13468e+00

src/tests/testoutput/test_dirac.ref

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
Input Dirac increment:Increment valid at time: 2021-06-30T12:00:00Z
2+
1 variables: ice_area_fraction
3+
atlas field:
4+
ice_area_fraction num: 26553 mean: 3.76605e-05 rms: 6.13682e-03 min: 0.00000e+00 max: 1.00000e+00
5+
6+
Covariance(SABER) * Increment:Increment valid at time: 2021-06-30T12:00:00Z
7+
1 variables: ice_area_fraction
8+
atlas field:
9+
ice_area_fraction num: 26553 mean: 3.76605e-05 rms: 6.13682e-03 min: 0.00000e+00 max: 1.00000e+00
10+

0 commit comments

Comments
 (0)