Grid Solver#

Geometry#

The grid solver operates on a regular grid specified in the serial VTK XML ImageData format (.vti extension). The material ID in the Material Configuration is referenced via the value of a PointData dataset named material. The material IDs in this dataset are zero-based, i.e. a maximum ID of N requires to have N+1 material definitions. Uncompressed and zlib compressed binary datasets are supported. Using damask.GeomGrid is the recommended way for the generation and modification of grid solver geometries.

Note

“Appended” data is not supported.

Load Case#

The load case of the grid solver is written in YAML style. It contains two top-level keys:

  • solver

  • loadstep

Note

The YAML parser used in DAMASK does not support advanced features, such as references and line continuation statements, unless DAMASK was compiled with libfyaml.

solver#

… is a dictionary that specifies for each considered physical phenomenon what solver to use. The following grid-based solvers are implemented

mechanical: spectral_basic | spectral_polarization | FEM
thermal: spectral
damage: spectral

loadstep#

… is a list of dictionaries that specifies the details of each individual load step in the simulation. Every load step has a number of parameters that need to be declared:

  • discretization

    • N: number of increments

    • t: time of load step in seconds, i.e. \(t = \sum_{i=1}^N \Delta t_i\)

    • r: scaling factor (default 1) in geometric time step series, i.e. \(\Delta t_{i+1} = r\,\Delta t_i\)

  • f_out: output frequency of results; e.g. \(f_\text{out} = 3\) writes results every third increment

  • f_restart: output frequency of restart information; e.g. \(f_\text{restart} = 10\) writes restart information every tenth increment

  • estimate_rate: estimate field of deformation gradient fluctuations based on former load step (default) or assume to be homogeneous, i.e. no fluctuations

  • boundary_conditions

    • mechanical

      • R: rotation axis and angle (in degrees) from grid to load frame coordinate system (defaults to no rotation, i.e. load frame coincides with grid coordinates)

      • F: deformation gradient at end of load step

      • dot_F: rate of deformation gradient during load step

      • L: velocity gradient during load step

      • P: first Piola–Kirchhoff stress at end of load step

      • dot_P: rate of first Piola–Kirchhoff stress during load step

Note

Tensors are specified as $T_{ij}$, i.e. rows are indexed by $i$ and columns by $j$.

Note

Deformation conditions must be prescribed on at least one of $ij$ or $ji$ for \(i \neq j\), i.e. off-diagonally, to prevent free body rotation.

Note

Mixed (deformation–stress) conditions are possible. However, for each tensor component $ij$, only one of the two (deformation/stress) can be prescribed; the complementary (stress/deformation) component then requires a literal x.

Example:

loadstep:

  - discretization:
      t: 100
      N: 10
    f_out: 10
    boundary_conditions:
      mechanical:
        dot_F: [[1.0e-3, 0, 0],
                [0,      x, 0],
                [0,      0, x]]
        P: [[x, x, x],
            [x, 0, x],
            [x, x, 0]]

  - discretization:
      t: 1000
      N: 50
    boundary_conditions:
      mechanical:
        dot_F: [[1.0e-3, 0, 0],
                [0,      x, 0],
                [0,      0, x]]
        P: [[x, x, x],
            [x, 0, x],
            [x, x, 0]]
    f_out: 10
    f_restart: 25