@@ -111,13 +111,16 @@ def oc_setting_data(rec):
111111 data = {}
112112 match value .dtype :
113113 case np .bool :
114+ # supports boolean dataarrays, e.g. STO steady_state and transient
114115 dat = {kper : "" for kper in range (value .sizes ["nper" ]) if value .values [kper ]} # type: ignore
115116 data [name ] = dat
116117 case np .dtypes .StringDType ():
118+ # supports string dataarrays, e.g. OC save_budget, save_head
117119 fname = name .replace ("_" , " " )
118120 dat = {kper : value .values [kper ] for kper in range (value .sizes ["nper" ])}
119121 data [fname ] = dat
120122 case object ():
123+ # supports object dataararys, e.g. OC PrintSaveSetting
121124 if isinstance (value .values [0 ], Oc .PrintSaveSetting ):
122125 if hasattr (value .values [0 ], "printrecord" ) and isinstance (
123126 value .values [0 ].printrecord , list
@@ -226,6 +229,9 @@ def unstructure_component(value: Component) -> dict[str, Any]:
226229 period_blocks [kper ][arr_name ] = arr
227230
228231 # sort kper order
232+ # needed because some package period parameters have their
233+ # own kper dicts and these may be out of order for the package,
234+ # e.g. STO transient and steady_state
229235 period_blocks = dict (sorted (period_blocks .items ()))
230236
231237 # setup indexed period blocks, combine arrays into datasets
@@ -234,6 +240,9 @@ def unstructure_component(value: Component) -> dict[str, Any]:
234240 for arr_name , val in block .items ():
235241 match block [arr_name ]:
236242 case str ():
243+ # non data period parameters have their period
244+ # write key set in the _hack_period_non_numeric
245+ # routine
237246 blocks [f"period { kper + 1 } " ][arr_name ] = val
238247 case xr .DataArray ():
239248 blocks [f"period { kper + 1 } " ]["period" ] = xr .Dataset (
0 commit comments