@@ -100,7 +100,7 @@ def oc_setting_data(rec):
100100 elif rec .steps .last :
101101 dat = {kper : "last" for kper in range (value .sizes ["nper" ])}
102102 elif rec .steps .steps :
103- steps = " " .join (str (x - 1 ) for x in rec .steps .steps )
103+ steps = " " .join (str (x + 1 ) for x in rec .steps .steps )
104104 dat = {kper : f"steps { steps } " for kper in range (value .sizes ["nper" ])}
105105 elif rec .steps .all :
106106 # check last as this defaults to True
@@ -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