pyvale 2025.4.0__py3-none-any.whl → 2025.4.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 +51 -52
- pyvale/analyticmeshgen.py +101 -0
- pyvale/{core/analyticsimdatafactory.py → analyticsimdatafactory.py} +32 -9
- pyvale/{core/analyticsimdatagenerator.py → analyticsimdatagenerator.py} +151 -21
- pyvale/{core/camera.py → camera.py} +13 -14
- pyvale/{core/cameradata.py → cameradata.py} +6 -19
- pyvale/{core/cameradata2d.py → cameradata2d.py} +7 -7
- pyvale/{core/cameratools.py → cameratools.py} +18 -19
- pyvale/{core/cython → cython}/rastercyth.py +9 -9
- pyvale/data/__init__.py +5 -7
- 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} +24 -8
- pyvale/{core/errorcalculator.py → errorcalculator.py} +7 -8
- pyvale/{core/errordriftcalc.py → errordriftcalc.py} +6 -7
- pyvale/{core/errorintegrator.py → errorintegrator.py} +8 -9
- pyvale/{core/errorrand.py → errorrand.py} +9 -10
- pyvale/{core/errorsysdep.py → errorsysdep.py} +8 -9
- pyvale/{core/errorsysfield.py → errorsysfield.py} +13 -14
- pyvale/{core/errorsysindep.py → errorsysindep.py} +9 -10
- pyvale/examples/__init__.py +5 -7
- pyvale/examples/analyticdatagen/__init__.py +5 -7
- pyvale/examples/ex1_1_thermal2d.py +6 -9
- pyvale/examples/ex1_2_thermal2d.py +6 -9
- pyvale/examples/ex1_3_thermal2d.py +6 -9
- pyvale/examples/ex1_4_thermal2d.py +6 -9
- pyvale/examples/ex1_5_thermal2d.py +6 -9
- pyvale/examples/ex2_1_thermal3d .py +6 -9
- pyvale/examples/ex2_3_thermal3d.py +6 -9
- pyvale/examples/ex3_1_displacement2d.py +6 -9
- pyvale/examples/ex3_2_displacement2d.py +5 -8
- pyvale/examples/ex3_3_displacement2d.py +6 -9
- pyvale/examples/ex3_4_displacement2d.py +6 -9
- pyvale/examples/ex4_1_strain2d.py +6 -9
- pyvale/examples/ex4_2_strain2d.py +5 -8
- pyvale/examples/ex4_3_strain2d.py +6 -9
- pyvale/examples/ex5_1_multiphysics2d.py +5 -8
- pyvale/examples/ex6_1_multiphysics2d_expsim.py +6 -9
- pyvale/examples/ex6_2_multiphysics3d_expsim.py +15 -13
- pyvale/examples/features/__init__.py +5 -7
- pyvale/examples/rasterisation/ex_rastenp.py +5 -7
- pyvale/examples/rasterisation/ex_rastercyth_oneframe.py +5 -7
- pyvale/examples/rasterisation/ex_rastercyth_static_cypara.py +5 -7
- pyvale/examples/rasterisation/ex_rastercyth_static_pypara.py +5 -7
- pyvale/{core/experimentsimulator.py → experimentsimulator.py} +7 -8
- pyvale/{core/field.py → field.py} +6 -7
- pyvale/{core/fieldconverter.py → fieldconverter.py} +138 -17
- pyvale/{core/fieldsampler.py → fieldsampler.py} +9 -10
- pyvale/{core/fieldscalar.py → fieldscalar.py} +9 -10
- pyvale/{core/fieldtensor.py → fieldtensor.py} +10 -11
- pyvale/{core/fieldtransform.py → fieldtransform.py} +6 -7
- pyvale/{core/fieldvector.py → fieldvector.py} +10 -11
- pyvale/{core/generatorsrandom.py → generatorsrandom.py} +6 -7
- pyvale/{core/imagedef2d.py → imagedef2d.py} +9 -10
- pyvale/{core/integratorfactory.py → integratorfactory.py} +12 -13
- pyvale/{core/integratorquadrature.py → integratorquadrature.py} +9 -10
- pyvale/{core/integratorrectangle.py → integratorrectangle.py} +9 -10
- pyvale/{core/integratorspatial.py → integratorspatial.py} +7 -8
- pyvale/{core/integratortype.py → integratortype.py} +6 -7
- pyvale/{core/optimcheckfuncs.py → optimcheckfuncs.py} +1 -1
- pyvale/{core/raster.py → raster.py} +6 -7
- pyvale/{core/rastercy.py → rastercy.py} +9 -10
- pyvale/{core/rasternp.py → rasternp.py} +10 -13
- pyvale/{core/rendermesh.py → rendermesh.py} +8 -21
- pyvale/{core/sensorarray.py → sensorarray.py} +7 -8
- pyvale/{core/sensorarrayfactory.py → sensorarrayfactory.py} +15 -16
- pyvale/{core/sensorarraypoint.py → sensorarraypoint.py} +12 -13
- pyvale/{core/sensordata.py → sensordata.py} +7 -8
- pyvale/{core/sensordescriptor.py → sensordescriptor.py} +6 -7
- pyvale/{core/sensortools.py → sensortools.py} +7 -8
- 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/{core/visualexpplotter.py → visualexpplotter.py} +8 -10
- pyvale/{core/visualimagedef.py → visualimagedef.py} +6 -7
- pyvale/{core/visualimages.py → visualimages.py} +8 -9
- pyvale/{core/visualopts.py → visualopts.py} +6 -7
- pyvale/{core/visualsimanimator.py → visualsimanimator.py} +10 -11
- pyvale/{core/visualsimplotter.py → visualsimplotter.py} +30 -30
- pyvale/{core/visualtools.py → visualtools.py} +7 -8
- pyvale/{core/visualtraceplotter.py → visualtraceplotter.py} +9 -10
- {pyvale-2025.4.0.dist-info → pyvale-2025.4.1.dist-info}/METADATA +1 -1
- pyvale-2025.4.1.dist-info/RECORD +163 -0
- {pyvale-2025.4.0.dist-info → pyvale-2025.4.1.dist-info}/WHEEL +1 -1
- pyvale/core/__init__.py +0 -7
- pyvale/core/analyticmeshgen.py +0 -59
- pyvale/core/cython/rastercyth.c +0 -32267
- pyvale-2025.4.0.dist-info/RECORD +0 -157
- {pyvale-2025.4.0.dist-info → pyvale-2025.4.1.dist-info}/licenses/LICENSE +0 -0
- {pyvale-2025.4.0.dist-info → pyvale-2025.4.1.dist-info}/top_level.txt +0 -0
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"""
|
|
1
|
+
# ================================================================================
|
|
2
|
+
# pyvale: the python validation engine
|
|
3
|
+
# License: MIT
|
|
4
|
+
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
+
# ================================================================================
|
|
6
|
+
|
|
8
7
|
# import vtk #NOTE: has to be here to fix latex bug in pyvista/vtk
|
|
9
8
|
# See: https://github.com/pyvista/pyvista/discussions/2928
|
|
10
9
|
#NOTE: causes output to console to be suppressed unfortunately
|
|
@@ -12,10 +11,10 @@ import pyvista as pv
|
|
|
12
11
|
|
|
13
12
|
import mooseherder as mh
|
|
14
13
|
|
|
15
|
-
from pyvale.
|
|
16
|
-
from pyvale.
|
|
17
|
-
from pyvale.
|
|
18
|
-
from pyvale.
|
|
14
|
+
from pyvale.sensorarraypoint import SensorArrayPoint
|
|
15
|
+
from pyvale.fieldconverter import simdata_to_pyvista
|
|
16
|
+
from pyvale.visualopts import (VisOptsSimSensors,VisOptsImageSave)
|
|
17
|
+
from pyvale.visualtools import (create_pv_plotter,
|
|
19
18
|
get_colour_lims,
|
|
20
19
|
save_image)
|
|
21
20
|
|
|
@@ -102,28 +101,28 @@ def add_sensor_points_pert(pv_plot: pv.Plotter,
|
|
|
102
101
|
|
|
103
102
|
|
|
104
103
|
def plot_sim_mesh(sim_data: mh.SimData,
|
|
104
|
+
elem_dims: int,
|
|
105
105
|
vis_opts: VisOptsSimSensors | None = None,
|
|
106
106
|
) -> pv.Plotter:
|
|
107
107
|
|
|
108
108
|
if vis_opts is None:
|
|
109
109
|
vis_opts = VisOptsSimSensors()
|
|
110
110
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
111
|
+
(_,sim_vis) = simdata_to_pyvista(sim_data=sim_data,
|
|
112
|
+
components=None,
|
|
113
|
+
elem_dims=elem_dims)
|
|
114
114
|
|
|
115
115
|
pv_plot = create_pv_plotter(vis_opts)
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
show_scalar_bar=False)
|
|
121
|
-
|
|
116
|
+
pv_plot.add_mesh(sim_vis,
|
|
117
|
+
label="sim-data",
|
|
118
|
+
show_edges=vis_opts.show_edges,
|
|
119
|
+
lighting=False)
|
|
122
120
|
return pv_plot
|
|
123
121
|
|
|
124
122
|
|
|
125
123
|
def plot_sim_data(sim_data: mh.SimData,
|
|
126
124
|
component: str,
|
|
125
|
+
elem_dims: int,
|
|
127
126
|
time_step: int = -1,
|
|
128
127
|
vis_opts: VisOptsSimSensors | None = None
|
|
129
128
|
) -> pv.Plotter:
|
|
@@ -131,19 +130,20 @@ def plot_sim_data(sim_data: mh.SimData,
|
|
|
131
130
|
if vis_opts is None:
|
|
132
131
|
vis_opts = VisOptsSimSensors()
|
|
133
132
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
133
|
+
(_,sim_vis) = simdata_to_pyvista(sim_data,
|
|
134
|
+
(component,),
|
|
135
|
+
elem_dims)
|
|
137
136
|
|
|
138
|
-
|
|
137
|
+
sim_vis[component] = sim_data.node_vars[component][:,time_step]
|
|
139
138
|
|
|
140
|
-
pv_plot
|
|
141
|
-
|
|
139
|
+
pv_plot = create_pv_plotter(vis_opts)
|
|
140
|
+
pv_plot.add_mesh(sim_vis,
|
|
141
|
+
scalars=component,
|
|
142
142
|
label="sim-data",
|
|
143
|
-
show_edges=
|
|
144
|
-
show_scalar_bar=
|
|
145
|
-
|
|
146
|
-
|
|
143
|
+
show_edges=vis_opts.show_edges,
|
|
144
|
+
show_scalar_bar=vis_opts.colour_bar_show,
|
|
145
|
+
lighting=False,
|
|
146
|
+
clim=vis_opts.colour_bar_lims)
|
|
147
147
|
|
|
148
148
|
return pv_plot
|
|
149
149
|
|
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"""
|
|
1
|
+
# ================================================================================
|
|
2
|
+
# pyvale: the python validation engine
|
|
3
|
+
# License: MIT
|
|
4
|
+
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
+
# ================================================================================
|
|
6
|
+
|
|
8
7
|
from pathlib import Path
|
|
9
8
|
import numpy as np
|
|
10
9
|
#import vtk #NOTE: has to be here to fix latex bug in pyvista/vtk
|
|
11
10
|
# See: https://github.com/pyvista/pyvista/discussions/2928
|
|
12
11
|
#NOTE: causes output to console to be suppressed unfortunately
|
|
13
12
|
import pyvista as pv
|
|
14
|
-
from pyvale.
|
|
13
|
+
from pyvale.visualopts import (VisOptsSimSensors,
|
|
15
14
|
VisOptsImageSave,
|
|
16
15
|
EImageType,
|
|
17
16
|
VisOptsAnimation,
|
|
@@ -1,19 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
"""
|
|
1
|
+
# ================================================================================
|
|
2
|
+
# pyvale: the python validation engine
|
|
3
|
+
# License: MIT
|
|
4
|
+
# Copyright (C) 2025 The Computer Aided Validation Team
|
|
5
|
+
# ================================================================================
|
|
6
|
+
|
|
8
7
|
from typing import Any
|
|
9
8
|
|
|
10
9
|
import numpy as np
|
|
11
10
|
import matplotlib.pyplot as plt
|
|
12
|
-
from pyvale.
|
|
13
|
-
from pyvale.
|
|
11
|
+
from pyvale.sensorarraypoint import SensorArrayPoint
|
|
12
|
+
from pyvale.visualopts import (PlotOptsGeneral,
|
|
14
13
|
TraceOptsSensor,
|
|
15
14
|
TraceOptsExperiment)
|
|
16
|
-
from pyvale.
|
|
15
|
+
from pyvale.experimentsimulator import ExperimentSimulator
|
|
17
16
|
|
|
18
17
|
#TODO: Docstrings
|
|
19
18
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: pyvale
|
|
3
|
-
Version: 2025.4.
|
|
3
|
+
Version: 2025.4.1
|
|
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
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
pyvale/__init__.py,sha256=URV7AtTezLI19PJv359Pajs-TXEtZoQVG0xB8S1uabQ,2425
|
|
2
|
+
pyvale/analyticmeshgen.py,sha256=Mps6YwpM7PACKIIqsZMb9XQ8N8hLde1Xl9FUqgA--kU,3423
|
|
3
|
+
pyvale/analyticsimdatafactory.py,sha256=NIg3VysG-C2V0Eu86mVQbA75kuwaPVL9d7TlDiZkQFs,2590
|
|
4
|
+
pyvale/analyticsimdatagenerator.py,sha256=1T7RUIgHF8qDXVdz_jfgmoD0qClddD5mwwtVhqkwSXE,9998
|
|
5
|
+
pyvale/camera.py,sha256=HaOqqYeItbTGKZ-f50Lqt-U04rjwrMmuZDy5PAsShSM,5330
|
|
6
|
+
pyvale/cameradata.py,sha256=Ury4ARaD3AfAgaxUqz0XLC-rdQojj8PUH1xImZ04zkc,1525
|
|
7
|
+
pyvale/cameradata2d.py,sha256=nOlxNP87mqGbXLbULn7ZiZJFT_zHapRkqnrmitVkG4w,2734
|
|
8
|
+
pyvale/cameratools.py,sha256=EahFPfv54Yssj8kfgT8ZIhdOYu92MFZFh7VPMs8KlaI,13495
|
|
9
|
+
pyvale/dataset.py,sha256=l0tDa8TQebMyU7BVUk5X34ok73jWuLF402jlN_Mc04Q,10055
|
|
10
|
+
pyvale/errorcalculator.py,sha256=jdAfbPx92rWuTjKcjTB-I4inIq83QpSs7BS9CNrXWiw,3495
|
|
11
|
+
pyvale/errordriftcalc.py,sha256=euhCEgbiesRiJ87UHNT5ZVB8p8_grAIwrdwd3bfTuUw,4477
|
|
12
|
+
pyvale/errorintegrator.py,sha256=iQigDo9qNEHlGLwpW9WrVxgZlYlimeIKb-E45u6kNow,14096
|
|
13
|
+
pyvale/errorrand.py,sha256=P793R9RbORCgz08qPsy-9iL8EthCiV-4d7Ql736RbXw,22655
|
|
14
|
+
pyvale/errorsysdep.py,sha256=uEY1J-sqrotKhXJahUkjOv1WhELah5Tf4gGFdTn3K0o,11809
|
|
15
|
+
pyvale/errorsysfield.py,sha256=Sf-CW4Vj1jF5vs2AB962NxPdKX60xHR5Ycbcsn4yWlo,16767
|
|
16
|
+
pyvale/errorsysindep.py,sha256=4ySd2uvJ8CF0_82XYDkindGeq260rDGYrS8qwwF4nFU,33976
|
|
17
|
+
pyvale/experimentsimulator.py,sha256=ZN4WO2vDaGv8HcDl0II922WU_y4wPdP5kga7l2KVJ8k,3577
|
|
18
|
+
pyvale/field.py,sha256=6Iyn_xOghF0KaCfZjOEtCcOmHtb5x_yB-_zfhc6bZOw,4627
|
|
19
|
+
pyvale/fieldconverter.py,sha256=blFRVH1sidiSbd-EY3mSBO5_Q13_W_0BtulAW_G877I,10173
|
|
20
|
+
pyvale/fieldsampler.py,sha256=Euadjj1-ZGUqdRPBK3iQ_2T5QNna7zTWgD_gGO42_hg,4447
|
|
21
|
+
pyvale/fieldscalar.py,sha256=QMf7iPFTRBCo8esSw2GwOGHo5iKSKqOlVQBWiD9wYdU,5958
|
|
22
|
+
pyvale/fieldtensor.py,sha256=wdwAiEXJ8nB87kRLd6hAyIcQnAQvEihuD66aO3feDSk,8259
|
|
23
|
+
pyvale/fieldtransform.py,sha256=bRmTG-vcyGnKoU7rhvqckrZhHrGjOKbScd9d4Uw2u74,17866
|
|
24
|
+
pyvale/fieldvector.py,sha256=fmDJMLFJIm6HnYWM485hIJrcs8oknjs1GubDnqO_77g,7971
|
|
25
|
+
pyvale/generatorsrandom.py,sha256=qjTBa0IkPXrplK1b1wNUu09rTD-z79xBO-P0iO0RMbI,18396
|
|
26
|
+
pyvale/imagedef2d.py,sha256=wYl96CRK6jjekRAbkSOInaVeQjdfUwNRwqHIyj2fvdU,25061
|
|
27
|
+
pyvale/integratorfactory.py,sha256=aCUvTf5h09zwKufE2-QTuZToL3HXZ__kKuxkMTulgkA,9624
|
|
28
|
+
pyvale/integratorquadrature.py,sha256=JohyvmFn4iYehoIOkQRFcU9St3QJ8n1Jbua4PJ-Meo8,6697
|
|
29
|
+
pyvale/integratorrectangle.py,sha256=DRW2i10kpkhUnq6ung5atNnabLoCXnMcXQiA0BehXNA,2939
|
|
30
|
+
pyvale/integratorspatial.py,sha256=NCYxE-qPZTxqV9JckV_I7SGGMoPGKlRs3-6YM4JEpXM,3223
|
|
31
|
+
pyvale/integratortype.py,sha256=5_l9k9_TId_2KvPqbmrCfzHOEi3sj-IDAfW6ytpDnAo,1308
|
|
32
|
+
pyvale/optimcheckfuncs.py,sha256=OPrKXweEgdAuVCUHW3ObrM0Kqf4raq4MsWOeTAwkQ6o,4191
|
|
33
|
+
pyvale/raster.py,sha256=tZNEkUV8Fpasl_65DPgVb_kcgC_LFLt45xo1E42ccBY,787
|
|
34
|
+
pyvale/rastercy.py,sha256=QYOcXlmFVpUVaSx_9hCUViXvI8dwS-LsXdlJkso59W4,2879
|
|
35
|
+
pyvale/rasternp.py,sha256=IWs4qRaZ9kFza5o74j41oQpK5_vqZb5I8RxX8Iro8ik,25991
|
|
36
|
+
pyvale/rendermesh.py,sha256=D7WL8-7E_g-SpbnZb9uX1nFiCLMiMP9IeGJUR_OdF1o,5358
|
|
37
|
+
pyvale/sensorarray.py,sha256=lmdei0U4psrBHKkg8-RbZLFGaCufZct8e61bJj-IUXA,7023
|
|
38
|
+
pyvale/sensorarrayfactory.py,sha256=cmZHipCZIvKE1Y9I_f2vGReP5zRmNS1gnev2VMOhhXE,8311
|
|
39
|
+
pyvale/sensorarraypoint.py,sha256=Tk_FOdCPxR_1eMEo8rAvTbzwqLpP94z8tm2f7dd1OYc,11236
|
|
40
|
+
pyvale/sensordata.py,sha256=iQLc9UTuFyMiXgsOg1C9VZORI25t7SGl-HMm132aw_8,2768
|
|
41
|
+
pyvale/sensordescriptor.py,sha256=IiHLWJ6C6A7pRA_weruQkO366cu2kBFMTuqqQ6XOSHw,2963
|
|
42
|
+
pyvale/sensortools.py,sha256=xWfQCkMYEGYKzJ0sxhIsjn7jPb2pylLkJYAwoStzKOc,5735
|
|
43
|
+
pyvale/visualexpplotter.py,sha256=4tHyoLJ5x6BIJbk41tAiMkmTUjCoKVj1bcI6FhMeCjs,6021
|
|
44
|
+
pyvale/visualimagedef.py,sha256=ZZ115m9egh2TnpwC3_mLFZDvIaSBucRdyhAUY8ZuH3k,2735
|
|
45
|
+
pyvale/visualimages.py,sha256=AvGeek7XTy_C6zZg1WS0ulCdyIonIoIBA5fiRlhXrL4,2847
|
|
46
|
+
pyvale/visualopts.py,sha256=REvKhXpHQVOR8y5Yn7qjOmlshBMygOMHVvJZsTr-o8E,4733
|
|
47
|
+
pyvale/visualsimanimator.py,sha256=mU3gjdFmxwPMAg3jFY2wcmpbcvN2zm5rcZ0xPeEgqus,3208
|
|
48
|
+
pyvale/visualsimplotter.py,sha256=Kr3aPWFVouADqDXFF_LXg21lNlTOjYJYbR1HiArI0Sw,6994
|
|
49
|
+
pyvale/visualtools.py,sha256=GYZAqL4ZkTfdSRzwm9DYuTEp4TA37AWklQMOFFIDShM,2981
|
|
50
|
+
pyvale/visualtraceplotter.py,sha256=_ExBVx8L9EqIsDGcofGS5axSpzAX4mSWjOh2MrRUuWk,10499
|
|
51
|
+
pyvale/cython/rastercyth.py,sha256=rYteBnFIrUyB6jAmUQTv96i02AT42y_0ELDaakAjPEs,24423
|
|
52
|
+
pyvale/data/__init__.py,sha256=h1zJBQZxFSPPUksp_ErTC1uTQLdSmoc-ry3D_naPKYE,271
|
|
53
|
+
pyvale/data/case00_HEX20_out.e,sha256=wTdEWvGyQBhP1D1bIy5YZKu7I_QISWLEjl9K9VOOnbI,241172
|
|
54
|
+
pyvale/data/case00_HEX27_out.e,sha256=XF1nLiBQcCJuZ4bXi8FUG3hbj5hpnno4by_hdyTVm4I,316644
|
|
55
|
+
pyvale/data/case00_HEX8_out.e,sha256=V52yZoQ4egI6v6JVkmA8DUVX6Q0K3AEWG8U3BbGHzSg,148268
|
|
56
|
+
pyvale/data/case00_TET10_out.e,sha256=eoIiAiQ5yLgiH2S01eMQRyHWGLfplnIAk6MPPcqEoPs,214036
|
|
57
|
+
pyvale/data/case00_TET14_out.e,sha256=t9s7WCV6gUlZfNcaj9q4_U7Sct9v9F77NQ0KU596GGk,316996
|
|
58
|
+
pyvale/data/case00_TET4_out.e,sha256=coeIyrkviOfgpgYauenoXldWnYulKgteOts6FolKYBM,127868
|
|
59
|
+
pyvale/data/case13_out.e,sha256=cqgs7TbyDtrlV4AxXUzULa0Qu50gbp_3VeQkehNT82g,150820
|
|
60
|
+
pyvale/data/case16_out.e,sha256=hmkiJQo4phaAPiEa9mgjggcUMn_yY2h348DSqMIj0pA,11614464
|
|
61
|
+
pyvale/data/case17_out.e,sha256=C5Zx0Xx8_iZqypPFbcutGPQtO5VNQaJmqg9YxWi0FHc,6095004
|
|
62
|
+
pyvale/data/case18_1_out.e,sha256=4ITunHIxCBCekUPipSv8j7IKDlhlwTaHe1e3wTN4qLE,1470776
|
|
63
|
+
pyvale/data/case18_2_out.e,sha256=Uz8U1TMBSe1YkRE4nRFMQ38Y11UQo9wb1cIbTRPua1Y,1470776
|
|
64
|
+
pyvale/data/case18_3_out.e,sha256=8dTnKLQOSCL-gle-1shL68GBQPW1go05aDvjO6AawAg,1470776
|
|
65
|
+
pyvale/data/case25_out.e,sha256=LWnCKG7GDUvzCs7GI1h25dhIhq6_qJgXnkhiTmdynPw,93748
|
|
66
|
+
pyvale/data/case26_out.e,sha256=UAoxPN0K1bbk9R0r2hDehuQZVCPHcAV5NA1PckRyXDY,225744
|
|
67
|
+
pyvale/data/optspeckle_2464x2056px_spec5px_8bit_gblur1px.tiff,sha256=cRmbiTzxc8QJ_aO9dc7YT21lV1c9K7pH-L9uQZvUQ8M,5046422
|
|
68
|
+
pyvale/examples/__init__.py,sha256=h1zJBQZxFSPPUksp_ErTC1uTQLdSmoc-ry3D_naPKYE,271
|
|
69
|
+
pyvale/examples/ex1_1_thermal2d.py,sha256=U9Ga08R5Z4o6VbSdRdAG9gdoWkyD0fLrhaAIlCJimnk,3372
|
|
70
|
+
pyvale/examples/ex1_2_thermal2d.py,sha256=umgsT2sh6CRoVIyyqF-jWG__MZhG5PmZLbjSFg-8U5s,3897
|
|
71
|
+
pyvale/examples/ex1_3_thermal2d.py,sha256=haIYN-u8XNlCIxt06mTHmDk1IWqYB_ZmpXKybWgsmFE,4023
|
|
72
|
+
pyvale/examples/ex1_4_thermal2d.py,sha256=9SJTSuvDDjBr5zVe1aeH-iNNk6pyrjg7KmZg2BpTZeI,3050
|
|
73
|
+
pyvale/examples/ex1_5_thermal2d.py,sha256=kzdxuMa-0lev9FYMreWQOt2a5ePThXWrs81_Vh8KViA,3929
|
|
74
|
+
pyvale/examples/ex2_1_thermal3d .py,sha256=_DX-obv_bBb3dTDvVbC-Lbs6q8pwzmz09KtULUyuGkk,3260
|
|
75
|
+
pyvale/examples/ex2_2_thermal3d.py,sha256=1oH4xmFo-6hpBka0wCzVzr1x7G2XgYRbn_ndhMnAgEY,1674
|
|
76
|
+
pyvale/examples/ex2_3_thermal3d.py,sha256=g4GbSrImy7vpVfdJ_VJwJmqNY443R8msobulBg4rT68,3521
|
|
77
|
+
pyvale/examples/ex3_1_displacement2d.py,sha256=iaHMNmv2sKtsr8QXZQMJxGTq4C-s1wBIpa-anYLOZmY,1577
|
|
78
|
+
pyvale/examples/ex3_2_displacement2d.py,sha256=CDIEkUu_Oo_T3BQzBsOG2dXoV9fexU9hBJxLjO5_84U,2594
|
|
79
|
+
pyvale/examples/ex3_3_displacement2d.py,sha256=VhkjdBdN58KboR9P3ozaVAmJ4oc7hvnY1CtQ4J-3VBE,3607
|
|
80
|
+
pyvale/examples/ex3_4_displacement2d.py,sha256=QxQC-KVuSIbFn0A5r3EpBRNUdUGyWqBrLE9penD6gS0,3949
|
|
81
|
+
pyvale/examples/ex4_1_strain2d.py,sha256=5U7AsUAvUm6QRHrAp9IGVeXl76Z8ZhkUXmPfgA3AK1M,1897
|
|
82
|
+
pyvale/examples/ex4_2_strain2d.py,sha256=d2pD4V603vhsf1tjUSf6t60ErJ8qt8UokD_uGBs6MnA,2699
|
|
83
|
+
pyvale/examples/ex4_3_strain2d.py,sha256=Tl1lwUyptY44cBwJx3FJHUWwAphlusYOj7_WMS7dQzE,3482
|
|
84
|
+
pyvale/examples/ex5_1_multiphysics2d.py,sha256=cI2YxiAQ41YH_CuBe7GAGurGst0BtFFSmixl0-jeG_Y,2787
|
|
85
|
+
pyvale/examples/ex6_1_multiphysics2d_expsim.py,sha256=TwXd2WjmKhWFAIgCuvXpUiNUIMvgiTAfjXA5ZZZbTHI,4284
|
|
86
|
+
pyvale/examples/ex6_2_multiphysics3d_expsim.py,sha256=_pR_8sEJuAEeKJEMmGHuEkPwbqvHve9ZOJh5fa965-M,5958
|
|
87
|
+
pyvale/examples/analyticdatagen/__init__.py,sha256=h1zJBQZxFSPPUksp_ErTC1uTQLdSmoc-ry3D_naPKYE,271
|
|
88
|
+
pyvale/examples/analyticdatagen/ex1_1_scalarvisualisation.py,sha256=X8OaNz1bYSiFVj7AZP1u8w7r0T0yTST8C5gHpzf1nE4,973
|
|
89
|
+
pyvale/examples/analyticdatagen/ex1_2_scalarcasebuild.py,sha256=iXY9wqoBUCaDwkLH1zMahxefsvX3TBbPjSrPGYUiuGQ,1317
|
|
90
|
+
pyvale/examples/analyticdatagen/ex2_1_analyticsensors.py,sha256=ln5U4g7XP-oLvtoAhAH_ombM01czEiPeG6pmzGVpyTc,2889
|
|
91
|
+
pyvale/examples/features/__init__.py,sha256=h1zJBQZxFSPPUksp_ErTC1uTQLdSmoc-ry3D_naPKYE,271
|
|
92
|
+
pyvale/examples/features/ex_animation_tools_3dmonoblock.py,sha256=4gNCiX831iankXOZrf_uji4iciRryhiFcaBUUSArvGc,2940
|
|
93
|
+
pyvale/examples/features/ex_area_avg.py,sha256=rNuwLwQwEikZ9Hz8i2AQPqsN8EY8mOTi73f8LDEgCf8,3110
|
|
94
|
+
pyvale/examples/features/ex_calibration_error.py,sha256=CoB2HulJ68XH7K1p6sQSCjKzRsjlUspcu2ELijvB3f8,3566
|
|
95
|
+
pyvale/examples/features/ex_chain_field_errs.py,sha256=BfkwFm9u8iZQfqtmvdZB7qMZzSTexvsKOkxkDREhf1M,4993
|
|
96
|
+
pyvale/examples/features/ex_field_errs.py,sha256=80w8GOpMS_NXay9XinNCx5XsPqwzPVzFWZJRZXm2Iq4,2762
|
|
97
|
+
pyvale/examples/features/ex_sensor_single_angle_batch.py,sha256=oiLKI46PBpluJXRBC9TUaEm709Wknqv-o0To1tY--tc,4295
|
|
98
|
+
pyvale/examples/imagedef2d/ex_imagedef2d_todisk.py,sha256=zA5EE_hq1ZeZijV6mpppqp14tH1VCjgo6m1MHVH2k2k,3039
|
|
99
|
+
pyvale/examples/rasterisation/ex_rastenp.py,sha256=1GJz5IO36fE6K8tREO6fGXd1CzYMcvBLfL946Q0CPes,4847
|
|
100
|
+
pyvale/examples/rasterisation/ex_rastercyth_oneframe.py,sha256=6iJxYQF714B9RQklkBT1dyHa6AGbhRIQmJhlsyOYVlg,7437
|
|
101
|
+
pyvale/examples/rasterisation/ex_rastercyth_static_cypara.py,sha256=NGvt9tRspYtsbILN7eqsQAsVBDKGFKa93rdmOwX2XtE,6951
|
|
102
|
+
pyvale/examples/rasterisation/ex_rastercyth_static_pypara.py,sha256=f7hjUpZF26k_dNsF6IWzWdfFtDSNWK7jH4vCD0qTuEY,6929
|
|
103
|
+
pyvale/simcases/case00_HEX20.i,sha256=UiKSQOGgAQwS3cWLxSMVixmp-1RzpZS3nKxVaIgWWKg,5149
|
|
104
|
+
pyvale/simcases/case00_HEX27.i,sha256=MJ3jXHf8hDQP-Y3Ew9FU3EAnD-7E4l8C4QjdeAoRrFc,5149
|
|
105
|
+
pyvale/simcases/case00_HEX8.i,sha256=R4NiWVjoyG8_y6Hhh_I_QySYzbEQ70QuiD0I4auA4Bc,5159
|
|
106
|
+
pyvale/simcases/case00_TET10.i,sha256=ijpTfoLb7ucLdgLyV7LimdIEnB3lLfykM_QJxAs2B9Q,5149
|
|
107
|
+
pyvale/simcases/case00_TET14.i,sha256=PlMC60P6prgpqCOSWAgU5VZ_0g_2WTxtQUYbAM2EaWk,5149
|
|
108
|
+
pyvale/simcases/case00_TET4.i,sha256=Ot9VqNO0s2RVWVmGqLcFcZ0dg9E3Z00BhfYFsOQkiKE,5159
|
|
109
|
+
pyvale/simcases/case01.i,sha256=R6t_uui6DywA1m5HLt4EsdkGDzobpGrfxBrfIY-5YiI,2184
|
|
110
|
+
pyvale/simcases/case02.i,sha256=gOPdUDVDnMUgqevcRO7vT5HnXTY64a7rmugSgkUqQ0s,3406
|
|
111
|
+
pyvale/simcases/case03.i,sha256=6LkfehTSTXuJ390mdn6tYp2Tkgo15KVpGmFmBrHo-AA,2848
|
|
112
|
+
pyvale/simcases/case04.i,sha256=Ao5z2qey2eJrqW1TmCm6LZRDeTwPTOFtMNPocH4zQO4,3757
|
|
113
|
+
pyvale/simcases/case05.i,sha256=VO2D38xsUrZmEMuEJF6JzjF_InpGAdrf9y_5FhvvvDw,5959
|
|
114
|
+
pyvale/simcases/case06.i,sha256=DLMHzOp3Kgu4EIXSg58Ltz4NRVTPC-dZbJp-g-vY3Uo,7298
|
|
115
|
+
pyvale/simcases/case07.geo,sha256=DxJjqex1zlQewGEcr_JiwbHSDczhOi-34ogvwAFfx_Q,4442
|
|
116
|
+
pyvale/simcases/case07.i,sha256=73YrdZUAGCddorbBBxY-oK0tLOw12lISYR5xzzi3ddc,1921
|
|
117
|
+
pyvale/simcases/case08.geo,sha256=d9QEIzMRRXynWOAHx07i8RxTA-uvKNVvpMAEBVZamKs,4795
|
|
118
|
+
pyvale/simcases/case08.i,sha256=G4MqwcZWAaKcXD3toDNtaghbJ3rxiZHWvL-zT6n021Y,3253
|
|
119
|
+
pyvale/simcases/case09.geo,sha256=zW9w_MQlfdbzXat7XfttiAP5HKIo6aCnUBWyGd8SlQQ,6858
|
|
120
|
+
pyvale/simcases/case09.i,sha256=3tZCH7MtvjE4GPLO-Tsigm8kmvc_Ma8H9kZ2e5wb3uQ,1924
|
|
121
|
+
pyvale/simcases/case10.geo,sha256=y4RRENzZyfzUey-wNK3dr448_j7ta70EgxReoaKP2vY,6839
|
|
122
|
+
pyvale/simcases/case10.i,sha256=5X7xsgqiXAZDx-q5erxiWg1XOdGlmfD9UZ7i4Lqg-nk,6377
|
|
123
|
+
pyvale/simcases/case11.geo,sha256=HDEMxIpANKUrDEgBfokxDohEoVpWMcfAcKJ1Rr8RW8c,10429
|
|
124
|
+
pyvale/simcases/case11.i,sha256=f34kuvrDNKjqjiyV0BmCeH3ZDDJFUTtkKmorK4YbAhc,3093
|
|
125
|
+
pyvale/simcases/case12.geo,sha256=FQ-Ck1LBsqnV4HDdLbIP1U2cRot7dRBTIlQ1n6GnxgE,12477
|
|
126
|
+
pyvale/simcases/case12.i,sha256=N-lJnOenl_PQhhatkjMLhUGNNGKLV0QPjLiWU0QfXGo,7932
|
|
127
|
+
pyvale/simcases/case13.i,sha256=q1KLk_S9AC15-ZNV_PydIp2QZsf_EUE1sth6a3t8cG8,3308
|
|
128
|
+
pyvale/simcases/case14.i,sha256=-Yq-ecGcs153-t-fHNM4kWBR3d4_joxmM7WAnm4O57w,3502
|
|
129
|
+
pyvale/simcases/case15.geo,sha256=Sgat1JQJeBCaSlGEEJ1o_WSZMpLpDkbhIrTaUKDiRX4,10429
|
|
130
|
+
pyvale/simcases/case15.i,sha256=88TAhiFxU9jGKnxJu8Ne4pWnbh9pHKkzSs0e0IjfUDM,3187
|
|
131
|
+
pyvale/simcases/case16.geo,sha256=SHB_GMofxN6WYq8JZ1Ktm8B8F_0L7K5hu4-DHtm3CX4,12554
|
|
132
|
+
pyvale/simcases/case16.i,sha256=TJDlkIcdQz2JypfVDobYXg6N86rk03w-AUlIdWV1l7s,8758
|
|
133
|
+
pyvale/simcases/case17.geo,sha256=lBMnrWGnYYivRqOIg5hfExRVr_jRjs1Zd9-f_ugitwA,4442
|
|
134
|
+
pyvale/simcases/case17.i,sha256=G0o57umdzOkzWoroREpV1IH6DA8QM2zAhdemul6-Y7w,3056
|
|
135
|
+
pyvale/simcases/case18.i,sha256=W3Hu6wwWCwOzxwZFmEB2tMlQ1VeCrs-r8erdbFWrqd0,6292
|
|
136
|
+
pyvale/simcases/case18_1.i,sha256=W3Hu6wwWCwOzxwZFmEB2tMlQ1VeCrs-r8erdbFWrqd0,6292
|
|
137
|
+
pyvale/simcases/case18_2.i,sha256=9Y2F3FCrLUJ78cP95CUKvsdCWGkWQLZbcqQ_WbeWPVs,6292
|
|
138
|
+
pyvale/simcases/case18_3.i,sha256=0K1IDUiK1WSjWJOpJi7hvUqJApFD4Z0m9JkCkivAevM,6292
|
|
139
|
+
pyvale/simcases/case19.geo,sha256=nT1Hch8Llv96z3QAPYqzpzIlaV01xXf1sozuA-m0-7I,9102
|
|
140
|
+
pyvale/simcases/case19.i,sha256=jRDSAWaC-bTxCeFgSyj1gapbo6iqteySuPR5QhPLKqo,2191
|
|
141
|
+
pyvale/simcases/case20.geo,sha256=TKBX8JKDwXKyXfXCi6fmOzDV_7_1Kpfpne9yeute11o,9102
|
|
142
|
+
pyvale/simcases/case20.i,sha256=wAQGXJbY_VniZPG-PzeL5-Sk6_ZUiwuf8zRV3c8nEz0,6655
|
|
143
|
+
pyvale/simcases/case21.geo,sha256=AzFNKkQp7-a9PojtR4y0GNI6g12BLvTRvkHDglYPRFQ,2387
|
|
144
|
+
pyvale/simcases/case21.i,sha256=QjKU97PMsswLkaGkutC7gdJhGY8lRq5VEf5b-gRhT4E,3417
|
|
145
|
+
pyvale/simcases/case22.geo,sha256=3OHJhFTm9P_G6vIB9fqgcpeT1DQt5xq5tWxOsRhvj2A,2491
|
|
146
|
+
pyvale/simcases/case22.i,sha256=b3IeO0hs4IU0PJlS_MIkF1gtPkKYQXklfNs5rhy9KNc,3189
|
|
147
|
+
pyvale/simcases/case23.geo,sha256=53NyuNJrPBgUWRHhgz0zS2fCZ8lavn_flpnfLUO2GNY,5448
|
|
148
|
+
pyvale/simcases/case23.i,sha256=0sRJTmiieHxb4YBnYH5foJGteQZfn5Fo0Z3TkDuLSoQ,3188
|
|
149
|
+
pyvale/simcases/case24.geo,sha256=3qiwipPbwaOjmPySISOZycYKdXCSDFrQpccnXHWhiU0,2408
|
|
150
|
+
pyvale/simcases/case24.i,sha256=6scn1ujqyQ2FUHm30NNZPwTzXD9w7AEDkzbrncah-xQ,2950
|
|
151
|
+
pyvale/simcases/case25.geo,sha256=k33GLvsApxTbxDbnOGueA3rTIazqcgYQ5DP37kCAPA4,2492
|
|
152
|
+
pyvale/simcases/case25.i,sha256=8lArbbZOCJ4aLuJCaEO5FW1kzJI4JquOmbA-nVpNRRI,2994
|
|
153
|
+
pyvale/simcases/case26.geo,sha256=7Qj0siF2FqgElxcmtX_7UDp4tdX6scnJgKffpP6iRQY,5468
|
|
154
|
+
pyvale/simcases/case26.i,sha256=V-pS7MeAo9vl3QUDtu-i6MQyeftryxSj0r8n7t6hY0k,2992
|
|
155
|
+
pyvale/simcases/run_1case.py,sha256=QmmZcawWmfkmImciEqM-8NedwlzuIOgLT2Te3fVb574,1928
|
|
156
|
+
pyvale/simcases/run_all_cases.py,sha256=9b3JYcxC8PA2CR-htum7wCICwwnLNeC01xAhk0m6yxw,1903
|
|
157
|
+
pyvale/simcases/run_build_case.py,sha256=IlyZC_VU095ayi7nz57xSSboTeJB54y7nsQXpBTUXFM,1938
|
|
158
|
+
pyvale/simcases/run_example_cases.py,sha256=l5KOQvPMNRUkJMotaReG2nmrFtVBNWCwKVezNyRwKb0,1910
|
|
159
|
+
pyvale-2025.4.1.dist-info/licenses/LICENSE,sha256=h2qWsRIazuLLhALyUsCP6aE0DFcswL9SSSt9sgMzZi4,1099
|
|
160
|
+
pyvale-2025.4.1.dist-info/METADATA,sha256=Id2viAv30Ni56VjcmT-qWnRuF8tORpbWIsRKQPiGzqA,6923
|
|
161
|
+
pyvale-2025.4.1.dist-info/WHEEL,sha256=ooBFpIzZCPdw3uqIQsOo4qqbA4ZRPxHnOH7peeONza0,91
|
|
162
|
+
pyvale-2025.4.1.dist-info/top_level.txt,sha256=u1d_f4iZ3b3_96Rb_zrs9hyrpC4yE5e1Lg6Ey_Wgr0c,7
|
|
163
|
+
pyvale-2025.4.1.dist-info/RECORD,,
|
pyvale/core/__init__.py
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
================================================================================
|
|
3
|
-
pyvale: the python validation engine
|
|
4
|
-
License: MIT
|
|
5
|
-
Copyright (C) 2025 The Computer Aided Validation Team
|
|
6
|
-
================================================================================
|
|
7
|
-
"""
|
pyvale/core/analyticmeshgen.py
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
================================================================================
|
|
3
|
-
pyvale: the python validation engine
|
|
4
|
-
License: MIT
|
|
5
|
-
Copyright (C) 2025 The Computer Aided Validation Team
|
|
6
|
-
================================================================================
|
|
7
|
-
"""
|
|
8
|
-
import numpy as np
|
|
9
|
-
|
|
10
|
-
# NOTE: This module is a feature under developement.
|
|
11
|
-
|
|
12
|
-
def rectangle_mesh_2d(leng_x: float,
|
|
13
|
-
leng_y: float,
|
|
14
|
-
n_elem_x: int,
|
|
15
|
-
n_elem_y: int) -> tuple[np.ndarray,np.ndarray]:
|
|
16
|
-
|
|
17
|
-
n_elems = n_elem_x*n_elem_y
|
|
18
|
-
n_node_x = n_elem_x+1
|
|
19
|
-
n_node_y = n_elem_y+1
|
|
20
|
-
nodes_per_elem = 4
|
|
21
|
-
|
|
22
|
-
coord_x = np.linspace(0,leng_x,n_node_x)
|
|
23
|
-
coord_y = np.linspace(0,leng_y,n_node_y)
|
|
24
|
-
(coord_grid_x,coord_grid_y) = np.meshgrid(coord_x,coord_y)
|
|
25
|
-
|
|
26
|
-
coord_x = np.atleast_2d(coord_grid_x.flatten()).T
|
|
27
|
-
coord_y = np.atleast_2d(coord_grid_y.flatten()).T
|
|
28
|
-
coord_z = np.zeros_like(coord_x)
|
|
29
|
-
coords = np.hstack((coord_x,coord_y,coord_z))
|
|
30
|
-
|
|
31
|
-
connect = np.zeros((n_elems,nodes_per_elem)).astype(np.int64)
|
|
32
|
-
row = 1
|
|
33
|
-
nn = 0
|
|
34
|
-
for ee in range(n_elems):
|
|
35
|
-
nn += 1
|
|
36
|
-
if nn >= row*n_node_x:
|
|
37
|
-
row += 1
|
|
38
|
-
nn += 1
|
|
39
|
-
|
|
40
|
-
connect[ee,:] = np.array([nn,nn+1,nn+n_node_x+1,nn+n_node_x])
|
|
41
|
-
connect = connect.T
|
|
42
|
-
|
|
43
|
-
return (coords,connect)
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
def fill_dims(coord_x: np.ndarray,
|
|
47
|
-
coord_y: np.ndarray,
|
|
48
|
-
time: np.ndarray) -> tuple[np.ndarray,np.ndarray,np.ndarray]:
|
|
49
|
-
|
|
50
|
-
full_x = np.repeat(np.atleast_2d(coord_x).T,
|
|
51
|
-
time.shape[0],
|
|
52
|
-
axis=1)
|
|
53
|
-
full_y = np.repeat(np.atleast_2d(coord_y).T,
|
|
54
|
-
time.shape[0],
|
|
55
|
-
axis=1)
|
|
56
|
-
full_time = np.repeat(np.atleast_2d(time),
|
|
57
|
-
coord_x.shape[0],
|
|
58
|
-
axis=0)
|
|
59
|
-
return (full_x,full_y,full_time)
|