## Targets in Montjoie

The programs that can be compiled are placed in the directory
**src/Program**. We distinguish programs understandable for
beginners, advanced or expert users, therefore the programs are scattered
in the directories **Beginner, Advanced** and
**Expert**. Programs related to mesh treatments, like the
conversion of meshes, manipulations, or generations of meshes, are
placed in the directory **Mesh**. Programs testing each
class and each function of Montjoie are placed in directory
**Unit** and can be launched automatically by executing the script
unit_test.py. Other testing prorams are placed in
directory **Test**. Programs related to piano and strings are
located in the directory **Corde**. Finally programs testing the
efficiency of different functions are located in the directory **Perfo**.
All the compilation rules are present in the file
Makefile.rules.mk. Here we give tables of all these rules
:

### Targets related to programs for beginners

Target name | C++ file | Aim of this program |

claplace | Beginner/laplace.cc | Solves Poisson's equation with continuous finite element (2-D and 3-D) |

chelm2D | Beginner/helmholtz2D.cc | Solves 2-D Helmholtz equation with continuous finite element |

chelm3D | Beginner/helmholtz3D.cc | Solves 3-D Helmholtz equation with continuous finite element |

cstatic_maxwell | Beginner/static_maxwell.cc | Solves steady Maxwell equations in 3-D with edge finite elements |

cmaxwell3D | Beginner/maxwell3D.cc | Solves time-harmonic Maxwell equations in 3-D with edge finite elements |

maxwell1D | Beginner/maxwell1D.cc | Solves time-domain Maxwell equations in 1-D with Kerr non-linearity |

ctime3D | Beginner/maxwell3D_time.cc | Solves time-domain Maxwell equations in 3-D with edge finite elements |

cacous2D | Beginner/acous2D.cc | Solves 2-D wave equation with continuous finite element |

cacous3D | Beginner/acous3D.cc | Solves 3-D wave equation with continuous finite element |

advection | Beginner/advection.cc | Solves time-domain (or time-harmonic) advection equation in 2-D or 3-D |

charmonic_elas2D | Beginner/harmonic_elastic2D.cc | Solves time-harmonic elastodynamic equations in 2-D with continuous finite elements |

charmonic_elas3D | Beginner/harmonic_elastic3D.cc | Solves time-harmonic elastodynamic equations in 3-D with continuous finite elements |

celas2D | Beginner/elastic2D.cc | Solves time-domain elastodynamic equations in 2-D with continuous finite elements |

celas3D | Beginner/elastic3D.cc | Solves time-domain elastodynamic equations in 3-D with continuous finite elements |

caero2D | Beginner/aero2D.cc | Solves time-domain aeroacoustic equations in 2-D with discontinuous Galerkin method |

caero3D | Beginner/aero3D.cc | Solves time-domain aeroacoustic equations in 3-D with discontinuous Galerkin method |

charmonic_aero2D | Beginner/harmonic_aero2D.cc | Solves time-harmonic aeroacoustic equations in 2-D with discontinuous Galerkin method |

### Targets related to programs for advanced users

Target name | C++ file | Aim of this program |

laplace | Advanced/laplace.cc | Solves Poisson's equation with continuous or discontinuous finite element (2-D and 3-D) |

helm2D | Advanced/helmholtz2D.cc | Solves 2-D Helmholtz equation with continuous or discontinuous finite element |

helm_div | Beginner/helmholtz_sipg.cc | Solves 2-D Helmholtz equation with H(div) formulation |

helm3D | Advanced/helmholtz3D.cc | Solves 3-D Helmholtz equation with continuous or discontinuous finite element |

helm_axi | Advanced/helmholtz_axi.cc | Solves 3-D Helmholtz equation in axisymmetric geometry with continuous finite element |

helm_radial | Beginner/helm_radial.cc | Solves 3-D Helmholtz equation in radial geometry with continuous finite element |

maxwell_axi | Advanced/maxwell_axi.cc | Solves time-harmonic Maxwell equations in axisymmetric domains with edge finite elements |

maxwell2D | Advanced/maxwell2D.cc | Solves time-harmonic Maxwell equations in 2-D with various finite elements |

static_maxwell | Advanced/static_maxwell.cc | Solves steady Maxwell equations in 2-D and 3-D with various finite elements |

maxwell3D | Advanced/maxwell3D.cc | Solves time-harmonic Maxwell equations in 3-D with various finite elements |

