# ENH: multiLevel: native scotch implementation of multi-level

### Summary

Support multi-level type decomposition using native scotch functionality. multi-level decomposition is e.g. used when processor-processor communication is more expensive if the two processors are not on the same node. Hence it makes sense to minimise 'cuts' between nodes at the cost of increasing 'cuts' between processors on the same node. This is supported natively in scotch by specifying different costs.

### Resolved bugs (If applicable)

### Details of new models (If applicable)

Specify a hierarchy of decompositions. Specify different weights traversing the hierarchy.

```
numberOfSubdomains 2048;
coeffs
{
// Divide into 64 nodes, each of 32 cores
domains (64 32);
// Inside a nodes the communication weight is 1% of that inbetween nodes
domainWeights (1 0.01);
}
```

Alternatively the first-level decomposition can be left out by assuming weights are 1 for that level:

```
numberOfSubdomains 2048;
coeffs
{
// Divide into 2048/32=64 nodes
domains (32);
// Inside a node the communication weight is 1% of that inbetween nodes
domainWeights (0.01);
}
```
### Risks
```