ecosim-output-variable-list
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, refre
SKILL.md.agents/skills/ecosim-output-variable-list/SKILL.md
GitHubEcoSIM 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.