pyvale 2025.5.3__cp311-cp311-win_amd64.whl → 2025.7.0__cp311-cp311-win_amd64.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 +12 -0
- pyvale/blendercalibrationdata.py +3 -1
- pyvale/blenderscene.py +7 -5
- pyvale/blendertools.py +27 -5
- pyvale/camera.py +1 -0
- pyvale/cameradata.py +3 -0
- pyvale/camerasensor.py +147 -0
- pyvale/camerastereo.py +4 -4
- pyvale/cameratools.py +23 -61
- pyvale/cython/rastercyth.c +1657 -1352
- pyvale/cython/rastercyth.cp311-win_amd64.pyd +0 -0
- pyvale/cython/rastercyth.py +71 -26
- pyvale/data/plate_hole_def0000.tiff +0 -0
- pyvale/data/plate_hole_def0001.tiff +0 -0
- pyvale/data/plate_hole_ref0000.tiff +0 -0
- pyvale/data/plate_rigid_def0000.tiff +0 -0
- pyvale/data/plate_rigid_def0001.tiff +0 -0
- pyvale/data/plate_rigid_ref0000.tiff +0 -0
- pyvale/dataset.py +96 -6
- pyvale/dic/cpp/dicbruteforce.cpp +370 -0
- pyvale/dic/cpp/dicfourier.cpp +648 -0
- pyvale/dic/cpp/dicinterpolator.cpp +559 -0
- pyvale/dic/cpp/dicmain.cpp +215 -0
- pyvale/dic/cpp/dicoptimizer.cpp +675 -0
- pyvale/dic/cpp/dicrg.cpp +137 -0
- pyvale/dic/cpp/dicscanmethod.cpp +677 -0
- pyvale/dic/cpp/dicsmooth.cpp +138 -0
- pyvale/dic/cpp/dicstrain.cpp +383 -0
- pyvale/dic/cpp/dicutil.cpp +563 -0
- pyvale/dic2d.py +164 -0
- pyvale/dic2dcpp.cp311-win_amd64.pyd +0 -0
- pyvale/dicchecks.py +476 -0
- pyvale/dicdataimport.py +247 -0
- pyvale/dicregionofinterest.py +887 -0
- pyvale/dicresults.py +55 -0
- pyvale/dicspecklegenerator.py +238 -0
- pyvale/dicspecklequality.py +305 -0
- pyvale/dicstrain.py +387 -0
- pyvale/dicstrainresults.py +37 -0
- pyvale/errorintegrator.py +10 -8
- pyvale/examples/basics/ex1_1_basicscalars_therm2d.py +124 -113
- pyvale/examples/basics/ex1_2_sensormodel_therm2d.py +124 -132
- pyvale/examples/basics/ex1_3_customsens_therm3d.py +199 -195
- pyvale/examples/basics/ex1_4_basicerrors_therm3d.py +125 -121
- pyvale/examples/basics/ex1_5_fielderrs_therm3d.py +145 -141
- pyvale/examples/basics/ex1_6_caliberrs_therm2d.py +96 -101
- pyvale/examples/basics/ex1_7_spatavg_therm2d.py +109 -105
- pyvale/examples/basics/ex2_1_basicvectors_disp2d.py +92 -91
- pyvale/examples/basics/ex2_2_vectorsens_disp2d.py +96 -90
- pyvale/examples/basics/ex2_3_sensangle_disp2d.py +88 -89
- pyvale/examples/basics/ex2_4_chainfielderrs_disp2d.py +172 -171
- pyvale/examples/basics/ex2_5_vectorfields3d_disp3d.py +88 -86
- pyvale/examples/basics/ex3_1_basictensors_strain2d.py +90 -90
- pyvale/examples/basics/ex3_2_tensorsens2d_strain2d.py +93 -91
- pyvale/examples/basics/ex3_3_tensorsens3d_strain3d.py +172 -160
- pyvale/examples/basics/ex4_1_expsim2d_thermmech2d.py +154 -148
- pyvale/examples/basics/ex4_2_expsim3d_thermmech3d.py +249 -231
- pyvale/examples/dic/ex1_region_of_interest.py +98 -0
- pyvale/examples/dic/ex2_plate_with_hole.py +149 -0
- pyvale/examples/dic/ex3_plate_with_hole_strain.py +93 -0
- pyvale/examples/dic/ex4_dic_blender.py +95 -0
- pyvale/examples/dic/ex5_dic_challenge.py +102 -0
- pyvale/examples/imagedef2d/ex_imagedef2d_todisk.py +4 -2
- pyvale/examples/renderblender/ex1_1_blenderscene.py +152 -105
- pyvale/examples/renderblender/ex1_2_blenderdeformed.py +151 -100
- pyvale/examples/renderblender/ex2_1_stereoscene.py +183 -116
- pyvale/examples/renderblender/ex2_2_stereodeformed.py +185 -112
- pyvale/examples/renderblender/ex3_1_blendercalibration.py +164 -109
- pyvale/examples/renderrasterisation/ex_rastenp.py +74 -35
- pyvale/examples/renderrasterisation/ex_rastercyth_oneframe.py +6 -13
- pyvale/examples/renderrasterisation/ex_rastercyth_static_cypara.py +2 -2
- pyvale/examples/renderrasterisation/ex_rastercyth_static_pypara.py +2 -4
- pyvale/imagedef2d.py +3 -2
- pyvale/imagetools.py +137 -0
- pyvale/rastercy.py +34 -4
- pyvale/rasternp.py +300 -276
- pyvale/rasteropts.py +58 -0
- pyvale/renderer.py +47 -0
- pyvale/rendermesh.py +52 -62
- pyvale/renderscene.py +51 -0
- pyvale/sensorarrayfactory.py +2 -2
- pyvale/sensortools.py +19 -35
- pyvale/simcases/case21.i +1 -1
- pyvale/simcases/run_1case.py +8 -0
- pyvale/simtools.py +2 -2
- pyvale/visualsimplotter.py +180 -0
- {pyvale-2025.5.3.dist-info → pyvale-2025.7.0.dist-info}/METADATA +11 -57
- {pyvale-2025.5.3.dist-info → pyvale-2025.7.0.dist-info}/RECORD +91 -56
- {pyvale-2025.5.3.dist-info → pyvale-2025.7.0.dist-info}/WHEEL +1 -1
- pyvale/examples/visualisation/ex1_1_plot_traces.py +0 -102
- pyvale/examples/visualisation/ex2_1_animate_sim.py +0 -89
- {pyvale-2025.5.3.dist-info → pyvale-2025.7.0.dist-info}/licenses/LICENSE +0 -0
- {pyvale-2025.5.3.dist-info → pyvale-2025.7.0.dist-info}/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyvale
|
|
3
|
-
Version: 2025.
|
|
3
|
+
Version: 2025.7.0
|
|
4
4
|
Summary: An all-in-one package for sensor simulation, sensor uncertainty quantification, sensor placement optimisation and simulation calibration or validation.
|
|
5
5
|
Author-email: "scepticalrabbit et al." <thescepticalrabbit@gmail.com>
|
|
6
6
|
License: MIT License
|
|
@@ -47,17 +47,23 @@ Requires-Dist: bpy>=4.2.0
|
|
|
47
47
|
Requires-Dist: pyyaml>=6.0.2
|
|
48
48
|
Requires-Dist: pytest>=8.3.5
|
|
49
49
|
Requires-Dist: pybind11>=2.13.6
|
|
50
|
+
Requires-Dist: pyqtgraph>=0.13.7
|
|
51
|
+
Requires-Dist: opencv-python<=4.9.0.80
|
|
50
52
|
Dynamic: license-file
|
|
51
53
|
|
|
52
54
|
# pyvale
|
|
53
|
-
|
|
55
|
+

