Solvers usage

Environment variables

General variables

Variable

Description

Default value

TMPDIR

Out-Of-Core folder

/tmp (Linux) or TEMP (Windows)

OMP_NUM_THREADS

OpenMP threads number

1

MKL_NUM_THREADS

MKL threads number

1

H-matrix variables

Variable

Description

Default value

HMAT_NCPU

HMat threads number

all cores

HMAT_LIMIT_MEM

Available memory in MiB

55% of physical memory

HMAT_DISABLE_OOC

Disable Out-Of-Core

no

StarPU variables

Variable

Description

Default value

STARPU_WORKERS_NOBIND

Disable thread binding

enabled

STARPU_DISK_SWAP

Out-Of-Core folder

TMPDIR

anadel

job

Compute degrees of freedom

digraph anadel {
   rankdir=LR;
   node [shape = note] unv, d01, d01_h;
   node [shape = box] anadel;
   unv -> anadel;
   anadel -> d01;
   anadel -> d01_h;
}

Examples

Run anadel

anadel mesh.unv 4

Run anadel on compressed mesh

anadel mesh.unv.gz 4

Run anadel with low frequency option

anadel --bf mesh.unv 4

Override default units (meter) or unv units

anadel --units=mm mesh.unv 4

Define group for elements in no group

anadel --defaultgroup <group> mesh.unv 4

metanadel

job

Compute degrees of freedom for Layer formulation

Note

We assume anadel is in the PATH.

digraph metanadel {
   rankdir=LR;
   node [shape = note] unv, d01;
   node [shape = box] metanadel;
   node [shape = note, label="d01h.xml"] d01_hxml;
   unv -> metanadel;
   metanadel -> d01;
   metanadel -> d01_hxml;
}

Examples

Get help

metanadel anadel --help

Run metanadel

metanadel anadel mesh.unv mesh.d01

Run metanadel on compressed mesh

metanadel anadel mesh.unv.gz mesh.d01.gz

Run metanadel with low frequency option

metanadel anadel --bf mesh.unv.gz mesh.d01.gz

Override default units (meter) or unv units

metanadel anadel --units=mm mesh.unv.gz mesh.d01.gz

Define group for elements in no group

metanadel anadel --default-group <group> mesh.unv.gz mesh.d01.gz

calcvp

job

Compute eigenvalues for rectangular waveguides.

Warning

This stage will modify the p01 file in place.

digraph metanadel {
   rankdir=LR;
   node [shape = note] p01;
   node [shape = box] calcvp;
   node [shape = note] dat;
   p01 -> calcvp -> p01;
   calcvp -> dat;
}

Examples

calcvp --p01 basename.p01

modes

job

Compute modes on modal surfaces

digraph metanadel {
   rankdir=LR;
   node [shape = note] p01;
   node [shape = box] modes;
   node [shape = record, label="diff1|...|diffN"] diff;
   node [shape = record, label="inc1|...|incN"] inc;
   p01 -> modes;
   modes -> diff;
   modes -> inc;
}

Examples

modes --p01 basename.p01

elfipole

job

Solve BEM problem

digraph elfipole {
   rankdir=LR;
   node [shape = note] p01, d01, res, r01_h;
   node [shape = box] elfipole;
   node [shape = record, label="c01|f01|i01|j01|n01|s01"] x01;
   p01 -> elfipole;
   d01 -> elfipole;
   elfipole -> res;
   elfipole -> r01_h;
   elfipole -> x01;
}

Warning

Some distributions of ASERIS-BE provides elfipole with the legacy name AS_ELFIP_FMM.

Examples

Display version and exit

elfipole --version

Examples: general options

Default direct solver

elfipole --p01 basename.p01

Use single precision

elfipole --p01 basename.p01 --cprec

Define environment variables

elfipole --p01 basename.p01 --putenv ENVVAR=value [--putenv ENVAR=value [...]]

Examples: low frequency optimizations

The low frequency model generated by anadel or metanadel with the --bf option is sufficient for the numerical stabilization. You can use the following options for additional optimization.

Warning

These options require a low frequency model.

Eddy current simulation

elfipole --p01 basename.p01 --bfh
elfipole --p01 basename.p01 --bfeh

Examples: FMM

Block GMRES iterative solver with FMM acceleration (aka “FMM” solver)

elfipole --p01 basename.p01 --fmm

FMM solver with high accuracy (slower)

elfipole --p01 basename.p01 --fmm --high

FMM solver with low accuracy (faster)

elfipole --p01 basename.p01 --fmm --low

Warning

The FMM solver is not compatible with a low frequency model.

Examples: H-matrix

Direct HMat solver with default threshold (epsilon=5e-4)

elfipole --p01 basename.p01 --hmat

Change assembly and compression thresholds