mode_maxwell | Advanced/mode_maxwell.cc | Finds eigenmodes of an electromagnetic open waveguide |

time_maxwell | Advanced/time_maxwell.cc | Solves time-domain Maxwell equations in axisymmetric domains with edge finite elements |

time3D | Advanced/maxwell3D_time.cc | Solves time-domain Maxwell equations in 3-D with various finite elements |

acous2D | Advanced/acous2D.cc | Solves 2-D wave equation with continuous or discontinuous finite element |

acous3D | Advanced/acous3D.cc | Solves 3-D wave equation with continuous or discontinuous finite element |

harmonic_elas2D | Advanced/harmonic_elastic2D.cc | Solves time-harmonic elastodynamic equations in 2-D with continuous or discontinuous finite elements |

harmonic_elas3D | Advanced/harmonic_elastic3D.cc | Solves time-harmonic elastodynamic equations in 3-D with continuous or discontinuous finite elements |

elas2D | Advanced/elastic2D.cc | Solves time-domain elastodynamic equations in 2-D with continuous or discontinuous finite elements |

elas3D | Advanced/elastic3D.cc | Solves time-domain elastodynamic equations in 3-D with continuous or discontinuous finite elements |

reissner | Advanced/reissner_mindlin.cc | Solves Reissner-Minlin equations with continuous finite elements. |

static_elastic | Advanced/static_elastic3D.cc | Finds eigenmodes of a 3-D structure (elastodynamics) |

soundboard | Advanced/soundboard.cc | Finds eigenmodes of a thin plate (Reissner-Mindlin equations) |

schrodinger1D | Advanced/schrodinger1D.cc | Solves 1-D non-linear schrodinger equation (non-linear optics) |

schrodinger3D | Expert/schrodinger3D.cc | Solves 3-D non-linear schrodinger equation (non-linear optics) |

aero2D | Advanced/aero2D.cc | Solves time-domain aeroacoustic equations in 2-D with discontinuous Galerkin method |

galbrun | Advanced/galbrun.cc | Solves time-harmonic Galbrun's equations in 2-D with discontinuous Galerkin method |

aero3D | Advanced/aero3D.cc | Solves time-domain aeroacoustic equations in 3-D with discontinuous Galerkin method |

harmonic_aero2D | Beginner/harmonic_aero2D.cc | Solves time-harmonic aeroacoustic equations in 2-D with discontinuous Galerkin method |

aero_axi | Advanced/aero_axi.cc | Solves time-harmonic Linearized Euler equations in axisymmetric geometry with discontinuous Galerkin method |

galbrun_axi | Advanced/galbrun_axi.cc | Solves time-harmonic Galbrun's equations in axisymmetric geometry with discontinuous Galerkin method |

vlasov | Advanced/vlasov.cc | Solves Vlasov-Maxwell equations in 2-D and 3-D with various finite elements |

solution_helm | Advanced/SolutionHelmholtz.cc | Computes analytical solutions of Helmholtz equation for spherical layers. |

solution | Advanced/SolutionSphere.cc | Computes analytical solutions of 3-D Maxwell's equations for spherical layers. |

solution_disc | Advanced/SolutionDisc.cc | Computes analytical solutions of 2-D wave equation for circular layers. |

migration | Advanced/migration.cc | Computes the image of a default with the reverse time migration method. |

### Targets related to programs for expert users

Target name | C++ file | Aim of this program |

dispersion | Expert/dispersion.cc | Computes discrete dispersion relation for continuous or discontinuous elements |

mode_pml | Expert/mode_pml.cc | Computes eigenmodes of an open problem (2-D Helmholtz equation) |

mode1D | Expert/mode_1D.cc | Computes eigenmodes of an open problem (1-D Helmholtz equation) |

