@@ -211,7 +211,10 @@ void ConditionalSampling::set_grids(const std::shared_ptr<const GridsManager> gr
211
211
const auto &gn = m_params.get <std::string>(" grid_name" );
212
212
const auto g = grids_manager->get_grid (" physics" );
213
213
214
- add_field<Required>(m_input_f, gn);
214
+ // Special case: if the input field is "count", we don't need to add it
215
+ if (m_input_f != " count" ) {
216
+ add_field<Required>(m_input_f, gn);
217
+ }
215
218
216
219
// Special case: if condition field is "lev", we don't add it as a required field
217
220
// since it's geometric information from the grid, not an actual field
@@ -239,6 +242,10 @@ void ConditionalSampling::initialize_impl(const RunType /*run_type*/) {
239
242
m_diagnostic_output.get_header ().set_extra_data (" mask_data" , diag_mask);
240
243
m_diagnostic_output.get_header ().set_extra_data (" mask_value" , m_mask_val);
241
244
245
+ // Special case: if the input field is "count", let's create a field of 1 inside m_diagnostic_output
246
+ if (m_input_f == " count" ) {
247
+ m_diagnostic_output.deep_copy (1.0 );
248
+ }
242
249
// Special case: if condition field is "lev", we don't need to check layout compatibility
243
250
// since "lev" is geometric information, not an actual field
244
251
if (m_condition_f == " lev" ) {
@@ -259,7 +266,13 @@ void ConditionalSampling::initialize_impl(const RunType /*run_type*/) {
259
266
}
260
267
261
268
void ConditionalSampling::compute_diagnostic_impl () {
262
- const auto &f = get_field_in (m_input_f);
269
+ Field &f;
270
+ if (m_input_f == " count" ) {
271
+ // Special case: if the input field is "count", we use the diagnostic output as the input
272
+ f = m_diagnostic_output;
273
+ } else {
274
+ f = get_field_in (m_input_f);
275
+ }
263
276
const auto &d = m_diagnostic_output;
264
277
265
278
// Validate operator
0 commit comments