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
. The name’s length must have less than 20
characters.
An exchange surface has two attributes :
type
. Thetype
can take the following values :reciprocity
huygens
gauss
nature
outside
: the energy is radiated outside the surfaceinside
: 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.
The name’s length of the component group must have less than 20 characters.
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.