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: docs/documentation/case.md
+25-1Lines changed: 25 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -809,7 +809,31 @@ If `file_per_process` is true, then pre_process, simulation, and post_process mu
809
809
810
810
-`probe_wrt` activates the output of state variables at coordinates specified by `probe(i)%[x;y,z]`.
811
811
812
-
-`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.
812
+
-`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 the force, torque and kinematics of every immersed boundary in a single shared text file, `D/ib_forces.dat`, described below. `ib_force_stride` writes only every N-th step, for runs long enough that the history itself becomes large.
813
+
814
+
#### Immersed-boundary force history {#sec-ib-force-history}
815
+
816
+
`D/ib_forces.dat` holds one fixed-width record per body per written step. Its twenty columns are
817
+
818
+
| Columns | Quantity |
819
+
| ---: | :--- |
820
+
| 1 | body id (the global `patch_ib` index) |
821
+
| 2 | time |
822
+
| 3–5 | force, x/y/z |
823
+
| 6–8 | torque, x/y/z |
824
+
| 9–11 | velocity, x/y/z |
825
+
| 12–14 | angular velocity, x/y/z |
826
+
| 15–17 | angles about x/y/z |
827
+
| 18–20 | centroid, x/y/z |
828
+
829
+
The file carries no header line, because every record sits at a computed byte offset and a header would shift them all. Each record is exactly 353 bytes including its newline (`I10` followed by nineteen `1X,ES17.9E3` fields), so the whole file loads with `numpy.loadtxt` and a single body or step can be read without scanning it:
830
+
831
+
```
832
+
row = t_step / ib_force_stride
833
+
offset = (row * num_ibs + ib_id - 1) * 353
834
+
```
835
+
836
+
Rows are written in global body-id order, so the file is byte-identical however the domain is decomposed, and no merge step is needed after a parallel run.
813
837
814
838
-`output_partial_domain` activates the output of part of the domain specified by `[x,y,z]_output%%beg` and `[x,y,z]_output%%end`.
815
839
This is useful for large domains where only a portion of the domain is of interest.
0 commit comments