Running the quickstart via the API

Running the quickstart via the API#

Flow360 can be automatically driven via our powerful Python API. All the case setup parameters available in the WebUI are available in the Python API.

By starting from the same evtol_quickstart_grouped.csm file as we have downloaded in the above geometry upload section, The EVTOL quickstart case shown previously can be easily launched using the following code:

 1# Import necessary modules from the Flow360 library
 2import flow360 as fl
 3from flow360.examples import eVTOL
 4from flow360.log import log
 5
 6# Create a project and upload the geometry
 7project = fl.Project.from_file(eVTOL.geometry, name="EVTOL_quickstart_from_API", length_unit="m")
 8
 9log.info(f"The project id is {project.id}")
10
11# Group faces and edges by their specific tags for easier assignment of simulation parameters.
12# The tag names were assigned in the .csm script.
13geometry = project.geometry
14geometry.group_faces_by_tag("faceName")
15geometry.group_edges_by_tag("edgeName")
16
17# Create the farfield object.
18farfield_zone = fl.AutomatedFarfield()
19
20# Create a simulation params object using the SI unit system as default dimensions.
21with fl.SI_unit_system:
22    params = fl.SimulationParams(
23        # Set the meshing parameters.
24        meshing=fl.MeshingParams(
25            defaults=fl.MeshingDefaults(
26                boundary_layer_first_layer_thickness=1e-5, surface_max_edge_length=1
27            ),
28            volume_zones=[farfield_zone],
29            # Set the refinement parameters for the leading edges.
30            refinements=[
31                fl.SurfaceEdgeRefinement(
32                    name="leading_edges",
33                    edges=[geometry["leadingEdge"]],
34                    method=fl.AngleBasedRefinement(value=2 * fl.u.deg),
35                )
36            ],
37        ),
38        # Set the operating condition.
39        operating_condition=fl.AerospaceCondition(
40            velocity_magnitude=50 * fl.u.m / fl.u.s, alpha=0 * fl.u.deg
41        ),
42        # Set the time stepping parameters.
43        time_stepping=fl.Steady(max_steps=3000),
44        # Set the physics models.
45        models=[
46            # Assign each generated mesh patch as defined in the .csm file to their matching airplane subcomponents.
47            fl.Wall(surfaces=geometry["fuselage"], name="fuselage"),
48            # Notice below how we use the * operator to assign both left and right pylon to the pylons subcomponent
49            fl.Wall(surfaces=geometry["*_pylon"], name="pylons"),
50            fl.Wall(surfaces=geometry["*_wing"], name="wing"),
51            fl.Wall(surfaces=geometry["*_tail"], name="tail"),
52            fl.Freestream(surfaces=[farfield_zone.farfield], name="Freestream"),
53        ],
54        # Output format could be 'paraview' or 'tecplot' or 'both'.
55        outputs=[
56            fl.SurfaceOutput(
57                # Select all surfaces for output
58                surfaces=geometry["*"],
59                # Output fields for post-processing
60                output_fields=["Cp", "Cf", "yPlus", "CfVec"],
61                output_format="both",
62            )
63        ],
64    )
65# Run the case.
66project.run_case(params=params, name=f"EVTOL_quickstart_alpha{params.operating_condition.alpha}")
67log.info(f"The case ID is: {project.case.id} with alpha = {params.operating_condition.alpha} ")

When launching you will see the following output:

../../_images/api_output.png

Output from running the API. Note that the IDs will be different when you run it.#