Set up the Micro Manager snapshot computation.

Installation

To use the Micro Manager for snapshot computation, the dependency h5py is necessary. To install micro-manager-precice with h5py, run

pip install --user micro-manager-precice[snapshot]

If you have already installed micro-manager-precice, you can install h5py separately by running

pip install --user h5py

Preparation

Prepare your micro simulation for the Micro Manager snapshot computation by following the instructions in the preparation guide.

Note: The initialize() method is not supported for the snapshot computation.

Configuration

Configure the snapshot computation functionality with a JSON file. An example configuration file is

{
    "micro_file_name": "python-dummy/micro_dummy",
    "coupling_params": {
        "parameter_file_name": "parameter.hdf5",
        "read_data_names": {"macro-scalar-data": "scalar", "macro-vector-data": "vector"},
        "write_data_names": {"micro-scalar-data": "scalar", "micro-vector-data": "vector"},
    },
    "simulation_params": {
        "micro_dt": 1.0,
    },
    "snapshot_params": {
        "post_processing_file_name": "snapshot_postprocessing"
    },
    "diagnostics": {
        "output_micro_sim_solve_time": "True"
    }
}

This example configuration file is in examples/snapshot-config.json.

The path to the file containing the Python importable micro simulation class is specified in the micro_file_name parameter. If the file is not in the working directory, give the relative path.

There are four main sections in the configuration file, the coupling_params, the simulations_params, the snapshot_params and the optional diagnostics.

Coupling Parameters

Parameter Description
parameter_file_name Path to the HDF5 file containing the parameter space from the current working directory. Each macro parameter must be given as a dataset. Macro data for the same micro simulation should have the same index in the first dimension. The name must correspond to the names given in the config file.
read_data_names A Python dictionary with the names of the data to be read from preCICE as keys and "scalar" or "vector" as values depending on the nature of the data.
write_data_names A Python dictionary with the names of the data to be written to the database as keys and "scalar" or "vector" as values depending on the nature of the data.

Simulation Parameters

Parameter Description
micro_dt Initial time window size (dt) of the micro simulation. Must be set even if the micro simulation is time-independent.

Snapshot Parameters

Parameter Description
post_processing_file_name Path to the post-processing Python script from the current working directory. Providing a post-processing script is optional. The script must contain a class PostProcessing with a method postprocessing(sim_output) that takes the simulation output as an argument. The method can be used to post-process the simulation output before writing it to the database.
initialize_once If True, only one micro simulation is initialized and solved for all macro inputs per rank. If False a new micro simulation is initialized and solved for each macro input in the parameter space. Default is False. This option can be True if the micro simulation is not history-dependent and the same setup is shared across all micro simulations.

Diagnostics

Parameter Description
output_micro_sim_solve_time If True, the Micro Manager writes the wall clock time of the solve() function of each micro simulation to the database.

Running

Run the snapshot computation directly from the terminal by adding the --snapshot argument to the Micro Manager executable, and by providing the path to the configuration file as an input argument in the following way

micro-manager-precice --snapshot snapshot-config.json

Run the snapshot computation in parallel by

mpiexec -n <number-of-processes> micro-manager-precice --snapshot snapshot-config.json

where <number-of-processes> is the number of processes used.

Results

The results of the snapshot computation are written into output/ in HDF5-format. Each parameter is stored in a separate dataset. The dataset names correspond to the names specified in the configuration file. The first dimension of the datasets corresponds to the macro parameter index.

What happens when a micro simulation crashes during snapshot computation?

If the computation of a snapshot fails, the snapshot is skipped.