This code has been superseded by a new version that can be found here: https://github.com/hpcflow/matflow-new.
MatFlow is a framework for running reproducible workflows in materials science developed in the EPSRC programme grant LightForm, a research programme on light alloy formability. It is a python program that interacts with software (open-source and proprietary) used in materials science via extensions (see supported extensions below). It is particularly suited for hybrid workflows (involving experimental data and computational work), like for example HPC model calibration. Outputs,together with details of the worflow are automatically stored in an open source file format for post-processing, which Matflow can automatically upload to data repositories like Zenodo.
See this repository for information regarding a MatFlow installation.
MatFlow uses extension packages to interact with arbitrary software. Here is a list of current MatFlow extensions.
Software | Description | Status | Version |
---|---|---|---|
DAMASK | Düsseldorf Advanced Material Simulation Kit (crystal plasticity) | Released | |
MTEX | Matlab toolbox for analyzing and modeling crystallographic textures | Released | |
formable | Formability analyses in Python | Released | |
DefDAP | A python library for correlating EBSD and HRDIC data. | Released | |
Abaqus | Finite element analysis | In-progress | |
Neper | Polycrystal generation and meshing | Released/In-progress |
Label | Attributes | Output from tasks | Input to tasks |
---|---|---|---|
ODF | crystal_symmetry speciment_symmetry euler_angles euler_angle_labels weights orientation_coordinate_system |
get_model_texture estimate_ODF |
sample_texture |
microstructure_seeds | position orientations grid_size phase_label |
generate_microstructure_seeds | generate_volume_element |
orientations | euler_angles euler_angle_labels orientation_coordinate_system |
sample_texture | generate_volume_element |
volume_element | grid size origin orientations grain_orientation_idx grain_phase_label_idx phase_labels voxel_grain_idx voxel_homogenization_idx |
generate_volume_element | visualise_volume_element simulate_volume_element_loading |
load_case | total_time num_increments def_grad_aim def_grad_rate stress rotation |
generate_load_case | simulate_volume_element_loading |
volume_element_response | ... | simulate_volume_element_loading |
Default run options (i.e. options passed to the scheduler) can be specified in a few ways. Firstly, within the workflow file, run_options
specified at the top-level will be used for any tasks that do not have a run_options
specified. If a task does have a run_options
key specified, the global run_options
will not be used at all for that task.
Additionally, you can specify default run options in the MatFlow configuration file (config.yml
, by default generated in ~/.matflow
) with the options default_run_options
and default_sticky_run_options
. The "sticky" defaults are merged with any run options specified in the workflow file (with workflow-specified options taking precedence), whereas the "non-sticky" defaults are only used if no run options are supplied for a task. If no run options are supplied for a task, then both the "sticky" and "non-sticky" defaults will be used (with the "non-sticky" defaults taking precedence over the "sticky" defaults). Similar keys exist for task preparation and processing run options: default_preparation_run_options
, default_sticky_preparation_run_options
and default_processing_run_options
, default_sticky_processing_run_options
.