ubc-solar-physics 1.1.0__cp310-cp310-macosx_11_0_arm64.whl → 1.7.4__cp310-cp310-macosx_11_0_arm64.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.
- physics/_version.py +2 -2
- physics/environment/gis/base_gis.py +14 -0
- physics/environment/gis/gis.py +37 -3
- physics/environment/gis/gis.rs +91 -3
- physics/environment/meteorology/clouded_meteorology.py +4 -4
- physics/environment/meteorology/irradiant_meteorology.py +6 -6
- physics/lib.rs +72 -6
- physics/models/battery/__init__.py +12 -1
- physics/models/battery/basic_battery.py +0 -1
- physics/models/battery/battery.rs +102 -0
- physics/models/battery/battery_config.py +107 -0
- physics/models/battery/battery_config.toml +6 -0
- physics/models/battery/battery_model.py +226 -0
- physics/models/battery/kalman_filter.py +223 -0
- physics/models/battery.rs +1 -1
- physics/models/motor/__init__.py +3 -1
- physics/models/motor/advanced_motor.py +196 -0
- physics/models/motor/base_motor.py +2 -0
- physics/models/motor/basic_motor.py +33 -14
- physics/models/regen/basic_regen.py +14 -1
- physics/models.rs +1 -1
- physics_rs/__init__.pyi +111 -0
- physics_rs.cpython-310-darwin.so +0 -0
- {ubc_solar_physics-1.1.0.dist-info → ubc_solar_physics-1.7.4.dist-info}/METADATA +12 -5
- {ubc_solar_physics-1.1.0.dist-info → ubc_solar_physics-1.7.4.dist-info}/RECORD +28 -22
- {ubc_solar_physics-1.1.0.dist-info → ubc_solar_physics-1.7.4.dist-info}/WHEEL +1 -1
- ubc_solar_physics-1.7.4.dist-info/top_level.txt +2 -0
- core.cpython-310-darwin.so +0 -0
- ubc_solar_physics-1.1.0.dist-info/top_level.txt +0 -1
- {ubc_solar_physics-1.1.0.dist-info → ubc_solar_physics-1.7.4.dist-info}/LICENSE +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
import math
|
2
2
|
import numpy as np
|
3
|
-
|
3
|
+
from numpy.typing import NDArray
|
4
4
|
from physics.models.motor.base_motor import BaseMotor
|
5
5
|
from physics.models.constants import ACCELERATION_G, AIR_DENSITY
|
6
6
|
|
@@ -33,7 +33,7 @@ class BasicMotor(BaseMotor):
|
|
33
33
|
# print("torque experienced by motor: {} Nm".format(self.constant_torque))
|
34
34
|
|
35
35
|
@staticmethod
|
36
|
-
def calculate_motor_efficiency(motor_angular_speed, motor_output_energy, tick):
|
36
|
+
def calculate_motor_efficiency(motor_angular_speed, motor_output_energy, tick, *args, **kwargs):
|
37
37
|
"""
|
38
38
|
|
39
39
|
Calculates a NumPy array of motor efficiency from NumPy array of operating angular speeds and NumPy array
|
@@ -98,19 +98,20 @@ class BasicMotor(BaseMotor):
|
|
98
98
|
|
99
99
|
return e_mc
|
100
100
|
|
101
|
-
def
|
101
|
+
def calculate_net_force(self,
|
102
|
+
required_speed_kmh: NDArray,
|
103
|
+
wind_speeds: NDArray,
|
104
|
+
gradients: NDArray
|
105
|
+
) -> tuple[NDArray, NDArray]:
|
102
106
|
"""
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
:
|
111
|
-
:returns: (float[N]) energy expended by the motor at every tick
|
112
|
-
:rtype: np.ndarray
|
113
|
-
|
107
|
+
Calculate the net force on the car, and the required wheel angular velocity.
|
108
|
+
Currently, considers:
|
109
|
+
1. Rolling resistance of the wheels on the road
|
110
|
+
2. Drag force (wind + forward velocity)
|
111
|
+
3. Acceleration force (a = F / m)
|
112
|
+
4. Gravitational force (force to go uphill)
|
113
|
+
|
114
|
+
:return: net force in N, wheel angular velocity in rad/s
|
114
115
|
"""
|
115
116
|
required_speed_ms = required_speed_kmh / 3.6
|
116
117
|
|
@@ -129,6 +130,24 @@ class BasicMotor(BaseMotor):
|
|
129
130
|
|
130
131
|
net_force = road_friction_array + drag_forces + g_forces + acceleration_force
|
131
132
|
|
133
|
+
return net_force, required_angular_speed_rads
|
134
|
+
|
135
|
+
def calculate_energy_in(self, required_speed_kmh, gradients, wind_speeds, tick, **kwargs):
|
136
|
+
"""
|
137
|
+
|
138
|
+
Create a function which takes in array of elevation, array of wind speed, required
|
139
|
+
speed, returns the consumed energy.
|
140
|
+
|
141
|
+
:param np.ndarray required_speed_kmh: (float[N]) required speed array in km/h
|
142
|
+
:param np.ndarray gradients: (float[N]) gradient at parts of the road
|
143
|
+
:param np.ndarray wind_speeds: (float[N]) speeds of wind in m/s, where > 0 means against the direction of the vehicle
|
144
|
+
:param float tick: length of 1 update cycle in seconds
|
145
|
+
:returns: (float[N]) energy expended by the motor at every tick
|
146
|
+
:rtype: np.ndarray
|
147
|
+
|
148
|
+
"""
|
149
|
+
net_force, required_angular_speed_rads = self.calculate_net_force(required_speed_kmh, wind_speeds, gradients)
|
150
|
+
|
132
151
|
motor_output_energies = required_angular_speed_rads * net_force * self.tire_radius * tick
|
133
152
|
motor_output_energies = np.clip(motor_output_energies, a_min=0, a_max=None)
|
134
153
|
|
@@ -12,6 +12,18 @@ class BasicRegen(BaseRegen):
|
|
12
12
|
self.vehicle_mass = vehicle_mass
|
13
13
|
self.kmh_to_mps = 0.278
|
14
14
|
|
15
|
+
def get_regen_efficiency(self, speed_array):
|
16
|
+
"""
|
17
|
+
Returns a numpy array of regen efficiency percentage based on the vehicle speed in m/s.
|
18
|
+
|
19
|
+
:param speed_array: a numpy array of speeds in m/s
|
20
|
+
:returns: numpy array of regen efficiency percentage
|
21
|
+
"""
|
22
|
+
# Efficiency polynomial, more details can be found in regen_analysis folder located in data_analysis
|
23
|
+
efficiency_poly = [0.022288416685942, 0.026545396753597]
|
24
|
+
|
25
|
+
return np.polyval(efficiency_poly, speed_array)
|
26
|
+
|
15
27
|
def calculate_produced_energy(self, speed_kmh, gis_route_elevations, min_regen_speed, max_power):
|
16
28
|
"""
|
17
29
|
Returns a numpy array containing the energy produced by regen
|
@@ -29,7 +41,8 @@ class BasicRegen(BaseRegen):
|
|
29
41
|
|
30
42
|
# create regen energy produced array
|
31
43
|
# if delta_energy is negative, we regen that energy back at the set efficiency rate; else 0 energy regen
|
32
|
-
|
44
|
+
efficiencies = self.get_regen_efficiency(speed_ms)
|
45
|
+
produced_energy = np.where(delta_energy < 0, abs(delta_energy) * efficiencies, 0)
|
33
46
|
|
34
47
|
# Regen does not occur below a certain speed
|
35
48
|
produced_energy = np.where(speed_ms >= min_regen_speed, produced_energy, 0)
|
physics/models.rs
CHANGED
physics_rs/__init__.pyi
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
import numpy as np
|
2
|
+
|
3
|
+
|
4
|
+
def constrain_speeds(speed_limits: np.ndarray, speeds: np.ndarray, tick: int) -> np.ndarray:
|
5
|
+
"""
|
6
|
+
Constrains the vehicle speeds based on the speed limits and computes new speeds.
|
7
|
+
|
8
|
+
:param speed_limits: Array of speed limits (km/h) for each point.
|
9
|
+
:param speeds: Array of vehicle speeds (km/h).
|
10
|
+
:param tick: The time step (in some unit, e.g., seconds or ticks).
|
11
|
+
|
12
|
+
:return: A NumPy array of constrained vehicle speeds (km/h).
|
13
|
+
"""
|
14
|
+
...
|
15
|
+
|
16
|
+
|
17
|
+
def calculate_array_ghi_times(python_local_times: np.ndarray) -> tuple[np.ndarray, np.ndarray]:
|
18
|
+
"""
|
19
|
+
Calculates the array of GHI times based on local times.
|
20
|
+
|
21
|
+
:param python_local_times: Array of local times (UNIX timestamps or other format).
|
22
|
+
|
23
|
+
:return: A tuple of two NumPy arrays:
|
24
|
+
- Day of year (f64)
|
25
|
+
- Local time (f64)
|
26
|
+
"""
|
27
|
+
...
|
28
|
+
|
29
|
+
|
30
|
+
def closest_gis_indices_loop(python_cumulative_distances: np.ndarray,
|
31
|
+
python_average_distances: np.ndarray) -> np.ndarray:
|
32
|
+
"""
|
33
|
+
Finds the closest GIS indices based on cumulative and average distances.
|
34
|
+
|
35
|
+
:param python_cumulative_distances: Array of cumulative distances.
|
36
|
+
:param python_average_distances: Array of average distances.
|
37
|
+
|
38
|
+
:return: A NumPy array of indices (i64) corresponding to the closest GIS indices.
|
39
|
+
"""
|
40
|
+
...
|
41
|
+
|
42
|
+
|
43
|
+
def closest_weather_indices_loop(
|
44
|
+
python_cumulative_distances: np.ndarray,
|
45
|
+
python_average_distances: np.ndarray
|
46
|
+
) -> np.ndarray:
|
47
|
+
"""
|
48
|
+
Finds the closest weather indices based on cumulative and average distances.
|
49
|
+
|
50
|
+
:param python_cumulative_distances: Array of cumulative distances.
|
51
|
+
:param python_average_distances: Array of average distances.
|
52
|
+
|
53
|
+
:return: A NumPy array of indices (i64) corresponding to the closest weather indices.
|
54
|
+
"""
|
55
|
+
...
|
56
|
+
|
57
|
+
|
58
|
+
def weather_in_time(
|
59
|
+
python_unix_timestamps: np.ndarray,
|
60
|
+
python_indices: np.ndarray,
|
61
|
+
python_weather_forecast: np.ndarray,
|
62
|
+
index: int
|
63
|
+
) -> np.ndarray:
|
64
|
+
"""
|
65
|
+
Retrieves the weather forecast at specific times for given indices.
|
66
|
+
|
67
|
+
:param python_unix_timestamps: Array of UNIX timestamps.
|
68
|
+
:param python_indices: Array of indices to look up.
|
69
|
+
:param python_weather_forecast: Array of weather forecasts.
|
70
|
+
:param index: A specific index to look up in the weather forecast.
|
71
|
+
|
72
|
+
:return: A NumPy array of weather values (f64) at the specified times and indices.
|
73
|
+
"""
|
74
|
+
...
|
75
|
+
|
76
|
+
|
77
|
+
def update_battery_state(
|
78
|
+
python_energy_or_current_array: np.ndarray,
|
79
|
+
time_step: float,
|
80
|
+
initial_state_of_charge: float,
|
81
|
+
initial_polarization_potential: float,
|
82
|
+
python_internal_resistance_lookup: np.ndarray,
|
83
|
+
python_open_circuit_voltage_lookup: np.ndarray,
|
84
|
+
python_polarization_resistance_lookup: np.ndarray,
|
85
|
+
python_polarization_capacitance_lookup: np.ndarray,
|
86
|
+
nominal_charge_capacity: float,
|
87
|
+
is_power: bool,
|
88
|
+
quantization_step: float,
|
89
|
+
min_soc: float
|
90
|
+
) -> tuple[np.ndarray, np.ndarray]:
|
91
|
+
"""
|
92
|
+
Updates the battery state (SOC and terminal voltage) based on energy/current input.
|
93
|
+
|
94
|
+
:param python_energy_or_current_array: Array of energy or current input values (f64).
|
95
|
+
:param time_step: Time step (f64).
|
96
|
+
:param initial_state_of_charge: Initial state of charge (f64).
|
97
|
+
:param initial_polarization_potential: Initial polarization potential (f64).
|
98
|
+
:param python_internal_resistance_lookup: Array of internal resistance values (f64).
|
99
|
+
:param python_open_circuit_voltage_lookup: Array of open-circuit voltage values (f64).
|
100
|
+
:param python_polarization_resistance_lookup: Array of polarization resistance values (f64).
|
101
|
+
:param python_polarization_capacitance_lookup: Array of polarization capacitance values (f64).
|
102
|
+
:param nominal_charge_capacity: Nominal charge capacity (f64).
|
103
|
+
:param is_power: Boolean flag to indicate if the input is power (`True`) or current (`False`).
|
104
|
+
:param quantization_step: The step size used to quantize the SOC (f64).
|
105
|
+
:param min_soc: The minimum SOC used when computing the lookup tables
|
106
|
+
|
107
|
+
:return: A tuple containing:
|
108
|
+
- An array of updated SOC values (f64).
|
109
|
+
- An array of updated terminal voltage values (f64).
|
110
|
+
"""
|
111
|
+
...
|
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: ubc-solar-physics
|
3
|
-
Version: 1.
|
3
|
+
Version: 1.7.4
|
4
4
|
Summary: UBC Solar's Simulation Environment
|
5
5
|
Author: Fisher Xue, Mihir Nimgade, Chris Chang, David Widjaja, Justin Hua, Ilya Veksler, Renu Rajamagesh, Ritchie Xia, Erik Langille, Chris Aung, Nicolas Ric, Ishaan Trivedi, Jason Liang, Felix Toft, Mack Wilson, Jonah Lee, Tamzeed Quazi, Joshua Riefman
|
6
6
|
Author-email: UBC Solar <strategy@ubcsolar.com>
|
@@ -42,7 +42,7 @@ License-File: LICENSE
|
|
42
42
|
Requires-Dist: backports.tarfile ==1.2.0
|
43
43
|
Requires-Dist: certifi ==2024.7.4
|
44
44
|
Requires-Dist: charset-normalizer ==3.3.2
|
45
|
-
Requires-Dist: dill
|
45
|
+
Requires-Dist: dill >=0.3.8
|
46
46
|
Requires-Dist: haversine ==2.8.1
|
47
47
|
Requires-Dist: idna ==3.7
|
48
48
|
Requires-Dist: importlib-metadata ==8.2.0
|
@@ -50,13 +50,13 @@ Requires-Dist: jaraco.classes ==3.4.0
|
|
50
50
|
Requires-Dist: jaraco.context ==5.3.0
|
51
51
|
Requires-Dist: jaraco.functools ==4.0.2
|
52
52
|
Requires-Dist: keyring ==25.3.0
|
53
|
-
Requires-Dist: llvmlite
|
53
|
+
Requires-Dist: llvmlite
|
54
54
|
Requires-Dist: markdown-it-py ==3.0.0
|
55
55
|
Requires-Dist: mdurl ==0.1.2
|
56
56
|
Requires-Dist: more-itertools ==10.4.0
|
57
57
|
Requires-Dist: nh3 ==0.2.18
|
58
|
-
Requires-Dist: numba
|
59
|
-
Requires-Dist: numpy
|
58
|
+
Requires-Dist: numba
|
59
|
+
Requires-Dist: numpy >=2
|
60
60
|
Requires-Dist: pkginfo ==1.10.0
|
61
61
|
Requires-Dist: Pygments ==2.18.0
|
62
62
|
Requires-Dist: readme-renderer ==44.0
|
@@ -67,6 +67,13 @@ Requires-Dist: rich ==13.7.1
|
|
67
67
|
Requires-Dist: tqdm ==4.66.5
|
68
68
|
Requires-Dist: urllib3 ==2.2.2
|
69
69
|
Requires-Dist: zipp ==3.20.0
|
70
|
+
Requires-Dist: filterpy ==1.4.5
|
71
|
+
Requires-Dist: toml ==0.10.2
|
72
|
+
Requires-Dist: pandas
|
73
|
+
Requires-Dist: pydantic ==2.9.2
|
74
|
+
Requires-Dist: scipy
|
75
|
+
Requires-Dist: tomli
|
76
|
+
Requires-Dist: scipy-stubs
|
70
77
|
|
71
78
|
# UBC Solar Physics
|
72
79
|
|
@@ -1,15 +1,16 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
ubc_solar_physics-1.
|
4
|
-
ubc_solar_physics-1.
|
5
|
-
ubc_solar_physics-1.
|
6
|
-
ubc_solar_physics-1.
|
7
|
-
|
8
|
-
physics/
|
9
|
-
physics/
|
1
|
+
physics_rs.cpython-310-darwin.so,sha256=xkBEPe7s7WjeQQHDfJ2QBYxEmXV4h_A3XVFSttVBpog,699728
|
2
|
+
physics_rs/__init__.pyi,sha256=bMMIbLFgpSYq37i9xHpvdoVlMuI7IRZ9bdbLCcIBeO8,4235
|
3
|
+
ubc_solar_physics-1.7.4.dist-info/RECORD,,
|
4
|
+
ubc_solar_physics-1.7.4.dist-info/LICENSE,sha256=DAej6EJNqQWTair3XPAQiqoJbly4BAT1JMOsZxoZvH0,1066
|
5
|
+
ubc_solar_physics-1.7.4.dist-info/WHEEL,sha256=Sr6WlJF6U27nFVGVWvIEC4coXGfodvHZVfYGHD45Ez0,109
|
6
|
+
ubc_solar_physics-1.7.4.dist-info/top_level.txt,sha256=jBZ5oyp1QQOrKodHG2UH9PMPEiZtza_q3y6fp3lEmQs,19
|
7
|
+
ubc_solar_physics-1.7.4.dist-info/METADATA,sha256=3959K0MWeKLHSPDZtICr_OxxkURBB5gytYEI7CXref0,5002
|
8
|
+
physics/_version.py,sha256=RXCVfb--6hzsLq9eHm4YOs9d-j0v74-HRGs2DFWnpjQ,411
|
9
|
+
physics/lib.rs,sha256=BGgj8jwbWQ7mkBDfKyTqH5jZGKAAb9U0sSByUaI-Los,7169
|
10
|
+
physics/models.rs,sha256=N5342VhLaLSlPLHZ7s1VDIEPY76-rQN03lY_wd2HS1A,59
|
10
11
|
physics/__init__.py,sha256=7939mrehCy0ogupHq26hUk1MkAjh2xmbD30GscdC_D8,169
|
11
12
|
physics/environment.rs,sha256=VWX1haUCO-WenD0dawS5FxY9dquiUT6Uud3p3dAnJZA,34
|
12
|
-
physics/models/battery.rs,sha256=
|
13
|
+
physics/models/battery.rs,sha256=fTL9O20fQarT_CFsmMSqVEZNe_sTejWMaAR8Fc-z_ak,16
|
13
14
|
physics/models/lvs.rs,sha256=uyJ1ZZ1Phq8cWCzr2aevCWzt8MlhCw9DO5ObUvEs8ds,8
|
14
15
|
physics/models/constants.py,sha256=mw0IkjhSJe51inbbzvVpHnpGLY_AoWxIxjfjcUF4cd8,816
|
15
16
|
physics/models/motor.rs,sha256=Iya1C_YF09KMy-9N-Mt-rBf1EIAs2Bf3Q4eDvyFuAoc,10
|
@@ -20,19 +21,24 @@ physics/models/lvs/basic_lvs.py,sha256=UH6VmVWrSo-tKvcbSOm3Ptp0edz1xDQiQsM4HlOJ_
|
|
20
21
|
physics/models/lvs/lvs.rs,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
22
|
physics/models/lvs/__init__.py,sha256=GkO6SJxbbSnXYLdMDvsvTRhXotV3zaRNmYBgziQLGB8,107
|
22
23
|
physics/models/lvs/base_lvs.py,sha256=PVwPgCaJ_TcV2mQf3X2pngi0aG-jTLTeloL-LQV3jMU,110
|
24
|
+
physics/models/motor/advanced_motor.py,sha256=EL86tCDSQCTT55EdXnmtPaIL9YS2o5p2u3QiLuoZuCA,8758
|
23
25
|
physics/models/motor/motor.rs,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
|
-
physics/models/motor/__init__.py,sha256=
|
25
|
-
physics/models/motor/basic_motor.py,sha256
|
26
|
-
physics/models/motor/base_motor.py,sha256=
|
26
|
+
physics/models/motor/__init__.py,sha256=zkV7LiAozFNu9CRWWXeCbCDepjsaUIYT8Q2dkXJgLsM,183
|
27
|
+
physics/models/motor/basic_motor.py,sha256=-_rKIFCRRLniC1yHr_8fRsmj6xvHuAzPqA168vTDkds,8626
|
28
|
+
physics/models/motor/base_motor.py,sha256=34wy8x945HvJijn9267fdAR_JNHxH_7bYxYbVl71WBA,97
|
27
29
|
physics/models/arrays/basic_array.py,sha256=cGBwyrYpR313ECJ-SwnrK3JzYo24NRE70j8sj-sxFQI,1332
|
28
30
|
physics/models/arrays/base_array.py,sha256=ZUjehd7vwNOBdFLUk9WJUeGOi9DPopYplH1gqAMnKgA,95
|
29
31
|
physics/models/arrays/arrays.rs,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
32
|
physics/models/arrays/__init__.py,sha256=yavs1K3JA6x3Aa-U1JCZJlcWggCOFrVxrrMCGsiceAw,119
|
31
|
-
physics/models/battery/
|
32
|
-
physics/models/battery/
|
33
|
-
physics/models/battery/
|
33
|
+
physics/models/battery/battery_config.toml,sha256=Fn1pb3NJJ_nclxm9nfGEQKmJYA2d5a9jCAUbwUGu6Uw,1092
|
34
|
+
physics/models/battery/battery.rs,sha256=10NAAGg99gQ70Kjd4kVuVHBxp3J6AgXfxEYKZUzu5DQ,5275
|
35
|
+
physics/models/battery/basic_battery.py,sha256=u0aO_iWKicVRECbDzLIs8goaWD5tLMnYGNe948lKC7U,5754
|
36
|
+
physics/models/battery/__init__.py,sha256=bIESRM8eEpaKSYMoliXD7rs3TUkAawTN9i3-YB2WCZg,630
|
37
|
+
physics/models/battery/battery_config.py,sha256=V4CfzUTcOFcizpDU9-Ujn2zXbUnAqrhyARN9QXGH6fk,4052
|
38
|
+
physics/models/battery/kalman_filter.py,sha256=kcX3SU1mNiY4-2YCUWAvqyTX6Cww7Pq7zaxaqh8ltgM,8725
|
34
39
|
physics/models/battery/base_battery.py,sha256=yK-bkA2OolE6nIDn5rf5nzi8gwm-AqQRmgsQioi_UOA,1203
|
35
|
-
physics/models/
|
40
|
+
physics/models/battery/battery_model.py,sha256=kODVlBZAIpPD_EB0UPlOeQv5HP-tMu6S-C6mEOJMHv4,10264
|
41
|
+
physics/models/regen/basic_regen.py,sha256=kcp6Wkw2o72xO_0-UCNABWSC_QIkexcS72iblNVQFBA,2350
|
36
42
|
physics/models/regen/base_regen.py,sha256=nWtmsm47wp9mx261OmSILwja32yYhzCLSNXWnzt82TY,95
|
37
43
|
physics/models/regen/__init__.py,sha256=51t_BHuQqIVPPy_0b14MO6QGZayOO326JR7wK1egy-g,119
|
38
44
|
physics/models/regen/regen.rs,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -42,10 +48,10 @@ physics/environment/environment.rs,sha256=yvzrjKHZ5vRvVip6lM34i8E0Ell_5fC3zyJDsb
|
|
42
48
|
physics/environment/meteorology.rs,sha256=naWb7qYrtMkCE_tLAkM474fmxaufhCkyhy3TTUQ4Yw4,20
|
43
49
|
physics/environment/meteorology/__init__.py,sha256=569as2j7kpv8Nh75M9xk9e7rTqsDPGo3Ii3nskD6F34,154
|
44
50
|
physics/environment/meteorology/base_meteorology.py,sha256=d5TDNLUIBmTkLtJhv9qUq9KcfNKxzoM7xIOsfyNbwfI,2418
|
45
|
-
physics/environment/meteorology/irradiant_meteorology.py,sha256=
|
46
|
-
physics/environment/meteorology/clouded_meteorology.py,sha256=
|
51
|
+
physics/environment/meteorology/irradiant_meteorology.py,sha256=1kqX4nEOUw-CYrLTusG6BdoZbZt_GEpfKMyey8YzLr0,5615
|
52
|
+
physics/environment/meteorology/clouded_meteorology.py,sha256=aEqlozaMOyhhxGK7CCD6BVHAn_HZDpSAUwGUngikkp4,27665
|
47
53
|
physics/environment/meteorology/meteorology.rs,sha256=Q3toiZv8M1updhoAnFDZ87YPy1afC9chUkF2IP9uA-I,5004
|
48
|
-
physics/environment/gis/base_gis.py,sha256=
|
54
|
+
physics/environment/gis/base_gis.py,sha256=eVr4G7wAGlx6VsrCt2OuI8WzUMM50h2sHHvw8BOBur8,1046
|
49
55
|
physics/environment/gis/__init__.py,sha256=Kp85UC1WvcAMBxbgvwaMTEk8ELYzwUJLCtP0e1hnMvM,90
|
50
|
-
physics/environment/gis/gis.rs,sha256=
|
51
|
-
physics/environment/gis/gis.py,sha256=
|
56
|
+
physics/environment/gis/gis.rs,sha256=_vXYMr7vNCC8Ip3CpQdyl6FA_3tCvOZeJd0-J5t4Eps,4865
|
57
|
+
physics/environment/gis/gis.py,sha256=EAFDudUmLWCBtM5A_LO3-MV-98tj-Q3s7S2WaoJjUGg,13209
|
core.cpython-310-darwin.so
DELETED
Binary file
|
@@ -1 +0,0 @@
|
|
1
|
-
physics
|
File without changes
|