diff --git a/examples/helmholtz/waveguide/README.md b/examples/helmholtz/waveguide/README.md index e82b4fd7135ff5c0de6fa216fca1ca88b3f6c220..26baef785e545cc42e4a27201964a468412feb28 100644 --- a/examples/helmholtz/waveguide/README.md +++ b/examples/helmholtz/waveguide/README.md @@ -3,7 +3,7 @@ Dependency(ies): * GmshDDM : v 1.0.0 * GmshFEM : v 1.0.0 -* Gmsh : v 4.8.2 +* Gmsh ## Problem description diff --git a/examples/helmholtzflow/exhaust3D/README.md b/examples/helmholtzflow/exhaust3D/README.md index d0cbbff22f1ab5e9e9f0ef79ca8799a8d25feb52..d7c3e4fe40ceefeadea34468f00eec7ee23476a9 100644 --- a/examples/helmholtzflow/exhaust3D/README.md +++ b/examples/helmholtzflow/exhaust3D/README.md @@ -1,41 +1,41 @@ -# Flow acoustics problem - radiation from a turbofan engine exhaust - -Dependency(ies): -* GmshDDM : v 1.0.0 -* GmshFEM : v 1.0.0 -* Gmsh : v 4.8.2 - -Specific requirements: -* Gmsh must be compiled with OpenCascade -* GmshFEM must be compiled with the Complex Bessel library -* MPI must be enabled -* Mean Flow data -* Geometry description - -## Problem description - -This benchmark solves the acoustic radiation of a turbofan exhaust, which is modeled by the Pierce convected time-harmonic wave operator - -```math -\mathcal{P} = -\rho_0\frac{D}{Dt}\left(\frac{1}{\rho_0^2 c_0^2} \frac{D}{Dt}\right) + \nabla \cdot \left( \frac{1}{\rho_0} \nabla \right), -``` - -where $`\rho_0(\boldsymbol{x}), c_0(\boldsymbol{x})`$ are respectively the density and speed of sound of the mean flow, and $`\boldsymbol{v}_0(\boldsymbol{x})`$ is the 3D vector velocity field, which is assumed to be subsonic so that the condition $`\| \boldsymbol{v}_0(\boldsymbol{x}) \|/c_0(\boldsymbol{x}) < 1`$ holds. - -The problem is prescribed by an input plane wave in the core duct. Perfectly matched layers are set up in the bypass duct to damp back-reflected waves, and truncate the cylindrical exterior domain. - -### Running domain decomposition -1. Partitioned mesh generation -``` - ./example -nDom [x] -FEMorder [x] -meshOnly -meshSizeFactor [x] -maxThreads [x] -``` -The parameter `-meshSizeFactor` can be used to adjust the global mesh refinement, and `-maxThreads` controls the number of threads. - -2. Launch the solver at a given frequency `-freq` -``` - mpirun -np [x] ./example -mesh turnex3D -nDom [x] -FEMorder [x] -meshSizeFactor [x] -freq [x] -maxThreads [x] -memoryDDM -``` -DDM transmission conditions are set up by default to be second order Taylor conditions with the rotation branch-cut set to $`\alpha=-\pi/2`$. - -## References +# Flow acoustics problem - radiation from a turbofan engine exhaust + +Dependency(ies): +* GmshDDM : v 1.0.0 +* GmshFEM : v 1.0.0 +* Gmsh + +Specific requirements: +* Gmsh must be compiled with OpenCascade +* GmshFEM must be compiled with the Complex Bessel library +* MPI must be enabled +* Mean Flow data +* Geometry description + +## Problem description + +This benchmark solves the acoustic radiation of a turbofan exhaust, which is modeled by the Pierce convected time-harmonic wave operator + +```math +\mathcal{P} = -\rho_0\frac{D}{Dt}\left(\frac{1}{\rho_0^2 c_0^2} \frac{D}{Dt}\right) + \nabla \cdot \left( \frac{1}{\rho_0} \nabla \right), +``` + +where $`\rho_0(\boldsymbol{x}), c_0(\boldsymbol{x})`$ are respectively the density and speed of sound of the mean flow, and $`\boldsymbol{v}_0(\boldsymbol{x})`$ is the 3D vector velocity field, which is assumed to be subsonic so that the condition $`\| \boldsymbol{v}_0(\boldsymbol{x}) \|/c_0(\boldsymbol{x}) < 1`$ holds. + +The problem is prescribed by an input plane wave in the core duct. Perfectly matched layers are set up in the bypass duct to damp back-reflected waves, and truncate the cylindrical exterior domain. + +### Running domain decomposition +1. Partitioned mesh generation +``` + ./example -nDom [x] -FEMorder [x] -meshOnly -meshSizeFactor [x] -maxThreads [x] +``` +The parameter `-meshSizeFactor` can be used to adjust the global mesh refinement, and `-maxThreads` controls the number of threads. + +2. Launch the solver at a given frequency `-freq` +``` + mpirun -np [x] ./example -mesh turnex3D -nDom [x] -FEMorder [x] -meshSizeFactor [x] -freq [x] -maxThreads [x] -memoryDDM +``` +DDM transmission conditions are set up by default to be second order Taylor conditions with the rotation branch-cut set to $`\alpha=-\pi/2`$. + +## References > To be updated \ No newline at end of file diff --git a/examples/helmholtzflow/freefield/README.md b/examples/helmholtzflow/freefield/README.md index bd24c56a017aa831129669f1e9dcd8b4aed4380c..238d536be8796b9880b7e0f5a54c6d52b5f07a3c 100644 --- a/examples/helmholtzflow/freefield/README.md +++ b/examples/helmholtzflow/freefield/README.md @@ -1,56 +1,56 @@ -# Domain decomposition in a 2D circular domain for convected propagation - -Dependency(ies): -* GmshDDM : v 1.0.0 -* GmshFEM : v 1.0.0 -* Gmsh : v 4.8.2 - -## Problem description - -The routines solves convected Helmholtz problem in a disk domain, where the input is a point source. -The domain uses a perfectly matched layer as outgoing boundary condition. -The routine `main.cpp` uses a circle concentric decomposition, while the routine `main_metis.cpp` calls the automatic partitioner metis for the partitioning. -Different transmission conditions are tested, and are compared to the analytical and mono-domain solution, that is the solution obtained without domain decomposition. - -## Installation and usage -Simply run - -``` - mkdir build && cd build - cmake .. - make - ./example [PARAM] -``` -with `[PARAM]`: -* `-nDom [x]` where `[x]` is the number of subdomains -* `-R [x]` where `[x]` is the disk radius or square size, $`R > 0`$ -* `-k [x]` is the freefield wavenumber, $`k > 0`$ -* `-M [x]` is the mean flow Mach number, $`0 < M < 1`$ -* `-theta [x]` is the mean flow angle orientation, $`\theta \in [0, 2\pi]`$ -* `-xs [x]` and `-ys [x]` specify the point source location -* `pointsByWl [x]` is the number of dofs for the shortest wavelength -* `-Transmission [x]` is the choice of transmission condition, The available choices are `Taylor0`, `Taylor2` and `Pade`. -* `-padeOrder [x]` specifies the number of auxiliary function and branch rotation angle for the `Pade` transmission condition. -* `-alpha [x]` is the branch rotation angle for the transmission conditions, $`\alpha \in [0, -\pi]`$. $`\alpha = -\pi/2`$ is the default. -* `-solver [x]` selects the type of iterative solver. `gmres` is the default. -* `-tol [x]` specifies the tolerence of the iterative solver, `1e-6` is used by default. -* `-maxIt [x]` is the maximum number of iterations allowed, 400 iterations are allowed by default. -* `-ComputeMono [x]` is a boolean that allows to compute the mono-domain solution. - -By default a circular domain with a Padé condition is used with 5 circle-concentric subdomains, for a centered source around the origin at the frequency $k=6\pi$, with a mean flow at $M=0.8$ oriented at $\theta=\pi/4$. - - -## Reference -> To be updated - -## Results reproducibility -The results from Figure 3.3, Section 3.3 can be reproduced thanks to -* running `runTests.sh` for the residual history, -* running `runMscal.sh` for the number of iterations a function of the Mach number. - -Figure 3.3 (a) can be visualized by opening the solutions `u_i.msh` for each subdomain, after running the command -``` -./example -nDom 5 -Transmission Pade -padeOrder 8 -M 0.95 -maxIt 4 -ComputeMono true -``` - +# Domain decomposition in a 2D circular domain for convected propagation + +Dependency(ies): +* GmshDDM : v 1.0.0 +* GmshFEM : v 1.0.0 +* Gmsh + +## Problem description + +The routines solves convected Helmholtz problem in a disk domain, where the input is a point source. +The domain uses a perfectly matched layer as outgoing boundary condition. +The routine `main.cpp` uses a circle concentric decomposition, while the routine `main_metis.cpp` calls the automatic partitioner metis for the partitioning. +Different transmission conditions are tested, and are compared to the analytical and mono-domain solution, that is the solution obtained without domain decomposition. + +## Installation and usage +Simply run + +``` + mkdir build && cd build + cmake .. + make + ./example [PARAM] +``` +with `[PARAM]`: +* `-nDom [x]` where `[x]` is the number of subdomains +* `-R [x]` where `[x]` is the disk radius or square size, $`R > 0`$ +* `-k [x]` is the freefield wavenumber, $`k > 0`$ +* `-M [x]` is the mean flow Mach number, $`0 < M < 1`$ +* `-theta [x]` is the mean flow angle orientation, $`\theta \in [0, 2\pi]`$ +* `-xs [x]` and `-ys [x]` specify the point source location +* `pointsByWl [x]` is the number of dofs for the shortest wavelength +* `-Transmission [x]` is the choice of transmission condition, The available choices are `Taylor0`, `Taylor2` and `Pade`. +* `-padeOrder [x]` specifies the number of auxiliary function and branch rotation angle for the `Pade` transmission condition. +* `-alpha [x]` is the branch rotation angle for the transmission conditions, $`\alpha \in [0, -\pi]`$. $`\alpha = -\pi/2`$ is the default. +* `-solver [x]` selects the type of iterative solver. `gmres` is the default. +* `-tol [x]` specifies the tolerence of the iterative solver, `1e-6` is used by default. +* `-maxIt [x]` is the maximum number of iterations allowed, 400 iterations are allowed by default. +* `-ComputeMono [x]` is a boolean that allows to compute the mono-domain solution. + +By default a circular domain with a Padé condition is used with 5 circle-concentric subdomains, for a centered source around the origin at the frequency $k=6\pi$, with a mean flow at $M=0.8$ oriented at $\theta=\pi/4$. + + +## Reference +> To be updated + +## Results reproducibility +The results from Figure 3.3, Section 3.3 can be reproduced thanks to +* running `runTests.sh` for the residual history, +* running `runMscal.sh` for the number of iterations a function of the Mach number. + +Figure 3.3 (a) can be visualized by opening the solutions `u_i.msh` for each subdomain, after running the command +``` +./example -nDom 5 -Transmission Pade -padeOrder 8 -M 0.95 -maxIt 4 -ComputeMono true +``` + The results from Figure 4.1, Section 4 can be reproduced using `runDlambda_metis.sh` and `runMscal_metis.sh`, with the file `main_metis.cpp` set in the `CMakeLists.txt`. \ No newline at end of file diff --git a/examples/helmholtzflow/nacelle3D/README.md b/examples/helmholtzflow/nacelle3D/README.md index fd0f8fec90a009c3869bd224651bed410b525d4a..d5153f19f239455b622aaed135c5b3b508988997 100644 --- a/examples/helmholtzflow/nacelle3D/README.md +++ b/examples/helmholtzflow/nacelle3D/README.md @@ -3,7 +3,7 @@ Dependency(ies): * GmshDDM : v 1.0.0 * GmshFEM : v 1.0.0 -* Gmsh : v 4.8.2 +* Gmsh Specific requirements: * Gmsh must be compiled with OpenCascade diff --git a/examples/helmholtzflow/waveguide/README.md b/examples/helmholtzflow/waveguide/README.md index 868fb36c818c0e40bf470d3fa51461ee43f53bc5..95919c5d5ebda11768765788ff1468ba090feecf 100644 --- a/examples/helmholtzflow/waveguide/README.md +++ b/examples/helmholtzflow/waveguide/README.md @@ -1,52 +1,52 @@ -# Simple domain decomposition in a straight waveguide for convected propagation - -Dependency(ies): -* GmshDDM : v 1.0.0 -* GmshFEM : v 1.0.0 -* Gmsh : v 4.8.2 - -## Problem description - -The routine `main_multi.cpp` solves a convected Helmholtz propagation problem in a straight waveguide, where the input source is a superposition of modes. -The propagation occurs in the `x`-direction, while a homogeneous Neumann or Dirichlet condition is imposed on the upper and lower walls. -Different transmission conditions are tested, and compared to the analytical solution and mono-domain solution, that is the solution obtained without domain decomposition. -A PML is set as output boundary condition. -The routine `main.cpp` solves the propagation problem for a single mode, and uses the exact DtN as outgoing condition. - -## Installation and usage -Simply run - -``` - mkdir build && cd build - cmake .. - make - ./example [PARAM] -``` -with `[PARAM]`: -* `-nDom [x]` where `[x]` is the number of subdomains -* `-wallType [x]`, where `[x]` can be `Neumann` or `Dirichlet` -* `-FEMorder [x]` is the polynomial order of the finite element basis functions -* `-k [x]` is the freefield wavenumber, $`k > 0`$ -* `-Mx [x]` is the x-component of the vector Mach number, $`-1 < M_x < 1`$. For -* `-Transmission [x]` is the choice of transmission condition, The available choices are `Taylor0`, `Taylor2` and `Pade`. `Pade` is the default. -* `-alpha [x]` is the branch rotation angle for the transmission condition, $\alpha \in [0, -\pi]$. $`\alpha=-\pi/4`$ is the default. -* `-padeOrder [x]` specify the number of auxiliary function for the `Pade` condition. -* `-solver [x]` selects the type of iterative solver. `gmres` is the default, `jacobi` can also be used. -* `-tol [x]` specifies the tolerence of the iterative solver, `1e-6` is used by default. -* `-maxIt [x]` is the maximum number of iterations allowed, 200 iterations are allowed by default. - -By default 4 subdomains are used for the frequency $`k=30`$, with a mean flow at $`M_x=0.7`$. The finite element order is 4 and the mesh size is chosen in order to have 12 dofs per wavelength. - -## Reference -> To be updated - -## Results reproducibility -The results from Table 3.1, Section 3.3 can be reproduced thanks to the running commands - -``` -./example -nDom [x] -Transmission Taylor0 -Mx [x] -alpha 0 -solver [x] -./example -nDom [x] -Transmission Taylor2 -Mx [x] -solver [x] -./example -nDom [x] -Transmission Pade -Mx [x] -solver [x] -``` - +# Simple domain decomposition in a straight waveguide for convected propagation + +Dependency(ies): +* GmshDDM : v 1.0.0 +* GmshFEM : v 1.0.0 +* Gmsh + +## Problem description + +The routine `main_multi.cpp` solves a convected Helmholtz propagation problem in a straight waveguide, where the input source is a superposition of modes. +The propagation occurs in the `x`-direction, while a homogeneous Neumann or Dirichlet condition is imposed on the upper and lower walls. +Different transmission conditions are tested, and compared to the analytical solution and mono-domain solution, that is the solution obtained without domain decomposition. +A PML is set as output boundary condition. +The routine `main.cpp` solves the propagation problem for a single mode, and uses the exact DtN as outgoing condition. + +## Installation and usage +Simply run + +``` + mkdir build && cd build + cmake .. + make + ./example [PARAM] +``` +with `[PARAM]`: +* `-nDom [x]` where `[x]` is the number of subdomains +* `-wallType [x]`, where `[x]` can be `Neumann` or `Dirichlet` +* `-FEMorder [x]` is the polynomial order of the finite element basis functions +* `-k [x]` is the freefield wavenumber, $`k > 0`$ +* `-Mx [x]` is the x-component of the vector Mach number, $`-1 < M_x < 1`$. +* `-Transmission [x]` is the choice of transmission condition, The available choices are `Taylor0`, `Taylor2` and `Pade`. `Pade` is the default. +* `-alpha [x]` is the branch rotation angle for the transmission condition, $\alpha \in [0, -\pi]$. $`\alpha=-\pi/4`$ is the default. +* `-padeOrder [x]` specify the number of auxiliary function for the `Pade` condition. +* `-solver [x]` selects the type of iterative solver. `gmres` is the default, `jacobi` can also be used. +* `-tol [x]` specifies the tolerence of the iterative solver, `1e-6` is used by default. +* `-maxIt [x]` is the maximum number of iterations allowed, 200 iterations are allowed by default. + +By default 4 subdomains are used for the frequency $`k=30`$, with a mean flow at $`M_x=0.7`$. The finite element order is 4 and the mesh size is chosen in order to have 12 dofs per wavelength. + +## Reference +> To be updated + +## Results reproducibility +The results from Table 3.1, Section 3.3 can be reproduced thanks to the running commands + +``` +./example -nDom [x] -Transmission Taylor0 -Mx [x] -alpha 0 -solver [x] +./example -nDom [x] -Transmission Taylor2 -Mx [x] -solver [x] +./example -nDom [x] -Transmission Pade -Mx [x] -solver [x] +``` + where the parameters are `-nDom`, `-Mx` and `-solver` need to be selected according to the required data. \ No newline at end of file