@@ -181,12 +181,9 @@ auto makeGridRule(dm::Repres repres, std::int64_t num) {
181181}
182182
183183auto gridRules () {
184- return exclusiveRuleList (makeGridRule (dm::Repres::GG, 40 ), makeGridRule (dm::Repres::LL, 0 ));
184+ return exclusiveRuleList (makeGridRule (dm::Repres::LL, 0 ), makeGridRule (dm::Repres::GG, 40 ),
185+ makeGridRule (dm::Repres::SH, 50 ));
185186}
186- auto gridRuleSH () {
187- return exclusiveRuleList (makeGridRule (dm::Repres::SH, 50 ));
188- }
189-
190187
191188auto localSectionRules () {
192189 return exclusiveRuleList ( //
@@ -199,22 +196,18 @@ auto localSectionRules() {
199196
200197auto processTypesRules () {
201198 return exclusiveRuleList ( //
202- rule (all (Missing{dm::NUMBER}, Missing{dm::HDATE})), rule (all (Has{dm::NUMBER}, Missing{dm::HDATE}), ensemble ()),
203- rule (all (Has{dm::NUMBER}, Has{dm::HDATE}), reforecast (), ensemble ()));
204- }
205-
206- auto processTypesRulesAl () {
207- return exclusiveRuleList ( //
208- rule (all (Has{dm::NUMBER}), largeEnsemble ()));
199+ rule (all (NoneOf{dm::LEVTYPE, {dm::LevType::AL}}, Missing{dm::NUMBER}, Missing{dm::HDATE})),
200+ rule (all (NoneOf{dm::LEVTYPE, {dm::LevType::AL}}, Has{dm::NUMBER}, Missing{dm::HDATE}), ensemble ()),
201+ rule (all (NoneOf{dm::LEVTYPE, {dm::LevType::AL}}, Has{dm::NUMBER}, Has{dm::HDATE}), reforecast (), ensemble ()),
202+ rule (all (matchLevType (dm::LevType::AL), Has{dm::NUMBER}, Missing{dm::HDATE}), largeEnsemble ()),
203+ rule (all (matchLevType (dm::LevType::AL), Has{dm::NUMBER}, Has{dm::HDATE}), reforecast (), largeEnsemble ()));
209204}
210205
211206
212207auto packingRules () {
213- return exclusiveRuleList ( //
214- rule (OneOf{dm::PACKING, {" simple" }}, dataRepres (0 )), rule (OneOf{dm::PACKING, {" ccsds" }}, dataRepres (42 )));
215- }
216- auto packingRulesSH () {
217- return exclusiveRuleList ( //
208+ return exclusiveRuleList ( //
209+ rule (OneOf{dm::PACKING, {" simple" }}, dataRepres (0 )), //
210+ rule (OneOf{dm::PACKING, {" ccsds" }}, dataRepres (42 )), //
218211 rule (OneOf{dm::PACKING, {" complex" }}, dataRepres (51 )));
219212}
220213
@@ -502,25 +495,16 @@ auto paramHLRules() {
502495// -----------------------------------------------------------------------------
503496
504497auto paramMLRules () {
505- return exclusiveRuleList ( //
506- rule (matchParams (75 , 76 , 133 , 203 , 246 , 247 , 248 , 260290 ), //
507- pointInTime (), //
508- typeOfLevel (TOL::Hybrid)), //
509- rule (matchParams (paramRange (162100 , 162113 )), //
510- timeRange (TimeRangeType::SinceLastPostProcessingStep, TOSP::Accumulation), //
511- typeOfLevel (TOL::Hybrid)) //
512- );
513- }
514-
515- auto paramMLRulesSH () {
516- return exclusiveRuleList ( //
517- rule (matchParams (77 , 129 , 130 , 131 , 132 , 135 , 138 , 152 , 155 ), //
518- pointInTime (), //
519- typeOfLevel (TOL::Hybrid)) //
498+ return exclusiveRuleList ( //
499+ rule (matchParams (75 , 76 , 77 , paramRange (129 , 133 ), 135 , 138 , 152 , 155 , 203 , 246 , 247 , 248 , 260290 ), //
500+ pointInTime (), //
501+ typeOfLevel (TOL::Hybrid)), //
502+ rule (matchParams (paramRange (162100 , 162113 )), //
503+ timeRange (TimeRangeType::SinceLastPostProcessingStep, TOSP::Accumulation), //
504+ typeOfLevel (TOL::Hybrid)) //
520505 );
521506}
522507
523-
524508// -----------------------------------------------------------------------------
525509// PL
526510// -----------------------------------------------------------------------------
@@ -543,23 +527,13 @@ auto plLevelRules(MkTail&& mkTail) {
543527
544528auto paramPLRules () {
545529 return plLevelRules ([]() {
546- return exclusiveRuleList ( //
547- rule (matchParams (60 , 75 , 76 , paramRange (129 , 135 ), 203 , 246 , 247 , 248 , 157 , 260290 ), //
548- pointInTime ()), //
549- rule (matchParams (235100 , paramRange (235129 , 235133 ), 235135 , 235157 , 235203 , 235246 ), //
550- timeRange (TimeRangeType::SinceLastPostProcessingStep, TOSP::Average)) //
551- );
552- });
553- }
554-
555- auto paramPLRulesSH () {
556- return plLevelRules ([]() {
557- return exclusiveRuleList ( //
558- rule (matchParams (1 , 2 , paramRange (129 , 135 ), 138 , 152 , 155 , 157 ), //
559- pointInTime ()), //
560- rule (matchParams (235129 , 235130 , 235138 , 235152 , 235155 , 263107 ), //
561- timeRange (TimeRangeType::SinceLastPostProcessingStep, TOSP::Average)) //
562- );
530+ return exclusiveRuleList ( //
531+ rule (matchParams (1 , 2 , 60 , 75 , 76 , paramRange (129 , 135 ), 138 , 152 , 155 , 157 , 203 , 246 , 247 , 248 , 157 ,
532+ 260290 ),
533+ pointInTime ()),
534+ rule (matchParams (235100 , paramRange (235129 , 235133 ), 235135 , 235138 , 235152 , 235155 , 235157 , 235203 , 235246 ,
535+ 263107 ),
536+ timeRange (TimeRangeType::SinceLastPostProcessingStep, TOSP::Average)));
563537 });
564538}
565539
@@ -589,29 +563,14 @@ auto paramPTRules() {
589563 );
590564}
591565
592- auto paramPTRulesSH () {
593- return exclusiveRuleList ( //
594- rule (matchParams (53 , 54 , 131 , 132 , 133 , 138 , 155 ), //
595- pointInTime (), //
596- typeOfLevel (TOL::Theta)) //
597- );
598- }
599566
600567// -----------------------------------------------------------------------------
601568// PV
602569// -----------------------------------------------------------------------------
603570
604571auto paramPVRules () {
605- return exclusiveRuleList ( //
606- rule (matchParams (3 , 54 , 129 , 131 , 132 , 133 , 203 ), //
607- pointInTime (), //
608- typeOfLevel (TOL::PotentialVorticity)) //
609- );
610- }
611-
612- auto paramPVRulesSH () {
613572 return exclusiveRuleList ( //
614- rule (matchParams (3 , 54 , 129 ), //
573+ rule (matchParams (3 , 54 , 129 , 131 , 132 , 133 , 203 ), //
615574 pointInTime (), //
616575 typeOfLevel (TOL::PotentialVorticity)), //
617576 rule (matchParams (235098 , 235269 ), //
@@ -678,17 +637,8 @@ auto paramRules() {
678637 chainedRuleList (rule (matchLevType (dm::LevType::PL)), paramPLRules ()), //
679638 chainedRuleList (rule (matchLevType (dm::LevType::PT)), paramPTRules ()), //
680639 chainedRuleList (rule (matchLevType (dm::LevType::PV)), paramPVRules ()), //
681- chainedRuleList (rule (matchLevType (dm::LevType::SOL)), paramSOLRules ()) //
682- );
683- }
684-
685-
686- auto paramRulesSH () {
687- return exclusiveRuleList ( //
688- chainedRuleList (rule (matchLevType (dm::LevType::ML)), paramMLRulesSH ()), //
689- chainedRuleList (rule (matchLevType (dm::LevType::PL)), paramPLRulesSH ()), //
690- chainedRuleList (rule (matchLevType (dm::LevType::PT)), paramPTRulesSH ()), //
691- chainedRuleList (rule (matchLevType (dm::LevType::PV)), paramPVRulesSH ()) //
640+ chainedRuleList (rule (matchLevType (dm::LevType::SOL)), paramSOLRules ()), //
641+ chainedRuleList (rule (matchLevType (dm::LevType::AL)), paramAlRules ()) //
692642 );
693643}
694644
@@ -697,37 +647,15 @@ auto paramRulesSH() {
697647// Big rule tree...
698648// -----------------------------------------------------------------------------
699649
700- const ExclusiveRuleList& allRules () {
701- static auto all_ = exclusiveRuleList (
702- // Branch for grids
703- chainedRuleList ( //
704- rule (all (Has{dm::GRID}, NoneOf{dm::LEVTYPE, {dm::LevType::AL}})), //
705- gridRules (), //
706- localSectionRules (), //
707- processTypesRules (), //
708- paramRules (), //
709- packingRules () //
710- ),
711-
712- // Branch for spherical harmonics
713- chainedRuleList ( //
714- rule (all (Has{dm::TRUNCATION}, NoneOf{dm::LEVTYPE, {dm::LevType::AL}})), //
715- gridRuleSH (), //
716- localSectionRules (), //
717- processTypesRules (), //
718- paramRulesSH (), //
719- packingRulesSH () //
720- ),
721-
722- // Branch for abstract level
723- chainedRuleList ( //
724- rule (matchLevType (dm::LevType::AL)), //
725- gridRules (), //
726- localSectionRules (), //
727- processTypesRulesAl (), //
728- paramAlRules (), //
729- packingRules () //
730- ));
650+ const ChainedRuleList& allRules () {
651+ static auto all_ = chainedRuleList ( //
652+ gridRules (), //
653+ localSectionRules (), //
654+ processTypesRules (), //
655+ paramRules (), //
656+ packingRules () //
657+ );
658+
731659 return all_;
732660}
733661
0 commit comments