Grid Solver#

Geometry#

The grid solver operates on a regular grid specified in the `VTK ImageData`_ format. The material ID in material.yaml is referenced via the value of a PointData dataset named material. Uncompressed and zlib_ compressed datasets are supported. Using damask.Grid is the recommended way for the generation and modification of grid solver geometries.

Load Case#

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

  • solver

  • loadstep

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

      • F_dot: rate of deformation gradient during load step

      • L: velocity gradient during load step

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

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

Mixed (deformation–stress) conditions are possible but necessarily mutually exclusive (indicated by ‘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