geometry
{
  import_mesh false ; Use built-in mesh generator
  dim 2 ; dimension of the domain
  length 2e-2 ; [m]
  height 1e-2 ; [m] In 3D, the third parameters is width
  length_divisions 20 ; Number of cell layers in the length direction
  height_divisions 10 ; Number of cell layers in the height direction
}

physics
{
  thermal    true  ; Thermal simulation
  mechanical false ; Mechanical simulation. If both thermal and mechanical are
                   ; true, solve a coupled thermo-mechanical problem
}

boundary
{
  type adiabatic
}

refinement
{
  n_refinements 2 ; Number of time the cells on the paths of the beams are
                  ; refined
}

materials
{
  n_materials 1

  property_format polynomial

  material_0
  {
    solid
    {
      density 7541 ; [kg/m^3] For now all the states needs to have the same
                    ; density.
      specific_heat 600 ; [J/kg K]
      thermal_conductivity_x 26.6 ; [W/m K]
      thermal_conductivity_z 26.6 ; [W/m K]
    }

    powder
    {
      specific_heat 600 ; [J/kg K]
      density 7541 ; [kg/m^3]
      thermal_conductivity_x 0.266 ; [W/m K]
      thermal_conductivity_z 0.266 ; [W/m K]
    }

    liquid
    {
      specific_heat 775 ; [J/kg K]
      density 7541 ; [kg/m^3]
      thermal_conductivity_x 29.0 ; [W/m k] 
      thermal_conductivity_z 29.0 ; [W/m k] 
      ; Not all three states need to define the same properties or to exist
    }

    solidus 1528 ; [K]
    liquidus 1610 ; [K]
    latent_heat 227000 ; [J/kg]
  }
}

sources
{
  n_beams 1

  beam_0
  {
    type goldak ; goldak (laser) or electron_beam
    depth 1e-3 ; [m] maximum depth reached by the laser
    diameter 1e-3 ; [m]
    scan_path_file input_scan_path.txt
    scan_path_file_format segment
    absorption_efficiency 0.3 ; number between 0 and 1 equivalent to
                              ; energy_conversion_efficiency * control_efficiency
                              ; for an electron beam
    max_power 1200.0 ; [W], current * voltage for an electron beam
  }
}

time_stepping
{
  method forward_euler ; Possibilities: forward_euler, rk_third_order,
                       ; rk_fourth_order
  duration 1e-9 ; [s]
  time_step 5e-11 ; [s]
}

post_processor
{
  filename_prefix output
}

discretization
{
  thermal 
  {
    fe_degree 3
    quadrature gauss ; Optional parameter. Possibilities: gauss or lobatto
  }
}

memory_space device ; If Kokkos was compiled with GPU support, run on the device
