GEOS-ESM / GOCART

GOCART Aerosol model including process library and framework interfaces (MAPL, NUOPC, and CCPP)
Apache License 2.0
13 stars 14 forks source link

Make OPS Emissions a directory like AMIP/AMIP.20C? #147

Open mathomp4 opened 2 years ago

mathomp4 commented 2 years ago

This is a question for @amdasilva just from my own thoughts.

Currently in, say, CA2G we have:

CA2G_GridComp/
├── AMIP
│   ├── CA2G_GridComp_ExtData.rc
│   ├── CA2G_instance_CA.bc.rc -> ../CA2G_instance_CA.bc.rc
│   ├── CA2G_instance_CA.br.rc -> ../CA2G_instance_CA.br.rc
│   └── CA2G_instance_CA.oc.rc -> ../CA2G_instance_CA.oc.rc
├── AMIP.20C
│   ├── CA2G_GridComp_ExtData.rc
│   ├── CA2G_instance_CA.bc.rc -> ../CA2G_instance_CA.bc.rc
│   ├── CA2G_instance_CA.br.rc -> ../CA2G_instance_CA.br.rc
│   └── CA2G_instance_CA.oc.rc -> ../CA2G_instance_CA.oc.rc
├── CA2G_GridCompMod.F90
├── CA2G_GridComp_ExtData.rc
├── CA2G_StateSpecs.rc
├── CA2G_instance_CA.bc.rc
├── CA2G_instance_CA.br.rc
├── CA2G_instance_CA.oc.rc
└── CMakeLists.txt

where the OPS emissions files are the ones in the main directory. What I'm wondering is might there be a benefit to having instead:

CA2G_GridComp
├── AMIP
│   ├── CA2G_GridComp_ExtData.rc
│   ├── CA2G_instance_CA.bc.rc -> ../OPS/CA2G_instance_CA.bc.rc
│   ├── CA2G_instance_CA.br.rc -> ../OPS/CA2G_instance_CA.br.rc
│   └── CA2G_instance_CA.oc.rc -> ../OPS/CA2G_instance_CA.oc.rc
├── AMIP.20C
│   ├── CA2G_GridComp_ExtData.rc
│   ├── CA2G_instance_CA.bc.rc -> ../OPS/CA2G_instance_CA.bc.rc
│   ├── CA2G_instance_CA.br.rc -> ../OPS/CA2G_instance_CA.br.rc
│   └── CA2G_instance_CA.oc.rc -> ../OPS/CA2G_instance_CA.oc.rc
├── CA2G_GridCompMod.F90
├── CA2G_StateSpecs.rc
├── CMakeLists.txt
└── OPS
    ├── CA2G_GridComp_ExtData.rc
    ├── CA2G_instance_CA.bc.rc
    ├── CA2G_instance_CA.br.rc
    └── CA2G_instance_CA.oc.rc

We still use symlinks to prevent code duplication, but now it's a bit more obvious that some files belong to the OPS emissions without knowledge that the "main directory" ones are those.

I only say this because then in the $EXPDIR/RC directory, a user would have an OPS, AMIP, and AMIP.20C directory where you'd know if you want to affect an OPS emissions run, you change the files in OPS. At the moment, you have to know that $EXPDIR/RC/CA2G_GridComp_ExtData.rc is the one for OPS and $EXPDIR/RC/AMIP/CA2G_GridComp_ExtData.rc is the one for AMIP.

Obviously, we'd need to make scripting changes, etc (as well as concurrent changes in Chem), but it might make things a bit clearer?

Not sure. Thought I'd ask.

mmanyin commented 2 years ago

@mathomp4 This is an attractive solution to the current asymmetry; it would more clearly delineate the set of files specifically designated for OPS runs, and if a user wanted to update a particular resource file, they would not make the mistake of editing (for example) the version of the file in RC/ when they really meant to change the version under RC/AMIP.