From 097fca24e594f6ffcb0f8769da925c3c1944b909 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Tue, 28 Sep 2021 19:54:56 +0100 Subject: [PATCH 01/12] added merge option for exporting reactor brep file --- paramak/reactor.py | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/paramak/reactor.py b/paramak/reactor.py index 74144e1d7..2ebc6ee36 100644 --- a/paramak/reactor.py +++ b/paramak/reactor.py @@ -339,11 +339,12 @@ def export_stp( return filename - def export_brep(self, filename): + def export_brep(self, filename: str, merged: bool = True): """Exports a brep file for the Reactor.solid. Args: filename: the filename of exported the brep file. + merged: if the surfaces should be merged (True) or not (False). """ path_filename = Path(filename) @@ -354,10 +355,26 @@ def export_brep(self, filename): path_filename.parents[0].mkdir(parents=True, exist_ok=True) - self.solid.exportBrep(str(path_filename)) - # alternative method is to use BRepTools that might support imprinting - # and merging https://github.com/CadQuery/cadquery/issues/449 + if merged == False: + self.solid.exportBrep(str(path_filename)) + else: + import OCP + bldr = OCP.BOPAlgo.BOPAlgo_Splitter() + + for shape in self.shapes_and_components: + bldr.AddArgument(shape.solid.val().wrapped) + + bldr.SetNonDestructive(True) + + bldr.Perform() + + im = bldr.Images() + + merged = cq.Compound(bldr.Shape()) + + merged.exportBrep(str(path_filename)) + return str(path_filename) def export_stl( From 9e362524a322f5b2eb913b9d1c7527824ba8d50b Mon Sep 17 00:00:00 2001 From: Jonathan Date: Tue, 28 Sep 2021 19:55:20 +0100 Subject: [PATCH 02/12] added relative file size check for merged and not merged breps --- .../test_parametric_reactors/test_cylinder_reactor.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/test_parametric_reactors/test_cylinder_reactor.py b/tests/test_parametric_reactors/test_cylinder_reactor.py index 312605c16..a9dd611b7 100644 --- a/tests/test_parametric_reactors/test_cylinder_reactor.py +++ b/tests/test_parametric_reactors/test_cylinder_reactor.py @@ -47,11 +47,15 @@ def test_export_brep(self): os.system("rm test_reactor.brep") - self.test_reactor.export_brep(filename='test_reactor.brep') + self.test_reactor.export_brep(filename='merged.brep', merged=True) + self.test_reactor.export_brep(filename='not_merged.brep', merged=False) - assert Path("test_reactor.brep").exists() is True + assert Path("merged.brep").exists() is True + assert Path("not_merged.brep").exists() is True + assert Path("not_merged.brep").stat().st_size > Path("merged.brep").stat().st_size - os.system("rm test_reactor.brep") + os.system("rm merged.brep") + os.system("rm not_merged.brep") def test_export_brep_without_extention(self): """Exports a brep file without the extention and checks that the From 2dd8cf6d8f4316a3ac10feb71b6bb84c4347b439 Mon Sep 17 00:00:00 2001 From: autopep8 Date: Tue, 28 Sep 2021 18:59:10 +0000 Subject: [PATCH 03/12] Automated autopep8 fixes --- paramak/reactor.py | 3 +-- tests/test_parametric_reactors/test_cylinder_reactor.py | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/paramak/reactor.py b/paramak/reactor.py index 2ebc6ee36..cadd81262 100644 --- a/paramak/reactor.py +++ b/paramak/reactor.py @@ -355,7 +355,7 @@ def export_brep(self, filename: str, merged: bool = True): path_filename.parents[0].mkdir(parents=True, exist_ok=True) - if merged == False: + if not merged: self.solid.exportBrep(str(path_filename)) else: import OCP @@ -374,7 +374,6 @@ def export_brep(self, filename: str, merged: bool = True): merged.exportBrep(str(path_filename)) - return str(path_filename) def export_stl( diff --git a/tests/test_parametric_reactors/test_cylinder_reactor.py b/tests/test_parametric_reactors/test_cylinder_reactor.py index a9dd611b7..0c601afa4 100644 --- a/tests/test_parametric_reactors/test_cylinder_reactor.py +++ b/tests/test_parametric_reactors/test_cylinder_reactor.py @@ -52,7 +52,8 @@ def test_export_brep(self): assert Path("merged.brep").exists() is True assert Path("not_merged.brep").exists() is True - assert Path("not_merged.brep").stat().st_size > Path("merged.brep").stat().st_size + assert Path("not_merged.brep").stat().st_size > Path( + "merged.brep").stat().st_size os.system("rm merged.brep") os.system("rm not_merged.brep") From 76223a5f4561a9eb0ae972d62b8d420ffc99cfd4 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Tue, 28 Sep 2021 20:00:04 +0100 Subject: [PATCH 04/12] changed arg from merged to merge --- paramak/reactor.py | 4 ++-- tests/test_parametric_reactors/test_cylinder_reactor.py | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/paramak/reactor.py b/paramak/reactor.py index 2ebc6ee36..0d3b31d56 100644 --- a/paramak/reactor.py +++ b/paramak/reactor.py @@ -339,7 +339,7 @@ def export_stp( return filename - def export_brep(self, filename: str, merged: bool = True): + def export_brep(self, filename: str, merge: bool = True): """Exports a brep file for the Reactor.solid. Args: @@ -355,7 +355,7 @@ def export_brep(self, filename: str, merged: bool = True): path_filename.parents[0].mkdir(parents=True, exist_ok=True) - if merged == False: + if merge == False: self.solid.exportBrep(str(path_filename)) else: import OCP diff --git a/tests/test_parametric_reactors/test_cylinder_reactor.py b/tests/test_parametric_reactors/test_cylinder_reactor.py index a9dd611b7..47db6a36d 100644 --- a/tests/test_parametric_reactors/test_cylinder_reactor.py +++ b/tests/test_parametric_reactors/test_cylinder_reactor.py @@ -47,8 +47,8 @@ def test_export_brep(self): os.system("rm test_reactor.brep") - self.test_reactor.export_brep(filename='merged.brep', merged=True) - self.test_reactor.export_brep(filename='not_merged.brep', merged=False) + self.test_reactor.export_brep(filename='merged.brep', merge=True) + self.test_reactor.export_brep(filename='not_merged.brep', merge=False) assert Path("merged.brep").exists() is True assert Path("not_merged.brep").exists() is True From 396d7ce7e457a388c8789faebea45ee7c427f653 Mon Sep 17 00:00:00 2001 From: autopep8 Date: Tue, 28 Sep 2021 19:01:47 +0000 Subject: [PATCH 05/12] Automated autopep8 fixes --- paramak/reactor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paramak/reactor.py b/paramak/reactor.py index 6034cbff0..59d117f24 100644 --- a/paramak/reactor.py +++ b/paramak/reactor.py @@ -355,7 +355,7 @@ def export_brep(self, filename: str, merge: bool = True): path_filename.parents[0].mkdir(parents=True, exist_ok=True) - if merge == False: + if not merge: self.solid.exportBrep(str(path_filename)) else: import OCP From 7d06d0c42913e1621944ffdf08453f1ce1074967 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Tue, 28 Sep 2021 20:01:51 +0100 Subject: [PATCH 06/12] bump conda version --- conda/meta.yaml | 2 +- conda_build.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/conda/meta.yaml b/conda/meta.yaml index e8fb06a74..d1a425479 100644 --- a/conda/meta.yaml +++ b/conda/meta.yaml @@ -30,7 +30,7 @@ requirements: - nbformat - nbconvert - ipywidgets - # - jupyter-cadquery not avaialbe on conda + # - jupyter-cadquery not availalbe on conda test: imports: diff --git a/conda_build.sh b/conda_build.sh index 874f903e5..5958fe890 100644 --- a/conda_build.sh +++ b/conda_build.sh @@ -11,7 +11,7 @@ rm -rf /tmp/conda-build # VERSION=$(echo $GITHUB_REF | sed 's#.*/v##') -VERSION=0.5.0 +VERSION=0.6.1 PLACEHOLDER='version="develop"' VERSION_FILE='setup.py' # Grep checks that the placeholder is in the file. If grep doesn't find From 1763f58e21a7ca3ee6ae800ec7ce8f939fe6a561 Mon Sep 17 00:00:00 2001 From: Jonathan Date: Wed, 29 Sep 2021 19:29:45 +0100 Subject: [PATCH 07/12] added default reactor values --- paramak/parametric_reactors/ball_reactor.py | 26 ++++++++-------- .../center_column_study_reactor.py | 28 ++++++++--------- .../parametric_reactors/cylinder_reactor.py | 28 ++++++++--------- .../segmented_blanket_ball_reactor.py | 6 ++-- .../parametric_reactors/submersion_reactor.py | 30 +++++++++---------- paramak/reactor.py | 2 +- 6 files changed, 60 insertions(+), 60 deletions(-) diff --git a/paramak/parametric_reactors/ball_reactor.py b/paramak/parametric_reactors/ball_reactor.py index b1fd75932..c9f2306b9 100644 --- a/paramak/parametric_reactors/ball_reactor.py +++ b/paramak/parametric_reactors/ball_reactor.py @@ -64,19 +64,19 @@ class BallReactor(paramak.Reactor): def __init__( self, - inner_bore_radial_thickness: float, - inboard_tf_leg_radial_thickness: float, - center_column_shield_radial_thickness: float, - divertor_radial_thickness: float, - inner_plasma_gap_radial_thickness: float, - plasma_radial_thickness: float, - outer_plasma_gap_radial_thickness: float, - firstwall_radial_thickness: float, - blanket_radial_thickness: float, - blanket_rear_wall_radial_thickness: float, - elongation: float, - triangularity: float, - plasma_gap_vertical_thickness: float, + inner_bore_radial_thickness: float = 10., + inboard_tf_leg_radial_thickness: float = 30., + center_column_shield_radial_thickness: float = 60., + divertor_radial_thickness: float = 150., + inner_plasma_gap_radial_thickness: float = 30., + plasma_radial_thickness: float = 300., + outer_plasma_gap_radial_thickness: float = 30., + plasma_gap_vertical_thickness: float = 50., + firstwall_radial_thickness: float = 30., + blanket_radial_thickness: float = 50., + blanket_rear_wall_radial_thickness: float = 30., + elongation: float = 2., + triangularity: float = 0.55, divertor_to_tf_gap_vertical_thickness: Optional[float] = 0, number_of_tf_coils: Optional[int] = 12, rear_blanket_to_tf_gap: Optional[float] = None, diff --git a/paramak/parametric_reactors/center_column_study_reactor.py b/paramak/parametric_reactors/center_column_study_reactor.py index 31f98a638..2e7a65e39 100644 --- a/paramak/parametric_reactors/center_column_study_reactor.py +++ b/paramak/parametric_reactors/center_column_study_reactor.py @@ -45,20 +45,20 @@ class CenterColumnStudyReactor(paramak.Reactor): def __init__( self, - inner_bore_radial_thickness, - inboard_tf_leg_radial_thickness, - center_column_shield_radial_thickness_mid, - center_column_shield_radial_thickness_upper, - inboard_firstwall_radial_thickness, - divertor_radial_thickness, - inner_plasma_gap_radial_thickness, - plasma_radial_thickness, - outer_plasma_gap_radial_thickness, - center_column_arc_vertical_thickness, - elongation, - triangularity, - plasma_gap_vertical_thickness, - rotation_angle=360.0, + inner_bore_radial_thickness: float = 20, + inboard_tf_leg_radial_thickness: float = 50., + center_column_shield_radial_thickness_mid: float = 50., + center_column_shield_radial_thickness_upper: float = 100., + inboard_firstwall_radial_thickness: float = 20., + divertor_radial_thickness: float = 100., + inner_plasma_gap_radial_thickness: float = 80., + plasma_radial_thickness: float = 200., + outer_plasma_gap_radial_thickness: float = 90, + center_column_arc_vertical_thickness: float = 520., + elongation: float = 2.3, + triangularity: float = 0.45, + plasma_gap_vertical_thickness: float = 40, + rotation_angle: float = 360.0, ): super().__init__([]) diff --git a/paramak/parametric_reactors/cylinder_reactor.py b/paramak/parametric_reactors/cylinder_reactor.py index b7fbb6130..c37bc508d 100644 --- a/paramak/parametric_reactors/cylinder_reactor.py +++ b/paramak/parametric_reactors/cylinder_reactor.py @@ -30,15 +30,15 @@ class CylinderReactor(paramak.Reactor): def __init__( self, - inner_blanket_radius: Optional[float] = 100, - blanket_thickness: Optional[float] = 60, - blanket_height: Optional[float] = 500, - lower_blanket_thickness: Optional[float] = 50, - upper_blanket_thickness: Optional[float] = 40, - blanket_vv_gap: Optional[float] = 20, - upper_vv_thickness: Optional[float] = 10, - vv_thickness: Optional[float] = 10, - lower_vv_thickness: Optional[float] = 10, + inner_blanket_radius: Optional[float] = 100., + blanket_thickness: Optional[float] = 70., + blanket_height: Optional[float] = 500., + lower_blanket_thickness: Optional[float] = 50., + upper_blanket_thickness: Optional[float] = 40., + blanket_vv_gap: Optional[float] = 20., + upper_vv_thickness: Optional[float] = 10., + vv_thickness: Optional[float] = 10., + lower_vv_thickness: Optional[float] = 10., rotation_angle: Optional[float] = 360, ): @@ -98,7 +98,7 @@ def create_solids(self): 0.5, 0.5, 0.5), - name="lower vacuum vessel", + name="lower_vacuum_vessel", ) lower_blanket = paramak.RotateStraightShape( @@ -113,7 +113,7 @@ def create_solids(self): ], rotation_angle=self.rotation_angle, color=(0.0, 1.0, 0.498), - name="lower blanket", + name="lower_blanket", ) blanket = paramak.CenterColumnShieldCylinder( @@ -145,7 +145,7 @@ def create_solids(self): ], rotation_angle=self.rotation_angle, color=(0.0, 1.0, 0.498), - name="upper blanket", + name="upper_blanket", ) upper_vv = paramak.RotateStraightShape( @@ -157,7 +157,7 @@ def create_solids(self): ], rotation_angle=self.rotation_angle, color=(0.5, 0.5, 0.5), - name="upper vacuum vessel", + name="upper_vacuum_vessel", ) vac_ves = paramak.RotateStraightShape( @@ -189,7 +189,7 @@ def create_solids(self): ], rotation_angle=self.rotation_angle, color=(0.5, 0.5, 0.5), - name="vacuum vessel", + name="vacuum_vessel", ) self.shapes_and_components = [ diff --git a/paramak/parametric_reactors/segmented_blanket_ball_reactor.py b/paramak/parametric_reactors/segmented_blanket_ball_reactor.py index 203d2b373..b5968066d 100644 --- a/paramak/parametric_reactors/segmented_blanket_ball_reactor.py +++ b/paramak/parametric_reactors/segmented_blanket_ball_reactor.py @@ -22,9 +22,9 @@ class SegmentedBlanketBallReactor(paramak.BallReactor): def __init__( self, - gap_between_blankets, - number_of_blanket_segments, - blanket_fillet_radius: float = 10.0, + gap_between_blankets: float = 15., + number_of_blanket_segments: int = 12, + blanket_fillet_radius: float = 10., **kwargs ): diff --git a/paramak/parametric_reactors/submersion_reactor.py b/paramak/parametric_reactors/submersion_reactor.py index d13860cde..9ce156c53 100644 --- a/paramak/parametric_reactors/submersion_reactor.py +++ b/paramak/parametric_reactors/submersion_reactor.py @@ -56,22 +56,22 @@ class SubmersionTokamak(paramak.Reactor): def __init__( self, - inner_bore_radial_thickness: float, - inboard_tf_leg_radial_thickness: float, - center_column_shield_radial_thickness: float, - inboard_blanket_radial_thickness: float, - firstwall_radial_thickness: float, - inner_plasma_gap_radial_thickness: float, - plasma_radial_thickness: float, - divertor_radial_thickness: float, - support_radial_thickness: float, - outer_plasma_gap_radial_thickness: float, - outboard_blanket_radial_thickness: float, - blanket_rear_wall_radial_thickness: float, - elongation: float, - triangularity: float, + inner_bore_radial_thickness: float = 30., + inboard_tf_leg_radial_thickness: float = 30, + center_column_shield_radial_thickness: float = 30, + inboard_blanket_radial_thickness: float = 80, + firstwall_radial_thickness: float = 20, + inner_plasma_gap_radial_thickness: float = 50, + plasma_radial_thickness: float = 200, + divertor_radial_thickness: float = 80, + support_radial_thickness: float = 90, + outer_plasma_gap_radial_thickness: float = 50, + outboard_blanket_radial_thickness: float = 30, + blanket_rear_wall_radial_thickness: float = 30, + elongation: float = 2., + triangularity: float = 0.5, number_of_tf_coils: int = 16, - rotation_angle: float = 360.0, + rotation_angle: float = 360., outboard_tf_coil_radial_thickness: Optional[float] = None, rear_blanket_to_tf_gap: Optional[float] = None, outboard_tf_coil_poloidal_thickness: Optional[float] = None, diff --git a/paramak/reactor.py b/paramak/reactor.py index 74144e1d7..a7d0906db 100644 --- a/paramak/reactor.py +++ b/paramak/reactor.py @@ -362,7 +362,7 @@ def export_brep(self, filename): def export_stl( self, - filename: Union[List[str], str], + filename: Union[List[str], str] = None, tolerance: Optional[float] = 0.001, angular_tolerance: Optional[float] = 0.1, ) -> List[str]: From d3ad7f542bccbcfdcc81217dafbb57707bc5ba82 Mon Sep 17 00:00:00 2001 From: Jonathan Shimwell Date: Thu, 30 Sep 2021 12:13:43 +0100 Subject: [PATCH 08/12] code inspector comments --- paramak/reactor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/paramak/reactor.py b/paramak/reactor.py index 59d117f24..655df390a 100644 --- a/paramak/reactor.py +++ b/paramak/reactor.py @@ -368,7 +368,7 @@ def export_brep(self, filename: str, merge: bool = True): bldr.Perform() - im = bldr.Images() + bldr.Images() merged = cq.Compound(bldr.Shape()) From 7866aa20fe2d1cc03b139e44b67b3c3ee8459cc3 Mon Sep 17 00:00:00 2001 From: Jonathan Shimwell Date: Thu, 30 Sep 2021 12:19:58 +0100 Subject: [PATCH 09/12] corrected test for new behaviour --- tests/test_reactor.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/test_reactor.py b/tests/test_reactor.py index 1fa2f530a..d09f61975 100644 --- a/tests/test_reactor.py +++ b/tests/test_reactor.py @@ -126,18 +126,18 @@ def test_make_sector_wedge(self): ) assert sector_wedge is None - def test_missing_filename_arg(self): + def test_wrong_number_of_filenames(self): - def test_stl_filename_None(): + def test_stl_filename_list_length(): test_shape = paramak.ExtrudeCircleShape( points=[(20, 20)], radius=10, distance=10 ) my_reactor = paramak.Reactor([test_shape]) - my_reactor.export_stl() + my_reactor.export_stl(['wrong.stl', 'number_of.stl', 'files.stl']) self.assertRaises( TypeError, - test_stl_filename_None) + test_stl_filename_list_length) def test_make_graveyard_accepts_offset_from_graveyard(self): """Creates a graveyard for a reactor and sets the graveyard_offset. From 6fde8166c1fb92e501a8b60f766d2492bf49dc83 Mon Sep 17 00:00:00 2001 From: Jonathan Shimwell Date: Thu, 30 Sep 2021 12:24:10 +0100 Subject: [PATCH 10/12] changed to value error --- tests/test_reactor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/test_reactor.py b/tests/test_reactor.py index d09f61975..79dbc2749 100644 --- a/tests/test_reactor.py +++ b/tests/test_reactor.py @@ -136,7 +136,7 @@ def test_stl_filename_list_length(): my_reactor.export_stl(['wrong.stl', 'number_of.stl', 'files.stl']) self.assertRaises( - TypeError, + ValueError, test_stl_filename_list_length) def test_make_graveyard_accepts_offset_from_graveyard(self): From 1d9ba42e1369c86692c98e3138f050885ee28636 Mon Sep 17 00:00:00 2001 From: Jonathan Shimwell Date: Thu, 30 Sep 2021 13:46:37 +0100 Subject: [PATCH 11/12] removed on push trigger --- .github/workflows/test_demos.yml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/workflows/test_demos.yml b/.github/workflows/test_demos.yml index 5c88ef258..5750b3c34 100644 --- a/.github/workflows/test_demos.yml +++ b/.github/workflows/test_demos.yml @@ -2,11 +2,7 @@ name: Test demos # Controls when the action will run. on: - # Triggers the workflow on push or pull request events but only for the master branch - push: - branches: - - main - - develop + # Triggers the workflow on push requests to main or develop branches pull_request: branches: - main From 24b358e6d2a0025ec0a7fed910fff4d70dd48c8a Mon Sep 17 00:00:00 2001 From: Jonathan Shimwell Date: Thu, 30 Sep 2021 15:58:11 +0100 Subject: [PATCH 12/12] version bump --- conda_build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/conda_build.sh b/conda_build.sh index 5958fe890..5f6c90607 100644 --- a/conda_build.sh +++ b/conda_build.sh @@ -11,7 +11,7 @@ rm -rf /tmp/conda-build # VERSION=$(echo $GITHUB_REF | sed 's#.*/v##') -VERSION=0.6.1 +VERSION=0.6.3 PLACEHOLDER='version="develop"' VERSION_FILE='setup.py' # Grep checks that the placeholder is in the file. If grep doesn't find