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
Record immersed-boundary forces and kinematics every time step
`ib_state_wrt` writes the force, torque and kinematic state of each immersed boundary only
at snapshot intervals, so the force history is sampled at the field-output cadence. That is
far too coarse to compare a transient load against an experiment or a reference
computation, or to drive a reduced-order model from a force signal: typical cases here
write a field every few hundred steps.
Write one record per time step to `D/ib<id>_forces.dat` (time step, time, force, torque,
velocity, angular velocity, angles, centroid), under the existing `ib_state_wrt` flag.
Records are buffered per rank and flushed in batches rather than opened per body per step:
opening a file per body per step is a metadata operation per step on a parallel filesystem
and does not scale, and a particle bed of a thousand bodies would issue on the order of a
hundred million of them over a long run. Each buffered row carries its own global body id,
so a body changing owner mid-run needs no special handling, and `ib_force_stride`
subsamples runs long enough for the record itself to become large.
Claude-Session: https://claude.ai/code/session_01HMJ7cycfo7kTFSFq5yhHLG
Copy file name to clipboardExpand all lines: docs/documentation/case.md
+2-1Lines changed: 2 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -728,6 +728,7 @@ To restart the simulation from $k$-th time step, see @ref running "Restarting Ca
728
728
|`alpha_wrt(i)`| Logical | Add the volume fraction of fluid $i$ to the database |
729
729
|`gamma_wrt`| Logical | Add the specific heat ratio function to the database |
730
730
|`heat_ratio_wrt`| Logical | Add the specific heat ratio to the database |
731
+
|`ib_force_stride`| Integer | Stride, in time steps, of the per-step immersed-boundary force record (default 1) |
731
732
|`ib_state_wrt`| Logical | Parameter to handle writing IB state on saves and outputting the state as a point mesh to SILO files. |
732
733
|`pi_inf_wrt`| Logical | Add the liquid stiffness function to the database |
733
734
|`pres_inf_wrt`| Logical | Add the liquid stiffness to the formatted database |
@@ -795,7 +796,7 @@ If `file_per_process` is true, then pre_process, simulation, and post_process mu
795
796
796
797
-`probe_wrt` activates the output of state variables at coordinates specified by `probe(i)%[x;y,z]`.
797
798
798
-
-`ib_state_wrt` is used to trigger post-processing of the IB state to be written out as a point mesh in the SILO files. When no IBs are moving, it also triggers force and torque calculation so that those values may be written to the output state files.
799
+
-`ib_state_wrt` is used to trigger post-processing of the IB state to be written out as a point mesh in the SILO files. When no IBs are moving, it also triggers force and torque calculation so that those values may be written to the output state files. It also records one line per time step in `D/ib<id>_forces.dat` for each immersed boundary (time step, time, force, torque, velocity, angular velocity, angles, centroid). Records are buffered and written in batches rather than opened per step, and `ib_force_stride` writes only every N-th step for runs long enough that the record itself becomes large.
799
800
800
801
-`output_partial_domain` activates the output of part of the domain specified by `[x,y,z]_output%%beg` and `[x,y,z]_output%%end`.
801
802
This is useful for large domains where only a portion of the domain is of interest.
0 commit comments