Skip to content

Commit 9a51e9f

Browse files
Update docs, JSON Schema, changelog
1 parent 0817fb8 commit 9a51e9f

File tree

4 files changed

+70
-34
lines changed

4 files changed

+70
-34
lines changed

CHANGELOG.md

+12-1
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,27 @@ The format of this changelog is based on
1313

1414
## In progress
1515

16+
- Changed implementation of complex-valued linear algebra to use new `ComplexVector` and
17+
`ComplexOperator` types, which are based on the underlying `mfem::Vector` and
18+
`mfem::Operator` classes, instead of PETSc. PETSc is now fully optional and only
19+
required when SLEPc eigenvalue solver support is requested. Krylov solvers for real- and
20+
complex-valued linear systems are implemented via the built-in `IterativeSolver`
21+
classes.
22+
- Changed implementation of PROMs for adaptive fast frequency sweep to use the Eigen
23+
library for sequential dense linear algebra.
24+
- Changed implementation of numeric wave ports to use MFEM's `SubMesh` functionality. As
25+
of [#3379](https://github.com/mfem/mfem/pull/3379) in MFEM, this has full ND and RT
26+
basis support. For now, support for nonconforming mesh boundaries is limited.
1627
- Added Apptainer/Singularity container build definition for Palace.
1728
- Added build dependencies on [libCEED](https://github.com/CEED/libCEED) and
1829
[LIBXSMM](https://github.com/libxsmm/libxsmm) to support operator partial assembly (CPU-
1930
based for now).
2031

2132
## [0.11.2] - 2023-07-14
2233

23-
- Changed layout and names of `palace/` source directory for better organization.
2434
- Fixed a regression bug affecting meshes which have domain elements which are not
2535
assigned material properties in the configuration file.
36+
- Changed layout and names of `palace/` source directory for better organization.
2637
- Added many updates to build system: Removed use of Git submodules to download
2738
dependencies relying instead directly on CMake's ExternalProject, patch GSLIB dependency
2839
for shared library builds, add CI tests with ARPACK-NG instead of SLEPc, update all

docs/src/config/solver.md

+49-24
Original file line numberDiff line numberDiff line change
@@ -299,11 +299,16 @@ directory specified by [`config["Problem"]["Output"]`]
299299
"Tol": <float>,
300300
"MaxIts": <int>,
301301
"MaxSize": <int>,
302-
"UseGMG": <bool>,
303-
"UsePCShifted": <bool>,
302+
"UsePCMatShifted": <bool>,
303+
"PCSide": <string>,
304+
"UseMultigrid": <bool>,
305+
"MGAuxiliarySmoother": <bool>,
304306
"MGCycleIts": <int>,
305307
"MGSmoothIts": <int>,
306-
"MGSmoothOrder": <int>
308+
"MGSmoothOrder": <int>,
309+
"DivFreeTol": <float>,
310+
"DivFreeMaxIts": <float>,
311+
"GSOrthogonalization": <string>
307312
}
308313
```
309314

@@ -353,46 +358,66 @@ equations arising for each simulation type. The available options are:
353358
definite (SPD) and the preconditioned conjugate gradient method (`"CG"`) is used as the
354359
Krylov solver.
355360

356-
`"Tol" [1.0e-6]` : Relative (preconditioned) residual convergence tolerance for the
357-
iterative linear solver.
361+
`"Tol" [1.0e-6]` : Relative residual convergence tolerance for the iterative linear solver.
358362

359363
`"MaxIts" [100]` : Maximum number of iterations for the iterative linear solver.
360364

361365
`"MaxSize" [0]` : Maximum Krylov space size for the GMRES and FGMRES solvers. A value less
362366
than 1 defaults to the value specified by `"MaxIts"`.
363367

364-
`"UseGMG" [true]` : Enable or not [geometric multigrid solver]
365-
(https://en.wikipedia.org/wiki/Multigrid_method) which uses h- and p-multigrid coarsening as
366-
available to construct the multigrid hierarchy. The solver specified by `"Type"` is used on
367-
the coarsest level. A Hiptmair smoother is applied to all other levels.
368-
369-
`"UsePCShifted" [false]` : When set to `true`, constructs the preconditioner for frequency
368+
`"UsePCMatShifted" [false]` : When set to `true`, constructs the preconditioner for frequency
370369
domain problems using a real SPD approximation of the system matrix, which can help
371370
performance at high frequencies (relative to the lowest nonzero eigenfrequencies of the
372371
model).
373372

373+
`"PCSide" ["Default"]` : Side for preconditioning. Not all options are available for all
374+
iterative solver choices, and the default choice depends on the iterative solver used.
375+
376+
- `"Left"`
377+
- `"Right"`
378+
- `"Default"`
379+
380+
`"UseMultigrid" [true]` : Chose whether to enable [geometric multigrid preconditioning]
381+
(https://en.wikipedia.org/wiki/Multigrid_method) which uses p- and h-multigrid coarsening as
382+
available to construct the multigrid hierarchy. The solver specified by `"Type"` is used on
383+
the coarsest level. Relaxation on the fine levels is performed with Chebyshev smoothing.
384+
385+
`"MGAuxiliarySmoother"` : Activate hybrid smoothing from Hiptmair for multigrid levels when
386+
`"UseMultigrid"` is `true`. For non-singular problems involving curl-curl operators, this
387+
option is `true` by default.
388+
374389
`"MGCycleIts" [1]` : Number of V-cycle iterations per preconditioner application for
375-
multigrid preconditioners (when `"UseGMG"` is `true` or `"Type"` is `"AMS"` or
390+
multigrid preconditioners (when `"UseMultigrid"` is `true` or `"Type"` is `"AMS"` or
376391
`"BoomerAMG"`).
377392

378393
`"MGSmoothIts" [1]` : Number of pre- and post-smooth iterations used for multigrid
379-
preconditioners (when `"UseGMG"` is `true` or `"Type"` is `"AMS"` or `"BoomerAMG"`).
394+
preconditioners (when `"UseMultigrid"` is `true` or `"Type"` is `"AMS"` or `"BoomerAMG"`).
380395

381396
`"MGSmoothOrder" [3]` : Order of polynomial smoothing for geometric multigrid
382-
preconditioning (when `"UseGMG"` is `true`).
397+
preconditioning (when `"UseMultigrid"` is `true`).
398+
399+
`"DivFreeTol" [1.0e-12]` : Relative tolerance for divergence-free cleaning used in the
400+
eigenmode simulation type.
401+
402+
`"DivFreeMaxIts" [100]` : Maximum number of iterations for divergence-free cleaning use in
403+
the eigenmode simulation type.
404+
405+
`"GSOrthogonalization" ["MGS"]` : Gram-Schmidt variant used to explicitly orthogonalize
406+
vectors in Krylov subspace methods or other parts of the code.
407+
408+
- `"MGS"` : Modified Gram-Schmidt
409+
- `"CGS"` : Classical Gram-Schmidt
410+
- `"CGS2"` : Two-step classical Gram-Schmidt with reorthogonalization
383411

384412
### Advanced linear solver options
385413

386-
- `"Type"`: `"STRUMPACK-MP"`
387-
- `"KSPType"`: `"MINRES"`, `"CGSYM"`, `"FCG"`, `"BCGS"`, `"BCGSL"`, `"FBCGS"`, `"QMRCGS"`,
388-
`"TFQMR"`
389-
- `"UseMGS" [false]`
390-
- `"UseCGS2" [false]`
391-
- `"UseKSPPiped" [false]`
392-
- `"UseLOR" [false]`
393-
- `"PrecondSide" ["Default"]`: `"Left"`, `"Right"`, `"Default"`
394-
- `"Reordering" ["Default"]`: `"METIS"`, `"ParMETIS"`, `"Default"`
395-
- `"STRUMPACKCompressionType" ["None"]`: `"None"`, `"BLR"`, `"HSS"`, `"HODLR"`
414+
- `"UseInitialGuess" [true]`
415+
- `"UsePartialAssembly" [false]`
416+
- `"UseLowOrderRefined" [false]`
417+
- `"Reordering" ["Default"]` : `"METIS"`, `"ParMETIS"`,`"Scotch"`, `"PTScotch"`,
418+
`"Default"`
419+
- `"STRUMPACKCompressionType" ["None"]` : `"None"`, `"BLR"`, `"HSS"`, `"HODLR"`, `"ZFP"`,
420+
`"BLR-HODLR"`, `"ZFP-BLR-HODLR"`
396421
- `"STRUMPACKCompressionTol" [1.0e-3]`
397422
- `"STRUMPACKLossyPrecision" [16]`
398423
- `"STRUMPACKButterflyLevels" [1]`

docs/src/guide/model.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ or region-based refinement, specified using the [`config["Model"]["Refinement"]`
4040
uniform refinement levels as well as local refinement regions which refines the elements
4141
inside of a certain box or sphere-shaped region. For simplex meshes, the refinement
4242
maintains a conforming mesh but meshes containing hexahedra, prism, or pyramid elements
43-
will be non-conforming after local refinement (this is not supported at this time).
43+
will be nonconforming after local refinement (this is not supported at this time).
4444

4545
[Adaptive mesh refinement (AMR)](https://en.wikipedia.org/wiki/Adaptive_mesh_refinement)
4646
according to error estimates in the computed solution is a work in progress for all

scripts/schema/config/solver.json

+8-8
Original file line numberDiff line numberDiff line change
@@ -100,17 +100,16 @@
100100
"Tol": { "type": "number", "minimum": 0.0 },
101101
"MaxIts": { "type": "integer", "exclusiveMinimum": 0 },
102102
"MaxSize": { "type": "integer", "exclusiveMinimum": 0 },
103-
"UseMGS": { "type": "boolean" },
104-
"UseCGS2": { "type": "boolean" },
105103
"UseInitialGuess": { "type": "boolean" },
106-
"UseKSPPiped": { "type": "boolean" },
107-
"UseGMG": { "type": "boolean" },
108-
"UseLOR": { "type": "boolean" },
109-
"UsePCShifted": { "type": "boolean" },
104+
"UsePartialAssembly": { "type": "boolean" },
105+
"UseLowOrderRefined": { "type": "boolean" },
106+
"UsePCMatShifted": { "type": "boolean" },
107+
"PCSide": { "type": "string" },
108+
"UseMultigrid": { "type": "boolean" },
109+
"MGAuxiliarySmoother": { "type": "boolean" },
110110
"MGCycleIts": { "type": "integer", "exclusiveMinimum": 0 },
111111
"MGSmoothIts": { "type": "integer", "exclusiveMinimum": 0 },
112112
"MGSmoothOrder": { "type": "integer", "exclusiveMinimum": 0 },
113-
"PrecondSide": { "type": "string" },
114113
"Reordering": { "type": "string" },
115114
"STRUMPACKCompressionType": { "type": "string" },
116115
"STRUMPACKCompressionTol": { "type": "number", "minimum": 0.0 },
@@ -119,7 +118,8 @@
119118
"SuperLU3D": { "type": "boolean" },
120119
"AMSVector": { "type": "boolean" },
121120
"DivFreeTol": { "type": "number", "minimum": 0.0 },
122-
"DivFreeMaxIts": { "type": "integer", "minimum": 0 }
121+
"DivFreeMaxIts": { "type": "integer", "minimum": 0 },
122+
"GSOrthogonalization": { "type": "string" }
123123
}
124124
}
125125
}

0 commit comments

Comments
 (0)