10. Exchange surface

In the context of multi-method simulation or multi-scale simulation it often happens that numerical data produced by a computation must be used as input by another computation.

The exchange surface stores numerical data on a mesh according the huygens principle or the reciprocity principle.

10.1. Exchange Surface

An exchange surface is a named HDF5 group child of the category /exchangeSurface.

An exchange surface has two attributes :

  • type. The type can take the following values :
    • reciprocity
    • huygens
    • gauss
  • nature
    • outside : the energy is radiated outside the surface
    • inside : the energy is radiated inside the surface

Example an exchangeSurface called /exchangeSurface/$surf1 :

data.h5
|-- mesh/
|   `-- $gmesh1/
|       `-- $mesh1[@type=unstructured]
`-- exchangeSurface/
    `-- $surf1[@type=huygens
               @nature=inside]

An exchange surface can have several single surfaces children, each single surface contains a quantity component relative to the principle surface.

10.2. Single Surface

An exchange surface can have several single surfaces, a quantity per single surface is stored. Each quantity is then stored in an HDF5 named group child of the exchange surface.

A single surface is a floatingType equals arraySet representing numerical data on mesh (see Numerical data on mesh).

Example of an exchange surface /exchangeSurface/$surf1 made up of two single surfaces /exchangeSurface/$surf1/$surf11 and /exchangeSurface/$surf1/$surf12 :

data.h5
|-- mesh/
|   `-- $gmesh1/
|       `-- $mesh1[@type=unstructured]
|           |-- nodes
|           `-- group
|               |-- $point_cloud[@type=node]
|               `-- $exchange_surface[@type=element
|                                     @entityType=face]
`-- exchangeSurface
    `-- $surf1[@type=huygens
        |      @nature=inside]
        |-- $surf11[@floatingType=arraySet           # single surface
        |    |       @physicalNature=electricField
        |    |       @unit=voltPerMeter]
        |    |-- data
        |    `-- ds
        |        |-- dim1[@physicalNature=component]
        |        `-- dim2[@physicalNature=meshEntity
        |                 @meshEntity=/mesh/$gmesh1/$mesh1/group/$exchange_surface]
        `-- $surf11[@floatingType=arraySet           # single surface
            |       @physicalNature=magneticField
            |       @unit=henryPerMeter]
            |-- data
            `-- ds
                |-- dim1[@physicalNature=component]
                `-- dim2[@physicalNature=meshEntity
                         @meshEntity=/mesh/$gmesh1/$mesh1/group/$exchange_surface]

In addition, consider a points cloud representing locations where physical quantities are computed. The huygens principle implies physical quantities are balanced by the a surface and oriented. The approach is to create a mesh with patches, the surface of a patch is the weight, a patch is also oriented, so the single surface is properly defined.

Example :

data.h5
|-- mesh/
|   `-- $gmesh1
|       `-- $mesh2[@type=unstructured]
|           |-- nodes
|           |-- elementTypes
|           `-- group
|               `-- $circular_patch[@type=element
|                                   @entityType=face]
`-- exchangeSurface
    `-- $surf1[@type=huygens
        |      @nature=inside]
        |-- $surf11[@floatingType=arraySet           # single surface
        |    |       @physicalNature=electricField
        |    |       @unit=voltPerMeter]
        |    |-- data
        |    `-- ds
        |        |-- dim1[@physicalNature=component]
        |        `-- dim2[@physicalNature=meshEntity
        |                 @meshEntity=/mesh/$gmesh1/$mesh2/group/$circular_patch]
        `-- $surf11[@floatingType=arraySet           # single surface
            |       @physicalNature=magneticField
            |       @unit=henryPerMeter]
            |-- data
            `-- ds
                |-- dim1[@physicalNature=component]
                `-- dim2[@physicalNature=meshEntity
                         @meshEntity=/mesh/$gmesh1/$mesh2/group/$circular_patch]

data.h5:/mesh/$gmesh1/mesh2/group/$circular_patch is a group of circle elements, their center are the quantities location, the surface is the weight of each value.