forked from 1b-agent/fieldcraft-upstream
docs: extrude up to a surface in the literature, MCP and meshing skill (#400)
Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_01UhhZMBTviDQxZvwnyP89fo
This commit is contained in:
1 parent
c077131285
commit
d703cdde0b
3 files changed
+37
-2
No files matched your search
+1
-1
@@ -116,7 +116,7 @@ software on the computer.
|
||||
| `open` | `path`, `model?` | By extension: `.fieldcraft` (`file.open`), `.solidcraft` (`geometry.open`), `.3mf` (`geometry.import.mesh`). For a design, `model` is `keep` (default: the mesh and definitions stay, as a reopen after an edit wants) or `new` (a new model with the design); the reply's `related` is false when the design has none of the bodies the model refers to, and `stale` lists the mesh bodies and sets that no longer resolve. |
|
||||
| `save` | `path?` | `file.save`: to `path` or the model's own file. |
|
||||
| `write_deck` | `format` (abaqus, nastran, lsdyna), `path`, `steps?` | `deck.write`. |
|
||||
| `mesh` | `method`, `params?` | Runs the mesher (`tet`: `mesh.tet.generate`; `hex`, `hex_sweep`, `hex_mapped`, `hex_blocks`: the structured hex meshers; `cells`: `mesh.cells`, a partitioned part cell by cell; `mirror`: `mesh.mirror`, a meshed half reflected across a plane; `block`: `mesh.block`; `planar`: `mesh.planar`) and replies with its result, `model.info` and `mesh.quality`. |
|
||||
| `mesh` | `method`, `params?` | Runs the mesher (`tet`: `mesh.tet.generate`; `hex`, `hex_sweep`, `hex_mapped`, `hex_blocks`: the structured hex meshers; `hex_extrude`: `mesh.hex.extrude`, layers from a section up to a target surface; `cells`: `mesh.cells`, a partitioned part cell by cell; `mirror`: `mesh.mirror`, a meshed half reflected across a plane; `block`: `mesh.block`; `planar`: `mesh.planar`) and replies with its result, `model.info` and `mesh.quality`. |
|
||||
| `solve` | `analysis` (static, nonlinear, frequency, buckle, explicit, fluid, heat), `step?`, `options?` | `solve.<analysis>` with the step and the solver's caps and settings. |
|
||||
| `show_results` | `step?`, `field?`, `bands?`, `range?`, `deformed?`, `scale?`, `mode?`, `frame?`, `time?` | The `results.*` commands its arguments ask for (`deformed: false` draws the undeformed mesh; `scale` is a factor, 0 for the undeformed shape so a sequence from 0 swings the deformation out, or `"auto"`; `range: {min?, max?}` clamps the legend, values above `max` drawn in the over colour); the reply has the contour range (smallest and largest value and their nodes: `field: "displacement"` gives the largest displacement), modes or frames. |
|
||||
| `probe` | `step?`, `nodes?`, `at?`, `elements?`, `points?`, `forces?`, `mode?`, `frame?` | `solve.probe`: stored results at nodes, at the nodes nearest to points `at` (structural steps), elements (explicit) or points (fluid). |
|
||||
|
||||
@@ -1098,6 +1098,22 @@ onto points, then smoothed). No code, manual or text of any commercial mesher wa
|
||||
based smoothing, L. A. Freitag, C. Ollivier-Gooch, IJNME 40:3979–4002, 1997; metric: P. M. Knupp,
|
||||
SIAM J. Sci. Comput. 23(1):193–218, 2001).
|
||||
|
||||
### B10. Extrusion up to a surface (implemented in `fieldcraft-mesh::hex::extrude_to`, `mesh.hex.extrude`)
|
||||
|
||||
A quad section is carried along straight per-node paths and its last layer ends on target B-rep
|
||||
faces, so a region need not be sweepable between two parallel faces.
|
||||
|
||||
- **Path ends**: Newton's method on the tangent plane of the target's closest point (the trimmed
|
||||
projection of B9), one step exact on a plane; side-face corners by alternating projections
|
||||
(J. von Neumann, *Functional Operators, vol. II*, Princeton 1950, ch. 13).
|
||||
- **Interior nodes**: straight paths plus the boundary's displacement onto the side faces,
|
||||
interpolated by inverse-distance weights: the boundary-residual correction of P. M. Knupp,
|
||||
*Next-generation sweep tool: a method for generating all-hex meshes on two-and-one-half
|
||||
dimensional geometries*, Proc. 7th International Meshing Roundtable, 1998 (as in B8's sweep);
|
||||
D. Shepard, *A two-dimensional interpolation function for irregularly-spaced data*, Proc. ACM
|
||||
National Conference 1968.
|
||||
- **Layer grading**: geometric progression of thicknesses (last over first = bias).
|
||||
|
||||
## Part C: Datasets and benchmarks
|
||||
|
||||
| Dataset | Content | Licence | Usable for FieldCraft? |
|
||||
|
||||
@@ -78,7 +78,26 @@ Before the first mesh command:
|
||||
- Use edge seeds (`mesh.seed.edge`) so counts match across shared edges and so there are enough
|
||||
elements through thin walls (at least 2–3 through a wall for bending, 1 for pure conduction only).
|
||||
- Tet (`tet10` preferred for stress) only for cells that are not worth blocking, and only where
|
||||
they are far from the region of interest.
|
||||
they are far from the region of interest. Before falling back to tet on a region that ends on a
|
||||
curved face, try extrude-to-surface (§3b).
|
||||
|
||||
## 3b. Extrude up to a surface — try it before giving up on a region
|
||||
|
||||
A region that is one section carried to a curved or tilted end (a boss or rib meeting a curved
|
||||
wall, an air column under a domed lid, a fillet region capped by a curved face) is not sweepable
|
||||
between parallel faces, but `mesh.hex.extrude` meshes it:
|
||||
|
||||
- `source`: the section's face. If a neighbour (or the cell below) is already meshed there, its
|
||||
quads are reused and the two meshes share nodes; else a planar face is meshed here at `size`.
|
||||
A 2D mesh works too (`source_set`).
|
||||
- `to_surface`: the end faces; `sides`: the region's side faces (give them whenever they are not
|
||||
straight along the path, so every layer follows them).
|
||||
- `direction` for a straight region, else `normal`; `layers` (or `size`) and `bias` (< 1 grades
|
||||
toward the target, e.g. for a boundary layer under a lid).
|
||||
- Check the reply: `max_target_gap` ≈ 0, `min_scaled_jacobian` ≥ 0.5, `section.shared_nodes`
|
||||
equal to the section's nodes when it should conform. An error names the node whose path
|
||||
misses the target or the element that would invert: shorten the region (cut it where the end
|
||||
turns steep) rather than falling back to tets.
|
||||
|
||||
## 3a. Projection blocking
|
||||
|
||||
|
||||
Reference in new issue
Block a user