Skip to content

Commit

Permalink
Merge pull request #112 from fusion-energy/develop
Browse files Browse the repository at this point in the history
merged breps, improved stl export, default parameters for reactors
  • Loading branch information
shimwell authored Sep 30, 2021
2 parents 5348fbd + 24b358e commit b91213b
Show file tree
Hide file tree
Showing 11 changed files with 96 additions and 79 deletions.
6 changes: 1 addition & 5 deletions .github/workflows/test_demos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion conda/meta.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ requirements:
- nbformat
- nbconvert
- ipywidgets
# - jupyter-cadquery not avaialbe on conda
# - jupyter-cadquery not availalbe on conda

test:
imports:
Expand Down
2 changes: 1 addition & 1 deletion conda_build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ rm -rf /tmp/conda-build


# VERSION=$(echo $GITHUB_REF | sed 's#.*/v##')
VERSION=0.5.0
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
Expand Down
26 changes: 13 additions & 13 deletions paramak/parametric_reactors/ball_reactor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
28 changes: 14 additions & 14 deletions paramak/parametric_reactors/center_column_study_reactor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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__([])
Expand Down
28 changes: 14 additions & 14 deletions paramak/parametric_reactors/cylinder_reactor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
):

Expand Down Expand Up @@ -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(
Expand All @@ -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(
Expand Down Expand Up @@ -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(
Expand All @@ -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(
Expand Down Expand Up @@ -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 = [
Expand Down
6 changes: 3 additions & 3 deletions paramak/parametric_reactors/segmented_blanket_ball_reactor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
):

Expand Down
30 changes: 15 additions & 15 deletions paramak/parametric_reactors/submersion_reactor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
26 changes: 21 additions & 5 deletions paramak/reactor.py
Original file line number Diff line number Diff line change
Expand Up @@ -339,11 +339,12 @@ def export_stp(

return filename

def export_brep(self, filename):
def export_brep(self, filename: str, merge: 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)
Expand All @@ -354,15 +355,30 @@ 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 not merge:
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()

bldr.Images()

merged = cq.Compound(bldr.Shape())

merged.exportBrep(str(path_filename))

return str(path_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]:
Expand Down
11 changes: 8 additions & 3 deletions tests/test_parametric_reactors/test_cylinder_reactor.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,16 @@ 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', merge=True)
self.test_reactor.export_brep(filename='not_merged.brep', merge=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
Expand Down
10 changes: 5 additions & 5 deletions tests/test_reactor.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
ValueError,
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.
Expand Down

0 comments on commit b91213b

Please sign in to comment.