How to create a project#

This tutorial demonstrates how to create a project.

What is a project?#

A project is a speos simulation container that includes parts, material properties, sensor, sources and simulations.

In this tutorial you will learn how to create a project from scratch or from a pre-defined .speos file.

Prerequisites#

Perform imports#

[1]:
import os
from pathlib import Path

from ansys.speos.core import Project, Speos
from ansys.speos.core.kernel.client import (
    default_docker_channel,
)
from ansys.speos.core.launcher import launch_local_speos_rpc_server
from ansys.speos.core.sensor import SensorIrradiance
from ansys.speos.core.simulation import SimulationDirect
from ansys.speos.core.source import SourceLuminaire, SourceSurface

Define constants#

The constants help ensure consistency and avoid repetition throughout the example.

[2]:
HOSTNAME = "localhost"
GRPC_PORT = 50098  # Be sure the Speos GRPC Server has been started on this port.
USE_DOCKER = True  # Set to False if you're running this example locally as a Notebook.

Model Setup#

Load assets#

The assets used to run this example are available in the PySpeos repository on GitHub.

Note: Make sure you have downloaded simulation assets and set assets_data_path to point to the assets folder.

[3]:
if USE_DOCKER:  # Running on the remote server.
    assets_data_path = Path("/app") / "assets"
else:
    assets_data_path = Path("/path/to/your/download/assets/directory")

Start/Connect to Speos RPC Server#

This Python client connects to a server where the Speos engine is running as a service. In this example, the server and client are the same machine. the launch_local_speos_rpc_method can be used to start a local instance of the service.

[4]:
if USE_DOCKER:
    speos = Speos(channel=default_docker_channel())
else:
    speos = launch_local_speos_rpc_server(port=GRPC_PORT)
/home/runner/work/pyspeos/pyspeos/.venv/lib/python3.14/site-packages/ansys/tools/common/cyberchannel.py:188: UserWarning: Starting gRPC client without TLS on localhost:50098. This is INSECURE. Consider using a secure connection.
  warn(f"Starting gRPC client without TLS on {target}. This is INSECURE. Consider using a secure connection.")

New empty project#

An empty project can be created by only passing speos rpc server to the Project class.

[5]:
p = Project(speos=speos)
print(p)
{
    "name": "",
    "description": "",
    "metadata": {},
    "part_guid": "",
    "sub_scene_anchor_axis_system": [],
    "sources": [],
    "sensors": [],
    "simulations": [],
    "materials": [],
    "scenes": []
}

Create features#

The Project class has a multitude of method to create Speos features. each create methedo takes the name and the Feature type as arguments and returns the created Feature #### Source

