6. Cloning a Case

If you have access to a run that you want to clone, the create_clone command will create a new case and run case.setup while preserving local modifications to the case.

Here is a simple example:

> cd $CIMEROOT/scripts
> create_clone --case $CASEROOT --clone $CLONEROOT
> cd $CASEROOT
> case.build
> case.submit

The create_clone script preserves any local namelist modifications made in the user_nl_xxxx files as well as any source code modifications in the SourceMods/ directory tree. Otherwise, your $CASEROOT directory directory will appear as if create_newcase had just been run.

Important: Do not change anything in the env_case.xml file.

See the help text for more usage information.

> create_clone --help

create_clone has several useful optional arguments. To point to the executable of the original case you are cloning from.

> create_clone --case $CASEROOT --clone $CLONEROOT --keepexe
> cd $CASEROOT
> case.submit

If the --keepexe optional argument is used, then no SourceMods will be permitted in the cloned directory. A link will be made when the cloned case is created pointing the cloned SourceMods/ directory to the original case SourceMods directory.

Warning

No changes should be made to env_build.xml or env_mach_pes.xml in the cloned directory.

create_clone also permits you to invoke the shell_commands

and user_nl_xxx files in a user_mods directory by calling:

> create_clone --case $CASEROOT --clone $CLONEROOT --user-mods-dir USER_MODS_DIR [--keepexe]

Note that an optional --keepexe flag can also be used in this case.

Warning

If there is a shell_commands file, it should not have any changes to xml variables in either env_build.xml or env_mach_pes.xml.

Another approach to duplicating a case is to use the information in the case’s README.case and CaseStatus files to create a new case and duplicate the relevant xmlchange commands that were issued in the original case. This alternative will not preserve any local modifications that were made to the original case, such as source-code or build-script revisions; you will need to import those changes manually.