cad-to-dagmc 0.7.5__py3-none-any.whl → 0.7.7__py3-none-any.whl

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.

Potentially problematic release.


This version of cad-to-dagmc might be problematic. Click here for more details.

_version.py CHANGED
@@ -12,5 +12,5 @@ __version__: str
12
12
  __version_tuple__: VERSION_TUPLE
13
13
  version_tuple: VERSION_TUPLE
14
14
 
15
- __version__ = version = '0.7.5'
16
- __version_tuple__ = version_tuple = (0, 7, 5)
15
+ __version__ = version = '0.7.7'
16
+ __version_tuple__ = version_tuple = (0, 7, 7)
cad_to_dagmc/core.py CHANGED
@@ -5,6 +5,7 @@ import numpy as np
5
5
  from cadquery import importers
6
6
  from pymoab import core, types
7
7
  import tempfile
8
+ import warnings
8
9
 
9
10
 
10
11
  def _define_moab_core_and_tags() -> tuple[core.Core, dict]:
@@ -76,6 +77,7 @@ def _vertices_to_h5m(
76
77
  triangles:
77
78
  material_tags:
78
79
  h5m_filename:
80
+ implicit_complement_material_tag:
79
81
  """
80
82
 
81
83
  if len(material_tags) != len(triangles_by_solid_by_face):
@@ -184,7 +186,15 @@ def _vertices_to_h5m(
184
186
 
185
187
  moab_core.add_entities(file_set, all_sets)
186
188
 
187
- moab_core.write_file(h5m_filename)
189
+ # makes the folder if it does not exist
190
+ if Path(h5m_filename).parent:
191
+ Path(h5m_filename).parent.mkdir(parents=True, exist_ok=True)
192
+
193
+ # moab_core.write_file only accepts strings
194
+ if isinstance(h5m_filename, Path):
195
+ moab_core.write_file(str(h5m_filename))
196
+ else:
197
+ moab_core.write_file(h5m_filename)
188
198
 
189
199
  print(f"written DAGMC file {h5m_filename}")
190
200
 
@@ -230,8 +240,7 @@ def _mesh_brep(
230
240
  mesh_algorithm: int = 1,
231
241
  dimensions: int = 2,
232
242
  ):
233
- """Creates a conformal surface meshes of the volumes in a Brep file using
234
- Gmsh.
243
+ """Creates a conformal surface meshes of the volumes in a Brep file using Gmsh.
235
244
 
236
245
  Args:
237
246
  occ_shape: the occ_shape of the Brep file to convert
@@ -339,6 +348,12 @@ def _check_material_tags(material_tags, iterable_solids):
339
348
  if not isinstance(material_tag, str):
340
349
  msg = f"material_tags should be an iterable of strings."
341
350
  raise ValueError(msg)
351
+ if len(material_tag) > 28:
352
+ msg = (
353
+ f"Material tag {material_tag} is too long. DAGMC will truncate this material tag "
354
+ f"to 28 characters. The resulting tag in the h5m file will be {material_tag[:28]}"
355
+ )
356
+ warnings.warn(msg)
342
357
 
343
358
 
344
359
  def order_material_ids_by_brep_order(original_ids, scrambled_id, material_tags):
@@ -357,6 +372,7 @@ class MeshToDagmc:
357
372
 
358
373
  # TODO add export_unstructured_mesh_file
359
374
  # TODO add add_gmsh_msh_file
375
+ # TODO test for exports result in files
360
376
 
361
377
  def export_dagmc_h5m_file(
362
378
  self,
@@ -530,6 +546,8 @@ class CadToDagmc:
530
546
  The gmsh object after finalizing the mesh.
531
547
  """
532
548
 
549
+ # gmesh writes out a vtk file that is accepted by openmc.UnstructuredMesh
550
+ # The library argument must be set to "moab"
533
551
  if Path(filename).suffix != ".vtk":
534
552
  raise ValueError("Unstructured mesh filename must have a .vtk extension")
535
553
 
@@ -554,9 +572,15 @@ class CadToDagmc:
554
572
  dimensions=3,
555
573
  )
556
574
 
557
- # gmesh writes out a vtk file that is accepted by openmc.UnstructuredMesh
558
- # The library argument must be set to "moab"
559
- gmsh.write(filename)
575
+ # makes the folder if it does not exist
576
+ if Path(filename).parent:
577
+ Path(filename).parent.mkdir(parents=True, exist_ok=True)
578
+
579
+ # gmsh.write only accepts strings
580
+ if isinstance(filename, Path):
581
+ gmsh.write(str(filename))
582
+ else:
583
+ gmsh.write(filename)
560
584
 
