plot3d 1.7.6__tar.gz → 1.7.7__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: plot3d
3
- Version: 1.7.6
3
+ Version: 1.7.7
4
4
  Summary: Plot3D python utilities for reading and writing and also finding connectivity between blocks
5
5
  Author: Paht Juangphanich
6
6
  Author-email: paht.juangphanich@nasa.gov
@@ -82,23 +82,54 @@ def read_gridpro_connectivity(
82
82
  file_path: str,
83
83
  sb_zero_based_in_file: bool = True, # False if sb1/sb2 are 1-based in file
84
84
  index_zero_based_in_file: bool = True, # False if IMIN..KMAX are 1-based in file
85
+ inlet_ids: Optional[List[int]] = None,
86
+ outlet_ids: Optional[List[int]] = None,
87
+ wall_ids: Optional[List[int]] = None,
88
+ symm_slip_ids: Optional[List[int]] = None,
89
+ custom_bc_ids: Optional[Dict[str, List[int]]] = None,
85
90
  ) -> Dict[str, object]:
86
- """
87
- Parse a GridPro connectivity file and return dictionaries compatible with
88
- plot3d.connectivity_fast-style shapes.
89
-
90
- Expected P-line layout (as provided):
91
- P pid sb1 sf1 sb2 sf2 fmap L1i L1j L1k H1i H1j H1k L2i L2j L2k H2i H2j H2k pty lbid
92
-
93
- Returns:
94
- {
95
- "face_matches": List[{"block1":{...}, "block2":{...}}],
96
- "outer_faces": List[{... face dict ...}],
97
- "bc_group": {"inlet":[...], "outlet":[...], "symm_slip":[...], "wall":[...]},
98
- "gifs": List[List[face_dict]], # grouped by sf1
99
- "periodic_faces": List[{"block1":{...}, "block2":{...}}],
100
- "volume_zones": List[{"pty":int, "zone":str, "contiguous_index":int}],
101
- }
91
+ """Parse a GridPro connectivity file into plot3d.connectivity_fast-like structures.
92
+
93
+ Expected P-line layout (as provided):
94
+ ``P pid sb1 sf1 sb2 sf2 fmap L1i L1j L1k H1i H1j H1k L2i L2j L2k H2i H2j H2k pty lbid``
95
+
96
+ Boundary-condition IDs default to GridPro's PTY values but can be overridden
97
+ via the provided *_ids lists or extended via ``custom_bc_ids={"name": [ids]}``.
98
+
99
+ Args:
100
+ file_path: Path to the GridPro connectivity file.
101
+ sb_zero_based_in_file: Set False if ``sb1/sb2`` are 1-based in the file.
102
+ index_zero_based_in_file: Set False if IMIN..KMAX are 1-based in the file.
103
+ inlet_ids: PTY ids to treat as inlet; defaults to ``[5]``.
104
+ outlet_ids: PTY ids to treat as outlet; defaults to ``[6]``.
105
+ wall_ids: PTY ids to treat as wall; defaults to ``[2]``.
106
+ symm_slip_ids: PTY ids to treat as symmetry/slip; defaults to ``[4]``.
107
+ custom_bc_ids: Optional mapping of ``group_name -> [pty ids]`` for any
108
+ additional boundary-condition groupings (e.g., ``{"cooling": [500]}``).
109
+
110
+ Returns:
111
+ Dict[str, object]: A dictionary with keys:
112
+ - ``face_matches``: list of face-pair dictionaries for connected blocks.
113
+ - ``outer_faces``: list of faces on the exterior (no neighbor).
114
+ - ``bc_group``: mapping of bc name to list of faces (inlet/outlet/etc.).
115
+ - ``gif_faces``: list of faces tagged as GIF (pty 12..21 or 1000).
116
+ - ``periodic_faces``: list of paired periodic faces (pty 3).
117
+ - ``volume_zones``: list describing volume zone type per superblock.
118
+
119
+ Examples:
120
+ Basic usage with defaults::
121
+
122
+ data = read_gridpro_connectivity("connectivity.dat")
123
+ inlet_faces = data["bc_group"]["inlet"]
124
+
125
+ Override built-in BC ids and add a custom group::
126
+
127
+ data = read_gridpro_connectivity(
128
+ "connectivity.dat",
129
+ inlet_ids=[5, 105],
130
+ custom_bc_ids={"cooling_hole1": [500]},
131
+ )
132
+ cooling_faces = data["bc_group"]["cooling_hole1"]
102
133
  """
103
134
  # ---------------------------- parsing ----------------------------
104
135
  superblock_ptys: List[int] = []
@@ -207,18 +238,25 @@ def read_gridpro_connectivity(
207
238
  )
208
239
 
209
240
  # Boundary-condition groups (by pty)
210
- def bc_faces_for(pty_val: int) -> List[Dict[str, int]]:
241
+ def bc_faces_for(pty_vals: List[int]) -> List[Dict[str, int]]:
242
+ targets = set(pty_vals)
211
243
  return [
212
244
  face_dict(p["sb1"], p["L1i"], p["L1j"], p["L1k"], p["H1i"], p["H1j"], p["H1k"], p["pty"]) # type: ignore
213
- for p in patches if p["pty"] == pty_val
245
+ for p in patches if p["pty"] in targets
214
246
  ]
215
247
 
216
248
  bc_group = {
217
- "inlet": bc_faces_for(5),
218
- "outlet": bc_faces_for(6),
219
- "symm_slip": bc_faces_for(4),
220
- "wall": bc_faces_for(2),
249
+ "inlet": bc_faces_for(inlet_ids or [5]),
250
+ "outlet": bc_faces_for(outlet_ids or [6]),
251
+ "symm_slip": bc_faces_for(symm_slip_ids or [4]),
252
+ "wall": bc_faces_for(wall_ids or [2]),
221
253
  }
254
+
255
+ # add any user-defined boundary groups keyed by name -> list of pty ids
256
+ if custom_bc_ids:
257
+ for name, ids in custom_bc_ids.items():
258
+ if ids:
259
+ bc_group[name] = bc_faces_for(ids)
222
260
 
223
261
  # Periodic faces: pty == 3 (explicit pairs)
224
262
  periodic_faces: List[Dict[str, Dict[str, int]]] = []
@@ -410,6 +410,7 @@ def rotated_periodicity(blocks:List[Block], matched_faces:List[Dict[str,int]], o
410
410
  # Rotate Block 1
411
411
  block1_rotated = blocks_rotated[face1.blockIndex]
412
412
  block2 = blocks[face2.blockIndex]
413
+ print(f'evaluating working blocks: a={face1.blockIndex} b={face2.blockIndex}')
413
414
  # Check periodicity
414
415
  df, periodic_faces_temp, split_faces_temp = __periodicity_check__(face1,face2,block1_rotated, block2)
415
416
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "plot3d"
3
- version = "1.7.6"
3
+ version = "1.7.7"
4
4
  description = "Plot3D python utilities for reading and writing and also finding connectivity between blocks"
5
5
  authors = ["Paht Juangphanich <paht.juangphanich@nasa.gov>"]
6
6
 
@@ -16,6 +16,14 @@ matplotlib = "*"
16
16
 
17
17
  [tool.poetry.group.deve.dependencies]
18
18
 
19
+ [tool.poetry.group.docs]
20
+ optional = true
21
+
22
+ [tool.poetry.group.docs.dependencies]
23
+ sphinx = "^7.4"
24
+ sphinx-rtd-theme = "^2.0"
25
+ sphinx-autobuild = "^2024.4"
26
+
19
27
  [build-system]
20
28
  requires = ["poetry>=1.1.2"]
21
29
  build-backend = "poetry.masonry.api"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes