{
    "version": "0.0.0",

    "simulation": {
        "job_name": {
            "LEVEL": "BASIC",
            "prompt": "Name to use for PBS job(s)",
            "default": "geospace"
        },
        "bcwind_available": {
            "LEVEL": "BASIC",
            "prompt": "Do you have an existing solar wind file to use?",
            "default": "N",
            "valids": ["Y", "y", "N", "n"]
        },
        "bcwind_file": {
            "LEVEL": "BASIC",
            "prompt": "Name of solar wind file to use",
            "default": "bcwind.h5"
        },
        "start_date": {
            "LEVEL": "BASIC",
            "prompt": "Start date for simulation (yyyy-mm-ddThh:mm:ss)",
            "default": "2001-06-01T23:00:00"
        },
        "stop_date": {
            "LEVEL": "BASIC",
            "prompt": "Stop date for simulation (yyyy-mm-ddThh:mm:ss)",
            "default": "2001-06-02T01:00:00"
        },
        "use_segments": {
            "LEVEL": "BASIC",
            "prompt": "Do you want to split your job into multiple segments?",
            "default": "N",
            "valids": ["Y", "y", "N", "n"]
        },
        "segment_duration": {
            "LEVEL": "BASIC",
            "prompt": "Segment length in simulated seconds"
        },
        "gamera_grid_type": {
            "LEVEL": "BASIC",
            "prompt": "GAMERA grid type",
            "default": "Q",
            "valids": ["D", "Q", "O", "H"]
        },
        "gamera_grid_inner_radius": {
            "LEVEL": "INTERMEDIATE",
            "prompt": "GAMERA grid inner radius (in Earth radii)",
            "default": "2.0"
        },
        "gamera_grid_outer_radius": {
            "LEVEL": "INTERMEDIATE",
            "prompt": "GAMERA sunward outer radius (in Earth radii)",
            "default": "30.0"
        },
        "hpc_system": {
            "LEVEL": "BASIC",
            "prompt": "Name of HPC system",
            "default": "aitken",
            "valids": ["derecho", "aitken"]
        }
    },

    "pbs": {
        "_common": {
            "account_name": {
                "LEVEL": "BASIC",
                "prompt": "PBS account name"
            },
            "run_directory": {
                "LEVEL": "BASIC",
                "prompt": "Run directory",
                "default": "."
            },
            "kaiju_install_directory": {
                "LEVEL": "BASIC",
                "prompt": "Path to kaiju installation"
            },
            "kaiju_build_directory": {
                "LEVEL": "BASIC",
                "prompt": "Path to kaiju build directory"
            },
            "num_segments": {
                "LEVEL": "EXPERT",
                "prompt": "Number of sequential PBS jobs to submit for the run",
                "default": "1"
            }
        },
        "derecho": {
            "queue": {
                "LEVEL": "BASIC",
                "prompt": "PBS queue name",
                "default": "main",
                "valids": ["develop", "main", "preempt"]
            },
            "job_priority": {
                "LEVEL": "BASIC",
                "prompt": "Job priority",
                "default": "economy",
                "valids": ["regular", "economy"]
            },
            "walltime": {
                "LEVEL": "BASIC",
                "prompt": "WARNING: You are responsible for ensuring that the wall time is sufficient to run a segment of your simulation!\nRequested wall time for each PBS job segment (HH:MM:SS)",
                "default": "01:00:00"
            },
            "select": {
                "LEVEL": "EXPERT",
                "prompt": "Number of nodes to request",
                "default": {
                    "D": "2",
                    "Q": "8",
                    "O": "32",
                    "H": "128"
                }
            },
            "ncpus": {
                "LEVEL": "EXPERT",
                "prompt": "Number of cores per node",
                "default": "128"
            },
            "mpiprocs": {
                "LEVEL": "EXPERT",
                "prompt": "Number of MPI ranks per node",
                "default": "2"
            },
            "ompthreads": {
                "LEVEL": "EXPERT",
                "prompt": "Number of OMP threads per MPI rank",
                "default": "64"
            },
            "num_helpers": {
                "LEVEL": "EXPERT",
                "prompt": "Number of helper nodes",
                "default": {
                    "D": "0",
                    "Q": "2",
                    "O": "4",
                    "H": "8"
                }
            },
            "helper_mpiprocs": {
                "LEVEL": "EXPERT",
                "prompt": "Number of MPI ranks per helper node",
                "default": "1"
            },
            "helper_ompthreads": {
                "LEVEL": "EXPERT",
                "prompt": "Number of OMP threads per helper node",
                "default": "128"
            },
            "other": {
                "LEVEL": "EXPERT",
                "prompt": "Additional options for PBS -l",
                "default": ""
            },
            "modules": {
                "LEVEL": "EXPERT",
                "prompt": "Modules to load",
                "default": [
                    "ncarenv/23.06",
                    "cmake/3.26.3",
                    "craype/2.7.20",
                    "intel/2023.0.0",
                    "geos/3.9.1",
                    "ncarcompilers/1.0.0",
                    "cray-mpich/8.1.25",
                    "hdf5/1.12.2",
                    "mkl/2023.0.0"
                ]
            },
            "environment_variables": {
                "LEVEL": "EXPERT",
                "prompt": "Additional environment variable settings",
                "default": null
            },
            "mpiexec_command": {
                "LEVEL": "EXPERT",
                "prompt": "MPI command to launch run",
                "default": "mpiexec pinCpuCores.sh"
            }
        },
        "aitken": {
            "group_list": {
                "LEVEL": "BASIC",
                "prompt": "PBS group list",
                "default": null
            },
            "queue": {
                "LEVEL": "BASIC",
                "prompt": "PBS queue name",
                "default": "normal",
                "valids": ["low", "normal", "long", "debug", "devel"]
            },
            "walltime": {
                "LEVEL": "BASIC",
                "prompt": "WARNING: You are responsible for ensuring that the wall time is sufficient to run a segment of your simulation!\nRequested wall time for each PBS job segment (HH:MM:SS)",
                "default": "01:00:00"
            },
            "select": {
                "LEVEL": "EXPERT",
                "prompt": "Number of nodes to request",
                "default": {
                    "D": "2",
                    "Q": "8",
                    "O": "32",
                    "H": "128"
                }
            },
            "ncpus": {
                "LEVEL": "EXPERT",
                "prompt": "Number of cores per node",
                "default": "128"
            },
            "mpiprocs": {
                "LEVEL": "EXPERT",
                "prompt": "Number of MPI ranks per node",
                "default": "2"
            },
            "ompthreads": {
                "LEVEL": "EXPERT",
                "prompt": "Number of OMP threads per MPI rank",
                "default": "64"
            },
            "num_helpers": {
                "LEVEL": "EXPERT",
                "prompt": "Number of helper nodes",
                "default": {
                    "D": "0",
                    "Q": "2",
                    "O": "4",
                    "H": "8"
                }
            },
            "helper_mpiprocs": {
                "LEVEL": "EXPERT",
                "prompt": "Number of MPI ranks per helper node",
                "default": "1"
            },
            "helper_ompthreads": {
                "LEVEL": "EXPERT",
                "prompt": "Number of OMP threads per helper node",
                "default": "128"
            },
            "other": {
                "LEVEL": "EXPERT",
                "prompt": "Additional options for PBS -l",
                "default": ":model=mil_ait"
            },
            "modules": {
                "LEVEL": "EXPERT",
                "prompt": "Modules to load",
                "default": [
                    "nas",
                    "pkgsrc/2022Q1-rome",
                    "comp-intel/2020.4.304",
                    "mpi-hpe/mpt.2.23",
                    "hdf5/1.8.18_mpt"
                ]
            },
            "moduledir": {
                "LEVEL": "EXPERT",
                "prompt": "Module directory",
                "default": [null]
            },
            "local_modules": {
                "LEVEL": "EXPERT",
                "prompt": "Commands to add local module PATH",
                "default": [null]
            },
            "environment_variables": {
                "LEVEL": "EXPERT",
                "prompt": "Additional environment variable settings",
                "default": null
            },
            "mpiexec_command": {
                "LEVEL": "EXPERT",
                "prompt": "MPI command to launch run",
                "default": "mpiexec correctOMPenvironment.sh $nodefile omplace"
            }
        }
    },

    "gamera": {
        "sim": {
            "H5Grid": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Relative path to LFM grid file"
            },
            "doH5g": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Use an existing HDF5 LFM grid file",
                "default": "T",
                "valids": ["T", "F"]
            },
            "icType": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Initial condition type",
                "default": "user",
                "valids": ["user"]
            },
            "runid": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) Run ID for simulation",
                "default": "geospace",
                "source": "src/voltron/rcmimag.F90"
            },
            "pdmb": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) Partial donor method limit (0+-1)",
                "default": "0.75"
            },
            "rmeth": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) Reconstruction methodology",
                "default": "8C",
                "valids": ["7UP", "8C", "8CENT"]
            }
        },
        "floors": {
            "dFloor": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Lowest allowable density in MHD domain (cm**-3)",
                "default": "1.0e-4"
            },
            "pFloor": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Lowest allowable pressure in MHD domain (nPa)",
                "default": "1.0e-6"
            }
        },
        "timestep": {
            "doCPR": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) Handle minor timestep issues",
                "default": "T",
                "valids": ["T", "F"]
            },
            "limCPR": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) Pass entire MHD variable state to CHIMP, etc.",
                "default": "0.20"
            }
        },
        "restart": {
            "doRes": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Restart from a saved state",
                "default": "F",
                "valids": ["T", "F"]
            },
            "nRes": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Index of restart file to use (-1 for latest (XXXXX-symlink) restart file)",
                "default": "-1"
            },
            "resID": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Run ID for restart step",
                "default": "geospace"
            }
        },
        "physics": {
            "doBoris": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) Apply Boris correction",
                "default": "T",
                "valids": ["T", "F"]
            },
            "Ca": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Maximum value of light speed (10**5 m/s)",
                "default": "10.0"
            },
            "doMHD": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) Pass entire MHD variable state to CHIMP, etc.",
                "default": "T",
                "valids": ["T", "F"]
            }
        },
        "ring": {
            "doRing": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) Apply ring averaging around axis",
                "default": "T",
                "valids": ["T", "F"]
            },
            "gid": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) Grid type for ring averaging",
                "default": "lfm"
            }
        },
        "wind": {
            "tsfile": {
                "LEVEL": "BASIC",
                "prompt": "(GAMERA) Relative path to HDF5 file containing solar wind data",
                "default": "bcwind.h5"
            }
        },
        "source": {
            "doSource": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Ingest inner magnetosphere model moments into MHD model",
                "default": "T",
                "valids": ["T", "F"]
            },
            "doBounceDT": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) Use Alfven bounce-time weighting for inner magnetosphere ingest",
                "default": "T",
                "valids": ["T", "F"],
                "source": "src/voltron/rcmimag.F90"
            },
            "nBounce": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) Number of Alfven bounce timescales for weighting",
                "default": "1.0",
                "source": "src/voltron/rcmimag.F90"
            },
            "doWolfLim": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Use plasma beta to limit pressure ingested from RCM to MHD",
                "default": "T",
                "valids": ["T", "F"],
                "source": "src/voltron/rcmimag.F90"
            }
        },
        "iPdir": {
            "N": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Number of MPI blocks in i-direction",
                "default": {
                    "D": "2",
                    "Q": "4",
                    "O": "8",
                    "H": "16"
                }
            },
            "bcPeriodic": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) True if boundary conditions are periodic",
                "default": "F",
                "valids": ["T", "F"]
            }
        },
        "jPdir": {
            "N": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Number of MPI blocks in j-direction",
                "default": {
                    "D": "2",
                    "Q": "4",
                    "O": "8",
                    "H": "16"
                }
            },
            "bcPeriodic": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) True if boundary conditions are periodic",
                "default": "F",
                "valids": ["T", "F"]
            }
        },
        "kPdir": {
            "N": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(GAMERA) Number of MPI blocks in k-direction",
                "default": {
                    "D": "1",
                    "Q": "1",
                    "O": "1",
                    "H": "1"
                }
            },
            "bcPeriodic": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) True if boundary conditions are periodic",
                "default": "T",
                "valids": ["T", "F"]
            }
        },
        "coupling": {
            "blockHalo": {
                "LEVEL": "EXPERT",
                "prompt": "(GAMERA) Block halo MPI",
                "default": {
                    "derecho": "T",
                    "aitken": "F"
                },
                "valids": ["T", "F"]
            }
        }
    },

    "voltron": {
        "time": {
            "tFin": {
                "LEVEL": "EXPERT",
                "prompt": "(VOLTRON) Final simulated time (seconds)",
                "default": "64800.0"
            }
        },
        "spinup": {
            "doSpin": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(VOLTRON) Set to 'T' to perform a spinup period",
                "default": "T",
                "valids": ["T", "F"]
            },
            "tSpin": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(VOLTRON) Number of simulated seconds for hydrodynamic spinup",
                "default": "7200.0"
            },
            "tIO": {
                "LEVEL": "EXPERT",
                "prompt": "(VOLTRON) Simulation time to begin variable and restart dumps",
                "default": "0.0"
            }
        },
        "output": {
            "dtOut": {
                "LEVEL": "BASIC",
                "prompt": "(VOLTRON) File output cadence in simulated seconds",
                "default": "60.0"
            },
            "dtCon": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(VOLTRON) Cadence for status updates on screen in simulated seconds",
                "default": "300.0"
            }
        },
        "coupling": {
            "doQkSquish": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(VOLTRON) Use stride for field line tracing for RCM ingestion into gamera",
                "default": "T",
                "valids": ["T", "F"]
            },
            "doGCM": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(VOLTRON) Run in GCM mode",
                "default": "F",
                "valids": ["T", "F"]
            },
            "qkSquishStride": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(VOLTRON) Set stride for field line tracing for RCM ingestion into gamera (must be integer power of 2)",
                "default": "2",
                "NOTE": "Should be computed based on grid resolution."
            },
            "dtCouple": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(VOLTRON) Interval in simulated seconds between component coupling",
                "default": "5.0"
            },
            "doDeep": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(VOLTRON) Use an inner magnetosphere model?",
                "default": "T",
                "valids": ["T", "F"]
            },
            "imType": {
                "LEVEL": "EXPERT",
                "prompt": "(VOLTRON) Inner magnetosphere model to use",
                "default": "RAIJU",
                "valids": ["RAIJU"]
            },
            "doAsyncCoupling": {
                "LEVEL": "EXPERT",
                "prompt": "(VOLTRON) Perform asynchronous model coupling",
                "default": {
                    "derecho": "F",
                    "aitken": "T"
                },
                "valids": ["T", "F"]
            }
        },
        "restart": {
            "dtRes": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(VOLTRON) Cadence for restart file generation in simulated seconds",
                "default": "1800.0"
            }
        },
        "imag": {
            "doInit": {
                "LEVEL": "EXPERT",
                "prompt": "(VOLTRON) Initialize inner magnetosphere model",
                "default": "T",
                "valids": ["T", "F"],
                "source": "src/voltron/rcmimag.F90"
            }
        },
        "helpers": {
            "numHelpers": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(VOLTRON) Number of helper nodes",
                "default": null,
                "NOTE": "Will be computed"
            },
            "useHelpers": {
                "LEVEL": "EXPERT",
                "prompt": "(VOLTRON) Set to T to use helper nodes for coupling with RCM",
                "default": "T",
                "valids": ["T", "F"],
                "SOURCE": "src/drivers/voltron_mpix.F90"
            },
            "doSquishHelp": {
                "LEVEL": "EXPERT",
                "prompt": "(VOLTRON) Override default number of squish blocks",
                "default": "T",
                "valids": ["T", "F"]
            }
        }
    },

    "chimp": {
        "units": {
            "uid": {
                "LEVEL": "EXPERT",
                "prompt": "(CHIMP) Name of units system for GAMERA inputs to CHIMP",
                "default": "EARTHCODE",
                "valids": ["EARTH", "EARTHCODE", "JUPITER", "JUPITERCODE", "SATURN", "SATURNCODE", "HELIO", "LFM", "LFMJUPITER" ]
            }
        },
        "fields": {
           "grType": {
                "LEVEL": "EXPERT",
                "prompt": "(CHIMP) NExpected grid type for GAMERA output",
                "default": "lfm",
                "valids": ["lfm", "egg", "sph"]
            }
        },
        "domain": {
            "dtype": {
                "LEVEL": "EXPERT",
                "prompt": "(CHIMP) NDomain over which to perform CHIMP calculations",
                "default": "MAGE",
                "valids": ["SPH", "LFM", "LFMCYL", "MAGE", "EGG", "ELL"]
            }
        },
        "tracer": {
            "epsds": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(CHIMP) NTolerance level for field-line tracer integration",
                "default": "0.05"
            }
        }
    },

    "remix": {
        "conductance": {
            "doStarlight": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(REMIX) Compute starlight contribution to conductance",
                "default": "T",
                "valids": ["T", "F"]
            },
            "apply_cap": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(REMIX) Apply cap to Hall conductance based on Pedersen conductance",
                "default": "T",
                "valids": ["T", "F"]
            },
            "const_sigma": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(REMIX) Use constant conductance",
                "default": "F",
                "valids": ["T", "F"]
            }
        },
        "precipitation": {
            "aurora_model_type": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(REMIX) Name of auroral precipitation model to use",
                "default": "LINMRG",
                "valids": ["FEDDER", "ZHANG", "RCMHD", "RCMONO", "RCMFED", "LINMRG"]
            },
            "beta": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(REMIX) Loss cone filling fraction",
                "default": "0.2"
            },
            "doAuroralSmooth": {
                "LEVEL": "INTERMEDIATE",
                "prompt": "(REMIX) Enable Auroral Smoothing",
                "default": "F",
                "valids": ["T", "F"]
            }
        }
    },

    "raiju": {
        "output": {
            "loudConsole": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) loudConsole",
                "default": "F",
                "valids": ["T", "F"]
            }
        },
        "grid": {
            "gType": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) gType",
                "default": "SHGRID",
                "valids": ["SHGRID"]
            },
            "ThetaL": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) ThetaL",
                "default": "15",
                "valids": ["15"]
            }
        },
        "domain": {
            "tail_buffer": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) tail_buffer",
                "default": "15.0",
                "valids": ["15.0"]
            },
            "sun_buffer": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) sun_buffer",
                "default": "15.0",
                "valids": ["15.0"]
            },
            "tail_active": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) tail_active",
                "default": "12.0",
                "valids": ["12.0"]
            },
            "sun_active": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) sun_active",
                "default": "12.0",
                "valids": ["12.0"]
            }
        },
        "config": {
            "fname": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) fname",
                "default": "raijuconfig.h5",
                "valids": ["raijuconfig.h5"]
            }
        },
        "plasmasphere": {
            "doPsphere": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) doPsphere",
                "default": "T",
                "valids": ["T", "F"]
            },
            "doExcessMap": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) doExcessMap",
                "default": "T",
                "valids": ["T", "F"]
            }
        },
        "losses": {
            "doLosses": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) doLosses",
                "default": "T",
                "valids": ["T", "F"]
            },
            "doCX": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) doCX",
                "default": "T",
                "valids": ["T", "F"]
            },
            "doCC": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) doCC",
                "default": "T",
                "valids": ["T", "F"]
            },
            "doEWM": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) doEWM",
                "default": "T",
                "valids": ["T", "F"]
            },
            "ewmType": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) ewmType",
                "default": "SS",
                "valids": ["SS"]
            }
        },
        "cpl": {
            "nFluidsIn": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) nFluidsIn",
                "default": "1",
                "valids": ["1"]
            },
            "startupTscl": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) startupTscl",
                "default": "7200.0",
                "valids": ["7200.0"]
            }
        },
        "fluidIn1": {
            "imhd": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) imhd",
                "default": "0",
                "valids": ["0"]
            },
            "flav": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) flav",
                "default": "2",
                "valids": ["2"]
            },
            "excessToPsph": {
                "LEVEL": "EXPERT",
                "prompt": "(RAIJU) excessToPsph",
                "default": "T",
                "valids": ["T", "F"]
            }
        }
    }

}
