@@ -724,6 +724,23 @@ def _try_text(file: Path, elt: Element) -> str:
724724 return text
725725
726726
727+ def _count_subdomains (xs : XmlStream , i0_yin : int ) -> tuple [range , range ]:
728+ i1_yin = i0_yin + 1
729+ i0_yang = 0
730+ i1_yang = 0
731+ for _ in xs .iter_tag ("Grid" ):
732+ if xs .current .attrib ["GridType" ] == "Collection" :
733+ break
734+ if (name := xs .current .attrib ["Name" ]).startswith ("meshYang" ):
735+ if i1_yang == 0 :
736+ i0_yang = int (name [- 5 :]) - 1
737+ i1_yang = i0_yang + (i1_yin - i0_yin )
738+ else :
739+ i1_yin += 1
740+ xs .drop ()
741+ return range (i0_yin , i1_yin ), range (i0_yang , i1_yang )
742+
743+
727744@dataclass (frozen = True )
728745class FieldSub :
729746 file : Path
@@ -826,19 +843,7 @@ def _data(self) -> Mapping[int, XmfEntry]:
826843 ifile = int (h5file [- 14 :- 9 ])
827844 fields_info [name ] = (ifile , shape )
828845
829- i1_yin = i0_yin + 1
830- i0_yang = 0
831- i1_yang = 0
832- for _ in xs .iter_tag ("Grid" ):
833- if xs .current .attrib ["GridType" ] == "Collection" :
834- break
835- if (name := xs .current .attrib ["Name" ]).startswith ("meshYang" ):
836- if i1_yang == 0 :
837- i0_yang = int (name [- 5 :]) - 1
838- i1_yang = i0_yang + (i1_yin - i0_yin )
839- else :
840- i1_yin += 1
841- xs .drop ()
846+ r_yin , r_yang = _count_subdomains (xs , i0_yin )
842847
843848 data [isnap ] = XmfEntry (
844849 isnap = isnap ,
@@ -849,8 +854,8 @@ def _data(self) -> Mapping[int, XmfEntry]:
849854 twod = twod ,
850855 coord_filepattern = coord_filepattern ,
851856 coord_shape = coord_shape ,
852- range_yin = range ( i0_yin , i1_yin ) ,
853- range_yang = range ( i0_yang , i1_yang ) ,
857+ range_yin = r_yin ,
858+ range_yang = r_yang ,
854859 fields = fields_info ,
855860 )
856861 return data
@@ -1141,28 +1146,16 @@ def _data(self) -> Mapping[int, XmfTracersEntry]:
11411146 ifile = int (h5file [- 14 :- 9 ])
11421147 fields_info [name ] = ifile
11431148
1144- i1_yin = i0_yin + 1
1145- i0_yang = 0
1146- i1_yang = 0
1147- for _ in xs .iter_tag ("Grid" ):
1148- if xs .current .attrib ["GridType" ] == "Collection" :
1149- break
1150- if (name := xs .current .attrib ["Name" ]).startswith ("meshYang" ):
1151- if i1_yang == 0 :
1152- i0_yang = int (name [- 5 :]) - 1
1153- i1_yang = i0_yang + (i1_yin - i0_yin )
1154- else :
1155- i1_yin += 1
1156- xs .drop ()
1149+ r_yin , r_yang = _count_subdomains (xs , i0_yin )
11571150
11581151 data [isnap ] = XmfTracersEntry (
11591152 isnap = isnap ,
11601153 time = time ,
11611154 mo_lambda = extra .get ("mo_lambda" ),
11621155 mo_thick_sol = extra .get ("mo_thick_sol" ),
11631156 yin_yang = yin_yang ,
1164- range_yin = range ( i0_yin , i1_yin ) ,
1165- range_yang = range ( i0_yang , i1_yang ) ,
1157+ range_yin = r_yin ,
1158+ range_yang = r_yang ,
11661159 fields = fields_info ,
11671160 )
11681161 return data
0 commit comments