Skip to content

Commit f3d2deb

Browse files
Merge pull request #40 from awslabs/sjg/release-0.11.1
Release v0.11.1
2 parents 6389e53 + 936054f commit f3d2deb

File tree

12 files changed

+255
-158
lines changed

12 files changed

+255
-158
lines changed

CHANGELOG.md

+22-5
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,22 @@ The format of this changelog is based on
1111
[Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
1212
[Semantic Versioning](https://semver.org/).
1313

14+
## [0.11.1] - 2023-05-03
15+
16+
- Fixed a bug for interface dielectric loss postprocessing including when using
17+
`--dry-run`.
18+
- Fixed a regression bug affecting second-order absorbing boundary conditions.
19+
- Fixed a bug when the number of processors was large enough that some subdomains own no
20+
true dofs.
21+
- Fixed memory bug in destruction of SuperLU solver.
22+
- Fixed some typos in the documentation.
23+
- Fixed a bug in the cavity convergence study example for the coarsest hexahedral mesh
24+
case, as well as some other minor Julia fixes in the `examples/` and `scripts/`
25+
directories.
26+
- Added updates to superbuild including better ARPACK support, though still experimental
27+
compared to SLEPc.
28+
- Added updated submodules for superbuild.
29+
1430
## [0.11.0] - 2023-01-26
1531

1632
- Initial public release on GitHub.
@@ -40,13 +56,14 @@ The format of this changelog is based on
4056
eventually. Geometric multigrid is turned on by default.
4157
- Added structured simulation metadata output in the form of a JSON file `palace.json`
4258
written to the directory specified by `config["Problem"]["Output"]`.
43-
- Added JSON schema files for the configuration file format as well as a helper script
59+
- Added JSON Schema files for the configuration file format as well as a helper script
4460
to check a provided configuration file against the schema.
4561
- Added optional interface to GSLIB library which enables `"Probe"` functionality to
4662
sample the computed electric and magnetic fields at points in space.
47-
- Prepared to support builds using Spack. This includes an option in the build system for
48-
user-supplied dependencies as an alternative to the superbuild configuration.
49-
- Updated submodules for superbuild, fixing a bug in SuperLU_DIST solver causing
63+
- Added preliminary support for builds using Spack. This includes an option in the build
64+
system for user-supplied dependencies as an alternative to the superbuild
65+
configuration.
66+
- Added updated submodules for superbuild, fixing a bug in SuperLU_DIST solver causing
5067
communication hangs for certain numbers of processors.
5168

5269
## [0.10.0] - 2022-10-04
@@ -72,7 +89,7 @@ The format of this changelog is based on
7289
- Fixed issues when compiling with Intel or Clang compilers.
7390
- Added CI test builds to test various build options and added easier default build
7491
options in CMake configuration.
75-
- Add `clang-format` and `JuliaFormatter` configurations for automated C++, Julia, and
92+
- Added `clang-format` and `JuliaFormatter` configurations for automated C++, Julia, and
7693
Markdown code formatting.
7794

7895
## [0.9.0] - 2022-07-11

CMakeLists.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
1414
endif()
1515

1616
# Initialize the project
17-
project(palace-superbuild LANGUAGES CXX C VERSION 0.11.0)
17+
project(palace-superbuild LANGUAGES CXX C VERSION 0.11.1)
1818

1919
# Define build settings and defaults
2020
set(PALACE_WITH_64BIT_INT OFF CACHE BOOL "Use 64 bit integers")

docs/make.jl

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ makedocs(
2222
"guide/guide.md",
2323
"guide/problem.md",
2424
"guide/model.md",
25+
"guide/boundaries.md",
2526
"guide/postprocessing.md"
2627
],
2728
"Configuration File" => Any[

docs/src/config/boundaries.md

+53-53
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,10 @@
1616
{
1717
...
1818
},
19+
"Impedance":
20+
[
21+
...
22+
],
1923
"Absorbing":
2024
{
2125
...
@@ -24,10 +28,6 @@
2428
[
2529
...
2630
],
27-
"Impedance":
28-
[
29-
...
30-
],
3131
"LumpedPort":
3232
[
3333
...
@@ -83,17 +83,17 @@ conditions (zero tangential electric field).
8383
conditions (zero tangential magnetic field). Also imposes symmetry of the electric field
8484
across the boundary surface.
8585

86+
`"Impedance"` : Array of objects for configuring surface impedance boundary conditions. A
87+
surface impedance boundary relates the tangential electric and magnetic fields on the
88+
boundary using a user specified surface impedance.
89+
8690
`"Absorbing"` : Top-level object for configuring absorbing boundary conditions. These are
8791
artificial scattering boundary conditions at farfield boundaries.
8892

8993
`"Conductivity"` : Array of objects for configuring finite conductivity surface impedance
9094
boundary conditions. Finite conductivity boundaries are only available for the frequency
9195
domain driven simulation type.
9296

93-
`"Impedance"` : Array of objects for configuring surface impedance boundary conditions. A
94-
surface impedance boundary relates the tangential electric and magnetic fields on the
95-
boundary using a user specified surface impedance.
96-
9797
`"LumpedPort"` : Array of objects for configuring lumped port boundary conditions. Lumped
9898
ports can be specified on boundaries which are internal to the computational domain.
9999

@@ -105,7 +105,7 @@ frequency domain driven simulation type.
105105
`"WavePortPEC"` : Top-level object for configuring PEC boundary conditions for boundary
106106
mode analysis performed on the wave port boundaries. Thus, this object is only relevant
107107
when wave port boundaries are specified under [`config["Boundaries"]["WavePort"]`]
108-
(#boundaries["WavePort"]).
108+
(#boundaries[%5B%22WavePort%22%5D]).
109109

110110
`"SurfaceCurrent"` : Array of objects for configuring surface current boundary conditions.
111111
This boundary prescribes a unit source surface current excitation on the given boundary in
@@ -162,6 +162,35 @@ with
162162
`"Attributes" [None]` : Integer array of mesh boundary attributes at which to apply the
163163
PMC boundary condition.
164164

165+
## `boundaries["Impedance"]`
166+
167+
```json
168+
"Impedance":
169+
[
170+
{
171+
"Attributes": [<int array>],
172+
"Rs": <float>,
173+
"Ls": <float>,
174+
"Cs": <float>
175+
},
176+
...
177+
]
178+
```
179+
180+
with
181+
182+
`"Attributes" [None]` : Integer array of mesh boundary attributes for this surface
183+
impedance boundary.
184+
185+
`"Rs" [0.0]` : Surface resistance used for computing this surface impedance boundary's
186+
impedance per square, ``\Omega``/sq.
187+
188+
`"Ls" [0.0]` : Surface inductance used for computing this surface impedance boundary's
189+
impedance per square, H/sq.
190+
191+
`"Cs" [0.0]` : Surface capacitance used computing this surface impedance boundary's
192+
impedance per square, F/sq.
193+
165194
## `boundaries["Absorbing"]`
166195

167196
```json
@@ -174,8 +203,8 @@ PMC boundary condition.
174203

175204
with
176205

177-
`"Attributes" [None]` : Integer array of mesh boundary attributes at which to apply this
178-
boundary condition.
206+
`"Attributes" [None]` : Integer array of mesh boundary attributes at which to apply
207+
farfield absorbing boundary conditions.
179208

180209
`"Order" [1]` : Specify a first- or second-order approximation for the farfield absorbing
181210
boundary condition. Second-order absorbing boundary conditions are only available for the
@@ -210,35 +239,6 @@ S/m.
210239
specified in mesh length units. Activates a finite conductivity boundary condition which
211240
accounts for nonzero metal thickness.
212241

213-
## `boundaries["Impedance"]`
214-
215-
```json
216-
"Impedance":
217-
[
218-
{
219-
"Attributes": [<int array>],
220-
"Rs": <float>,
221-
"Ls": <float>,
222-
"Cs": <float>
223-
},
224-
...
225-
]
226-
```
227-
228-
with
229-
230-
`"Attributes" [None]` : Integer array of mesh boundary attributes for this surface
231-
impedance boundary.
232-
233-
`"Rs" [0.0]` : Surface resistance used for computing this surface impedance boundary's
234-
impedance per square, ``\Omega``/sq.
235-
236-
`"Ls" [0.0]` : Surface inductance used for computing this surface impedance boundary's
237-
impedance per square, H/sq.
238-
239-
`"Cs" [0.0]` : Surface capacitance used computing this surface impedance boundary's
240-
impedance per square, F/sq.
241-
242242
## `boundaries["LumpedPort"]`
243243

244244
```json
@@ -310,13 +310,13 @@ parameters, and not with any of the circuit parameters `"R"`, `"L"`, or `"C"`.
310310
impedance, F/sq. This option should only be used along with the corresponding `"Rs"` and
311311
`"Ls"` parameters, and not with any of the circuit parameters `"R"`, `"L"`, or `"C"`.
312312

313-
`"Elements"[]."Attributes" [None]` : This option is for multielement lumped ports and
313+
`"Elements"[]["Attributes"] [None]` : This option is for multielement lumped ports and
314314
should not be combined with the `"Attributes"` field described above. Each element of a
315315
multielement lumped port can be described by its own unique integer array of mesh boundary
316316
attributes, which are specified here. The elements of a multielement port add in parallel.
317317

318-
`"Elements"[]."Direction" [None]` : This option is for multielement lumped ports and should
319-
not be combined with the `"Direction"` field described above. Each element of a
318+
`"Elements"[]["Direction"] [None]` : This option is for multielement lumped ports and
319+
should not be combined with the `"Direction"` field described above. Each element of a
320320
multielement lumped port can be described by its own unique direction, which is specified
321321
here. The elements of a multielement port add in parallel.
322322

@@ -349,8 +349,8 @@ driven simulation types.
349349
`"Mode" [1]` : Mode index (1-based) for the characteristic port mode of this wave port
350350
boundary. Ranked in order of decreasing wave number.
351351

352-
`"Offset" [0.0]` : Offset distance used for S-parameter de-embedding for this wave port
353-
boundary, specified in mesh length units.
352+
`"Offset" [0.0]` : Offset distance used for scattering parameter de-embedding for this wave
353+
port boundary, specified in mesh length units.
354354

355355
## `boundaries["WavePortPEC"]`
356356

@@ -364,8 +364,8 @@ boundary, specified in mesh length units.
364364
with
365365

366366
`"Attributes" [None]` : Integer array of mesh boundary attributes to consider along with
367-
those specified under `["Boundaries"]["PEC"]["Attributes"]` as PEC when performing wave
368-
port boundary mode analysis.
367+
those specified under [`config["Boundaries"]["PEC"]["Attributes"]`]
368+
(#boundaries%5B%22PEC%22%5D) as PEC when performing wave port boundary mode analysis.
369369

370370
## `boundaries["SurfaceCurrent"]`
371371

@@ -395,22 +395,22 @@ with
395395
files.
396396

397397
`"Attributes" [None]` : Integer array of mesh boundary attributes for this surface current
398-
boundary. If this boundary is to be a multielement boundary which distributes the source
398+
boundary. If this source is to be a multielement source which distributes the source
399399
across more than a single lumped element, use the `"Elements"` array described below.
400400

401401
`"Direction" [None]` : Defines the source current direction for this surface current
402402
boundary. The available options are the same as under
403-
`["Boundaries"]["LumpedPort"]["Direction"]`. If this boundary is to be a multielement
404-
boundary which distributes the source across more than a single lumped element, use the
405-
`"Elements"` array described below.
403+
[`config["Boundaries"]["LumpedPort"]["Direction"]`](#boundaries%5B%22LumpedPort%22%5D). If
404+
this source is to be a multielement source which distributes the source across more than a
405+
single lumped element, use the `"Elements"` array described below.
406406

407-
`["Elements"][]["Attributes"] [None]` : This option is for multielement surface current
407+
`"Elements"[]["Attributes"] [None]` : This option is for multielement surface current
408408
boundaries should not be combined with the `"Attributes"` field described above. Each
409409
element of a multielement current source can be described by its own unique integer array of
410410
mesh boundary attributes, which are specified here. The elements of a multielement source
411411
add in parallel to give the same total current as a single-element source.
412412

413-
`["Elements"][]["Direction"] [None]` : This option is for multielement surface current
413+
`"Elements"[]["Direction"] [None]` : This option is for multielement surface current
414414
boundaires and should not be combined with the `"Direction"` field described above. Each
415415
element of a multielement current source can be described by its own unique direction,
416416
which is specified here. The elements of a multielement source add in parallel to give the

docs/src/guide/boundaries.md

+122
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
```@raw html
2+
<!--- Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. --->
3+
<!--- SPDX-License-Identifier: Apache-2.0 --->
4+
```
5+
6+
# Boundary Conditions
7+
8+
## Perfect electric conductor (PEC) boundary
9+
10+
The perfect electric conductor (PEC) boundary condition (zero tangential electric field) is
11+
specified using the `"PEC"` boundary keyword under
12+
[`config["Boundaries"]`](../config/boundaries.md#boundaries%5B%22PEC%22%5D). It is a
13+
homogeneous Dirichlet boundary condition for the frequency or time domain finite element
14+
formulation, as well as the magnetostatic formulation.
15+
16+
For electrostatic simulations, the homogeneous Dirichlet boundary condition is prescribed
17+
using the [`"Ground"`](../config/boundaries.md#boundaries%5B%22Ground%22%5D) boundary
18+
keyword which prescribes zero voltage at the boundary.
19+
20+
## Perfect magnetic conductor (PMC) boundary
21+
22+
The perfect magnetic conductor (PMC) boundary condition (zero tangential magnetic field) is
23+
a homogenous Neumann boundary condition for the frequency or time domain finite element
24+
formulation, as well as the magnetostatic formulation. It is the natural boundary condition
25+
and thus it has the same effect as not specifying any additional boundary condition on
26+
external boundary surfaces. It can also be explicitly specified using the `"PMC"` boundary
27+
keyword under [`config["Boundaries"]`](../config/boundaries.md#boundaries%5B%22PMC%22%5D).
28+
29+
Likewise, for electrostatic simulations, the homogeneous Neumann boundary condition implies
30+
a zero-charge boundary, and thus zero gradient of the voltage in the direction normal to the
31+
boundary. This is specified using the `"ZeroCharge"` boundary keyword under
32+
[`config["Boundaries"]`](../config/boundaries.md#boundaries%5B%22ZeroCharge%22%5D).
33+
34+
## Impedance boundary
35+
36+
The impedance boundary condition is a mixed (Robin) boundary condition and is available for
37+
the frequency or time domain finite element formulations and thus for eigenmode or frequency
38+
or time domain driven simulation types. It is specified using the [`"Impedance"`]
39+
(../config/boundaries.md#boundaries%5B%22Impedance%22%5D) boundary keyword. The surface
40+
impedance relating the tangential electric and magnetic fields on the boundary is computed
41+
from the parallel impedances due to the specified resistance, inductance, and capacitance
42+
per square.
43+
44+
## Absorbing (scattering) boundary
45+
46+
Absorbing boundary conditions at farfield boundaries, also referred to as scattering
47+
boundary conditions, can be applied using the `"Absorbing"` boundary keyword under
48+
[`config["Boundaries"]`](../config/boundaries.md#boundaries%5B%22Absorbing%22%5D). The
49+
first-order absorbing boundary condition is a special case of the above impedance boundary
50+
and is available for eigenmode or frequency or time domain driven simulation types. The
51+
second-order absorbing boundary condition is only available for frequency domain driven
52+
simulations.
53+
54+
[Perfectly matched layer (PML)](https://en.wikipedia.org/wiki/Perfectly_matched_layer)
55+
boundaries for frequency and time domain electromagnetic formulations are not yet
56+
implemented, but are [common]
57+
(https://www.sciencedirect.com/science/article/abs/pii/S0021999112000344) in solvers for
58+
computational electromagnetics and will be a useful addition.
59+
60+
## Finite conductivity boundary
61+
62+
A finite conductivity boundary condition can be specified using the [`"Conductivty"`]
63+
(../config/boundaries.md#boundaries%5B%22Conductivity%22%5D) boundary keyword. This boundary
64+
condition models the effect of a boundary with non-infinite conductivity (an imperfect
65+
conductor) for conductors with thickness much larger than the skin depth. It is available
66+
only for frequency domain driven simulations.
67+
68+
## Lumped and wave port excitation
69+
70+
- [`config["Boundaries"]["LumpedPort"]`]
71+
(../config/boundaries.md#boundaries["LumpedPort"]) : A lumped port applies a similar
72+
boundary condition to a [surface impedance](#Impedance-boundary) boundary, but takes on
73+
a special meaning for each simulation type.
74+
75+
For frequency domain driven simulations, ports are used to provide a lumped port
76+
excitation and postprocess voltages, currents, and scattering parameters. Likewise, for
77+
transient simulations, they perform a similar purpose but for time domain computed
78+
quantities.
79+
80+
For eigenmode simulations where there is no excitation, lumped ports are used to specify
81+
properties and postprocess energy-participation ratios (EPRs) corresponding to
82+
linearized circuit elements.
83+
84+
Note that a single lumped port (given by a single integer `"Index"`) can be made up of
85+
multiple boundary attributes in the mesh in order to model, for example, a multielement
86+
lumped port.
87+
88+
- [`config["Boundaries"]["WavePort"]`]
89+
(../config/boundaries.md#boundaries["WavePort"]) : Numeric wave ports are available for
90+
frequency domain driven simulations. In this case, a port boundary condition is applied
91+
with an optional excitation using a modal field shape which is computed by solving a 2D
92+
boundary mode eigenproblem on each wave port boundary. This allows for more accurate
93+
scattering parameter calculations when modeling waveguides or transmission lines with
94+
arbitrary cross sections.
95+
96+
The homogenous Dirichlet boundary conditions for the wave port boundary mode analysis
97+
are taken from the `"PEC"` boundaries of the full 3D model, as well as any optional
98+
additional boundary attributes given under `"WavePortPEC"`. Any boundary of the wave
99+
port not labeled with with a PEC condition has the natural boundary condition for zero
100+
tangential magnetic field prescribed for the purpose of port mode calculation.
101+
102+
Unlike lumped ports, wave port boundaries cannot be defined internal to the
103+
computational domain and instead must exist only on the outer boundary of the domain
104+
(they are to be "one-sided" in the sense that mesh elements only exist on one side of
105+
the boundary).
106+
107+
The incident field excitation at a lumped or wave port is controlled by setting
108+
[`config["Boundaries"]["LumpedPort"][]["Excitation"]: true`]
109+
(../config/boundaries.md#boundaries["LumpedPort"]) or
110+
[`config["WavePort"][]["Excitation"]: true`]
111+
(../config/boundaries.md#boundaries%5B%22WavePort%22%5D) for that port. The excitation for
112+
each port is defined to have unit incident power over the port boundary surface.
113+
114+
## Surface current excitation
115+
116+
An alternative source excitation to lumped or wave ports for frequency and time domain
117+
driven simulations is a surface current excitation, specified under
118+
[`config["Boundaries"]["SurfaceCurrent"]`]
119+
(../config/boundaries.md#boundaries["SurfaceCurrent"]). This is the excitation used for
120+
magnetostatic simulation types as well. This option prescribes a unit source surface current
121+
excitation on the given boundary in order to excite the model. It does does not prescribe
122+
any boundary condition to the model and only affects the source term on the right hand side.

0 commit comments

Comments
 (0)