name: ecosim-output-variable-list description: Extract and update the EcoSIM output-variable catalog from Fortran history-field registration calls such as hist_addfld1d and hist_addfld2d. Use only when explicitly asked to update, regenerate, refresh, or rebuild the list of EcoSIM output variables from HistDataType.F90 or related F90 source; do not invoke for ordinary EcoSIM output analysis unless the variable list itself must be updated.
EcoSIM Output Variable List
Purpose
Use this skill to rebuild the catalog of EcoSIM model output variables registered in Fortran history files. The source of truth is call hist_addfld...(...) registration calls, especially in HistDataType.F90.
The catalog is meant to guide downstream EcoSIM output processing: variable selection, dimension handling, aggregation interpretation, unit checks, and NetCDF metadata review.
Workflow
- Locate the selected
.F90source. If the user gives a path, use it. If no path is given, searchdata/first, then the repository, forHistDataType.F90or files containinghist_addfld. - Create an output folder under
result/, for example:
mkdir -p result/ecosim_output_variables
- Run the bundled extractor. Prefer JSON for automated processing and CSV for quick review:
python3 .agents/skills/ecosim-output-variable-list/scripts/extract_hist_output_vars.py /absolute/path/to/HistDataType.F90 --format json --output result/ecosim_output_variables/ecosim_output_variables.json
python3 .agents/skills/ecosim-output-variable-list/scripts/extract_hist_output_vars.py /absolute/path/to/HistDataType.F90 --format csv --output result/ecosim_output_variables/ecosim_output_variables.csv
- Inspect the summary. Report total fields, counts by
hist_addfld*routine, counts by rank, the number of dynamicfnameexpressions, and any duplicate literal variable names. - Preserve dynamic names as templates instead of inventing expansions. For example, names built from
trim(micpar%cplxname(jj))ortrim(fieldname)should remain marked withis_dynamic_fname=trueunless the loop values are explicitly available from source or runtime configuration. - Use the catalog to guide processing code. Preserve the registered
units,avgflag,type2d,pointer_kind,pointer_target,long_name,condition_context, andloop_contextfields.
Output Contract
Each extracted variable record includes:
source_file,source_line,end_line: where the history registration call appears.addfld_subroutine: the registration routine, such ashist_addfld1dorhist_addfld2d.rank: derived from the routine name when possible (1d,2d, etc.).fname: literal variable name when available; otherwise a readable template.fname_expr: raw Fortran expression forfname.is_dynamic_fname: true whenfnameis assembled from expressions.units,avgflag,type2d,default,long_name: named arguments from the registration call.pointer_arg,pointer_kind,pointer_expr,pointer_target: pointer metadata used to infer whether the output is column-, patch-, or other domain-oriented.condition_context,loop_context,enclosing_subroutine: lightweight source context for conditional and loop-registered variables.
Interpretation Rules
- Do not include commented-out
hist_addfldcalls in the active variable list. - Treat
avgflagas EcoSIM history metadata and preserve it verbatim. Do not change temporal units solely fromavgflag; check whether units already encode rates (/hr,/s) or interval totals (gC/m2,mm H2O/m2). - Treat
type2das the vertical or secondary dimension key for 2-D history variables, such aslevsoi,levcan,node,rootaxs,elements, orpmorphunits. - Flag unit inconsistencies for review, especially carbon, nitrogen, phosphorus, gas, water, and heat variables where
g,mol,umol,m2,m3,hr, andsconversions can create mass-balance errors. - Do not edit the Fortran source unless the user asks for code changes. This skill updates the output-variable catalog derived from the source.
Reporting
When reporting the update, include the catalog paths, record counts, dynamic-name examples, duplicate-name warnings if any, and the selected F90 source path. Keep the output focused on how the catalog should guide EcoSIM model-output processing.