Skip to content

Commit d2d343b

Browse files
committed
Update range-solver-lib with contaminant dispersion fix and correct time-dependent value docs
1 parent 4954a01 commit d2d343b

6 files changed

Lines changed: 26 additions & 7 deletions

File tree

‎src/fea/doc/RELEASE_NOTES.md‎

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,21 @@
218218
accepted alternatives. An acoustic entity carrying a density and a speed of
219219
sound is no longer flagged for missing a modulus of elasticity
220220

221+
#### Contaminant dispersion
222+
223+
- A transient contaminant dispersion run no longer blows up. The particle
224+
concentration used to grow far above the highest inflow value, first where
225+
the flow recirculates, because of errors in the stabilisation of the
226+
equations and because negative values were clipped to zero after every
227+
time step. On the tutorial channel model the maximum now follows the inflow
228+
value (`0.618` at time-step 618, where `3326` was reported before).
229+
Negative concentrations now appear instead of being hidden by the clipping;
230+
they are numerical undershoots, not missing contaminant, and are largest at a
231+
few nodes
232+
- The *Contaminant dispersion in fluids* tutorial states that time-dependent
233+
values are interpolated linearly between the given times. It used to say
234+
that each value applies from its time onwards
235+
221236
#### Solver control
222237

223238
- **Stop solver** and **Kill solver** are enabled only while a solver is

‎src/fea/help/theory/en/theory_fluid.md‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -961,7 +961,9 @@ domain, `L / |v|`, divided by that step.
961961
`0`, the release concentration at the moment the release starts, and `0`
962962
again when it ends.
963963

964-
Each value is valid **from** the time given. This time-triggered condition is
964+
Between two given times the value is interpolated linearly, and after the last
965+
time the last value is kept, so a release that should start abruptly needs two
966+
entries close together. This time-dependent condition is
965967
what turns a steady inlet into a release event, and it is the heart of a
966968
dispersion model.
967969

@@ -1006,7 +1008,7 @@ the march. Without it the run starts from rest and the first steps are wasted.
10061008
|---|---|
10071009
| The concentration never leaves the inlet | the flow field is zero - the flow task is missing from the group, or the run was not restarted from a converged flow |
10081010
| The plume smears out almost immediately | the Courant number is far above 1, or the mesh is too coarse along the path |
1009-
| The concentration goes negative or overshoots | the time step is too large for the mesh, so the stabilised advection is ringing |
1011+
| The concentration goes negative or overshoots | the time step is too large for the mesh, so the stabilised advection is ringing. Slight undershoots next to a steep front are normal; the solution is not clipped at zero, because clipping would add contaminant |
10101012
| Only one record was written | the output frequency is `0`, which writes the last step only |
10111013
| Each step's residual stays high | too few iterations per time step - the flow within each step is not converged |
10121014
| The plume never spreads sideways | that is the model: the diffusivity is zero, so lateral spreading comes only from the flow field |

‎src/fea/help/theory/sk/theory_fluid.md‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -961,7 +961,9 @@ domain, `L / |v|`, divided by that step.
961961
`0`, the release concentration at the moment the release starts, and `0`
962962
again when it ends.
963963

964-
Each value is valid **from** the time given. This time-triggered condition is
964+
Between two given times the value is interpolated linearly, and after the last
965+
time the last value is kept, so a release that should start abruptly needs two
966+
entries close together. This time-dependent condition is
965967
what turns a steady inlet into a release event, and it is the heart of a
966968
dispersion model.
967969

@@ -1006,7 +1008,7 @@ the march. Without it the run starts from rest and the first steps are wasted.
10061008
|---|---|
10071009
| The concentration never leaves the inlet | the flow field is zero - the flow task is missing from the group, or the run was not restarted from a converged flow |
10081010
| The plume smears out almost immediately | the Courant number is far above 1, or the mesh is too coarse along the path |
1009-
| The concentration goes negative or overshoots | the time step is too large for the mesh, so the stabilised advection is ringing |
1011+
| The concentration goes negative or overshoots | the time step is too large for the mesh, so the stabilised advection is ringing. Slight undershoots next to a steep front are normal; the solution is not clipped at zero, because clipping would add contaminant |
10101012
| Only one record was written | the output frequency is `0`, which writes the last step only |
10111013
| Each step's residual stays high | too few iterations per time step - the flow within each step is not converged |
10121014
| The plume never spreads sideways | that is the model: the diffusivity is zero, so lateral spreading comes only from the flow field |

‎src/fea/help/tutorials/en/tutorial_Contaminant_dispersion_in_fluids.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ Apply **Particle concentration** boundary condition to **Inflow** model entity.
126126

127127
Do not specify value but expand the **Particle concentration** property (arrow in front of its name) and click on **Edit time dependent values** button, to specify time-triggered (time-profile) boundary condition.
128128

129-
In the **Component editor** dialog, time-dependent values can be specified. Values are always valid **from** the specified time. Set **Number of values** to **3** and enter values as shown below (double click on a cell to edit it), then click **Ok**.
129+
In the **Component editor** dialog, time-dependent values can be specified. Between two specified times the value is interpolated linearly, and after the last specified time the last value is kept. With the values below the inflow concentration therefore rises from 0 to 1 `[kg/m^3]` during the first 10 seconds and falls back to 0 between 10 and 15 seconds. Set **Number of values** to **3** and enter values as shown below (double click on a cell to edit it), then click **Ok**.
130130

131131
![CFD - Particle concentration condition](image-CFD-Particle_concentration_condition.png)
132132

‎src/fea/help/tutorials/sk/tutorial_Contaminant_dispersion_in_fluids.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ Aplikujte okrajovú podmienku **Koncentrácia častíc** na entitu modelu **Prí
7676

7777
Nezadávajte hodnotu, ale kliknite na tlačidlo **Upraviť časovo závislé hodnoty** na zadanie časovo spustenej (časový profil) okrajovej podmienky.
7878

79-
V dialógu **Editor komponentov** možno zadávať časovo závislé hodnoty. Hodnoty sú vždy platné **od** zadaného času.
79+
V dialógu **Editor komponentov** možno zadávať časovo závislé hodnoty. Medzi dvoma zadanými časmi sa hodnota lineárne interpoluje a po poslednom zadanom čase zostáva platná posledná hodnota. Pri hodnotách uvedených nižšie preto koncentrácia na vstupe počas prvých 10 sekúnd stúpa z 0 na 1 `[kg/m^3]` a medzi 10. a 15. sekundou klesne späť na 0.
8080

8181
![CFD – Podmienka koncentrácie častíc](image-CFD-Particle_concentration_condition.png)
8282

0 commit comments

Comments
 (0)