|
1 | 1 | TUVtools |
| 2 | +======== |
| 3 | + |
| 4 | +TUV developer tools to auto-generate TUV input files, include files to link |
| 5 | +TUV to the boxmodel [DSMACC](https://github.com/pb866/DSMACC-testing.git) or |
| 6 | +generate markdown files for the TUV wiki. |
| 7 | + |
| 8 | + |
| 9 | +Installation |
| 10 | +------------ |
| 11 | + |
| 12 | +Go to the package manager and add first the unregistered package |
| 13 | +[filehandling](https://github.com/pb866/filehandling.git) and then TUVtools. |
| 14 | +You may want to `activate` an environment as optional second step, if you |
| 15 | +don't want the project installed in the main julia environment (where `.` can |
| 16 | +be replaced by any path to any existing Project.toml or to a new folder |
| 17 | +creating a new environment). |
| 18 | + |
| 19 | +```julia |
| 20 | +julia> ] |
| 21 | +pkg> activate . |
| 22 | +pkg> add https://github.com/pb866/filehandling.git |
| 23 | +pkg> add https://github.com/pb866/TUVtools.git |
| 24 | +pkg> instantiate |
| 25 | +pkg> precompile |
| 26 | +``` |
| 27 | + |
| 28 | + |
| 29 | +Usage |
| 30 | +----- |
| 31 | + |
| 32 | +Import package with `using` or import `import`: |
| 33 | + |
| 34 | +```julia |
| 35 | +using Pkg |
| 36 | +Pkg.activate("path/to/Project.toml") #if not in main julia environment |
| 37 | +using TUVtools |
| 38 | +``` |
| 39 | + |
| 40 | +**_Currently all functions work only for the MCM/GECKO-A TUV version 5.2.x., where source code has been moved to a separate source folder!_** |
| 41 | +Additional flags to use with the original TUV version will be introduced in the future. |
| 42 | + |
| 43 | + |
| 44 | +### Function setrxns |
| 45 | + |
| 46 | +Auto-generates The reaction part of the TUV input files from the reaction labels |
| 47 | +defined in the rxn files/subroutines. Options exist to reset flags. |
| 48 | + |
| 49 | + |
| 50 | + |
| 51 | +```julia |
| 52 | +setrxns(tuvdir::String; inputfiles::Union{String,Vector{String}}="", setflags::Int64=-1) |
| 53 | +``` |
| 54 | + |
| 55 | +Specify the location of the TUV main folder with `tuvdir`. TUV input files have to exist |
| 56 | +already and only the mechanisims section is overwritten. By default all files in the `INPUTS` |
| 57 | +folders are re-written. Use keyword argument `inputfiles` to select a subset. |
| 58 | + |
| 59 | +Use kwarg `setflags` to reset flags for TUV output. By default the same flags are used as |
| 60 | +previously. If you add/delete reactions, you will have to insert/delete flags at the |
| 61 | +corresponding lines (you only need to provide the flag at the first character of the line, |
| 62 | +the remaining line will be auto-filled). Other options are: |
| 63 | + |
| 64 | +- `0`: Set all flags to false (`F`) |
| 65 | +- `1`: Set all flags to true (`T`) |
| 66 | +- `2`: Set output to `T` for reactions in the MCM/GECKO-A mechanism, remaining flags to `F` |
| 67 | +- `3`: Set output to `T` for reactions in the MCMv3.3.1 (and older) mechanism, remaining flags to `F` |
| 68 | + |
| 69 | + |
| 70 | +### Function generate_incfiles |
| 71 | + |
| 72 | +Auto-generates include files for the boxmodel |
| 73 | +[DSMACC](https://github.com/pb866/DSMACC-testing.git) to link TUV and DSMACC |
| 74 | +reaction numbers in the model. |
| 75 | + |
| 76 | +```julia |
| 77 | +generate_incfiles(tuvdir::String) |
| 78 | +``` |
| 79 | + |
| 80 | +Specify the main folder of the TUV version you are using |
| 81 | +(needs to be the MCM/GECKO-A TUV version rather than original TUV), from |
| 82 | +which the function will derive the TUV reaction numbers. |
| 83 | +DSMACC reaction numbers are saved in `src/data/MCMv32.db`, `src/data/MCMv331.db`, |
| 84 | +and `src/data/MCM-GECKO-A.db` for the respective MCM versions. |
| 85 | + |
| 86 | +If you use additonal photolysis reactions or altered the photolysis numbers |
| 87 | +in any way, you need to modify these number either by cloning this repository |
| 88 | +and making sure to load the cloned version into julia or you can `develop` the |
| 89 | +package with the help of the package manager. |
| 90 | + |
| 91 | +Include files will be auto-generated for every MCM version and written to the |
| 92 | +main folder of the specified TUV version. |
| 93 | + |
| 94 | + |
| 95 | +### Function generate_wiki |
| 96 | + |
| 97 | +This is a more advanced routine for developers of the MCM/GECKO-A TUV version |
| 98 | +to maintain the wiki pages of the repository. |
| 99 | + |
| 100 | +Function `generate_wiki` can auto-generate wiki pages for the reaction numbers |
| 101 | +used in MCM/GECKO-A and TUV and the improved MCM photolysis parameterisations. |
| 102 | + |
| 103 | +By default, no wiki files are generated unless you specify a template for the wiki page(s) |
| 104 | +or the `parameter.csv` from [MCMphotolysis](https://github.com/pb866/MCMphotolysis.git). |
| 105 | + |
| 106 | +```julia |
| 107 | +generate_wiki(tuvdir::String; wikitemplates::Union{String, Vector{String}}="", |
| 108 | + wikioutput::Union{String, Vector{String}}="WIKI.md", MCMcollength::Union{Int64,Vector{Int64}}=10, |
| 109 | + MCMversion::Union{Int64,Vector{Int64}}=4, parinput::String="", |
| 110 | + paroutput::String="../MCM-Photolysis-Parameters.md") |
| 111 | +``` |
| 112 | + |
| 113 | +Specify the main folder of the TUV version used in `tuvdir` to get the TUV |
| 114 | +reaction numbers. If you want to generate wiki page(s) for the reaction numbers, |
| 115 | +make sure the DSMACC reaction numbers are correct in the database files |
| 116 | +(see [function `generate_incfiles`](#function-generate_incfiles)). |
| 117 | + |
| 118 | +Create templates for all wiki pages using markdown code. Type any text you like |
| 119 | +in the page. Where you want tables with the reaction numbers, only provide the header. |
| 120 | +Put the reaction string starting at the first character of the line for every reaction |
| 121 | +you want in the tables at the correct positon in the template. The script will auto-fill-in |
| 122 | +the correct MCM/GECKO-A and TUV reaction numbers in the first two columns and the |
| 123 | +reaction label in the third. Reaction labels have to be the same as in TUV. |
| 124 | +Examples of templates can be found in `src/data`. |
| 125 | + |
| 126 | +Specify the templates with the kwarg `wikitemplates` as `String` for single file |
| 127 | +or as `Vector{String}` for multiple files. Define as many output file names as |
| 128 | +templates with `wikioutput` in the same manor. Specify, which version of the MCM |
| 129 | +you are using for each wiki page as `Int64` or `Vector{Int64}` using `3` for |
| 130 | +MCMv3.3.1 or older and `4` for MCM/GECKO-A. Optionally you can specify the column |
| 131 | +length of the MCM/GECKO-A reaction number column for nicer formatting of the table |
| 132 | +in the md files. TUV columns will always be for 3-digit integers. |
| 133 | + |
| 134 | +If you want to generate the parameter list for the improved MCM/GECKO-A |
| 135 | +photolysis parameterisations, specify the location and file name of the |
| 136 | +`parameters.csv` from [MCMphotolysis](https://github.com/pb866/MCMphotolysis.git) |
| 137 | +with kwarg `parinput`. To specify a location and file name for the |
| 138 | +auto-generated markdown file use kwarg `paroutput`. |
| 139 | + |
| 140 | + |
| 141 | +Version history |
| 142 | +=============== |
| 143 | + |
| 144 | +Version 0.1.0 |
| 145 | +------------- |
| 146 | +- New function `setrxns` to auto-generate TUV input files |
| 147 | +- New function `generate_incfiles` to auto-generate DSMACC include files |
| 148 | + to link TUV to DSMACC |
| 149 | +- New function `generate_wiki` to auto-generate wiki files for the |
| 150 | + MCM/GECKO-A and TUV reaction numbers and for the improved MCM/GECKO-A |
| 151 | + photolysis parameterisations |
0 commit comments