[6]:
source1 = p.create_source(name="Source.1", feature_type=SourceLuminaire)
source1.intensity_file_uri = assets_data_path / "IES_C_DETECTOR.ies"
source1.commit()
/home/runner/work/pyspeos/pyspeos/.venv/lib/python3.14/site-packages/ansys/speos/core/project.py:435: UserWarning: The pySpeos feature : SourceLuminaire needs a Speos Version of 2025 R2 SP0 or higher.
  feature = SourceLuminaire(
[6]:
<ansys.speos.core.source.SourceLuminaire at 0x7fa613dfde80>

Sensor#

[7]:
sensor1 = p.create_sensor(name="Sensor.1")
sensor1.commit()
[7]:
<ansys.speos.core.sensor.SensorIrradiance at 0x7fa60ff3c050>

Optical property#

[8]:
opt_prop1 = p.create_optical_property(name="Material.1")
opt_prop1.commit()
[8]:
<ansys.speos.core.opt_prop.OptProp at 0x7fa60ff3c590>

Read Project#

User can read the content of a project via simply printing the project

[9]:
print(p)
{
    "sources": [
        {
            "name": "Source.1",
            "metadata": {
                "UniqueId": "5f3091e6-f14f-474b-86bf-03f4adc8f5a1"
            },
            "source_guid": "eab0730d-a5e5-438e-b9b7-ee505c97baf1",
            "display_name": "",
            "description": "",
            "source": {
                "name": "Source.1",
                "luminaire": {
                    "flux_from_intensity_file": {},
                    "intensity_file_uri": "/app/assets/IES_C_DETECTOR.ies",
                    "spectrum_guid": "949d038d-4a75-4e74-8fc6-558340715ac1",
                    "spectrum": {
                        "name": "Source.1.Spectrum",
                        "predefined": {
                            "incandescent": {}
                        },
                        "description": "",
                        "metadata": {}
                    },
                    "axis_system": [
                        0.0,
                        0.0,
                        0.0,
                        1.0,
                        0.0,
                        0.0,
                        0.0,
                        1.0,
                        0.0,
                        0.0,
                        0.0,
                        1.0
                    ]
                },
                "description": "",
                "metadata": {}
            }
        }
    ],
    "sensors": [
        {
            "name": "Sensor.1",
            "metadata": {
                "UniqueId": "425b8030-273f-4e1b-8490-b7edb9a99f1a"
            },
            "sensor_guid": "6b91fde5-3ee3-43b0-98f4-3ff046f7509a",
            "display_name": "",
            "description": "",
            "result_file_name": "",
            "sensor": {
                "irradiance_sensor_template": {
                    "sensor_type_photometric": {},
                    "illuminance_type_planar": {},
                    "dimensions": {
                        "x_start": -50.0,
                        "x_end": 50.0,
                        "x_sampling": 100,
                        "y_start": -50.0,
                        "y_end": 50.0,
                        "y_sampling": 100
                    },
                    "axis_system": [
                        0.0,
                        0.0,
                        0.0,
                        1.0,
                        0.0,
                        0.0,
                        0.0,
                        1.0,
                        0.0,
                        0.0,
                        0.0,
                        1.0
                    ],
                    "layer_type_none": {},
                    "ray_file_type": "RayFileNone",
                    "integration_direction": []
                },
                "name": "Sensor.1",
                "description": "",
                "metadata": {}
            }
        }
    ],
    "materials": [
        {
            "name": "Material.1",
            "metadata": {
                "UniqueId": "e1c9bd5b-484e-4dd4-b47d-a178338d1656"
            },
            "sop_guid": "5842b368-d144-4fd7-941c-6bd51f91101f",
            "display_name": "",
            "description": "",
            "sop_guids": [],
            "sop": {
                "name": "Material.1.SOP",
                "mirror": {
                    "reflectance": 100.0
                },
                "description": "",
                "metadata": {}
            }
        }
    ],
    "name": "",
    "description": "",
    "metadata": {},
    "part_guid": "",
    "sub_scene_anchor_axis_system": [],
    "simulations": [],
    "scenes": []
}

Or, user can use the find_key method to read a specific feature:

[10]:
for it in p.find_key(key="monochromatic"):
    print(it)

Find a feature inside a project#

Use find method with an exact name#

If no feature is found, an empty list is returned.

[11]:
features = p.find(name="UnexistingName")
print(features)
[]
[12]:
features = p.find(name="Sensor.1")
print(features[0])
{
    "name": "Sensor.1",
    "metadata": {
        "UniqueId": "425b8030-273f-4e1b-8490-b7edb9a99f1a"
    },
    "sensor_guid": "6b91fde5-3ee3-43b0-98f4-3ff046f7509a",
    "display_name": "",
    "description": "",
    "result_file_name": "",
    "sensor": {
        "irradiance_sensor_template": {
            "sensor_type_photometric": {},
            "illuminance_type_planar": {},
            "dimensions": {
                "x_start": -50.0,
                "x_end": 50.0,
                "x_sampling": 100,
                "y_start": -50.0,
                "y_end": 50.0,
                "y_sampling": 100
            },
            "axis_system": [
                0.0,
                0.0,
                0.0,
                1.0,
                0.0,
                0.0,
                0.0,
                1.0,
                0.0,
                0.0,
                0.0,
                1.0
            ],
            "layer_type_none": {},
            "ray_file_type": "RayFileNone",
            "integration_direction": []
        },
        "name": "Sensor.1",
        "description": "",
        "metadata": {}
    }
}

Use find method with feature type#

Here a wrong type is given: no source is called Sensor.1 in the project

[13]:
features = p.find(name="Sensor.1", feature_type=SourceLuminaire)
print(features)
[]
[14]:
features = p.find(name="Sensor.1", feature_type=SensorIrradiance)
print(features[0])
{
    "name": "Sensor.1",
    "metadata": {
        "UniqueId": "425b8030-273f-4e1b-8490-b7edb9a99f1a"
    },
    "sensor_guid": "6b91fde5-3ee3-43b0-98f4-3ff046f7509a",
    "display_name": "",
    "description": "",
    "result_file_name": "",
    "sensor": {
        "irradiance_sensor_template": {
            "sensor_type_photometric": {},
            "illuminance_type_planar": {},
            "dimensions": {
                "x_start": -50.0,
                "x_end": 50.0,
                "x_sampling": 100,
                "y_start": -50.0,
                "y_end": 50.0,
                "y_sampling": 100
            },
            "axis_system": [
                0.0,
                0.0,
                0.0,
                1.0,
                0.0,
                0.0,
                0.0,
                1.0,
                0.0,
                0.0,
                0.0,
                1.0
            ],
            "layer_type_none": {},
            "ray_file_type": "RayFileNone",
            "integration_direction": []
        },
        "name": "Sensor.1",
        "description": "",
        "metadata": {}
    }
}

Use find method with approximation name with regex#

find a feature with name starting with Mat

[15]:
features = p.find(name="Mat.*", name_regex=True)
for feat in features:
    print(str(type(feat)) + " : name=" + feat._name)
<class 'ansys.speos.core.opt_prop.OptProp'> : name=Material.1

find all features without defining any name

[16]:
features = p.find(name=".*", name_regex=True)
for feat in features:
    print(str(type(feat)) + " : name=" + feat._name)
<class 'ansys.speos.core.source.SourceLuminaire'> : name=Source.1
<class 'ansys.speos.core.sensor.SensorIrradiance'> : name=Sensor.1
<class 'ansys.speos.core.opt_prop.OptProp'> : name=Material.1

Delete#

This erases the scene content in server database.

This deletes also each feature of the project

[17]:
p.delete()
print(p)
{
    "name": "",
    "description": "",
    "metadata": {},
    "part_guid": "",
    "sub_scene_anchor_axis_system": [],
    "sources": [],
    "sensors": [],
    "simulations": [],
    "materials": [],
    "scenes": []
}

As the features were deleted just above -> this returns an empty vector

[18]:
print(p.find(name="Sensor.1"))
[]

Create project from pre-defined speos project#

Via passing the .speos/.sv5 file path to the Project class.

[19]:
p2 = Project(
    speos=speos,
    path=str(assets_data_path / "LG_50M_Colorimetric_short.sv5" / "LG_50M_Colorimetric_short.sv5"),
)
print(p2)
/home/runner/work/pyspeos/pyspeos/.venv/lib/python3.14/site-packages/ansys/speos/core/project.py:1158: UserWarning: The pySpeos feature : FaceStub.read_batch needs a Speos Version of 2025 R2 SP0 or higher.
  f_data_list = face_db.read_batch(refs=f_links)
{
    "name": "LG_50M_Colorimetric_short",
    "description": "From Speos file: /app/assets/LG_50M_Colorimetric_short.sv5/LG_50M_Colorimetric_short.sv5",
    "part_guid": "817dc618-7ca4-4a8d-b136-e5013b3ca2d4",
    "sources": [
        {
            "name": "Dom Source 2 (0) in SOURCE2",
            "metadata": {
                "UniqueId": "9c9c8b82-02a4-4e57-aead-9751126c845f"
            },
            "source_guid": "7e5ce133-093d-4452-8886-14982bf40832",
            "display_name": "",
            "description": "",
            "source": {
                "name": "Dom Source 2 (0) in SOURCE2",
                "surface": {
                    "radiant_flux": {
                        "radiant_value": 6.590041607465698
                    },
                    "intensity_guid": "333b437f-b4ba-47dc-98a2-bf8061c68103",
                    "exitance_constant": {
                        "geo_paths": [
                            {
                                "geo_path": "Solid Body in SOURCE2:2920204960/Face in SOURCE2:222",
                                "reverse_normal": false
                            }
                        ]
                    },
                    "spectrum_guid": "1cc55033-8d43-4f9e-aff8-a35fe7e4e9d2",
                    "intensity": {
                        "cos": {
                            "N": 1.0,
                            "total_angle": 180.0
                        },
                        "name": "",
                        "description": "",
                        "metadata": {}
                    },
                    "spectrum": {
                        "library": {
                            "file_uri": "/app/assets/LG_50M_Colorimetric_short.sv5/Red Spectrum.spectrum"
                        },
                        "name": "",
                        "description": "",
                        "metadata": {}
                    }
                },
                "description": "",
                "metadata": {}
            }
        },
        {
            "name": "Surface Source (0) in SOURCE1",
            "metadata": {
                "UniqueId": "32d27971-63e2-4f63-b82b-037cc9aa500b"
            },
            "source_guid": "67dcc4a8-bd78-4c3a-8fd9-8ea5dbacb591",
            "display_name": "",
            "description": "",
            "source": {
                "name": "Surface Source (0) in SOURCE1",
                "surface": {
                    "radiant_flux": {
                        "radiant_value": 9.290411220389682
                    },
                    "intensity_guid": "384a88a2-5fd3-43d9-9157-710f811743bf",
                    "exitance_constant": {
                        "geo_paths": [
                            {
                                "geo_path": "Solid Body in SOURCE1:2494956811/Face in SOURCE1:187",
                                "reverse_normal": false
                            }
                        ]
                    },
                    "spectrum_guid": "4a200576-6797-4a96-bc0c-79eca2a2f31c",
                    "intensity": {
                        "cos": {
                            "N": 1.0,
                            "total_angle": 180.0
                        },
                        "name": "",
                        "description": "",
                        "metadata": {}
                    },
                    "spectrum": {
                        "library": {
                            "file_uri": "/app/assets/LG_50M_Colorimetric_short.sv5/Blue Spectrum.spectrum"
                        },
                        "name": "",
                        "description": "",
                        "metadata": {}
                    }
                },
                "description": "",
                "metadata": {}
            }
        }
    ],
    "sensors": [
        {
            "name": "Dom Irradiance Sensor (0)",
            "metadata": {
                "UniqueId": "f8c33402-dc5f-4bd4-beae-9953878efa18"
            },
            "sensor_guid": "db7b8db7-3b4e-41e6-91e8-532b39b9cad7",
            "result_file_name": "ASSEMBLY1.DS (0).Dom Irradiance Sensor (0)",
            "display_name": "",
            "description": "",
            "sensor": {
                "irradiance_sensor_template": {
                    "sensor_type_colorimetric": {
                        "wavelengths_range": {
                            "w_start": 400.0,
                            "w_end": 700.0,
                            "w_sampling": 25
                        }
                    },
                    "illuminance_type_planar": {},
                    "dimensions": {
                        "x_start": -20.0,
                        "x_end": 20.0,
                        "x_sampling": 500,
                        "y_start": -20.0,
                        "y_end": 20.0,
                        "y_sampling": 500
                    },
                    "axis_system": [
                        -42.0,
                        2.0,
                        5.0,
                        0.0,
                        1.0,
                        0.0,
                        0.0,
                        0.0,
                        -1.0,
                        -1.0,
                        0.0,
                        0.0
                    ],
                    "layer_type_source": {},
                    "integration_direction": [
                        1.0,
                        -0.0,
                        -0.0
                    ],
                    "ray_file_type": "RayFileNone"
                },
                "name": "Dom Irradiance Sensor (0)",
                "description": "",
                "metadata": {}
            }
        }
    ],
    "simulations": [
        {
            "name": "ASSEMBLY1.DS (0)",
            "metadata": {
                "UniqueId": "8b9082a5-28ec-4580-934f-23cae02c2682"
            },
            "simulation_guid": "9e987314-abb3-4bbc-acfb-0708389a6798",
            "sensor_paths": [
                "Dom Irradiance Sensor (0)"
            ],
            "source_paths": [
                "Dom Source 2 (0) in SOURCE2",
                "Surface Source (0) in SOURCE1"
            ],
            "geometries": {
                "geo_paths": []
            },
            "display_name": "",
            "description": "",
            "simulation": {
                "direct_mc_simulation_template": {
                    "geom_distance_tolerance": 0.05,
                    "max_impact": 100,
                    "weight": {
                        "minimum_energy_percentage": 0.005
                    },
                    "dispersion": true,
                    "colorimetric_standard": "CIE_1931",
                    "fast_transmission_gathering": false,
                    "ambient_material_uri": ""
                },
                "name": "ASSEMBLY1.DS (0)",
                "metadata": {},
                "description": "",
                "scene_guid": "28ca0f1c-0a48-4f15-a203-da0f8831d952",
                "simulation_path": "ASSEMBLY1.DS (0)",
                "job_type": "CPU"
            }
        }
    ],
    "materials": [
        {
            "name": "Material.1",
            "metadata": {
                "UniqueId": "70af9f7c-6118-4570-933d-4f753eea7bfa"
            },
            "geometries": {
                "geo_paths": [
                    "Solid Body in GUIDE:1379760262/Face in GUIDE:169"
                ]
            },
            "sop_guid": "4ed2abe3-e361-44e8-a922-9b971393dbc6",
            "display_name": "",
            "description": "",
            "sop_guids": [],
            "sop": {
                "mirror": {
                    "reflectance": 100.0
                },
                "name": "",
                "description": "",
                "metadata": {}
            }
        },
        {
            "name": "Material.2",
            "metadata": {
                "UniqueId": "5c4b9868-a913-443d-a734-3986f2802b96"
            },
            "vop_guid": "267534de-e985-44ad-9f1d-b06a9ae8191f",
            "geometries": {
                "geo_paths": [
                    "Solid Body in SOURCE2:2920204960",
                    "Solid Body in SOURCE1:2494956811"
                ]
            },
            "sop_guid": "4ed2abe3-e361-44e8-a922-9b971393dbc6",
            "display_name": "",
            "description": "",
            "sop_guids": [],
            "vop": {
                "opaque": {},
                "name": "",
                "description": "",
                "metadata": {}
            },
            "sop": {
                "mirror": {
                    "reflectance": 100.0
                },
                "name": "",
                "description": "",
                "metadata": {}
            }
        },
        {
            "name": "Material.3",
            "metadata": {
                "UniqueId": "925509a3-f48e-4eff-8b1a-22c7cefddac0"
            },
            "vop_guid": "4596eec3-6495-4644-a0ab-c68231ab6474",
            "geometries": {
                "geo_paths": [
                    "Solid Body in GUIDE:1379760262"
                ]
            },
            "sop_guid": "c997e3d1-61b3-4864-b60e-7d2d7386840c",
            "display_name": "",
            "description": "",
            "sop_guids": [],
            "vop": {
                "optic": {
                    "index": 1.4,
                    "constringence": 60.0,
                    "absorption": 0.0
                },
                "name": "",
                "description": "",
                "metadata": {}
            },
            "sop": {
                "optical_polished": {},
                "name": "",
                "description": "",
                "metadata": {}
            }
        },
        {
            "name": "Material.4",
            "metadata": {
                "UniqueId": "d50173dd-2459-4563-82a4-128d85604dff"
            },
            "vop_guid": "d5abccec-44eb-4025-bf03-8083fa81e9ea",
            "display_name": "",
            "description": "",
            "sop_guids": [],
            "vop": {
                "optic": {
                    "index": 1.0,
                    "absorption": 0.0
                },
                "name": "",
                "description": "",
                "metadata": {}
            }
        }
    ],
    "metadata": {},
    "sub_scene_anchor_axis_system": [],
    "scenes": []
}
/home/runner/work/pyspeos/pyspeos/.venv/lib/python3.14/site-packages/ansys/speos/core/project.py:1158: UserWarning: The pySpeos feature : FaceStub.read_batch needs a Speos Version of 2025 R2 SP0 or higher.
  f_data_list = face_db.read_batch(refs=f_links)
/home/runner/work/pyspeos/pyspeos/.venv/lib/python3.14/site-packages/ansys/speos/core/project.py:1158: UserWarning: The pySpeos feature : FaceStub.read_batch needs a Speos Version of 2025 R2 SP0 or higher.
  f_data_list = face_db.read_batch(refs=f_links)
/home/runner/work/pyspeos/pyspeos/.venv/lib/python3.14/site-packages/ansys/speos/core/project.py:1253: UserWarning: The pySpeos feature : SourceSurface needs a Speos Version of 2025 R2 SP0 or higher.
  src_feat = SourceSurface(
/home/runner/work/pyspeos/pyspeos/.venv/lib/python3.14/site-packages/ansys/speos/core/project.py:1253: UserWarning: The pySpeos feature : SourceSurface needs a Speos Version of 2025 R2 SP0 or higher.
  src_feat = SourceSurface(
/home/runner/work/pyspeos/pyspeos/.venv/lib/python3.14/site-packages/ansys/speos/core/project.py:1346: UserWarning: The pySpeos feature : SimulationDirect needs a Speos Version of 2025 R2 SP0 or higher.
  sim_feat = SimulationDirect(

Preview the part information#

User can check the project part using preview method.

[20]:
p2.preview()

use find_key method to find specific information

[21]:
for it in p2.find_key(key="surface"):
    print(it)
(".sources[.name='Dom Source 2 (0) in SOURCE2'].source.surface", {'radiant_flux': {'radiant_value': 6.590041607465698}, 'intensity_guid': '333b437f-b4ba-47dc-98a2-bf8061c68103', 'exitance_constant': {'geo_paths': [{'geo_path': 'Solid Body in SOURCE2:2920204960/Face in SOURCE2:222', 'reverse_normal': False}]}, 'spectrum_guid': '1cc55033-8d43-4f9e-aff8-a35fe7e4e9d2', 'intensity': {'cos': {'N': 1.0, 'total_angle': 180.0}, 'name': '', 'description': '', 'metadata': {}}, 'spectrum': {'library': {'file_uri': '/app/assets/LG_50M_Colorimetric_short.sv5/Red Spectrum.spectrum'}, 'name': '', 'description': '', 'metadata': {}}})
(".sources[.name='Surface Source (0) in SOURCE1'].source.surface", {'radiant_flux': {'radiant_value': 9.290411220389682}, 'intensity_guid': '384a88a2-5fd3-43d9-9157-710f811743bf', 'exitance_constant': {'geo_paths': [{'geo_path': 'Solid Body in SOURCE1:2494956811/Face in SOURCE1:187', 'reverse_normal': False}]}, 'spectrum_guid': '4a200576-6797-4a96-bc0c-79eca2a2f31c', 'intensity': {'cos': {'N': 1.0, 'total_angle': 180.0}, 'name': '', 'description': '', 'metadata': {}}, 'spectrum': {'library': {'file_uri': '/app/assets/LG_50M_Colorimetric_short.sv5/Blue Spectrum.spectrum'}, 'name': '', 'description': '', 'metadata': {}}})

Use find method to retrieve feature:

e.g. surface source

[22]:
features = p2.find(name=".*", name_regex=True, feature_type=SourceSurface)
print(features)
for feat in features:
    print(str(type(feat)) + " : name=" + feat._name)
src = features[1]
[<ansys.speos.core.source.SourceSurface object at 0x7fa60ff3dfd0>, <ansys.speos.core.source.SourceSurface object at 0x7fa60ff7c550>]
<class 'ansys.speos.core.source.SourceSurface'> : name=Dom Source 2 (0) in SOURCE2
<class 'ansys.speos.core.source.SourceSurface'> : name=Surface Source (0) in SOURCE1

modify the surface source, e.g. surface source wavelength:

[23]:
src.spectrum.set_monochromatic().wavelength = 550
src.commit()
[23]:
<ansys.speos.core.source.SourceSurface at 0x7fa60ff7c550>

Retrieve a simulation feature:

[24]:
features = p2.find(name=".*", name_regex=True, feature_type=SimulationDirect)
sim_feat = features[0]
print(sim_feat)
{
    "name": "ASSEMBLY1.DS (0)",
    "metadata": {
        "UniqueId": "8b9082a5-28ec-4580-934f-23cae02c2682"
    },
    "simulation_guid": "9e987314-abb3-4bbc-acfb-0708389a6798",
    "sensor_paths": [
        "Dom Irradiance Sensor (0)"
    ],
    "source_paths": [
        "Dom Source 2 (0) in SOURCE2",
        "Surface Source (0) in SOURCE1"
    ],
    "geometries": {
        "geo_paths": []
    },
    "display_name": "",
    "description": "",
    "simulation": {
        "direct_mc_simulation_template": {
            "geom_distance_tolerance": 0.05,
            "max_impact": 100,
            "weight": {
                "minimum_energy_percentage": 0.005
            },
            "dispersion": true,
            "colorimetric_standard": "CIE_1931",
            "fast_transmission_gathering": false,
            "ambient_material_uri": ""
        },
        "name": "ASSEMBLY1.DS (0)",
        "metadata": {},
        "description": "",
        "scene_guid": "28ca0f1c-0a48-4f15-a203-da0f8831d952",
        "simulation_path": "ASSEMBLY1.DS (0)",
        "job_type": "CPU"
    }
}
[25]:
sim_feat.compute_CPU()
[25]:
[upload_response {
  info {
    uri: "cddf245f-3cef-44fb-8511-9ccd6a0e99b8"
    file_name: "ASSEMBLY1.DS (0).Dom Irradiance Sensor (0).xmp"
    file_size: 1194457
  }
}
, upload_response {
  info {
    uri: "3dbdce30-9572-4ba4-ab62-c5eafb02625a"
    file_name: "ASSEMBLY1.DS (0).html"
    file_size: 205857
  }
}
]

Preview simulation result (only windows)

[26]:
if os.name == "nt":
    from ansys.speos.core.workflow.open_result import open_result_image

    open_result_image(
        simulation_feature=sim_feat,
        result_name="ASSEMBLY1.DS (0).Dom Irradiance Sensor (0).xmp",
    )
[27]:
speos.close()
[27]:
True