elfipole --p01 basename.p01 --hmat --hmat-eps-assemb 1e-4 --hmat-eps-recompr 1e-4

Use HMat to compress the Right-Hand-Side

elfipole --p01 basename.p01 --hmat --mat-rhs

Note

RHS compression is available for plane waves, dipoles and punctual sources

Set different assembly and compression tolerances for the impedance matrix and the RHS

elfipole --p01 basename.p01 --hmat --mat-rhs \
        --hmat-eps-assemb 1e-4 --hmat-eps-recompr 1e-4 \
        --hmat-rhs-eps-assemb 1e-5 --hmat-rhs-eps-recompr 1e-5

PoR

job

Radiate and Project (\(P \circ R\))

digraph por {
   rankdir=LR;
   node [shape = note] p01, d01_R, d01_P, res_R, res_P;
   node [shape = box] PoR;
   p01 -> PoR;
   d01_R -> PoR;
   res_R -> PoR;
   d01_P -> PoR;
   PoR -> res_P;
}

Examples

Run PoR

PoR --p01 basename.p01

Use single precision

PoR --p01 basename.p01 --cprec

Use FMM product for acceleration

PoR --p01 basename.p01 --fmm

coucha

job

Compute current and charge density

digraph coucha {
   rankdir=LR;
   node [shape = note] p16, p01, d01, res;
   node [shape = box] coucha;
   node [shape = note] r16, vtu;
   p16 -> coucha;
   p01 -> coucha;
   d01 -> coucha;
   res -> coucha;
   coucha -> r16;
   coucha -> vtu;
}

Examples

Run coucha

coucha --p16 basename.p16

Use single precision

coucha --p16 basename.p16 --cprec

proche

job

Compute near field

digraph proche {
   rankdir=LR;
   node [shape = note] p17, p01, d01, res;
   node [shape = box] proche;
   node [shape = note] r17, vtu;
   p17 -> proche;
   p01 -> proche;
   d01 -> proche;
   res -> proche;
   proche -> r17;
   proche -> vtu;
}

Examples

Run proche

proche --p17 basename.p17

Use single precision

proche --p17 basename.p17 --cprec

Consider only currents from one medium (here medium 2)

proche --p17 basename.p17 --milieu 2

Use FMM product for acceleration

proche --p17 basename.p17 --fmm

Warning

Do not use --fmm with a low frequency solution

anten

job

Compute far field

digraph anten {
   rankdir=LR;
   node [shape = note] p18, p01, d01, res;
   node [shape = box] anten;
   node [shape = note] r18, diag;
   p18 -> anten;
   p01 -> anten;
   d01 -> anten;
   res -> anten;
   anten -> r18;
   anten -> diag;
}

Examples

Run anten

anten --p18 basename.p18

Use single precision

anten --p18 basename.p18 --cprec

Use FMM product for acceleration

anten --p18 basename.p18 --fmm

Warning

Do not use --fmm with a low frequency solution

huygens

job

Manipulate Huygens box data

The huygens module is a pre- and post-processing tool that has the following main stages

  1. import

digraph anten {
   rankdir=LR;
   node [shape = note] xml;
   node [shape = note] bin;
   node [shape = box, label="huygens import"] import;
   xml -> import;
   import -> bin;
}
  1. export

digraph anten {
   rankdir=LR;
   node [shape = note] bin;
   node [shape = note] unv;
   node [shape = note] vtu;
   node [shape = note] csv;
   node [shape = note] power;
   node [shape = note] elfipole;
   node [shape = box, label="huygens export"] export;
   bin -> export;
   export -> unv;
   export -> vtu;
   export -> csv;
   export -> power;
   export -> elfipole;
}
  1. match

digraph anten {
   rankdir=LR;
   node [shape = note] bin;
   node [shape = note] d01;
   node [shape = note] xml;
   node [shape = note] res;
   node [shape = box, label="huygens match"] match;
   bin -> match;
   d01 -> match;
   xml -> match;
   match -> res;
}
  1. coupling

digraph anten {
   rankdir=LR;
   node [shape = note] d01;
   node [shape = note] res1;
   node [shape = note] res2;
   node [shape = note] csv;
   node [shape = box, label="huygens coupling"] coupling;
   d01 -> coupling;
   res1 -> coupling;
   res2 -> coupling;
   coupling -> csv;
}

Examples

Import EM field box from various formats

huygens import input-description.xml --output mysource.bin

Export the Huygens mesh to be merged with the 3D model

huygens export mysource.bin --unv mymesh.unv

Match equivalent currents on the placed Huygens box (after anadel and before PoR stage)

huygens match mysource.bin myhuygens.d01 --xml solid-transformation.xml --res myhuygens.res

Compute coupling with another Huygens antenna (after elfipole stage)

huygens coupling myhuygens.d01 myhuygens.res another-antenna-field.res