domainRoles:

@@if(app === 'ALL' || app === 'INDUCTION') {
  - &roleWorkpiece
    key: workpiece
    name: Workpiece
    isDomainRole: true
    roleDefaults:
      physics:
        physicsThermal:
          type: thermal
        physicsElectromagnetics:
          type: em_cc

  - &roleInductor
    key: inductor
    name: Inductor
    isDomainRole: true
    roleDefaults:
      materialKey: copper_const
      physics:
        physicsElectromagnetics:
          type: source_dom

  - &roleConcentrator
    key: concentrator
    name: Flux concentrator
    isDomainRole: true
    roleDefaults:
      physics:
        physicsElectromagnetics:
          type: em_nc

# Boundary roles
  - &roleWPSurface2D
    key: wp_surface2D
    name: Workpiece Surface
    dimension: 2
    isBoundaryRole: true
    roleDefaults:
      physics:
        physicsElectromagnetics:
          boundaryType: interface2D
        physicsThermal:
          boundaryType: combined

  - &roleWPSurface3D
    key: wp_surface3D
    name: Workpiece Surface
    dimension: 3
    isBoundaryRole: true
    roleDefaults:
      physics:
        physicsElectromagnetics:
          boundaryType: interface3D
        physicsThermal:
          boundaryType: combined

  - &roleWPSymmetry
    key: wp_symmetry
    name: Workpiece Symmetry
    dimension: 3
    isBoundaryRole: true
    roleDefaults:
      physics:
        physicsThermal:
          boundaryType: adiabatic

  - &roleWPContact2D
    key: wp_contact2D
    name: Workpiece Contact surface
    dimension: 2
    isBoundaryRole: true
    roleDefaults:
      physics:
        physicsElectromagnetics:
          boundaryType: interface2D
        physicsThermal:
          boundaryType: interface

  - &roleWPContact3D
    key: wp_contact3D
    name: Workpiece Contact surface
    dimension: 3
    isBoundaryRole: true
    roleDefaults:
      physics:
        physicsElectromagnetics:
          boundaryType: interface3D
        physicsThermal:
          boundaryType: interface

  - &roleWPAxis
    key: wp_axis
    name: Workpiece Rotation Axis
    dimension: 2
    isBoundaryRole: true
    roleDefaults:
      physics:
        physicsThermal:
          boundaryType: adiabatic
        physicsElectromagnetics:
          boundaryType: symm_axis

  - &roleTerminal
    key: terminal
    name: Terminal 1
    dimension: 3
    isBoundaryRole: true
    roleDefaults:
      physics:
        physicsElectromagnetics:
          boundaryType: current

  - &roleTerminal2
    key: terminal2
    name: Terminal 2
    dimension: 3
    isBoundaryRole: true
    roleDefaults:
      physics:
        physicsElectromagnetics:
          boundaryType: ground

  - &roleInfinity
    key: infinity
    name: Infinity
    isAirRole: true
    isBoundaryRole: true
    roleDefaults:
      physics:
        physicsElectromagnetics:
          boundaryType: infinity

  - &roleSymmetryAxis
    key: axis
    name: Symmetry Axis
    dimension: 2
    isAirRole: true
    isBoundaryRole: true
    roleDefaults:
      physics:
        physicsElectromagnetics:
          boundaryType: symm_axis

}

@@if(app === 'ALL' || app === 'ANTENNAS') {
# Dielectric roles:
  - &roleDielectric
    key: dielectric
    name: Dielectric
    roleDefaults:
      physics:
        physicsMicrowaves:
          type: em_nc

  - &roleSubstrate
    key: substrate
    name: Substrate
    roleDefaults:
      physics:
        physicsMicrowaves:
          type: em_nc

# PEC roles:
  - &rolePatch
    key: patch
    name: Patch
    roleDefaults:
      physics:
        physicsMicrowaves:
          boundaryType: perfectConductor
          type: em_pec

  - &roleGround
    key: ground
    name: Ground
    roleDefaults:
      physics:
        physicsMicrowaves:
          boundaryType: perfectConductor
          type: em_pec

  - &roleWire
    key: wire
    name: Wire
    roleDefaults:
      physics:
        physicsMicrowaves:
          type: em_pec
          boundaryType: perfectConductor

  - &roleConductor
    key: conductor
    name: Conductor
    roleDefaults:
      physics:
        physicsMicrowaves:
          boundaryType: perfectConductor
          type: em_pec

  - &roleCopper
    key: copper
    name: Copper
    roleDefaults:
      physics:
        physicsMicrowaves:
          boundaryType: perfectConductor
          type: em_pec

  - &roleTrace
    key: trace
    name: Trace
    roleDefaults:
      physics:
        physicsMicrowaves:
          boundaryType: perfectConductor
          type: em_pec

# Port roles:
  - &roleFeed
    key: feed
    name: Feed
    roleDefaults:
      physics:
        physicsMicrowaves:
          boundaryType: uniformPort
          type: em_pec

  - &rolePort
    key: port
    name: Port
    roleDefaults:
      physics:
        physicsMicrowaves:
          boundaryType: uniformPort
          type: em_pec
  - &roleFeedN
    key: feedN
    name: FeedN
    roleDefaults:
      physics:
        physicsMicrowaves:
          boundaryType: uniformPort
          type: em_pec

  - &rolePortN
    key: portN
    name: PortN
    roleDefaults:
      physics:
        physicsMicrowaves:
          boundaryType: uniformPort
          type: em_pec


}

@@if(app === 'ALL' || app === 'API') {
# Magnet roles:
  - &roleMagnet
    key: magnet
    name: Magnet
    roleDefaults:
      physics:
        physicsRotatingMagnetsEM:
          type: magnet

  - &roleMelt
    key: melt
    name: Melt
    roleDefaults:
      physics:
        physicsRotatingMagnetsEM:
          type: conductive
        physicsFluidDynamics:
          type: fluid
}
# Air
  - &roleAir
    key: air
    isAirRole: true
    @@if(app === 'ANTENNAS') {
    name: Free space
    }
    @@if(app !== 'ANTENNAS') {
    name: Air
    }
    isDomainRole: true
    roleDefaults:
      materialKey: air
      physics:
        physicsElectromagnetics:
          type: em_nc
        physicsMicrowaves:
          type: em_open
        physicsRotatingMagnetsEM:
          type: non_conductive

# Other
  - &roleOther
    key: other
    @@if(app === 'INDUCTION') {
    name: Other
    isBoundaryRole: true
    }
    @@if(app === 'ALL' || app === 'ANTENNAS') {
    name: Custom
    }
    isDomainRole: true
    roleDefaults:
      physics:
        physicsThermal: {}
        physicsElectromagnetics: {}
        physicsMicrowaves: {}
        physicsFluidDynamics: {}
        physicsRotatingMagnetsEM: {}

# Infinity role:
  - &roleInfinity
    key: infinity
    name: Infinity
    isAirRole: true
    roleDefaults:
      physics:
        physicsMicrowaves:
          boundaryType: radiationBoundary
        physicsElectromagnetics:
          boundaryType: infinity
        physicsRotatingMagnetsEM:
          boundaryType: infinity