Preparing inputs


Preparing inputs#


As mentioned earlier, we assume that all inputs and outputs are already computed here. So, native2inputs only needs to copy or link the pre-computed file to the working directory. native2inputs is based on the following structure:

def native2inputs(self, datastore, input_type, datei, datef, mode,
                  runsubdir, workdir):
    """Converts data at the model data resolution to model compatible input

        self: the model Plugin
        input_type (str): type of input; should be consistent
            with self.required_inputs as specified in
        datastore: data to convert
        datei, datef: date interval of the sub-simulation
        mode (str): running mode: one of 'fwd', 'adj' and 'tl'
        runsubdir (str): sub-directory for the current simulation
        workdir (str): the directory of the whole pyCIF simulation


    if input_type == 'input_type_1':

    if input_type == 'input_type_2':


It is important to note that native2inputs needs that the model has an attribute called required_inputs defined in the file:

def ini_data(plugin, **kwargs):
    """Initializes the model

        plugin (dict): dictionary defining the plugin
        **kwargs (dictionary): possible extra parameters

        loaded plugin and directory with executable


    info("Initializing the model")


    # Required inputs for running a simulation
    plugin.required_inputs = ['exe', 'nml', 'fluxes',
                              'meteo', 'inicond', 'latcond', 'topcond',
                              'any-input-type', 'your-output-for-the-tuto-purpose'...]

Once native2inputs is coded, it is necessary to test that it correctly sets up a working directory