Skip to content

Commit

Permalink
Enhancements: better organization of mkdocs.yml and removal of that d…
Browse files Browse the repository at this point in the history
…eprecated method for doing google analytics. Small formatting changes if markdown files
  • Loading branch information
scrasmussen committed Aug 28, 2023
1 parent 9ba0b36 commit 2fb06cb
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 16 deletions.
16 changes: 8 additions & 8 deletions docs/developing.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ For an outline of the basic code structure see the [ICAR code overview](icar_cod

For a more complete documentation of ICAR, see the [detailed ICAR code description](http://ncar.github.io/icar/). This full description is being updated as the doxygen markup is added to the code. It also has detailed interactive diagrams of the inter-relationship between all functions. For the overview, start by looking at the [documentation for the main program](http://ncar.github.io/icar/driver_8f90.html).

ICAR main is now a significant change to the internal workings of ICAR, and has made some components vastly more dynamic and easier to implement / modify. However, to support that, some elements became more complicated. For example, adding a new variable to the output file is incredibly easy if that variable already exists. Just add it to a call (almost anywhere) to output%add_variables()... however, if that variables has not been added before there are several steps that need to occur. Below is a quick outline of the process:

1) The variable has to be a a “variable_t” type, not just an array (and preferably part of the domain object though not technically required, but other steps below would be different if it is not.)
2) That variable needs to have an entry in the kVARS structure in the `constants/icar_constants.f90` file.
3) That variable needs to have an entry in the default metadata array `io/default_output_metadata.f90`.
4) That variable needs to be initialized somewhere appropriate (for example in `objects/domain_obj.f90` `create_variables`.)
5) Somewhere you need to tell it to write that variable too. The easiest place to do this is in the domain_obj routine `var_request`, add it to the list of variables to be allocated, **and** to the list of “restart” variables (i.e. output variables for now).
6) The one change that needs to be made in `io/output_obj.f90` is to add a single line for that variable to the `add_variables` routine.
ICAR main is now a significant change to the internal workings of ICAR, and has made some components vastly more dynamic and easier to implement/modify. However, to support that, some elements became more complicated. For example, adding a new variable to the output file is incredibly easy if that variable already exists. Just add it to a call (almost anywhere) to `output%add_variables()` however, if that variables has not been added before there are several steps that need to occur. Below is a quick outline of the process:

1. The variable has to be a a “variable_t” type, not just an array (and preferably part of the domain object though not technically required, but other steps below would be different if it is not.)
2. That variable needs to have an entry in the kVARS structure in the `constants/icar_constants.f90` file.
3. That variable needs to have an entry in the default metadata array `io/default_output_metadata.f90`.
4. That variable needs to be initialized somewhere appropriate (for example in `objects/domain_obj.f90` `create_variables`.)
5. Somewhere you need to tell it to write that variable too. The easiest place to do this is in the domain_obj routine `var_request`, add it to the list of variables to be allocated, **and** to the list of “restart” variables (i.e. output variables for now).
6. The one change that needs to be made in `io/output_obj.f90` is to add a single line for that variable to the `add_variables` routine.

I know that ended up being more complicated than it could be. Once a variable is in that format, it is really easy to add and remove variables (and for that matter create multiple output files with different variable lists in each, it is almost magical), but the initial setup is non-trivial to get there.

Expand Down
2 changes: 1 addition & 1 deletion docs/running/settings_documentation.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## ICAR settings file documentation

Reading the comments in the run/short_icar_options.nml or run/complete_icar_options.nml files may be some of the best documentation available.
Reading the comments in the [run/short_icar_options.nml](https://github.com/NCAR/icar/blob/main/run/short_icar_options.nml) or [run/complete_icar_options.nml](https://github.com/NCAR/icar/blob/main/run/complete_icar_options.nml) files may be some of the best documentation available.

### Main Namelists
__REQUIRED__:
Expand Down
20 changes: 13 additions & 7 deletions mkdocs.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,16 @@
site_name: ICAR
nav:
- Home: index.md
- Compiling: compiling.md
- Running: running/running.md
- Settings Documentation: running/settings_documentation.md
- Developing: developing.md
- Errors: errors.md
- Home: index.md
- ICAR Code Overview: icar_code_overview.md
- Compiling: compiling.md
- Running: running/running.md
- Settings Documentation: running/settings_documentation.md
- Developing: developing.md
- Errors: errors.md
- FAQ: FAQ.md
- How To:
- Build MkDocs: howto/build_mkdocs.md
- ICAR and Git: howto/icar_and_git_howto.md
- ICAR Git Workflow: howto/icar_git_workflow.md
theme: readthedocs
google_analytics: ['UA-108421993-4', 'icar.readthedocs.org']
# google_analytics: ['UA-108421993-4', 'icar.readthedocs.org']

0 comments on commit 2fb06cb

Please sign in to comment.