mode2D | Expert/mode2D.cc | Computes eigenmodes of an open problem (2-D Helmholtz equation and 3-D Maxwell's equations) |

inv_harmonic | Expert/inverse_harmonic.cc | Solves an inverse boundary value problem in time-harmonic domain |

CellulairePeriodique | Expert/CellulairePeriodique.cc | Computes coefficients used to replace a periodic structure by an equivalent transmission condition (2-D Helmholtz) |

CellulairePeriodique3D | Expert/CellulairePeriodique3D.cc | Computes coefficients used to replace a periodic structure by an equivalent transmission condition (3-D Maxwell) |

### Targets related to program testing

Target name | C++ file | Aim of this program |

checkHcurl | Test/check_finite_elementHcurl.cc | Checks finite element classes for H(curl) (so called edge elements) |

checkHdiv | Test/check_finite_elementHdiv.cc | Checks finite element classes for H(div) (so called facet elements) |

checkHcurl2D | Test/check_finite_elementEdge.cc | Checks finite element classes for 2-D H(curl) (so called edge elements) |

checkH1 | Test/check_finite_element.cc | Checks finite element classes for continuous finite elements |

kdv | Advanced/kdv.cc | solves the KdV equation (and other Kdv-like equations) in 1-D |

camass | Advanced/camassa.cc | solves the Camassa-Holm equation (and other Camassa-Holm-like equations) in 1-D |

subdomain | Test/iterative_subdomain.cc | solves 2-D or 3-D Helmholtz equation with domain decomposition method |

### Targets related to programs for meshes

Target name | C++ file | Aim of this program |

convert | Mesh/convert2mesh.cc | performs a conversion between two meshes (any supported format) |

manipule | Mesh/manipule.cc | perfoms basic manipulations over 3-D meshes |

manipule2D | Mesh/manipule2D.cc | perfoms basic manipulations over 2-D meshes |

sym_mesh | Mesh/sym_mesh.cc | Generates a mesh by symmetrizing it with respect to Oxy, Oxz and/or Oyz. |

per_mesh | Mesh/periodize_mesh.cc | Generates a mesh by periodicity in x, y, z, and/or theta. |

tetmesh | Mesh/tetmesh.cc | Generates 3-D tetrahedral mesh by using Ghs3D/Gmsh. |

add_circle | Mesh/add_circle.cc | Adds 2-D circular layers to a given mesh. |

add_sphere | Mesh/add_sphere.cc | Adds 2-D spherical layers to a given mesh. |

### Targets related to various programs

Target name | C++ file | Aim of this program |

vibro | Advanced/vibro.cc | solves the vibroacoustic equations (coupling between Reissner-Mindlin and 3-D acoustics) |

fluid_structure | Advanced/fluid_structure.cc | solves fluid-structure interaction (coupling between 3-D elastodynamics and 3-D acoustics) |

write_nodal | Advanced/write_nodal_points.cc | computes 3-D nodal points of an .ini file |

### Targets related to piano strings

Target name | C++ file | Aim of this program |

multistringStiffLIN | Corde/test_multistring.cc | solves strings equations (stiff and linear) |

multistringLIN | Corde/test_multistring.cc | solves strings equations (non-stiff and linear) |

multistringStiffNL | Corde/test_multistring.cc | solves strings equations (stiff and non-linear) |

multistringNL | Corde/test_multistring.cc | solves strings equations (non-stiff and non-linear) |

PianoFluide | Corde/PianoFluide.cc | solves vibro-acoustic equations (modal expansion for the plate) |

PianoStiffNL | Corde/CouplagePiano.cc | solves piano problem (stiff and non-linear strings) |

PianoStiffLIN | Corde/CouplagePiano.cc | solves piano problem (stiff and linear strings) |

PianoNL | Corde/CouplagePiano.cc | solves piano problem (non-stiff and non-linear strings) |

PianoLIN | Corde/CouplagePiano.cc | solves piano problem (non-stiff and linear strings) |

StringImpedanceStiffNL | Corde/CordeImpedance.cc | solves strings equations with impedance (stiff and non-linear strings) |

StringImpedanceStiffLIN | Corde/CordeImpedance.cc | solves strings equations with impedance (stiff and linear strings) |

StringImpedanceLIN | Corde/CordeImpedance.cc | solves strings equations with impedance (non-stiff and linear strings) |

StringImpedanceNL | Corde/CordeImpedance.cc | solves strings equations with impedance (non-stiff and non-linear strings) |

StringSoundboardStiffNL | Corde/CordeImpedance.cc | solves strings equations with soundboard (stiff and non-linear strings) |

StringSoundboardStiffLIN | Corde/CordeImpedance.cc | solves strings equations with soundboard (stiff and linear strings) |

StringSoundboardLIN | Corde/CordeImpedance.cc | solves strings equations with soundboard (non-stiff and linear strings) |

StringSoundboardNL | Corde/CordeImpedance.cc | solves strings equations with soundboard (non-stiff and non-linear strings) |