Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

new tutorials for UDD cases #612

Merged
merged 17 commits into from
Dec 10, 2024
Prev Previous commit
Next Next commit
tutorial is working now
  • Loading branch information
wiktor authored and wiktor-flex committed Dec 5, 2024
commit 2b8802935e7d419a666e395f360f5f883be1864a
70 changes: 38 additions & 32 deletions examples/tutorials/tutorial_udd_forces_and_moments.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import flow360 as fl

project = fl.Project.from_file(
"UDD_FM_airplane.csm", name="UDD Custom set of user defined forces and moments"
"UDD_FM_airplane.csm", name="Tutorial UDD forces and moments from Python"
)
#project = fl.Project.from_cloud(project_id="prj-2224af9b-ef92-4d7d-bac3-e4c010acbe33")
geometry = project.geometry

geometry.show_available_groupings()
Expand Down Expand Up @@ -41,11 +42,16 @@
volume_zones=[farfield]
),
reference_geometry=fl.ReferenceGeometry(area=60, moment_center=[5.7542, 0, 0], moment_length=[1, 1, 1]),
operating_condition=fl.operating_condition_from_mach_reynolds(
reynolds=3.42e6,
mach=0.147,
project_length_unit=1 * fl.u.m,
# operating_condition=fl.operating_condition_from_mach_reynolds(
# reynolds=3.42e6,
# mach=0.147,
# project_length_unit=1 * fl.u.m,
# alpha=10 * fl.u.deg,
# ),
operating_condition=fl.AerospaceCondition(
velocity_magnitude=50,
alpha=10 * fl.u.deg,
atmosphere=fl.ThermalState(temperature=288.15)
),
models=[
fl.Fluid(
Expand Down Expand Up @@ -82,9 +88,9 @@
"forceX",
"forceY",
"forceZ",
"rotMomentX",
"rotMomentY",
"rotMomentZ"
"momentX",
"momentY",
"momentZ"
],
constants={
"density_kgpm3": 1.225,
Expand All @@ -105,11 +111,11 @@
"0.0"
],
update_law=[
"density_kgpm3 * c_inf_mps * c_inf_mps * l_grid_unit * l_grid_unit * l_grid_unit",
"(rotMomentX - ((newCenterY - momentCenterY) * forceZ - (newCenterZ - momentCenterZ) * forceY)) * state [0];",
"(rotMomentY + ((newCenterX - momentCenterX) * forceZ - (newCenterZ - momentCenterZ) * forceX)) * state [0];",
"(rotMomentZ - ((newCenterX - momentCenterX) * forceY - (newCenterY - momentCenterY) * forceX)) * state [0];",
"state[1] * newAxisX + state[2] * newAxisY + state[3] * newAxisZ "
"density_kgpm3 * c_inf_mps * c_inf_mps * l_grid_unit * l_grid_unit * l_grid_unit;",
"(momentX - ((newCenterY - momentCenterY) * forceZ - (newCenterZ - momentCenterZ) * forceY)) * state [0];",
"(momentY + ((newCenterX - momentCenterX) * forceZ - (newCenterZ - momentCenterZ) * forceX)) * state [0];",
"(momentZ - ((newCenterX - momentCenterX) * forceY - (newCenterY - momentCenterY) * forceX)) * state [0];",
"state[1] * newAxisX + state[2] * newAxisY + state[3] * newAxisZ;"
],
input_boundary_patches=[geometry["aileronRight"]]
),
Expand All @@ -119,9 +125,9 @@
"forceX",
"forceY",
"forceZ",
"rotMomentX",
"rotMomentY",
"rotMomentZ"
"momentX",
"momentY",
"momentZ"
],
constants={
"density_kgpm3": 1.225,
Expand All @@ -143,9 +149,9 @@
],
update_law=[
"density_kgpm3 * c_inf_mps * c_inf_mps * l_grid_unit * l_grid_unit * l_grid_unit",
"(rotMomentX - ((newCenterY - momentCenterY) * forceZ - (newCenterZ - momentCenterZ) * forceY)) * state [0];",
"(rotMomentY + ((newCenterX - momentCenterX) * forceZ - (newCenterZ - momentCenterZ) * forceX)) * state [0];",
"(rotMomentZ - ((newCenterX - momentCenterX) * forceY - (newCenterY - momentCenterY) * forceX)) * state [0];",
"(momentX - ((newCenterY - momentCenterY) * forceZ - (newCenterZ - momentCenterZ) * forceY)) * state [0];",
"(momentY + ((newCenterX - momentCenterX) * forceZ - (newCenterZ - momentCenterZ) * forceX)) * state [0];",
"(momentZ - ((newCenterX - momentCenterX) * forceY - (newCenterY - momentCenterY) * forceX)) * state [0];",
"state[1] * newAxisX + state[2] * newAxisY + state[3] * newAxisZ "
],
input_boundary_patches=[geometry["aileronLeft"]]
Expand All @@ -156,9 +162,9 @@
"forceX",
"forceY",
"forceZ",
"rotMomentX",
"rotMomentY",
"rotMomentZ"
"momentX",
"momentY",
"momentZ"
],
constants={
"density_kgpm3": 1.225,
Expand All @@ -180,9 +186,9 @@
],
update_law=[
"density_kgpm3 * c_inf_mps * c_inf_mps * l_grid_unit * l_grid_unit * l_grid_unit",
"(rotMomentX - ((newCenterY - momentCenterY) * forceZ - (newCenterZ - momentCenterZ) * forceY)) * state [0];",
"(rotMomentY + ((newCenterX - momentCenterX) * forceZ - (newCenterZ - momentCenterZ) * forceX)) * state [0];",
"(rotMomentZ - ((newCenterX - momentCenterX) * forceY - (newCenterY - momentCenterY) * forceX)) * state [0];",
"(momentX - ((newCenterY - momentCenterY) * forceZ - (newCenterZ - momentCenterZ) * forceY)) * state [0];",
"(momentY + ((newCenterX - momentCenterX) * forceZ - (newCenterZ - momentCenterZ) * forceX)) * state [0];",
"(momentZ - ((newCenterX - momentCenterX) * forceY - (newCenterY - momentCenterY) * forceX)) * state [0];",
"state[1] * newAxisX + state[2] * newAxisY + state[3] * newAxisZ "
],
input_boundary_patches=[geometry["rudderRight"]]
Expand All @@ -193,9 +199,9 @@
"forceX",
"forceY",
"forceZ",
"rotMomentX",
"rotMomentY",
"rotMomentZ"
"momentX",
"momentY",
"momentZ"
],
constants={
"density_kgpm3": 1.225,
Expand All @@ -217,14 +223,14 @@
],
update_law=[
"density_kgpm3 * c_inf_mps * c_inf_mps * l_grid_unit * l_grid_unit * l_grid_unit",
"(rotMomentX - ((newCenterY - momentCenterY) * forceZ - (newCenterZ - momentCenterZ) * forceY)) * state [0];",
"(rotMomentY + ((newCenterX - momentCenterX) * forceZ - (newCenterZ - momentCenterZ) * forceX)) * state [0];",
"(rotMomentZ - ((newCenterX - momentCenterX) * forceY - (newCenterY - momentCenterY) * forceX)) * state [0];",
"(momentX - ((newCenterY - momentCenterY) * forceZ - (newCenterZ - momentCenterZ) * forceY)) * state [0];",
"(momentY + ((newCenterX - momentCenterX) * forceZ - (newCenterZ - momentCenterZ) * forceX)) * state [0];",
"(momentZ - ((newCenterX - momentCenterX) * forceY - (newCenterY - momentCenterY) * forceX)) * state [0];",
"state[1] * newAxisX + state[2] * newAxisY + state[3] * newAxisZ "
],
input_boundary_patches=[geometry["rudderLeft"]]
)
]
)

project.run_case(params, name="UDD custom set with an airplane")
project.run_case(params, name="Case of tutorial UDD forces and moments from Python")