Step 1: Material modelΒΆ

The first step to perform a CRATE simulation is to generate a suitable computational model that characterizes the microstructure of the heterogeneous material under analysis.

Attending to the concepts introduced here, such a computational model is named Representative Volume Element (RVE) and can be obtained in two different ways:

  • Experimentally. Through a suitable microstructure imaging method (e.g., two-dimensional scanning electron microscopy (SEM), three-dimensional micro-computed tomography (\({\mu}\) CT));

  • Computationally. Adopting a suitable computational generation method (e.g., AMINO for particle-reinforced materials, NEPER for polycrystalline materials).

Note

The generation of the RVE is not part of CRATE!


CRATE accepts any kind of RVE that satisfies the following requirements:

  • Requirement 1: The RVE must be quadrilateral (2d) or paralelepipedic (3d);

  • Requirement 2: The RVE must be spatially discretized in a regular grid of voxels, where each voxel is associated with a given material phase as illustrated below:


../../_images/doc_CRATE_spatial_discretization_file.png

  • Requirement 3: The RVE spatial discretization file (.rgmsh file) that is ultimately provided to CRATE as part of the input data must be generated with NumPy as demonstrated and explained in the following Python (pseudo-)script:

    # python_script.py
    
    # The RVE discretization in a regular grid of voxels (2d or 3d), where each voxel
    # is associated with a given material phase, must be materialized as a NumPy ndarray
    # (2d or 3d), where each entry corresponds to a given voxel. Hence, each entry of the
    # ndarray contains the identifier (integer) of the corresponding voxel's material phase.
    # Assume that the ndarray is called `regular_grid`.
    regular_grid = ...
    
    # The spatial discretization file (.rgmsh) is then generated by saving the `regular_grid`
    # ndarray in binary format through the NumPy save function. Note that this appends the
    # .npy extension to the filename.
    np.save('example_rve.rgmsh', regular_grid)
    
    # Output: example_rve.rgmsh.npy file