|
|
56
|
+
|
|
57
|
+
The python validation engine (`pyvale`) is you virtual engineering laboratory: An all-in-one package for sensor simulation, sensor uncertainty quantification, sensor placement optimisation and simulation calibration/validation. Used to simulate experimental data from an input multi-physics simulation by explicitly modelling sensors with realistic uncertainties. Useful for experimental design, sensor placement optimisation, testing simulation validation metrics and virtually testing digital shadows/twins.
|
|
58
|
+
|
|
59
|
+
We provide dedicated tools for simulation and uncertainty quantification of imaging sensors including digital image correlation (DIC) and infra-red thermography (IRT). Check out the [documentation](https://computer-aided-validation-laboratory.github.io/pyvale/index.html) to get started with some of our examples.
|
|
54
60
|
|
|
55
61
|
## Quick Demo: Simulating Point Sensors
|
|
56
62
|
Here we demonstrate how `pyvale` can be used to simulate thermocouples and strain gauges applied to a [MOOSE](https://mooseframework.inl.gov/index.html) thermo-mechanical simulation of a fusion divertor armour heatsink. The figures below show visualisations of the virtual thermocouple and strain gauge locations on the simualtion mesh as well as time traces for each sensor over a series of simulated experiments.
|
|
57
63
|
|
|
58
64
|
The code to run the simulated experiments and produce the output shown here comes from [this example](https://computer-aided-validation-laboratory.github.io/pyvale/examples/point/ex4_2.html). You can find more examples and details of `pyvale` python API in the `pyvale` [documentation](https://computer-aided-validation-laboratory.github.io/pyvale/index.html).
|
|
59
65
|
|
|
60
|
-
|||
|
|
61
67
|
|--|--|
|
|
62
68
|
|*Visualisation of the thermcouple locations.*|*Visualisation of the strain gauge locations.*|
|
|
63
69
|
|
|
@@ -72,71 +78,19 @@ The code to run the simulated experiments and produce the output shown here come
|
|
|
72
78
|
pip install pyvale
|
|
73
79
|
```
|
|
74
80
|
|
|
75
|
-
|
|
76
|
-
### Managing Python Versions
|
|
77
|
-
To be compatible with `bpy` (the Blender python interface), `pyvale` uses python 3.11. To install python 3.11 without corrupting your operating systems python installation first add the deadsnakes repository to apt:
|
|
78
|
-
```shell
|
|
79
|
-
sudo add-apt-repository ppa:deadsnakes/ppa
|
|
80
|
-
sudo apt update && sudo apt upgrade -y
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Install python 3.11:
|
|
84
|
-
```shell
|
|
85
|
-
sudo apt install python3.11
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
Add `venv` to your python 3.11 install:
|
|
89
|
-
```shell
|
|
90
|
-
sudo apt install python3.11-venv
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
Check your python 3.11 install is working using the following command which should open an interactive python interpreter:
|
|
94
|
-
```shell
|
|
95
|
-
python3.11
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Virtual Environment
|
|
99
|
-
|
|
100
|
-
We recommend installing `pyvale` in a virtual environment using `venv` or `pyvale` can be installed into an existing environment of your choice. To create a specific virtual environment for `pyvale` navigate to the directory you want to install the environment and use:
|
|
101
|
-
|
|
102
|
-
```shell
|
|
103
|
-
python3.11 -m venv .pyvale-env
|
|
104
|
-
source .pyvale-env/bin/activate
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
### Standard Installation
|
|
108
|
-
`pyvale` can be installed from pypi. Ensure you virtual environment is activated and run:
|
|
109
|
-
```shell
|
|
110
|
-
pip install pyvale
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### Developer Installation
|
|
114
|
-
|
|
115
|
-
Clone `pyvale` to your local system along with submodules using
|
|
116
|
-
```shell
|
|
117
|
-
git clone --recurse-submodules git@github.com:Computer-Aided-Validation-Laboratory/pyvale.git
|
|
118
|
-
```
|
|
119
|
-
|
|
120
|
-
`cd` to the root directory of `pyvale`. Ensure you virtual environment is activated and run the following commmand from the `pyvale` directory:
|
|
121
|
-
```shell
|
|
122
|
-
pip install -e .
|
|
123
|
-
pip install -e ./dependencies/mooseherder
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
### Running Physics Simulations with MOOSE
|
|
127
|
-
`pyvale` come pre-packaged with example `moose` physics simulation outputs (as *.e exodus files) to demonstrate its functionality. If you need to run additional simulation cases we recommend `proteus` (https://github.com/aurora-multiphysics/proteus) which has build scripts for common linux distributions.
|
|
81
|
+
We recommend installing `pyvale` into a virtual environment of your choice as `pyvale` requires python 3.11. If you need help setting up your virtual environment and installing `pyvale` head over to the [installation guide](https://computer-aided-validation-laboratory.github.io/pyvale/install.html) in our docs.
|
|
128
82
|
|
|
129
83
|
## Contributors
|
|
130
84
|
The Computer Aided Validation Team at UKAEA:
|
|
131
85
|
- Lloyd Fletcher ([ScepticalRabbit](https://github.com/ScepticalRabbit)), UK Atomic Energy Authority
|
|
132
86
|
- Joel Hirst ([JoelPhys](https://github.com/JoelPhys)), UK Atomic Energy Authority
|
|
133
|
-
- John Charlton ([coolmule0](https://github.com/coolmule0)), UK Atomic Energy Authority
|
|
134
87
|
- Lorna Sibson ([lornasibson](https://github.com/lornasibson)), UK Atomic Energy Authority
|
|
135
88
|
- Megan Sampson ([meganasampson](https://github.com/meganasampson)), UK Atomic Energy Authority
|
|
136
89
|
- Michael Atkinson ([mikesmic](https://github.com/mikesmic)), UK Atomic Energy Authority
|
|
137
90
|
- Adel Tayeb ([3adelTayeb](https://github.com/3adelTayeb)), UK Atomic Energy Authority
|
|
138
91
|
- Alex Marsh ([alexmarsh2](https://github.com/alexmarsh2)), UK Atomic Energy Authority
|
|
139
92
|
- Rory Spencer ([fusmatrs](https://github.com/orgs/Computer-Aided-Validation-Laboratory/people/fusmatrs)), UK Atomic Energy Authority
|
|
93
|
+
- John Charlton ([coolmule0](https://github.com/coolmule0)), UK Atomic Energy Authority
|
|
140
94
|
|
|
141
95
|
|
|
142
96
|
|
|
@@ -1,22 +1,33 @@
|
|
|
1
|
-
pyvale/__init__.py,sha256=
|
|
1
|
+
pyvale/__init__.py,sha256=_EdHJFTk0NEjusOdFUMZ-VZI9CVe5NUmQY3ibJ-AmGI,3303
|
|
2
2
|
pyvale/analyticmeshgen.py,sha256=mNVmPpfPi--uSBTp1IMp5r8cEqYZUaK-ucsGRN-WQcI,3525
|
|
3
3
|
pyvale/analyticsimdatafactory.py,sha256=SMfATyTmRRm7oS-W4tHEtHAtxLipaTdYbLkvqWfjMtg,2794
|
|
4
4
|
pyvale/analyticsimdatagenerator.py,sha256=-c4sZo2YFkj9CV8jxK6eW6Y1DEl_Teb37KrQraH7Aho,12747
|
|
5
|
-
pyvale/blendercalibrationdata.py,sha256=
|
|
5
|
+
pyvale/blendercalibrationdata.py,sha256=xcPMX3VuNPxZEKwpdESxzsY-7qTlC1nt-x9UFxH18oo,569
|
|
6
6
|
pyvale/blenderlightdata.py,sha256=e5UmMy7hdmf-5IOS4sA8-TcoD1XQg8N1yZ845zfYJmk,760
|
|
7
7
|
pyvale/blendermaterialdata.py,sha256=KI-T4IFdfJaEjYQWgF-fV3SzShYBT5lhSZSUvb8FrSU,522
|
|
8
8
|
pyvale/blenderrenderdata.py,sha256=OPlnd5-dSjXQeYLxIiyA9A-usfImWQWeYtNFHrpnG_g,918
|
|
9
|
-
pyvale/blenderscene.py,sha256
|
|
10
|
-
pyvale/blendertools.py,sha256=
|
|
11
|
-
pyvale/camera.py,sha256=
|
|
12
|
-
pyvale/cameradata.py,sha256=
|
|
9
|
+
pyvale/blenderscene.py,sha256=C9QmDUsJ-UBoJ-IFK30fYwVz8ICZj6h5m3cNaI4pm-o,21819
|
|
10
|
+
pyvale/blendertools.py,sha256=VBxzSIXC2yPwO_IrpchQYkGaKgj2ZDGh0ncU55N2AFk,18554
|
|
11
|
+
pyvale/camera.py,sha256=3j44NG5Odk4AzspXqHfJx5vWzAHDPg3dg4xoHWIpdiI,5479
|
|
12
|
+
pyvale/cameradata.py,sha256=l2-WaQCzT6pvTrL-7xiUQFf697D0V1qUKG9kzQeka_o,2011
|
|
13
13
|
pyvale/cameradata2d.py,sha256=SZW4EwP2maaJDoVywPvJ5CIzxE9M0T00v6YFMMXbXIY,2819
|
|
14
|
-
pyvale/
|
|
15
|
-
pyvale/
|
|
16
|
-
pyvale/
|
|
14
|
+
pyvale/camerasensor.py,sha256=3j44NG5Odk4AzspXqHfJx5vWzAHDPg3dg4xoHWIpdiI,5479
|
|
15
|
+
pyvale/camerastereo.py,sha256=L_HBN3JIGLkAMk1ZIvDye3xqwyVaudsM9NgyybD5rJM,10142
|
|
16
|
+
pyvale/cameratools.py,sha256=_DTrvLMop2QoEdkUkr4dkiwZmNhxgnHv2Te7EKg0knM,19723
|
|
17
|
+
pyvale/dataset.py,sha256=OzjDrqSee5jSV8y4AhQ_aSedqDftSBlCKH92Lk304NM,15354
|
|
18
|
+
pyvale/dic2d.py,sha256=oisTCqSxRULme-5r2YfvNJe9mS1vw0yqvpRc9bNYe-U,7731
|
|
19
|
+
pyvale/dic2dcpp.cp311-win_amd64.pyd,sha256=MR8VRpOGOBFaBbNXqwEoqpIXP8zNpBeZqzX8Z0yqAZY,623104
|
|
20
|
+
pyvale/dicchecks.py,sha256=cmJbgCLjaEblBnP45R_bnrwAXTUqO91b8Diz0wimKdg,16488
|
|
21
|
+
pyvale/dicdataimport.py,sha256=2Qht6OoLXO9nK7_jt1POR3qbn0thWYedBFJ-w9YwGkU,7438
|
|
22
|
+
pyvale/dicregionofinterest.py,sha256=1d3tqnvQTQU88Qz7ISpOsUPMrdm8Ty9RJXzC0J-_kqs,33768
|
|
23
|
+
pyvale/dicresults.py,sha256=bZnA9Yu348DYVE80DkcNeSu-Ddh7GQNnENz5_e1bPZU,1938
|
|
24
|
+
pyvale/dicspecklegenerator.py,sha256=IvAuEXXn_B8aKlDORFylXMcvVoMYnsqeqDFcyFg9Ktw,8057
|
|
25
|
+
pyvale/dicspecklequality.py,sha256=_-Ym4eloquvqWYBWwXtp-u6bbUYkIAgAKwb6lj2LItM,10273
|
|
26
|
+
pyvale/dicstrain.py,sha256=IV2F7eEkRRkmmEIhtmCWar_k7mMq-VFUYldTC4FYd_I,13174
|
|
27
|
+
pyvale/dicstrainresults.py,sha256=hTP4RqxJg_sdee1vCNcMR42SUQNlHnnsUaw16umwtqg,1090
|
|
17
28
|
pyvale/errorcalculator.py,sha256=7jOfQEZwFzjfupO24jrogoDn3HeN_DDoHgW2uH0BwaU,3527
|
|
18
29
|
pyvale/errordriftcalc.py,sha256=HRpsYQwhSM_LCdOA9EN9doj9UWHBcR-Tni9dbYDPgnI,4573
|
|
19
|
-
pyvale/errorintegrator.py,sha256=
|
|
30
|
+
pyvale/errorintegrator.py,sha256=JpW_kUzOgP5a7v7mx3gnPt9geGaB5aH28xNinhjYR-w,14246
|
|
20
31
|
pyvale/errorrand.py,sha256=5SUu-aqCRlmKiQaS20y2Ch-8yBIPvHJsGHntv2VsU5Y,22799
|
|
21
32
|
pyvale/errorsyscalib.py,sha256=uEG3gtTjF6OcritiEPVFdZbizv6omzIqcUVafEOyFkc,5716
|
|
22
33
|
pyvale/errorsysdep.py,sha256=5mxvijHbX712JyA0CjZ9MRltu1SRkDhdx79TuIAvPrE,11898
|
|
@@ -31,7 +42,8 @@ pyvale/fieldtensor.py,sha256=abobYgvPz2wRsS77g1oCxnu8qTf5L8ETnTxGd1q5xQA,8364
|
|
|
31
42
|
pyvale/fieldtransform.py,sha256=prc_qrkNwbBC72MSsoKxx7F11A5sRsp8eReTuC3FYcI,18381
|
|
32
43
|
pyvale/fieldvector.py,sha256=b-AD32kip6CvGoMzKnvX6XvVhESp0ehsLanjGfvZlCk,8139
|
|
33
44
|
pyvale/generatorsrandom.py,sha256=4wSx9QseslMG-WOjxl7_AvX0tBw6hynoPs6hD41ByMU,17108
|
|
34
|
-
pyvale/imagedef2d.py,sha256=
|
|
45
|
+
pyvale/imagedef2d.py,sha256=La3G3Ukt-ncAB-1imdsCxQetbL9wBb-A3xFTFjYKSqc,25723
|
|
46
|
+
pyvale/imagetools.py,sha256=ONdFGmfdQsmhtn96Z8I3TNWIr2lmvsWzG12EVAwFvpw,4476
|
|
35
47
|
pyvale/integratorfactory.py,sha256=TAnSb2zSyiIzJ9TuWjC9h6Nrv8zKdhmuPpTHRmOd9n4,9859
|
|
36
48
|
pyvale/integratorquadrature.py,sha256=2h5RfCPaUdRcRoAQK46MHD25mglyJ3HosZGE_7G_KS0,9252
|
|
37
49
|
pyvale/integratorrectangle.py,sha256=kj0YX5IQ6kVFqF0zsk4uv9naiKozQhrOdrphLGKjivc,6860
|
|
@@ -40,27 +52,31 @@ pyvale/integratortype.py,sha256=AzO6Ra6wO6JNif0crnxy79i1fpwGDYqhJN9MzT_yLrQ,1348
|
|
|
40
52
|
pyvale/output.py,sha256=5VB7oK7RI1etVH_SkO9vN0aFQw6ktbmkmY7db5y7A8I,520
|
|
41
53
|
pyvale/pyvaleexceptions.py,sha256=ga8lnVxdnCQeTbMe2tN_ThMy8W8r4jL2opcveCO1_OU,359
|
|
42
54
|
pyvale/raster.py,sha256=21y1fyi0oyvIJ6BHGOvoxruTFs0WA8G7m3zH56N9CTc,819
|
|
43
|
-
pyvale/rastercy.py,sha256=
|
|
44
|
-
pyvale/rasternp.py,sha256=
|
|
45
|
-
pyvale/
|
|
55
|
+
pyvale/rastercy.py,sha256=ev7pDOLM4wvBcEMag-k1Lw7mgfdVYeYA-C1LzjmpDAM,3613
|
|
56
|
+
pyvale/rasternp.py,sha256=nZuSqMhEdaAfAGz_4rgO263de7i_3qlAfH3BGoXhcIM,26495
|
|
57
|
+
pyvale/rasteropts.py,sha256=jXughaYmPNRVeOmztD7-5GCCj0cSltEK6gqkzEGGHT8,2191
|
|
58
|
+
pyvale/renderer.py,sha256=-scDJLzKSCvqhSfCnVCBv-eJnW1f3ojEOygXXGTql1s,1333
|
|
59
|
+
pyvale/rendermesh.py,sha256=bh6EEx_dzpxBIBerehioXkCDe6IrZ0FbWX3Ql3yMY54,5474
|
|
60
|
+
pyvale/renderscene.py,sha256=tcvn1M4XKjRdOGabWGAKwQGoOm3X6Jf7AQm37YnBRp4,1588
|
|
46
61
|
pyvale/sensorarray.py,sha256=QTKGNWYzTOL8CmWm_TJ710qK0qOtRrjfNoiXQpQA1ig,7197
|
|
47
|
-
pyvale/sensorarrayfactory.py,sha256=
|
|
62
|
+
pyvale/sensorarrayfactory.py,sha256=mjTRC2TYWyojY7IABIXIqJQx9ABBIgba-jp8Rdo8svg,8136
|
|
48
63
|
pyvale/sensorarraypoint.py,sha256=Ek6ymJielcilDqULS-7lpLHtqGzu9muKMvdG8wFqfBg,11492
|
|
49
64
|
pyvale/sensordata.py,sha256=srhJEbyW_skUKtVvqFmJRnmkUw6qIEqL4gcYiqnV6t8,2835
|
|
50
65
|
pyvale/sensordescriptor.py,sha256=w_-Z1K7UC9vempDFAKQcYN-fJScM_aaN_WX2nLVGvHw,7286
|
|
51
|
-
pyvale/sensortools.py,sha256=
|
|
52
|
-
pyvale/simtools.py,sha256=
|
|
66
|
+
pyvale/sensortools.py,sha256=tQkxnNEPAdt2z_--7R0q9zSC6NBhectvorXlnWwNrIA,5061
|
|
67
|
+
pyvale/simtools.py,sha256=0kKlEx7qgcJR0GJy9E-gPpdFeJy_fn3AqCf0iF4RSto,2339
|
|
53
68
|
pyvale/visualexpplotter.py,sha256=e_R-rvY6So6n-Bi9K5QYTnfarkzhpQo7Xpx8_Px9E3E,8100
|
|
54
69
|
pyvale/visualimagedef.py,sha256=ltX4LLMaSpRrH9fGWUI5yT9lwYiPYewnwt44XB4eNqo,2897
|
|
55
70
|
pyvale/visualimages.py,sha256=lrkzaUih2lWJrPz5VbWOKzLXWyfbqPNBx39JGOKnI6E,2925
|
|
56
71
|
pyvale/visualopts.py,sha256=gzbiw-5aiPGSwp4j3p4Nk5Fjq4c_PEnQCOIqJ1YyN-o,15421
|
|
57
72
|
pyvale/visualsimanimator.py,sha256=z42X8d0juA4UBKJQKUxrXfdP98KIRAAx1RK09turv3k,4567
|
|
73
|
+
pyvale/visualsimplotter.py,sha256=yF11R-m9NSz4WPMjpN5qJqZm1fzhn5l6SnXIeJQ9Pmg,6987
|
|
58
74
|
pyvale/visualsimsensors.py,sha256=t-2tJJoown9xGezrub-EWJSRgoOH7On1FI3gIPvPPu0,12723
|
|
59
75
|
pyvale/visualtools.py,sha256=CfrRYFIKEBl66kZuhLchG-tgDQiUp-nC2sTCylQqejs,4952
|
|
60
76
|
pyvale/visualtraceplotter.py,sha256=1u9x3AfnzXS0fF8EAUm-v_E-xYXor7STlsoWob_-iCc,5629
|
|
61
|
-
pyvale/cython/rastercyth.c,sha256=
|
|
62
|
-
pyvale/cython/rastercyth.cp311-win_amd64.pyd,sha256=
|
|
63
|
-
pyvale/cython/rastercyth.py,sha256=
|
|
77
|
+
pyvale/cython/rastercyth.c,sha256=0MFaVTHwbPRjVx-SBgNOv1as1bXDFXYB4LWT0WpIzb8,1282853
|
|
78
|
+
pyvale/cython/rastercyth.cp311-win_amd64.pyd,sha256=9dNRh3xRAwq7aESvZDAFVxcd4nezG65nLlwazpctb8c,179200
|
|
79
|
+
pyvale/cython/rastercyth.py,sha256=sifuWGmgB0Z8MhQTigNt9lMEMwY3oI9G0Q9a1vQQEYw,27096
|
|
64
80
|
pyvale/data/__init__.py,sha256=qCiIGOM2Oxw7TsjsIvYR054rhhoHzLKX2mCJve9NaJk,275
|
|
65
81
|
pyvale/data/cal_target.tiff,sha256=4dbDIm7h7gYDJOhWOZXO-rs162ZLqxb1bdrbTykMEMk,4718962
|
|
66
82
|
pyvale/data/case00_HEX20_out.e,sha256=wTdEWvGyQBhP1D1bIy5YZKu7I_QISWLEjl9K9VOOnbI,241172
|
|
@@ -78,39 +94,58 @@ pyvale/data/case18_3_out.e,sha256=8dTnKLQOSCL-gle-1shL68GBQPW1go05aDvjO6AawAg,14
|
|
|
78
94
|
pyvale/data/case25_out.e,sha256=LWnCKG7GDUvzCs7GI1h25dhIhq6_qJgXnkhiTmdynPw,93748
|
|
79
95
|
pyvale/data/case26_out.e,sha256=UAoxPN0K1bbk9R0r2hDehuQZVCPHcAV5NA1PckRyXDY,225744
|
|
80
96
|
pyvale/data/optspeckle_2464x2056px_spec5px_8bit_gblur1px.tiff,sha256=cRmbiTzxc8QJ_aO9dc7YT21lV1c9K7pH-L9uQZvUQ8M,5046422
|
|
97
|
+
pyvale/data/plate_hole_def0000.tiff,sha256=R9qDRQxVKnAIQQWDALDM5leIvb3NaGtjXEEuX0ykI_s,1601722
|
|
98
|
+
pyvale/data/plate_hole_def0001.tiff,sha256=4LmjGiqVCwxEG2rEDf-XU9Lw6f7NaUL3nAkOQ1yrDvE,1601722
|
|
99
|
+
pyvale/data/plate_hole_ref0000.tiff,sha256=nJ3WP5Aq7sgy02LTW8ThdZkLt_0Jls26e1--TZ1Ub4M,1601722
|
|
100
|
+
pyvale/data/plate_rigid_def0000.tiff,sha256=YlGU0lIlkh61StQku7lK7P6oDZDa-g5R98fUrR4WnO0,1601722
|
|
101
|
+
pyvale/data/plate_rigid_def0001.tiff,sha256=CFIveUYubbbUDpQfnsO0iPaBTzwbjQbcAOCG1mm2040,1601722
|
|
102
|
+
pyvale/data/plate_rigid_ref0000.tiff,sha256=EolObMm5QzGeewgq3bLhlkHor_6ASuNoYrV2AbYrFro,1601722
|
|
103
|
+
pyvale/dic/cpp/dicbruteforce.cpp,sha256=_LbVdgrRrErF-h3AxwUYAz5bpw2KduA035BCOEWyXdo,12285
|
|
104
|
+
pyvale/dic/cpp/dicfourier.cpp,sha256=bs-t4koUz5Pd-UTnEC4wzhboHLJcD7GbPYjwQ9Ps78M,24196
|
|
105
|
+
pyvale/dic/cpp/dicinterpolator.cpp,sha256=BzO3atEcu-ouGjBjhKeEttKgTlG5GcesJ5KYvvRF8MA,20884
|
|
106
|
+
pyvale/dic/cpp/dicmain.cpp,sha256=BL7-02_ZByZLC_c5rjecVAM1N6DgJQAi6eGT2LJS8vk,9075
|
|
107
|
+
pyvale/dic/cpp/dicoptimizer.cpp,sha256=6Q4hcqqolO1MGhvXGTGDrdpAfNJeghVrpsu3z151FRw,26604
|
|
108
|
+
pyvale/dic/cpp/dicrg.cpp,sha256=ZAgXQnPP55HAU7VhPVcchtvIgQVy3ele7-zZKPAc04k,4488
|
|
109
|
+
pyvale/dic/cpp/dicscanmethod.cpp,sha256=-hXZ3YMc03HlMvCMIFD2A203Bjy8_FhDTv0_Tqb_WzI,27443
|
|
110
|
+
pyvale/dic/cpp/dicsmooth.cpp,sha256=voV7Ge1jqaW3A-87ORxVMv_JFfBlW9_pFoi6NZfoUAs,4583
|
|
111
|
+
pyvale/dic/cpp/dicstrain.cpp,sha256=Sr8sHi3T6Sly0P6h6eTH-K9u5CiQU1ZWjaj6XKtEYhQ,14400
|
|
112
|
+
pyvale/dic/cpp/dicutil.cpp,sha256=TxBwxa89xEaduDxxq8JPeRpj-dSi8Pb-xlI7dY_-J7I,20392
|
|
81
113
|
pyvale/examples/__init__.py,sha256=qCiIGOM2Oxw7TsjsIvYR054rhhoHzLKX2mCJve9NaJk,275
|
|
82
|
-
pyvale/examples/basics/ex1_1_basicscalars_therm2d.py,sha256=
|
|
83
|
-
pyvale/examples/basics/ex1_2_sensormodel_therm2d.py,sha256=
|
|
84
|
-
pyvale/examples/basics/ex1_3_customsens_therm3d.py,sha256=
|
|
85
|
-
pyvale/examples/basics/ex1_4_basicerrors_therm3d.py,sha256=
|
|
86
|
-
pyvale/examples/basics/ex1_5_fielderrs_therm3d.py,sha256=
|
|
87
|
-
pyvale/examples/basics/ex1_6_caliberrs_therm2d.py,sha256=
|
|
88
|
-
pyvale/examples/basics/ex1_7_spatavg_therm2d.py,sha256=
|
|
89
|
-
pyvale/examples/basics/ex2_1_basicvectors_disp2d.py,sha256=
|
|
90
|
-
pyvale/examples/basics/ex2_2_vectorsens_disp2d.py,sha256=
|
|
91
|
-
pyvale/examples/basics/ex2_3_sensangle_disp2d.py,sha256=
|
|
92
|
-
pyvale/examples/basics/ex2_4_chainfielderrs_disp2d.py,sha256=
|
|
93
|
-
pyvale/examples/basics/ex2_5_vectorfields3d_disp3d.py,sha256=
|
|
94
|
-
pyvale/examples/basics/ex3_1_basictensors_strain2d.py,sha256
|
|
95
|
-
pyvale/examples/basics/ex3_2_tensorsens2d_strain2d.py,sha256=
|
|
96
|
-
pyvale/examples/basics/ex3_3_tensorsens3d_strain3d.py,sha256=
|
|
97
|
-
pyvale/examples/basics/ex4_1_expsim2d_thermmech2d.py,sha256=
|
|
98
|
-
pyvale/examples/basics/ex4_2_expsim3d_thermmech3d.py,sha256=
|
|
114
|
+
pyvale/examples/basics/ex1_1_basicscalars_therm2d.py,sha256=IlGUDXAXqWycEV7TUiUoy_TmYv6-1YbuLas1n7xpDcc,6035
|
|
115
|
+
pyvale/examples/basics/ex1_2_sensormodel_therm2d.py,sha256=zDrcPY_z8yeXHtlBzFV-l5CIVn-CBc_IDhJtBU0Sz8M,6048
|
|
116
|
+
pyvale/examples/basics/ex1_3_customsens_therm3d.py,sha256=Y_ZYrv5kk_bwb9LMNM4U96c--9TXfUZhBFUVRpj1XH0,9132
|
|
117
|
+
pyvale/examples/basics/ex1_4_basicerrors_therm3d.py,sha256=v6Yn2_f2lpp9P42_zvcPhky74NtAYnPcp5gxTHwSNqk,6406
|
|
118
|
+
pyvale/examples/basics/ex1_5_fielderrs_therm3d.py,sha256=ivTWApsZXBQGPiyWWhD4am7mjJb4tquppF-v3UN4TIo,6914
|
|
119
|
+
pyvale/examples/basics/ex1_6_caliberrs_therm2d.py,sha256=639VCc7Hq3MLPsYuBKV8AmbCltX5E-x8b8V3CtI6Zhg,4846
|
|
120
|
+
pyvale/examples/basics/ex1_7_spatavg_therm2d.py,sha256=4pSo3hmuZWSaDkeTOfBZm_7oy7JFj-zxh1hXmAETaI4,5068
|
|
121
|
+
pyvale/examples/basics/ex2_1_basicvectors_disp2d.py,sha256=vk19M1uef37KrS6lmDWk8FMmTAxLdeeezZPpLEteo5c,4587
|
|
122
|
+
pyvale/examples/basics/ex2_2_vectorsens_disp2d.py,sha256=UWTqSHPP4gDw7sjOo5SWggyu2SXiQJXh9OczCl_QxAE,4930
|
|
123
|
+
pyvale/examples/basics/ex2_3_sensangle_disp2d.py,sha256=CNxrdMnGokL-2ZZPrarZmM6DZS3R7MgihHip86TpAH8,5259
|
|
124
|
+
pyvale/examples/basics/ex2_4_chainfielderrs_disp2d.py,sha256=8zC_9x8vRHyzuKYgGni1MOn_n_heT6l8Q-mYoGSHAXk,7907
|
|
125
|
+
pyvale/examples/basics/ex2_5_vectorfields3d_disp3d.py,sha256=yns9PN3iBwE8hYpGFsqKP2jtbKVoMd37Ra5w-tUy3L4,4133
|
|
126
|
+
pyvale/examples/basics/ex3_1_basictensors_strain2d.py,sha256=ukoCDfjxWKyRy4YWyQnhElLKVYwMiWFhOFuOsnrhJx4,4715
|
|
127
|
+
pyvale/examples/basics/ex3_2_tensorsens2d_strain2d.py,sha256=wIXx3aOzyRSP-n9cyjHcDOsacgRuQ5T5K3ACYr8p6W0,4635
|
|
128
|
+
pyvale/examples/basics/ex3_3_tensorsens3d_strain3d.py,sha256=yw67THdSkiM-FQYcyGpDpyLbqG9gHNekelJkxlYsc34,8096
|
|
129
|
+
pyvale/examples/basics/ex4_1_expsim2d_thermmech2d.py,sha256=Dtsdc9RD56QGurOsr5BSMyK86OItQBbUu_GUZ6Ozb4M,7642
|
|
130
|
+
pyvale/examples/basics/ex4_2_expsim3d_thermmech3d.py,sha256=ep61fOYU0c5sYjIr8azZCxqNSKNgJ_KdWjS0BERYMOY,10727
|
|
131
|
+
pyvale/examples/dic/ex1_region_of_interest.py,sha256=-26B5FCvB9SbuWI3m6uokDDiLrc5dZZJMcVzZb4Ev28,3428
|
|
132
|
+
pyvale/examples/dic/ex2_plate_with_hole.py,sha256=KvoHqPcFdv--QwQLJkBrFgGaSH05RyXy97HVl5vit_w,6197
|
|
133
|
+
pyvale/examples/dic/ex3_plate_with_hole_strain.py,sha256=u6h17gLkH27fzMrGkB_tBwkNPhYoS-1b2rx4Vr0r8Rs,3529
|
|
134
|
+
pyvale/examples/dic/ex4_dic_blender.py,sha256=tbjxlj65Kyqo71CMk2sfvz5wunnxyBGgbCB2Cvf_dhI,3247
|
|
135
|
+
pyvale/examples/dic/ex5_dic_challenge.py,sha256=vJL1m9P6XtedAHplbOtjTyf4byWEGB1ovJIBEv_02s8,4068
|
|
99
136
|
pyvale/examples/genanalyticdata/ex1_1_scalarvisualisation.py,sha256=iN8HLF6LVwssvzuRTn6uRVf1w7r5GQ--WPZUVpnAVmM,973
|
|
100
137
|
pyvale/examples/genanalyticdata/ex1_2_scalarcasebuild.py,sha256=rTIuTVDiu88s0GaxFD4bkNgSb7J-UJX4q1I3KWzjS6U,1315
|
|
101
138
|
pyvale/examples/genanalyticdata/ex2_1_analyticsensors.py,sha256=N6shzllnpyvHrDxwFI4M6fAp_aJJgXeB3xlw7GQkgrg,2925
|
|
102
|
-
pyvale/examples/imagedef2d/ex_imagedef2d_todisk.py,sha256=
|
|
103
|
-
pyvale/examples/renderblender/ex1_1_blenderscene.py,sha256=
|
|
104
|
-
pyvale/examples/renderblender/ex1_2_blenderdeformed.py,sha256=
|
|
105
|
-
pyvale/examples/renderblender/ex2_1_stereoscene.py,sha256=
|
|
106
|
-
pyvale/examples/renderblender/ex2_2_stereodeformed.py,sha256=
|
|
107
|
-
pyvale/examples/renderblender/ex3_1_blendercalibration.py,sha256=
|
|
108
|
-
pyvale/examples/renderrasterisation/ex_rastenp.py,sha256=
|
|
109
|
-
pyvale/examples/renderrasterisation/ex_rastercyth_oneframe.py,sha256=
|
|
110
|
-
pyvale/examples/renderrasterisation/ex_rastercyth_static_cypara.py,sha256=
|
|
111
|
-
pyvale/examples/renderrasterisation/ex_rastercyth_static_pypara.py,sha256=
|
|
112
|
-
pyvale/examples/visualisation/ex1_1_plot_traces.py,sha256=TNmPCzY04iGsI5OmObrJhw7waCunmUp6-GcajpWwOQM,3354
|
|
113
|
-
pyvale/examples/visualisation/ex2_1_animate_sim.py,sha256=2n3YWoB2tMaberBLaT82AsdIHW45e3Fqvg9y1OzHyyY,3074
|
|
139
|
+
pyvale/examples/imagedef2d/ex_imagedef2d_todisk.py,sha256=5HAvV3P9REvF0HU2nK2-SZofcqRJIyC0qk1JaCQd_sU,2787
|
|
140
|
+
pyvale/examples/renderblender/ex1_1_blenderscene.py,sha256=IQwEIXpokYk6eSFvWfkQ3gnURNzsp_mEbkwsAjsPeNA,7089
|
|
141
|
+
pyvale/examples/renderblender/ex1_2_blenderdeformed.py,sha256=KjDnpM6r0MzDOqHVQsKyYCZ-IYTMNVqt033ZnN9rU1w,7176
|
|
142
|
+
pyvale/examples/renderblender/ex2_1_stereoscene.py,sha256=ZgTTsafTn6neyRI_zWKN928beNjqGvl4frqwhg1eQ6o,8814
|
|
143
|
+
pyvale/examples/renderblender/ex2_2_stereodeformed.py,sha256=i8R_4FeVH8mfXdvGnPkWrFT0MI16EmtMrqvnbk4ZIGE,9271
|
|
144
|
+
pyvale/examples/renderblender/ex3_1_blendercalibration.py,sha256=H4twmey5e_-yD_d4AfeHxxof8euPfDCj_L0-6OEoiQQ,8032
|
|
145
|
+
pyvale/examples/renderrasterisation/ex_rastenp.py,sha256=ZaEtSC0Az4TuifP_1eYUp44XfYZ-X8zaHSbt415sCb8,6402
|
|
146
|
+
pyvale/examples/renderrasterisation/ex_rastercyth_oneframe.py,sha256=F9SUGFIAMRoYKQh5lF1so3BN1CJxwuQ8iUPfq9ozm6g,7478
|
|
147
|
+
pyvale/examples/renderrasterisation/ex_rastercyth_static_cypara.py,sha256=59RURzuD5w2pyzeIJy_9TNoYQVJiSnOlsU4URjDYyFk,6846
|
|
148
|
+
pyvale/examples/renderrasterisation/ex_rastercyth_static_pypara.py,sha256=rysuCwFDlFZrXx8BdWkGKTIbpEsmO4oy9h2cWVeqL5o,6927
|
|
114
149
|
pyvale/simcases/case00_HEX20.i,sha256=qehBfWhV5DE5U7MNmroH7oiAfy25wRDpq8THQ_5OS0Y,5390
|
|
115
150
|
pyvale/simcases/case00_HEX27.i,sha256=6FtMb0iZWqF0H7UHQxcYWvkhBA1cKzGxDIrShSmuYjg,5390
|
|
116
151
|
pyvale/simcases/case00_HEX8.i,sha256=XIQS6BZ632F68fSvwN9YT-5OZHM8-2qV-tqPEJORKII,5400
|
|
@@ -152,7 +187,7 @@ pyvale/simcases/case19.i,sha256=ZifW8iHiQNfS7j-dzwnYxs36rC1blqaBdidMORWCWBU,2289
|
|
|
152
187
|
pyvale/simcases/case20.geo,sha256=Lp80dI_3VMiZC_hHdo-CDyz0x9F6i8ZR8w7D-IRGZes,9354
|
|
153
188
|
pyvale/simcases/case20.i,sha256=JBLT1QwVs1m7Xx5rgrZ6XgkenuPbXDaHzyWTAgELgGE,6904
|
|
154
189
|
pyvale/simcases/case21.geo,sha256=OKwOAfRlqObHjCBTX8vc79cSXUlAaHVEOdOftVc4_u4,2461
|
|
155
|
-
pyvale/simcases/case21.i,sha256=
|
|
190
|
+
pyvale/simcases/case21.i,sha256=rLjlSngH4ynvagx1nP4RLs3lfk3iUQ9CPIuenXKDgqo,3569
|
|
156
191
|
pyvale/simcases/case22.geo,sha256=qjk6tu3F5nRLwHEaanJgW6UeWQoXLFlZ-64F7q9Fn5Y,2573
|
|
157
192
|
pyvale/simcases/case22.i,sha256=jTVA1PDKfZTkUP6xmutNwE-kCh8-QhOArOCsUmRA4pI,3328
|
|
158
193
|
pyvale/simcases/case23.geo,sha256=2OkhLsqW3Kb8ykAbx1WGPbtak4dO-CGuS3nI2LwccT4,5612
|
|
@@ -163,12 +198,12 @@ pyvale/simcases/case25.geo,sha256=THnjoyxc61jG9u7JEdOj1SenyaH-TR1lPom6ATHfMbI,25
|
|
|
163
198
|
pyvale/simcases/case25.i,sha256=zfck508vXblNTNWFwo7RUuu6U3raE4_4hU9KS1RlJBo,3133
|
|
164
199
|
pyvale/simcases/case26.geo,sha256=yMPZn5sM6JiBEfFTfaTrrjeOjkxOLauXJ1WJs_M0yBE,5634
|
|
165
200
|
pyvale/simcases/case26.i,sha256=EE70fWv4eljTYW7WHRLLepwTWLWM0Q8dkI89rV02EEo,3131
|
|
166
|
-
pyvale/simcases/run_1case.py,sha256=
|
|
201
|
+
pyvale/simcases/run_1case.py,sha256=srR8bs3pKhPaF_E4nqLsMXO1ivtK5WKRWIZ0O6pXGRs,2107
|
|
167
202
|
pyvale/simcases/run_all_cases.py,sha256=x6IhG7jalAPuZRFdNTH9oof9L_Nol5vWjjU_lPi5i0Q,1972
|
|
168
203
|
pyvale/simcases/run_build_case.py,sha256=3FaSjQrYxVmmKAC_CvORAvFr6Xwo0pEOjiWTzG7fMbU,2002
|
|
169
204
|
pyvale/simcases/run_example_cases.py,sha256=6-gUDPqPmBj01q4CcsG5MiVWqt71BP4J85fWGOuS3Eg,1979
|
|
170
|
-
pyvale-2025.
|
|
171
|
-
pyvale-2025.
|
|
172
|
-
pyvale-2025.
|
|
173
|
-
pyvale-2025.
|
|
174
|
-
pyvale-2025.
|
|
205
|
+
pyvale-2025.7.0.dist-info/licenses/LICENSE,sha256=PLyswAYGHdw3qwnrd4I8glj6pc89FgAgY6W1VtK0NT0,1119
|
|
206
|
+
pyvale-2025.7.0.dist-info/METADATA,sha256=QyQz3sDSnHvvNG5z05axFp6lYgooYvYwGX8L-6AUy5E,6485
|
|
207
|
+
pyvale-2025.7.0.dist-info/WHEEL,sha256=JLOMsP7F5qtkAkINx5UnzbFguf8CqZeraV8o04b0I8I,101
|
|
208
|
+
pyvale-2025.7.0.dist-info/top_level.txt,sha256=u1d_f4iZ3b3_96Rb_zrs9hyrpC4yE5e1Lg6Ey_Wgr0c,7
|
|
209
|
+
pyvale-2025.7.0.dist-info/RECORD,,
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
# ==============================================================================
|
|
2
|
-
# pyvale: the python validation engine
|
|
3
|
-
# License: MIT
|
|
4
|
-
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
-
# ==============================================================================
|
|
6
|
-
|
|
7
|
-
"""
|
|
8
|
-
Pyvale example: TODO
|
|
9
|
-
--------------------------------------------------------------------------------
|
|
10
|
-
TODO
|
|
11
|
-
|
|
12
|
-
Test case: TODO
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
import numpy as np
|
|
16
|
-
import matplotlib.pyplot as plt
|
|
17
|
-
import mooseherder as mh
|
|
18
|
-
import pyvale as pyv
|
|
19
|
-
|
|
20
|
-
# TODO: comments and full description for this example like the basics examples
|
|
21
|
-
|
|
22
|
-
def main() -> None:
|
|
23
|
-
|
|
24
|
-
data_path = pyv.DataSet.thermal_2d_path()
|
|
25
|
-
sim_data = mh.ExodusReader(data_path).read_all_sim_data()
|
|
26
|
-
sim_data = pyv.scale_length_units(scale=1000.0,
|
|
27
|
-
sim_data=sim_data,
|
|
28
|
-
disp_comps=None)
|
|
29
|
-
|
|
30
|
-
n_sens = (4,1,1)
|
|
31
|
-
x_lims = (0.0,100.0)
|
|
32
|
-
y_lims = (0.0,50.0)
|
|
33
|
-
z_lims = (0.0,0.0)
|
|
34
|
-
sens_pos = pyv.create_sensor_pos_array(n_sens,x_lims,y_lims,z_lims)
|
|
35
|
-
|
|
36
|
-
sample_times = np.linspace(0.0,np.max(sim_data.time),12)
|
|
37
|
-
|
|
38
|
-
sens_data = pyv.SensorData(positions=sens_pos,
|
|
39
|
-
sample_times=sample_times)
|
|
40
|
-
|
|
41
|
-
field_key = "temperature"
|
|
42
|
-
tc_array = pyv.SensorArrayFactory \
|
|
43
|
-
.thermocouples_basic_errs(sim_data,
|
|
44
|
-
sens_data,
|
|
45
|
-
field_key,
|
|
46
|
-
elem_dims=2)
|
|
47
|
-
|
|
48
|
-
err_int = pyv.ErrIntegrator([pyv.ErrSysOffset(offset=-5.0)],
|
|
49
|
-
sens_data,
|
|
50
|
-
tc_array.get_measurement_shape())
|
|
51
|
-
tc_array.set_error_integrator(err_int)
|
|
52
|
-
|
|
53
|
-
measurements = tc_array.get_measurements()
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
print(80*"-")
|
|
57
|
-
|
|
58
|
-
sens_print: int = 0
|
|
59
|
-
time_print: int = 5
|
|
60
|
-
comp_print: int = 0
|
|
61
|
-
|
|
62
|
-
print(f"These are the last {time_print} virtual measurements of sensor "
|
|
63
|
-
+ f"{sens_print}:")
|
|
64
|
-
|
|
65
|
-
pyv.print_measurements(sens_array=tc_array,
|
|
66
|
-
sensors=(sens_print,sens_print+1),
|
|
67
|
-
components=(comp_print,comp_print+1),
|
|
68
|
-
time_steps=(measurements.shape[2]-time_print,
|
|
69
|
-
measurements.shape[2]))
|
|
70
|
-
print(80*"-")
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
trace_props = pyv.TraceOptsSensor()
|
|
74
|
-
|
|
75
|
-
trace_props.truth_line = None
|
|
76
|
-
trace_props.sim_line = None
|
|
77
|
-
pyv.plot_time_traces(tc_array,field_key,trace_props)
|
|
78
|
-
|
|
79
|
-
trace_props.meas_line = "--o"
|
|
80
|
-
trace_props.truth_line = "-x"
|
|
81
|
-
trace_props.sim_line = ":+"
|
|
82
|
-
pyv.plot_time_traces(tc_array,field_key,trace_props)
|
|
83
|
-
|
|
84
|
-
trace_props.sensors_to_plot = np.arange(measurements.shape[0]-2
|
|
85
|
-
,measurements.shape[0])
|
|
86
|
-
pyv.plot_time_traces(tc_array,field_key,trace_props)
|
|
87
|
-
|
|
88
|
-
trace_props.sensors_to_plot = None
|
|
89
|
-
trace_props.time_min_max = (0.0,100.0)
|
|
90
|
-
pyv.plot_time_traces(tc_array,field_key,trace_props)
|
|
91
|
-
|
|
92
|
-
plt.show()
|
|
93
|
-
|
|
94
|
-
pv_plot = pyv.plot_point_sensors_on_sim(tc_array,field_key)
|
|
95
|
-
pv_plot.camera_position = [(-7.547, 59.753, 134.52),
|
|
96
|
-
(41.916, 25.303, 9.297),
|
|
97
|
-
(0.0810, 0.969, -0.234)]
|
|
98
|
-
pv_plot.show()
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
if __name__ == "__main__":
|
|
102
|
-
main()
|
|
@@ -1,89 +0,0 @@
|
|
|
1
|
-
# ==============================================================================
|
|
2
|
-
# pyvale: the python validation engine
|
|
3
|
-
# License: MIT
|
|
4
|
-
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
-
# ==============================================================================
|
|
6
|
-
|
|
7
|
-
"""
|
|
8
|
-
Pyvale example: TODO
|
|
9
|
-
--------------------------------------------------------------------------------
|
|
10
|
-
TODO
|
|
11
|
-
|
|
12
|
-
Test case: TODO
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
from pathlib import Path
|
|
16
|
-
import numpy as np
|
|
17
|
-
import mooseherder as mh
|
|
18
|
-
import pyvale as pyv
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
def main() -> None:
|
|
22
|
-
|
|
23
|
-
data_path = pyv.DataSet.thermal_3d_path()
|
|
24
|
-
sim_data = mh.ExodusReader(data_path).read_all_sim_data()
|
|
25
|
-
|
|
26
|
-
sim_data = pyv.scale_length_units(scale=1000.0,
|
|
27
|
-
sim_data=sim_data,
|
|
28
|
-
disp_comps=None)
|
|
29
|
-
sim_data.coords = sim_data.coords*1000.0 # type: ignore
|
|
30
|
-
|
|
31
|
-
pyv.print_dimensions(sim_data)
|
|
32
|
-
|
|
33
|
-
n_sens = (1,4,1)
|
|
34
|
-
x_lims = (12.5,12.5)
|
|
35
|
-
y_lims = (0,33.0)
|
|
36
|
-
z_lims = (0.0,12.0)
|
|
37
|
-
sens_pos = pyv.create_sensor_pos_array(n_sens,x_lims,y_lims,z_lims)
|
|
38
|
-
|
|
39
|
-
sens_data = pyv.SensorData(positions=sens_pos)
|
|
40
|
-
|
|
41
|
-
field_key = 'temperature'
|
|
42
|
-
tc_array = pyv.SensorArrayFactory() \
|
|
43
|
-
.thermocouples_basic_errs(sim_data,
|
|
44
|
-
sens_data,
|
|
45
|
-
field_key,
|
|
46
|
-
elem_dims=3)
|
|
47
|
-
|
|
48
|
-
measurements = tc_array.get_measurements()
|
|
49
|
-
print(f'\nMeasurements for sensor at top of block:\n{measurements[-1,0,:]}\n')
|
|
50
|
-
|
|
51
|
-
vis_opts = pyv.VisOptsSimSensors()
|
|
52
|
-
vis_opts.window_size_px = (1200,800)
|
|
53
|
-
vis_opts.camera_position = np.array([(59.354, 43.428, 69.946),
|
|
54
|
-
(-2.858, 13.189, 4.523),
|
|
55
|
-
(-0.215, 0.948, -0.233)])
|
|
56
|
-
|
|
57
|
-
vis_mode = "vector"
|
|
58
|
-
save_dir = Path.cwd() / "exampleoutput"
|
|
59
|
-
if not save_dir.is_dir():
|
|
60
|
-
save_dir.mkdir()
|
|
61
|
-
|
|
62
|
-
if vis_mode == "animate":
|
|
63
|
-
anim_opts = pyv.VisOptsAnimation()
|
|
64
|
-
|
|
65
|
-
anim_opts.save_path = save_dir / "test_animation"
|
|
66
|
-
anim_opts.save_animation = pyv.EAnimationType.MP4
|
|
67
|
-
|
|
68
|
-
pv_anim = pyv.animate_sim_with_sensors(tc_array,
|
|
69
|
-
field_key,
|
|
70
|
-
time_steps=None,
|
|
71
|
-
vis_opts=vis_opts,
|
|
72
|
-
anim_opts=anim_opts)
|
|
73
|
-
|
|
74
|
-
else:
|
|
75
|
-
image_save_opts = pyv.VisOptsImageSave()
|
|
76
|
-
|
|
77
|
-
image_save_opts.path = save_dir / "test_vector_graphics"
|
|
78
|
-
image_save_opts.image_type = pyv.EImageType.SVG
|
|
79
|
-
|
|
80
|
-
pv_plot = pyv.plot_point_sensors_on_sim(tc_array,
|
|
81
|
-
field_key,
|
|
82
|
-
time_step=-1,
|
|
83
|
-
vis_opts=vis_opts,
|
|
84
|
-
image_save_opts=image_save_opts)
|
|
85
|
-
pv_plot.show()
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
if __name__ == '__main__':
|
|
89
|
-
main()
|
|
File without changes
|
|
File without changes
|