<?xml version="1.0" encoding="UTF-8" ?>
<precice-configuration>
  <log>
    <sink
      filter="%Severity% > debug and %Rank% = 0"
      format="---[precice] %ColorizedSeverity% %Message%"
      enabled="true" />
  </log>

  <data:scalar name="Temperature" waveform-degree="1" />
  <data:scalar name="Heat-Flux" waveform-degree="1" />

  <mesh name="Dirichlet-Mesh" dimensions="2">
    <use-data name="Temperature" />
    <use-data name="Heat-Flux" />
  </mesh>

  <mesh name="Neumann-Mesh" dimensions="2">
    <use-data name="Temperature" />
    <use-data name="Heat-Flux" />
  </mesh>

  <participant name="Dirichlet">
    <provide-mesh name="Dirichlet-Mesh" />
    <receive-mesh name="Neumann-Mesh" from="Neumann" />
    <write-data name="Heat-Flux" mesh="Dirichlet-Mesh" />
    <read-data name="Temperature" mesh="Dirichlet-Mesh" />
    <mapping:nearest-neighbor
      direction="read"
      from="Neumann-Mesh"
      to="Dirichlet-Mesh"
      constraint="consistent" />
  </participant>

  <participant name="Neumann">
    <provide-mesh name="Neumann-Mesh" />
    <receive-mesh name="Dirichlet-Mesh" from="Dirichlet" />
    <write-data name="Temperature" mesh="Neumann-Mesh" />
    <read-data name="Heat-Flux" mesh="Neumann-Mesh" />
    <mapping:nearest-neighbor
      direction="read"
      from="Dirichlet-Mesh"
      to="Neumann-Mesh"
      constraint="consistent" />
  </participant>

  <m2n:sockets acceptor="Dirichlet" connector="Neumann" exchange-directory="." />

  <coupling-scheme:serial-implicit>
    <participants first="Dirichlet" second="Neumann" />
    <max-time value="1.0" />
    <time-window-size value="0.1" />
    <max-iterations value="100" />
    <exchange
      data="Heat-Flux"
      mesh="Dirichlet-Mesh"
      from="Dirichlet"
      to="Neumann"
      initialize="true"
      substeps="true" />
    <exchange
      data="Temperature"
      mesh="Neumann-Mesh"
      from="Neumann"
      to="Dirichlet"
      initialize="true"
      substeps="true" />
    <relative-convergence-measure data="Heat-Flux" mesh="Dirichlet-Mesh" limit="1e-10" />
    <relative-convergence-measure data="Temperature" mesh="Neumann-Mesh" limit="1e-10" />
    <!-- <acceleration:IQN-ILS>
      <data name="Temperature" mesh="Neumann-Mesh" />
      <initial-relaxation value="0.1" />
      <max-used-iterations value="10" />
      <time-windows-reused value="5" />
      <filter type="QR2" limit="1e-3" />
    </acceleration:IQN-ILS> -->
    <acceleration:constant>
      <relaxation value="0.5" />
    </acceleration:constant>
  </coupling-scheme:serial-implicit>
</precice-configuration>
