pyvale 2025.4.0__py3-none-any.whl → 2025.5.1__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.
Potentially problematic release.
This version of pyvale might be problematic. Click here for more details.
- pyvale/__init__.py +78 -64
- pyvale/analyticmeshgen.py +102 -0
- pyvale/{core/analyticsimdatafactory.py → analyticsimdatafactory.py} +44 -16
- pyvale/analyticsimdatagenerator.py +323 -0
- pyvale/blendercalibrationdata.py +15 -0
- pyvale/blenderlightdata.py +26 -0
- pyvale/blendermaterialdata.py +15 -0
- pyvale/blenderrenderdata.py +30 -0
- pyvale/blenderscene.py +488 -0
- pyvale/blendertools.py +420 -0
- pyvale/{core/camera.py → camera.py} +15 -15
- pyvale/{core/cameradata.py → cameradata.py} +27 -22
- pyvale/{core/cameradata2d.py → cameradata2d.py} +8 -6
- pyvale/camerastereo.py +217 -0
- pyvale/{core/cameratools.py → cameratools.py} +220 -26
- pyvale/{core/cython → cython}/rastercyth.py +11 -7
- pyvale/data/__init__.py +5 -7
- pyvale/data/cal_target.tiff +0 -0
- pyvale/data/case00_HEX20_out.e +0 -0
- pyvale/data/case00_HEX27_out.e +0 -0
- pyvale/data/case00_HEX8_out.e +0 -0
- pyvale/data/case00_TET10_out.e +0 -0
- pyvale/data/case00_TET14_out.e +0 -0
- pyvale/data/case00_TET4_out.e +0 -0
- pyvale/{core/dataset.py → dataset.py} +91 -16
- pyvale/{core/errorcalculator.py → errorcalculator.py} +13 -16
- pyvale/{core/errordriftcalc.py → errordriftcalc.py} +14 -14
- pyvale/{core/errorintegrator.py → errorintegrator.py} +25 -28
- pyvale/{core/errorrand.py → errorrand.py} +39 -46
- pyvale/errorsyscalib.py +134 -0
- pyvale/{core/errorsysdep.py → errorsysdep.py} +25 -29
- pyvale/{core/errorsysfield.py → errorsysfield.py} +59 -52
- pyvale/{core/errorsysindep.py → errorsysindep.py} +85 -182
- pyvale/examples/__init__.py +5 -7
- pyvale/examples/basics/ex1_1_basicscalars_therm2d.py +131 -0
- pyvale/examples/basics/ex1_2_sensormodel_therm2d.py +158 -0
- pyvale/examples/basics/ex1_3_customsens_therm3d.py +216 -0
- pyvale/examples/basics/ex1_4_basicerrors_therm3d.py +153 -0
- pyvale/examples/basics/ex1_5_fielderrs_therm3d.py +168 -0
- pyvale/examples/basics/ex1_6_caliberrs_therm2d.py +133 -0
- pyvale/examples/basics/ex1_7_spatavg_therm2d.py +123 -0
- pyvale/examples/basics/ex2_1_basicvectors_disp2d.py +112 -0
- pyvale/examples/basics/ex2_2_vectorsens_disp2d.py +111 -0
- pyvale/examples/basics/ex2_3_sensangle_disp2d.py +139 -0
- pyvale/examples/basics/ex2_4_chainfielderrs_disp2d.py +196 -0
- pyvale/examples/basics/ex2_5_vectorfields3d_disp3d.py +109 -0
- pyvale/examples/basics/ex3_1_basictensors_strain2d.py +114 -0
- pyvale/examples/basics/ex3_2_tensorsens2d_strain2d.py +111 -0
- pyvale/examples/basics/ex3_3_tensorsens3d_strain3d.py +182 -0
- pyvale/examples/basics/ex4_1_expsim2d_thermmech2d.py +171 -0
- pyvale/examples/basics/ex4_2_expsim3d_thermmech3d.py +252 -0
- pyvale/examples/{analyticdatagen → genanalyticdata}/ex1_1_scalarvisualisation.py +6 -9
- pyvale/examples/{analyticdatagen → genanalyticdata}/ex1_2_scalarcasebuild.py +8 -11
- pyvale/examples/{analyticdatagen → genanalyticdata}/ex2_1_analyticsensors.py +9 -12
- pyvale/examples/imagedef2d/ex_imagedef2d_todisk.py +8 -15
- pyvale/examples/renderblender/ex1_1_blenderscene.py +121 -0
- pyvale/examples/renderblender/ex1_2_blenderdeformed.py +119 -0
- pyvale/examples/renderblender/ex2_1_stereoscene.py +128 -0
- pyvale/examples/renderblender/ex2_2_stereodeformed.py +131 -0
- pyvale/examples/renderblender/ex3_1_blendercalibration.py +120 -0
- pyvale/examples/{rasterisation → renderrasterisation}/ex_rastenp.py +6 -7
- pyvale/examples/{rasterisation → renderrasterisation}/ex_rastercyth_oneframe.py +5 -7
- pyvale/examples/{rasterisation → renderrasterisation}/ex_rastercyth_static_cypara.py +6 -13
- pyvale/examples/{rasterisation → renderrasterisation}/ex_rastercyth_static_pypara.py +9 -12
- pyvale/examples/{ex1_4_thermal2d.py → visualisation/ex1_1_plot_traces.py} +33 -20
- pyvale/examples/{features/ex_animation_tools_3dmonoblock.py → visualisation/ex2_1_animate_sim.py} +37 -31
- pyvale/experimentsimulator.py +175 -0
- pyvale/{core/field.py → field.py} +6 -14
- pyvale/fieldconverter.py +351 -0
- pyvale/{core/fieldsampler.py → fieldsampler.py} +9 -10
- pyvale/{core/fieldscalar.py → fieldscalar.py} +17 -18
- pyvale/{core/fieldtensor.py → fieldtensor.py} +23 -26
- pyvale/{core/fieldtransform.py → fieldtransform.py} +9 -5
- pyvale/{core/fieldvector.py → fieldvector.py} +14 -16
- pyvale/{core/generatorsrandom.py → generatorsrandom.py} +29 -52
- pyvale/{core/imagedef2d.py → imagedef2d.py} +11 -8
- pyvale/{core/integratorfactory.py → integratorfactory.py} +12 -13
- pyvale/{core/integratorquadrature.py → integratorquadrature.py} +57 -32
- pyvale/integratorrectangle.py +165 -0
- pyvale/{core/integratorspatial.py → integratorspatial.py} +9 -10
- pyvale/{core/integratortype.py → integratortype.py} +7 -8
- pyvale/output.py +17 -0
- pyvale/pyvaleexceptions.py +11 -0
- pyvale/{core/raster.py → raster.py} +8 -8
- pyvale/{core/rastercy.py → rastercy.py} +11 -10
- pyvale/{core/rasternp.py → rasternp.py} +12 -13
- pyvale/{core/rendermesh.py → rendermesh.py} +10 -19
- pyvale/{core/sensorarray.py → sensorarray.py} +7 -8
- pyvale/{core/sensorarrayfactory.py → sensorarrayfactory.py} +64 -78
- pyvale/{core/sensorarraypoint.py → sensorarraypoint.py} +39 -41
- pyvale/{core/sensordata.py → sensordata.py} +7 -8
- pyvale/sensordescriptor.py +213 -0
- pyvale/{core/sensortools.py → sensortools.py} +8 -9
- pyvale/simcases/case00_HEX20.i +5 -5
- pyvale/simcases/case00_HEX27.i +5 -5
- pyvale/simcases/case00_HEX8.i +242 -0
- pyvale/simcases/case00_TET10.i +2 -2
- pyvale/simcases/case00_TET14.i +2 -2
- pyvale/simcases/case00_TET4.i +242 -0
- pyvale/simcases/run_1case.py +1 -1
- pyvale/simtools.py +67 -0
- pyvale/visualexpplotter.py +191 -0
- pyvale/{core/visualimagedef.py → visualimagedef.py} +13 -10
- pyvale/{core/visualimages.py → visualimages.py} +10 -9
- pyvale/visualopts.py +493 -0
- pyvale/{core/visualsimanimator.py → visualsimanimator.py} +47 -19
- pyvale/visualsimsensors.py +318 -0
- pyvale/visualtools.py +136 -0
- pyvale/visualtraceplotter.py +142 -0
- {pyvale-2025.4.0.dist-info → pyvale-2025.5.1.dist-info}/METADATA +17 -14
- pyvale-2025.5.1.dist-info/RECORD +172 -0
- {pyvale-2025.4.0.dist-info → pyvale-2025.5.1.dist-info}/WHEEL +1 -1
- pyvale/core/__init__.py +0 -7
- pyvale/core/analyticmeshgen.py +0 -59
- pyvale/core/analyticsimdatagenerator.py +0 -160
- pyvale/core/cython/rastercyth.c +0 -32267
- pyvale/core/experimentsimulator.py +0 -99
- pyvale/core/fieldconverter.py +0 -154
- pyvale/core/integratorrectangle.py +0 -88
- pyvale/core/optimcheckfuncs.py +0 -153
- pyvale/core/sensordescriptor.py +0 -101
- pyvale/core/visualexpplotter.py +0 -151
- pyvale/core/visualopts.py +0 -180
- pyvale/core/visualsimplotter.py +0 -182
- pyvale/core/visualtools.py +0 -81
- pyvale/core/visualtraceplotter.py +0 -256
- pyvale/examples/analyticdatagen/__init__.py +0 -7
- pyvale/examples/ex1_1_thermal2d.py +0 -89
- pyvale/examples/ex1_2_thermal2d.py +0 -111
- pyvale/examples/ex1_3_thermal2d.py +0 -113
- pyvale/examples/ex1_5_thermal2d.py +0 -105
- pyvale/examples/ex2_1_thermal3d .py +0 -87
- pyvale/examples/ex2_2_thermal3d.py +0 -51
- pyvale/examples/ex2_3_thermal3d.py +0 -109
- pyvale/examples/ex3_1_displacement2d.py +0 -47
- pyvale/examples/ex3_2_displacement2d.py +0 -79
- pyvale/examples/ex3_3_displacement2d.py +0 -104
- pyvale/examples/ex3_4_displacement2d.py +0 -105
- pyvale/examples/ex4_1_strain2d.py +0 -57
- pyvale/examples/ex4_2_strain2d.py +0 -79
- pyvale/examples/ex4_3_strain2d.py +0 -100
- pyvale/examples/ex5_1_multiphysics2d.py +0 -78
- pyvale/examples/ex6_1_multiphysics2d_expsim.py +0 -118
- pyvale/examples/ex6_2_multiphysics3d_expsim.py +0 -158
- pyvale/examples/features/__init__.py +0 -7
- pyvale/examples/features/ex_area_avg.py +0 -89
- pyvale/examples/features/ex_calibration_error.py +0 -108
- pyvale/examples/features/ex_chain_field_errs.py +0 -141
- pyvale/examples/features/ex_field_errs.py +0 -78
- pyvale/examples/features/ex_sensor_single_angle_batch.py +0 -110
- pyvale-2025.4.0.dist-info/RECORD +0 -157
- {pyvale-2025.4.0.dist-info → pyvale-2025.5.1.dist-info}/licenses/LICENSE +0 -0
- {pyvale-2025.4.0.dist-info → pyvale-2025.5.1.dist-info}/top_level.txt +0 -0
|
@@ -1,108 +0,0 @@
|
|
|
1
|
-
'''
|
|
2
|
-
================================================================================
|
|
3
|
-
DEV: calibration check
|
|
4
|
-
|
|
5
|
-
pyvale: the python validation engine
|
|
6
|
-
License: MIT
|
|
7
|
-
Copyright (C) 2025 The Computer Aided Validation Team
|
|
8
|
-
================================================================================
|
|
9
|
-
'''
|
|
10
|
-
import matplotlib.pyplot as plt
|
|
11
|
-
import numpy as np
|
|
12
|
-
import mooseherder as mh
|
|
13
|
-
import pyvale
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def assumed_calib(signal: np.ndarray) -> np.ndarray:
|
|
17
|
-
return 24.3*signal + 0.616
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
def truth_calib(signal: np.ndarray) -> np.ndarray:
|
|
21
|
-
return -0.01897 + 25.41881*signal - 0.42456*signal**2 + 0.04365*signal**3
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
def main() -> None:
|
|
25
|
-
"""pyvale example: sensor calibration error
|
|
26
|
-
Based on K-type thermocouple calibration
|
|
27
|
-
"""
|
|
28
|
-
n_divs = 10000
|
|
29
|
-
signal_calib_range = np.array((0,6))
|
|
30
|
-
v = np.linspace(signal_calib_range[0],signal_calib_range[1],n_divs)
|
|
31
|
-
|
|
32
|
-
temp_truth = -0.01897 + 25.41881*v - 0.42456*v**2 + 0.04365*v**3
|
|
33
|
-
temp_assumed = 24.3*v + 0.616
|
|
34
|
-
calib_error = temp_assumed - temp_truth
|
|
35
|
-
print()
|
|
36
|
-
print(80*"-")
|
|
37
|
-
print(f"Calibration error over signal:"+\
|
|
38
|
-
f" {signal_calib_range[0]} to {signal_calib_range[1]} mV")
|
|
39
|
-
print(calib_error)
|
|
40
|
-
print(f"Max calib error: {np.max(calib_error)}")
|
|
41
|
-
print(f"Min calib error: {np.min(calib_error)}")
|
|
42
|
-
print()
|
|
43
|
-
|
|
44
|
-
data_path = pyvale.DataSet.thermal_2d_path()
|
|
45
|
-
sim_data = mh.ExodusReader(data_path).read_all_sim_data()
|
|
46
|
-
# Scale to mm to make 3D visualisation scaling easier
|
|
47
|
-
sim_data.coords = sim_data.coords*1000.0
|
|
48
|
-
|
|
49
|
-
descriptor = pyvale.SensorDescriptorFactory.temperature_descriptor()
|
|
50
|
-
|
|
51
|
-
field_key = 'temperature'
|
|
52
|
-
t_field = pyvale.FieldScalar(sim_data,
|
|
53
|
-
field_key=field_key,
|
|
54
|
-
spat_dims=2)
|
|
55
|
-
|
|
56
|
-
n_sens = (4,1,1)
|
|
57
|
-
x_lims = (0.0,100.0)
|
|
58
|
-
y_lims = (0.0,50.0)
|
|
59
|
-
z_lims = (0.0,0.0)
|
|
60
|
-
sens_pos = pyvale.create_sensor_pos_array(n_sens,x_lims,y_lims,z_lims)
|
|
61
|
-
|
|
62
|
-
use_sim_time = False
|
|
63
|
-
if use_sim_time:
|
|
64
|
-
sample_times = None
|
|
65
|
-
else:
|
|
66
|
-
sample_times = np.linspace(0.0,np.max(sim_data.time),50)
|
|
67
|
-
|
|
68
|
-
sens_data = pyvale.SensorData(positions=sens_pos,
|
|
69
|
-
sample_times=sample_times)
|
|
70
|
-
|
|
71
|
-
tc_array = pyvale.SensorArrayPoint(sens_data,
|
|
72
|
-
t_field,
|
|
73
|
-
descriptor)
|
|
74
|
-
|
|
75
|
-
cal_err = pyvale.ErrSysCalibration(assumed_calib,
|
|
76
|
-
truth_calib,
|
|
77
|
-
signal_calib_range,
|
|
78
|
-
n_cal_divs=10000)
|
|
79
|
-
sys_err_int = pyvale.ErrIntegrator([cal_err],
|
|
80
|
-
sens_data,
|
|
81
|
-
tc_array.get_measurement_shape())
|
|
82
|
-
tc_array.set_error_integrator(sys_err_int)
|
|
83
|
-
|
|
84
|
-
measurements = tc_array.get_measurements()
|
|
85
|
-
|
|
86
|
-
print('\n'+80*'-')
|
|
87
|
-
print('For a sensor: measurement = truth + sysematic error + random error')
|
|
88
|
-
print(f'measurements.shape = {measurements.shape} = '+
|
|
89
|
-
'(n_sensors,n_field_components,n_timesteps)\n')
|
|
90
|
-
print("The truth, systematic error and random error arrays have the same "+
|
|
91
|
-
"shape.")
|
|
92
|
-
|
|
93
|
-
print(80*'-')
|
|
94
|
-
print('Looking at the last 5 time steps (measurements) of sensor 0:')
|
|
95
|
-
pyvale.print_measurements(tc_array,
|
|
96
|
-
(0,1),
|
|
97
|
-
(0,1),
|
|
98
|
-
(measurements.shape[2]-5,measurements.shape[2]))
|
|
99
|
-
print(80*'-')
|
|
100
|
-
|
|
101
|
-
pyvale.plot_time_traces(tc_array,field_key)
|
|
102
|
-
plt.show()
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
if __name__ == "__main__":
|
|
108
|
-
main()
|
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
================================================================================
|
|
3
|
-
example: displacement sensors on a 2d plate
|
|
4
|
-
|
|
5
|
-
pyvale: the python validation engine
|
|
6
|
-
License: MIT
|
|
7
|
-
Copyright (C) 2025 The Computer Aided Validation Team
|
|
8
|
-
================================================================================
|
|
9
|
-
"""
|
|
10
|
-
import numpy as np
|
|
11
|
-
import matplotlib.pyplot as plt
|
|
12
|
-
import mooseherder as mh
|
|
13
|
-
import pyvale
|
|
14
|
-
|
|
15
|
-
def main() -> None:
|
|
16
|
-
data_path = pyvale.DataSet.mechanical_2d_path()
|
|
17
|
-
sim_data = mh.ExodusReader(data_path).read_all_sim_data()
|
|
18
|
-
# Scale to mm to make 3D visualisation scaling easier
|
|
19
|
-
sim_data.coords = sim_data.coords*1000.0 # type: ignore
|
|
20
|
-
|
|
21
|
-
descriptor = pyvale.SensorDescriptorFactory.displacement_descriptor()
|
|
22
|
-
|
|
23
|
-
spat_dims = 2
|
|
24
|
-
field_key = "disp"
|
|
25
|
-
components = ("disp_x","disp_y")
|
|
26
|
-
disp_field = pyvale.FieldVector(sim_data,field_key,components,spat_dims)
|
|
27
|
-
|
|
28
|
-
n_sens = (2,3,1)
|
|
29
|
-
x_lims = (0.0,100.0)
|
|
30
|
-
y_lims = (0.0,150.0)
|
|
31
|
-
z_lims = (0.0,0.0)
|
|
32
|
-
sensor_positions = pyvale.create_sensor_pos_array(n_sens,x_lims,y_lims,z_lims)
|
|
33
|
-
|
|
34
|
-
use_sim_time = True
|
|
35
|
-
if use_sim_time:
|
|
36
|
-
sample_times = None
|
|
37
|
-
else:
|
|
38
|
-
sample_times = np.linspace(0.0,np.max(sim_data.time),50)
|
|
39
|
-
|
|
40
|
-
sensor_data = pyvale.SensorData(positions=sensor_positions,
|
|
41
|
-
sample_times=sample_times)
|
|
42
|
-
|
|
43
|
-
disp_sens_array = pyvale.SensorArrayPoint(sensor_data,
|
|
44
|
-
disp_field,
|
|
45
|
-
descriptor)
|
|
46
|
-
|
|
47
|
-
pos_offset = -1.0*np.ones_like(sensor_positions)
|
|
48
|
-
pos_offset[:,2] = 0 # in 2d we only have offset in x and y so zero z
|
|
49
|
-
pos_error_data = pyvale.ErrFieldData(pos_offset_xyz=pos_offset)
|
|
50
|
-
|
|
51
|
-
angle_offset = np.zeros_like(sensor_positions)
|
|
52
|
-
angle_offset[:,0] = 1.0 # only rotate about z in 2D
|
|
53
|
-
angle_error_data = pyvale.ErrFieldData(ang_offset_zyx=angle_offset)
|
|
54
|
-
|
|
55
|
-
time_offset = 2.0*np.ones_like(disp_sens_array.get_sample_times())
|
|
56
|
-
time_error_data = pyvale.ErrFieldData(time_offset=time_offset)
|
|
57
|
-
|
|
58
|
-
field_errs = []
|
|
59
|
-
field_errs.append(pyvale.ErrSysField(disp_field,
|
|
60
|
-
time_error_data))
|
|
61
|
-
field_errs.append(pyvale.ErrSysField(disp_field,
|
|
62
|
-
time_error_data))
|
|
63
|
-
|
|
64
|
-
field_errs.append(pyvale.ErrSysField(disp_field,
|
|
65
|
-
pos_error_data))
|
|
66
|
-
field_errs.append(pyvale.ErrSysField(disp_field,
|
|
67
|
-
pos_error_data))
|
|
68
|
-
|
|
69
|
-
field_errs.append(pyvale.ErrSysField(disp_field,
|
|
70
|
-
angle_error_data))
|
|
71
|
-
field_errs.append(pyvale.ErrSysField(disp_field,
|
|
72
|
-
angle_error_data))
|
|
73
|
-
|
|
74
|
-
err_int_opts = pyvale.ErrIntOpts(force_dependence=True,
|
|
75
|
-
store_all_errs=True)
|
|
76
|
-
error_int = pyvale.ErrIntegrator(field_errs,
|
|
77
|
-
sensor_data,
|
|
78
|
-
disp_sens_array.get_measurement_shape(),
|
|
79
|
-
err_int_opts)
|
|
80
|
-
disp_sens_array.set_error_integrator(error_int)
|
|
81
|
-
|
|
82
|
-
measurements = disp_sens_array.calc_measurements()
|
|
83
|
-
|
|
84
|
-
sens_data_by_chain = error_int.get_sens_data_by_chain()
|
|
85
|
-
if sens_data_by_chain is not None:
|
|
86
|
-
for ii,ss in enumerate(sens_data_by_chain):
|
|
87
|
-
print(80*"-")
|
|
88
|
-
if ss is not None:
|
|
89
|
-
print(f"SensorData @ [{ii}]")
|
|
90
|
-
print("TIME")
|
|
91
|
-
print(ss.sample_times)
|
|
92
|
-
print()
|
|
93
|
-
print("POSITIONS")
|
|
94
|
-
print(ss.positions)
|
|
95
|
-
print()
|
|
96
|
-
print("ANGLES")
|
|
97
|
-
for aa in ss.angles:
|
|
98
|
-
print(aa.as_euler("zyx",degrees=True))
|
|
99
|
-
print()
|
|
100
|
-
print(80*"-")
|
|
101
|
-
|
|
102
|
-
print()
|
|
103
|
-
print(80*"=")
|
|
104
|
-
sens_data_accumulated = error_int.get_sens_data_accumulated()
|
|
105
|
-
print("TIME")
|
|
106
|
-
print(sens_data_accumulated.sample_times)
|
|
107
|
-
print()
|
|
108
|
-
print("POSITIONS")
|
|
109
|
-
print(sens_data_accumulated.positions)
|
|
110
|
-
print()
|
|
111
|
-
print("ANGLES")
|
|
112
|
-
for aa in sens_data_accumulated.angles:
|
|
113
|
-
print(aa.as_euler("zyx",degrees=True))
|
|
114
|
-
print()
|
|
115
|
-
print(80*"=")
|
|
116
|
-
|
|
117
|
-
print(80*"-")
|
|
118
|
-
sens_num = 4
|
|
119
|
-
print("The last 5 time steps (measurements) of sensor {sens_num}:")
|
|
120
|
-
pyvale.print_measurements(disp_sens_array,
|
|
121
|
-
(sens_num-1,sens_num),
|
|
122
|
-
(0,1),
|
|
123
|
-
(measurements.shape[2]-5,measurements.shape[2]))
|
|
124
|
-
print(80*"-")
|
|
125
|
-
|
|
126
|
-
plot_field = "disp_x"
|
|
127
|
-
|
|
128
|
-
if plot_field == "disp_x":
|
|
129
|
-
pv_plot = pyvale.plot_point_sensors_on_sim(disp_sens_array,"disp_x")
|
|
130
|
-
pv_plot.show()
|
|
131
|
-
elif plot_field == "disp_y":
|
|
132
|
-
pv_plot = pyvale.plot_point_sensors_on_sim(disp_sens_array,"disp_y")
|
|
133
|
-
pv_plot.show()
|
|
134
|
-
|
|
135
|
-
pyvale.plot_time_traces(disp_sens_array,"disp_x")
|
|
136
|
-
pyvale.plot_time_traces(disp_sens_array,"disp_y")
|
|
137
|
-
plt.show()
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
if __name__ == "__main__":
|
|
141
|
-
main()
|
|
@@ -1,78 +0,0 @@
|
|
|
1
|
-
'''
|
|
2
|
-
================================================================================
|
|
3
|
-
Example: thermocouples on a 2d plate
|
|
4
|
-
|
|
5
|
-
pyvale: the python validation engine
|
|
6
|
-
License: MIT
|
|
7
|
-
Copyright (C) 2025 The Computer Aided Validation Team
|
|
8
|
-
================================================================================
|
|
9
|
-
'''
|
|
10
|
-
import numpy as np
|
|
11
|
-
import matplotlib.pyplot as plt
|
|
12
|
-
import mooseherder as mh
|
|
13
|
-
import pyvale
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def main() -> None:
|
|
17
|
-
"""pyvale example: point sensors on a 2D thermal simulation
|
|
18
|
-
----------------------------------------------------------------------------
|
|
19
|
-
"""
|
|
20
|
-
data_path = pyvale.DataSet.thermal_2d_path()
|
|
21
|
-
sim_data = mh.ExodusReader(data_path).read_all_sim_data()
|
|
22
|
-
field_key = list(sim_data.node_vars.keys())[0] # type: ignore
|
|
23
|
-
# Scale to mm to make 3D visualisation scaling easier
|
|
24
|
-
sim_data.coords = sim_data.coords*1000.0 # type: ignore
|
|
25
|
-
|
|
26
|
-
n_sens = (4,1,1)
|
|
27
|
-
x_lims = (0.0,100.0)
|
|
28
|
-
y_lims = (0.0,50.0)
|
|
29
|
-
z_lims = (0.0,0.0)
|
|
30
|
-
sens_pos = pyvale.create_sensor_pos_array(n_sens,x_lims,y_lims,z_lims)
|
|
31
|
-
|
|
32
|
-
sample_times = np.linspace(0.0,np.max(sim_data.time),50) # | None
|
|
33
|
-
|
|
34
|
-
sensor_data = pyvale.SensorData(positions=sens_pos,
|
|
35
|
-
sample_times=sample_times)
|
|
36
|
-
|
|
37
|
-
tc_array = pyvale.SensorArrayFactory \
|
|
38
|
-
.thermocouples_no_errs(sim_data,
|
|
39
|
-
sensor_data,
|
|
40
|
-
field_key,
|
|
41
|
-
spat_dims=2)
|
|
42
|
-
|
|
43
|
-
#---------------------------------------------------------------------------
|
|
44
|
-
# Standard independent systematic errors
|
|
45
|
-
pos_rand = pyvale.GeneratorNormal(std=1.0) # mm
|
|
46
|
-
pos_lock = np.full_like(sensor_data.positions,False,dtype=bool)
|
|
47
|
-
pos_lock[:,2] = True
|
|
48
|
-
field_err_data = pyvale.ErrFieldData(
|
|
49
|
-
pos_rand_xyz=(pos_rand,pos_rand,pos_rand),
|
|
50
|
-
pos_lock_xyz=pos_lock
|
|
51
|
-
)
|
|
52
|
-
|
|
53
|
-
err_chain = []
|
|
54
|
-
err_chain.append(pyvale.ErrSysField(tc_array.get_field(),
|
|
55
|
-
field_err_data))
|
|
56
|
-
err_int = pyvale.ErrIntegrator(err_chain,
|
|
57
|
-
sensor_data,
|
|
58
|
-
tc_array.get_measurement_shape())
|
|
59
|
-
tc_array.set_error_integrator(err_int)
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
#---------------------------------------------------------------------------
|
|
63
|
-
measurements = tc_array.calc_measurements()
|
|
64
|
-
print(80*'-')
|
|
65
|
-
sens_num = 4
|
|
66
|
-
print('The last 5 time steps (measurements) of sensor {sens_num}:')
|
|
67
|
-
pyvale.print_measurements(tc_array,
|
|
68
|
-
(sens_num-1,sens_num),
|
|
69
|
-
(0,1),
|
|
70
|
-
(measurements.shape[2]-5,measurements.shape[2]))
|
|
71
|
-
print(80*'-')
|
|
72
|
-
|
|
73
|
-
pyvale.plot_time_traces(tc_array,field_key)
|
|
74
|
-
plt.show()
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
if __name__ == '__main__':
|
|
78
|
-
main()
|
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
================================================================================
|
|
3
|
-
Example: displacement sensors on a 2d plate
|
|
4
|
-
|
|
5
|
-
pyvale: the python validation engine
|
|
6
|
-
License: MIT
|
|
7
|
-
Copyright (C) 2025 The Computer Aided Validation Team
|
|
8
|
-
================================================================================
|
|
9
|
-
"""
|
|
10
|
-
import numpy as np
|
|
11
|
-
import matplotlib.pyplot as plt
|
|
12
|
-
from scipy.spatial.transform import Rotation
|
|
13
|
-
import mooseherder as mh
|
|
14
|
-
import pyvale
|
|
15
|
-
|
|
16
|
-
def main() -> None:
|
|
17
|
-
"""pyvale example: single rotation batch processing
|
|
18
|
-
----------------------------------------------------------------------------
|
|
19
|
-
- Tests that when only one sensor rotation is provided that
|
|
20
|
-
all sensors are assumed to have the same rotation and batch processed.
|
|
21
|
-
"""
|
|
22
|
-
data_path = pyvale.DataSet.mechanical_2d_path()
|
|
23
|
-
sim_data = mh.ExodusReader(data_path).read_all_sim_data()
|
|
24
|
-
# Scale to mm to make 3D visualisation scaling easier
|
|
25
|
-
sim_data.coords = sim_data.coords*1000.0 # type: ignore
|
|
26
|
-
|
|
27
|
-
descriptor = pyvale.SensorDescriptorFactory.displacement_descriptor()
|
|
28
|
-
|
|
29
|
-
spat_dims = 2
|
|
30
|
-
field_key = "disp"
|
|
31
|
-
components = ("disp_x","disp_y")
|
|
32
|
-
disp_field = pyvale.FieldVector(sim_data,field_key,components,spat_dims)
|
|
33
|
-
|
|
34
|
-
#---------------------------------------------------------------------------
|
|
35
|
-
n_sens = (2,3,1)
|
|
36
|
-
x_lims = (0.0,100.0)
|
|
37
|
-
y_lims = (0.0,150.0)
|
|
38
|
-
z_lims = (0.0,0.0)
|
|
39
|
-
sensor_positions = pyvale.create_sensor_pos_array(n_sens,
|
|
40
|
-
x_lims,
|
|
41
|
-
y_lims,
|
|
42
|
-
z_lims)
|
|
43
|
-
|
|
44
|
-
use_sim_time = False
|
|
45
|
-
if use_sim_time:
|
|
46
|
-
sample_times = None
|
|
47
|
-
else:
|
|
48
|
-
sample_times = np.linspace(0.0,np.max(sim_data.time),50)
|
|
49
|
-
|
|
50
|
-
# Provide only a single rotation for the 6 sensors
|
|
51
|
-
sensor_angles = (Rotation.from_euler("zyx", [180, 0, 0], degrees=True),)
|
|
52
|
-
|
|
53
|
-
sensor_data_norot = pyvale.SensorData(positions=sensor_positions,
|
|
54
|
-
sample_times=sample_times)
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
sensor_data_rot = pyvale.SensorData(positions=sensor_positions,
|
|
58
|
-
sample_times=sample_times,
|
|
59
|
-
angles=sensor_angles)
|
|
60
|
-
|
|
61
|
-
#---------------------------------------------------------------------------
|
|
62
|
-
disp_sensors_norot = pyvale.SensorArrayPoint(sensor_data_norot,
|
|
63
|
-
disp_field,
|
|
64
|
-
descriptor)
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
disp_sensors_rot = pyvale.SensorArrayPoint(sensor_data_rot,
|
|
68
|
-
disp_field,
|
|
69
|
-
descriptor)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
measurements_norot = disp_sensors_norot.calc_measurements()
|
|
74
|
-
measurements_rot = disp_sensors_rot.calc_measurements()
|
|
75
|
-
|
|
76
|
-
#---------------------------------------------------------------------------
|
|
77
|
-
sens_to_print = 1
|
|
78
|
-
print(80*"-")
|
|
79
|
-
print(f"The last 5 time steps (measurements) of non-rotated sensor {sens_to_print}:")
|
|
80
|
-
pyvale.print_measurements(disp_sensors_norot,
|
|
81
|
-
(sens_to_print-1,sens_to_print),
|
|
82
|
-
(0,1),
|
|
83
|
-
(measurements_norot.shape[2]-5,measurements_norot.shape[2]))
|
|
84
|
-
print(80*"-")
|
|
85
|
-
print(f"The last 5 time steps (measurements) of rotated sensor {sens_to_print}:")
|
|
86
|
-
pyvale.print_measurements(disp_sensors_rot,
|
|
87
|
-
(sens_to_print-1,sens_to_print),
|
|
88
|
-
(0,1),
|
|
89
|
-
(measurements_rot.shape[2]-5,measurements_rot.shape[2]))
|
|
90
|
-
print(80*"-")
|
|
91
|
-
|
|
92
|
-
#---------------------------------------------------------------------------
|
|
93
|
-
plot_field = "disp_x"
|
|
94
|
-
|
|
95
|
-
if plot_field == "disp_x":
|
|
96
|
-
pv_plot = pyvale.plot_point_sensors_on_sim(disp_sensors_rot,"disp_x")
|
|
97
|
-
pv_plot.show(cpos="xy")
|
|
98
|
-
elif plot_field == "disp_y":
|
|
99
|
-
pv_plot = pyvale.plot_point_sensors_on_sim(disp_sensors_rot,"disp_y")
|
|
100
|
-
pv_plot.show(cpos="xy")
|
|
101
|
-
|
|
102
|
-
(fig,ax) = pyvale.plot_time_traces(disp_sensors_norot,plot_field)
|
|
103
|
-
ax.set_title("No rotation")
|
|
104
|
-
(fig,ax) = pyvale.plot_time_traces(disp_sensors_rot,plot_field)
|
|
105
|
-
ax.set_title("Rotated")
|
|
106
|
-
plt.show()
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
if __name__ == "__main__":
|
|
110
|
-
main()
|
pyvale-2025.4.0.dist-info/RECORD
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
pyvale/__init__.py,sha256=PqkK7XYVq-fU1Ru6qCM7TsvhU9clsFUpOBJn-VrNO58,2647
|
|
2
|
-
pyvale/core/__init__.py,sha256=s5K8rchT4t5ZDL-Oanu_1tZNGJeDhG401_lVVdt_zz4,273
|
|
3
|
-
pyvale/core/analyticmeshgen.py,sha256=aPtZoxsqtC1eWRnIVJ_jGPLoo0T8PhiB7LstxA2HMpM,1865
|
|
4
|
-
pyvale/core/analyticsimdatafactory.py,sha256=nild0oc9-JQkqhAJvR9q1JE2RVGiI-s0XdeBr8c4yUs,1953
|
|
5
|
-
pyvale/core/analyticsimdatagenerator.py,sha256=40UW3lV60WP5iXDQQ0gnxXQ18XnBO8gTrR3h6NXX1Q4,6036
|
|
6
|
-
pyvale/core/camera.py,sha256=RAKalMlanzHM7Q4kKKIhqKVOVzKMUaexhPhI4WF6Q70,5362
|
|
7
|
-
pyvale/core/cameradata.py,sha256=rbS8BJ-4F5T51o9D3YxFa2cWiXxq7nK4SpKwueEjKu4,2036
|
|
8
|
-
pyvale/core/cameradata2d.py,sha256=Xy9pVQ71y3oHfyMa-w7vU4fnryLCdsSFPdc5FJZK2aI,2678
|
|
9
|
-
pyvale/core/cameratools.py,sha256=Vf9-3kXsvd_TK-imzp0iXcc6ClkozeZ3Y89wOUmP_II,13482
|
|
10
|
-
pyvale/core/dataset.py,sha256=GMuAKbvBGHdGwq0GEdPsO9hdu2e8f4Z4gpb1wGEbvkw,9681
|
|
11
|
-
pyvale/core/errorcalculator.py,sha256=My1a_-oThNPYxFa3sT188GT1I7dExKhrD6AnWz4S2IU,3497
|
|
12
|
-
pyvale/core/errordriftcalc.py,sha256=aW8-wRfohIWZt-rklXpeLMuZrqbWQgut7vYoHi-O_ig,4474
|
|
13
|
-
pyvale/core/errorintegrator.py,sha256=JOkDE-vGm0Ibz_Tbxj-l6Oqp6_kCYNDuAnvc80rL7B8,14103
|
|
14
|
-
pyvale/core/errorrand.py,sha256=rVmnB9zLhtpvh9v4DEFYvFujycRWWHAgmhEl2r0czeM,22667
|
|
15
|
-
pyvale/core/errorsysdep.py,sha256=9gRjaxAJGIcqvGKrYlUleu9tzAviguTLND8GcNH6DvY,11816
|
|
16
|
-
pyvale/core/errorsysfield.py,sha256=oLG2XxqitrrRUgf70IS5Jau0fmAtekJsL9bkdd_glAA,16799
|
|
17
|
-
pyvale/core/errorsysindep.py,sha256=Ci5clfG-FpE6UZzvDZYAeAynn9V9luLQB19XJkc7xvA,33988
|
|
18
|
-
pyvale/core/experimentsimulator.py,sha256=TNawo8YEQ-4u8JeD3o2HNfzrEW9hafcdFcLbQubG7_s,3579
|
|
19
|
-
pyvale/core/field.py,sha256=WPAyA2SRyGsjvaTGUDYR4w8ia3_tNveb1-AV-xucVSA,4624
|
|
20
|
-
pyvale/core/fieldconverter.py,sha256=4WucIzpvlHYCN53mkIQP9zTgHvlBBuknNTN9aYqpbjM,5517
|
|
21
|
-
pyvale/core/fieldsampler.py,sha256=6uRTitrkM0y2PpfwjIbwuSdVdo7QfEFrw8O06GOH8pI,4459
|
|
22
|
-
pyvale/core/fieldscalar.py,sha256=J50DFLbTrj6L4QTOwuxHRfxsQAac2nTphY6uRhJ4Xvc,5970
|
|
23
|
-
pyvale/core/fieldtensor.py,sha256=coIPVI1zjm-mCdrriD-kg8UmQqj9-3bdcDrnFM5sz-8,8276
|
|
24
|
-
pyvale/core/fieldtransform.py,sha256=VGwY2Oox879iK47xI20iEuaAAQMvtSD9LwpLcZACjlI,17863
|
|
25
|
-
pyvale/core/fieldvector.py,sha256=p5NQsZElpAYUuabSXGj0N-4cBjBBQn8d2bwwU5Z9Aek,7988
|
|
26
|
-
pyvale/core/generatorsrandom.py,sha256=IUu4kSAtIsiUAzQPVflU0IBeJjyWdWPJ7pKz8t2WUGs,18393
|
|
27
|
-
pyvale/core/imagedef2d.py,sha256=NG46-NT1vCo_c-LuwVjSlRF0hUYr6da5jp56bjed-Ro,25073
|
|
28
|
-
pyvale/core/integratorfactory.py,sha256=-FmP9Pk5GclHXjXEsosILUferNPnnT6tGX2AaFHrGb8,9651
|
|
29
|
-
pyvale/core/integratorquadrature.py,sha256=5Znz33T4JkgZNxwPz-fdsZ-JDLknmkLl5sux4SJq7lY,6709
|
|
30
|
-
pyvale/core/integratorrectangle.py,sha256=PNWqU9SNXayltpPrfn4249Aqb0DJv8uz6IoDneQl78s,2951
|
|
31
|
-
pyvale/core/integratorspatial.py,sha256=tinYZv5EjrzixXiRJQ_xqXKWfwOUtb7DPAFbpbrL2qQ,3225
|
|
32
|
-
pyvale/core/integratortype.py,sha256=hoEt8UPbuJeiBxcGdwo3N9rHIYFF4tX2rIj6jcJXzhI,1305
|
|
33
|
-
pyvale/core/optimcheckfuncs.py,sha256=Xw0QbZPnc_5tIlb1j5ePIfyA5n1FZ-rm4S-dYFsnnYM,4196
|
|
34
|
-
pyvale/core/raster.py,sha256=4gY6DautLivikSyDgGfgaMcYhp3OQRljoGQKjorodgA,784
|
|
35
|
-
pyvale/core/rastercy.py,sha256=jfh8OuFlrnNzKL2-eDxgcDAq_DrFjbVoWOM8-QVM1KU,2891
|
|
36
|
-
pyvale/core/rasternp.py,sha256=oWtU8kUTVragGdrDoVYrNpbO3-ONE6iI_f0smdl_iP8,26010
|
|
37
|
-
pyvale/core/rendermesh.py,sha256=RkYuygr9VIa3I_-fHGp26Exup9VbDbRfcK0ObL6VwkQ,5601
|
|
38
|
-
pyvale/core/sensorarray.py,sha256=mwWrmMb07eX1eKR_XGP-uK1adyP3Jy65moAHMg9zE8A,7025
|
|
39
|
-
pyvale/core/sensorarrayfactory.py,sha256=6GYIJR1s0YnEjD2YSTnPKVG-TQIU8_ojUSctcMq8cUk,8353
|
|
40
|
-
pyvale/core/sensorarraypoint.py,sha256=oybgwykzuzStH62zmy19P9TFKGMMFiyfS0SoR2i4wu4,11263
|
|
41
|
-
pyvale/core/sensordata.py,sha256=dAI7IGINGHKbOGw60eqOpQWH7rJaMjzXIG9Ft1O19FE,2770
|
|
42
|
-
pyvale/core/sensordescriptor.py,sha256=g6TJgteMZGDb_ruDnAoYOLrh0uAHpUeklEu-gfaaxFY,2960
|
|
43
|
-
pyvale/core/sensortools.py,sha256=aLnWZUbat0SJVz2beDuoLlKNlHfL9mdCRR4ffHFAO9g,5737
|
|
44
|
-
pyvale/core/visualexpplotter.py,sha256=1_b4f4feXrbmvAi3x_oV74bJfapktT1-oHKQIMq2X8w,6029
|
|
45
|
-
pyvale/core/visualimagedef.py,sha256=21usk59QjrAgGc4rM6K-qqPYlIoFhdfLu3trL1O0EL8,2732
|
|
46
|
-
pyvale/core/visualimages.py,sha256=krA5tGlqgXn_88cFgA2xgONVtzlNXHZzg9TKwdHlc_8,2854
|
|
47
|
-
pyvale/core/visualopts.py,sha256=9utGwztzwRy_XDzqW-Fgr9KruDtfWT4gI5JU020OX_o,4730
|
|
48
|
-
pyvale/core/visualsimanimator.py,sha256=LLO1HcdrNbbyH4cjXJYIiBKtPo17q1Dfpyeeq-tZi_0,3225
|
|
49
|
-
pyvale/core/visualsimplotter.py,sha256=PthkhhvRCVRvFuMAHXjoNfVDGU-wZ7A1DyWMp-bOIAM,6829
|
|
50
|
-
pyvale/core/visualtools.py,sha256=uuE8U0W39Iwb0ImBZWu5JsnQ0Vr9U45HQMa3-Iy1Wjw,2983
|
|
51
|
-
pyvale/core/visualtraceplotter.py,sha256=ldN8qLvAcyGikaxIZPe2-L4LgO-HETgCQSqDUx03H6E,10511
|
|
52
|
-
pyvale/core/cython/rastercyth.c,sha256=Enq3RciGDUqfPubatA08eTcdTY-MUMXNT4ZgpBp8zd8,1225306
|
|
53
|
-
pyvale/core/cython/rastercyth.py,sha256=BXIDdta-ofIPiYB1Dt9i3BSa0B0vcuqwNxIJuon5geI,24377
|
|
54
|
-
pyvale/data/__init__.py,sha256=s5K8rchT4t5ZDL-Oanu_1tZNGJeDhG401_lVVdt_zz4,273
|
|
55
|
-
pyvale/data/case13_out.e,sha256=cqgs7TbyDtrlV4AxXUzULa0Qu50gbp_3VeQkehNT82g,150820
|
|
56
|
-
pyvale/data/case16_out.e,sha256=hmkiJQo4phaAPiEa9mgjggcUMn_yY2h348DSqMIj0pA,11614464
|
|
57
|
-
pyvale/data/case17_out.e,sha256=C5Zx0Xx8_iZqypPFbcutGPQtO5VNQaJmqg9YxWi0FHc,6095004
|
|
58
|
-
pyvale/data/case18_1_out.e,sha256=4ITunHIxCBCekUPipSv8j7IKDlhlwTaHe1e3wTN4qLE,1470776
|
|
59
|
-
pyvale/data/case18_2_out.e,sha256=Uz8U1TMBSe1YkRE4nRFMQ38Y11UQo9wb1cIbTRPua1Y,1470776
|
|
60
|
-
pyvale/data/case18_3_out.e,sha256=8dTnKLQOSCL-gle-1shL68GBQPW1go05aDvjO6AawAg,1470776
|
|
61
|
-
pyvale/data/case25_out.e,sha256=LWnCKG7GDUvzCs7GI1h25dhIhq6_qJgXnkhiTmdynPw,93748
|
|
62
|
-
pyvale/data/case26_out.e,sha256=UAoxPN0K1bbk9R0r2hDehuQZVCPHcAV5NA1PckRyXDY,225744
|
|
63
|
-
pyvale/data/optspeckle_2464x2056px_spec5px_8bit_gblur1px.tiff,sha256=cRmbiTzxc8QJ_aO9dc7YT21lV1c9K7pH-L9uQZvUQ8M,5046422
|
|
64
|
-
pyvale/examples/__init__.py,sha256=s5K8rchT4t5ZDL-Oanu_1tZNGJeDhG401_lVVdt_zz4,273
|
|
65
|
-
pyvale/examples/ex1_1_thermal2d.py,sha256=AmlYnr5_IcGK8J--R3LcLlrj6p9JW7SR_WtC5ks-iVo,3407
|
|
66
|
-
pyvale/examples/ex1_2_thermal2d.py,sha256=8FmN_XpowxtKqX6sZJnRvSdMETaft9yp-t1oHLRbmtQ,3932
|
|
67
|
-
pyvale/examples/ex1_3_thermal2d.py,sha256=f6sS821VrIv8ORDXjl8xVH8wP7mvcRWPtNy4wAgWVpo,4058
|
|
68
|
-
pyvale/examples/ex1_4_thermal2d.py,sha256=8JnBKAKqOJcdg2SHd2U8dES2087CiFamE_oZaI0ifi8,3085
|
|
69
|
-
pyvale/examples/ex1_5_thermal2d.py,sha256=HeSABfbtPLfQQ0ywicJdN5nzJqpVh98mmQrBpIjt0NM,3964
|
|
70
|
-
pyvale/examples/ex2_1_thermal3d .py,sha256=pYXoYtVYUwu650YWx1z-U8tquVrbU7J-2Ev35nQD2gc,3299
|
|
71
|
-
pyvale/examples/ex2_2_thermal3d.py,sha256=1oH4xmFo-6hpBka0wCzVzr1x7G2XgYRbn_ndhMnAgEY,1674
|
|
72
|
-
pyvale/examples/ex2_3_thermal3d.py,sha256=CKPTyLHhWzqvUsTNNshTnN6AL7I1_ZUSdkmsWOuOTu4,3560
|
|
73
|
-
pyvale/examples/ex3_1_displacement2d.py,sha256=0utwxMuVqLFXd6-k9bWRa7PXfR5YJq-A_F7dPtNS5nE,1619
|
|
74
|
-
pyvale/examples/ex3_2_displacement2d.py,sha256=Qwf9S95pFtl8pHff3LGovzYmM6o-eMBCAzcCEzDBw9g,2636
|
|
75
|
-
pyvale/examples/ex3_3_displacement2d.py,sha256=3sAPV-ycdssqFLs6q__op0RWqHK9gB83SZOpYH4vclU,3649
|
|
76
|
-
pyvale/examples/ex3_4_displacement2d.py,sha256=H99FecuNCFgLaeYDD_CZdO5DlfHQ9xq2vS50jih6VBg,3991
|
|
77
|
-
pyvale/examples/ex4_1_strain2d.py,sha256=444MYF3J6dDIbLT5RGNAWnGI_2QP7hZoe6ScVrOIkco,1932
|
|
78
|
-
pyvale/examples/ex4_2_strain2d.py,sha256=mGoFLAIiimaQHSh7xWnup9urz1aS6IqxzOUo-BUrrZs,2734
|
|
79
|
-
pyvale/examples/ex4_3_strain2d.py,sha256=G4Nw6PjpPOfbgZvWgQV4xg_wJvSwGUj7TUyCE5lXuKs,3518
|
|
80
|
-
pyvale/examples/ex5_1_multiphysics2d.py,sha256=UbRDLwvJbpMmq2VdiHuG9jZdvdqMtM3X_Af0dGJhkps,2837
|
|
81
|
-
pyvale/examples/ex6_1_multiphysics2d_expsim.py,sha256=NSH-U4l_3DQMtEHBPTYa37QiRFFsiC3zO7hCZk17-DU,4336
|
|
82
|
-
pyvale/examples/ex6_2_multiphysics3d_expsim.py,sha256=Dem29f6j7uRFQfdn4TYK_t7ALoY9v20yI9tjwAnXIBI,5916
|
|
83
|
-
pyvale/examples/analyticdatagen/__init__.py,sha256=s5K8rchT4t5ZDL-Oanu_1tZNGJeDhG401_lVVdt_zz4,273
|
|
84
|
-
pyvale/examples/analyticdatagen/ex1_1_scalarvisualisation.py,sha256=X8OaNz1bYSiFVj7AZP1u8w7r0T0yTST8C5gHpzf1nE4,973
|
|
85
|
-
pyvale/examples/analyticdatagen/ex1_2_scalarcasebuild.py,sha256=iXY9wqoBUCaDwkLH1zMahxefsvX3TBbPjSrPGYUiuGQ,1317
|
|
86
|
-
pyvale/examples/analyticdatagen/ex2_1_analyticsensors.py,sha256=ln5U4g7XP-oLvtoAhAH_ombM01czEiPeG6pmzGVpyTc,2889
|
|
87
|
-
pyvale/examples/features/__init__.py,sha256=s5K8rchT4t5ZDL-Oanu_1tZNGJeDhG401_lVVdt_zz4,273
|
|
88
|
-
pyvale/examples/features/ex_animation_tools_3dmonoblock.py,sha256=4gNCiX831iankXOZrf_uji4iciRryhiFcaBUUSArvGc,2940
|
|
89
|
-
pyvale/examples/features/ex_area_avg.py,sha256=rNuwLwQwEikZ9Hz8i2AQPqsN8EY8mOTi73f8LDEgCf8,3110
|
|
90
|
-
pyvale/examples/features/ex_calibration_error.py,sha256=CoB2HulJ68XH7K1p6sQSCjKzRsjlUspcu2ELijvB3f8,3566
|
|
91
|
-
pyvale/examples/features/ex_chain_field_errs.py,sha256=BfkwFm9u8iZQfqtmvdZB7qMZzSTexvsKOkxkDREhf1M,4993
|
|
92
|
-
pyvale/examples/features/ex_field_errs.py,sha256=80w8GOpMS_NXay9XinNCx5XsPqwzPVzFWZJRZXm2Iq4,2762
|
|
93
|
-
pyvale/examples/features/ex_sensor_single_angle_batch.py,sha256=oiLKI46PBpluJXRBC9TUaEm709Wknqv-o0To1tY--tc,4295
|
|
94
|
-
pyvale/examples/imagedef2d/ex_imagedef2d_todisk.py,sha256=zA5EE_hq1ZeZijV6mpppqp14tH1VCjgo6m1MHVH2k2k,3039
|
|
95
|
-
pyvale/examples/rasterisation/ex_rastenp.py,sha256=AZnFx7g0m6LJqSLsPgoMzHdHvS-jH2AEsj33_GHG8Bk,4849
|
|
96
|
-
pyvale/examples/rasterisation/ex_rastercyth_oneframe.py,sha256=RXfHecn-4qIEszJ2x8F33LRQuUTgE_P-MY6G4DE_UJE,7439
|
|
97
|
-
pyvale/examples/rasterisation/ex_rastercyth_static_cypara.py,sha256=M8RqQLo0dBlqCvLny3G3Ir3tPVVBacpwYt_YSwsVrGQ,6953
|
|
98
|
-
pyvale/examples/rasterisation/ex_rastercyth_static_pypara.py,sha256=fBNJi6b8EFDah5dOr3eSUA-4hblFJJ13Dy5p68AVW3I,6931
|
|
99
|
-
pyvale/simcases/case00_HEX20.i,sha256=nxYk6_N2t3Xyfsi0tXDuqBuaN55ySlytCVswzunTi1M,5209
|
|
100
|
-
pyvale/simcases/case00_HEX27.i,sha256=11XkgwGB8fmYiw8bJMrRTkoeq-5qZXER91o62DT__bs,5209
|
|
101
|
-
pyvale/simcases/case00_TET10.i,sha256=sDCznjavre3lw08vaL_fFHdO8Qk_Ohp7pHR4zy2RhME,5209
|
|
102
|
-
pyvale/simcases/case00_TET14.i,sha256=U4QJY2IxRmJ5OC2gayN0VtKiHeWH0ySwSVLKbTte4t4,5209
|
|
103
|
-
pyvale/simcases/case01.i,sha256=R6t_uui6DywA1m5HLt4EsdkGDzobpGrfxBrfIY-5YiI,2184
|
|
104
|
-
pyvale/simcases/case02.i,sha256=gOPdUDVDnMUgqevcRO7vT5HnXTY64a7rmugSgkUqQ0s,3406
|
|
105
|
-
pyvale/simcases/case03.i,sha256=6LkfehTSTXuJ390mdn6tYp2Tkgo15KVpGmFmBrHo-AA,2848
|
|
106
|
-
pyvale/simcases/case04.i,sha256=Ao5z2qey2eJrqW1TmCm6LZRDeTwPTOFtMNPocH4zQO4,3757
|
|
107
|
-
pyvale/simcases/case05.i,sha256=VO2D38xsUrZmEMuEJF6JzjF_InpGAdrf9y_5FhvvvDw,5959
|
|
108
|
-
pyvale/simcases/case06.i,sha256=DLMHzOp3Kgu4EIXSg58Ltz4NRVTPC-dZbJp-g-vY3Uo,7298
|
|
109
|
-
pyvale/simcases/case07.geo,sha256=DxJjqex1zlQewGEcr_JiwbHSDczhOi-34ogvwAFfx_Q,4442
|
|
110
|
-
pyvale/simcases/case07.i,sha256=73YrdZUAGCddorbBBxY-oK0tLOw12lISYR5xzzi3ddc,1921
|
|
111
|
-
pyvale/simcases/case08.geo,sha256=d9QEIzMRRXynWOAHx07i8RxTA-uvKNVvpMAEBVZamKs,4795
|
|
112
|
-
pyvale/simcases/case08.i,sha256=G4MqwcZWAaKcXD3toDNtaghbJ3rxiZHWvL-zT6n021Y,3253
|
|
113
|
-
pyvale/simcases/case09.geo,sha256=zW9w_MQlfdbzXat7XfttiAP5HKIo6aCnUBWyGd8SlQQ,6858
|
|
114
|
-
pyvale/simcases/case09.i,sha256=3tZCH7MtvjE4GPLO-Tsigm8kmvc_Ma8H9kZ2e5wb3uQ,1924
|
|
115
|
-
pyvale/simcases/case10.geo,sha256=y4RRENzZyfzUey-wNK3dr448_j7ta70EgxReoaKP2vY,6839
|
|
116
|
-
pyvale/simcases/case10.i,sha256=5X7xsgqiXAZDx-q5erxiWg1XOdGlmfD9UZ7i4Lqg-nk,6377
|
|
117
|
-
pyvale/simcases/case11.geo,sha256=HDEMxIpANKUrDEgBfokxDohEoVpWMcfAcKJ1Rr8RW8c,10429
|
|
118
|
-
pyvale/simcases/case11.i,sha256=f34kuvrDNKjqjiyV0BmCeH3ZDDJFUTtkKmorK4YbAhc,3093
|
|
119
|
-
pyvale/simcases/case12.geo,sha256=FQ-Ck1LBsqnV4HDdLbIP1U2cRot7dRBTIlQ1n6GnxgE,12477
|
|
120
|
-
pyvale/simcases/case12.i,sha256=N-lJnOenl_PQhhatkjMLhUGNNGKLV0QPjLiWU0QfXGo,7932
|
|
121
|
-
pyvale/simcases/case13.i,sha256=q1KLk_S9AC15-ZNV_PydIp2QZsf_EUE1sth6a3t8cG8,3308
|
|
122
|
-
pyvale/simcases/case14.i,sha256=-Yq-ecGcs153-t-fHNM4kWBR3d4_joxmM7WAnm4O57w,3502
|
|
123
|
-
pyvale/simcases/case15.geo,sha256=Sgat1JQJeBCaSlGEEJ1o_WSZMpLpDkbhIrTaUKDiRX4,10429
|
|
124
|
-
pyvale/simcases/case15.i,sha256=88TAhiFxU9jGKnxJu8Ne4pWnbh9pHKkzSs0e0IjfUDM,3187
|
|
125
|
-
pyvale/simcases/case16.geo,sha256=SHB_GMofxN6WYq8JZ1Ktm8B8F_0L7K5hu4-DHtm3CX4,12554
|
|
126
|
-
pyvale/simcases/case16.i,sha256=TJDlkIcdQz2JypfVDobYXg6N86rk03w-AUlIdWV1l7s,8758
|
|
127
|
-
pyvale/simcases/case17.geo,sha256=lBMnrWGnYYivRqOIg5hfExRVr_jRjs1Zd9-f_ugitwA,4442
|
|
128
|
-
pyvale/simcases/case17.i,sha256=G0o57umdzOkzWoroREpV1IH6DA8QM2zAhdemul6-Y7w,3056
|
|
129
|
-
pyvale/simcases/case18.i,sha256=W3Hu6wwWCwOzxwZFmEB2tMlQ1VeCrs-r8erdbFWrqd0,6292
|
|
130
|
-
pyvale/simcases/case18_1.i,sha256=W3Hu6wwWCwOzxwZFmEB2tMlQ1VeCrs-r8erdbFWrqd0,6292
|
|
131
|
-
pyvale/simcases/case18_2.i,sha256=9Y2F3FCrLUJ78cP95CUKvsdCWGkWQLZbcqQ_WbeWPVs,6292
|
|
132
|
-
pyvale/simcases/case18_3.i,sha256=0K1IDUiK1WSjWJOpJi7hvUqJApFD4Z0m9JkCkivAevM,6292
|
|
133
|
-
pyvale/simcases/case19.geo,sha256=nT1Hch8Llv96z3QAPYqzpzIlaV01xXf1sozuA-m0-7I,9102
|
|
134
|
-
pyvale/simcases/case19.i,sha256=jRDSAWaC-bTxCeFgSyj1gapbo6iqteySuPR5QhPLKqo,2191
|
|
135
|
-
pyvale/simcases/case20.geo,sha256=TKBX8JKDwXKyXfXCi6fmOzDV_7_1Kpfpne9yeute11o,9102
|
|
136
|
-
pyvale/simcases/case20.i,sha256=wAQGXJbY_VniZPG-PzeL5-Sk6_ZUiwuf8zRV3c8nEz0,6655
|
|
137
|
-
pyvale/simcases/case21.geo,sha256=AzFNKkQp7-a9PojtR4y0GNI6g12BLvTRvkHDglYPRFQ,2387
|
|
138
|
-
pyvale/simcases/case21.i,sha256=QjKU97PMsswLkaGkutC7gdJhGY8lRq5VEf5b-gRhT4E,3417
|
|
139
|
-
pyvale/simcases/case22.geo,sha256=3OHJhFTm9P_G6vIB9fqgcpeT1DQt5xq5tWxOsRhvj2A,2491
|
|
140
|
-
pyvale/simcases/case22.i,sha256=b3IeO0hs4IU0PJlS_MIkF1gtPkKYQXklfNs5rhy9KNc,3189
|
|
141
|
-
pyvale/simcases/case23.geo,sha256=53NyuNJrPBgUWRHhgz0zS2fCZ8lavn_flpnfLUO2GNY,5448
|
|
142
|
-
pyvale/simcases/case23.i,sha256=0sRJTmiieHxb4YBnYH5foJGteQZfn5Fo0Z3TkDuLSoQ,3188
|
|
143
|
-
pyvale/simcases/case24.geo,sha256=3qiwipPbwaOjmPySISOZycYKdXCSDFrQpccnXHWhiU0,2408
|
|
144
|
-
pyvale/simcases/case24.i,sha256=6scn1ujqyQ2FUHm30NNZPwTzXD9w7AEDkzbrncah-xQ,2950
|
|
145
|
-
pyvale/simcases/case25.geo,sha256=k33GLvsApxTbxDbnOGueA3rTIazqcgYQ5DP37kCAPA4,2492
|
|
146
|
-
pyvale/simcases/case25.i,sha256=8lArbbZOCJ4aLuJCaEO5FW1kzJI4JquOmbA-nVpNRRI,2994
|
|
147
|
-
pyvale/simcases/case26.geo,sha256=7Qj0siF2FqgElxcmtX_7UDp4tdX6scnJgKffpP6iRQY,5468
|
|
148
|
-
pyvale/simcases/case26.i,sha256=V-pS7MeAo9vl3QUDtu-i6MQyeftryxSj0r8n7t6hY0k,2992
|
|
149
|
-
pyvale/simcases/run_1case.py,sha256=sueVRRLxBgND0HgnJeWh97BY2aJ65I8U-IM0ve6VHMA,1922
|
|
150
|
-
pyvale/simcases/run_all_cases.py,sha256=9b3JYcxC8PA2CR-htum7wCICwwnLNeC01xAhk0m6yxw,1903
|
|
151
|
-
pyvale/simcases/run_build_case.py,sha256=IlyZC_VU095ayi7nz57xSSboTeJB54y7nsQXpBTUXFM,1938
|
|
152
|
-
pyvale/simcases/run_example_cases.py,sha256=l5KOQvPMNRUkJMotaReG2nmrFtVBNWCwKVezNyRwKb0,1910
|
|
153
|
-
pyvale-2025.4.0.dist-info/licenses/LICENSE,sha256=h2qWsRIazuLLhALyUsCP6aE0DFcswL9SSSt9sgMzZi4,1099
|
|
154
|
-
pyvale-2025.4.0.dist-info/METADATA,sha256=X7fD1kYbYuXFMD-n_f_UM4l1GLuGPLSC5sxt-RcUcP0,6923
|
|
155
|
-
pyvale-2025.4.0.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
|
|
156
|
-
pyvale-2025.4.0.dist-info/top_level.txt,sha256=u1d_f4iZ3b3_96Rb_zrs9hyrpC4yE5e1Lg6Ey_Wgr0c,7
|
|
157
|
-
pyvale-2025.4.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|