Solver 1
Equation = Helmholtz Equation
Procedure = "HelmholtzSolve" "HelmholtzSolver"
Variable = -dofs 2 Pressure Wave
Exec Solver = Always
Stabilize = True
Bubbles = False
Lumped Mass Matrix = False
Optimize Bandwidth = True
Steady State Convergence Tolerance = 1.0e-5
Nonlinear System Convergence Tolerance = 1.0e-7
Nonlinear System Max Iterations = 1
Nonlinear System Newton After Iterations = 3
Nonlinear System Newton After Tolerance = 1.0e-3
Nonlinear System Relaxation Factor = 1
Linear System Solver = Iterative
Linear System Iterative Method = BiCGStabl
Linear System Max Iterations = 500
Linear System Convergence Tolerance = 1.0e-10
BiCGstabl polynomial degree = 2
Linear System Preconditioning = ILUT
Linear System ILUT Tolerance = 1.0e-3
Linear System Abort Not Converged = True
Linear System Residual Output = 10
Linear System Precondition Recompute = 1
Element = "p:2"
End

The solver starts and produce a solution that makes sense. However, as far as I know not all solvers support p-elements. As I could not find a message demonstrating that p-elements are active in the solver log I am left wondering whether the `Element` keyword is actually being used. My questions are:

Does the Helmholtz Solver support p-elements?

What would be the best way to figure out if a solver supports p-elements? Is trial error a viable way (i.e. will solvers not supporting p-elements produce an error in the logs if the keyword is set?).

CrocoDuck wrote: ↑29 Nov 2020, 17:54
Does the Helmholtz Solver support p-elements?

Yes

CrocoDuck wrote: ↑29 Nov 2020, 17:54
What would be the best way to figure out if a solver supports p-elements? Is trial error a viable way (i.e. will solvers not supporting p-elements produce an error in the logs if the keyword is set?)

Unfortunately it is not usually clearly indicated whether a solver supports p-elements. If a solver was coded before the implementation of p-elements and hasn't been updated for p-elements afterwards, the solver may allocate too small local matrices or may not loop over all basis functions when integrating local matrices (with p-elements the number of element DOFs should be obtained by calling the function GetElementNOFDOFs instead of the function GetElementNOFNodes). This may cause a clear runtime error or not, but ideally the code should of course inform about such inconsistencies. The necessary modifications to allow p-elements wouldn't be difficult to do, but we should just invest enough time to inspect all solvers. As there are many solvers, we have not attempted to do this thoroughly but added p-element support into some key solvers, leaving end-users somewhat confused.