You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+72-19Lines changed: 72 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -102,7 +102,7 @@ MFEM is included as a submodule (`external/mfem-geg`) and built automatically. T
102
102
### Defining a JSON file
103
103
104
104
Cases can be defined by parsing a JSON file with the problem information. See a complete [example](https://github.com/OpenSEMBA/dgtd/blob/main/testData/maxwellInputs/1D_PEC/1D_PEC.json) of a valid JSON file.
105
-
An OpenSEMBA/dgtd JSON file must have the following structure; **bold**entries are **required**:
105
+
An OpenSEMBA/dgtd JSON file must have the following structure. Legend: **[REQUIRED]**= must be present; **[OPTIONAL]** = has a default value (shown).
106
106
107
107
- solver_options:
108
108
- Object. User can customise solver settings. If undefined, all defaults apply.
@@ -114,18 +114,18 @@ An OpenSEMBA/dgtd JSON file must have the following structure; **bold** entries
114
114
- Double. Total simulation duration in natural units (1 meter/c). If undefined, defaults to `2.0`.
115
115
- time_step:
116
116
- Double. Fixed time step in natural units. Must be defined for 2D and 3D problems. Overrides `cfl` for 1D if both are defined. If undefined or `0.0` in 1D, an automatic step is computed via CFL.
117
-
- cfl:
118
-
- Double. Courant–Friedrichs–Lewy condition used to compute the automatic time step in 1D. Not available for 2D or 3D. Ignored if `time_step` is also defined. Must be in the range (0.0, 1.0].
119
-
- order:
120
-
- Integer. Polynomial order of the finite element basis. If undefined, defaults to `3`.
117
+
- **cfl**:
118
+
- Double. Courant–Friedrichs–Lewy condition used to compute the automatic time step in 1D. Not available for 2D or 3D. Ignored if `time_step` is also defined. Must be in the range (0.0, 1.0]. Defaults to `1.0`.
119
+
- **order**:
120
+
- Integer. Polynomial order of the finite element basis. Defaults to `2`.
121
121
- spectral:
122
122
- Boolean. Use a spectral evolution operator that assembles the full E/H system matrix and derives the time step from its eigenvalues. High computational cost; does not support all features. If undefined, defaults to `false`.
123
123
- export_operator:
124
124
- Boolean. Write the assembled evolution operator matrix to disk for inspection. If undefined, defaults to `false`.
125
-
- basis_type:
126
-
- String. Finite element basis type passed to MFEM.
127
-
- ode_type:
128
-
- String. ODE time-integration method passed to MFEM.
125
+
- **basis_type**:
126
+
- Integer. Finite element basis type passed to MFEM. Defaults to `1` (GaussLobatto). Values: `0` (GaussLegendre), `1` (GaussLobatto), `2` (Bernstein), `3` (OpenUniform), `4` (CloseUniform), `5` (OpenHalfUniform).
- steps: Integer. Export every N time steps. Mutually exclusive with `saves`.
173
173
- saves: Integer. Total number of exports over the whole simulation. The step interval is computed automatically. Mutually exclusive with `steps`.
174
174
- point:
175
175
- Array. Each entry records all E and H field components at a single point every interval.
176
176
- **position**: Array of doubles. Spatial coordinates. Must match the mesh dimension (e.g. `[x, y]` for 2D). ***Warning:*** If the point lies outside the mesh the simulation will crash.
177
-
- steps / saves: See exporter above.
177
+
- steps / saves: (steps and saves are mutually exclusive; see `exporter` above for details)
178
178
- field:
179
179
- Array. Each entry records a single scalar field component at a point.
180
180
- **field_type**: String. Can be `"electric"` or `"magnetic"`.
181
181
- **polarization**: String. Component to record. Can be `"X"`, `"Y"`, or `"Z"`.
182
182
- **position**: Array of doubles. Spatial coordinates. Same constraints as for `point`.
183
-
- steps / saves: See exporter above.
183
+
- steps / saves: (steps and saves are mutually exclusive; see `exporter` above for details)
184
184
- domain_snapshot:
185
185
- Object. Periodic full-domain field snapshot (alternative to the incremental exporter).
186
-
- name: String. Output name. Defaults to the mesh filename stem.
- steps / saves: (steps and saves are mutually exclusive; see `exporter` above for details)
188
188
- rcssurface:
189
189
- Array. Each entry exports surface E/H field snapshots projected onto a boundary submesh to a compact binary file (`surface_data.bin`). The binary contains a geometry header (quadrature point positions, outward normals, and weights) followed by time-stamped E/H field blocks. Intended for offline RCS post-processing.
190
190
- **tags**: Array of integers. Mesh surface tags that define the integration surface.
191
-
- name: String. Output name.
192
-
- steps / saves: See exporter above.
191
+
- name: String. [OPTIONAL] Output name. Defaults to `"RCSSurfaceProbe"`.
192
+
- steps / saves: (steps and saves are mutually exclusive; see `exporter` above for details)
193
193
- mor_state:
194
-
- Array. Each entry periodically saves the full DG state vector (all E and H DOFs) to disk over a specified time window. The saved vectors are compatible with the exported global operator matrix (`{name}_global.csr`), so that `y = A * x` can be evaluated offline (e.g. in Python). Each snapshot is written as a plain-text file `x_0`, `x_1`, … containing the vector size on the first line followed by one DOF value per line (16-digit precision). The vector layout is `[Ex₀…ExN | Ey | Ez | Hx | Hy | Hz]`.
194
+
- Array. Each entry periodically saves the full DG state vector (all E and H DOFs) to disk over a specified time window. The saved vectors are compatible with the exported global operator matrix (`{name}_global.csr`), so that `y = A * x` can be evaluated offline (e.g. in Python). Each snapshot is written as a plain-text file `x_0`, `x_1`, … with: first line = absolute simulation time, second line = vector size, followed by one DOF value per line (16-digit precision). The vector layout is `[Ex₀…ExN | Ey | Ez | Hx | Hy | Hz]`.
195
195
- **record_time_start**: Double. Simulation time at which recording begins.
196
196
- **record_time_final**: Double. Simulation time at which recording ends.
197
197
- **saves**: Integer. Number of snapshots to record, distributed uniformly between `record_time_start` and `record_time_final`.
@@ -208,8 +208,8 @@ An OpenSEMBA/dgtd JSON file must have the following structure; **bold** entries
208
208
- **type**: String. Can be `"gaussian"`, `"resonant"`, `"besselj6_2D"`, or `"besselj6_3D"`.
209
209
- *(For `type: "gaussian"`)* **spread**: Double. Standard deviation $\sigma$ of the Gaussian pulse.
210
210
- *(For `type: "resonant"`)* **modes**: Array of integers. Number of standing waves along each spatial axis.
211
-
- *(Required for `magnitude.type: "gaussian"`)* **center**: Array of n doubles. Spatial position of the Gaussian centroid.
212
-
- *(Required for `magnitude.type: "gaussian"`)* **dimension**: Integer. Number of active spatial dimensions in the Gaussian exponent.
211
+
- **center** (Required for `magnitude.type: "gaussian"`): Array of n doubles. Spatial position of the Gaussian centroid.
212
+
- **dimension** (Required for `magnitude.type: "gaussian"`): Integer. Number of active spatial dimensions in the Gaussian exponent.
-`opensemba_mor2paraview` supports only single-rank execution.
281
+
- Output is the same ParaView-style time-series format used by the exporter probe (collection plus time-step data), suitable for direct loading in ParaView.
282
+
230
283
## Funding
231
284
232
285
- Spanish Ministry of Science and Innovation (MICIN/AEI) (Grant Number: PID2022-137495OB-C31).
0 commit comments