{"push_id":774024317,"size":15,"distinct_size":15,"ref":"refs/heads/master","head":"85727ea3ae9ba97428666ff9488ee0148f94b4ae","before":"c035aa54b8186fc271a60e380264bc5a0f3a70b6","commits":[{"sha":"c798feb03519f04af32774d5506c933028d724e4","author":{"email":"550e445786015adbefca5b553f11f7c12560b15e@ornl.gov","name":"Joseph H Kennedy"},"message":"Creating a (python) build and test structure\n\nThere are two main goals here, that go hand in hand.\n\n1) A way to automatically run a comprehensive set of tests. This allows\nusers to test their install quickly and developers to quickly test their\nchanges.\n\n2) Provide a robust entry point for the LIVVkit workflow to generate\nregression test data and re-baseline when needed. This allows real-time\nV&V testing to be preformed by developers on their machines and the\nmechanism to easily generate a cross section of machine data for LIVVkit.\n\nTo do this, a number of changes are necessary:\n\n* cmake scripts need to support out-of-source builds, and follow the\nstandard naming condition.\n\n* Each test should have a standard entry point -- a `runTEST.py` script that\naccepts a set of standard options (with the ability to add non-standard\ntest specific options).\n\n* implement a build and test structure. The structure can be pointed to\nany directory containing the CISM source, build that CISM somewhere user\nspecified (unless skipped), run all the supported tests cases, and\noutput all the data to some specified folder. This folder can then be\nused by LIVVkit to run the regression and performance tests (if performance\ntests were run with build and test). Therefore, you should be able to\ntest different versions of CISM quickly.\n\nTHIS COMMIT:\n\nHere I have sketched out the `build_and_test.py` structure, and reworked\nthe some of the tests to work with `build_and_test.py`.  All higher\norder tests work with this structure:\n    * dome\n    * shelf\n    * ISMIP-HOM\n    * Stream\n    * Slab (not included in tests to run)\n    * Ross (not included in tests to run)\n\nSome changes to all the higher-order tests include:\n    * Tests now accept a setup only option that creates all the\n      necessary data to run the tests and the config file. Then it\n      creates a `bash` run file that will run that test (which is parsed\n      by `build_and_test.py` to create the batch files).\n    * Tests now accept a --hpc option that short circuits the mpiexec\n      lookup (for the run file and batch file creation).\n\nI have also added a directory in tests called `new` which contains an\nannotated template for adding a new test to CISM that developers can\nuse, which is based on the reworked `runDome.py`.\n\nDome has a new option that allows the grid size (`gs`) to be scaled by a\nscale_factor (`sf`):\n    `gs_new = gs * (2**sf)`\nThis helps support the performance testing.\n\n`optparse` has been dropped for `argparse` since it's depreciated and\n`argparse` automatically generates help text.\n\nThe build structure supports:\n    * linux and mac platforms\n    * Hopper for High Performance Computing (HPC) -- part of NERSC\n        * a `setup_hopper.bash` script was added to load the proper\n          modules.\n    * Titan for HPC -- part of ORNL\n        * a `setup_titan.bash` script was added to load the proper\n          modules.\n    * Will build with trilinos library option (linux, mac -- default for\n      HPC systems) -- BUT it does not change any config file options\n    * dycore specification (no supported build scripts currently)\n    * A small set of performance tests using Dome\n\n    NOTE: `build_and_test.py` creates the necessary data and batch\n           scripts for HPC runs but does NOT submit them (yet).\n\nA README has been included that discusses how this test structure works.\n\nDome basic and forcing tests have been combined into one run file.\n    * `runDome.py` now checks for a forcing netCDF file name in the config\n      file, and if it finds it, sets up the forcing and runs CISM with\n      forcing.\n\nNOTE:\n\nThis test structure will not support serial builds. Tests will be run by\ndefault in serial mode (without mpi or the like) *on a parallel build.*\nSince performance is an essential part of V&V, not including the serial\nbuilds significantly simplifies this test structure and the LIVVkit-CISM\nworkflow.\n\nSUMMARY OF CURRENT AND ONGOING CHANGES:\n\n* a number of the directories and cmake scripts in the `builds`\ndirectory have been, or will be, renamed to enforce the existing naming\nconventions. Directories should all now follow this convention:\n   `PLATFORM-COMPILER`\nAnd cmake files follow this convention:\n   `PLATFORM-COMPILER[-DYCORE]-CMAKE`\n* There will be an additional `bash` cmake script for each of these\ncmake scripts that support out of source builds named:\n   `PLATFORM-COMPILER[-DYCORE]-CMAKE.bash`\n* The old `*-build-and-test.csh` scripts will be removed as\nPLATFORM-COMPILER combinations get supported.\n\n* Added a `regression` directory to the `tests` directory that contains\nthe build and test structure as described above.\n* Added a `new` directory to the `tests` directory that contains a\ntemplate for adding new tests to CISM.\n\n* Rework all the `dome`, `shelf`, `ISMIP-HOM`, and `stream` tests to\nwork with the build and test structure. This entails:\n    * providing a standard test entry point called `runTEST.py`\n    * upgrading and standardizing command line options for the\n    `runTEST.py` scripts.\n    * always copy the used `*.config` file to the specified output\n    directory.\n    * allow output filename to be given a modifier (to keep track of\n    runs with different settings).\n    * Make sure supporting files and documentation for each test works\n    with the new test structure.\n\nLIVVkit COMMENTS:\n\n`reg_test` and `perf_test` are going to look (quite) a bit different with\nthis structure.\n\n1) `reg_test` and `perf_test` will no longer be separate -- LIVVkit is\npLIVVkit. There is a timing optionwhich supports re-running a set of\ndome tests 10 times in order to get an idea of the variance in run time.\nOn personal (linux/mac) systems, this will re-run the dome tests, with\neach set being run in series. On HPC (titan/hopper) systems, this will\ncreate a set of job scripts in the `reg_test/PLATFORM-COMPILER/jobs`\ndirectory.\n\n2) Directory structure of the new `reg_test` will change.\n   `build_and_test.py` will create a subdirectory called\n   `PLATFORM-COMPILER` within the `reg_test` directory, which will\n   mirror the `tests` directory in CISM for the included tests. In the\n   individual tests' directories, all the data can be found.\n   Additionally, it:\n    * Copies the CMakeCashe.txt from the build directory to the data\n      directory so builds can be compared in LIVVkit\n    * Copies in the *trilinos.xml files into the test data dir since\n      tests are run from the data dir.\n\n    The `reg_test` directory location is user specifiable and it will\n    look like:\n\n    reg_test/\n    └── PLATFORM-COMPILER/\n        ├── CMakeCache.txt\n        ├── higher-order/\n        │    ├── dome/\n        │    │   ├── dome.RESO.pPRC.*\n        │    │   └── timing/\n        │    │       └── dome-t?.RESO.pPRC.*\n        │    ├── ismip-hom\n        │    │   ├── ismip-hom-a.RESO.pPRC.*\n        │    │   ├── ismip-hom-c.RESO.pPRC.*\n        │    │   └── ismip-hom-f.0100.pPRC.*\n        │    ├── shelf\n        │    │   ├── shelf-circular.RESO.pPRC.*\n        │    │   └── shelf-confined.RESO.pPRC.*\n        │    └── stream\n        │        └── stream.RESO.pPRC.*\n    --------------------------------------------\n        ├── Jobs/\n        │    ├── platform_job.small\n        │    ├── platform_job.small_timing_?\n        │    ├── platform_job.large\n        │    └── platform_job.large_timing_?\n        ├── submit_all_jobs.bash\n        └── clean_timing.bash\n\n    where * and ? are POSIX regular expressions metacharacters, RESO is\n    a number indicating the resolution the test was run at (the meaning\n    of the number is test dependent), and pPRC is a number, prefixed by\n    a p, indicating the number of processors used when running the\n    model.  Everything below the dashed line will only appear on HPC\n    systems.  `submit_all_jobs.bash` will submit all the jobs in the\n    `jobs/` directory and `clean_timing.bash` will clean out any\n    `higher-order/*/timing/` directory such that only the timing files\n    remain.\n\n3) <http://oceans11.lanl.gov/cism/livv/> should then have a folder called\n`reg_bench` which contains individual machine benchmarks, and a top\nlevel `reg_bench.tgz` file that contains everything listed in the\n`reg_bench` directory.\n    * `reg_bench`\n        * `PLATFORM-COMPILER.bench.tgz` (for all supported)\n    * `reg_bench.tgz`\n\nThis should make the LIVVkit workflow a bit easier:\n    1) `build_and_test.py` on the PLATFORM-COMPILER combination you are\n    using for development.\n    2) check out the appropriate `reg_bench/PLATFORM-COMPILER.bench.tgz`\n    file.\n    3) compare `reg_test` output from `build_and_test.py` to `reg_bench`\n\nSTILL TODO:\n\n    1) Documentation!\n        README has been added, but all test could use a better\n        description, some example workflows should be added to the LIVVkit\n        wiki, and the actual CISM manual needs to be updated to reflect\n        these changes.\n\n    2) Update peripheral scripts in the tests.\n        These include, but are not limited to, `plot*.py` scripts.","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/c798feb03519f04af32774d5506c933028d724e4"},{"sha":"a35b8ad0d3646bf342825a1210063501feea3bb3","author":{"email":"550e445786015adbefca5b553f11f7c12560b15e@ornl.gov","name":"Joseph H Kennedy"},"message":"Output double precision NetCDF data files for b4b checks.\n\nThis sets the `xtype` option to `double` so that our bit-4-bit checks\nin LIVV are actually bit-4-bit. This should resolve any issues with\nincorectly passing bit-4-bit checks when differences are really small.","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/a35b8ad0d3646bf342825a1210063501feea3bb3"},{"sha":"bbac1f2d012769f0c8bcd574be315215e586b167","author":{"email":"550e445786015adbefca5b553f11f7c12560b15e@ornl.gov","name":"Joseph H Kennedy"},"message":"Update to all (supported) CISM tests\n\nAll supported higher order tests and the halfar test now support the\n`tests/regression/build_and_test.py` structure (BATS). All plot and\nresults scripts that exist for these tests have been updated to work\nwith (possibly only) the default options in the tests' `run*.py`\nscripts.\n\nThe `netCDF.py` scripts have all been silenced so that they don't report\nwhich way you are accessing the NetCDF files anymore. This prevents a\nridiculous amount of repeated output when running `build_and_test.py`.\n\nIn the halfar test, the (only) function definition found in\n`halfarDome.py` has been incorporated into the `runHalfar.py` script\n(and `halfarDome.py` eliminated). `runHalfar.py` can now be imported\n(will only run if called as a script), and is imported in the\n`halfar_results.py` script.\n\nIn all supported tests, the READMEs have been changed to github-flavored\nmarkdown `README.md`, and they have been edited to take advantage of the\nsupported syntax. Spelling has been checked, and they have been edited\nto reflect any script/file name changes.\n\nThe template in `tests/new` has been updated and now is an annotated copy\nof the `tests/dome` test.\n\nMINOR CHANGES:\n\nA little cleanup of the HPC print statements.\n\nUses the dicts.hpc_dict keys to determine if platform is an HPC system\ninstead of a duplicate list.\n\nSpelling and comments were updated in all the test cases `run*.py`\nscripts as well.\n\nSome spelling and comments were also updated in BATS.","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/bbac1f2d012769f0c8bcd574be315215e586b167"},{"sha":"7def0ed7dd7613e86c52576b35d5da6a0dbc7617","author":{"email":"550e445786015adbefca5b553f11f7c12560b15e@ornl.gov","name":"Joseph H Kennedy"},"message":"Add velnorm to ISMIP-HOM output variables for LIVVkit","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/7def0ed7dd7613e86c52576b35d5da6a0dbc7617"},{"sha":"65d56a0b5276c1dc1e251b65802b2c57b16532a0","author":{"email":"550e445786015adbefca5b553f11f7c12560b15e@ornl.gov","name":"Joseph H Kennedy"},"message":"Minor updates to BATS README.md\n\nFixed a typo in the example run command and added a more complete\ndescription of the `reg_test` directory.","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/65d56a0b5276c1dc1e251b65802b2c57b16532a0"},{"sha":"5e8cfe48923b0d0e2f98d7ea417daffed8de1eab","author":{"email":"550e445786015adbefca5b553f11f7c12560b15e@ornl.gov","name":"Joseph H Kennedy"},"message":"Fix forcing config file name in h-o/dome/README.md","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/5e8cfe48923b0d0e2f98d7ea417daffed8de1eab"},{"sha":"db7b844c5561b990a87b8799285ccacf7e54ea50","author":{"email":"5aed555d2bd1319e6397948a784e5d0b93442eeb@lanl.gov","name":"Matthew Hoffman"},"message":"Add README.md to Slab test case\n\nAlso add warnings to scripts that the test case is experimental.","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/db7b844c5561b990a87b8799285ccacf7e54ea50"},{"sha":"858bd592be1e7389b2447d2715af20b2a109e4f7","author":{"email":"550e445786015adbefca5b553f11f7c12560b15e@ornl.gov","name":"Joseph H Kennedy"},"message":"Fix higher-order/slab test case\n\nCorrect import of runSlab.py\n\nRemove bad experiment filename modifier\n\nMove warning print statements into main execution.","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/858bd592be1e7389b2447d2715af20b2a109e4f7"},{"sha":"e73404d1632988aecda6b287f7b97a8442f67969","author":{"email":"550e445786015adbefca5b553f11f7c12560b15e@ornl.gov","name":"Joseph H Kennedy"},"message":"Bump version number.\n\nAlso discussed in #41 .","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/e73404d1632988aecda6b287f7b97a8442f67969"},{"sha":"765a38b2c3a29e83423779af0340e95b67f64271","author":{"email":"550e445786015adbefca5b553f11f7c12560b15e@ornl.gov","name":"Joseph H Kennedy"},"message":"Update all tests' plotting script (except ISMIP-HOM)\n\nIn all scripts, optparse has been dropped for argparse (optparse\ndepreciated).\n\nThe input arguments have been standardized so that each script has a\n`-o/--output_dir` and a `-f/--output_file` option. Selecting an output\ndirectory will plot the last modified `*out.nc` file found within that\ndirectory (will warn if more than one found). `-f` will plot a specific\nfile (this option can also have a path spec, and if so, it will\nover-ride the `-o` option).\n\nWhite space has been adjusted for consistency.\n\nMain plotting script has been put within a `main()` function which is\nonly run if `plot*.py` is being run as a script (for the possibility of\nimporting).\n\nThese scripts now function like their respective `run*.py` scripts.","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/765a38b2c3a29e83423779af0340e95b67f64271"},{"sha":"a948e85b2299174348ea00cbc94c78c5bb9c7c95","author":{"email":"550e445786015adbefca5b553f11f7c12560b15e@ornl.gov","name":"Joseph H Kennedy"},"message":"Update ISMIP-HOM plot script.\n\nThis changes the ISMIP-HOM plot script to plot the newest *set* of CISM\noutput files found in the output files directory.\n\n`runISMIP_HOM.py` produces filenames following this pattern:\n\n```\nismip-hom-?[-MOD].RESO.[pPROC].EXT\n```\n\nwhere `?` is the experiment (e.g. `a`), `[-MOD]` is a optionally user\nspecified filename modifier, `RESO` is the size of the experiment,\n`[pPROC.]` is the number of processors the tests was run with\n(optional), and `EXT` is the file extension.\n\nA set of files is all the `?` and `RESO` files grouped by the [-MOD] and\n[pPROC.] identifies (of lack thereof).\n\nIf more than one set is detected, only the newest set is plotted. Using\nthe `-f` option, a specific set can be selected by passing\n`plotISMIP_HOM.py` any output file that belongs to the set.\n\nA sizes option can be passed which may *limit* the set of sizes plotted\nwithin a set.","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/a948e85b2299174348ea00cbc94c78c5bb9c7c95"},{"sha":"8ef0b23c75905472e50a0e42cd81a18e7983ed46","author":{"email":"550e445786015adbefca5b553f11f7c12560b15e@ornl.gov","name":"Joseph H Kennedy"},"message":"Add a note about ISMIP-HOM plot sets.","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/8ef0b23c75905472e50a0e42cd81a18e7983ed46"},{"sha":"2cc9eeaabfd480faa2381e25d4779b01a9d8c520","author":{"email":"550e445786015adbefca5b553f11f7c12560b15e@ornl.gov","name":"Joseph H Kennedy"},"message":"Fix plotISMIP_HOM.py sizes error.\n\nFixes typo in set comparison.\n\nAlso, sorts the sizes and experiment list so that they are plotted well.","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/2cc9eeaabfd480faa2381e25d4779b01a9d8c520"},{"sha":"9e4f28d51c0b6c3bacff5566149859b0da327fa5","author":{"email":"be6e21f130e18fd37f12d6fc6ff11872524d2c12@lanl.gov","name":"Stephen Price"},"message":"add link to executable info to test case README files","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/9e4f28d51c0b6c3bacff5566149859b0da327fa5"},{"sha":"85727ea3ae9ba97428666ff9488ee0148f94b4ae","author":{"email":"5aed555d2bd1319e6397948a784e5d0b93442eeb@lanl.gov","name":"Matthew Hoffman"},"message":"Merge remote-tracking branch 'piscees/jhkennedy/regressions-rebased'\n\nThis branch introduces a build and test structure (BATS) for CISM, which is primarily\nintended for use with the [Land Ice Validation and Verification toolkit\n(LIVVkit)](https://github.com/LIVVkit/LIVVkit).\n\nIt currently works with PLATFORM-COMPILER combinations:\n* linux-gnu\n* mac-gnu\n* hopper-gnu\n* hopper-pgi\n* titan-gnu\n* titan-pgi\n\nSee the **adding build combinations** section below to see how to support more\noptions.\n\n**Note:** This is a rebase onto master of changes proposed in PR #30. Because\nLIVVkit is public, we'd like this test structure to go public instead of being\nmerged into develop. PR #30 has a more detailed and less clean development\nhistory of BATS. The comments near the bottom of PR #30 discuss how to resolve\nconflicts merging *this* branch into master.\n\nDetailed description:\n--------------------------\nThere are two complementary goals here.\n\n1) A way to automatically run a comprehensive set of tests. This allows\nusers to verify their install quickly.\n\n2) Provide a robust entry point for the [LIVVkit\nworkflow](https://github.com/LIVVkit/LIVVkit/wiki/Workflow-developer) to\ngenerate\nregression test data and re-baseline when needed. This allows real-time\nV&V testing to be preformed by developers on their machines and the\nmechanism to easily generate a cross section of machine data for LIVVkit.\n\nTo do this, a number of changes are necessary:\n\n* cmake scripts need to support out-of-source builds, and follow the\nstandard naming condition.\n\n* Each test should have a standard entry point -- a `runTEST.py` script that\naccepts a set of standard options (with the ability to add non-standard\ntest specific options).\n\n* implement a build and test structure. The structure can be pointed to\nany directory containing the CISM source, build that CISM somewhere user\nspecified (unless skipped), run all the supported tests cases, and\noutput all the data to some specified folder. This folder can then be\nused by LIVVkit to run the regression and performance tests (if performance\ntests were run with build and test). Therefore, you should be able to\ntest different versions of CISM quickly.\n\nThe build and test structure (BATS):\n----------------------------------------------\nBATS has been added to the CISM source in the `tests/regression/` subdirectory.\nA detailed description of the build and test structure can be found in the\n`tests/regression/README.md` file. In brief:\n\nA new `regression` directory was added to the `tests` directory which contains:\n\n```\n tests/\n  └── regression/\n        ├── README.md\n        ├── build_and_test.py\n        ├── setup_hopper.bash\n        ├── setup_titan.bash\n        └── util/\n              ├── __init__.py\n              ├── dicts.py\n              ├── paths.py\n              ├── runnit.py\n              └── job.template\n```\n\n`build_and_test.py` is the main run script for BATS (described in the\nREADME.md). the files in the `util/` directory are used buy `build_and_test.py`.\n\n`build_and_test.py` will build the CISM source located at `$CISM`, into a user\nspecifiable build directory, and create a `reg_test` directory (which is also\nuser specifiable), and run the tests (or in the case of HPC systems, create the\ndata and a batch job script).\n\nOnce the tests are run, reg_test will have structure like:\n\n```\n reg_test/\n    └── PLATFORM-COMPILER/\n        ├── CMakeCache.txt\n        ├── higher-order/\n        │    ├── dome/\n        │    │   ├── dome.RESO.pPRC.*\n        │    │   └── timing/\n        │    │       └── dome-t?.RESO.pPRC.*\n        │    ├── ismip-hom\n        │    │   ├── ismip-hom-a.RESO.pPRC.*\n        │    │   ├── ismip-hom-c.RESO.pPRC.*\n        │    │   └── ismip-hom-f.0100.pPRC.*\n        │    ├── shelf\n        │    │   ├── shelf-circular.RESO.pPRC.*\n        │    │   └── shelf-confined.RESO.pPRC.*\n        │    └── stream\n        │        └── stream.RESO.pPRC.*\n    --------------------------------------------\n        ├── Jobs/\n        │    ├── platform_job.small\n        │    ├── platform_job.small_timing_?\n        │    ├── platform_job.large\n        │    └── platform_job.large_timing_?\n        ├── submit_all_jobs.bash\n        └── clean_timing.bash\n```\n\nwhere `*` and `?` are POSIX regular expressions metacharacters, `RESO` is a\nnumber indicating the resolution the test was run at (the meaning of the number\nis test dependent), and `pPRC` is a number, prefixed by a `p`, indicating the\nnumber of processors used when running the model.  Everything below the dashed\nline will only appear on HPC systems.  `submit_all_jobs.bash` will submit all\nthe jobs in the `jobs/` directory and `clean_timing.bash` will clean out any\n`higher-order/*/timing/` directory such that only the timing files remain.\n\n**NOTE:** `perf_test` and `reg_test` have been combined. Likewise, LIVV and\npLIVV have been combined into one toolkit -- LIVVkit.\n\nSummary of other changes:\n-----------------------------------\n\n* All the higher-order tests and the halfar test have undergone a rework.\n    * dome now can distinguish between a forcing and non-forcing config file,\nand therefore only has a single run file now.\n    * optparse (depreciated) has been upgraded to argparse (in the test run and\nplot scripts) and the test run scripts take a standard set of options:\n```\n  -h, --help            show the help message and exit\n\n  -c CONFIG, --config CONFIG\n                        The configure file used to setup the test case and run\n                        CISM (default: ./TEST.config)\n\n  -e EXECUTABLE, --executable EXECUTABLE\n                        The CISM driver (default: ./cism_driver)\n\n  --hpc                 Shortcuts parallel run command lookup for High\n                        Performance Computing Systems. Will set run command to\n                        `time apirun -n N`. (default: False)\n\n  -m MOD, --modifier MOD\n                        Add a modifier to file names. FILE.EX will become\n                        FILE.MOD.EX (default: )\n\n  -n N, --parallel N    Run in parallel using N processors. (default: 0)\n\n  -o OUTPUT_DIR, --output-dir OUTPUT_DIR\n                        Write all created files here. (default: ./output)\n\n  -q, --quiet           Run the CISM process quietly. (default: False)\n\n  -s, --setup-only      Set up the test, but don't actually run it. (default:\n                        False)\n```\n*Note: some tests have additional test specific options to control the size,\ndomain, etc*\n\n* a `tests/new/` directory has been added that sketches out how to create a new\ntest that conforms to the testing standards needed to work with\n`build_and_test.py`.\n* Many of the builds folders and cmake files have been renamed to follow the\nstandard naming convention.\n    * The titan, hopper, linux, and mac build directories and scripts now\nconform\n    * naming convention should follow:\n```\nDirectories should all now follow this convention:\n   `PLATFORM-COMPILER`\nAnd cmake files follow this convention:\n   `PLATFORM-COMPILER[-DYCORE][-DYCORE-SPEC]-CMAKE`\n* There will be an additional `bash` cmake script for each of these\ncmake scripts that support out of source builds named:\n   `PLATFORM-COMPILER[-DYCORE][-DYCORE-SPEC]-CMAKE.bash`\n```\nwhere `DYCORE` and `DYCORE-SPEC` are used to specify dycores and other build\nspecifications (-DYCORE-SPEC takes the form of a - separated list). For example,\na cmake script may look like: `edison-intel-bisicles-petsc-cmake`.\n\n* the `.csh` build and and test strips have been eliminated in many places (and\nwill all be eliminated in the future)\n\nAdding build combinations:\n----------------------------------\n\nAdding build combinations is relatively simple. A `.bash` script needs to be\ncreated that accepts out of source builds with the appropriate cmake options.\ndiff a current `*-cmake` and `*-came.bash` to see how things are changed (hint,\nnot very much).\n\n**One big old caveat:** right now, `build_and_test.py` does not change  the\ndefault config options:\n\n```\n[options]\ndycore = X\n\n[ho_options]\nwhich_ho_babc = X\nwhich_ho_efvs = X\nwhich_ho_sparse = X\nwhich_ho_nonlinear = X\n```\n\nThese will likely need to be parsed and changed depending on a specific dycore\n(or possibly test multiple combinations). This firmly sits in \"planned future\ndevelopment\".\n\nThat said, you can either edit the default config files in the tests directory,\nor, pass each tests a config file. See **Adding tests**.\n\nAdding tests:\n----------------\n\nRight now, the best way to add a test, is to either add it to the small or large\nperformance tests dictionaries found in `util/dicts.py`, under the `# SPECIFIC\nTESTS DICTIONARIES` section. Details are describe there-in.\n\nAs an example, if you wanted to add a dome test with some non-standard config\noptions, you could add this line:\n\n```\n'KEY': '-c PATH/TO/CONFIG/file.config',\n```\n\nto the `dome_perf_small` dictionary. You can use any KEY you like; it's only\nbeing printed to the screen and won't appear in any output or data files.\n\n* piscees/jhkennedy/regressions-rebased:\n  add link to executable info to test case README files\n  Fix plotISMIP_HOM.py sizes error.\n  Add a note about ISMIP-HOM plot sets.\n  Update ISMIP-HOM plot script.\n  Update all tests' plotting script (except ISMIP-HOM)\n  Bump version number.\n  Fix higher-order/slab test case\n  Add README.md to Slab test case\n  Fix forcing config file name in h-o/dome/README.md\n  Minor updates to BATS README.md\n  Add velnorm to ISMIP-HOM output variables for LIVVkit\n  Update to all (supported) CISM tests\n  Output double precision NetCDF data files for b4b checks.\n  Creating a (python) build and test structure","distinct":true,"url":"https://api.github.com/repos/CISM/cism/commits/85727ea3ae9ba97428666ff9488ee0148f94b4ae"}]}