561
585
  gmsh.finalize()
562
586
 
@@ -621,7 +645,15 @@ class CadToDagmc:
621
645
  dimensions=dimensions,
622
646
  )
623
647
 
624
- gmsh.write(filename)
648
+ # makes the folder if it does not exist
649
+ if Path(filename).parent:
650
+ Path(filename).parent.mkdir(parents=True, exist_ok=True)
651
+
652
+ # gmsh.write only accepts strings
653
+ if isinstance(filename, Path):
654
+ gmsh.write(str(filename))
655
+ else:
656
+ gmsh.write(filename)
625
657
 
626
658
  print(f"written GMSH mesh file {filename}")
627
659
 
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.2
2
2
  Name: cad_to_dagmc
3
- Version: 0.7.5
3
+ Version: 0.7.7
4
4
  Summary: Converts CAD files to a DAGMC h5m file
5
5
  Author-email: Jonathan Shimwell <mail@jshimwell.com>
6
6
  Project-URL: Homepage, https://github.com/fusion-energy/cad_to_dagmc
@@ -14,8 +14,8 @@ Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
15
  Requires-Dist: trimesh
16
16
  Requires-Dist: networkx
17
- Requires-Dist: cadquery>=2.4.0
18
- Requires-Dist: numpy<=1.26.4
17
+ Requires-Dist: cadquery>=2.5.2
18
+ Requires-Dist: numpy
19
19
  Requires-Dist: gmsh
20
20
  Provides-Extra: tests
21
21
  Requires-Dist: pytest; extra == "tests"
