 #
  # ROTATING MAGNET ELECTROMAGNETICS.
  #
  - &physicsRotatingMagnetsEM
    key: &physicsKey physicsRotatingMagnetsEM
    name: &physicsName EM for Magnets
    description: #subPhysicsRotatingMagnetsGeneral2D
    arguments: &argRotatingMagnetsEM

    physicalProperties:
      - &propMagneticPermeability
        key: mu
        name: Magnetic permeability
        symbol: "\\mu_r"
        units: "-"
        baseUnits: siNone
        min: 0
        minExclude: true

      - &propRemanence
        key: br
        name: Magnet Remanence
        symbol: "B_r"
        units: "T"
        baseUnits: siMagneticFluxDensity
        min: 0
        minExclude: false

      - &propElectricConductivity
        key: sigma
        name: Electric conductivity
        symbol: "\\sigma"
        units: "\\frac{S}{m}"
        baseUnits: siSimensOnMeter
        min: 0
        minExclude: false
        
      - &angularVelocity
        key: Omega
        name: Angular velocity
        symbol: "\\Omega"
        units: "\\frac{rad}{s}"
        baseUnit: siAngularVelocity
        default: 0
        
    boundaryTypes:
      - &infinity
        id: 1
        key: infinity
        name: Infinity
        description: Zero vector potential at the boundary

      - &flux_parallel
        id: 2
        key: flux_parallel
        name: Flux parallel
        description: Magnetic field lines are parallel to the boundary

      - &flux_normal
        id: 3
        key: flux_normal
        name: Flux normal
        description: Magnetic field lines are normal to the boundary

      - &interface
        id: 4
        key: interface
        name: Interface
        description: Internal face between two domains
        isInterfaceType: true
        isOuterType: false

    domainTypes:
      - &domainEMNonConductive
        id: 1
        key: non_conductive
        name: Non-conductive
        material:
          properties:
            - *propMagneticPermeability
        boundaryTypes:
          - *infinity
          - *flux_parallel
          - *flux_normal
          - *interface
          
      - &domainEMConductive
        id: 2
        key: conductive
        name: Non-conductive
        material:
          properties:
            - *propMagneticPermeability
            - *propElectricConductivity
        boundaryTypes:
          - *infinity
          - *flux_parallel
          - *flux_normal
          - *interface
          
      - &domainEMMagnet
        id: 3
        key: magnet
        name: Magnet
        material:
          properties:
            - *propMagneticPermeability
            - *propRemanence
        boundaryTypes:
          - *infinity
          - *flux_parallel
          - *flux_normal
          - *interface

    subPhysicsParts:
      #
      # Rotating magnets electromagnetics general
      #
      - &subPhysicsRotatingMagnetsGeneral
        key: subPhysicsRotatingMagnetsGeneral
        name: Rotating Magnets Electromagnetics
        description: "Solves Rotating Magnets Electromagnetics"
        physicsKey: *physicsKey
        physicsName: *physicsName
        arguments: *argRotatingMagnetsEM

        timeTypes:
          - *timeHarmonic
          - *timeSteady

        domainTypes:
          - *domainEMNonConductive
          - *domainEMConductive
          - *domainEMMagnet


    subPhysics:
      - key: subPhysicsRotatingMagnets
        name: Rotating Magnets Electromagnetics
        description: "Solver for rotating magnets electromagnetics"

        basisList:
          -
            key: subPhysicsRotatingMagnets2D
            basis: *mesh2D
            name: Rotating Magnets Electromagnetics
            description: "Solver for rotating magnets electromagnetics"
            physicsList:
              - *subPhysicsRotatingMagnetsGeneral

          -
            key: subPhysicsRotatingMagnets3D
            basis: *mesh3D
            name: Rotating Magnets Electromagnetics
            description: "Solver for rotating magnets electromagnetics"
            physicsList:
              - *subPhysicsRotatingMagnetsGeneral
