luminarycloud 0.15.0__py3-none-any.whl → 0.15.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- luminarycloud/_client/client.py +4 -0
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.py +81 -81
- luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.pyi +4 -1
- luminarycloud/_proto/api/v0/luminarycloud/inference/inference_pb2.py +61 -0
- luminarycloud/_proto/api/v0/luminarycloud/inference/inference_pb2.pyi +76 -0
- luminarycloud/_proto/api/v0/luminarycloud/inference/inference_pb2_grpc.py +67 -0
- luminarycloud/_proto/api/v0/luminarycloud/inference/inference_pb2_grpc.pyi +26 -0
- luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2.py +29 -27
- luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2.pyi +5 -1
- luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2.py +50 -28
- luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2.pyi +38 -2
- luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2_grpc.py +34 -0
- luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2_grpc.pyi +12 -0
- luminarycloud/_proto/assistant/assistant_pb2.py +74 -74
- luminarycloud/_proto/assistant/assistant_pb2.pyi +22 -30
- luminarycloud/_proto/geometry/geometry_pb2.py +8 -1
- luminarycloud/_proto/geometry/geometry_pb2.pyi +19 -0
- luminarycloud/_proto/hexmesh/hexmesh_pb2.py +37 -37
- luminarycloud/_proto/hexmesh/hexmesh_pb2.pyi +4 -4
- luminarycloud/_proto/inferenceservice/inferenceservice_pb2.py +69 -0
- luminarycloud/_proto/inferenceservice/inferenceservice_pb2.pyi +80 -0
- luminarycloud/_proto/parametricworker/parametricworker_pb2.py +59 -26
- luminarycloud/_proto/parametricworker/parametricworker_pb2.pyi +58 -3
- luminarycloud/feature_modification.py +909 -0
- luminarycloud/meshing/mesh_generation_params.py +1 -1
- luminarycloud/meshing/sizing_strategy/sizing_strategies.py +2 -2
- luminarycloud/named_variable_set.py +10 -4
- luminarycloud/physics_ai/inference.py +55 -0
- luminarycloud/simulation_template.py +4 -4
- luminarycloud/types/adfloat.py +19 -1
- luminarycloud/vis/interactive_scene.py +30 -6
- luminarycloud/vis/visualization.py +57 -0
- {luminarycloud-0.15.0.dist-info → luminarycloud-0.15.2.dist-info}/METADATA +1 -1
- {luminarycloud-0.15.0.dist-info → luminarycloud-0.15.2.dist-info}/RECORD +35 -27
- {luminarycloud-0.15.0.dist-info → luminarycloud-0.15.2.dist-info}/WHEEL +0 -0
|
@@ -142,7 +142,7 @@ class MeshGenerationParams:
|
|
|
142
142
|
|
|
143
143
|
geometry_id: str
|
|
144
144
|
"The ID of the geometry to generate a mesh for"
|
|
145
|
-
sizing_strategy: SizingStrategy
|
|
145
|
+
sizing_strategy: SizingStrategy = field(default_factory=MaxCount)
|
|
146
146
|
"The sizing strategy to use"
|
|
147
147
|
|
|
148
148
|
# Defaults copied from ts/frontend/src/lib/paramDefaults/meshGenerationState.ts
|
|
@@ -48,7 +48,7 @@ class TargetCount(SizingStrategy):
|
|
|
48
48
|
throughout the mesh. Requested boundary layer profiles will be maintained.
|
|
49
49
|
"""
|
|
50
50
|
|
|
51
|
-
target_count: int
|
|
51
|
+
target_count: int = 10000000
|
|
52
52
|
"The target number of cells in the mesh"
|
|
53
53
|
|
|
54
54
|
|
|
@@ -61,5 +61,5 @@ class MaxCount(SizingStrategy):
|
|
|
61
61
|
Requested boundary layer profiles will be maintained.
|
|
62
62
|
"""
|
|
63
63
|
|
|
64
|
-
max_count: int
|
|
64
|
+
max_count: int = 10000000
|
|
65
65
|
"The maximum number of cells in the mesh"
|
|
@@ -3,7 +3,7 @@ from datetime import datetime
|
|
|
3
3
|
|
|
4
4
|
from ._client import get_default_client
|
|
5
5
|
from ._helpers._timestamp_to_datetime import timestamp_to_datetime
|
|
6
|
-
from ._helpers.named_variables import _named_variables_from_proto
|
|
6
|
+
from ._helpers.named_variables import _named_variables_from_proto, _named_variables_to_proto
|
|
7
7
|
from ._helpers.warnings import experimental
|
|
8
8
|
from ._proto.api.v0.luminarycloud.named_variable_set import (
|
|
9
9
|
named_variable_set_pb2 as namedvariablepb,
|
|
@@ -48,6 +48,7 @@ class NamedVariableSet(ProtoWrapperBase):
|
|
|
48
48
|
"ID of the project containing this simulation."
|
|
49
49
|
|
|
50
50
|
_proto: namedvariablepb.NamedVariableSet
|
|
51
|
+
_named_variables: dict[str, float | str] | None
|
|
51
52
|
|
|
52
53
|
@property
|
|
53
54
|
def name(self) -> str:
|
|
@@ -71,7 +72,7 @@ class NamedVariableSet(ProtoWrapperBase):
|
|
|
71
72
|
req = namedvariablepb.UpdateNamedVariableSetRequest(
|
|
72
73
|
id=self.id,
|
|
73
74
|
name=self._proto.name,
|
|
74
|
-
named_variables=self._get_named_variables(),
|
|
75
|
+
named_variables=_named_variables_to_proto(self._get_named_variables()),
|
|
75
76
|
)
|
|
76
77
|
res: namedvariablepb.UpdateNamedVariableSetResponse = (
|
|
77
78
|
get_default_client().UpdateNamedVariableSet(req)
|
|
@@ -101,9 +102,14 @@ class NamedVariableSet(ProtoWrapperBase):
|
|
|
101
102
|
def __contains__(self, key: str) -> bool:
|
|
102
103
|
return key in self._get_named_variables()
|
|
103
104
|
|
|
105
|
+
def __len__(self) -> int:
|
|
106
|
+
return len(self._get_named_variables())
|
|
107
|
+
|
|
104
108
|
def _get_named_variables(self) -> dict[str, float | str]:
|
|
105
|
-
if self
|
|
106
|
-
|
|
109
|
+
if getattr(self, "_named_variables", None) is None:
|
|
110
|
+
named_variables_dict = dict(self._proto.named_variables)
|
|
111
|
+
self._named_variables = _named_variables_from_proto(named_variables_dict)
|
|
112
|
+
assert self._named_variables is not None
|
|
107
113
|
return self._named_variables
|
|
108
114
|
|
|
109
115
|
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# File: python/sdk/luminarycloud/inference/inference.py
|
|
2
|
+
# Copyright 2025 Luminary Cloud, Inc. All Rights Reserved.
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from datetime import datetime
|
|
6
|
+
from typing import Any
|
|
7
|
+
from json import loads as json_loads
|
|
8
|
+
|
|
9
|
+
from .._client import get_default_client
|
|
10
|
+
from .._helpers._timestamp_to_datetime import timestamp_to_datetime
|
|
11
|
+
from .._proto.api.v0.luminarycloud.inference import inference_pb2 as inferencepb
|
|
12
|
+
from .._proto.inferenceservice import inferenceservice_pb2 as inferenceservicepb
|
|
13
|
+
from .._wrapper import ProtoWrapper, ProtoWrapperBase
|
|
14
|
+
from .._helpers.warnings import experimental
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@experimental
|
|
18
|
+
def start_inference_job(
|
|
19
|
+
stl_url: str,
|
|
20
|
+
model_url: str,
|
|
21
|
+
config_name: str,
|
|
22
|
+
stencil_size: int,
|
|
23
|
+
) -> dict[str, Any]:
|
|
24
|
+
"""Creates an inference service job.
|
|
25
|
+
Parameters
|
|
26
|
+
----------
|
|
27
|
+
stl_url : str
|
|
28
|
+
URL of the STL file to be used for inference.
|
|
29
|
+
model_url : str
|
|
30
|
+
URL of the model to be used for inference.
|
|
31
|
+
config_name :str
|
|
32
|
+
Name of the configuration to be used for inference.
|
|
33
|
+
stencil_size :int
|
|
34
|
+
Size of the stencil to be used for inference.
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
Returns
|
|
38
|
+
dict[str, Any]
|
|
39
|
+
Response from the server as key-value pairs.
|
|
40
|
+
|
|
41
|
+
warning:: This feature is experimental and may change or be removed without notice.
|
|
42
|
+
"""
|
|
43
|
+
|
|
44
|
+
req = inferencepb.CreateInferenceServiceJobRequest(
|
|
45
|
+
stl_url=stl_url,
|
|
46
|
+
model_url=model_url,
|
|
47
|
+
config_name=config_name,
|
|
48
|
+
stencil_size=stencil_size,
|
|
49
|
+
)
|
|
50
|
+
|
|
51
|
+
res: inferencepb.CreateInferenceServiceJobResponse = (
|
|
52
|
+
get_default_client().CreateInferenceServiceJob(req)
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
return json_loads(str(res.response, encoding="utf-8"))
|
|
@@ -373,7 +373,7 @@ class SimulationTemplate(ProtoWrapperBase):
|
|
|
373
373
|
iterations_to_consider: int | None = None,
|
|
374
374
|
) -> StoppingCondition:
|
|
375
375
|
"""
|
|
376
|
-
Create a stopping condition on an output definition, or update it if the
|
|
376
|
+
Create a stopping condition on an output definition, or update it if the output definition
|
|
377
377
|
already has one.
|
|
378
378
|
|
|
379
379
|
While this API will prevent the creation of multiple stopping conditions on the same output
|
|
@@ -487,13 +487,13 @@ class SimulationTemplate(ProtoWrapperBase):
|
|
|
487
487
|
output_definitions = self.list_output_definitions()
|
|
488
488
|
for i, definition in enumerate(output_definitions):
|
|
489
489
|
if i == 0:
|
|
490
|
-
code += "
|
|
490
|
+
code += "output_list = []\n"
|
|
491
491
|
output_code = definition._to_code_helper("new_output", hide_defaults)
|
|
492
492
|
for line in output_code.split("\n"):
|
|
493
493
|
# Omit ID because we are generating for create_output_definition.
|
|
494
494
|
if line and not line.startswith("new_output.id"):
|
|
495
495
|
code += f"{line}\n"
|
|
496
|
-
code += "
|
|
496
|
+
code += "output_list.append(template.create_output_definition(new_output))\n\n"
|
|
497
497
|
|
|
498
498
|
code += "# Define the basic and output-based stopping conditions.\n"
|
|
499
499
|
gsc = self.get_general_stopping_conditions()
|
|
@@ -506,7 +506,7 @@ class SimulationTemplate(ProtoWrapperBase):
|
|
|
506
506
|
# Find the old output to use the new ID created by create_output_definition.
|
|
507
507
|
for j, od in enumerate(output_definitions):
|
|
508
508
|
if sc.output_definition_id == od.id:
|
|
509
|
-
code += f"template.create_or_update_stopping_condition(
|
|
509
|
+
code += f"template.create_or_update_stopping_condition(output_list[{j}].id, "
|
|
510
510
|
code += f"{sc.threshold}, {sc.start_at_iteration}, {sc.averaging_iterations}, "
|
|
511
511
|
code += f"{sc.iterations_to_consider})\n"
|
|
512
512
|
break
|
luminarycloud/types/adfloat.py
CHANGED
|
@@ -36,6 +36,15 @@ class FirstOrderAdFloat(AdFloat):
|
|
|
36
36
|
def adjoint(self) -> tuple[float, ...]:
|
|
37
37
|
return self._adjoint
|
|
38
38
|
|
|
39
|
+
def __eq__(self, other: Any) -> bool:
|
|
40
|
+
if not isinstance(other, FirstOrderAdFloat):
|
|
41
|
+
return False
|
|
42
|
+
return (
|
|
43
|
+
float(self) == float(other)
|
|
44
|
+
and self.tangent == other.tangent
|
|
45
|
+
and self.adjoint == other.adjoint
|
|
46
|
+
)
|
|
47
|
+
|
|
39
48
|
@staticmethod
|
|
40
49
|
def _from_proto(proto: FirstOrderAdType) -> "FirstOrderAdFloat":
|
|
41
50
|
return FirstOrderAdFloat(
|
|
@@ -53,7 +62,7 @@ class SecondOrderAdFloat(AdFloat):
|
|
|
53
62
|
_adjoint: tuple[FirstOrderAdFloat, ...]
|
|
54
63
|
|
|
55
64
|
def __new__(cls, value: FirstOrderAdFloat, *_: Any) -> "SecondOrderAdFloat":
|
|
56
|
-
return super().__new__(cls, value)
|
|
65
|
+
return super().__new__(cls, float(value))
|
|
57
66
|
|
|
58
67
|
def __init__(
|
|
59
68
|
self,
|
|
@@ -83,6 +92,15 @@ class SecondOrderAdFloat(AdFloat):
|
|
|
83
92
|
def adjoint(self) -> tuple[FirstOrderAdFloat, ...]:
|
|
84
93
|
return self._adjoint
|
|
85
94
|
|
|
95
|
+
def __eq__(self, other: Any) -> bool:
|
|
96
|
+
if not isinstance(other, SecondOrderAdFloat):
|
|
97
|
+
return False
|
|
98
|
+
return (
|
|
99
|
+
self._value == other._value
|
|
100
|
+
and self._tangent == other._tangent
|
|
101
|
+
and self._adjoint == other._adjoint
|
|
102
|
+
)
|
|
103
|
+
|
|
86
104
|
@staticmethod
|
|
87
105
|
def _from_proto(proto: SecondOrderAdType) -> "SecondOrderAdFloat":
|
|
88
106
|
return SecondOrderAdFloat(
|
|
@@ -2,12 +2,15 @@ from .display import DisplayAttributes
|
|
|
2
2
|
from .filters import SurfaceStreamlines, Filter, SurfaceLIC
|
|
3
3
|
from .._client import get_default_client
|
|
4
4
|
from ..enum.vis_enums import EntityType, SceneMode
|
|
5
|
-
from typing import TYPE_CHECKING, cast
|
|
5
|
+
from typing import TYPE_CHECKING, cast, Union
|
|
6
6
|
|
|
7
7
|
from .._proto.api.v0.luminarycloud.vis import vis_pb2
|
|
8
8
|
|
|
9
9
|
if TYPE_CHECKING:
|
|
10
|
-
from .visualization import Scene, LookAtCamera
|
|
10
|
+
from .visualization import Scene, LookAtCamera, ColorMap
|
|
11
|
+
from ..geometry import Geometry
|
|
12
|
+
from ..mesh import Mesh
|
|
13
|
+
from ..solution import Solution
|
|
11
14
|
|
|
12
15
|
try:
|
|
13
16
|
import luminarycloud_jupyter as lcj
|
|
@@ -32,7 +35,8 @@ class InteractiveScene:
|
|
|
32
35
|
if not lcj:
|
|
33
36
|
raise ImportError("InteractiveScene requires luminarycloud[jupyter] to be installed")
|
|
34
37
|
self.widget = lcj.LCVisWidget(scene_mode=mode)
|
|
35
|
-
self.
|
|
38
|
+
self._scene = scene
|
|
39
|
+
self.set_scene(scene, False)
|
|
36
40
|
|
|
37
41
|
def _ipython_display_(self) -> None:
|
|
38
42
|
"""
|
|
@@ -41,7 +45,10 @@ class InteractiveScene:
|
|
|
41
45
|
"""
|
|
42
46
|
self.widget._ipython_display_()
|
|
43
47
|
|
|
44
|
-
def set_scene(self, scene: "Scene") -> None:
|
|
48
|
+
def set_scene(self, scene: "Scene", isComparator: bool) -> None:
|
|
49
|
+
# TODO(matt): we could make isCompartor and index so we could compare
|
|
50
|
+
# more than two scenes at once.
|
|
51
|
+
|
|
45
52
|
# Import here to avoid circular import issue
|
|
46
53
|
from .visualization import LookAtCamera
|
|
47
54
|
|
|
@@ -94,8 +101,10 @@ class InteractiveScene:
|
|
|
94
101
|
|
|
95
102
|
# TODO: would be nice to print/report some download progress info
|
|
96
103
|
# This can be done on the app frontend side now that the download
|
|
97
|
-
# is moved there.
|
|
98
|
-
|
|
104
|
+
# is moved there. Matt: this would be a lot of work. The current vis service
|
|
105
|
+
# call used in the backend doesn't use the streaming version. Further, there is
|
|
106
|
+
# a lot of extra code to manage the streaming callbacks.
|
|
107
|
+
self.widget.set_workspace_state(scene, resp, isComparator)
|
|
99
108
|
|
|
100
109
|
# Sync display attributes and visibilities for surfaces
|
|
101
110
|
self.set_display_attributes(_SOURCE_FILTER_ID, scene.global_display_attrs)
|
|
@@ -113,6 +122,10 @@ class InteractiveScene:
|
|
|
113
122
|
set_camera = True
|
|
114
123
|
self.set_camera(c)
|
|
115
124
|
|
|
125
|
+
# Set any color maps we have. TODO(matt): only a few attributes are connected atm.
|
|
126
|
+
for color_map in scene._color_maps:
|
|
127
|
+
self.set_color_map(color_map)
|
|
128
|
+
|
|
116
129
|
# If we don't have an initial camera to use, reset the camera after loading
|
|
117
130
|
# the workspace state
|
|
118
131
|
if not set_camera:
|
|
@@ -136,6 +149,9 @@ class InteractiveScene:
|
|
|
136
149
|
self.widget.camera_look_at = [camera.look_at[0], camera.look_at[1], camera.look_at[2]]
|
|
137
150
|
self.widget.camera_up = [camera.up[0], camera.up[1], camera.up[2]]
|
|
138
151
|
|
|
152
|
+
def set_color_map(self, color_map: "ColorMap") -> None:
|
|
153
|
+
self.widget.set_color_map(color_map)
|
|
154
|
+
|
|
139
155
|
def get_camera(self) -> "LookAtCamera":
|
|
140
156
|
# Import here to avoid circular import issue
|
|
141
157
|
from .visualization import LookAtCamera
|
|
@@ -152,3 +168,11 @@ class InteractiveScene:
|
|
|
152
168
|
|
|
153
169
|
def set_triad_visible(self, visible: bool) -> None:
|
|
154
170
|
self.widget.set_triad_visible(visible)
|
|
171
|
+
|
|
172
|
+
def compare(self, entity: Union["Geometry", "Mesh", "Solution"]) -> None:
|
|
173
|
+
# The entity can be a Geometry, Mesh, or Solution and is checked by the
|
|
174
|
+
# clone method. This can raise error if the scenes are incompatiable.
|
|
175
|
+
# This happens when tags or surface ids aren't shared or if we try to
|
|
176
|
+
# compare two different types of entities.
|
|
177
|
+
comparison_scene = self._scene.clone(entity)
|
|
178
|
+
self.set_scene(comparison_scene, True)
|
|
@@ -2,6 +2,7 @@ import dataclasses as dc
|
|
|
2
2
|
import io
|
|
3
3
|
import json
|
|
4
4
|
import logging
|
|
5
|
+
import copy
|
|
5
6
|
from time import sleep, time
|
|
6
7
|
from typing import Dict, List, Tuple, cast
|
|
7
8
|
|
|
@@ -750,6 +751,62 @@ class Scene:
|
|
|
750
751
|
self._interactive_scene = InteractiveScene(self, mode=scene_mode)
|
|
751
752
|
return self._interactive_scene
|
|
752
753
|
|
|
754
|
+
def clone(self, entity: Geometry | Mesh | Solution) -> "Scene":
|
|
755
|
+
"""
|
|
756
|
+
Clone this scene is based on a new entity. The new entity must be of
|
|
757
|
+
the same type as the previous one. For example, you can't swap a scene
|
|
758
|
+
based on a geometry with a solution. This is a deep copy operation.
|
|
759
|
+
Both entities must be compatible with one another, meaning they share tags
|
|
760
|
+
or surfaces ids used for setting surface visibilities and some filters like
|
|
761
|
+
surface streamlines and surface LIC.
|
|
762
|
+
"""
|
|
763
|
+
|
|
764
|
+
entity_type: EntityType
|
|
765
|
+
if isinstance(entity, Solution):
|
|
766
|
+
entity_type = EntityType.SIMULATION
|
|
767
|
+
elif isinstance(entity, Mesh):
|
|
768
|
+
entity_type = EntityType.MESH
|
|
769
|
+
elif isinstance(entity, Geometry):
|
|
770
|
+
entity_type = EntityType.GEOMETRY
|
|
771
|
+
else:
|
|
772
|
+
raise TypeError(
|
|
773
|
+
f"Swap expected Solution, Mesh or Geometry, got {type(entity).__name__}"
|
|
774
|
+
)
|
|
775
|
+
|
|
776
|
+
if entity_type != self._entity_type:
|
|
777
|
+
raise TypeError(
|
|
778
|
+
f"Swap entity type mismatch expected {self._entity_type} got {entity_type}"
|
|
779
|
+
)
|
|
780
|
+
|
|
781
|
+
cloned = Scene(entity)
|
|
782
|
+
cloned.global_display_attrs = copy.deepcopy(self.global_display_attrs)
|
|
783
|
+
cloned.triad_visible = self.triad_visible
|
|
784
|
+
cloned.axes_grid_visible = self.axes_grid_visible
|
|
785
|
+
cloned.auto_color_map_annotations = self.auto_color_map_annotations
|
|
786
|
+
cloned.background_color = copy.deepcopy(self.background_color)
|
|
787
|
+
cloned.supersampling = self.supersampling
|
|
788
|
+
# TODO(matt): This is really meant for interactive case comparison. The label field in each
|
|
789
|
+
# camera could contain information specific to the previous scene. We could skip this and force
|
|
790
|
+
# the user to add more cameras.
|
|
791
|
+
cloned._cameras = copy.deepcopy(self._cameras)
|
|
792
|
+
# TODO(matt): for filters we could do some validation here to make sure that anything with
|
|
793
|
+
# surfaces (e.g., LIC and surface streamlines) have valid ids in them.
|
|
794
|
+
cloned._filters = copy.deepcopy(self._filters)
|
|
795
|
+
|
|
796
|
+
cloned._color_maps = copy.deepcopy(self._color_maps)
|
|
797
|
+
# TODO(matt): depending on what we want to do here, we could have a flag
|
|
798
|
+
# to ignore incompatible visibilitites. Filter surfaces are validated
|
|
799
|
+
# when the request is made. We could also skip these checks if they are
|
|
800
|
+
# based on the same geometry or mesh.
|
|
801
|
+
# Now loop through the surface visibilies and make sure they are compatible with the new
|
|
802
|
+
# scene based on the entity.
|
|
803
|
+
for id, visible in self._surface_visibilities.items():
|
|
804
|
+
if id in cloned._surface_ids or id in cloned._tag_ids:
|
|
805
|
+
cloned._surface_visibilities[id] = visible
|
|
806
|
+
else:
|
|
807
|
+
raise ValueError(f"Scene.clone: id {id} not present in tags or surface ids")
|
|
808
|
+
return cloned
|
|
809
|
+
|
|
753
810
|
|
|
754
811
|
def get_render(project_id: str, extract_id: str) -> RenderOutput:
|
|
755
812
|
"""
|
|
@@ -3,15 +3,16 @@ luminarycloud/_patch.py,sha256=5m2_HUos6-NGPvrz-bOlVr5FsyJNJlCkmytyYJkj6Bc,1661
|
|
|
3
3
|
luminarycloud/_version.py,sha256=lOdK2s5vnq1K8KND-J-wO2A2MuUTouiYRhJwRwb6mcA,178
|
|
4
4
|
luminarycloud/_wrapper.py,sha256=_A4-9CXcG5cU598f1QHih2lxhPSS8d_acCKRZfadg04,6984
|
|
5
5
|
luminarycloud/exceptions.py,sha256=gerI_d6lkribrQ4mcgJrpO_1CebHvxEP8XQHo-CNWhI,1617
|
|
6
|
+
luminarycloud/feature_modification.py,sha256=-XG0LNHeMWkgoTvZLIaSDGADWdP0rsvCt7y9IQKQmuo,30754
|
|
6
7
|
luminarycloud/geometry.py,sha256=944U6ALq1zEd1Yi5PUnYbX9rOFKKEtYVZmnqUJrF9YI,17083
|
|
7
8
|
luminarycloud/geometry_version.py,sha256=y2mlAq-vLPvSxQpS9g3R5argS9qz-qalUMEMS6Q0E-0,4487
|
|
8
9
|
luminarycloud/mesh.py,sha256=Y2aYLjdI3BqAH0xsnkI7q5mxHvngRW82xQRfL5KnH4o,4082
|
|
9
|
-
luminarycloud/named_variable_set.py,sha256=
|
|
10
|
+
luminarycloud/named_variable_set.py,sha256=mlNhIJEaNR43ogNRbqb2Eo_AmkJisqwZSUzmN-HBGNY,4331
|
|
10
11
|
luminarycloud/project.py,sha256=m7wKNDTTUchwUFckdv5X-rva1eX8M-RcYF3yJpWdFMY,26881
|
|
11
12
|
luminarycloud/reference_values.py,sha256=vWIX1VXMctspeQIjNtjmZdex55K0jHf1xz5gsGeMCfo,4357
|
|
12
13
|
luminarycloud/simulation.py,sha256=H8PPExAc6wxgFCKW7DMuXkSNDjSoODPKv_fD5Hh-KVA,11264
|
|
13
14
|
luminarycloud/simulation_param.py,sha256=Un8MEWPvUIHDPuy8Xm4dzhIlKUiZ4yTRkiblTybMliw,15915
|
|
14
|
-
luminarycloud/simulation_template.py,sha256=
|
|
15
|
+
luminarycloud/simulation_template.py,sha256=NUjIM_rfblClTYjCWIf2Ord7_KRC0I5ijSx9IR7Fx38,19338
|
|
15
16
|
luminarycloud/solution.py,sha256=IlBAl8Rf-_oHOoE-TlAEpYpRMo9BLbXnNqFCAZN49EE,6825
|
|
16
17
|
luminarycloud/tables.py,sha256=pnaP3gApDHbTPbp8FmoUurFm7NHFQtxWolrKMrEcW7g,7004
|
|
17
18
|
luminarycloud/tag.py,sha256=aC1xnHFVOEk7V6tp16b0wdwuGAJoqq7u3tzuYwbkkY0,1384
|
|
@@ -25,7 +26,7 @@ luminarycloud/_auth/exceptions.py,sha256=XsjA6xxFGnufP5V7BOxnq_syuSRrLa-HWntncW5
|
|
|
25
26
|
luminarycloud/_auth/util.py,sha256=EmDl9BBV0SuKVyyq7PyYXPyOEkWBJRIqPN46l2srjEg,1040
|
|
26
27
|
luminarycloud/_client/__init__.py,sha256=q-q1lnJE9EirX5p_O15FnanUoSYdEOD5zP1XrUedKMU,681
|
|
27
28
|
luminarycloud/_client/authentication_plugin.py,sha256=eJXs0b8pYih12fBU1vgJ8gGpAdtjfbqCuxSprjR-p9E,1351
|
|
28
|
-
luminarycloud/_client/client.py,sha256=
|
|
29
|
+
luminarycloud/_client/client.py,sha256=zQWEc_5fqPVdmXl9guHF4EzWKcBmH64-afU34OMe0HQ,9342
|
|
29
30
|
luminarycloud/_client/config.py,sha256=o_HJsmPOLaeorYToR9_wzNhJYRoFnmeqcxCRAoUAqZk,236
|
|
30
31
|
luminarycloud/_client/logging_interceptor.py,sha256=I7xJzTQoV5O_Ioi7OjWXI2mQWxdpbagu7QnzbJSFcHg,2593
|
|
31
32
|
luminarycloud/_client/retry_interceptor.py,sha256=XrgBXAbFK53lu2m7JILQ0WAR-KwSIH-FnwoS8oqo98U,2470
|
|
@@ -55,18 +56,22 @@ luminarycloud/_helpers/warnings/deprecated.py,sha256=1SnhBAUqntgxHRMFG4Gzy_yqOMn
|
|
|
55
56
|
luminarycloud/_helpers/warnings/experimental.py,sha256=pT9xY50DZloLMTihcGzbZd3_sDrrjEmPHFkZbw9ovRs,1115
|
|
56
57
|
luminarycloud/_proto/api/v0/luminarycloud/common/common_pb2.py,sha256=KhSuLqqLRCv1rRKP0mwNmneITQsZwLSs2uD23_ehJbQ,4176
|
|
57
58
|
luminarycloud/_proto/api/v0/luminarycloud/common/common_pb2.pyi,sha256=49g0e_2FuSdbmcfkdXRgnB0Refnn9Tzl6M0V-V_IpI4,5674
|
|
58
|
-
luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.py,sha256=
|
|
59
|
-
luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.pyi,sha256=
|
|
59
|
+
luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.py,sha256=jWWQLu6wcvLALanjcF0LIlRWBWcYxZbWvEwPiiRYbO4,54325
|
|
60
|
+
luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2.pyi,sha256=rD57ej_1Jr8zLNCTD1jxS-VzjUo6wDC294Qs3U2Cg0o,51662
|
|
60
61
|
luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.py,sha256=zNBFKEbXidHnH2ohOoDclOUAOjZmnrCmHVNi79smj8s,45970
|
|
61
62
|
luminarycloud/_proto/api/v0/luminarycloud/geometry/geometry_pb2_grpc.pyi,sha256=9wNhHoV2YxF5syg0XgpVOASIaF6v6Etgwpi5Dk-VRLM,16977
|
|
62
|
-
luminarycloud/_proto/api/v0/luminarycloud/
|
|
63
|
-
luminarycloud/_proto/api/v0/luminarycloud/
|
|
63
|
+
luminarycloud/_proto/api/v0/luminarycloud/inference/inference_pb2.py,sha256=CznjzMa-1L2mPm7FtlFQL1iwiKgfYdm18hYIZbT9uEI,4219
|
|
64
|
+
luminarycloud/_proto/api/v0/luminarycloud/inference/inference_pb2.pyi,sha256=Z5O30zhcJ5eZpp3JUgchA8h9QH_Zr-nnJlDKCP1gHMw,2889
|
|
65
|
+
luminarycloud/_proto/api/v0/luminarycloud/inference/inference_pb2_grpc.py,sha256=kPfG5fIgEWRghcAf0UPk_LsRFBS4IDxiZ6JEx4fTsjc,3259
|
|
66
|
+
luminarycloud/_proto/api/v0/luminarycloud/inference/inference_pb2_grpc.pyi,sha256=w7uRtY0S39MDkOQC75pdGplIzoVxE7EyielgLZpvpvE,1167
|
|
67
|
+
luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2.py,sha256=6y0lLj1YsQ_xIJlB3_H4-BQ-YhmfA7ozgxYEcNlPxcg,29997
|
|
68
|
+
luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2.pyi,sha256=rLmi6-XdZrfuRQxlP0xpmiVwg2w4HnsEqVhVVgDfmZI,40111
|
|
64
69
|
luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2_grpc.py,sha256=klRUtId5bbK5ysQZm3pqpa7HW721GTgcif2kAVPDh_s,16036
|
|
65
70
|
luminarycloud/_proto/api/v0/luminarycloud/mesh/mesh_pb2_grpc.pyi,sha256=0RAGudvtIY4sxoRzqWhdZ8HGtg5rzXJJum947TzxQeY,5269
|
|
66
|
-
luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2.py,sha256=
|
|
67
|
-
luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2.pyi,sha256=
|
|
68
|
-
luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2_grpc.py,sha256=
|
|
69
|
-
luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2_grpc.pyi,sha256=
|
|
71
|
+
luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2.py,sha256=nL1JlSvz7SMzOsPnkws9lKwP6FtQ9riOgsLihQY_P1g,18398
|
|
72
|
+
luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2.pyi,sha256=eoGT1jdm45kBeRJcH7C6FmMtnj9wGQ4n4MqbgXnzMPk,12460
|
|
73
|
+
luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2_grpc.py,sha256=5UTrgh-W0dzFYw-CcNSE8X9JWPomjIeP1zkY3dY9Tv0,14597
|
|
74
|
+
luminarycloud/_proto/api/v0/luminarycloud/named_variable_set/named_variable_set_pb2_grpc.pyi,sha256=rZncNVrqwhvMtz5u5X1-QAL4SPjNqQSjaVYlVa6B-wE,4939
|
|
70
75
|
luminarycloud/_proto/api/v0/luminarycloud/output_definition/output_definition_pb2.py,sha256=SWuml14PtDLqHW33gy2N3daf62iNQXjY6wC1eWghshg,12423
|
|
71
76
|
luminarycloud/_proto/api/v0/luminarycloud/output_definition/output_definition_pb2.pyi,sha256=OPJsL8iByJg0OflOOLqbb9WKbSP--PG0e6pwMwleA7w,8782
|
|
72
77
|
luminarycloud/_proto/api/v0/luminarycloud/output_definition/output_definition_pb2_grpc.py,sha256=UXJMxuFieweWYXRIfvRMfPRg-VqrzJAvXscUt6mmy1o,12345
|
|
@@ -111,8 +116,8 @@ luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.py,sha256=PbzwjnzqV2x4R0oA
|
|
|
111
116
|
luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2.pyi,sha256=PnILt1A2s8I2hqcTASChQIdPkt6Zn3IiZ64KC2mtVf4,81906
|
|
112
117
|
luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2_grpc.py,sha256=KwtYIm6fEQ39TeS2XkzQ0xgHyJMkyiyDorw90wGBfqE,14501
|
|
113
118
|
luminarycloud/_proto/api/v0/luminarycloud/vis/vis_pb2_grpc.pyi,sha256=79w7KSqcuajgO9klxROMmeRwCecn58NSFWQRJWQrt0o,3991
|
|
114
|
-
luminarycloud/_proto/assistant/assistant_pb2.py,sha256=
|
|
115
|
-
luminarycloud/_proto/assistant/assistant_pb2.pyi,sha256=
|
|
119
|
+
luminarycloud/_proto/assistant/assistant_pb2.py,sha256=14w2vbqN41V8xPryb7B_VzmKtuwkjd69erVqaQEJMHI,19942
|
|
120
|
+
luminarycloud/_proto/assistant/assistant_pb2.pyi,sha256=lxIwrrb4pnraCJ1C5DM8pKmGOTbKnwckauMKUKjdqEs,24921
|
|
116
121
|
luminarycloud/_proto/assistant/assistant_pb2_grpc.py,sha256=wBh1LMszzZqNYjpIlCjsEbQjAWG4SN9aHjBf7E3OPk4,11508
|
|
117
122
|
luminarycloud/_proto/assistant/assistant_pb2_grpc.pyi,sha256=0YY4Alr_llagoErEJ76Ca98WDhpoO5X36BZh4Q3Sp3A,3484
|
|
118
123
|
luminarycloud/_proto/base/base_pb2.py,sha256=88kXZEhuZB-xdc_8jJ27vH0TkIjqlJYg355jZFxhJJM,13520
|
|
@@ -147,10 +152,12 @@ luminarycloud/_proto/fvm/solver_results_pb2.py,sha256=eP6iV92nfV4YcNOocn7Y3Y9uU4
|
|
|
147
152
|
luminarycloud/_proto/fvm/solver_results_pb2.pyi,sha256=HCy3N9rOnDwDN_2y-eYmMzWJv5TIClSo_XpanNVCYqs,6665
|
|
148
153
|
luminarycloud/_proto/fvm/vof_initialization_pb2.py,sha256=sojYSJKPETIecEc1uQYQAto0d1mvrvnNFqlAIPIsiU4,5483
|
|
149
154
|
luminarycloud/_proto/fvm/vof_initialization_pb2.pyi,sha256=Lz18bv9OvARqs5IN78OL51J9HQh3wrnwulFBF04-ChY,8650
|
|
150
|
-
luminarycloud/_proto/geometry/geometry_pb2.py,sha256=
|
|
151
|
-
luminarycloud/_proto/geometry/geometry_pb2.pyi,sha256=
|
|
152
|
-
luminarycloud/_proto/hexmesh/hexmesh_pb2.py,sha256=
|
|
153
|
-
luminarycloud/_proto/hexmesh/hexmesh_pb2.pyi,sha256=
|
|
155
|
+
luminarycloud/_proto/geometry/geometry_pb2.py,sha256=V0IKZgSKF9qwgIlkH43C0B7FGHWZKACs4trheEjzc8g,22163
|
|
156
|
+
luminarycloud/_proto/geometry/geometry_pb2.pyi,sha256=k--qGcF7Cdvt1_uaeYxr3j4UnPNJB6-k1ZxLQ1RfGmw,43027
|
|
157
|
+
luminarycloud/_proto/hexmesh/hexmesh_pb2.py,sha256=2U07p9s9TLCVCGOtz7Q41K3CZb7mFtx0WKGdxC1mb-Y,28461
|
|
158
|
+
luminarycloud/_proto/hexmesh/hexmesh_pb2.pyi,sha256=znpCjOA48AwQf2Z52SlExMbhJlvWa6jZwbd4V-Q9kdA,39453
|
|
159
|
+
luminarycloud/_proto/inferenceservice/inferenceservice_pb2.py,sha256=7A7A18Prph0KyVl4zpZkFTZEMjG-kJQzTydzVhiThCE,4510
|
|
160
|
+
luminarycloud/_proto/inferenceservice/inferenceservice_pb2.pyi,sha256=3XjVG_T0YRRp-SByimDFUuTemhE0KLmDZAb155I_zMg,2588
|
|
154
161
|
luminarycloud/_proto/lcn/lcmesh_pb2.py,sha256=Wezvq8djXrRv9luuNU7FYj3Pm5gjt4YBM7-wnwJaF6E,7479
|
|
155
162
|
luminarycloud/_proto/lcn/lcmesh_pb2.pyi,sha256=CFplaZIMsA-txXrU5HcsTkja9OxtLHj2ZEF_qN7jhuY,21738
|
|
156
163
|
luminarycloud/_proto/lcn/lcmeshcheckpoint_pb2.py,sha256=8hZnavu4HEBXhjNqQBAS0kAwjJmqvhSHzCp4NYqJ7aM,3887
|
|
@@ -173,8 +180,8 @@ luminarycloud/_proto/output/output_pb2.py,sha256=ywx4TE229q8BvfMcYLiffEcwpOCPsE4
|
|
|
173
180
|
luminarycloud/_proto/output/output_pb2.pyi,sha256=ZjDKDfSPjquivHdwRKlekYl0CPB2t3bm9NNkeCOO0So,24790
|
|
174
181
|
luminarycloud/_proto/output/reference_values_pb2.py,sha256=lNbv02XS6Yz0Q0z6Hd0RuTvOlTruUFvlTusYTUl9bYY,6841
|
|
175
182
|
luminarycloud/_proto/output/reference_values_pb2.pyi,sha256=kPSKcLWUwZoYUAUtzBHqOAZDo36G7ysILCXZFclRCJk,5311
|
|
176
|
-
luminarycloud/_proto/parametricworker/parametricworker_pb2.py,sha256=
|
|
177
|
-
luminarycloud/_proto/parametricworker/parametricworker_pb2.pyi,sha256=
|
|
183
|
+
luminarycloud/_proto/parametricworker/parametricworker_pb2.py,sha256=vldSHCCpEREsA9pK4e3zrz1nVUCF7oasyeJXd0rlKgQ,11112
|
|
184
|
+
luminarycloud/_proto/parametricworker/parametricworker_pb2.pyi,sha256=R1j0hXIlvccrdQ5Vf45xV6my7dzcPJ94igVZrZ2BjSg,10158
|
|
178
185
|
luminarycloud/_proto/parametricworker/parametricworker_pb2_grpc.py,sha256=sxVIAGz_rFE52RMWGcLpm2o6Qs-lCcoSuDcJSv94f0M,10008
|
|
179
186
|
luminarycloud/_proto/parametricworker/parametricworker_pb2_grpc.pyi,sha256=T8RFKXUxrTOGMpXpjAE-b43Nw8LJjetckFC_d-aDIu4,3378
|
|
180
187
|
luminarycloud/_proto/quantity/quantity_options_pb2.py,sha256=x7mjevQEMY-sCnUcRG-Sn0lws9M-T-11bmzbiCZsnq0,7005
|
|
@@ -211,11 +218,11 @@ luminarycloud/enum/vis_enums.py,sha256=S7O9Tvs_4DsqmebqE1RBchzgVCdXv3BtRfGVpx3L_
|
|
|
211
218
|
luminarycloud/enum/volume_reduction_type.py,sha256=DGXXTImKxfwPgGXO4NQghbYAJwrzAtgsyMjrJVAQ6TI,491
|
|
212
219
|
luminarycloud/meshing/__init__.py,sha256=zBGkoe3NhuEskotHwRTuRlbEccPW3EFfEtaPRqV7czk,441
|
|
213
220
|
luminarycloud/meshing/mesh_adaptation_params.py,sha256=tZUymzgo0dcECCXuEPfvx9jRICetiEnvgmCVqRGR5w4,1535
|
|
214
|
-
luminarycloud/meshing/mesh_generation_params.py,sha256=
|
|
221
|
+
luminarycloud/meshing/mesh_generation_params.py,sha256=uLqbCaXcCwNn2_nhTaaMsEqKzXci2Jlg2iXzrL_fNKI,9467
|
|
215
222
|
luminarycloud/meshing/metadata/__init__.py,sha256=6fUDEaxhbCxX76BZS4Sqfp1Xtv5p7XBEiissaeAAcrg,169
|
|
216
223
|
luminarycloud/meshing/metadata/mesh_metadata.py,sha256=DZKPuyJk7S00bKJ-NALxzfoPpCjGdqjbrczllRVI328,1412
|
|
217
224
|
luminarycloud/meshing/sizing_strategy/__init__.py,sha256=Y1Q95QoWw3cQkp787ydwdrgHcfJuFZX22lswzLUTsvw,117
|
|
218
|
-
luminarycloud/meshing/sizing_strategy/sizing_strategies.py,sha256=
|
|
225
|
+
luminarycloud/meshing/sizing_strategy/sizing_strategies.py,sha256=IenJNwSkPzraEViqRpYHjdsi2f90tWKGOdpxrfFPJaA,1455
|
|
219
226
|
luminarycloud/outputs/__init__.py,sha256=CP2uRvwWEbJEPJlydWP9_pWdRO750ys9vfImNaG9BbU,1536
|
|
220
227
|
luminarycloud/outputs/output_definitions.py,sha256=PwpouG8HLxx3C6i5w5Ohjz91jIoOPj6mkt4SxI03FW4,26295
|
|
221
228
|
luminarycloud/outputs/stopping_conditions.py,sha256=By3AoZ_0kONWJnF4VPkyGUmyHrGyJad0kNBtORDhvvU,8711
|
|
@@ -471,17 +478,18 @@ luminarycloud/params/simulation/time/time_step_ramp/time_step_ramp_off_.py,sha25
|
|
|
471
478
|
luminarycloud/params/simulation/time/time_step_ramp/time_step_ramp_on_.py,sha256=jYkSbXNhyTNFw7SbocJgLw2caQYWQd5U3XFSxHv1iw4,1405
|
|
472
479
|
luminarycloud/physics_ai/__init__.py,sha256=vN6lSE7_fle5sJoYhD0zYiQ_lHx2pDJs00Rr3nUGrIA,245
|
|
473
480
|
luminarycloud/physics_ai/architectures.py,sha256=o1vP0_Ajd42FZBsBO9_4KHpmyoPBhO0ChN4KHZOO-p8,1185
|
|
481
|
+
luminarycloud/physics_ai/inference.py,sha256=CpI8HJoLuAZt_2OTG-_V2gZE2K0sOmBOrsxRHKjpAGs,1682
|
|
474
482
|
luminarycloud/physics_ai/models.py,sha256=Zkf5V2KsXbmZswcFHCMDxvgcISIHwhV5dUFq6Y1gaM4,1241
|
|
475
483
|
luminarycloud/types/__init__.py,sha256=Ka0ppKcdPcUg7yZ3djZLP6Dl4ghPRmJsNtX6D4wVcu4,542
|
|
476
|
-
luminarycloud/types/adfloat.py,sha256=
|
|
484
|
+
luminarycloud/types/adfloat.py,sha256=4tSzTUetW8483kd-Q5DKTWLTOwU6rYsSVqXxOOkB1cc,5021
|
|
477
485
|
luminarycloud/types/ids.py,sha256=_6ZHZuOueK6b7XCEeazxSNK2_ZHPti6R9HG_jjHfroE,569
|
|
478
486
|
luminarycloud/types/matrix3.py,sha256=7E2CyDZBGL_YPiPyOKve2fhr0COL-7y2yJqqW70W7d8,922
|
|
479
487
|
luminarycloud/types/vector3.py,sha256=fkLfpvDHt_4JWqNW4OnHnBNGYnSfjyCw6Rxv2JqxlIQ,3309
|
|
480
488
|
luminarycloud/vis/__init__.py,sha256=hFmhMT-ScBB9gl4DcG6GYeTpNSjfiBz1wgqsPT1nN8s,1055
|
|
481
489
|
luminarycloud/vis/display.py,sha256=4nwDbueAKhlzfrzgr6HhdgIoZNqg1RnOtiJY6SaPE24,6992
|
|
482
490
|
luminarycloud/vis/filters.py,sha256=Q2swtQRlHim1zQdD3Ih9qhPbrhraN3c0fXFJCzWG9O0,31114
|
|
483
|
-
luminarycloud/vis/interactive_scene.py,sha256=
|
|
484
|
-
luminarycloud/vis/visualization.py,sha256=
|
|
485
|
-
luminarycloud-0.15.
|
|
486
|
-
luminarycloud-0.15.
|
|
487
|
-
luminarycloud-0.15.
|
|
491
|
+
luminarycloud/vis/interactive_scene.py,sha256=Y_2_wITPqYA945aARfUQBBcA5ypekBhZZK7010Jr0mI,7913
|
|
492
|
+
luminarycloud/vis/visualization.py,sha256=BguMQhd5k9CEsf2XB7RzwgYXZKvFBDDvv1sAVaCwbfk,39489
|
|
493
|
+
luminarycloud-0.15.2.dist-info/METADATA,sha256=86OxtvZuMe853dL2bXO3H3Y7PtFbsE-GnC2Nh_MJpmw,2535
|
|
494
|
+
luminarycloud-0.15.2.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
495
|
+
luminarycloud-0.15.2.dist-info/RECORD,,
|
|
File without changes
|