@@ -35,17 +35,25 @@ Requires-Dist: vtk; extra == "tests"
35
35
  [![PyPI](https://img.shields.io/pypi/v/cad_to_dagmc?color=brightgreen&label=pypi&logo=grebrightgreenen&logoColor=green)](https://pypi.org/project/cad_to_dagmc/)
36
36
 
37
37
 
38
- A minimal package that converts CAD geometry to [DAGMC](https://github.com/svalinn/DAGMC/) h5m files
38
+ A minimal package that converts CAD geometry to [DAGMC](https://github.com/svalinn/DAGMC/) compatible meshes
39
39
 
40
- cad-to-dagmc can create:
40
+ cad-to-dagmc can create DAGMC compatible:
41
41
  - surface meshes / faceted geometry / triangular meshes
42
42
  - unstructured mesh / tetrahedral meshes / volume meshes
43
43
 
44
- cad-to-dagmc can convert:
44
+ cad-to-dagmc can convert the following in to DAGMC compatible meshes:
45
45
  - STEP files
46
- - CadQuery objects (in memory)
46
+ - CadQuery objects
47
+ - Gmsh meshes
47
48
 
48
- cad-to-dagmc aims to produce DAGMC compatible h5m files from CAD geometry is intended to convert [STEP](http://www.steptools.com/stds/step/) files or [CadQuery](https://cadquery.readthedocs.io) objects to a [DAGMC](https://github.com/svalinn/DAGMC/) compatible h5m file.
49
+ Options include
50
+ - Ability to scale the output mesh (e.g from meters to cm)
51
+ - Ability to skip imprinting stage
52
+ - Specify meshing parameters for finer or coarser meshes or change the mesh algorithm
53
+ - Ability to specify a material tag for the DAGMC implicit complement
54
+ - Pass objects from CadQuery in memory (without writting to disk)
55
+
56
+ cad-to-dagmc aims to produce DAGMC compatible h5m and vtk files from CAD geometry is intended to convert [STEP](http://www.steptools.com/stds/step/) files, [CadQuery](https://cadquery.readthedocs.io) or [Gmsh]([https://cadquery.readthedocs.io](https://gmsh.info/)) meshes objects to a [DAGMC](https://github.com/svalinn/DAGMC/) compatible h5m file or a DAGMC compatible Unstruuctre vtk file.
49
57
 
50
58
  The resulting DAGMC geometry can then be used for simulations in [OpenMC](https://github.com/openmc-dev/openmc/) or [other supported codes](https://svalinn.github.io/DAGMC/).
51
59
 
@@ -146,7 +154,7 @@ You may also want to install OpenMC with DAGMC to make use of the h5m geometry f
146
154
 
147
155
  To install OpenMC you can run ```mamba install -c conda-forge openmc``` however this more specific command makes sure the latest version of OpenMC which contains DAGMC is chosen by conda / mamba
148
156
  ```bash
149
- mamba install -c conda-forge -y "openmc=0.14.0=dagmc*nompi*"
157
+ mamba install -c conda-forge -y "openmc=0.15.0=dagmc*nompi*"
150
158
  ```
151
159
 
152
160
  It might not be possible to install OpenMC and cad-to-dagmc in the same conda/mamba python environment so you may have to create a new conda/mamba environment and install OpenMC there.
@@ -160,15 +168,11 @@ The package requires newer versions of Linux. For example the package does not w
160
168
 
161
169
  The package requires newer versions of pip. It is recommended to ensure that your version of pip is up to date. This can be done with ```python -m pip install --upgrade pip```
162
170
 
163
- Installing one of the package dependancies (gmsh) with pip appears to result in errors when passing cad objects in memory between cadquery / ocp and gmsh. The default method of passing cad objects is via file so this should not impact most users. The conda install gmsh appears to work fine with in memory passing of cad objects as the version of OCP matches between Gmsh and CadQuery.
164
-
165
-
166
- # Usage - creation of DAGMC h5m files
171
+ Installing one of the package dependancies (Gmsh) with pip appears to result in errors when passing cad objects in memory between cadquery / ocp and gmsh. The default method of passing cad objects is via file so this should not impact most users. The conda install gmsh appears to work fine with in memory passing of cad objects as the version of OCP matches between Gmsh and CadQuery.
167
172
 
168
- For examples see the [examples folder](https://github.com/fusion-energy/cad_to_dagmc/tree/main/examples)
169
173
 
170
- # Usage - simulation with transport code
174
+ # Usage
171
175
 
172
- For examples see the [examples folder](https://github.com/fusion-energy/cad_to_dagmc/tree/main/examples)
176
+ For examples showing creation of DAGMC h5m files, vtk files and usage within OpenMC transport code see the [examples folder](https://github.com/fusion-energy/cad_to_dagmc/tree/main/examples)
173
177
 
174
178
  For more examples see the CAD tasks in the [neutronics-workshop](https://github.com/fusion-energy/neutronics-workshop) and [model benchmark zoo](https://github.com/fusion-energy/model_benchmark_zoo)
@@ -0,0 +1,8 @@
1
+ _version.py,sha256=OFzKtYPiFCCvMWwWVN3UDiEwBAcWMPY3Atug8b0zLFk,411
2
+ cad_to_dagmc/__init__.py,sha256=fskHUTyCunSpnpJUvBfAYjx4uwDKXHTTiMP6GqnFRf0,494
3
+ cad_to_dagmc/core.py,sha256=5xWb8oGRs6318CcUI_PADsF1vJjqzYPVNAQ8vKGjZE4,29063
4
+ cad_to_dagmc-0.7.7.dist-info/LICENSE,sha256=B8kznH_777JVNZ3HOKDc4Tj24F7wJ68ledaNYeL9sCw,1070
5
+ cad_to_dagmc-0.7.7.dist-info/METADATA,sha256=rGXnqaOFnpf4mXTn-BN9uXi8d3dwBt7SzcP5Ornd18o,8362
6
+ cad_to_dagmc-0.7.7.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
7
+ cad_to_dagmc-0.7.7.dist-info/top_level.txt,sha256=zTi8C64SEBsE5WOtPovnxhOzt-E6Oc5nC3RW6M_5aEA,22
8
+ cad_to_dagmc-0.7.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (75.6.0)
2
+ Generator: setuptools (75.8.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,8 +0,0 @@
1
- _version.py,sha256=AfxYsOLHf-d9Yv9B0Y-QKGSJPkQBqceXnCr_lUKXMKM,411
2
- cad_to_dagmc/__init__.py,sha256=fskHUTyCunSpnpJUvBfAYjx4uwDKXHTTiMP6GqnFRf0,494
3
- cad_to_dagmc/core.py,sha256=AfYKmrGCFcXZnsxCW72rdSAJY4kvffk1MTG4uURH-cw,27768
4
- cad_to_dagmc-0.7.5.dist-info/LICENSE,sha256=B8kznH_777JVNZ3HOKDc4Tj24F7wJ68ledaNYeL9sCw,1070
5
- cad_to_dagmc-0.7.5.dist-info/METADATA,sha256=okv56zxnjveO_HMC58bd8gO27vLZ_TXKsY5r1N0hVpw,7937
6
- cad_to_dagmc-0.7.5.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
7
- cad_to_dagmc-0.7.5.dist-info/top_level.txt,sha256=zTi8C64SEBsE5WOtPovnxhOzt-E6Oc5nC3RW6M_5aEA,22
8
- cad_to_dagmc-0.7.5.dist-info/RECORD,,