Skip to content

Commit

Permalink
no FF for pentagrow
Browse files Browse the repository at this point in the history
  • Loading branch information
GBenedett committed Jan 8, 2024
1 parent 2affe82 commit ac007d1
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 18 deletions.
13 changes: 13 additions & 0 deletions ceasiompy/CPACS2GMSH/__specs__.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
GMSH_OPEN_GUI_XPATH,
GMSH_REFINE_TRUNCATED_XPATH,
GMSH_REFINE_FACTOR_XPATH,
GMSH_EULER_XPATH,
GMSH_SYMMETRY_XPATH,
SU2MESH_XPATH,
GMSH_MESH_SIZE_FACTOR_FUSELAGE_XPATH,
Expand Down Expand Up @@ -63,6 +64,18 @@
gui_group="General options",
)

cpacs_inout.add_input(
var_name="euler",
var_type=bool,
default_value=True,
unit="1",
descr="Create a farfield",
xpath=GMSH_EULER_XPATH,
gui=True,
gui_name="Domain for euler calculation",
gui_group="Domain",
)

cpacs_inout.add_input(
var_name="symmetry",
var_type=bool,
Expand Down
3 changes: 3 additions & 0 deletions ceasiompy/CPACS2GMSH/cpacs2gmsh.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
GMSH_OPEN_GUI_XPATH,
GMSH_REFINE_FACTOR_XPATH,
GMSH_REFINE_TRUNCATED_XPATH,
GMSH_EULER_XPATH,
GMSH_SYMMETRY_XPATH,
SU2MESH_XPATH,
)
Expand Down Expand Up @@ -78,6 +79,7 @@ def cpacs2gmsh(cpacs_path, cpacs_out_path):
# Retrieve value from the GUI Setting
open_gmsh = get_value_or_default(cpacs.tixi, GMSH_OPEN_GUI_XPATH, False)
farfield_factor = get_value_or_default(cpacs.tixi, GMSH_FARFIELD_FACTOR_XPATH, 6)
euler = get_value_or_default(cpacs.tixi, GMSH_EULER_XPATH, True)
symmetry = get_value_or_default(cpacs.tixi, GMSH_SYMMETRY_XPATH, False)
farfield_size_factor = get_value_or_default(cpacs.tixi, GMSH_MESH_SIZE_FARFIELD_XPATH, 17)
n_power_factor = get_value_or_default(cpacs.tixi, GMSH_N_POWER_FACTOR_XPATH, 2)
Expand Down Expand Up @@ -105,6 +107,7 @@ def cpacs2gmsh(cpacs_path, cpacs_out_path):
results_dir,
open_gmsh=open_gmsh,
farfield_factor=farfield_factor,
euler=euler,
symmetry=symmetry,
farfield_size_factor=farfield_size_factor,
n_power_factor=n_power_factor,
Expand Down
30 changes: 19 additions & 11 deletions ceasiompy/CPACS2GMSH/func/generategmesh.py
Original file line number Diff line number Diff line change
Expand Up @@ -567,6 +567,7 @@ def generate_gmsh(
results_dir,
open_gmsh=False,
farfield_factor=6,
euler=False,
symmetry=False,
farfield_size_factor=10,
n_power_factor=2,
Expand Down Expand Up @@ -692,10 +693,12 @@ def generate_gmsh(
]

domain_length = farfield_factor * max(model_dimensions)
farfield = gmsh.model.occ.addSphere(*model_center, domain_length)
gmsh.model.occ.synchronize()

ext_domain = [(3, farfield)]
if euler:
farfield = gmsh.model.occ.addSphere(*model_center, domain_length)
gmsh.model.occ.synchronize()

ext_domain = [(3, farfield)]

if symmetry:
log.info("Preparing: symmetry operation")
Expand All @@ -712,10 +715,14 @@ def generate_gmsh(

log.info("Start fragment operation between the aircraft and the farfield")

_, children_dimtag = gmsh.model.occ.fragment(ext_domain, parts_parent_dimtag)
gmsh.model.occ.synchronize()
if euler:
_, children_dimtag = gmsh.model.occ.fragment(ext_domain, parts_parent_dimtag)
gmsh.model.occ.synchronize()

log.info("Fragment operation finished")

log.info("Fragment operation finished")
else:
_, child_dimtag = parts_parent_dimtag

# fragment produce fragments_dimtag and children_dimtag

Expand Down Expand Up @@ -912,12 +919,13 @@ def generate_gmsh(
symmetry_group = gmsh.model.addPhysicalGroup(2, symmetry_surfaces_tags)
gmsh.model.setPhysicalName(2, symmetry_group, "symmetry")

farfield = gmsh.model.addPhysicalGroup(2, farfield_surfaces_tags)
gmsh.model.setPhysicalName(2, farfield, "Farfield")
if euler:
farfield = gmsh.model.addPhysicalGroup(2, farfield_surfaces_tags)
gmsh.model.setPhysicalName(2, farfield, "Farfield")

# Fluid domain
ps = gmsh.model.addPhysicalGroup(3, final_domain.volume_tag)
gmsh.model.setPhysicalName(3, ps, final_domain.uid)
# Fluid domain
ps = gmsh.model.addPhysicalGroup(3, final_domain.volume_tag)
gmsh.model.setPhysicalName(3, ps, final_domain.uid)

gmsh.model.occ.synchronize()
log.info("Markers for SU2 generated")
Expand Down
1 change: 1 addition & 0 deletions ceasiompy/utils/commonxpath.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@
# GMSH
GMSH_XPATH = MESH_XPATH + "/gmshOptions"
GMSH_OPEN_GUI_XPATH = GMSH_XPATH + "/open_gui"
GMSH_EULER_XPATH = GMSH_XPATH + "/euler"
GMSH_SYMMETRY_XPATH = GMSH_XPATH + "/symmetry"
GMSH_EXPORT_PROP_XPATH = GMSH_XPATH + "/exportPropellers"
GMSH_FARFIELD_FACTOR_XPATH = GMSH_XPATH + "/farfield_factor"
Expand Down
19 changes: 12 additions & 7 deletions ceasiompy/utils/workflowclasses.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ class ModuleToRun:
def __init__(
self, name: str, wkflow_dir: Path, cpacs_in: Path = None, cpacs_out: Path = None
) -> None:

# Check module name validity
accepted_names = get_module_list(only_active=False) + OPTIM_METHOD
if name not in accepted_names:
Expand All @@ -69,7 +68,6 @@ def __init__(
self.optim_related_modules = []

def create_module_wkflow_dir(self, cnt: int) -> None:

if self.is_optim_module and self.optim_method:
module_wkflow_name = str(cnt).rjust(2, "0") + "_" + self.optim_method
else:
Expand All @@ -85,7 +83,6 @@ class OptimSubWorkflow:
def __init__(
self, subworkflow_dir: Path, cpacs_in: Path, optim_method: str, modules_list: list
) -> None:

self.subworkflow_dir = subworkflow_dir
self.cpacs_in = cpacs_in
self.optim_method = optim_method
Expand All @@ -103,7 +100,6 @@ def set_subworkflow(self) -> None:
"""Set input and output for subworkflow."""

for m, module in enumerate(self.modules):

# Create the module directory in the subworkflow directory
with change_working_dir(self.subworkflow_dir):
self.modules[m].create_module_wkflow_dir(m + 1)
Expand Down Expand Up @@ -148,7 +144,6 @@ class Workflow:
"""Class to define and run CEASIOMpy workflow."""

def __init__(self) -> None:

self.working_dir = Path().cwd()
self.cpacs_in = Path(CPACS_FILES_PATH, "D150_simple.xml").resolve()
self.current_wkflow_dir = None
Expand All @@ -158,6 +153,11 @@ def __init__(self) -> None:

self.optim_method = None
self.module_optim = []
self.output_format = []

def set_output_format(self, output_format: str) -> None:
"""Set the mesh extension."""
self.output_format = output_format

def from_config_file(self, cfg_file: Path) -> None:
"""Get parameters from a config file
Expand Down Expand Up @@ -202,6 +202,8 @@ def write_config_file(self) -> None:
cfg["comment_module_optim"] = "MODULE_OPTIM = ( )"
cfg["comment_optim_method"] = "OPTIM_METHOD = NONE"

cfg["MESH_OUTPUT_FORMAT"] = self.output_format

cfg_file = Path(self.working_dir, "ceasiompy.cfg")
cfg.write_file(cfg_file, overwrite=True)

Expand Down Expand Up @@ -255,7 +257,6 @@ def set_workflow(self) -> None:
module_optim_idx = None

for m, module_name in enumerate(self.modules_list):

# Check if it is the first module (to know where the cpacs input file should come from)
if m == 0:
cpacs_in = wkflow_cpacs_in
Expand All @@ -266,6 +267,7 @@ def set_workflow(self) -> None:
if self.module_optim[m] == "NO":
module = ModuleToRun(module_name, self.current_wkflow_dir, cpacs_in)

module.output_format = self.output_format
skip_create_module = False

# Check if should be included in Optim/DoE
Expand Down Expand Up @@ -317,6 +319,10 @@ def run_workflow(self) -> None:
# log.info(f" -> {module.name}")

for module in self.modules:
if module.name == "SUMOAutomesh":
command_with_output_format = f"{module.name} --output={self.output_format}"
module.name = command_with_output_format

if module.is_optim_module:
self.subworkflow.run_subworkflow()
else:
Expand All @@ -342,5 +348,4 @@ def run_workflow(self) -> None:
# =================================================================================================

if __name__ == "__main__":

print("Nothing to execute!")

0 comments on commit ac007d1

Please sign in to comment.